diff --git a/docs/user-guide.md b/docs/user-guide.md index 00feacc..c1cadbb 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -62,7 +62,7 @@ * `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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ [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 b8a31ce..89318c1 100644 --- a/fdts/fvp-base-gicv2-psci.dtb +++ b/fdts/fvp-base-gicv2-psci.dtb Binary files differ diff --git a/fdts/fvp-base-gicv2-psci.dts b/fdts/fvp-base-gicv2-psci.dts index c1c9efb..1d26541 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 4270623..0d17620 100644 --- a/fdts/fvp-base-gicv2legacy-psci.dtb +++ b/fdts/fvp-base-gicv2legacy-psci.dtb Binary files differ diff --git a/fdts/fvp-base-gicv2legacy-psci.dts b/fdts/fvp-base-gicv2legacy-psci.dts index 7bd5ea2..58d3159 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 27c3f93..f1dc75e 100644 --- a/fdts/fvp-base-gicv3-psci.dtb +++ b/fdts/fvp-base-gicv3-psci.dtb Binary files differ diff --git a/fdts/fvp-base-gicv3-psci.dts b/fdts/fvp-base-gicv3-psci.dts index 32e577a..da090f5 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 5b92e5e..e457918 100644 --- a/fdts/fvp-foundation-gicv2-psci.dtb +++ b/fdts/fvp-foundation-gicv2-psci.dtb Binary files differ diff --git a/fdts/fvp-foundation-gicv2-psci.dts b/fdts/fvp-foundation-gicv2-psci.dts index c04d535..5f93daa 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 71f6ae2..ac7555d 100644 --- a/fdts/fvp-foundation-gicv2legacy-psci.dtb +++ b/fdts/fvp-foundation-gicv2legacy-psci.dtb Binary files differ diff --git a/fdts/fvp-foundation-gicv2legacy-psci.dts b/fdts/fvp-foundation-gicv2legacy-psci.dts index 8dba04c..4238b33 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 d7d9e14..f3e0c5d 100644 --- a/fdts/fvp-foundation-gicv3-psci.dtb +++ b/fdts/fvp-foundation-gicv3-psci.dtb Binary files differ diff --git a/fdts/fvp-foundation-gicv3-psci.dts b/fdts/fvp-foundation-gicv3-psci.dts index 48a1afc..daad1fb 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>;