]> git.kernelconcepts.de Git - karo-tx-uboot.git/commit
x86: Generate a valid MultiProcessor (MP) table
authorBin Meng <bmeng.cn@gmail.com>
Tue, 23 Jun 2015 04:18:52 +0000 (12:18 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Wed, 9 Sep 2015 11:29:24 +0000 (13:29 +0200)
commit5fe5c313474ccd2eba2da3d4c45dc19c9ed1740f
tree8eb04ca00f36832f770b63bb09325ea9b86805e2
parentd779076eb43fe632c039dd1f83509aafbcbed60f
x86: Generate a valid MultiProcessor (MP) table

Implement write_mp_table() to create a minimal working MP table.
This includes an MP floating table, a configuration table header
and all of the 5 base configuration table entries. The I/O interrupt
assignment table entry is created based on the same information used
in the creation of PIRQ routing table from device tree. A check
duplicated entry logic is applied to prevent writing multiple I/O
interrupt entries with the same information.

Use a Kconfig option GENERATE_MP_TABLE to tell U-Boot whether we
need actually write the MP table at the F seg, just like we did for
PIRQ routing and SFI tables. With MP table existence, linux kernel
will switch to I/O APIC and local APIC to process all the peripheral
interrupts instead of 8259 PICs. This takes full advantage of the
multicore hardware and the SMP kernel.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
arch/x86/Kconfig
arch/x86/include/asm/mpspec.h
arch/x86/lib/mpspec.c
arch/x86/lib/tables.c