Re: [PATCH 23/42] KVM: Activate Virtualization On Demand

Alexander Graf
2010-03-17T22:02:47Z

On 17.03.2010, at 22:57, Dieter Ries wrote:

> Am 16.11.2009 13:19, schrieb Avi Kivity:
>> From: Alexander Graf <agraf@suse.de>
>> diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
>> index f54c4f9..59fe4d5 100644
>> --- a/arch/x86/kvm/svm.c
>> +++ b/arch/x86/kvm/svm.c
>> @@ -316,7 +316,7 @@ static void svm_hardware_disable(void *garbage)
>> cpu_svm_disable();
>> }
>>
>> -static void svm_hardware_enable(void *garbage)
>> +static int svm_hardware_enable(void *garbage)
>> {
>>
>> struct svm_cpu_data *svm_data;
>> @@ -325,16 +325,20 @@ static void svm_hardware_enable(void *garbage)
>> struct desc_struct *gdt;
>> int me = raw_smp_processor_id();
>>
>> + rdmsrl(MSR_EFER, efer);
>> + if (efer & EFER_SVME)
>> + return -EBUSY;
>> +
>
> Hi,
>
> This is breaking KVM on my Phenom II X4 955.
>
> When I start kvm I get this on the terminal:
>
> kvm_create_vm: Device or resource busy
> Could not initialize KVM, will disable KVM support
>
> And in dmesg:
> [ 67.980732] kvm: enabling virtualization on CPU0 failed
>
>
> I commented out the if() and return, and I added 2 printk's there for
> debugging, and now that's what I see in dmesg when I start kvm:
>
> [ 3341.740112] efer is 3329
> [ 3341.740113] efer is 3329
> [ 3341.740117] efer is 3329
> [ 3341.740119] EFER_SVME is 4096
> [ 3341.740121] EFER_SVME is 4096
> [ 3341.740124] EFER_SVME is 4096
> [ 3341.740130] efer is 3329
> [ 3341.740132] EFER_SVME is 4096
>
> In hex the values are 0x1000 and 0x0d01
>
> KVM has been working well on this machine before, and it still works
> well after commenting that part out.
>
> I am not sure what the value of this register is supposed to be, but are
> you sure
>
> if (efer & EFER_SVME)
>
> is the right condition?

According to the printks you show above the & condition should never apply.

Are you 100% sure you don't have vmware, virtualbox, parallels, whatever running in parallel on that machine?

Alex