Hi Bin, > -----Original Message----- > From: Park, Aiden > Sent: Sunday, July 14, 2019 2:16 PM > To: Bin Meng <bmeng...@gmail.com> > Cc: U-Boot Mailing List <u-boot@lists.denx.de>; Simon Glass > <s...@chromium.org> > Subject: RE: [PATCH v3 1/8] x86: Add new slimbootloader CPU type > > Hi Bin, > > > -----Original Message----- > > From: Bin Meng [mailto:bmeng...@gmail.com] > > Sent: Sunday, July 14, 2019 1:49 AM > > To: Park, Aiden <aiden.p...@intel.com> > > Cc: U-Boot Mailing List <u-boot@lists.denx.de>; Simon Glass > > <s...@chromium.org> > > Subject: Re: [PATCH v3 1/8] x86: Add new slimbootloader CPU type > > > > On Wed, Jul 10, 2019 at 3:02 AM Park, Aiden <aiden.p...@intel.com> wrote: > > > > > > This slimbootloader cpu type is to enable u-boot as a payload which > > > runs on top of Slim Bootloader(https://github.com/slimbootloader). > > > The Slim Bootloader is designed with multi-stage architecture for > > > the execution from reset vector to OS booting, and supports qemu, > > > Apollolake, Whiskeylake and Coffeelake platforms consuming Intel FSP > > > (https://github.com/IntelFsp) for silicon initialization including > > > CAR and memory initialization. > > > The Slim Bootloader generates new HOB(Hand Off Block) which are > > > serial port info, memory map info, performance data info and so on, > > > and passes it to a Payload. U-boot as a payload will use these HOB > > > > nits: U-Boot > Let me change it. > > > > > information for basic initialization such as serial console. > > > > > > As an initial commit, > > > - Add CONFIG_SYS_SLIMBOOTLOADER to enable slimbootloader CPU type > > > - Add new arch/x86/cpu/slimbootloader directory with minimum codes > > > - Get hob_list pointer from Slim Bootloader > > > > > > Signed-off-by: Aiden Park <aiden.p...@intel.com> > > > --- > > > > > > Changes in v3: > > > * Add a brief description about Slim Bootloader > > > * Enable USB_KEYBOARD, E1000 and RTL8169 by default > > > * Fix comment from code review > > > > > > arch/x86/Kconfig | 1 + > > > arch/x86/cpu/Makefile | 1 + > > > arch/x86/cpu/slimbootloader/Kconfig | 26 +++++++++++ > > > 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, 110 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..27b7b767b9 100644 > > > --- a/arch/x86/Kconfig > > > +++ b/arch/x86/Kconfig > > > @@ -115,6 +115,7 @@ source "arch/x86/cpu/efi/Kconfig" > > > source "arch/x86/cpu/qemu/Kconfig" > > > source "arch/x86/cpu/quark/Kconfig" > > > source "arch/x86/cpu/queensbay/Kconfig" > > > +source "arch/x86/cpu/slimbootloader/Kconfig" > > > source "arch/x86/cpu/tangier/Kconfig" > > > > > > # architecture-specific options below diff --git > > > a/arch/x86/cpu/Makefile b/arch/x86/cpu/Makefile index > > > 85fd5e616e..3f1f62da2b 100644 > > > --- a/arch/x86/cpu/Makefile > > > +++ b/arch/x86/cpu/Makefile > > > @@ -42,6 +42,7 @@ obj-$(CONFIG_INTEL_BAYTRAIL) += baytrail/ > > > obj-$(CONFIG_INTEL_BRASWELL) += braswell/ > > > obj-$(CONFIG_INTEL_BROADWELL) += broadwell/ > > > obj-$(CONFIG_SYS_COREBOOT) += coreboot/ > > > +obj-$(CONFIG_SYS_SLIMBOOTLOADER) += slimbootloader/ > > > obj-$(CONFIG_EFI) += efi/ > > > obj-$(CONFIG_QEMU) += qemu/ > > > obj-$(CONFIG_NORTHBRIDGE_INTEL_IVYBRIDGE) += ivybridge/ diff --git > > > a/arch/x86/cpu/slimbootloader/Kconfig > > > b/arch/x86/cpu/slimbootloader/Kconfig > > > new file mode 100644 > > > index 0000000000..439e4b1e2c > > > --- /dev/null > > > +++ b/arch/x86/cpu/slimbootloader/Kconfig > > > @@ -0,0 +1,26 @@ > > > +# 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 > > > + imply USB_KEYBOARD > > > + imply E1000 > > > + imply 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 . > > > > Why don't we use the generic arch/x86/cpu/start.S and jmp car_init_ret here? > The intention was to avoid modifying arch/x86/cpu/start.S. > Let me use the start.S with CONFIG_SYS_SLIMBOOTLOADER condition. Thanks. The patch v4 has been updated. Please refer to https://patchwork.ozlabs.org/patch/1131785/. > > > > [snip] > > > > Regards, > > Bin
Best Regards, Aiden _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot