[U-Boot] [RESPIN PATCH v2 12/15] x86: Generate a valid MultiProcessor (MP) table

Simon Glass sjg at chromium.org
Wed Jun 24 03:45:31 CEST 2015


On 22 June 2015 at 22:18, Bin Meng <bmeng.cn at gmail.com> wrote:
> 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 at gmail.com>
>
> ---
>
> Changes in v2:
> - Avoid using u16 and u8 in parameters
> - Add a comment block for check_dup_entry()
> - Return and check error codes of mptable_add_intsrc()
> - Remove __weak for write_mp_table()
>
>  arch/x86/Kconfig              |   9 +++
>  arch/x86/include/asm/mpspec.h |  10 +++
>  arch/x86/lib/mpspec.c         | 157 ++++++++++++++++++++++++++++++++++++++++++
>  arch/x86/lib/tables.c         |   5 ++
>  4 files changed, 181 insertions(+)

Acked-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list