[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87f187de-64ef-22a2-7714-a811883bce02@suse.de>
Date: Mon, 27 Mar 2017 15:34:34 +0200
From: Alexander Graf <agraf@...e.de>
To: "Michael S. Tsirkin" <mst@...hat.com>, linux-kernel@...r.kernel.org
Cc: "Gabriel L. Somlo" <gsomlo@...il.com>,
Paolo Bonzini <pbonzini@...hat.com>,
Radim Krčmář <rkrcmar@...hat.com>,
Jonathan Corbet <corbet@....net>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>, x86@...nel.org,
Joerg Roedel <joro@...tes.org>, kvm@...r.kernel.org,
linux-doc@...r.kernel.org
Subject: Re: [PATCH v5 untested] kvm: better MWAIT emulation for guests
On 15/03/2017 22:22, Michael S. Tsirkin wrote:
> Guests running Mac OS 5, 6, and 7 (Leopard through Lion) have a problem:
> unless explicitly provided with kernel command line argument
> "idlehalt=0" they'd implicitly assume MONITOR and MWAIT availability,
> without checking CPUID.
>
> We currently emulate that as a NOP but on VMX we can do better: let
> guest stop the CPU until timer, IPI or memory change. CPU will be busy
> but that isn't any worse than a NOP emulation.
>
> Note that mwait within guests is not the same as on real hardware
> because halt causes an exit while mwait doesn't. For this reason it
> might not be a good idea to use the regular MWAIT flag in CPUID to
> signal this capability. Add a flag in the hypervisor leaf instead.
So imagine we had proper MWAIT emulation capabilities based on page
faults. In that case, we could do something as fancy as
Treat MWAIT as pass-through by default
Have a per-vcpu monitor timer 10 times a second in the background that
checks which instruction we're in
If we're in mwait for the last - say - 1 second, switch to emulated
MWAIT, if $IP was in non-mwait within that time, reset counter.
Or instead maybe just reuse the adapter hlt logic?
Either way, with that we should be able to get super low latency IPIs
running while still maintaining some sanity on systems which don't have
dedicated CPUs for workloads.
And we wouldn't need guest modifications, which is a great plus. So
older guests (and Windows?) could benefit from mwait as well.
Alex
Powered by blists - more mailing lists