Re: [PATCH] x86: Re-enable IO-APIC for non-SMP X86_32

Thomas Gleixner
2015-01-22T21:42:51Z

On Thu, 22 Jan 2015, Bryan O'Donoghue wrote:

> Commit 0dbc6078c0 ('x86, build, pci: Fix PCI_MSI build on !SMP')
> introduced the dependency that X86_UP_APIC should only be visible only when
> PCI_MSI is false.

I think the intention of the patch was to NOT expose the option when
MSI is enabled, so you cannot turn it off, which makes sense.

But that went wrong.....

> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -857,7 +857,7 @@ source "kernel/Kconfig.preempt"
>
> config X86_UP_APIC
> bool "Local APIC support on uniprocessors"
> - depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI
> + depends on X86_32 && !SMP && !X86_32_NON_STANDARD

So the proper fix is below.

Thanks,

tglx
---

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index ffcc3ca5862a..a0dbc33690f0 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -861,7 +861,7 @@ config UP_LATE_INIT

config X86_UP_APIC
bool "Local APIC support on uniprocessors"
- depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI
+ depends on X86_32 && !SMP && !X86_32_NON_STANDARD
---help---
A local APIC (Advanced Programmable Interrupt Controller) is an
integrated interrupt controller in the CPU. If you have a single-CPU
@@ -872,6 +872,10 @@ config X86_UP_APIC
performance counters), and the NMI watchdog which detects hard
lockups.

+config X86_UP_APIC_MSI
+ def_bool y
+ select X86_UP_APIC if X86_32 && !SMP && !X86_32_NON_STANDARD && PCI_MSI
+
config X86_UP_IOAPIC
bool "IO-APIC support on uniprocessors"
depends on X86_UP_APIC