diff -urNp linux-4/arch/i386/kernel/apic.c linux-200/arch/i386/kernel/apic.c --- linux-4/arch/i386/kernel/apic.c +++ linux-200/arch/i386/kernel/apic.c @@ -1179,9 +1179,10 @@ int __init APIC_init_uniprocessor (void) if (nmi_watchdog == NMI_LOCAL_APIC) check_nmi_watchdog(); #ifdef CONFIG_X86_IO_APIC - if (smp_found_config) - if (!skip_ioapic_setup && nr_ioapics) - setup_IO_APIC(); + if (smp_found_config && !skip_ioapic_setup && nr_ioapics) { + setup_IO_APIC(); + } else + nr_ioapics = 0; #endif setup_APIC_clocks(); diff -urNp linux-4/arch/i386/kernel/smpboot.c linux-200/arch/i386/kernel/smpboot.c --- linux-4/arch/i386/kernel/smpboot.c +++ linux-200/arch/i386/kernel/smpboot.c @@ -1207,8 +1207,10 @@ void __init smp_boot_cpus(void) * Here we can be sure that there is an IO-APIC in the system. Let's * go and set it up: */ - if (!skip_ioapic_setup && nr_ioapics) + if (!skip_ioapic_setup && nr_ioapics) { setup_IO_APIC(); + } else + nr_ioapics = 0; #endif /* diff -urNp linux-4/drivers/pci/quirks.c linux-200/drivers/pci/quirks.c --- linux-4/drivers/pci/quirks.c +++ linux-200/drivers/pci/quirks.c @@ -644,6 +664,8 @@ static struct pci_fixup pci_fixups[] __i #ifdef CONFIG_X86_IO_APIC { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_AMD, 0x7451, +quirk_amd_8131_ioapic }, #endif { PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi }, { PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi },