aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2013-07-09 05:45:49 -0400
committerChristoffer Dall <christoffer.dall@linaro.org>2014-07-11 07:57:37 -0400
commit67b2abfedb7b861bead93400fa315c5c30879d51 (patch)
tree529c2f72b358fc23da95392471a3ed83ebd6ff93
parent754d37726010d872f1f714a8ce8920acdfa4978c (diff)
arm64: KVM: vgic: enable GICv2 emulation on top on GICv3 hardware
Add the last missing bits that enable GICv2 emulation on top of GICv3 hardware. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-rw-r--r--arch/arm64/include/asm/kvm_host.h7
-rw-r--r--arch/arm64/kvm/Makefile2
-rw-r--r--virt/kvm/arm/vgic.c1
3 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 4c182d0aae70..4ae9213aa997 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -216,6 +216,13 @@ static inline void vgic_arch_setup(const struct vgic_params *vgic)
216 __vgic_sr_vectors.restore_vgic = __restore_vgic_v2_state; 216 __vgic_sr_vectors.restore_vgic = __restore_vgic_v2_state;
217 break; 217 break;
218 218
219#ifdef CONFIG_ARM_GIC_V3
220 case VGIC_V3:
221 __vgic_sr_vectors.save_vgic = __save_vgic_v3_state;
222 __vgic_sr_vectors.restore_vgic = __restore_vgic_v3_state;
223 break;
224#endif
225
219 default: 226 default:
220 BUG(); 227 BUG();
221 } 228 }
diff --git a/arch/arm64/kvm/Makefile b/arch/arm64/kvm/Makefile
index daf24dc59e2c..32a096174b94 100644
--- a/arch/arm64/kvm/Makefile
+++ b/arch/arm64/kvm/Makefile
@@ -22,4 +22,6 @@ kvm-$(CONFIG_KVM_ARM_HOST) += guest.o reset.o sys_regs.o sys_regs_generic_v8.o
22kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic.o 22kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic.o
23kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v2.o 23kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v2.o
24kvm-$(CONFIG_KVM_ARM_VGIC) += vgic-v2-switch.o 24kvm-$(CONFIG_KVM_ARM_VGIC) += vgic-v2-switch.o
25kvm-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v3.o
26kvm-$(CONFIG_KVM_ARM_VGIC) += vgic-v3-switch.o
25kvm-$(CONFIG_KVM_ARM_TIMER) += $(KVM)/arm/arch_timer.o 27kvm-$(CONFIG_KVM_ARM_TIMER) += $(KVM)/arm/arch_timer.o
diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c
index 7867b9a1f694..795ab482333d 100644
--- a/virt/kvm/arm/vgic.c
+++ b/virt/kvm/arm/vgic.c
@@ -1530,6 +1530,7 @@ static struct notifier_block vgic_cpu_nb = {
1530 1530
1531static const struct of_device_id vgic_ids[] = { 1531static const struct of_device_id vgic_ids[] = {
1532 { .compatible = "arm,cortex-a15-gic", .data = vgic_v2_probe, }, 1532 { .compatible = "arm,cortex-a15-gic", .data = vgic_v2_probe, },
1533 { .compatible = "arm,gic-v3", .data = vgic_v3_probe, },
1533 {}, 1534 {},
1534}; 1535};
1535 1536