aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kvm/arm.c
diff options
context:
space:
mode:
authorChristoffer Dall <c.dall@virtualopensystems.com>2013-01-21 19:36:13 -0500
committerMarc Zyngier <marc.zyngier@arm.com>2013-02-11 13:59:01 -0500
commit330690cdceba06b60afcfe50a65f72fab7f4f970 (patch)
tree3dc8a6a3e8324e4e9d724497dd45942b1d66a042 /arch/arm/kvm/arm.c
parent1a89dd9113badd7487313410a5f2e09b2944f92b (diff)
ARM: KVM: VGIC accept vcpu and dist base addresses from user space
User space defines the model to emulate to a guest and should therefore decide which addresses are used for both the virtual CPU interface directly mapped in the guest physical address space and for the emulated distributor interface, which is mapped in software by the in-kernel VGIC support. Reviewed-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Christoffer Dall <c.dall@virtualopensystems.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm/kvm/arm.c')
-rw-r--r--arch/arm/kvm/arm.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 7305aef28d0e..c327fd9d8ec3 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -880,7 +880,21 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log)
880static int kvm_vm_ioctl_set_device_addr(struct kvm *kvm, 880static int kvm_vm_ioctl_set_device_addr(struct kvm *kvm,
881 struct kvm_arm_device_addr *dev_addr) 881 struct kvm_arm_device_addr *dev_addr)
882{ 882{
883 return -ENODEV; 883 unsigned long dev_id, type;
884
885 dev_id = (dev_addr->id & KVM_ARM_DEVICE_ID_MASK) >>
886 KVM_ARM_DEVICE_ID_SHIFT;
887 type = (dev_addr->id & KVM_ARM_DEVICE_TYPE_MASK) >>
888 KVM_ARM_DEVICE_TYPE_SHIFT;
889
890 switch (dev_id) {
891 case KVM_ARM_DEVICE_VGIC_V2:
892 if (!vgic_present)
893 return -ENXIO;
894 return kvm_vgic_set_addr(kvm, type, dev_addr->addr);
895 default:
896 return -ENODEV;
897 }
884} 898}
885 899
886long kvm_arch_vm_ioctl(struct file *filp, 900long kvm_arch_vm_ioctl(struct file *filp,