Re: [PATCH v2] kvm: x86: emulate monitor and mwait instructions as nop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 04, 2014 at 04:44:13PM +0200, Alexander Graf wrote:
> 
> On 04.06.14 16:39, Gabriel L. Somlo wrote:
> >Paolo,
> >
> >I noticed the monitor=mwait=nop patch is making its way upstream, so
> >thanks !
> >
> >I'm still interested in following up with something that would enable
> >this behavior only conditionally (e.g. following an ioctl call from
> >userspace to enable it only for the (set of) vcpu(s) belonging to one
> >guest VM at a time), which should then also include advertising the
> >feature in CPUID.
> >
> >I grep-ed through the kvm sources for KVM_CAP for some inspiration,
> >and it looks more like KVM_CAP_* is a way to tell userspace what the
> >kernel supports, but nothing I saw showed me an example of a "tunable"
> >feature that userspace may ask to be turned on or off (e.g per-vcpu).
> >
> >Is there something like that I could use as an example ?
> 
> Sure, we use it all over the place on PPC :).

Allright, I'll grep harder, then :)

> >Obviously, if you really like the current behavior better you can
> >always reject whatever patch I'll come up with, but I'd like to at
> >least try and see what it would look like :)
> 
> I think it's perfectly fine to leave mwait always implemented as NOP - it's
> valid behavior.

NOP is valid MWAIT behavior, *unless* MWAIT should generate an invalid
opcode (i.e., if CPUID says mwait not supported). In that respect,
we're cheating only to hook up guests which misbehave. I'd feel less
"dirty" if I could explicitly tell KVM "ok, just this once is OK, but
don't make a habit of it" :)

> As for the CPUID exposure, that should be a pure QEMU thing. If overriding
> CPUID bits the kernel mask tells us doesn't work today, we should just make
> it possible :).
> 
> Eventually I really think that -cpu foo,+mwait,+monitor or whatever the bits
> are should override any safety net that KVM gives us on features it thinks
> are safe to use.

I need to look at the qemu source, doing what you said
(+monitor,+mwait,+whatever) right now "works", doesn't generate an error,
but silently ignores you if it's not implemented. So I'd actually have to
generate a patch to make something happen when they're present on the
command line.

The part I'm unsure about is "how bad is it to cheat the way we do right
now", vs. "how much is it worth to be pedantic and require explicitly
enabling things, in both qemu and kvm"... I feel like I don't know
enough to 1. have a strong opinion either way, and 2. have my opinion
be *right* :) Which is why I won't let it go already (and thanks for
all your patience, BTW) :)

Thanks,
--Gabriel
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux