[U-Boot] [PATCH v2 1/8] x86: Add new slimbootloader CPU type
Park, Aiden
aiden.park at intel.com
Mon Jul 8 16:30:12 UTC 2019
Hi Bin,
> -----Original Message-----
> From: Bin Meng [mailto:bmeng.cn at gmail.com]
> Sent: Tuesday, July 2, 2019 7:13 AM
> To: Park, Aiden <aiden.park at intel.com>
> Cc: U-Boot Mailing List <u-boot at lists.denx.de>; Simon Glass
> <sjg at chromium.org>
> Subject: Re: [PATCH v2 1/8] x86: Add new slimbootloader CPU type
>
> Hi Aiden,
>
> On Wed, Jun 26, 2019 at 7:15 AM Park, Aiden <aiden.park at intel.com> wrote:
> >
>
> Since this is the first patch in the series, could you please add a brief
> description about slim bootloader?
Sure. I will add a brief description about Slim Bootloader. Thanks.
>
> > - Added CONFIG_SYS_SLIMBOOTLOADER to enable slimbootloader CPU
> type
>
> nits: Added -> Add
I will change this.
>
> > - Added new arch/x86/cpu/slimbootloader directory with minimum codes
>
> ditto
I will change this too.
>
> > - Get hob_list pointer from Slim Bootloader
> >
> > Signed-off-by: Aiden Park <aiden.park at intel.com>
> > ---
> > arch/x86/Kconfig | 1 +
> > arch/x86/cpu/Makefile | 1 +
> > arch/x86/cpu/slimbootloader/Kconfig | 23 ++++++++++
> > arch/x86/cpu/slimbootloader/Makefile | 5 +++
> > arch/x86/cpu/slimbootloader/car.S | 43 +++++++++++++++++++
> > arch/x86/cpu/slimbootloader/slimbootloader.c | 21 +++++++++
> > .../asm/arch-slimbootloader/slimbootloader.h | 11 +++++
> > arch/x86/include/asm/global_data.h | 2 +-
> > arch/x86/lib/asm-offsets.c | 2 +-
> > 9 files changed, 107 insertions(+), 2 deletions(-) create mode
> > 100644 arch/x86/cpu/slimbootloader/Kconfig
> > create mode 100644 arch/x86/cpu/slimbootloader/Makefile
> > create mode 100644 arch/x86/cpu/slimbootloader/car.S create mode
> > 100644 arch/x86/cpu/slimbootloader/slimbootloader.c
> > create mode 100644
> > arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
> >
> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index
> > 70f939869a..1612246dfc 100644
> > --- a/arch/x86/Kconfig
> > +++ b/arch/x86/Kconfig
> > @@ -116,6 +116,7 @@ source "arch/x86/cpu/qemu/Kconfig"
> > source "arch/x86/cpu/quark/Kconfig"
> > source "arch/x86/cpu/queensbay/Kconfig"
> > source "arch/x86/cpu/tangier/Kconfig"
> > +source "arch/x86/cpu/slimbootloader/Kconfig"
>
> Please insert this before "tangier"
Let me move this before tangier.
>
> >
> > # architecture-specific options below
> >
> > diff --git a/arch/x86/cpu/Makefile b/arch/x86/cpu/Makefile index
> > 85fd5e616e..a5c0113fa4 100644
> > --- a/arch/x86/cpu/Makefile
> > +++ b/arch/x86/cpu/Makefile
> > @@ -48,6 +48,7 @@ obj-$(CONFIG_NORTHBRIDGE_INTEL_IVYBRIDGE) +=
> > ivybridge/
> > obj-$(CONFIG_INTEL_QUARK) += quark/
> > obj-$(CONFIG_INTEL_QUEENSBAY) += queensbay/
> > obj-$(CONFIG_INTEL_TANGIER) += tangier/
> > +obj-$(CONFIG_SYS_SLIMBOOTLOADER) += slimbootloader/
>
> nits: please insert this after CONFIG_SYS_COREBOOT
Let me move this too.
>
> > obj-$(CONFIG_APIC) += lapic.o ioapic.o obj-y += irq.o ifndef
> > CONFIG_$(SPL_)X86_64 diff --git a/arch/x86/cpu/slimbootloader/Kconfig
> > b/arch/x86/cpu/slimbootloader/Kconfig
> > new file mode 100644
> > index 0000000000..e7513afd5b
> > --- /dev/null
> > +++ b/arch/x86/cpu/slimbootloader/Kconfig
> > @@ -0,0 +1,23 @@
> > +# SPDX-License-Identifier: GPL-2.0+
> > +#
> > +# Copyright (C) 2019 Intel Corporation <www.intel.com>
> > +
> > +if TARGET_SLIMBOOTLOADER
> > +
> > +config SYS_SLIMBOOTLOADER
> > + bool
> > + default y
> > + imply SYS_NS16550
> > + imply AHCI_PCI
> > + imply SCSI
> > + imply SCSI_AHCI
> > + imply MMC
> > + imply MMC_PCI
> > + imply MMC_SDHCI
> > + imply MMC_SDHCI_SDMA
> > + imply USB
> > + imply USB_EHCI_HCD
> > + imply USB_XHCI_HCD
> > + imply USB_STORAGE
>
> Could you please imply more common drivers for this? I think we should at
> least imply USB_KEYBOARD, E1000, RTL8169.
Thanks for letting me know this. Basically, this was my intention to have very minimum drivers for booting and small binary size. Let me add common drivers.
>
>
> > +
> > +endif
> > diff --git a/arch/x86/cpu/slimbootloader/Makefile
> > b/arch/x86/cpu/slimbootloader/Makefile
> > new file mode 100644
> > index 0000000000..627a721e8c
> > --- /dev/null
> > +++ b/arch/x86/cpu/slimbootloader/Makefile
> > @@ -0,0 +1,5 @@
> > +# SPDX-License-Identifier: GPL-2.0+
> > +#
> > +# Copyright (C) 2019 Intel Corporation <www.intel.com>
> > +
> > +obj-y += car.o slimbootloader.o
> > diff --git a/arch/x86/cpu/slimbootloader/car.S
> > b/arch/x86/cpu/slimbootloader/car.S
> > new file mode 100644
> > index 0000000000..63c5c28b33
> > --- /dev/null
> > +++ b/arch/x86/cpu/slimbootloader/car.S
> > @@ -0,0 +1,43 @@
> > +/* SPDX-License-Identifier: GPL-2.0+ */
> > +/*
> > + * Copyright (C) 2019 Intel Corporation <www.intel.com> */
> > +
> > +#include <generated/asm-offsets.h>
> > +
> > +.section .text
> > +
> > +.globl slimbootloader_start
> > +slimbootloader_start:
> > + /* Get hob pointer parameter from previous stage's stack */
> > + mov 0x4(%esp), %esi
> > +
> > + /* Set up global data */
> > + mov %esp, %eax
> > + call board_init_f_alloc_reserve
> > + mov %eax, %esp
> > + call board_init_f_init_reserve
> > +
> > +#ifdef CONFIG_DEBUG_UART
> > + call debug_uart_init
> > +#endif
> > +
> > + /* Get address of global_data */
> > + mov %fs:0, %edx
> > + movl %esi, GD_HOB_LIST(%edx)
> > +
> > + /* Enter u-boot with 0 bootflag */
> > + xorl %eax, %eax
> > + call board_init_f
> > +
> > +.globl car_init
> > +car_init:
> > + /*
> > + * CAR init/teardown and memory init have already been done
> > + * in Slim Bootloader stages. Therefore, let's use this car_init as
> > + * very first entry point of slimbootloader_start.
> > + */
> > + jmp slimbootloader_start
> > +
> > + /* DO NOT REACH HERE */
> > + jmp .
> > diff --git a/arch/x86/cpu/slimbootloader/slimbootloader.c
> > b/arch/x86/cpu/slimbootloader/slimbootloader.c
> > new file mode 100644
> > index 0000000000..9f3a61ec61
> > --- /dev/null
> > +++ b/arch/x86/cpu/slimbootloader/slimbootloader.c
> > @@ -0,0 +1,21 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright (C) 2019 Intel Corporation <www.intel.com> */
> > +
> > +#include <common.h>
> > +
> > +int arch_cpu_init(void)
> > +{
> > + return x86_cpu_init_f();
> > +}
> > +
> > +int checkcpu(void)
> > +{
> > + return 0;
> > +}
> > +
> > +int print_cpuinfo(void)
> > +{
> > + return default_print_cpuinfo(); }
> > diff --git a/arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
> > b/arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
> > new file mode 100644
> > index 0000000000..7309a83724
> > --- /dev/null
> > +++ b/arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
> > @@ -0,0 +1,11 @@
> > +/* SPDX-License-Identifier: GPL-2.0+ */
> > +/*
> > + * Copyright (C) 2019 Intel Corporation <www.intel.com> */
> > +
> > +#ifndef __SLIMBOOTLOADER_ARCH_H__
> > +#define __SLIMBOOTLOADER_ARCH_H__
> > +
> > +#include <common.h>
> > +
> > +#endif
> > diff --git a/arch/x86/include/asm/global_data.h
> > b/arch/x86/include/asm/global_data.h
> > index 9398ec33b2..674efaaa01 100644
> > --- a/arch/x86/include/asm/global_data.h
> > +++ b/arch/x86/include/asm/global_data.h
> > @@ -83,7 +83,7 @@ struct arch_global_data {
> > const struct pch_gpio_map *gpio_map; /* board GPIO map */
> > struct memory_info meminfo; /* Memory information */
> > struct pei_memory_info pei_meminfo; /* PEI memory information
> */
> > -#ifdef CONFIG_HAVE_FSP
> > +#if defined(CONFIG_HAVE_FSP) ||
> defined(CONFIG_SYS_SLIMBOOTLOADER)
> > void *hob_list; /* FSP HOB list */
> > #endif
> > struct mtrr_request mtrr_req[MAX_MTRR_REQUESTS]; diff --git
> > a/arch/x86/lib/asm-offsets.c b/arch/x86/lib/asm-offsets.c index
> > 90dce22b25..258c0bbc2c 100644
> > --- a/arch/x86/lib/asm-offsets.c
> > +++ b/arch/x86/lib/asm-offsets.c
> > @@ -17,7 +17,7 @@
> > int main(void)
> > {
> > DEFINE(GD_BIST, offsetof(gd_t, arch.bist)); -#ifdef
> > CONFIG_HAVE_FSP
> > +#if defined(CONFIG_HAVE_FSP) ||
> defined(CONFIG_SYS_SLIMBOOTLOADER)
> > DEFINE(GD_HOB_LIST, offsetof(gd_t, arch.hob_list)); #endif
> > DEFINE(GD_TABLE, offsetof(gd_t, arch.table));
> > --
> > 2.20.1
> >
More information about the U-Boot
mailing list