On 6 August 2014 18:18, Will Deacon <will.deacon@xxxxxxx> wrote: > On Tue, Aug 05, 2014 at 09:49:55AM +0100, Anup Patel wrote: >> Instead, of trying out each and every target type we should use >> KVM_ARM_PREFERRED_TARGET vm ioctl to determine target type >> for KVM ARM/ARM64. >> >> We bail-out target type returned by KVM_ARM_PREFERRED_TARGET vm ioctl >> is not known to kvmtool. > > -ENOPARSE OK, I will fix the wordings here. > >> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@xxxxxxxxxx> >> Signed-off-by: Anup Patel <anup.patel@xxxxxxxxxx> >> --- >> tools/kvm/arm/kvm-cpu.c | 21 ++++++++++++++++----- >> 1 file changed, 16 insertions(+), 5 deletions(-) >> >> diff --git a/tools/kvm/arm/kvm-cpu.c b/tools/kvm/arm/kvm-cpu.c >> index aeaa4cf..7478f8f 100644 >> --- a/tools/kvm/arm/kvm-cpu.c >> +++ b/tools/kvm/arm/kvm-cpu.c >> @@ -34,6 +34,7 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id) >> struct kvm_cpu *vcpu; >> int coalesced_offset, mmap_size, err = -1; >> unsigned int i; >> + struct kvm_vcpu_init preferred_init; >> struct kvm_vcpu_init vcpu_init = { >> .features = ARM_VCPU_FEATURE_FLAGS(kvm, cpu_id) >> }; >> @@ -46,6 +47,10 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id) >> if (vcpu->vcpu_fd < 0) >> die_perror("KVM_CREATE_VCPU ioctl"); >> >> + err = ioctl(kvm->vm_fd, KVM_ARM_PREFERRED_TARGET, &preferred_init); >> + if (err < 0) >> + die_perror("KVM_ARM_PREFERRED_TARGET ioctl"); > > Is this ioctl always available? If not, I don't like dying here as that > could cause a regression under older hosts. The KVM_ARM_PREFERRED_TARGET ioctl is available from 3.13 onwards. I think we should first try KVM_ARM_PREFERRED_TARGET. If it fails then we should fallback to old method of trying each and every target type. What say? -- Anup > > Will -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html