Skip to content

Commit 6f8a1b3

Browse files
nhormanKAGA-KOKO
authored andcommitted
x86: Adjust irq remapping quirk for older revisions of 5500/5520 chipsets
Commit 03bbcb2 (iommu/vt-d: add quirk for broken interrupt remapping on 55XX chipsets) properly disables irq remapping on the 5500/5520 chipsets that don't correctly perform that feature. However, when I wrote it, I followed the errata sheet linked in that commit too closely, and explicitly tied the activation of the quirk to revision 0x13 of the chip, under the assumption that earlier revisions were not in the field. Recently a system was reported to be suffering from this remap bug and the quirk hadn't triggered, because the revision id register read at a lower value that 0x13, so the quirk test failed improperly. Given this, it seems only prudent to adjust this quirk so that any revision less than 0x13 has the quirk asserted. [ tglx: Removed the 0x12 comparison of pci id 3405 as this is covered by the <= 0x13 check already ] Signed-off-by: Neil Horman <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: "H. Peter Anvin" <[email protected]> Cc: [email protected] Cc: [email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Thomas Gleixner <[email protected]>
1 parent 4907cdc commit 6f8a1b3

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

arch/x86/kernel/early-quirks.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -203,18 +203,15 @@ static void __init intel_remapping_check(int num, int slot, int func)
203203
revision = read_pci_config_byte(num, slot, func, PCI_REVISION_ID);
204204

205205
/*
206-
* Revision 13 of all triggering devices id in this quirk have
207-
* a problem draining interrupts when irq remapping is enabled,
208-
* and should be flagged as broken. Additionally revisions 0x12
209-
* and 0x22 of device id 0x3405 has this problem.
206+
* Revision <= 13 of all triggering devices id in this quirk
207+
* have a problem draining interrupts when irq remapping is
208+
* enabled, and should be flagged as broken. Additionally
209+
* revision 0x22 of device id 0x3405 has this problem.
210210
*/
211-
if (revision == 0x13)
211+
if (revision <= 0x13)
212212
set_irq_remapping_broken();
213-
else if ((device == 0x3405) &&
214-
((revision == 0x12) ||
215-
(revision == 0x22)))
213+
else if (device == 0x3405 && revision == 0x22)
216214
set_irq_remapping_broken();
217-
218215
}
219216

220217
/*

0 commit comments

Comments
 (0)