[U-Boot,v6,0/8] x86: Add basic Slim Bootloader payload support
mbox series

Message ID A1484485FD99714DB2AB2C5EF81E7AC2AA758350@ORSMSX116.amr.corp.intel.com
Headers show
Series
  • x86: Add basic Slim Bootloader payload support
Related show

Message

Park, Aiden July 26, 2019, 6:59 a.m. UTC
This patch is to enable U-Boot as a payload which runs on top of Slim Bootloader(https://github.com/slimbootloader/slimbootloader) boot firmware for x86 platforms.

The Slim Bootloader is designed with multi-stage architecture for the execution from reset vector to OS hand-off, and supports QEMU, Apollolake, Whiskeylake and Coffeelake platforms consuming Intel FSP(https://github.com/IntelFsp/FSP) for silicon initialization including CAR and memory initialization.
As multi-stage architecture, the Slim Bootloader adopts payload concept which is responsible for OS load from media devices and boot OS and it supports 32-bit PE32, EFI FV, ELF and RAW format payloads.
The Slim Bootloader generate HOB(Hand Off Block) list pointer, which has debug serial port info, memory map info, performance data info and etc., and passes it to a payload. U-Boot configures serial port, dram, pci, tsc and others with the information from the HOB.

The compiled U-Boot supports usb, sata and sd/mmc boot which have been verified on QEMU and other supported platforms.

Changes in v6:
  * Add CONFIG_USE_HOB
  * Move USB_STORAGE and USB_KEYBOARD from CPU Kconfig to board Kconfig
  * Remove RTL8169 until required
  * Use EFI_GUID and efi_guid_t instead of struct efi_guid
  * Use less generic struct name in Slim Bootloader specific files
  * Convert README to reST doc/board/intel/slimbootloader.rst

Changes in v5:
  * Remove X86_LOAD_FROM_32_BIT from slimbootloader_defconfig

Changes in v4:
  * Use arch/x86/cpu/start.S with CONFIG_SYS_SLIMBOOTLOADER condition
  * Update U-boot or u-boot to U-Boot in commit message
  * Add static keyword in static function

Changes in v3:
  * Add a brief description about Slim Bootloader in 1st patch
  * Add a common HOB library to be used by both FSP and Slim Bootloader
  * Move board/slimbootloader/slimbootloader to board/intel/slimbootloader
  * Add more description board/intel/slimbootloader/README
  * Fix comments from the code review

Changes in v2:
  * Split a single patch to 8 patches
  * Add more comment for each structure and functions

Aiden Park (8):
  x86: Add new slimbootloader CPU type
  x86: Add a common HOB library
  x86: slimbootloader: Add memory configuration
  x86: slimbootloader: Add serial driver
  x86: slimbootloader: Set TSC base and clock_rate for tsc_timer
  x86: slimbootloader: Add a slimbootloader device tree
  board: intel: Add new slimbootloader board
  x86: Skip setting up MTRRs in slimbootloader

 arch/x86/Kconfig                              |   9 +
 arch/x86/cpu/Makefile                         |   1 +
 arch/x86/cpu/slimbootloader/Kconfig           |  19 ++
 arch/x86/cpu/slimbootloader/Makefile          |   5 +
 arch/x86/cpu/slimbootloader/car.S             |  14 +
 arch/x86/cpu/slimbootloader/sdram.c           | 152 +++++++++++
 arch/x86/cpu/slimbootloader/serial.c          |  67 +++++
 arch/x86/cpu/slimbootloader/slimbootloader.c  |  58 ++++
 arch/x86/cpu/start.S                          |   6 +-
 arch/x86/dts/Makefile                         |   1 +
 arch/x86/dts/slimbootloader.dts               |  27 ++
 .../asm/arch-slimbootloader/slimbootloader.h  | 115 ++++++++
 arch/x86/include/asm/fsp/fsp_ffs.h            |   4 +-
 arch/x86/include/asm/fsp/fsp_fv.h             |   4 +-
 arch/x86/include/asm/fsp/fsp_hob.h            | 252 +++---------------
 arch/x86/include/asm/fsp/fsp_support.h        |  39 +--
 arch/x86/include/asm/fsp/fsp_types.h          |   8 -
 arch/x86/include/asm/global_data.h            |   2 +-
 arch/x86/include/asm/hob.h                    | 229 ++++++++++++++++
 arch/x86/lib/Makefile                         |   1 +
 arch/x86/lib/asm-offsets.c                    |   2 +-
 arch/x86/lib/fsp/fsp_support.c                | 123 ++-------
 arch/x86/lib/hob.c                            |  84 ++++++
 arch/x86/lib/init_helpers.c                   |   3 +-
 board/intel/Kconfig                           |  14 +
 board/intel/slimbootloader/Kconfig            |  28 ++
 board/intel/slimbootloader/Makefile           |   5 +
 board/intel/slimbootloader/slimbootloader.c   |  21 ++
 board/intel/slimbootloader/start.S            |   9 +
 cmd/x86/Makefile                              |   1 +
 cmd/x86/fsp.c                                 |  67 +----
 cmd/x86/hob.c                                 |  78 ++++++
 configs/slimbootloader_defconfig              |  22 ++
 doc/board/intel/slimbootloader.rst            | 166 ++++++++++++
 include/configs/slimbootloader.h              |  62 +++++
 35 files changed, 1267 insertions(+), 431 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/sdram.c
 create mode 100644 arch/x86/cpu/slimbootloader/serial.c
 create mode 100644 arch/x86/cpu/slimbootloader/slimbootloader.c
 create mode 100644 arch/x86/dts/slimbootloader.dts
 create mode 100644 arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
 create mode 100644 arch/x86/include/asm/hob.h
 create mode 100644 arch/x86/lib/hob.c
 create mode 100644 board/intel/slimbootloader/Kconfig
 create mode 100644 board/intel/slimbootloader/Makefile
 create mode 100644 board/intel/slimbootloader/slimbootloader.c
 create mode 100644 board/intel/slimbootloader/start.S
 create mode 100644 cmd/x86/hob.c
 create mode 100644 configs/slimbootloader_defconfig
 create mode 100644 doc/board/intel/slimbootloader.rst
 create mode 100644 include/configs/slimbootloader.h

Comments

Andy Shevchenko July 26, 2019, 10:38 a.m. UTC | #1
On Fri, Jul 26, 2019 at 9:59 AM Park, Aiden <aiden.park@intel.com> wrote:
>
> This patch is to enable U-Boot as a payload which runs on top of Slim Bootloader(https://github.com/slimbootloader/slimbootloader) boot firmware for x86 platforms.
>
> The Slim Bootloader is designed with multi-stage architecture for the execution from reset vector to OS hand-off, and supports QEMU, Apollolake, Whiskeylake and Coffeelake platforms consuming Intel FSP(https://github.com/IntelFsp/FSP) for silicon initialization including CAR and memory initialization.
> As multi-stage architecture, the Slim Bootloader adopts payload concept which is responsible for OS load from media devices and boot OS and it supports 32-bit PE32, EFI FV, ELF and RAW format payloads.
> The Slim Bootloader generate HOB(Hand Off Block) list pointer, which has debug serial port info, memory map info, performance data info and etc., and passes it to a payload. U-Boot configures serial port, dram, pci, tsc and others with the information from the HOB.
>
> The compiled U-Boot supports usb, sata and sd/mmc boot which have been verified on QEMU and other supported platforms.
>

Thanks for an update.
For non-commented patches, take mine
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

For the rest, consider addressing.

> Changes in v6:
>   * Add CONFIG_USE_HOB
>   * Move USB_STORAGE and USB_KEYBOARD from CPU Kconfig to board Kconfig
>   * Remove RTL8169 until required
>   * Use EFI_GUID and efi_guid_t instead of struct efi_guid
>   * Use less generic struct name in Slim Bootloader specific files
>   * Convert README to reST doc/board/intel/slimbootloader.rst
>
> Changes in v5:
>   * Remove X86_LOAD_FROM_32_BIT from slimbootloader_defconfig
>
> Changes in v4:
>   * Use arch/x86/cpu/start.S with CONFIG_SYS_SLIMBOOTLOADER condition
>   * Update U-boot or u-boot to U-Boot in commit message
>   * Add static keyword in static function
>
> Changes in v3:
>   * Add a brief description about Slim Bootloader in 1st patch
>   * Add a common HOB library to be used by both FSP and Slim Bootloader
>   * Move board/slimbootloader/slimbootloader to board/intel/slimbootloader
>   * Add more description board/intel/slimbootloader/README
>   * Fix comments from the code review
>
> Changes in v2:
>   * Split a single patch to 8 patches
>   * Add more comment for each structure and functions
>
> Aiden Park (8):
>   x86: Add new slimbootloader CPU type
>   x86: Add a common HOB library
>   x86: slimbootloader: Add memory configuration
>   x86: slimbootloader: Add serial driver
>   x86: slimbootloader: Set TSC base and clock_rate for tsc_timer
>   x86: slimbootloader: Add a slimbootloader device tree
>   board: intel: Add new slimbootloader board
>   x86: Skip setting up MTRRs in slimbootloader
>
>  arch/x86/Kconfig                              |   9 +
>  arch/x86/cpu/Makefile                         |   1 +
>  arch/x86/cpu/slimbootloader/Kconfig           |  19 ++
>  arch/x86/cpu/slimbootloader/Makefile          |   5 +
>  arch/x86/cpu/slimbootloader/car.S             |  14 +
>  arch/x86/cpu/slimbootloader/sdram.c           | 152 +++++++++++
>  arch/x86/cpu/slimbootloader/serial.c          |  67 +++++
>  arch/x86/cpu/slimbootloader/slimbootloader.c  |  58 ++++
>  arch/x86/cpu/start.S                          |   6 +-
>  arch/x86/dts/Makefile                         |   1 +
>  arch/x86/dts/slimbootloader.dts               |  27 ++
>  .../asm/arch-slimbootloader/slimbootloader.h  | 115 ++++++++
>  arch/x86/include/asm/fsp/fsp_ffs.h            |   4 +-
>  arch/x86/include/asm/fsp/fsp_fv.h             |   4 +-
>  arch/x86/include/asm/fsp/fsp_hob.h            | 252 +++---------------
>  arch/x86/include/asm/fsp/fsp_support.h        |  39 +--
>  arch/x86/include/asm/fsp/fsp_types.h          |   8 -
>  arch/x86/include/asm/global_data.h            |   2 +-
>  arch/x86/include/asm/hob.h                    | 229 ++++++++++++++++
>  arch/x86/lib/Makefile                         |   1 +
>  arch/x86/lib/asm-offsets.c                    |   2 +-
>  arch/x86/lib/fsp/fsp_support.c                | 123 ++-------
>  arch/x86/lib/hob.c                            |  84 ++++++
>  arch/x86/lib/init_helpers.c                   |   3 +-
>  board/intel/Kconfig                           |  14 +
>  board/intel/slimbootloader/Kconfig            |  28 ++
>  board/intel/slimbootloader/Makefile           |   5 +
>  board/intel/slimbootloader/slimbootloader.c   |  21 ++
>  board/intel/slimbootloader/start.S            |   9 +
>  cmd/x86/Makefile                              |   1 +
>  cmd/x86/fsp.c                                 |  67 +----
>  cmd/x86/hob.c                                 |  78 ++++++
>  configs/slimbootloader_defconfig              |  22 ++
>  doc/board/intel/slimbootloader.rst            | 166 ++++++++++++
>  include/configs/slimbootloader.h              |  62 +++++
>  35 files changed, 1267 insertions(+), 431 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/sdram.c
>  create mode 100644 arch/x86/cpu/slimbootloader/serial.c
>  create mode 100644 arch/x86/cpu/slimbootloader/slimbootloader.c
>  create mode 100644 arch/x86/dts/slimbootloader.dts
>  create mode 100644 arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
>  create mode 100644 arch/x86/include/asm/hob.h
>  create mode 100644 arch/x86/lib/hob.c
>  create mode 100644 board/intel/slimbootloader/Kconfig
>  create mode 100644 board/intel/slimbootloader/Makefile
>  create mode 100644 board/intel/slimbootloader/slimbootloader.c
>  create mode 100644 board/intel/slimbootloader/start.S
>  create mode 100644 cmd/x86/hob.c
>  create mode 100644 configs/slimbootloader_defconfig
>  create mode 100644 doc/board/intel/slimbootloader.rst
>  create mode 100644 include/configs/slimbootloader.h
>
> --
> 2.20.1
>
Park, Aiden July 26, 2019, 12:53 p.m. UTC | #2
Hi Andy,

> -----Original Message-----
> From: Andy Shevchenko [mailto:andy.shevchenko@gmail.com]
> Sent: Friday, July 26, 2019 7:39 PM
> To: Park, Aiden <aiden.park@intel.com>
> Cc: Bin Meng <bmeng.cn@gmail.com>; U-Boot Mailing List <u-
> boot@lists.denx.de>; Simon Glass <sjg@chromium.org>
> Subject: Re: [PATCH v6 0/8] x86: Add basic Slim Bootloader payload support
> 
> On Fri, Jul 26, 2019 at 9:59 AM Park, Aiden <aiden.park@intel.com> wrote:
> >
> > This patch is to enable U-Boot as a payload which runs on top of Slim
> Bootloader(https://github.com/slimbootloader/slimbootloader) boot firmware
> for x86 platforms.
> >
> > The Slim Bootloader is designed with multi-stage architecture for the
> execution from reset vector to OS hand-off, and supports QEMU, Apollolake,
> Whiskeylake and Coffeelake platforms consuming Intel
> FSP(https://github.com/IntelFsp/FSP) for silicon initialization including CAR and
> memory initialization.
> > As multi-stage architecture, the Slim Bootloader adopts payload concept
> which is responsible for OS load from media devices and boot OS and it supports
> 32-bit PE32, EFI FV, ELF and RAW format payloads.
> > The Slim Bootloader generate HOB(Hand Off Block) list pointer, which has
> debug serial port info, memory map info, performance data info and etc., and
> passes it to a payload. U-Boot configures serial port, dram, pci, tsc and others
> with the information from the HOB.
> >
> > The compiled U-Boot supports usb, sata and sd/mmc boot which have been
> verified on QEMU and other supported platforms.
> >
> 
> Thanks for an update.
> For non-commented patches, take mine
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> 
> For the rest, consider addressing.
> 
Thanks for your quick review. Let me make next version according to your review.

> > Changes in v6:
> >   * Add CONFIG_USE_HOB
> >   * Move USB_STORAGE and USB_KEYBOARD from CPU Kconfig to board
> Kconfig
> >   * Remove RTL8169 until required
> >   * Use EFI_GUID and efi_guid_t instead of struct efi_guid
> >   * Use less generic struct name in Slim Bootloader specific files
> >   * Convert README to reST doc/board/intel/slimbootloader.rst
> >
> > Changes in v5:
> >   * Remove X86_LOAD_FROM_32_BIT from slimbootloader_defconfig
> >
> > Changes in v4:
> >   * Use arch/x86/cpu/start.S with CONFIG_SYS_SLIMBOOTLOADER condition
> >   * Update U-boot or u-boot to U-Boot in commit message
> >   * Add static keyword in static function
> >
> > Changes in v3:
> >   * Add a brief description about Slim Bootloader in 1st patch
> >   * Add a common HOB library to be used by both FSP and Slim Bootloader
> >   * Move board/slimbootloader/slimbootloader to board/intel/slimbootloader
> >   * Add more description board/intel/slimbootloader/README
> >   * Fix comments from the code review
> >
> > Changes in v2:
> >   * Split a single patch to 8 patches
> >   * Add more comment for each structure and functions
> >
> > Aiden Park (8):
> >   x86: Add new slimbootloader CPU type
> >   x86: Add a common HOB library
> >   x86: slimbootloader: Add memory configuration
> >   x86: slimbootloader: Add serial driver
> >   x86: slimbootloader: Set TSC base and clock_rate for tsc_timer
> >   x86: slimbootloader: Add a slimbootloader device tree
> >   board: intel: Add new slimbootloader board
> >   x86: Skip setting up MTRRs in slimbootloader
> >
> >  arch/x86/Kconfig                              |   9 +
> >  arch/x86/cpu/Makefile                         |   1 +
> >  arch/x86/cpu/slimbootloader/Kconfig           |  19 ++
> >  arch/x86/cpu/slimbootloader/Makefile          |   5 +
> >  arch/x86/cpu/slimbootloader/car.S             |  14 +
> >  arch/x86/cpu/slimbootloader/sdram.c           | 152 +++++++++++
> >  arch/x86/cpu/slimbootloader/serial.c          |  67 +++++
> >  arch/x86/cpu/slimbootloader/slimbootloader.c  |  58 ++++
> >  arch/x86/cpu/start.S                          |   6 +-
> >  arch/x86/dts/Makefile                         |   1 +
> >  arch/x86/dts/slimbootloader.dts               |  27 ++
> >  .../asm/arch-slimbootloader/slimbootloader.h  | 115 ++++++++
> >  arch/x86/include/asm/fsp/fsp_ffs.h            |   4 +-
> >  arch/x86/include/asm/fsp/fsp_fv.h             |   4 +-
> >  arch/x86/include/asm/fsp/fsp_hob.h            | 252 +++---------------
> >  arch/x86/include/asm/fsp/fsp_support.h        |  39 +--
> >  arch/x86/include/asm/fsp/fsp_types.h          |   8 -
> >  arch/x86/include/asm/global_data.h            |   2 +-
> >  arch/x86/include/asm/hob.h                    | 229 ++++++++++++++++
> >  arch/x86/lib/Makefile                         |   1 +
> >  arch/x86/lib/asm-offsets.c                    |   2 +-
> >  arch/x86/lib/fsp/fsp_support.c                | 123 ++-------
> >  arch/x86/lib/hob.c                            |  84 ++++++
> >  arch/x86/lib/init_helpers.c                   |   3 +-
> >  board/intel/Kconfig                           |  14 +
> >  board/intel/slimbootloader/Kconfig            |  28 ++
> >  board/intel/slimbootloader/Makefile           |   5 +
> >  board/intel/slimbootloader/slimbootloader.c   |  21 ++
> >  board/intel/slimbootloader/start.S            |   9 +
> >  cmd/x86/Makefile                              |   1 +
> >  cmd/x86/fsp.c                                 |  67 +----
> >  cmd/x86/hob.c                                 |  78 ++++++
> >  configs/slimbootloader_defconfig              |  22 ++
> >  doc/board/intel/slimbootloader.rst            | 166 ++++++++++++
> >  include/configs/slimbootloader.h              |  62 +++++
> >  35 files changed, 1267 insertions(+), 431 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/sdram.c
> >  create mode 100644 arch/x86/cpu/slimbootloader/serial.c
> >  create mode 100644 arch/x86/cpu/slimbootloader/slimbootloader.c
> >  create mode 100644 arch/x86/dts/slimbootloader.dts  create mode
> > 100644 arch/x86/include/asm/arch-slimbootloader/slimbootloader.h
> >  create mode 100644 arch/x86/include/asm/hob.h  create mode 100644
> > arch/x86/lib/hob.c  create mode 100644
> > board/intel/slimbootloader/Kconfig
> >  create mode 100644 board/intel/slimbootloader/Makefile
> >  create mode 100644 board/intel/slimbootloader/slimbootloader.c
> >  create mode 100644 board/intel/slimbootloader/start.S
> >  create mode 100644 cmd/x86/hob.c
> >  create mode 100644 configs/slimbootloader_defconfig  create mode
> > 100644 doc/board/intel/slimbootloader.rst
> >  create mode 100644 include/configs/slimbootloader.h
> >
> > --
> > 2.20.1
> >
> 
> 
> --
> With Best Regards,
> Andy Shevchenko

Best Regards,
Aiden