From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Aneesh Kumar K.V" Date: Fri, 27 Sep 2013 10:52:15 +0000 Subject: Re: [RFC PATCH 00/11 Allow PR and HV KVM to coexist in one kernel Message-Id: <878uyibkq2.fsf@linux.vnet.ibm.com> List-Id: References: <1380276233-17095-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> In-Reply-To: <1380276233-17095-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: agraf@suse.de, benh@kernel.crashing.org, paulus@samba.org Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org "Aneesh Kumar K.V" 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 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 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 */ } }, };