Quoting Gabriel's post http://www.spinics.net/lists/kvm/msg103792.html : [...] > E.g., OS X 10.5 *does* check CPUID, and panics if it doesn't find it. > It needs the MONITOR cpuid flag to be on, *and* the actual > instructions to work. On Wed, Jun 18, 2014 at 11:23 AM, Nadav Amit <nadav.amit@xxxxxxxxx> wrote: > On 6/18/14, 8:59 PM, Eric Northup wrote: >> >> On Wed, Jun 18, 2014 at 7:19 AM, Nadav Amit <namit@xxxxxxxxxxxxxxxxx> >> wrote: >>> >>> mwait and monitor are currently handled as nop. Considering this >>> behavior, they >>> should still be handled correctly, i.e., check execution conditions and >>> generate >>> exceptions when required. mwait and monitor may also be executed in >>> real-mode >>> and are not handled in that case. This patch performs the emulation of >>> monitor-mwait according to Intel SDM (other than checking whether >>> interrupt can >>> be used as a break event). >>> >>> Signed-off-by: Nadav Amit <namit@xxxxxxxxxxxxxxxxx> >>> --- >>> arch/x86/kvm/emulate.c | 41 +++++++++++++++++++++++++++++++++++++++-- >>> arch/x86/kvm/svm.c | 22 ++-------------------- >>> arch/x86/kvm/vmx.c | 27 +++++++++++---------------- >>> 3 files changed, 52 insertions(+), 38 deletions(-) >>> >>> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c >>> index ef7a5a0..424b58d 100644 >>> --- a/arch/x86/kvm/emulate.c >>> +++ b/arch/x86/kvm/emulate.c >>> @@ -3344,6 +3344,43 @@ static int em_bswap(struct x86_emulate_ctxt *ctxt) >>> return X86EMUL_CONTINUE; >>> } >>> >>> +static int em_monitor(struct x86_emulate_ctxt *ctxt) >>> +{ >>> + int rc; >>> + struct segmented_address addr; >>> + u64 rcx = reg_read(ctxt, VCPU_REGS_RCX); >>> + u64 rax = reg_read(ctxt, VCPU_REGS_RAX); >>> + u8 byte; >> >> >> I'd request: >> >> u32 ebx, ecx, edx, eax = 1; >> ctxt->opt->get_cpuid(ctxt, &eax, &ebx, &ecx, &edx); >> if (!(ecx & FFL(MWAIT))) >> return emulate_ud(ctxt); >> >> and also in em_mwait. >> > > I had similar implementation on previous version, which also checked on > mwait whether "interrupt as break event" matches ECX value. However, I was > under the impression that it was decided that MWAIT will always be emulated > as NOP to avoid misbehaving VMs that ignore CPUID (see the discussion at > http://www.spinics.net/lists/kvm/msg102766.html ). > > Nadav -- 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