We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm trying to run my hypervisor on qemu virt. Gicv2 specification describes a mandatory global alias region through which any virtual interface can be accessed by any cpu. Looking through qemu code at arm_gic_realize function this functionality seems to be implemented ( /*Extra core-specific regions for virtual interfaces. This is required by the GICv2 specification */). However, I cant figure out what would be its based address on the memory map. Does anyone know if this is indeed possible in qemu platforms using gicv2 and, if so, what is its base address.
Hi @josecm,
You could ask qemu to dump the dtb and look in there:
$ qemu-system-aarch64 -machine virt,gic-version=2,virtualization=on,dumpdtb=dump.dtb $ dtc -o dump.dts -O dts -I dtb dump.dtb
Then look into dump.dts for the gic section:
intc@8000000 { ... reg = <0x00 0x8000000 0x00 0x10000 0x00 0x8010000 0x00 0x10000 0x00 0x8030000 0x00 0x10000 0x00 0x8040000 0x00 0x10000>; compatible = "arm,cortex-a15-gic"; ... };
As per https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/arm%2Cgic.txt,
- reg : Specifies base physical address(s) and size of the GIC registers. The first region is the GIC distributor register base and size. The 2nd region is the GIC cpu interface register base and size.
* GIC virtualization extensions (VGIC) - reg : Additional regions specifying the base physical address and size of the VGIC registers. The first additional region is the GIC virtual interface control register base and size. The 2nd additional region is the GIC virtual cpu interface register base and size.
Best regards,
Vincent.