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

Dieter Ries
2010-03-17T22:40:09Z

On Wed, Mar 17, 2010 at 11:02:40PM +0100, Alexander Graf wrote:
> On 17.03.2010, at 22:57, Dieter Ries wrote:
> > 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?

Definitely. I have virtualbox installed, but haven't used it in months.
The others I don't use at all, so they are not installed either.

There is nothing running which could cause that. Behaviour is the same
when I don't log into KDE but just try this without X, where nearly
nothing is started.

I noted something more now: When I comment it out once, and start kvm
like that, and then remove the comments again, then it works. So I guess
the dmesg parts I wrote were not perfect. It's more like:

I: After reboot, with debugging printk and if condition:

[ 42.089423] efer is d01
[ 42.089425] efer is d01
[ 42.089428] efer is d01
[ 42.089430] EFER_SVME is 1000
[ 42.089431] EFER_SVME is 1000
[ 42.089433] EFER_SVME is 1000
[ 42.089436] efer is 1d01
[ 42.089438] EFER_SVME is 1000
[ 42.089440] kvm: enabling virtualization on CPU0 failed

II: debugging printk, no if condition:

[ 317.355519] efer is d01
[ 317.355522] efer is d01
[ 317.355524] efer is d01
[ 317.355527] EFER_SVME is 1000
[ 317.355528] EFER_SVME is 1000
[ 317.355531] EFER_SVME is 1000
[ 317.355534] efer is 1d01
[ 317.355536] EFER_SVME is 1000

III: debugging printk and if condition:

[ 421.955433] efer is d01
[ 421.955437] efer is d01
[ 421.955440] efer is d01
[ 421.955442] EFER_SVME is 1000
[ 421.955443] EFER_SVME is 1000
[ 421.955445] EFER_SVME is 1000
[ 421.955449] efer is d01
[ 421.955451] EFER_SVME is 1000

This is without reboots in between. So now before I use the commented
out version for the first time, it doesnt work, the 2nd time it works.
Maybe some initialization problem...

> Alex

cu
Dieter