From 21a3973de044a640861cee92265be9191a76a462 Mon Sep 17 00:00:00 2001 From: Soby Mathew Date: Wed, 13 Jan 2016 17:06:00 +0000 Subject: [PATCH 1/2] Remove support for legacy VE memory map in FVP This patch removes support for legacy Versatile Express memory map for the GIC peripheral in the FVP platform. The user guide is also updated for the same. Change-Id: Ib8cfb819083aca359e5b46b5757cb56cb0ea6533 --- docs/user-guide.md | 104 +------ fdts/fvp-base-gicv2legacy-psci.dtb | Bin 10368 -> 0 bytes fdts/fvp-base-gicv2legacy-psci.dts | 331 ----------------------- fdts/fvp-foundation-gicv2legacy-psci.dtb | Bin 7673 -> 0 bytes fdts/fvp-foundation-gicv2legacy-psci.dts | 257 ------------------ plat/arm/board/fvp/fvp_common.c | 25 +- plat/arm/common/arm_gicv2.c | 9 +- plat/arm/common/arm_gicv3.c | 6 +- plat/arm/common/arm_gicv3_legacy.c | 2 +- 9 files changed, 16 insertions(+), 718 deletions(-) delete mode 100644 fdts/fvp-base-gicv2legacy-psci.dtb delete mode 100644 fdts/fvp-base-gicv2legacy-psci.dts delete mode 100644 fdts/fvp-foundation-gicv2legacy-psci.dtb delete mode 100644 fdts/fvp-foundation-gicv2legacy-psci.dts diff --git a/docs/user-guide.md b/docs/user-guide.md index 03310c35c..eb9771121 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -482,11 +482,10 @@ map is explained in the [Firmware Design]. * `FVP_USE_GIC_DRIVER` : Selects the GIC driver to be built. Options: - `FVP_GICV2` : The GICv2 only driver is selected - `FVP_GICV3` : The GICv3 only driver is selected (default option) - - `FVP_GICV3_LEGACY`: The Legacy GICv3 driver is selected (deprecated). - - Note that if the FVP is configured for legacy VE memory map, then ARM - Trusted Firmware must be compiled with GICv2 only driver using - `FVP_USE_GIC_DRIVER=FVP_GICV2` build option. + - `FVP_GICV3_LEGACY`: The Legacy GICv3 driver is selected (deprecated) + Note: If Trusted Firmware is compiled with this option on FVPs with + GICv3 hardware, then it configures the hardware to run in GICv2 + emulation mode * `FVP_CLUSTER_COUNT` : Configures the cluster count to be used to build the topology tree within Trusted Firmware. By default the @@ -1017,10 +1016,6 @@ all FDTs are available from there. (Default) For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base memory map configuration. -* `fvp-base-gicv2legacy-psci.dtb` - - For use with AEMv8 Base FVP with legacy VE GIC memory map configuration. - * `fvp-base-gicv3-psci.dtb` For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base memory map @@ -1030,10 +1025,6 @@ all FDTs are available from there. (Default) For use with Foundation FVP with Base memory map configuration. -* `fvp-foundation-gicv2legacy-psci.dtb` - - For use with Foundation FVP with legacy VE GIC memory map configuration. - * `fvp-foundation-gicv3-psci.dtb` For use with Foundation FVP with Base memory map configuration and Linux @@ -1056,10 +1047,13 @@ The following `Foundation_Platform` parameters should be used to boot Linux with --block-device="/" Notes: - * BL1 is loaded at the start of the Trusted ROM. * The Firmware Image Package is loaded at the start of NOR FLASH0. * The Linux kernel image and device tree are loaded in DRAM. +* The default use-case for the Foundation FVP is to use the `--gicv3` option + and enable the GICv3 device in the model. Note that without this option, + the Foundation FVP defaults to legacy (Versatile Express) memory map which + is not supported by ARM Trusted Firmware. ### Running on the AEMv8 Base FVP with reset to BL1 entrypoint @@ -1164,88 +1158,6 @@ boot Linux with 8 CPUs using the ARM Trusted Firmware. --data cluster0.cpu0="/"@0x80080000 \ -C bp.virtioblockdevice.image_path="/" -### Configuring the GICv2 memory map - -The Base FVP models support GICv2 with the default model parameters at the -following addresses. The Foundation FVP also supports these addresses when -configured for GICv3 in GICv2 emulation mode. - - GICv2 Distributor Interface 0x2f000000 - GICv2 CPU Interface 0x2c000000 - GICv2 Virtual CPU Interface 0x2c010000 - GICv2 Hypervisor Interface 0x2c02f000 - -The AEMv8 Base FVP can be configured to support GICv2 at addresses -corresponding to the legacy (Versatile Express) memory map as follows. These are -the default addresses when using the Foundation FVP in GICv2 mode. - - GICv2 Distributor Interface 0x2c001000 - GICv2 CPU Interface 0x2c002000 - GICv2 Virtual CPU Interface 0x2c004000 - GICv2 Hypervisor Interface 0x2c006000 - -The choice of memory map is reflected in the build variant field (bits[15:12]) -in the `SYS_ID` register (Offset `0x0`) in the Versatile Express System -registers memory map (`0x1c010000`). - -* `SYS_ID.Build[15:12]` - - `0x1` corresponds to the presence of the Base GIC memory map. This is the - default value on the Base FVPs. - -* `SYS_ID.Build[15:12]` - - `0x0` corresponds to the presence of the Legacy VE GIC memory map. This is - the default value on the Foundation FVP. - -This register can be configured as described in the following sections. - -NOTE: If the legacy VE GIC memory map is used, then Trusted Firmware must be -compiled with the GICv2 only driver, and the corresponding FDT and BL33 images -should be used. - -#### Configuring AEMv8 Foundation FVP GIC for legacy VE memory map - -The following parameters configure the Foundation FVP to use GICv2 with the -legacy VE memory map: - - /Foundation_Platform \ - --cores=4 \ - --secure-memory \ - --visualization \ - --no-gicv3 \ - --data="/"@0x0 \ - --data="/"@0x8000000 \ - --block-device="/" - -Explicit configuration of the `SYS_ID` register is not required. - -#### Configuring AEMv8 Base FVP GIC for legacy VE memory map - -The following parameters configure the AEMv8 Base FVP to use GICv2 with the -legacy VE memory map. They must added to the parameters described in the -"Running on the AEMv8 Base FVP" section above: - - -C cluster0.gic.GICD-offset=0x1000 \ - -C cluster0.gic.GICC-offset=0x2000 \ - -C cluster0.gic.GICH-offset=0x4000 \ - -C cluster0.gic.GICH-other-CPU-offset=0x5000 \ - -C cluster0.gic.GICV-offset=0x6000 \ - -C cluster0.gic.PERIPH-size=0x8000 \ - -C cluster1.gic.GICD-offset=0x1000 \ - -C cluster1.gic.GICC-offset=0x2000 \ - -C cluster1.gic.GICH-offset=0x4000 \ - -C cluster1.gic.GICH-other-CPU-offset=0x5000 \ - -C cluster1.gic.GICV-offset=0x6000 \ - -C cluster1.gic.PERIPH-size=0x8000 \ - -C gic_distributor.GICD-alias=0x2c001000 \ - -C gicv3.gicv2-only=1 \ - -C bp.variant=0x0 - -The `bp.variant` parameter corresponds to the build variant field of the -`SYS_ID` register. Setting this to `0x0` allows the ARM Trusted Firmware to -detect the legacy VE memory map while configuring the GIC. - 10. Running the software on Juno --------------------------------- diff --git a/fdts/fvp-base-gicv2legacy-psci.dtb b/fdts/fvp-base-gicv2legacy-psci.dtb deleted file mode 100644 index 4c6f37a62c8c3e689718afd66015ec57fe99216c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10368 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 W%tTy*Lt4wkgApcPR8*#06y|?aF6D** diff --git a/fdts/fvp-base-gicv2legacy-psci.dts b/fdts/fvp-base-gicv2legacy-psci.dts deleted file mode 100644 index 5a7ce2f1d..000000000 --- a/fdts/fvp-base-gicv2legacy-psci.dts +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of ARM nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/dts-v1/; - -/memreserve/ 0x80000000 0x00010000; - -/ { -}; - -/ { - model = "FVP Base"; - compatible = "arm,vfp-base", "arm,vexpress"; - interrupt-parent = <&gic>; - #address-cells = <2>; - #size-cells = <2>; - - chosen { }; - - aliases { - serial0 = &v2m_serial0; - serial1 = &v2m_serial1; - serial2 = &v2m_serial2; - serial3 = &v2m_serial3; - }; - - psci { - compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; - method = "smc"; - cpu_suspend = <0xc4000001>; - cpu_off = <0x84000002>; - cpu_on = <0xc4000003>; - sys_poweroff = <0x84000008>; - sys_reset = <0x84000009>; - }; - - cpus { - #address-cells = <2>; - #size-cells = <0>; - - cpu-map { - cluster0 { - core0 { - cpu = <&CPU0>; - }; - core1 { - cpu = <&CPU1>; - }; - core2 { - cpu = <&CPU2>; - }; - core3 { - cpu = <&CPU3>; - }; - }; - - cluster1 { - core0 { - cpu = <&CPU4>; - }; - core1 { - cpu = <&CPU5>; - }; - core2 { - cpu = <&CPU6>; - }; - core3 { - cpu = <&CPU7>; - }; - }; - }; - - idle-states { - entry-method = "arm,psci"; - - CPU_SLEEP_0: cpu-sleep-0 { - compatible = "arm,idle-state"; - local-timer-stop; - arm,psci-suspend-param = <0x0010000>; - entry-latency-us = <40>; - exit-latency-us = <100>; - min-residency-us = <150>; - }; - - CLUSTER_SLEEP_0: cluster-sleep-0 { - compatible = "arm,idle-state"; - local-timer-stop; - arm,psci-suspend-param = <0x1010000>; - entry-latency-us = <500>; - exit-latency-us = <1000>; - min-residency-us = <2500>; - }; - }; - - CPU0:cpu@0 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x0>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU1:cpu@1 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x1>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU2:cpu@2 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x2>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU3:cpu@3 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x3>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU4:cpu@100 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x100>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU5:cpu@101 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x101>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU6:cpu@102 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x102>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU7:cpu@103 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x103>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - L2_0: l2-cache0 { - compatible = "cache"; - }; - }; - - memory@80000000 { - device_type = "memory"; - reg = <0x00000000 0x80000000 0 0x7F000000>, - <0x00000008 0x80000000 0 0x80000000>; - }; - - gic: interrupt-controller@2c001000 { - compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; - #interrupt-cells = <3>; - #address-cells = <0>; - interrupt-controller; - reg = <0x0 0x2c001000 0 0x1000>, - <0x0 0x2c002000 0 0x1000>, - <0x0 0x2c004000 0 0x2000>, - <0x0 0x2c006000 0 0x2000>; - interrupts = <1 9 0xf04>; - }; - - timer { - compatible = "arm,armv8-timer"; - interrupts = <1 13 0xff01>, - <1 14 0xff01>, - <1 11 0xff01>, - <1 10 0xff01>; - clock-frequency = <100000000>; - }; - - timer@2a810000 { - compatible = "arm,armv7-timer-mem"; - reg = <0x0 0x2a810000 0x0 0x10000>; - clock-frequency = <100000000>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - frame@2a830000 { - frame-number = <1>; - interrupts = <0 26 4>; - reg = <0x0 0x2a830000 0x0 0x10000>; - }; - }; - - pmu { - compatible = "arm,armv8-pmuv3"; - interrupts = <0 60 4>, - <0 61 4>, - <0 62 4>, - <0 63 4>; - }; - - smb { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 63>; - interrupt-map = <0 0 0 &gic 0 0 4>, - <0 0 1 &gic 0 1 4>, - <0 0 2 &gic 0 2 4>, - <0 0 3 &gic 0 3 4>, - <0 0 4 &gic 0 4 4>, - <0 0 5 &gic 0 5 4>, - <0 0 6 &gic 0 6 4>, - <0 0 7 &gic 0 7 4>, - <0 0 8 &gic 0 8 4>, - <0 0 9 &gic 0 9 4>, - <0 0 10 &gic 0 10 4>, - <0 0 11 &gic 0 11 4>, - <0 0 12 &gic 0 12 4>, - <0 0 13 &gic 0 13 4>, - <0 0 14 &gic 0 14 4>, - <0 0 15 &gic 0 15 4>, - <0 0 16 &gic 0 16 4>, - <0 0 17 &gic 0 17 4>, - <0 0 18 &gic 0 18 4>, - <0 0 19 &gic 0 19 4>, - <0 0 20 &gic 0 20 4>, - <0 0 21 &gic 0 21 4>, - <0 0 22 &gic 0 22 4>, - <0 0 23 &gic 0 23 4>, - <0 0 24 &gic 0 24 4>, - <0 0 25 &gic 0 25 4>, - <0 0 26 &gic 0 26 4>, - <0 0 27 &gic 0 27 4>, - <0 0 28 &gic 0 28 4>, - <0 0 29 &gic 0 29 4>, - <0 0 30 &gic 0 30 4>, - <0 0 31 &gic 0 31 4>, - <0 0 32 &gic 0 32 4>, - <0 0 33 &gic 0 33 4>, - <0 0 34 &gic 0 34 4>, - <0 0 35 &gic 0 35 4>, - <0 0 36 &gic 0 36 4>, - <0 0 37 &gic 0 37 4>, - <0 0 38 &gic 0 38 4>, - <0 0 39 &gic 0 39 4>, - <0 0 40 &gic 0 40 4>, - <0 0 41 &gic 0 41 4>, - <0 0 42 &gic 0 42 4>; - - /include/ "rtsm_ve-motherboard.dtsi" - }; - - panels { - panel@0 { - compatible = "panel"; - mode = "XVGA"; - refresh = <60>; - xres = <1024>; - yres = <768>; - pixclock = <15748>; - left_margin = <152>; - right_margin = <48>; - upper_margin = <23>; - lower_margin = <3>; - hsync_len = <104>; - vsync_len = <4>; - sync = <0>; - vmode = "FB_VMODE_NONINTERLACED"; - tim2 = "TIM2_BCD", "TIM2_IPC"; - cntl = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)"; - caps = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888"; - bpp = <16>; - }; - }; -}; diff --git a/fdts/fvp-foundation-gicv2legacy-psci.dtb b/fdts/fvp-foundation-gicv2legacy-psci.dtb deleted file mode 100644 index efded4434694e65e47bdb8fdf796d4a631b48751..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7673 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 ka;81W?; - #address-cells = <2>; - #size-cells = <2>; - - chosen { }; - - aliases { - serial0 = &v2m_serial0; - serial1 = &v2m_serial1; - serial2 = &v2m_serial2; - serial3 = &v2m_serial3; - }; - - psci { - compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; - method = "smc"; - cpu_suspend = <0xc4000001>; - cpu_off = <0x84000002>; - cpu_on = <0xc4000003>; - sys_poweroff = <0x84000008>; - sys_reset = <0x84000009>; - }; - - cpus { - #address-cells = <2>; - #size-cells = <0>; - - cpu-map { - cluster0 { - core0 { - cpu = <&CPU0>; - }; - core1 { - cpu = <&CPU1>; - }; - core2 { - cpu = <&CPU2>; - }; - core3 { - cpu = <&CPU3>; - }; - }; - }; - - idle-states { - entry-method = "arm,psci"; - - CPU_SLEEP_0: cpu-sleep-0 { - compatible = "arm,idle-state"; - local-timer-stop; - arm,psci-suspend-param = <0x0010000>; - entry-latency-us = <40>; - exit-latency-us = <100>; - min-residency-us = <150>; - }; - - CLUSTER_SLEEP_0: cluster-sleep-0 { - compatible = "arm,idle-state"; - local-timer-stop; - arm,psci-suspend-param = <0x1010000>; - entry-latency-us = <500>; - exit-latency-us = <1000>; - min-residency-us = <2500>; - }; - }; - - CPU0:cpu@0 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x0>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU1:cpu@1 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x1>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU2:cpu@2 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x2>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - CPU3:cpu@3 { - device_type = "cpu"; - compatible = "arm,armv8"; - reg = <0x0 0x3>; - enable-method = "psci"; - cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; - next-level-cache = <&L2_0>; - }; - - L2_0: l2-cache0 { - compatible = "cache"; - }; - }; - - memory@80000000 { - device_type = "memory"; - reg = <0x00000000 0x80000000 0 0x7F000000>, - <0x00000008 0x80000000 0 0x80000000>; - }; - - gic: interrupt-controller@2c001000 { - compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; - #interrupt-cells = <3>; - #address-cells = <0>; - interrupt-controller; - reg = <0x0 0x2c001000 0 0x1000>, - <0x0 0x2c002000 0 0x1000>, - <0x0 0x2c004000 0 0x2000>, - <0x0 0x2c006000 0 0x2000>; - interrupts = <1 9 0xf04>; - }; - - timer { - compatible = "arm,armv8-timer"; - interrupts = <1 13 0xff01>, - <1 14 0xff01>, - <1 11 0xff01>, - <1 10 0xff01>; - clock-frequency = <100000000>; - }; - - timer@2a810000 { - compatible = "arm,armv7-timer-mem"; - reg = <0x0 0x2a810000 0x0 0x10000>; - clock-frequency = <100000000>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - frame@2a830000 { - frame-number = <1>; - interrupts = <0 26 4>; - reg = <0x0 0x2a830000 0x0 0x10000>; - }; - }; - - pmu { - compatible = "arm,armv8-pmuv3"; - interrupts = <0 60 4>, - <0 61 4>, - <0 62 4>, - <0 63 4>; - }; - - smb { - compatible = "simple-bus"; - - #address-cells = <2>; - #size-cells = <1>; - ranges = <0 0 0 0x08000000 0x04000000>, - <1 0 0 0x14000000 0x04000000>, - <2 0 0 0x18000000 0x04000000>, - <3 0 0 0x1c000000 0x04000000>, - <4 0 0 0x0c000000 0x04000000>, - <5 0 0 0x10000000 0x04000000>; - - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 63>; - interrupt-map = <0 0 0 &gic 0 0 4>, - <0 0 1 &gic 0 1 4>, - <0 0 2 &gic 0 2 4>, - <0 0 3 &gic 0 3 4>, - <0 0 4 &gic 0 4 4>, - <0 0 5 &gic 0 5 4>, - <0 0 6 &gic 0 6 4>, - <0 0 7 &gic 0 7 4>, - <0 0 8 &gic 0 8 4>, - <0 0 9 &gic 0 9 4>, - <0 0 10 &gic 0 10 4>, - <0 0 11 &gic 0 11 4>, - <0 0 12 &gic 0 12 4>, - <0 0 13 &gic 0 13 4>, - <0 0 14 &gic 0 14 4>, - <0 0 15 &gic 0 15 4>, - <0 0 16 &gic 0 16 4>, - <0 0 17 &gic 0 17 4>, - <0 0 18 &gic 0 18 4>, - <0 0 19 &gic 0 19 4>, - <0 0 20 &gic 0 20 4>, - <0 0 21 &gic 0 21 4>, - <0 0 22 &gic 0 22 4>, - <0 0 23 &gic 0 23 4>, - <0 0 24 &gic 0 24 4>, - <0 0 25 &gic 0 25 4>, - <0 0 26 &gic 0 26 4>, - <0 0 27 &gic 0 27 4>, - <0 0 28 &gic 0 28 4>, - <0 0 29 &gic 0 29 4>, - <0 0 30 &gic 0 30 4>, - <0 0 31 &gic 0 31 4>, - <0 0 32 &gic 0 32 4>, - <0 0 33 &gic 0 33 4>, - <0 0 34 &gic 0 34 4>, - <0 0 35 &gic 0 35 4>, - <0 0 36 &gic 0 36 4>, - <0 0 37 &gic 0 37 4>, - <0 0 38 &gic 0 38 4>, - <0 0 39 &gic 0 39 4>, - <0 0 40 &gic 0 40 4>, - <0 0 41 &gic 0 41 4>, - <0 0 42 &gic 0 42 4>; - - /include/ "fvp-foundation-motherboard.dtsi" - }; -}; diff --git a/plat/arm/board/fvp/fvp_common.c b/plat/arm/board/fvp/fvp_common.c index 1de99991b..78782d430 100644 --- a/plat/arm/board/fvp/fvp_common.c +++ b/plat/arm/board/fvp/fvp_common.c @@ -37,10 +37,6 @@ #include #include "../fvp_def.h" -#if (FVP_USE_GIC_DRIVER == FVP_GICV2) -extern gicv2_driver_data_t arm_gic_data; -#endif - /* Defines for GIC Driver build time selection */ #define FVP_GICV2 1 #define FVP_GICV3 2 @@ -159,26 +155,9 @@ void fvp_config_setup(void) */ switch (bld) { case BLD_GIC_VE_MMAP: -#if IMAGE_BL31 || IMAGE_BL32 -#if FVP_USE_GIC_DRIVER == FVP_GICV2 - /* - * If the FVP implements the VE compatible memory map, then the - * GICv2 driver must be included in the build. Update the platform - * data with the correct GICv2 base addresses before it is used - * to initialise the driver. - * - * This update of platform data is temporary and will be removed - * once VE memory map for FVP is no longer supported by Trusted - * Firmware. - */ - arm_gic_data.gicd_base = VE_GICD_BASE; - arm_gic_data.gicc_base = VE_GICC_BASE; - -#else - ERROR("Only GICv2 driver supported for VE memory map\n"); + ERROR("Legacy Versatile Express memory map for GIC peripheral" + " is not supported\n"); panic(); -#endif /* __FVP_USE_GIC_DRIVER == FVP_GICV2__ */ -#endif /* __IMAGE_BL31 || IMAGE_BL32__ */ break; case BLD_GIC_A53A57_MMAP: break; diff --git a/plat/arm/common/arm_gicv2.c b/plat/arm/common/arm_gicv2.c index 76f04cd0a..2636d1c90 100644 --- a/plat/arm/common/arm_gicv2.c +++ b/plat/arm/common/arm_gicv2.c @@ -47,17 +47,12 @@ * On a GICv2 system, the Group 1 secure interrupts are treated as Group 0 * interrupts. *****************************************************************************/ -const unsigned int g0_interrupt_array[] = { +static const unsigned int g0_interrupt_array[] = { PLAT_ARM_G1S_IRQS, PLAT_ARM_G0_IRQS }; -/* - * Ideally `arm_gic_data` structure definition should be a `const` but it is - * kept as modifiable for overwriting with different GICD and GICC base when - * running on FVP with VE memory map. - */ -gicv2_driver_data_t arm_gic_data = { +static const gicv2_driver_data_t arm_gic_data = { .gicd_base = PLAT_ARM_GICD_BASE, .gicc_base = PLAT_ARM_GICC_BASE, .g0_interrupt_num = ARRAY_SIZE(g0_interrupt_array), diff --git a/plat/arm/common/arm_gicv3.c b/plat/arm/common/arm_gicv3.c index 33f80183c..a20fd56f2 100644 --- a/plat/arm/common/arm_gicv3.c +++ b/plat/arm/common/arm_gicv3.c @@ -45,15 +45,15 @@ #pragma weak plat_arm_gic_pcpu_init /* The GICv3 driver only needs to be initialized in EL3 */ -uintptr_t rdistif_base_addrs[PLATFORM_CORE_COUNT]; +static uintptr_t rdistif_base_addrs[PLATFORM_CORE_COUNT]; /* Array of Group1 secure interrupts to be configured by the gic driver */ -const unsigned int g1s_interrupt_array[] = { +static const unsigned int g1s_interrupt_array[] = { PLAT_ARM_G1S_IRQS }; /* Array of Group0 interrupts to be configured by the gic driver */ -const unsigned int g0_interrupt_array[] = { +static const unsigned int g0_interrupt_array[] = { PLAT_ARM_G0_IRQS }; diff --git a/plat/arm/common/arm_gicv3_legacy.c b/plat/arm/common/arm_gicv3_legacy.c index 617093345..8396b600e 100644 --- a/plat/arm/common/arm_gicv3_legacy.c +++ b/plat/arm/common/arm_gicv3_legacy.c @@ -48,7 +48,7 @@ * In the GICv3 Legacy mode, the Group 1 secure interrupts are treated as Group * 0 interrupts. */ -const unsigned int irq_sec_array[] = { +static const unsigned int irq_sec_array[] = { PLAT_ARM_G0_IRQS, PLAT_ARM_G1S_IRQS }; From a8af6a4d2a80b19f42493a33b86e97bae4fdeb6e Mon Sep 17 00:00:00 2001 From: Soby Mathew Date: Thu, 7 Apr 2016 17:40:04 +0100 Subject: [PATCH 2/2] Change the default driver to GICv3 in FVP This patch changes the default driver for FVP platform from the deprecated GICv3 legacy to the GICv3 only driver. This means that the default build of Trusted Firmware will not be able boot Linux kernel with GICv2 FDT blob. The user guide is also updated to reflect this change of default GIC driver for FVP. Change-Id: Id6fc8c1ac16ad633dabb3cd189b690415a047764 --- docs/user-guide.md | 12 ++++++------ plat/arm/board/fvp/platform.mk | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/user-guide.md b/docs/user-guide.md index eb9771121..2bb9eac4a 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -1013,22 +1013,22 @@ all FDTs are available from there. * `fvp-base-gicv2-psci.dtb` - (Default) For use with both AEMv8 and Cortex-A57-A53 Base FVPs with + For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base memory map configuration. * `fvp-base-gicv3-psci.dtb` - For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base memory map - configuration and Linux GICv3 support. + (Default) For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base + memory map configuration and Linux GICv3 support. * `fvp-foundation-gicv2-psci.dtb` - (Default) For use with Foundation FVP with Base memory map configuration. + For use with Foundation FVP with Base memory map configuration. * `fvp-foundation-gicv3-psci.dtb` - For use with Foundation FVP with Base memory map configuration and Linux - GICv3 support. + (Default) For use with Foundation FVP with Base memory map configuration + and Linux GICv3 support. ### Running on the Foundation FVP with reset to BL1 entrypoint diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk index 60ebe65b5..eecb59779 100644 --- a/plat/arm/board/fvp/platform.mk +++ b/plat/arm/board/fvp/platform.mk @@ -28,8 +28,8 @@ # POSSIBILITY OF SUCH DAMAGE. # -# Use the Legacy GICv3 driver on the FVP by default to maintain compatibility. -FVP_USE_GIC_DRIVER := FVP_GICV3_LEGACY +# Use the GICv3 driver on the FVP by default +FVP_USE_GIC_DRIVER := FVP_GICV3 # The FVP platform depends on this macro to build with correct GIC driver. $(eval $(call add_define,FVP_USE_GIC_DRIVER))