Hi Indan,
Thanks for the info. I've tried to use
https://github.com/seL4/seL4/pull/378.
However, it seems there're something missing in
projects/seL4_projects_libs/libsel4vm/src/arch/arm/vgic/vgic.c. Complete build output can
be found at [1].
/home/nio/alex/seL4/build/camkes-vm-apps/projects/seL4_projects_libs/libsel4vm/src/arch/arm/vgic/vgic.c:86:2:
error: #error "Unsupported platform for GIC"
#error "Unsupported platform for GIC"
^~~~~
/home/nio/alex/seL4/build/camkes-vm-apps/projects/seL4_projects_libs/libsel4vm/src/arch/arm/vgic/vgic.c:
In function ‘vgic_vcpu_iterator’:
/home/nio/alex/seL4/build/camkes-vm-apps/projects/seL4_projects_libs/libsel4vm/src/arch/arm/vgic/vgic.c:98:31:
error: ‘GIC_PADDR’ undeclared (first use in this function); did you mean
‘GIC_CPU_PADDR’?
#define GIC_VCPU_PADDR (GIC_PADDR + 0x6000)
^
/home/nio/alex/seL4/build/camkes-vm-apps/projects/seL4_projects_libs/libsel4vm/src/arch/arm/vgic/vgic.c:1092:90:
note: in expansion of macro ‘GIC_VCPU_PADDR’
err = vka_utspace_alloc_at(vm->vka, &frame, kobject_get_type(KOBJECT_FRAME,
12), 12, GIC_VCPU_PADDR, &vka_cookie);
I take a look at vgic.c and it seems to me the definitions are for GICv2 only.
#ifdef CONFIG_PLAT_QEMU_ARM_VIRT
#define GIC_DIST_PADDR (GIC_PADDR)
#define GIC_CPU_PADDR (GIC_PADDR + 0x00010000)
#define GIC_VCPU_CNTR_PADDR (GIC_PADDR + 0x00030000)
#define GIC_VCPU_PADDR (GIC_PADDR + 0x00040000)
#else
#define GIC_DIST_PADDR (GIC_PADDR + 0x1000)
#define GIC_CPU_PADDR (GIC_PADDR + 0x2000)
#define GIC_VCPU_CNTR_PADDR (GIC_PADDR + 0x4000)
#define GIC_VCPU_PADDR (GIC_PADDR + 0x6000)
#endif
Do you know if anyone is working on GICv3 support in libsel4vm? Thanks.
[1]
https://pastebin.com/QmwfxDK3
Regards,
Alex