diff options
author | Anup Patel <anup.patel@linaro.org> | 2013-09-30 04:50:07 -0400 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2013-10-02 14:29:48 -0400 |
commit | 42c4e0c77ac91505ab94284b14025e3a0865c0a5 (patch) | |
tree | 1d5002e27ad0fd99a54f2cd3084724ffa37c2e44 | |
parent | 473bdc0e6565ebb22455657a40daa21b6b4ee16b (diff) |
ARM/ARM64: KVM: Implement KVM_ARM_PREFERRED_TARGET ioctl
For implementing CPU=host, we need a mechanism for querying
preferred VCPU target type on underlying Host.
This patch implements KVM_ARM_PREFERRED_TARGET vm ioctl which
returns struct kvm_vcpu_init instance containing information
about preferred VCPU target type and target specific features
available for it.
Signed-off-by: Anup Patel <anup.patel@linaro.org>
Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
-rw-r--r-- | arch/arm/kvm/arm.c | 13 | ||||
-rw-r--r-- | include/uapi/linux/kvm.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 9c697db2787e..cc5adb9349ef 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c | |||
@@ -797,6 +797,19 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
797 | return -EFAULT; | 797 | return -EFAULT; |
798 | return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr); | 798 | return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr); |
799 | } | 799 | } |
800 | case KVM_ARM_PREFERRED_TARGET: { | ||
801 | int err; | ||
802 | struct kvm_vcpu_init init; | ||
803 | |||
804 | err = kvm_vcpu_preferred_target(&init); | ||
805 | if (err) | ||
806 | return err; | ||
807 | |||
808 | if (copy_to_user(argp, &init, sizeof(init))) | ||
809 | return -EFAULT; | ||
810 | |||
811 | return 0; | ||
812 | } | ||
800 | default: | 813 | default: |
801 | return -EINVAL; | 814 | return -EINVAL; |
802 | } | 815 | } |
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 99c25338ede8..e32e776f20c0 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
@@ -1012,6 +1012,7 @@ struct kvm_s390_ucas_mapping { | |||
1012 | /* VM is being stopped by host */ | 1012 | /* VM is being stopped by host */ |
1013 | #define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad) | 1013 | #define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad) |
1014 | #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init) | 1014 | #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init) |
1015 | #define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init) | ||
1015 | #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list) | 1016 | #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list) |
1016 | 1017 | ||
1017 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) | 1018 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) |