On 27.09.2013, at 12:52, Aneesh Kumar K.V wrote: > "Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxxxxxxxxxx> writes: > >> Hi All, >> >> This patch series support enabling HV and PR KVM together in the same kernel. We >> extend machine property with new property "kvm_type". A value of 1 will force HV >> KVM and 2 PR KVM. The default value is 0 which will select the fastest KVM mode. >> ie, HV if that is supported otherwise PR. >> >> With Qemu command line having >> >> -machine pseries,accel=kvm,kvm_type=1 >> >> [root@llmp24l02 qemu]# bash ../qemu >> failed to initialize KVM: Invalid argument >> [root@llmp24l02 qemu]# modprobe kvm-pr >> [root@llmp24l02 qemu]# bash ../qemu >> failed to initialize KVM: Invalid argument >> [root@llmp24l02 qemu]# modprobe kvm-hv >> [root@llmp24l02 qemu]# bash ../qemu >> >> now with >> >> -machine pseries,accel=kvm,kvm_type=2 >> >> [root@llmp24l02 qemu]# rmmod kvm-pr >> [root@llmp24l02 qemu]# bash ../qemu >> failed to initialize KVM: Invalid argument >> [root@llmp24l02 qemu]# >> [root@llmp24l02 qemu]# modprobe kvm-pr >> [root@llmp24l02 qemu]# bash ../qemu >> >> if don't specify kvm_type machine property, it will take a default value 0, >> which means fastest supported. > > Related qemu patch > > commit 8d139053177d48a70cb710b211ea4c2843eccdfb > Author: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> > Date: Mon Sep 23 12:28:37 2013 +0530 > > kvm: Add a new machine property kvm_type > > Targets like ppc64 support different type of KVM, one which use > hypervisor mode and the other which doesn't. Add a new machine > property kvm_type that helps in selecting the respective ones > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> This really is too early, as we can't possibly run in HV mode for non-pseries machines, so the interpretation (or at least sanity checking) of what values are reasonable should occur in the machine. That's why it's a variable in the "machine opts". Also, users don't want to say type=0. They want to say type=PR or type=HV or type=HV,PR. In fact, can't you make this a property of -accel? Then it's truly accel specific and everything should be well. Alex > > diff --git a/kvm-all.c b/kvm-all.c > index b87215c..a061eda 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -1350,7 +1350,7 @@ int kvm_init(void) > KVMState *s; > const KVMCapabilityInfo *missing_cap; > int ret; > - int i; > + int i, kvm_type; > int max_vcpus; > > s = g_malloc0(sizeof(KVMState)); > @@ -1407,7 +1407,8 @@ int kvm_init(void) > goto err; > } > > - s->vmfd = kvm_ioctl(s, KVM_CREATE_VM, 0); > + kvm_type = qemu_opt_get_number(qemu_get_machine_opts(), "kvm_type", 0); > + s->vmfd = kvm_ioctl(s, KVM_CREATE_VM, kvm_type); > if (s->vmfd < 0) { > #ifdef TARGET_S390X > fprintf(stderr, "Please add the 'switch_amode' kernel parameter to " > diff --git a/vl.c b/vl.c > index 4e709d5..4374b17 100644 > --- a/vl.c > +++ b/vl.c > @@ -427,7 +427,12 @@ static QemuOptsList qemu_machine_opts = { > .name = "usb", > .type = QEMU_OPT_BOOL, > .help = "Set on/off to enable/disable usb", > + },{ > + .name = "kvm_type", > + .type = QEMU_OPT_NUMBER, > + .help = "Set to kvm type to be used in create vm ioctl", > }, > + > { /* End of list */ } > }, > }; > > -- > To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- 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