Re: [tip: x86/apic] x86/io_apic: Cleanup trigger/polarity helpers

From: Thomas Gleixner
Date: Tue Nov 10 2020 - 09:34:36 EST


On Tue, Nov 10 2020 at 07:10, Borislav Petkov wrote:

> On Mon, Nov 09, 2020 at 05:15:03PM -0600, Tom Lendacky wrote:
>> [ 105.325371] hpet: Lost 9601 RTC interrupts
>> [ 105.485766] hpet: Lost 9600 RTC interrupts
>> [ 105.639182] hpet: Lost 9601 RTC interrupts
>> [ 105.792155] hpet: Lost 9601 RTC interrupts
>> [ 105.947076] hpet: Lost 9601 RTC interrupts
>> [ 106.100876] hpet: Lost 9600 RTC interrupts
>> [ 106.253444] hpet: Lost 9601 RTC interrupts
>> [ 106.406722] hpet: Lost 9601 RTC interrupts
>>
>> preventing the system from booting. I bisected it to this commit.
>
> I bisected it to the exact same thing too, on an AMD laptop, after seeing what
> you're seeing.

Bah. I'm a moron.

--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -809,9 +809,9 @@ static bool irq_is_level(int idx)
case MP_IRQTRIG_DEFAULT:
/*
* Conforms to spec, ie. bus-type dependent trigger
- * mode. PCI defaults to egde, ISA to level.
+ * mode. PCI defaults to level, ISA to edge.
*/
- level = test_bit(bus, mp_bus_not_pci);
+ level = !test_bit(bus, mp_bus_not_pci);
/* Take EISA into account */
return eisa_irq_is_level(idx, bus, level);
case MP_IRQTRIG_EDGE: