[U-Boot] [PATCH v2 00/50] x86: Add support for booting from TPL

Simon Glass sjg at chromium.org
Fri Apr 26 03:58:32 UTC 2019


At present SPL is used on 64-bit platforms, to allow SPL to be built as
a 32-bit program and U-Boot proper to be built as 64-bit.

However it is useful to be able to use SPL on any x86 platform, where
U-Boot needs to be updated in the field. Then SPL can select which U-Boot
to run (A or B) and most of the code can be updated. Similarly, using TPL
allows both SPL and U-Boot to be updated. This is the best approach, since
it means that all of U-Boot proper as well as SPL (in particular SDRAM
init) can be updated in the field. This provides for the smallest possible
amount of read-only (non-updateable) code: just the TPL code.

This series contains a number of changes to allow x86 boards to use TPL,
SPL and U-Boot proper. As a test, it is enabled for samus with a new
chromebook_samus_tpl board.

Changes in v2:
- Update commit message to mention dropping the \n
- Update testSelectImage() to test in normal and verbose modes
- Update the commit message to explain the implications on aliases
- Add a better explanation of the logic change, in the commit message
- Fix map output when section offset is not set (make it 0)
- Add a test for sections with offsets
- Update the comment in fsp_cap.S too
- Update commit message to make it clear this patch is just for broadwell
- Bring in sdram_console_tx_byte() to allow debugging
- Add xorl to TPL code also
- Update comments in start_from_tpl to correctly explain SPL state
- Add new patch to separate out the EFI code in sysreset
- Add new patch to add an ioctl to read power-management info
- Add new patch to implement PCH_REQ_PMBASE_INFO on ivybridge
- Add new patch to implement PCH_REQ_PMBASE_INFO on broadwell
- Add new patch to implement power-off if available
- Add new patch to enable the RTC in Kconfig
- Add a new patch to update PCH to work in TPL
- Add a new patch allowing jumping from TPL to SPL
- Sort defconfig and adjust it to build after rebase on maste

Simon Glass (50):
  binman: Don't generate an error in 'text' entry constructor
  binman: Don't show image-skip message by default
  binman: Add a missing comment in Entry_vblock
  dm: core: Fix translate condition in ofnode_get_addr_size()
  cros_ec: Use a hyphen in the uclass name
  spl: Allow sandbox to build a device-tree file
  binman: Allow sections to have an offset
  x86: start64: Fix copyright message
  x86: mp_init: Use proper error numbers
  x86: Add a way to reinit the cpu
  x86: dts: Add device-tree labels for rtc and reset
  x86: Update a stale comment about ifdtool
  x86: Support SPL and TPL
  x86: Support booting with TPL
  x86: Add a handoff header file
  x86: broadwell: Improve SDRAM debugging output
  x86: broadwell: Allow SDRAM init from SPL
  x86: Move init of debug UART to cpu.c
  x86: broadwell: Split CPU init
  x86: Add support for starting from SPL/TPL
  x86: Allow 16-bit init to be in TPL
  x86: broadwell: Allow booting from SPL
  x86: broadwell: Select refcode and CPU code for SPL
  x86: Add common Intel code for SPL
  x86: Support saving MRC data from SPL
  x86: Add a simple TPL implementation
  x86: mrccache: Add more debugging
  x86: sysreset: Separate out the EFI code
  x86: pch: Add an ioctl to read power-management info
  x86: ivybridge: Implement PCH_REQ_PMBASE_INFO
  x86: broadwell: Implement PCH_REQ_PMBASE_INFO
  x86: sysreset: Implement power-off if available
  x86: Support TPL in Intel common code
  x86: Don't set up MTRRs in SPL
  x86: Don't generate a bootstage report in SPL
  x86: Support PCI VGA ROM when TPL is used
  x86: sysreset: Implement the get_last() method
  x86: Add documention on the samus flashmap
  x86: samus: Update device tree for SPL
  x86: samus: Update device tree for verified boot
  x86: Update device tree for TPL
  x86: Update device tree for Chromium OS verified boot
  x86: Fix device-tree indentation
  x86: samus: Increase the pre-reloc memory again
  Revert "pci: Scale MAX_PCI_REGIONS based on CONFIG_NR_DRAM_BANKS"
  x86: Enable the RTC on all boards
  x86: Update the memory map a little
  x86: broadwell: Update PCH to work in TPL
  x86: Add a way to jump from TPL to SPL
  x86: samus: Add a target to boot through TPL

 Makefile                                  |   1 +
 arch/Kconfig                              |  32 +
 arch/x86/Kconfig                          |  10 +-
 arch/x86/Makefile                         |  16 +-
 arch/x86/cpu/Makefile                     |  15 +-
 arch/x86/cpu/broadwell/Makefile           |  23 +-
 arch/x86/cpu/broadwell/cpu.c              | 676 +--------------------
 arch/x86/cpu/broadwell/cpu_from_spl.c     |  63 ++
 arch/x86/cpu/broadwell/cpu_full.c         | 694 ++++++++++++++++++++++
 arch/x86/cpu/broadwell/northbridge.c      | 100 ++++
 arch/x86/cpu/broadwell/pch.c              |  37 +-
 arch/x86/cpu/broadwell/sdram.c            | 136 +----
 arch/x86/cpu/i386/cpu.c                   | 113 ++--
 arch/x86/cpu/intel_common/Makefile        |  17 +-
 arch/x86/cpu/intel_common/car.S           |   2 +-
 arch/x86/cpu/intel_common/cpu_from_spl.c  |  27 +
 arch/x86/cpu/ivybridge/bd82x6x.c          |  15 +
 arch/x86/cpu/mp_init.c                    |  10 +-
 arch/x86/cpu/start.S                      |  13 +
 arch/x86/cpu/start64.S                    |   2 +-
 arch/x86/cpu/start_from_spl.S             |  71 +++
 arch/x86/cpu/start_from_tpl.S             |  49 ++
 arch/x86/cpu/u-boot-spl.lds               |   2 +-
 arch/x86/cpu/x86_64/cpu.c                 |   5 +
 arch/x86/dts/chromebook_samus.dts         |  60 +-
 arch/x86/dts/reset.dtsi                   |   2 +-
 arch/x86/dts/rtc.dtsi                     |   2 +-
 arch/x86/dts/u-boot.dtsi                  | 154 +++--
 arch/x86/include/asm/handoff.h            |  15 +
 arch/x86/include/asm/mrccache.h           |  11 +
 arch/x86/include/asm/spl.h                |  17 +-
 arch/x86/include/asm/u-boot-x86.h         |  20 +
 arch/x86/lib/Makefile                     |   9 +-
 arch/x86/lib/bootm.c                      |   2 +-
 arch/x86/lib/fsp/fsp_car.S                |   2 +-
 arch/x86/lib/init_helpers.c               |   5 +-
 arch/x86/lib/mrccache.c                   |  52 +-
 arch/x86/lib/spl.c                        |  44 +-
 arch/x86/lib/tpl.c                        | 118 ++++
 board/google/Kconfig                      |   8 +
 board/google/chromebook_samus/Kconfig     |  14 +-
 board/google/chromebook_samus/MAINTAINERS |   7 +
 configs/chromebook_link_defconfig         |   1 +
 configs/chromebook_samus_defconfig        |   2 +-
 configs/chromebook_samus_tpl_defconfig    |  81 +++
 doc/README.x86                            |  16 +
 drivers/core/ofnode.c                     |   2 +-
 drivers/misc/cros_ec.c                    |   2 +-
 drivers/pci/pci_rom.c                     |   2 +-
 drivers/sysreset/sysreset_x86.c           | 104 +++-
 include/configs/chromebook_link.h         |   3 -
 include/configs/chromebook_samus.h        |   3 +
 include/configs/qemu-x86.h                |   3 -
 include/configs/x86-common.h              |   1 -
 include/pch.h                             |  18 +
 include/pci.h                             |   6 +-
 scripts/Makefile.spl                      |  24 +-
 tools/binman/README                       |   7 +
 tools/binman/bsection.py                  |   9 +-
 tools/binman/control.py                   |   4 +-
 tools/binman/etype/section.py             |   3 +-
 tools/binman/etype/text.py                |   4 +-
 tools/binman/etype/vblock.py              |   1 +
 tools/binman/ftest.py                     |  44 +-
 tools/binman/test/101_sections_offset.dts |  35 ++
 65 files changed, 2066 insertions(+), 980 deletions(-)
 create mode 100644 arch/x86/cpu/broadwell/cpu_from_spl.c
 create mode 100644 arch/x86/cpu/broadwell/cpu_full.c
 create mode 100644 arch/x86/cpu/intel_common/cpu_from_spl.c
 create mode 100644 arch/x86/cpu/start_from_spl.S
 create mode 100644 arch/x86/cpu/start_from_tpl.S
 create mode 100644 arch/x86/include/asm/handoff.h
 create mode 100644 arch/x86/lib/tpl.c
 create mode 100644 configs/chromebook_samus_tpl_defconfig
 create mode 100644 tools/binman/test/101_sections_offset.dts

-- 
2.21.0.593.g511ec345e18-goog



More information about the U-Boot mailing list