diff --git a/docs/user-guide.md b/docs/user-guide.md index 00feacc5d5fea73cdc5d1da9b53eeb22f6664813..c1cadbbe8cbd9a7f359e1d74811b9a45a34cbe4c 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -62,7 +62,7 @@ The following tools are required to use the ARM Trusted Firmware: * `libssl-dev` package to build the certificate generation tool when support for Trusted Board Boot is needed. -* (Optional) For debugging, ARM [Development Studio 5 (DS-5)][DS-5] v5.20. +* (Optional) For debugging, ARM [Development Studio 5 (DS-5)][DS-5] v5.21. 4. Building the Trusted Firmware @@ -546,7 +546,7 @@ Juno platform, follow these steps: cd edk2 git remote add -f --tags arm-software https://github.com/ARM-software/edk2.git - git checkout --detach v2.1-rc0 + git checkout --detach v3.0 2. Copy build config templates to local workspace @@ -625,7 +625,7 @@ Preparing a Linux kernel for use on the FVPs can be done as follows cd linux git remote add -f --tags arm-software https://github.com/ARM-software/linux.git - git checkout --detach 1.3-Juno + git checkout --detach 1.6-Juno 2. Build with the Linaro GCC tools. @@ -700,8 +700,8 @@ To prepare a VirtioBlock file-system, do the following: NOTE: The unpacked disk image grows to 3 GiB in size. - wget http://releases.linaro.org/14.12/openembedded/aarch64/vexpress64-openembedded_lamp-armv8-gcc-4.9_20141211-701.img.gz - gunzip vexpress64-openembedded_lamp-armv8-gcc-4.9_20141211-701.img.gz + wget http://releases.linaro.org/15.03/members/arm/openembedded/aarch64/vexpress64-openembedded_lamp-armv8-gcc-4.9_20150324-715.img.gz + gunzip vexpress64-openembedded_lamp-armv8-gcc-4.9_20150324-715.img.gz 2. Make sure the Linux kernel has Virtio support enabled using `make ARCH=arm64 menuconfig`. @@ -763,14 +763,14 @@ To prepare a RAM-disk root file-system, do the following: 1. Download the file-system image: - wget http://releases.linaro.org/14.12/openembedded/aarch64/linaro-image-lamp-genericarmv8-20141212-729.rootfs.tar.gz + wget http://releases.linaro.org/15.03/members/arm/openembedded/aarch64/linaro-image-lamp-genericarmv8-20150323-747.rootfs.tar.gz 2. Modify the Linaro image: # Prepare for use as RAM-disk. Normally use MMC, NFS or VirtioBlock. # Be careful, otherwise you could damage your host file-system. mkdir tmp; cd tmp - sudo sh -c "zcat ../linaro-image-lamp-genericarmv8-20141212-729.rootfs.tar.gz | cpio -id" + sudo sh -c "zcat ../linaro-image-lamp-genericarmv8-20150323-747.rootfs.tar.gz | cpio -id" sudo ln -s sbin/init . sudo sh -c "echo 'devtmpfs /dev devtmpfs mode=0755,nosuid 0 0' >> etc/fstab" sudo sh -c "find . | cpio --quiet -H newc -o | gzip -3 -n > ../filesystem.cpio.gz" @@ -1068,10 +1068,19 @@ have an earlier version installed or are unsure which version is installed, follow the recovery image update instructions in the [Juno Software Guide] on the [ARM Connected Community] website. -The Juno platform requires a BL3-0 image to boot up. This image contains the -runtime firmware that runs on the SCP (System Control Processor). This image is -embedded within the [Juno Board Recovery Image] but can also be -[downloaded directly][Juno SCP Firmware]. +Note that you must use the board recovery image provided in the Juno R1 Initial +Alpha release, even for Juno R0. This is because the Trusted Firmware now +supports the new [SCPI v1.0 final protocol][Juno SCP Protocols v1.0] +exclusively, which is not compatible with the SCP firmware provided in the +latest Juno R0 release. Although the Juno R1 Initial Alpha release is generally +not recommended for use with Juno R0 boards, it is suitable for Trusted Firmware +development. + +The Juno platform requires a BL0 and a BL3-0 image to boot up. The BL0 image +contains the ROM firmware that runs on the SCP (System Control Processor), +whereas the BL3-0 image contains the SCP Runtime firmware. Both images are +embedded within the [Juno Board Recovery Image] but they can also be downloaded +directly: [Juno SCP ROM Firmware] and [Juno SCP Runtime Firmware]. Rebuild the Trusted Firmware specifying the BL3-0 image. Refer to the section "Building the Trusted Firmware". Alternatively, the FIP image can be updated @@ -1083,7 +1092,7 @@ manually with the BL3-0 image: Juno's device tree blob is built along with the kernel. It is located in: - /arch/arm64/boot/dts/juno.dtb + /arch/arm64/boot/dts/arm/juno.dtb ### Other Juno software information @@ -1104,8 +1113,10 @@ _Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved._ [ARM FVP website]: http://www.arm.com/fvp [ARM Connected Community]: http://community.arm.com [Juno Software Guide]: http://community.arm.com/docs/DOC-8396 -[Juno Board Recovery Image]: http://community.arm.com/servlet/JiveServlet/download/9427-1-15432/board_recovery_image_0.10.1.zip -[Juno SCP Firmware]: http://community.arm.com/servlet/JiveServlet/download/9427-1-15422/bl30.bin.zip +[Juno Board Recovery Image]: http://community.arm.com/servlet/JiveServlet/download/10177-1-18236/board_recovery_image_0.11.3.zip +[Juno SCP ROM Firmware]: http://community.arm.com/servlet/JiveServlet/download/10177-1-18187/bl0.bin.zip +[Juno SCP Runtime Firmware]: http://community.arm.com/servlet/JiveServlet/download/10177-1-18193/bl30.bin.zip +[Juno SCP Protocols v1.0]: http://community.arm.com/servlet/JiveServlet/download/8401-40-18262/DUI0922A_scp_message_interface.pdf [Linaro Toolchain]: http://releases.linaro.org/14.07/components/toolchain/binaries/ [EDK2]: http://github.com/tianocore/edk2 [DS-5]: http://www.arm.com/products/tools/software-tools/ds-5/index.php diff --git a/fdts/fvp-base-gicv2-psci.dtb b/fdts/fvp-base-gicv2-psci.dtb index b8a31ce33beabb6165c45eaa796d1de07131986f..89318c1874f35951c1ee93c7ca6c219808045294 100644 Binary files a/fdts/fvp-base-gicv2-psci.dtb and b/fdts/fvp-base-gicv2-psci.dtb differ diff --git a/fdts/fvp-base-gicv2-psci.dts b/fdts/fvp-base-gicv2-psci.dts index c1c9efbf15d0c3399b5ef4300b77b55a385609aa..1d26541c3a060b85c4e796a48ca50389e20a6a1d 100644 --- a/fdts/fvp-base-gicv2-psci.dts +++ b/fdts/fvp-base-gicv2-psci.dts @@ -102,7 +102,8 @@ CPU_SLEEP_0: cpu-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x0010000>; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; entry-latency-us = <40>; exit-latency-us = <100>; min-residency-us = <150>; @@ -110,7 +111,8 @@ CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x1010000>; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; entry-latency-us = <500>; exit-latency-us = <1000>; min-residency-us = <2500>; diff --git a/fdts/fvp-base-gicv2legacy-psci.dtb b/fdts/fvp-base-gicv2legacy-psci.dtb index 4270623b56a3c3eaf132bea4ea3cb5b91af71465..0d176201d72dcaf4d40573220e9750ecb03dac0e 100644 Binary files a/fdts/fvp-base-gicv2legacy-psci.dtb and b/fdts/fvp-base-gicv2legacy-psci.dtb differ diff --git a/fdts/fvp-base-gicv2legacy-psci.dts b/fdts/fvp-base-gicv2legacy-psci.dts index 7bd5ea268199aaa16849e0e1ca480026ed3c22a4..58d31593289bb040025f8506b644396d101de7ab 100644 --- a/fdts/fvp-base-gicv2legacy-psci.dts +++ b/fdts/fvp-base-gicv2legacy-psci.dts @@ -102,7 +102,8 @@ CPU_SLEEP_0: cpu-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x0010000>; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; entry-latency-us = <40>; exit-latency-us = <100>; min-residency-us = <150>; @@ -110,7 +111,8 @@ CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x1010000>; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; entry-latency-us = <500>; exit-latency-us = <1000>; min-residency-us = <2500>; diff --git a/fdts/fvp-base-gicv3-psci.dtb b/fdts/fvp-base-gicv3-psci.dtb index 27c3f9353ba97a34e087cb1a299ceaf62501b84b..f1dc75eeb8b7cac39a82f0f5db655473a4dbd501 100644 Binary files a/fdts/fvp-base-gicv3-psci.dtb and b/fdts/fvp-base-gicv3-psci.dtb differ diff --git a/fdts/fvp-base-gicv3-psci.dts b/fdts/fvp-base-gicv3-psci.dts index 32e577ada7c8fb3a9a5360034b57d3285437c8dd..da090f5c32ead1216d3dfb482bbea564ca2fe5a7 100644 --- a/fdts/fvp-base-gicv3-psci.dts +++ b/fdts/fvp-base-gicv3-psci.dts @@ -100,7 +100,8 @@ CPU_SLEEP_0: cpu-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x0010000>; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; entry-latency-us = <40>; exit-latency-us = <100>; min-residency-us = <150>; @@ -108,7 +109,8 @@ CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x1010000>; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; entry-latency-us = <500>; exit-latency-us = <1000>; min-residency-us = <2500>; diff --git a/fdts/fvp-foundation-gicv2-psci.dtb b/fdts/fvp-foundation-gicv2-psci.dtb index 5b92e5ee8288926bd72503e35def261ed4b3f189..e45791813acf9562a198dd8ba4fc24c772867e92 100644 Binary files a/fdts/fvp-foundation-gicv2-psci.dtb and b/fdts/fvp-foundation-gicv2-psci.dtb differ diff --git a/fdts/fvp-foundation-gicv2-psci.dts b/fdts/fvp-foundation-gicv2-psci.dts index c04d535f29c3c142178d9fe9e14ca64a4a4beda7..5f93daa278082170f616df6c02c7b56a3a9025f8 100644 --- a/fdts/fvp-foundation-gicv2-psci.dts +++ b/fdts/fvp-foundation-gicv2-psci.dts @@ -87,7 +87,8 @@ CPU_SLEEP_0: cpu-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x0010000>; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; entry-latency-us = <40>; exit-latency-us = <100>; min-residency-us = <150>; @@ -95,7 +96,8 @@ CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x1010000>; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; entry-latency-us = <500>; exit-latency-us = <1000>; min-residency-us = <2500>; diff --git a/fdts/fvp-foundation-gicv2legacy-psci.dtb b/fdts/fvp-foundation-gicv2legacy-psci.dtb index 71f6ae2c9cfc907e6fd60d715ca0e7c6d5533213..ac7555d91ec1dc00d75f0fe190746308a8cc9635 100644 Binary files a/fdts/fvp-foundation-gicv2legacy-psci.dtb and b/fdts/fvp-foundation-gicv2legacy-psci.dtb differ diff --git a/fdts/fvp-foundation-gicv2legacy-psci.dts b/fdts/fvp-foundation-gicv2legacy-psci.dts index 8dba04c1e2b0b38082c94db2b77284c8a2711fc0..4238b3307401abd4c94dcc0fd3039b6d39abcd80 100644 --- a/fdts/fvp-foundation-gicv2legacy-psci.dts +++ b/fdts/fvp-foundation-gicv2legacy-psci.dts @@ -52,7 +52,7 @@ }; psci { - compatible = "arm,psci"; + compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; method = "smc"; cpu_suspend = <0xc4000001>; cpu_off = <0x84000002>; @@ -83,11 +83,12 @@ }; idle-states { - entry-method = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; + entry-method = "arm,psci"; CPU_SLEEP_0: cpu-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x0010000>; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; entry-latency-us = <40>; exit-latency-us = <100>; min-residency-us = <150>; @@ -95,7 +96,8 @@ CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x1010000>; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; entry-latency-us = <500>; exit-latency-us = <1000>; min-residency-us = <2500>; diff --git a/fdts/fvp-foundation-gicv3-psci.dtb b/fdts/fvp-foundation-gicv3-psci.dtb index d7d9e1412ca6ef9c100db1682a1999a1309c9ec2..f3e0c5d3aa0b47bdb278d044f3f010b382336eab 100644 Binary files a/fdts/fvp-foundation-gicv3-psci.dtb and b/fdts/fvp-foundation-gicv3-psci.dtb differ diff --git a/fdts/fvp-foundation-gicv3-psci.dts b/fdts/fvp-foundation-gicv3-psci.dts index 48a1afc061410f7c1aec14d62cc66c959e803566..daad1fbcee8c3be3ea4549eeacd7a523c9d8fdf5 100644 --- a/fdts/fvp-foundation-gicv3-psci.dts +++ b/fdts/fvp-foundation-gicv3-psci.dts @@ -85,7 +85,8 @@ CPU_SLEEP_0: cpu-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x0010000>; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; entry-latency-us = <40>; exit-latency-us = <100>; min-residency-us = <150>; @@ -93,7 +94,8 @@ CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "arm,idle-state"; - entry-method-param = <0x1010000>; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; entry-latency-us = <500>; exit-latency-us = <1000>; min-residency-us = <2500>;