Hello,
I've been reading through different reference manuals concerning FVP, Fast Models, Base Platform etc. and I can't seem to find compelling information on which GIC(-400/-500/-600) the Armv-A Base RevC AEM FVP implements. Does it even implement a specific version or more a generic GICv3 model? If so, which features of the GIC(-400/-500/-600) does it resemble?
Thankful for any information!
Greetings
Martin Schönstedt
The --list-params option of the FVP_Base_RevC-2xAEMvA lists out parameters which allow configuring the version of the GIC. Some of the options related to GIC configuration:
gicv3.gicv2-only=0 # (bool , init-time) default = '0' : When using the GICv3 model, pretend to be a GICv2 system. has-gicv4.1=0 # (bool , init-time) default = '0' : Enable GICv4.1 functionality; when false the component is inactive.
The interrupt controller node in the dts file for the platform should contain the required compatibility information. For e.g., on Linux:
gic: interrupt-controller@2f000000 { compatible = "arm,gic-v3"; #interrupt-cells = <3>; #address-cells = <2>; #size-cells = <2>; ranges; interrupt-controller; reg = <0x0 0x2f000000 0 0x10000>, // GICD <0x0 0x2f100000 0 0x200000>, // GICR <0x0 0x2c000000 0 0x2000>, // GICC <0x0 0x2c010000 0 0x2000>, // GICH <0x0 0x2c02f000 0 0x2000>; // GICV interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; its: msi-controller@2f020000 { #msi-cells = <1>; compatible = "arm,gic-v3-its"; reg = <0x0 0x2f020000 0x0 0x20000>; // GITS msi-controller; }; };
Another example from morello-fvp:
gic: interrupt-controller@2c010000 { compatible = "arm,gic-600", "arm,gic-v3"; #address-cells = <2>; #interrupt-cells = <3>; #size-cells = <2>; ranges; interrupt-controller; };
The FVP reference guide lists gic versions for some models: for e.g., its RD-N2 FVP model implements gic-700. The FVP reference manual lists several implementations of GIC, but I am not sure if there are all available, or how to enable them, on the free FVP versions.
Here, it highlights a major feature of gic-600, so perhaps one can look for the availability of such a feature in an implementation. The Arm TrustedFirmware source has the driver for gic-600; it may help in discovering its features, or how it is to be supported.