Commit f9808b7f authored by Michael S. Tsirkin's avatar Michael S. Tsirkin Committed by Marcelo Tosatti

apic: fix kvm build on UP without IOAPIC

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: default avatarMichael S. Tsirkin <mst@redhat.com>
Reported-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
Acked-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
Acked-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
parent ae7a2a3f
...@@ -417,7 +417,12 @@ extern struct apic *apic; ...@@ -417,7 +417,12 @@ extern struct apic *apic;
__aligned(sizeof(struct apic *)) \ __aligned(sizeof(struct apic *)) \
__section(.apicdrivers) = { &sym1, &sym2 } __section(.apicdrivers) = { &sym1, &sym2 }
#ifdef CONFIG_X86_LOCAL_APIC
extern struct apic *__apicdrivers[], *__apicdrivers_end[]; 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: * APIC functionality to boot other CPUs - only used on SMP:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment