x86/irq: Seperate unused system vectors from spurious entry again
Thomas Gleixner authored
commit f8a8fe61 upstream.

Quite some time ago the interrupt entry stubs for unused vectors in the
system vector range got removed and directly mapped to the spurious
interrupt vector entry point.

Sounds reasonable, but it's subtly broken. The spurious interrupt vector
entry point pushes vector number 0xFF on the stack which makes the whole
logic in __smp_spurious_interrupt() pointless.

As a consequence any spurious interrupt which comes from a vector != 0xFF
is treated as a real spurious interrupt (vector 0xFF) and not
acknowledged. That subsequently stalls all interrupt vectors of equal and
lower priority, which brings the system to a grinding halt.

This can happen because even on 64-bit the system vector space is not
guaranteed to be fully populated. A full compile time handling of the
unused vectors is not possible because quite some of them are conditonally
populated at runtime.

Bring the entry stubs...
4ac89364
Name Last commit Last update
Documentation Documentation/admin: Remove the vsyscall=native documentation
LICENSES LICENSES: Add GCC runtime library exception text
arch x86/irq: Seperate unused system vectors from spurious entry again
block block, bfq: NULL out the bic when it's no longer valid
certs kexec, KEYS: Make use of platform keyring for signature verify
crypto crypto: lrw - use correct alignmask
drivers pinctrl: mediatek: Update cur_mask in mask/mask ops
fs afs: Fix uninitialised spinlock afs_volume::cb_break_lock
include linux/kernel.h: fix overflow for DIV_ROUND_UP_ULL
init initramfs: free initrd memory if opening /initrd.image fails
ipc ipc: prevent lockup on alloc_msg and free_msg
kernel genirq: Add optional hardware synchronization for shutdown
lib lib/mpi: Fix karactx leak in mpi_powm
mm mm/oom_kill.c: fix uninitialized oc->constraint
net cfg80211: report measurement start TSF correctly
samples samples, bpf: suppress compiler warning
scripts scripts/decode_stacktrace.sh: prefix addr2line with $CROSS_COMPILE
security apparmor: reset pos on failure to unpack for various functions
sound ALSA: hda/realtek - Headphone Mic can't record after S3
tools selftests/powerpc: Add test of fork with mapping above 512TB
usr user/Makefile: Fix typo and capitalization in comment section
virt KVM: arm/arm64: Fix emulated ptimer irq injection
.clang-format clang-format: Update with the latest for_each macro list
.cocciconfig scripts: add Linux .cocciconfig for coccinelle
.get_maintainer.ignore Add hch to .get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile
README
Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.