aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@linaro.org>2013-09-30 04:50:05 -0400
committerChristoffer Dall <christoffer.dall@linaro.org>2013-10-02 14:29:10 -0400
commit4a6fee805d5e278e4733bf933cb5b184b7a8be1f (patch)
treed6869cb037bdbc744a299e49d4df3d8cc9921e4e
parentb373e492f3a3469c615c2ae218d2f723900bf981 (diff)
ARM: KVM: Implement kvm_vcpu_preferred_target() function
This patch implements kvm_vcpu_preferred_target() function for KVM ARM which will help us implement KVM_ARM_PREFERRED_TARGET ioctl for user space. 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/include/asm/kvm_host.h1
-rw-r--r--arch/arm/kvm/guest.c20
2 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 7d22517d8071..76f3c1978442 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -154,6 +154,7 @@ struct kvm_vcpu_stat {
154struct kvm_vcpu_init; 154struct kvm_vcpu_init;
155int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, 155int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
156 const struct kvm_vcpu_init *init); 156 const struct kvm_vcpu_init *init);
157int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init);
157unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu); 158unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu);
158int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices); 159int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices);
159struct kvm_one_reg; 160struct kvm_one_reg;
diff --git a/arch/arm/kvm/guest.c b/arch/arm/kvm/guest.c
index 152d03612181..ec98209fda71 100644
--- a/arch/arm/kvm/guest.c
+++ b/arch/arm/kvm/guest.c
@@ -222,6 +222,26 @@ int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
222 return kvm_reset_vcpu(vcpu); 222 return kvm_reset_vcpu(vcpu);
223} 223}
224 224
225int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init)
226{
227 int target = kvm_target_cpu();
228
229 if (target < 0)
230 return -ENODEV;
231
232 memset(init, 0, sizeof(*init));
233
234 /*
235 * For now, we don't return any features.
236 * In future, we might use features to return target
237 * specific features available for the preferred
238 * target type.
239 */
240 init->target = (__u32)target;
241
242 return 0;
243}
244
225int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) 245int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
226{ 246{
227 return -EINVAL; 247 return -EINVAL;