u-boot/doc
Stephan Gerhold 0204d1b56b board: dragonboard410c: Load U-Boot directly without LK
At the moment the U-Boot port for the DragonBoard 410c is designed
to be loaded as an Android boot image after Qualcomm's Little Kernel (LK)
bootloader. This is simple to set up but LK is redundant in this case,
since everything done by LK can be also done directly by U-Boot.

Dropping LK entirely has at least the following advantages:
  - Easier installation/board code (no need for Android boot images)
  - (Slightly) faster boot
  - Boot directly in 64-bit without a round trip to 32-bit for LK

So far this was not possible yet because of unsolved problems:

  1. Signing tool: The firmware expects a "signed" ELF image with extra
     (Qualcomm-specific) ELF headers, usually used for secure boot.
     The DragonBoard 410c does not have secure boot by default but the
     extra ELF headers are still required.

  2. PSCI bug: There seems to be a bug in the PSCI implementation
     (part of the TrustZone/tz firmware) that causes all other CPU cores
     to be started in 32-bit mode if LK is missing in the boot chain.
     This causes Linux to hang early during boot.

There is a solution for both problems now:

  1. qtestsign (https://github.com/msm8916-mainline/qtestsign)
     can be used as a "signing" tool for U-Boot and other firmware.

  2. A workaround for the "PSCI bug" is to execute the TZ syscall when
     entering U-Boot. That way PSCI is made aware of the 64-bit switch
     and starts all other CPU cores in 64-bit mode as well.

Simplify the dragonboard410c board by removing all the extra code that
is only used to build an Android boot image that can be loaded by LK.
This allows dropping the custom linker script, special image magic,
as well as most of the special build/installation instructions.

CONFIG_REMAKE_ELF is used to build a new ELF image that has both U-Boot
and the appended DTB combined. The resulting u-boot.elf can then be
passed to the "signing" tool (e.g. qtestsign).

The PSCI workaround is placed in the "boot0" hook that is enabled
with CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK. The extra check for EL1 allows
compatibility with custom firmware that enters U-Boot in EL2 or EL3,
e.g. qhypstub (https://github.com/msm8916-mainline/qhypstub).

As a first step these changes apply only to DragonBoard410c.
Similar changes could likely also work for the DragonBoard 820c.

Note that removing LK wouldn't be possible that easily without a lot of
work already done three years ago by Ramon Fried. A lot of missing
initialization, pinctrl etc was already added back then even though
it was not strictly needed yet.

Cc: Ramon Fried <rfried.dev@gmail.com>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
2021-07-23 18:53:45 -04:00
..
SPI sandbox: update documents regarding spi_sf 2020-05-29 20:55:45 -06:00
SPL
android fastboot: add UUU command UCmd and ACmd support 2021-02-26 15:30:55 +01:00
api doc: fix doc/develop/logging.rst 2021-01-27 12:52:57 +01:00
arch sandbox: Adjust the bloblist default address 2021-07-21 10:27:34 -06:00
board board: dragonboard410c: Load U-Boot directly without LK 2021-07-23 18:53:45 -04:00
build tools: Integrate the Dockerfile used for CI 2021-04-07 14:47:05 -04:00
chromium doc: Update documentation for cros-2021.04 release 2021-07-15 19:50:28 +08:00
develop dtoc: Update documentation to cover warnings in more detail 2021-07-21 10:27:34 -06:00
device-tree-bindings reboot-mode: read the boot mode from RTC memory 2021-07-23 10:16:39 -04:00
imx doc: imx: psb: Fix missing setexpr arguments 2021-04-24 06:53:40 +02:00
media doc: Remove duplicated documentation directory 2019-06-20 10:57:08 -04:00
mvebu
sphinx sphinx: Pin to docutils-0.16 2021-04-04 16:07:09 -04:00
sphinx-static doc: Remove duplicated documentation directory 2019-06-20 10:57:08 -04:00
uImage.FIT doc: fix typo in signature.txt 2021-07-12 20:30:48 +02:00
usage doc/usage: cmd-usage help file for askenv 2021-06-28 19:57:13 +02:00
.gitignore doc: Add .gitignore for the Sphinx build output directory 2019-07-24 14:15:37 -04:00
I2C_Edge_Conditions
Makefile doc: describe the md command 2021-03-02 15:53:37 -05:00
README.440-DDR-performance
README.AMCC-eval-boards-cleanup
README.Heterogeneous-SoCs
README.JFFS2
README.JFFS2_NAND
README.LED
README.OFT
README.POST treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.SNTP
README.SPL doc: spl: update reference to driver-model/README.txt 2020-04-17 12:32:36 -04:00
README.TPL cosmetic: Fix spelling and whitespace errors 2019-12-03 08:43:23 -05:00
README.VLAN
README.VSC3316-3308
README.arm-caches
README.arm-relocation treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.armada-secureboot
README.asn1 doc: add README for asn1 compiler and decoder 2019-12-06 16:44:20 -05:00
README.atmel_mci treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.atmel_pmecc
README.autoboot autoboot: Rename CONFIG_MENUKEY to CONFIG_AUTOBOOT_MENUKEY 2019-08-02 11:19:14 -04:00
README.bcm7xxx
README.bcmns3 doc: add README doc for bcmns3 platform 2020-07-29 10:37:11 -04:00
README.bedbug
README.bitbangMII
README.bloblist bloblist: Zero records when adding 2020-02-05 19:33:46 -07:00
README.bootcount bootcount_ext: Add flag to enable/disable bootcount 2020-04-24 10:10:00 -04:00
README.boston
README.bus_vcxk
README.cfi
README.commands.itest
README.commands.spl
README.console treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.davinci README: davinci: Clarify when SPL is used and the target devices. 2020-07-13 20:58:34 +05:30
README.davinci.nand_spl
README.dfutftp cmd: drop fitupd command 2020-07-16 12:37:01 +02:00
README.displaying-bmps
README.distro doc/README.distro: kernel_comp_addr_r 2021-02-21 09:21:35 +01:00
README.dns
README.enetaddr net: Always build the string_to_enetaddr() helper 2019-12-09 09:47:41 -06:00
README.esbc_validate
README.ext4
README.falcon doc: Update parallel NOR flash related information in README.falcon 2019-07-19 20:14:50 +02:00
README.fdt-control doc: fix references to driver-model 2020-04-17 12:32:36 -04:00
README.fec_mxc
README.fsl-clk
README.fsl-ddr
README.fsl-dpaa
README.fsl-esdhc Move eSDHC adapter card identification to board files 2020-07-27 14:16:28 +05:30
README.fsl-hwconfig
README.fsl-trustzone-components
README.fsl_iim
README.fuse
README.generic-board treewide: convert bd_t to struct bd_info manually 2020-07-17 10:46:44 -04:00
README.generic_usb_ohci
README.gpio dt-bindings: gpio: alignment with kernel v5.3 2020-04-16 23:06:54 -04:00
README.gpt cmd: gpt: Add option to write GPT partitions to environment variable 2021-05-04 12:52:46 -04:00
README.hwconfig
README.i2c
README.iomux
README.kconfig
README.kwbimage
README.link-local
README.lynxkdi
README.malta
README.marvell Revert "arm64: dts: a3720: add support for espressobin with populated emmc" 2020-12-07 07:11:37 +01:00
README.mediatek
README.memory-test
README.mpc74xx
README.mpc83xx.ddrecc
README.mpc83xxads
README.mpc85xx freescale/powerpc: Rename the config CONFIG_SECURE_BOOT name 2019-11-08 16:32:08 +05:30
README.mpc85xx-sd-spi-boot
README.mpc85xx-spin-table
README.mpc85xxcds
README.multi-dtb-fit doc: multi-dtb-fit: Remove double underscores 2020-07-17 10:47:19 -04:00
README.mxc_ocotp
README.nand
README.nand-boot-ppc440
README.nokia_rx51 Nokia RX-51: Add support for booting kernel in zImage format 2021-07-15 17:56:04 +05:30
README.odroid
README.omap-ulpi-viewport
README.omap3 logicpd: Drop omap3 zoom1 2020-07-09 20:58:05 +05:30
README.pblimage
README.pcap doc: pcap: add pcap cmd documentation 2019-09-04 11:37:19 -05:00
README.plan9
README.power-framework
README.pxe cmd: pxe: add support for FDT overlays 2021-01-27 10:47:54 -05:00
README.ramboot-ppc85xx
README.rmobile
README.rockchip doc: rockchip: Remove list of supported boards 2020-05-29 18:06:26 +08:00
README.rockusb
README.s5p4418 arm: add (default) config for nanopi2 board 2020-07-29 08:43:40 -04:00
README.s5pc1xx
README.sata
README.sched
README.scrapyard scrapyard: Delete this file and script 2019-09-19 12:54:29 -04:00
README.semihosting
README.serial_multi
README.sha1
README.silent Convert CONFIG_SYS_DEVICE_NULLDEV to Kconfig 2020-08-23 13:43:10 -04:00
README.socfpga arm: socfpga: arria10: Add qts-filter for Arria10 socfpga 2020-10-09 17:53:14 +08:00
README.splashprepare splash: Use splashfile instead of location->name 2019-05-20 11:55:42 +02:00
README.srio-pcie-boot-corenet
README.standalone command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
README.t1040-l2switch
README.tee
README.ti-secure doc: Update info on using K3 secure devices 2019-04-26 17:51:51 -04:00
README.ubi ubi: Add "skipcheck" command to set/clear this bit in the UBI volume hdr 2019-10-16 05:42:36 +02:00
README.ubispl
README.ublimage
README.udp net: add a generic udp protocol 2020-09-30 16:55:03 -04:00
README.unaligned-memory-access.txt
README.uniphier
README.update cmd: drop fitupd command 2020-07-16 12:37:01 +02:00
README.usb
README.vf610
README.video
README.vxworks bootm: vxworks: Support Linux compatible standard DTB for ARM and PPC 2019-12-03 08:43:23 -05:00
README.watchdog
README.zfs
bounces
conf.py doc: Add reference to U-Boot project in conf.py 2021-02-21 09:21:35 +01:00
feature-removal-schedule.txt treewide: mem: Move mtest related defines to Kconfig 2020-05-08 12:02:56 -04:00
git-mailrc MAINTAINERS, git-mailrc: socfpga: Change co-maintainer to Tien Fong Chee 2021-07-14 16:48:04 -04:00
index.rst doc: imx: psb: Document usage of SRC_GPR10 PERSIST_SECONDARY_BOOT for A/B switching 2021-04-08 23:59:50 +02:00
kwboot.1
mkimage.1 mkimage: Allow updating the FIT timestamp 2020-07-25 14:46:57 -06:00

README.zfs

This patch series adds support for ZFS listing and load to u-boot.

To Enable zfs ls and load commands, modify the board specific config file with
#define CONFIG_CMD_ZFS

Steps to test:

1. After applying the patch, zfs specific commands can be seen
   in the boot loader prompt using
	UBOOT #help

	zfsload- load binary file from a ZFS file system
	zfsls  - list files in a directory (default /)

2. To list the files in zfs pool, device or partition, execute
	zfsls <interface> <dev[:part]> [POOL/@/dir/file]
	For example:
	UBOOT #zfsls mmc 0:5 /rpool/@/usr/bin/

3. To read and load a file from an ZFS formatted partition to RAM, execute
	zfsload <interface> <dev[:part]> [addr] [filename] [bytes]
	For example:
	UBOOT #zfsload mmc 2:2 0x30007fc0 /rpool/@/boot/uImage

References :
	-- ZFS GRUB sources from Solaris GRUB-0.97
	-- GRUB Bazaar repository

Jorgen Lundman <lundman at lundman.net> 2012.