u-boot/doc
Evan Thompson 631ba313ea ext4fs: Add ext4 extent tree cache
In ext4, the file inode can store up to 4 extents. If a file requires
more (due to size or fragmentation), an extent index tree is used.

Currently, u-boot reads a node from each level of the extent tree
for every block read, which is very inefficient when extent tree
depth is > 0.

This patch adds a cache for the extent tree. We cache the 1
most-recently-seen node at each extent tree level. The typical workload
is sequential block access, so once we leave a given tree node, it will
not be revisited. Therefore, it makes sense to just cache one node
per tree level.

Cached blocks are lazily allocated. The typical case is extent tree
depth = 0, in which case no caching is needed and no allocations will
occur.

For files with extent tree depth = 1, this patch produces a ~10x
improvement in read speed. For deeper extent trees, the improvement is
larger. On my test device, a 3MB file which previously took 9s to read
now takes 150ms.

Cache size is configurable with CONFIG_EXT4_EXTENT_CACHE_SIZE. However
the default of 5 (the maximum depth of well-formed extent trees) is
recommended.

Signed-off-by: Evan Thompson <evan.thompson@flukenetworks.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Cherry-picked-by: Alexandre Bard <alexandre.bard@netmodule.com>

BugzID: 57904
2020-01-12 21:59:54 +01:00
..
DocBook
SPI
SPL
chromium doc: fix incorrect usage of DT node unit address 2018-01-15 18:29:21 -07:00
device-tree-bindings MLK-19722-1 doc: Move device tree bindings documentation to doc/device-tree-bindings 2018-10-08 23:06:19 -07:00
driver-model dtoc: Rename the phandle struct 2017-09-15 05:27:47 -06:00
imx MLK-21251-2 doc: imx: habv4: Fix typo in csf_additional_images.txt CSF example 2019-04-09 18:33:24 -07:00
mvebu arm64: mvebu: Fix A8K memory mapping and add documentation 2016-12-21 09:52:35 +01:00
uImage.FIT doc: FIT image: fix incorrect examples of DT node unit address 2018-01-15 18:29:21 -07:00
I2C_Edge_Conditions
README.440-DDR-performance
README.AMCC-eval-boards-cleanup
README.ARC
README.ARM-memory-map
README.Heterogeneous-SoCs
README.JFFS2 fs: Kconfig: Add a separate option for FS_JFFS2 2017-05-22 12:45:31 -04:00
README.JFFS2_NAND README: Drop unused JFFS2 options 2016-10-06 20:40:26 -04:00
README.LED powerpc, 8xx: remove support for 8xx 2017-06-12 08:37:55 -04:00
README.LED_display
README.N1213
README.NDS32
README.NX25 riscv: doc: Add relative doc to describe RISC-V 2018-01-12 08:05:12 -05:00
README.NetConsole
README.OFT
README.POST
README.SNTP
README.SPL
README.TPL
README.VLAN
README.VSC3316-3308
README.ae250 riscv: doc: Add relative doc to describe RISC-V 2018-01-12 08:05:12 -05:00
README.ag101p
README.android-fastboot usb: gadget: Make g_dnl USB settings common 2017-10-03 19:12:05 +02:00
README.android-fastboot-protocol
README.arm-caches
README.arm-relocation
README.arm64 doc: update README.arm64 2016-11-05 07:27:44 -04:00
README.armada-secureboot arm: mvebu: Implement secure boot 2017-02-01 09:04:18 +01:00
README.at91
README.atmel_mci avr32: Retire AVR32 for good 2017-07-06 16:17:19 -04:00
README.atmel_pmecc
README.autoboot
README.b4860qds
README.bedbug
README.bitbangMII
README.blackfin
README.bootmenu
README.boston boston: Introduce support for the MIPS Boston development board 2016-09-21 16:24:36 +02:00
README.bus_vcxk
README.cfi doc/README.cfi: Update code snippet, and add example. 2017-01-02 11:14:01 -05:00
README.chromium README: Add instructions for chain-loading U-Boot on jerry 2017-06-09 13:45:34 -06:00
README.clang
README.coccinelle Makefile: add coccicheck target 2017-11-20 20:18:38 -05:00
README.commands
README.commands.itest
README.commands.spl
README.console
README.davinci
README.davinci.nand_spl
README.dfutftp doc: license: Add license header to the README.dfutftp file 2017-08-21 11:31:11 +02:00
README.displaying-bmps
README.distro Remove config_distro_defaults.h 2018-02-23 21:44:22 -05:00
README.dns
README.drivers.eth
README.efi efi_loader: split README.efi into two separate documents 2018-02-10 00:24:00 +01:00
README.enetaddr env: Rename eth_getenv_enetaddr() to eth_env_get_enetaddr() 2017-08-16 08:30:44 -04:00
README.esbc_validate
README.ext4 ext4fs: Add ext4 extent tree cache 2020-01-12 21:59:54 +01:00
README.falcon cmd: spl: provide address and size of prepared FDT in environment 2017-08-26 14:56:12 -04:00
README.fdt-control Allow boards to initialize the DT at runtime. 2017-05-09 20:35:06 -04:00
README.fdt-overlays doc: overlays: Tweak documentation regarding overlays 2017-09-15 05:27:49 -06:00
README.fec_mxc
README.fsl-clk doc: restore doc/README.fsl-clk 2017-06-29 21:30:16 -04:00
README.fsl-ddr
README.fsl-dpaa
README.fsl-esdhc mmc: fsl_esdhc: drop CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT 2017-07-12 09:44:22 +02:00
README.fsl-hwconfig
README.fsl-trustzone-components
README.fsl_iim
README.fuse
README.generic-board
README.generic_usb_ohci powerpc, 5xxx, 512x: remove support for mpc5xxx and mpc512x 2017-06-16 10:14:55 -04:00
README.gpt doc: remove duplicate text in README.gpt 2017-09-07 10:44:34 -04:00
README.hwconfig
README.i2c
README.iomux
README.iscsi efi_loader: add a README.iscsi describing booting via iSCSI 2018-01-28 21:37:13 +01:00
README.kconfig treewide: fix "followings" to "following" 2016-08-26 17:04:58 -04:00
README.kwbimage
README.link-local
README.log log: add category LOGC_EFI 2018-02-03 10:09:28 -07:00
README.lynxkdi
README.m68k m68k: doc: update outdated documentation 2017-11-06 09:59:02 -05:00
README.m54418twr m68k: Drop unreferenced CONFIG_* defines 2018-01-19 15:49:32 -05:00
README.malta
README.marubun-pcmcia
README.marvell arm64: mvebu: use single defconfig for Armada8K development boards 2017-07-12 06:57:55 +02:00
README.memory-test
README.menu
README.mips
README.mpc74xx
README.mpc83xx.ddrecc
README.mpc83xxads README: Drop CONFIG_MPC8349ADS 2016-10-06 20:40:51 -04:00
README.mpc85xx board_f: Rename initdram() to dram_init() 2017-04-13 09:40:57 -04:00
README.mpc85xx-sd-spi-boot powerpc: P2010: Drop configuration for P2010 2016-11-23 23:42:10 -08:00
README.mpc85xx-spin-table
README.mpc85xxcds
README.multi-dtb-fit spl: dm: Make it possible for the SPL to pick its own DTB from a FIT 2017-10-06 11:26:41 -04:00
README.mxc_ocotp
README.nand Convert CONFIG_BCH to Kconfig 2017-09-01 20:45:26 -04:00
README.nand-boot-ppc440
README.ne2000
README.nios2
README.nokia_rx51
README.nvme nvme: Adjust the 'nvme' command to use blk_common_cmd() 2017-08-28 07:17:15 -04:00
README.odroid
README.omap-ulpi-viewport
README.omap3
README.pblimage
README.plan9
README.power-framework
README.pxe pxe: Modify README to add the description about FIT image 2016-09-07 08:49:03 -04:00
README.qemu-arm ARM: Document AArch64 version of qemu-arm 2018-01-19 15:49:31 -05:00
README.qemu-mips
README.ramboot-ppc85xx powerpc: mpc85xx: Convert CONFIG_SYS_CCSRBAR_DEFAULT to Kconfig option 2016-12-02 08:52:34 -08:00
README.rmobile doc: rmobile: Update README 2017-10-04 08:50:43 +09:00
README.rockchip rockchip: rk3188: use boot0 hook to load up SPL in 2 steps 2017-11-21 23:57:22 +01:00
README.rockusb rockchip:usb: add a simple readme for rockusb 2018-01-10 11:11:06 +01:00
README.s5pc1xx
README.sata
README.sched
README.scrapyard avr32: Retire AVR32 for good 2017-07-06 16:17:19 -04:00
README.semihosting
README.serial_multi powerpc, 5xxx, 512x: remove support for mpc5xxx and mpc512x 2017-06-16 10:14:55 -04:00
README.sh
README.sh7752evb
README.sh7753evb
README.sha1
README.silent
README.socfpga ARM: socfpga: add fpga build and bsp handoff instructions to readme 2017-04-14 14:06:38 +02:00
README.spear
README.splashprepare splash: add support for loading splash from a FIT image 2017-01-13 17:40:38 +01:00
README.srio-pcie-boot-corenet
README.standalone riscv: doc: Add relative doc to describe RISC-V 2018-01-12 08:05:12 -05:00
README.t1040-l2switch
README.ti-secure doc: Updates info on using Keystone2 secure devices 2017-04-08 21:35:06 -04:00
README.trace
README.u-boot_on_efi efi_loader: split README.efi into two separate documents 2018-02-10 00:24:00 +01:00
README.ubi
README.ubispl
README.ublimage
README.unaligned-memory-access.txt
README.uniphier doc: fix incorrect usage of DT node unit address 2018-01-15 18:29:21 -07:00
README.update
README.usb usb: doc: update README.usb for new config options 2017-09-08 10:23:01 -04:00
README.vf610
README.video
README.vxworks
README.watchdog doc: watchdog: Remove Blackfin related documentation entry 2018-02-07 22:06:19 -05:00
README.x86 x86: provide CONFIG_BUILD_ROM 2017-10-19 11:37:51 +08:00
README.xtensa xtensa: add support for the xtensa processor architecture [1/2] 2016-08-15 18:46:38 -04:00
README.zfs
README.zynq doc: zynq: Describe status of zc770-xm011 2018-01-30 14:28:19 +01:00
bounces patman: add support for omitting bouncing addresses 2017-09-11 21:43:58 -06:00
feature-removal-schedule.txt
git-mailrc MAINTAINERS: Update maintainer for USB xHCI 2017-11-26 02:22:36 +01:00
kwboot.1
mkimage.1 mkimage: Allow including a ramdisk in FIT auto mode 2016-11-06 07:33:42 -05:00

README.zynq

#
# Xilinx ZYNQ U-Boot
#
# (C) Copyright 2013 Xilinx, Inc.
#
# SPDX-License-Identifier:	GPL-2.0+
#

1. About this

This document describes the information about Xilinx Zynq U-Boot -
like supported boards, ML status and TODO list.

2. Zynq boards

Xilinx Zynq-7000 All Programmable SoCs enable extensive system level
differentiation, integration, and flexibility through hardware, software,
and I/O programmability.

* zc702 (single qspi, gem0, mmc) [1]
* zc706 (dual parallel qspi, gem0, mmc) [2]
* zed (single qspi, gem0, mmc) [3]
* microzed (single qspi, gem0, mmc) [4]
* zc770
  - zc770-xm010 (single qspi, gem0, mmc)
  - zc770-xm011 (8 or 16 bit nand)
  - zc770-xm012 (nor)
  - zc770-xm013 (dual parallel qspi, gem1)

3. Building

 ex. configure and build for zc702 board
   $ make zynq_zc702_config
   $ make

4. Bootmode

Zynq has a facility to read the bootmode from the slcr bootmode register
once user is setting through jumpers on the board - see page no:1546 on [5]

All possible bootmode values are defined in Table 6-2:Boot_Mode MIO Pins
on [5].

board_late_init() will read the bootmode values using slcr bootmode register
at runtime and assign the modeboot variable to specific bootmode string which
is intern used in autoboot.

SLCR bootmode register Bit[3:0] values
#define ZYNQ_BM_NOR		0x02
#define ZYNQ_BM_SD		0x05
#define ZYNQ_BM_JTAG		0x0

"modeboot" variable can assign any of "norboot", "sdboot" or "jtagboot"
bootmode strings at runtime.

5. Mainline status

- Added basic board configurations support.
- Added zynq u-boot bsp code - arch/arm/cpu/armv7/zynq
- Added zynq boards named - zc70x, zed, microzed, zc770_xm010/xm011/xm012/xm013
- Added zynq drivers:
  serial - drivers/serial/serial_zynq.c
  net - drivers/net/zynq_gem.c
  mmc - drivers/mmc/zynq_sdhci.c
  spi - drivers/spi/zynq_spi.c
  qspi - drivers/spi/zynq_qspi.c
  i2c - drivers/i2c/zynq_i2c.c
  nand - drivers/mtd/nand/zynq_nand.c
- Done proper cleanups on board configurations
- Added basic FDT support for zynq boards
- d-cache support for zynq_gem.c

6. TODO

- Add FDT support on individual drivers

[1] http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC702-G.htm
[2] http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm
[3] http://zedboard.org/product/zedboard
[4] http://zedboard.org/product/microzed
[5] http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf

--
Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
Sun Dec 15 14:52:41 IST 2013