RFC arm: add full relocation / cache support
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest19 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/19 | arm: get rid of bi_envarch/ common/ | +0 | 0 replies | |
| 2/19 | relocation: fixup cmdtablecommon/ include/ | +36 | 1 reply | |
| 2/19 | relocation: fixup cmdtable | +0 | 2 replies | |
| 3/19 | common: move TOTAL_MALLOC_LEN to include/common.harch/ include/ | +9 | 0 replies | |
| 4/19 | arm, arm1136, qong: add relocation supportarch/ arch/ arch/ +13 more | +519 | 0 replies | |
| 5/19 | arm, arm1136: all arm1136 boards converted to new relocationboard/ board/ board/ +21 more | +194 | 0 replies | |
| 6/19 | arm, bdinfo: print some more infos.common/ | +4 | 0 replies | |
| 7/19 | arm, relocation: add documentationdoc/ | +315 | 0 replies | |
| 8/19 | i2c: fix command usage helpcommon/ | +5 | 1 reply | |
| 8/19 | i2c: fix command usage help | +0 | 1 reply | |
| 9/19 | i2c, omap24xx: only set bus_initialized, if uboot is relocateddrivers/ | +3 | 0 replies | |
| 10/19 | part: fix relocation fixupdisk/ | +9 | 0 replies | |
| 11/19 | cortexa8, beagle: add relocation supportarch/ arch/ arch/ +2 more | +153 | 0 replies | |
| 12/19 | arm, cortexa8: all arm_cortexa8 based boards convertedarch/ arch/ board/ +13 more | +104 | 0 replies | |
| 13/19 | arm926, tx25: add relocationarch/ arch/ board/ +3 more | +163 | 0 replies | |
| 14/19 | nand_fsl_nfc: get rid of local varnand_spl/ | +8 | 2 replies | |
| 14/19 | nand_fsl_nfc: get rid of local var | +0 | 0 replies | |
| 15/19 | arm, 926: convert all arm926ejs based boardarch/ board/ board/ +69 more | +452 | 0 replies | |
| 16/19 | arm926: flush cache for arm926arch/ | +6 | 0 replies | |
| 17/19 | arm cp15: setup mmu and enable dcachearch/ | +38 | 17 replies | |
| 17/19 | arm cp15: setup mmu and enable dcache | +0 | 1 reply | |
| 17/19 | arm cp15: setup mmu and enable dcache | +0 | 0 replies | |
| 18/19 | beagle, cache: activate cache commandarch/ arch/ arch/ +4 more | +130 | 2 replies | |
| 19/19 | arm1136, dcache: enable cache command for qong boardarch/ arch/ include/ | +7 | 0 replies |
Reviews trailers per patch
3 of 24 patches have a Reviewed-by or Acked-by.
| Patch | Scott Wood | Ben Gardiner |
|---|---|---|
| 1/19 | ||
| 2/19 | ||
| 2/19 | ||
| 3/19 | ||
| 4/19 | ||
| 5/19 | ||
| 6/19 | ||
| 7/19 | ||
| 8/19 | ||
| 8/19 | ||
| 9/19 | ||
| 10/19 | ||
| 11/19 | ||
| 12/19 | ||
| 13/19 | ||
| 14/19 | A-b A-b | |
| 14/19 | A-b A-b | |
| 15/19 | ||
| 16/19 | ||
| 17/19 | ||
| 17/19 | ||
| 17/19 | ||
| 18/19 | R-b | |
| 19/19 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [U-Boot] [RFC][PATCH 00/19] arm: add full relocation / cache support
This patch series add full relocation and cache support for arm based boards. I did this for arm1136, arm_cortexa8 and arm926ejs based boards. As this change is not compatible to old code, before this can go to mainline *all* plattforms and boards have to be converted! As I don;t have access to all plattforms/ boards I need help here! Also I couldn;t test all boards, so please test and report, send bugfixes!
Relocation support:
changed arch/arm/lib/board.c to get in sync with arch/powerpc/lib/board.c maybe it is possible to merge them to one arch/generic/lib/board.c?
This approach is similiar to powerpc, so there is a need for an initial stack pointer addr defined through CONFIG_SYS_INIT_SP_ADDR. As I don;t know all architectures/boards, I set this value where I didn;t find such a stack, for example in the processor, to RAM, as RAM is actual setup in low_level_init.S. Please check this for boards where this is in RAM to find a "better" place.
Please also read doc/README.arm-relocation There is more info what is done, and maybe should be done.
Cache support:
I used the patches from Alessandro Rubini:
http://lists.denx.de/pipermail/u-boot/2010-January/067099.html
and rebased them to actual code. Also, in case of full relocation, the position of the TLB can not be set on compile time, instead it is calculated in board_init_f() and stored in gd. Also added support for arm_cortexa8 and arm1136.
As this is a RFC, this patch series is in a state where things *can* and *should* be discussed!
Also I think, it would be good to create an "arm-relocation.git" where patches (for example board maintainers bugfixes) for this change are collected.
I tested the patch series on the qong(arm1136), beagle(arm_cortexa8) tx25(arm926ejs) and magnesium(arm926ejs) boards. Relocation worked fine.
Cache results:
Test 1: Loading 127 MB of data from NAND flash into RAM:
Instr. Cache off on on
Data Cache off off on
--------------------------------------------------
QONG (ARM11) 177s 95s 43s = x 4.1
Beagle (Cortex A8) 116s 106s 30.3s = x 3.8
Test 2: uncompressing a gzipped image from RAM to RAM
(size compressed: 6.5 MiB, uncompressed: 35 MiB):
Instr. Cache off on on
Data Cache off off on
--------------------------------------------------
QONG (ARM11) 1.54s 0.95s 0.18s = x 8.6
Beagle (Cortex A8) 1.84s 1.64s 0.12s = x 15.3
Heiko Schocher (19):
arm: get rid of bi_env
relocation: fixup cmdtable
common: move TOTAL_MALLOC_LEN to include/common.h arm, arm1136, qong: add relocation support
arm, arm1136: all arm1136 boards converted to new relocation arm, bdinfo: print some more infos.
arm, relocation: add documentation
i2c: fix command usage help
i2c, omap24xx: only set bus_initialized, if uboot is relocated
part: fix relocation fixup
cortex8, beagle: add relocation support
arm, cortexa8: all arm_cortexa8 based boards converted arm926, tx25: add relocation
nand_fsl_nfc: get rid of local var
arm, 926: convert all arm926ejs based board
arm926: flush cache for arm926
arm cp15: setup mmu and enable dcache
beagle, cache: activate cache command
arm1136, dcache: enable cache command for qong board
arch/arm/config.mk | 3 + arch/arm/cpu/arm1136/start.S | 181 +++++++++---- arch/arm/cpu/arm1136/u-boot.lds | 14 +- arch/arm/cpu/arm926ejs/orion5x/dram.c | 12 +- arch/arm/cpu/arm926ejs/start.S | 165 ++++++++---- arch/arm/cpu/arm926ejs/u-boot.lds | 14 +- arch/arm/cpu/armv7/mx51/u-boot.lds | 14 +- arch/arm/cpu/armv7/omap3/cache.S | 82 ++++++ arch/arm/cpu/armv7/omap3/emif4.c | 14 +- arch/arm/cpu/armv7/omap3/sdrc.c | 14 +- arch/arm/cpu/armv7/start.S | 174 +++++++++---- arch/arm/cpu/armv7/u-boot.lds | 14 +- arch/arm/include/asm/config.h | 3 - arch/arm/include/asm/global_data.h | 9 + arch/arm/include/asm/u-boot-arm.h | 8 +- arch/arm/include/asm/u-boot.h | 1 - arch/arm/lib/board.c | 326 +++++++++++++++++++---- arch/arm/lib/cache-cp15.c | 55 ++++ arch/arm/lib/cache.c | 13 +- arch/arm/lib/interrupts.c | 15 +- arch/powerpc/lib/board.c | 10 - board/Marvell/guruplug/guruplug.c | 15 +- board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c | 12 +- board/Marvell/openrd_base/openrd_base.c | 11 +- board/Marvell/rd6281a/rd6281a.c | 15 +- board/Marvell/sheevaplug/sheevaplug.c | 15 +- board/apollon/apollon.c | 13 +- board/armltd/integrator/integrator.c | 14 +- board/armltd/integrator/lowlevel_init.S | 2 +- board/armltd/versatile/versatile.c | 10 + board/atmel/at91cap9adk/at91cap9adk.c | 11 +- board/atmel/at91sam9260ek/at91sam9260ek.c | 11 +- board/atmel/at91sam9261ek/at91sam9261ek.c | 11 +- board/atmel/at91sam9263ek/at91sam9263ek.c | 11 +- board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 11 +- board/atmel/at91sam9rlek/at91sam9rlek.c | 11 +- board/calao/sbc35_a9g20/sbc35_a9g20.c | 15 +- board/calao/tny_a9260/tny_a9260.c | 14 +- board/davedenx/qong/config.mk | 4 +- board/davedenx/qong/qong.c | 92 ++++--- board/davinci/common/misc.c | 12 +- board/esd/meesc/meesc.c | 13 +- board/esd/otc570/otc570.c | 13 +- board/eukrea/cpu9260/cpu9260.c | 15 +- board/freescale/mx31ads/config.mk | 2 +- board/freescale/mx31ads/mx31ads.c | 10 +- board/freescale/mx31ads/u-boot.lds | 14 +- board/freescale/mx31pdk/mx31pdk.c | 11 +- board/freescale/mx51evk/mx51evk.c | 14 +- board/imx31_phycore/config.mk | 2 +- board/imx31_phycore/imx31_phycore.c | 10 +- board/karo/tx25/config.mk | 4 +- board/karo/tx25/tx25.c | 11 +- board/keymile/km_arm/km_arm.c | 13 +- board/logicpd/imx27lite/config.mk | 2 +- board/logicpd/imx27lite/imx27lite.c | 15 +- board/logicpd/imx31_litekit/config.mk | 2 +- board/logicpd/imx31_litekit/imx31_litekit.c | 11 +- board/ronetix/pm9261/pm9261.c | 13 +- board/ronetix/pm9263/pm9263.c | 13 +- board/ronetix/pm9g45/pm9g45.c | 13 +- board/samsung/goni/goni.c | 11 +- board/samsung/smdkc100/smdkc100.c | 9 +- board/st/nhk8815/nhk8815.c | 11 +- board/ti/beagle/config.mk | 2 +- board/ti/omap1510inn/config.mk | 3 +- board/ti/omap1510inn/omap1510innovator.c | 13 +- board/ti/omap1610inn/config.mk | 3 +- board/ti/omap1610inn/omap1610innovator.c | 12 +- board/ti/omap2420h4/config.mk | 6 +- board/ti/omap2420h4/omap2420h4.c | 18 ++- board/ti/omap5912osk/omap5912osk.c | 12 +- board/ti/omap730p2/omap730p2.c | 12 +- common/cmd_bdinfo.c | 10 +- common/cmd_bmp.c | 6 + common/cmd_i2c.c | 11 + common/command.c | 33 +++ disk/part.c | 11 +- doc/README.arm-relocation | 315 ++++++++++++++++++++++ drivers/i2c/omap24xx_i2c.c | 4 +- include/command.h | 3 + include/common.h | 9 + include/configs/am3517_evm.h | 5 + include/configs/apollon.h | 7 + include/configs/at91cap9adk.h | 4 + include/configs/at91sam9260ek.h | 4 + include/configs/at91sam9261ek.h | 4 + include/configs/at91sam9263ek.h | 4 + include/configs/at91sam9m10g45ek.h | 4 + include/configs/at91sam9rlek.h | 4 + include/configs/cpu9260.h | 4 + include/configs/da830evm.h | 5 + include/configs/da850evm.h | 4 + include/configs/davinci_dm355evm.h | 4 + include/configs/davinci_dm355leopard.h | 4 + include/configs/davinci_dm365evm.h | 4 + include/configs/davinci_dm6467evm.h | 4 + include/configs/davinci_dvevm.h | 6 + include/configs/davinci_schmoogie.h | 5 + include/configs/davinci_sffsdr.h | 5 + include/configs/davinci_sonata.h | 6 + include/configs/devkit8000.h | 5 + include/configs/edminiv2.h | 4 + include/configs/guruplug.h | 4 + include/configs/imx27lite-common.h | 4 + include/configs/imx31_litekit.h | 7 + include/configs/imx31_phycore.h | 9 + include/configs/integratorcp.h | 6 + include/configs/km_arm.h | 4 + include/configs/meesc.h | 4 + include/configs/mv88f6281gtw_ge.h | 4 + include/configs/mx31ads.h | 7 + include/configs/mx31pdk.h | 7 + include/configs/mx51evk.h | 5 + include/configs/nhk8815.h | 4 + include/configs/ns9750dev.h | 4 + include/configs/omap1610h2.h | 4 + include/configs/omap1610inn.h | 4 + include/configs/omap2420h4.h | 7 + include/configs/omap3_beagle.h | 5 + include/configs/omap3_evm.h | 5 + include/configs/omap3_overo.h | 5 + include/configs/omap3_pandora.h | 5 + include/configs/omap3_sdp3430.h | 5 + include/configs/omap3_zoom1.h | 5 + include/configs/omap3_zoom2.h | 5 + include/configs/omap5912osk.h | 4 + include/configs/omap730p2.h | 4 + include/configs/openrd_base.h | 4 + include/configs/otc570.h | 4 + include/configs/pm9261.h | 4 + include/configs/pm9263.h | 4 + include/configs/pm9g45.h | 4 + include/configs/qong.h | 10 + include/configs/rd6281a.h | 4 + include/configs/s5p_goni.h | 4 + include/configs/sbc35_a9g20.h | 4 + include/configs/sheevaplug.h | 4 + include/configs/smdkc100.h | 4 + include/configs/tny_a9260.h | 4 + include/configs/tx25.h | 12 +- include/configs/versatile.h | 4 + nand_spl/board/freescale/mx31pdk/u-boot.lds | 14 +- nand_spl/board/karo/tx25/u-boot.lds | 14 +- nand_spl/nand_boot.c | 5 + nand_spl/nand_boot_fsl_nfc.c | 19 +- onenand_ipl/board/apollon/apollon.c | 23 ++ onenand_ipl/board/apollon/u-boot.onenand.lds | 15 +- 148 files changed, 2143 insertions(+), 406 deletions(-) create mode 100644 doc/README.arm-relocation
Signature · 2 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany