summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/apic/io_apic.c
diff options
context:
space:
mode:
authorWolfram Sang <wsa@kernel.org>2021-04-10 21:48:34 +0200
committerWolfram Sang <wsa@kernel.org>2021-04-10 21:48:34 +0200
commit2375843b50d6139b82648499daaad2034576905b (patch)
tree321fd890f3eeeda1f8ae38fef6312e6d959f5aba /arch/x86/kernel/apic/io_apic.c
parent660f58b6d290417828680f417f43d7b810fa9138 (diff)
parent4b2b4cc50ba6d607d1611ea6b2046a58d16e45eb (diff)
downloadlinux-2375843b50d6139b82648499daaad2034576905b.tar.gz
linux-2375843b50d6139b82648499daaad2034576905b.tar.bz2
linux-2375843b50d6139b82648499daaad2034576905b.zip
Merge branch 'i2c/software-nodes' into i2c/for-5.13
Diffstat (limited to 'arch/x86/kernel/apic/io_apic.c')
-rw-r--r--arch/x86/kernel/apic/io_apic.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index c3b60c37c728..73ff4dd426a8 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1032,6 +1032,16 @@ static int mp_map_pin_to_irq(u32 gsi, int idx, int ioapic, int pin,
if (idx >= 0 && test_bit(mp_irqs[idx].srcbus, mp_bus_not_pci)) {
irq = mp_irqs[idx].srcbusirq;
legacy = mp_is_legacy_irq(irq);
+ /*
+ * IRQ2 is unusable for historical reasons on systems which
+ * have a legacy PIC. See the comment vs. IRQ2 further down.
+ *
+ * If this gets removed at some point then the related code
+ * in lapic_assign_system_vectors() needs to be adjusted as
+ * well.
+ */
+ if (legacy && irq == PIC_CASCADE_IR)
+ return -EINVAL;
}
mutex_lock(&ioapic_mutex);