Hi Bin, > -----Original Message----- > From: Bin Meng [mailto:[email protected]] > Sent: Tuesday, July 2, 2019 7:14 AM > To: Park, Aiden <[email protected]> > Cc: U-Boot Mailing List <[email protected]>; Simon Glass > <[email protected]> > Subject: Re: [PATCH v2 7/8] board: Add new slimbootloader board > > Hi Aiden, > > On Wed, Jun 26, 2019 at 7:21 AM Park, Aiden <[email protected]> wrote: > > > > - Add new board/slimbootloader directory with minimum codes > > - Add slimbootloader configuration files > > - Add README in board/slimbootloader/slimbootloader/ > > > > Signed-off-by: Aiden Park <[email protected]> > > --- > > arch/x86/Kconfig | 4 ++ > > board/slimbootloader/Kconfig | 25 ++++++++ > > board/slimbootloader/slimbootloader/Kconfig | 51 +++++++++++++++ > > board/slimbootloader/slimbootloader/Makefile | 5 ++ > > board/slimbootloader/slimbootloader/README | 58 > +++++++++++++++++ > > .../slimbootloader/slimbootloader.c | 17 +++++ > > board/slimbootloader/slimbootloader/start.S | 9 +++ > > configs/slimbootloader_defconfig | 64 +++++++++++++++++++ > > include/configs/slimbootloader.h | 54 ++++++++++++++++ > > 9 files changed, 287 insertions(+) > > create mode 100644 board/slimbootloader/Kconfig create mode 100644 > > board/slimbootloader/slimbootloader/Kconfig > > create mode 100644 board/slimbootloader/slimbootloader/Makefile > > create mode 100644 board/slimbootloader/slimbootloader/README > > create mode 100644 > > board/slimbootloader/slimbootloader/slimbootloader.c > > create mode 100644 board/slimbootloader/slimbootloader/start.S > > create mode 100644 configs/slimbootloader_defconfig create mode > > 100644 include/configs/slimbootloader.h > > > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index > > 1612246dfc..3d57466a63 100644 > > --- a/arch/x86/Kconfig > > +++ b/arch/x86/Kconfig > > @@ -77,6 +77,9 @@ config VENDOR_GOOGLE config VENDOR_INTEL > > bool "Intel" > > > > +config VENDOR_SLIMBOOTLOADER > > + bool "slimbootloader" > > I think this should be "Intel". Okay. Let me use VENDOR_INTEL. > > > + > > endchoice > > > > # subarchitectures-specific options below @@ -104,6 +107,7 @@ source > > "board/efi/Kconfig" > > source "board/emulation/Kconfig" > > source "board/google/Kconfig" > > source "board/intel/Kconfig" > > +source "board/slimbootloader/Kconfig" > > So it becomes a "board" in board/intel directory. Okay. Let me use intel. > > > > > # platform-specific options below > > source "arch/x86/cpu/baytrail/Kconfig" > > diff --git a/board/slimbootloader/Kconfig > > b/board/slimbootloader/Kconfig new file mode 100644 index > > 0000000000..33c6fdf0aa > > --- /dev/null > > +++ b/board/slimbootloader/Kconfig > > @@ -0,0 +1,25 @@ > > +# SPDX-License-Identifier: GPL-2.0+ > > +# > > +# Copyright (C) 2019 Intel Corporation <www.intel.com> > > + > > +if VENDOR_SLIMBOOTLOADER > > + > > +choice > > + prompt "Select a board" > > + optional > > + > > +config TARGET_SLIMBOOTLOADER > > + bool "slimbootloader" > > + help > > + This target is used for running U-Boot on top of Slim Bootloader > > + boot firmware as a payload. Slim Bootloader does memory > initialization > > + and silicon initialization, and it passes necessary information in > > + HOB(Hand Off Block) to a payload. The payload is responsible for > > OS > > + load from media and booting OS. > > + Refer to board/slimbootloader/slimbootloader/README for the > details. > > + > > +endchoice > > + > > +source "board/slimbootloader/slimbootloader/Kconfig" > > + > > +endif > > diff --git a/board/slimbootloader/slimbootloader/Kconfig > > b/board/slimbootloader/slimbootloader/Kconfig > > new file mode 100644 > > index 0000000000..7262f2bf1b > > --- /dev/null > > +++ b/board/slimbootloader/slimbootloader/Kconfig > > @@ -0,0 +1,51 @@ > > +# SPDX-License-Identifier: GPL-2.0+ > > +# > > +# Copyright (C) 2019 Intel Corporation <www.intel.com> > > + > > +if TARGET_SLIMBOOTLOADER > > + > > +config SYS_BOARD > > + default "slimbootloader" > > + > > +config SYS_VENDOR > > + default "slimbootloader" > > + > > +config SYS_SOC > > + default "slimbootloader" > > + > > +config SYS_TEXT_BASE > > + default 0x00100000 > > + > > +comment "slimbootloader-specific options" > > + > > +config SYS_CONFIG_NAME > > + string "Board configuration file" > > + default "slimbootloader" > > + help > > + This option selects the board configuration file in > > include/configs/ > > + directory to be used to build U-Boot for Slim Bootloader. > > + > > +config DEFAULT_DEVICE_TREE > > + string "Board Device Tree Source (dts) file" > > + default "slimbootloader" > > + help > > + This option selects the board Device Tree Source (dts) file in > > + arch/x86/dts/ directory to be used to build U-Boot for Slim > Bootloader. > > + > > +config SYS_CAR_ADDR > > + hex "Board specific Cache-As-RAM (CAR) address" > > + default 0x00000000 > > + help > > + This option specifies the board specific Cache-As-RAM (CAR) > > address. > > + But, CAR is not required for Slim Bootloader environment since it > > + has already initialized memory and launched u-boot as a payload. > > + > > +config SYS_CAR_SIZE > > + hex "Board specific Cache-As-RAM (CAR) size" > > + default 0x0000 > > + help > > + This option specifies the board specific Cache-As-RAM (CAR) size. > > + But, CAR is not required for Slim Bootloader environment since it > > + has already initialized memory and launched u-boot as a payload. > > + > > +endif > > diff --git a/board/slimbootloader/slimbootloader/Makefile > > b/board/slimbootloader/slimbootloader/Makefile > > new file mode 100644 > > index 0000000000..fd8fa98a8d > > --- /dev/null > > +++ b/board/slimbootloader/slimbootloader/Makefile > > @@ -0,0 +1,5 @@ > > +# SPDX-License-Identifier: GPL-2.0+ > > +# > > +# Copyright (C) 2019 Intel Corporation <www.intel.com> > > + > > +obj-y += start.o slimbootloader.o > > diff --git a/board/slimbootloader/slimbootloader/README > > b/board/slimbootloader/slimbootloader/README > > new file mode 100644 > > index 0000000000..5492dc8883 > > --- /dev/null > > +++ b/board/slimbootloader/slimbootloader/README > > @@ -0,0 +1,58 @@ > > +# SPDX-License-Identifier: GPL-2.0+ > > +# > > +# Copyright (C) 2019 Intel Corporation <www.intel.com> > > + > > +Introduction > > +============ > > +This target is to enable U-Boot as a payload of Slim Bootloader(a.k.a > > +SBL) boot firmware(https://github.com/slimbootloader/slimbootloader) > > +which currently supports QEMU, Apollolake, Whiskeylake, Coffeelake- > Refresh platforms. > > + > > +The Slim Bootloader is designed with multi-stages(Stage1A/B, Stage2, > > +Payload) architecture to cover from reset vector to OS booting and it > > +consumes Intel FSP > > +(https://github.com/IntelFsp/FSP) for silicon initialization. > > +* Stage1A: Reset vector, CAR init with FSP-T > > +* Stage1B: Memory init with FSP-M, CAR teardown, Continue execution > > +in memory > > +* Stage2 : Rest of Silicon init with FSP-S, Create HOB, Hand-off to > > +Payload > > +* Payload: Load OS from media, Booting OS > > + > > + > > +Here is the step-by-step to launch U-Boot on Slim Bootloader. > > + > > +Compile U-Boot > > +============== > > + > > + > make slimbootloader_defconfig all > strip u-boot (To make it > > + smaller size by removing debug symbols) > > + > > + > > +Compile Slim Bootloader with U-Boot > > +=================================== > > + > > +For build environment: > > + > > +https://slimbootloader.github.io/getting-started/build-host-setup.htm > > +l > > + > > +Get source code: > > + > git clone https://github.com/slimbootloader/slimbootloader.git > > + > > +Copy the built u-boot elf to Slim Bootloader source tree: > > + > mkdir -p <slimbootloader_home>/PayloadPkg/PayloadBins/ > > + > cp <u-boot_home>/u-boot > > +<slimbootloader_home>/PayloadPkg/PayloadBins/ > > + > > +Update default payload to U-Boot (PayloadId is 4 Bytes): > > + > vi Platform/QemuBoardPkg/CfgData/CfgDataExt_Brd1.dlt > > + -GEN_CFG_DATA.PayloadId | 'AUTO' > > + +GEN_CFG_DATA.PayloadId | 'U-BT' > > + > > +Compile for QEMU target: > > + The output is Outputs/qemu/SlimBootloader.bin > > + > python BuildLoader.py build qemu -p "OsLoader.efi:LLDR:Lz4;u-boot:U- > BT:Lzma" > > + > > + > > +Launch Slim Bootloader on QEMU > > +============================== > > + > > + > qemu-system-x86_64 -machine q35 -m 256 -nographic -serial > mon:stdio > > + -pflash Outputs/qemu/SlimBootloader.bin > > + > > +Now, you should reach at U-Boot serial console. > > \ No newline at end of file > > diff --git a/board/slimbootloader/slimbootloader/slimbootloader.c > > b/board/slimbootloader/slimbootloader/slimbootloader.c > > new file mode 100644 > > index 0000000000..d88aa622a0 > > --- /dev/null > > +++ b/board/slimbootloader/slimbootloader/slimbootloader.c > > @@ -0,0 +1,17 @@ > > +// SPDX-License-Identifier: GPL-2.0+ > > +/* > > + * Copyright (C) 2019 Intel Corporation <www.intel.com> */ > > + > > +#include <common.h> > > + > > +int board_early_init_r(void) > > +{ > > + /* > > + * Make sure PCI bus is enumerated so that peripherals on the PCI > > bus > > + * can be discovered by their drivers > > + */ > > + pci_init(); > > + > > + return 0; > > +} > > diff --git a/board/slimbootloader/slimbootloader/start.S > > b/board/slimbootloader/slimbootloader/start.S > > new file mode 100644 > > index 0000000000..5c3f3df09e > > --- /dev/null > > +++ b/board/slimbootloader/slimbootloader/start.S > > @@ -0,0 +1,9 @@ > > +/* SPDX-License-Identifier: GPL-2.0+ */ > > +/* > > + * Copyright (C) 2019 Intel Corporation <www.intel.com> */ > > + > > +/* board early initialization */ > > +.globl early_board_init > > +early_board_init: > > + jmp early_board_init_ret > > diff --git a/configs/slimbootloader_defconfig > > b/configs/slimbootloader_defconfig > > new file mode 100644 > > index 0000000000..77ff3257b6 > > --- /dev/null > > +++ b/configs/slimbootloader_defconfig > > @@ -0,0 +1,64 @@ > > +CONFIG_X86=y > > +CONFIG_VENDOR_SLIMBOOTLOADER=y > > +CONFIG_TARGET_SLIMBOOTLOADER=y > > +CONFIG_X86_LOAD_FROM_32_BIT=y > > +CONFIG_REGMAP=y > > +CONFIG_SYSCON=y > > +CONFIG_SYS_CONSOLE_INFO_QUIET=y > > +CONFIG_BOARD_EARLY_INIT_R=y > > +CONFIG_LAST_STAGE_INIT=y > > +CONFIG_HUSH_PARSER=y > > +CONFIG_CMD_MMC=y > > +CONFIG_CMD_EXT2=y > > +CONFIG_CMD_FAT=y > > +CONFIG_CMD_USB=y > > +CONFIG_DOS_PARTITION=y > > +CONFIG_EFI_PARTITION=y > > +CONFIG_OF_CONTROL=y > > +CONFIG_OF_EMBED=y > > We should use OF_SEPARATE. Okay. Let me enable OF_SEPARATE. > > > +CONFIG_BOOTSTAGE=y > > +CONFIG_BOOTSTAGE_REPORT=y > > +CONFIG_BOOTDELAY=10 > > +CONFIG_CONSOLE_SCROLL_LINES=5 > > +# CONFIG_PCI_PNP is not set > > +# CONFIG_I8259_PIC is not set > > +# CONFIG_APIC is not set > > +# CONFIG_CMD_EXT4_WRITE is not set > > +# CONFIG_CMD_FS_GENERIC is not set > > +# CONFIG_CMD_PART is not set > > +# CONFIG_CMD_TIME is not set > > +# CONFIG_CMD_BOOTSTAGE is not set > > +# CONFIG_CMD_DM is not set > > +# CONFIG_CMD_FLASH is not set > > +# CONFIG_CMD_LOADB is not set > > +# CONFIG_CMD_LOADS is not set > > +# CONFIG_CMD_SF_TEST is not set > > +# CONFIG_CMD_ECHO is not set > > +# CONFIG_CMD_ITEST is not set > > +# CONFIG_CMD_SETEXPR is not set > > +# CONFIG_CMD_NET is not set > > +# CONFIG_CMD_BOOTP is not set > > +# CONFIG_CMD_BLOCK_CACHE is not set > > +# CONFIG_CMD_DATE is not set > > +# CONFIG_CMD_GETTIME is not set > > +# CONFIG_CMD_MISC is not set > > +# CONFIG_CMD_IRQ is not set > > +# CONFIG_CMD_ELF is not set > > +# CONFIG_CMD_IMI is not set > > +# CONFIG_CMD_XIMG is not set > > +# CONFIG_CMD_EXPORTENV is not set > > +# CONFIG_CMD_IMPORTENV is not set > > +# CONFIG_CMD_FDT is not set > > +# CONFIG_CMD_GO is not set > > +# CONFIG_CMD_SAVEENV is not set > > +# CONFIG_CMD_SOURCE is not set > > +# CONFIG_DM_KEYBOARD is not set > > +# CONFIG_DM_VIDEO is not set > > +# CONFIG_DM_GPIO is not set > > +# CONFIG_MMC_VERBOSE is not set > > +# CONFIG_GZIP is not set > > +# CONFIG_HEXDUMP is not set > > +# CONFIG_EFI_LOADER is not set > > +# CONFIG_GENERATE_SMBIOS_TABLE is not set # > > +CONFIG_IMAGE_FORMAT_LEGACY is not set # CONFIG_FIT is not set > > So many config options are turned off. Can we just turn off absolutely > necessary options that do not make sense for slim bootloader? eg: > CONFIG_PCI_PNP as we don't want U-Boot to redo the resource allocation. Only necessary option to be disabled is CONFIG_PCI_PNP. Other options were to reduce binary size. Let me recover all other configs. > > > diff --git a/include/configs/slimbootloader.h > > b/include/configs/slimbootloader.h > > new file mode 100644 > > index 0000000000..bfd188de2c > > --- /dev/null > > +++ b/include/configs/slimbootloader.h > > @@ -0,0 +1,54 @@ > > +/* SPDX-License-Identifier: GPL-2.0+ */ > > +/* > > + * Copyright (C) 2019 Intel Corporation <www.intel.com> */ > > + > > +#ifndef __SLIMBOOTLOADER_CONFIG_H__ > > +#define __SLIMBOOTLOADER_CONFIG_H__ > > + > > +#include <configs/x86-common.h> > > + > > +#undef CONFIG_NFSBOOTCOMMAND > > +#undef CONFIG_RAMBOOTCOMMAND > > +#undef CONFIG_EXTRA_ENV_SETTINGS > > +#undef CONFIG_BOOTCOMMAND > > + > > +/*------------------------------------------------------------------- > > +---- > > + * For MEM32 uart > > + */ > > nits: this needs to be better commented. And the multi-line comment block > format is wrong. Sure. I will do. > > > +/*#define CONFIG_SYS_NS16550_MEM32*/ > > nits: remove this line. Okay. Thanks. > > > +#ifdef CONFIG_SYS_NS16550_MEM32 > > +#undef CONFIG_SYS_NS16550_PORT_MAPPED #endif > > + > > +#define CONFIG_STD_DEVICES_SETTINGS \ > > + "stdin=serial,i8042-kbd,usbkbd\0" \ > > + "stdout=serial\0" \ > > + "stderr=serial\0" > > + > > +#define CONFIG_EXTRA_ENV_SETTINGS \ > > + CONFIG_STD_DEVICES_SETTINGS \ > > + "netdev=eth0\0" \ > > + "consoledev=ttyS0\0" \ > > + "ramdiskaddr=0x4000000\0" \ > > + "ramdiskfile=initrd\0" \ > > + "bootdev=usb\0" \ > > + "bootdevnum=0\0" \ > > + "bootdevpart=0\0" \ > > + "bootfsload=fatload\0" \ > > + "bootusb=setenv bootdev usb; boot\0" \ > > + "bootscsi=setenv bootdev scsi; boot\0" \ > > + "bootmmc=setenv bootdev mmc; boot\0" \ > > + "bootargs=console=ttyS0,115200 console=tty0\0" > > + > > +#define CONFIG_BOOTCOMMAND \ > > + "if test ${bootdev} = \"usb\"; then ${bootdev} start; fi; " \ > > + "if test ${bootdev} = \"scsi\"; then ${bootdev} scan; fi; " \ > > + "${bootdev} info; " \ > > + "${bootfsload} ${bootdev} ${bootdevnum}:${bootdevpart} " \ > > + "${loadaddr} ${bootfile}; " \ > > + "${bootfsload} ${bootdev} ${bootdevnum}:${bootdevpart} " \ > > + "${ramdiskaddr} ${ramdiskfile}; " \ > > + "zboot ${loadaddr} 0 ${ramdiskaddr} ${filesize}" > > + > > +#endif /* __SLIMBOOTLOADER_CONFIG_H__ */ > > -- > > Regards, > Bin
Best Regards, Aiden _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

