x86: make the LAPIC / IOAPIC construct switchable with Kconfig

There are still systems running which do not have any LAPIC or even
IOAPIC. Responsible MSRs for those do not exist and the systems are
crashing on trying to setup LAPIC.

This commit makes the APIC stuff able to switch off for those boards
which dont' have an LAPIC / IOAPIC.

Signed-off-by: Hannes Schmelzer <oe5hpm@oevsv.at>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Hannes Schmelzer 2018-11-18 23:19:43 +01:00 committed by Bin Meng
parent 73af0601e1
commit da4cfa6b44
3 changed files with 12 additions and 1 deletions

View File

@ -736,6 +736,15 @@ config I8259_PIC
slave) interrupt controllers. Include this to have U-Boot set up
the interrupt correctly.
config APIC
bool
default y
help
The (A)dvanced (P)rogrammable (I)nterrupt (C)ontroller is responsible
for catching interrupts and distributing them to one or more CPU
cores. In most cases there are some LAPICs (local) for each core and
one I/O APIC. This conjunction is found on most modern x86 systems.
config PINCTRL_ICH6
bool
help

View File

@ -35,7 +35,7 @@ obj-$(CONFIG_NORTHBRIDGE_INTEL_IVYBRIDGE) += ivybridge/
obj-$(CONFIG_INTEL_QUARK) += quark/
obj-$(CONFIG_INTEL_QUEENSBAY) += queensbay/
obj-$(CONFIG_INTEL_TANGIER) += tangier/
obj-y += lapic.o ioapic.o
obj-$(CONFIG_APIC) += lapic.o ioapic.o
obj-y += irq.o
ifndef CONFIG_$(SPL_)X86_64
obj-$(CONFIG_SMP) += mp_init.o

View File

@ -264,7 +264,9 @@ int interrupt_init(void)
i8259_init();
#endif
#ifdef CONFIG_APIC
lapic_setup();
#endif
/* Initialize core interrupt and exception functionality of CPU */
cpu_init_interrupts();