From: "Seth, Rohit" The patch puts the original contents in the config space back. So if the device was enabled earlier then it will stay enabled after the workaround is applied. Though the comment in the file just before the last pci_write_config_byte is now out of place. I've corrected the comment and here is the updated patch (with other slight modification). Cc: Alan Cox Signed-off-by: Andrew Morton --- arch/i386/kernel/quirks.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) diff -puN arch/i386/kernel/quirks.c~edac-core-edac-support-code-fix arch/i386/kernel/quirks.c --- devel/arch/i386/kernel/quirks.c~edac-core-edac-support-code-fix 2006-01-03 22:06:47.000000000 -0800 +++ devel-akpm/arch/i386/kernel/quirks.c 2006-01-03 22:06:47.000000000 -0800 @@ -25,8 +25,7 @@ static void __devinit quirk_intel_irqbal /* enable access to config space*/ pci_read_config_byte(dev, 0xf4, &config); - config |= 0x2; - pci_write_config_byte(dev, 0xf4, config); + pci_write_config_byte(dev, 0xf4, config|0x2); /* read xTPR register */ raw_pci_ops->read(0, 0, 0x40, 0x4c, 2, &word); @@ -42,9 +41,9 @@ static void __devinit quirk_intel_irqbal #endif } - config &= ~0x2; - /* disable access to config space*/ - pci_write_config_byte(dev, 0xf4, config); + /* put back the original value for config space*/ + if (!(config & 0x2)) + pci_write_config_byte(dev, 0xf4, config); } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_intel_irqbalance); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_intel_irqbalance); _