Hi Aiden, On Wed, Jun 26, 2019 at 7:15 AM Park, Aiden <[email protected]> wrote: >
Since this is the first patch in the series, could you please add a brief description about slim bootloader? > - Added CONFIG_SYS_SLIMBOOTLOADER to enable slimbootloader CPU type nits: Added -> Add > - Added new arch/x86/cpu/slimbootloader directory with minimum codes ditto > - Get hob_list pointer from Slim Bootloader > > Signed-off-by: Aiden Park <[email protected]> > --- > 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" > > # 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 > 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. > + > +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 > _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

