On 07/01/2012 08:05 AM, Michael S. Tsirkin wrote: > On UP i386, when APIC is disabled > # CONFIG_X86_UP_APIC is not set > # CONFIG_PCI_IOAPIC is not set > > code looking at apicdrivers never has any effect but it > still gets compiled in. In particular, this causes > build failures with kvm, but it generally bloats the kernel > unnecessarily. > > Fix by defining both __apicdrivers and __apicdrivers_end > to be NULL when CONFIG_X86_LOCAL_APIC is unset: I verified > that as the result any loop scanning __apicdrivers gets optimized out by > the compiler. > > Warning: a .config with apic disabled doesn't seem to boot > for me (even without this patch). Still verifying why, > meanwhile this patch is compile-tested only. > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxx> Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxx> Thanks. > --- > > Note: if this patch makes sense, can x86 maintainers > please ACK applying it through the kvm tree, since that is > where we see the issue that it addresses? > Avi, Marcelo, maybe you can carry this in kvm/linux-next as a temporary > measure so that linux-next builds? > > arch/x86/include/asm/apic.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h > index eaff479..aa5b2ee 100644 > --- a/arch/x86/include/asm/apic.h > +++ b/arch/x86/include/asm/apic.h > @@ -417,7 +417,12 @@ extern struct apic *apic; > __aligned(sizeof(struct apic *)) \ > __section(.apicdrivers) = { &sym1, &sym2 } > > +#ifdef CONFIG_X86_LOCAL_APIC > extern struct apic *__apicdrivers[], *__apicdrivers_end[]; > +#else > +#define __apicdrivers ((struct apic **)NULL) > +#define __apicdrivers_end ((struct apic **)NULL) > +#endif > > /* > * APIC functionality to boot other CPUs - only used on SMP: -- ~Randy -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html