Skip to content

GICv3: add 32bit compatibility

Marc Zyngier linux-arm-kernel 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest0 of 4 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 4 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/4] GICv3: add 32bit compatibility
Quoted 28 lines · Andre Przywara

Hi Jean-Philippe,

Quoted 11 lines · Jean-Philippe Brucker

This series adds 32bit compatibility to Marc's GICv3 driver. Only SGIs, PPIs and SPIs support is present. No ITS nor virtualisation.

It is based on 3.18.

Jean-Philippe Brucker (4):
arm64: GICv3: refactor the AArch64 specific parts
arm64: GICv3: change unsigned types for AArch32 compatibility
arm64: GICv3: Specialize readq and writeq accesses
ARM: add 32bit support to GICv3

Quoted 7 lines
 arch/arm/include/asm/arch_gicv3.h   | 182 ++++++++++++++++++++++++++++++++++++
 arch/arm64/include/asm/arch_gicv3.h | 141 ++++++++++++++++++++++++++++
 drivers/irqchip/irq-gic-v3.c        |  69 ++++----------
 include/linux/irqchip/arm-gic-v3.h  |  95 +++----------------
 4 files changed, 356 insertions(+), 131 deletions(-)
 create mode 100644 arch/arm/include/asm/arch_gicv3.h
 create mode 100644 arch/arm64/include/asm/arch_gicv3.h

so if I compile this with CONFIG_KVM_ARM_VGIC on, I get a compilation error:
LD init/built-in.o
arch/arm/kvm/built-in.o: In function `svc_die_str':
arch_timer.c:(.rodata+0xf7c): undefined reference to `vgic_v3_probe' make[2]: *** [vmlinux] Error 1

Quoted 4 lines

The svc_die_str reference is probably bogus, but if I protect the vgic_v3_probe reference in virt/kvm/arm/vgic.c with "#ifdef ARM64" it compiles fine. Disabling CONFIG_KVM_ARM_VGIC in the .config also fixes this also.

That's an absolute no-no. I want to be able to run the exact same kernel as a KVM host *and* a guest. So disabling the vgic can never be the right solution.

Either wrapping the vgic_v3_probe reference with CONFIG_ARM64 or having a non "static inline" vgic_v3_probe for 32bit are acceptable solutions.

Thanks,

	M.
Signature · 1 line
Jazz is not dead. It just smells funny...