[RFC PATCH 00/11 Allow PR and HV KVM to coexist in one kernel
Alexander Graf
agraf at suse.de
Mon Sep 30 20:16:14 EST 2013
On 27.09.2013, at 12:52, Aneesh Kumar K.V wrote:
> "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>
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 at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the Linuxppc-dev
mailing list