arm64: KVM: vgic: enable GICv2 emulation on top on GICv3 hardware
authorMarc Zyngier <marc.zyngier@arm.com>
Tue, 9 Jul 2013 09:45:49 +0000 (10:45 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Fri, 11 Jul 2014 11:57:37 +0000 (04:57 -0700)
Add the last missing bits that enable GICv2 emulation on top of
GICv3 hardware.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/include/asm/kvm_host.h
arch/arm64/kvm/Makefile
virt/kvm/arm/vgic.c

index 4c182d0..4ae9213 100644 (file)
@@ -216,6 +216,13 @@ static inline void vgic_arch_setup(const struct vgic_params *vgic)
                __vgic_sr_vectors.restore_vgic  = __restore_vgic_v2_state;
                break;
 
+#ifdef CONFIG_ARM_GIC_V3
+       case VGIC_V3:
+               __vgic_sr_vectors.save_vgic     = __save_vgic_v3_state;
+               __vgic_sr_vectors.restore_vgic  = __restore_vgic_v3_state;
+               break;
+#endif
+
        default:
                BUG();
        }
index daf24dc..32a0961 100644 (file)
@@ -22,4 +22,6 @@ kvm-$(CONFIG_KVM_ARM_HOST) += guest.o reset.o sys_regs.o sys_regs_generic_v8.o
 kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic.o
 kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v2.o
 kvm-$(CONFIG_KVM_ARM_VGIC) += vgic-v2-switch.o
+kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v3.o
+kvm-$(CONFIG_KVM_ARM_VGIC) += vgic-v3-switch.o
 kvm-$(CONFIG_KVM_ARM_TIMER) += $(KVM)/arm/arch_timer.o
index 7867b9a..795ab48 100644 (file)
@@ -1530,6 +1530,7 @@ static struct notifier_block vgic_cpu_nb = {
 
 static const struct of_device_id vgic_ids[] = {
        { .compatible = "arm,cortex-a15-gic", .data = vgic_v2_probe, },
+       { .compatible = "arm,gic-v3", .data = vgic_v3_probe, },
        {},
 };