Which GIC does Armv-A Base RevC AEM FVP implement?

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.