[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