[RFC PATCH 00/11 Allow PR and HV KVM to coexist in one kernel
Aneesh Kumar K.V
aneesh.kumar at linux.vnet.ibm.com
Fri Sep 27 20:52:05 EST 2013
"Aneesh Kumar K.V" <aneesh.kumar at linux.vnet.ibm.com> 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 at llmp24l02 qemu]# bash ../qemu
> failed to initialize KVM: Invalid argument
> [root at llmp24l02 qemu]# modprobe kvm-pr
> [root at llmp24l02 qemu]# bash ../qemu
> failed to initialize KVM: Invalid argument
> [root at llmp24l02 qemu]# modprobe kvm-hv
> [root at llmp24l02 qemu]# bash ../qemu
>
> now with
>
> -machine pseries,accel=kvm,kvm_type=2
>
> [root at llmp24l02 qemu]# rmmod kvm-pr
> [root at llmp24l02 qemu]# bash ../qemu
> failed to initialize KVM: Invalid argument
> [root at llmp24l02 qemu]#
> [root at llmp24l02 qemu]# modprobe kvm-pr
> [root at 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 at linux.vnet.ibm.com>
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 at linux.vnet.ibm.com>
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 */ }
},
};
More information about the Linuxppc-dev
mailing list