Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933630AbdCUT1K (ORCPT ); Tue, 21 Mar 2017 15:27:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59338 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933133AbdCUTZW (ORCPT ); Tue, 21 Mar 2017 15:25:22 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com F198FC05AA59 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=rkrcmar@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com F198FC05AA59 Date: Tue, 21 Mar 2017 20:22:39 +0100 From: Radim =?utf-8?B?S3LEjW3DocWZ?= To: Nadav Amit Cc: "Michael S. Tsirkin" , "Gabriel L. Somlo" , LKML , Paolo Bonzini , Jonathan Corbet , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Joerg Roedel , kvm@vger.kernel.org, linux-doc@vger.kernel.org Subject: Re: [PATCH v5 untested] kvm: better MWAIT emulation for guests Message-ID: <20170321192239.GD25540@potion> References: <20170316202024-mutt-send-email-mst@kernel.org> <20170316192440.GL4085@HEDWIG.INI.CMU.EDU> <20170316212635-mutt-send-email-mst@kernel.org> <20170316201710.GN4085@HEDWIG.INI.CMU.EDU> <20170316211414.GO4085@HEDWIG.INI.CMU.EDU> <20170317035716-mutt-send-email-mst@kernel.org> <20170317132355.GA10906@HEDWIG.INI.CMU.EDU> <20170321052102-mutt-send-email-mst@kernel.org> <20170321165831.GC25540@potion> <15F4973A-9D7E-46B9-97B9-A431A756C272@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <15F4973A-9D7E-46B9-97B9-A431A756C272@gmail.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 21 Mar 2017 19:22:47 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1859 Lines: 48 2017-03-21 10:29-0700, Nadav Amit: > > > On Mar 21, 2017, at 9:58 AM, Radim Krčmář wrote: > > > In '-smp 2', the writing VCPU always does 10000 wakeups by writing into > > monitored memory, but the mwaiting VCPU can be also woken up by host > > interrupts, which might add a few exits depending on timing. > > > > I didn't spend much time in making the PASS/FAIL mean much, or ensuring > > that we only get 10000 wakeups ... it is nothing to be worried about. > > > > Hint 240 behaves as nop even on my system, so I still don't find > > anything insane on that machine (if OS X is exluded) ... > > From my days in Intel (10 years ago), I can say that MWAIT wakes for many > microarchitecural events beside interrupts. > > Out of curiosity, aren’t you worried that on OS X the wbinvd causes an exit > after the monitor and before the mwait? VM entry clears the monitoring, so it should behave just like an MWAIT without MONITOR, which is NOP according to the spec. It does so on modern hardware, but it definitely is a good thing to try ... (I am worried about disabling MWAIT exits by default and it's a no-go until we understand why OS X doesn't work.) Gabriel, how does testing with this change behave on the old machine? Thanks. ---8<--- This should be the same as "wbinvd", because "wbinvd" does nothing without non-coherent vfio. Simply replacing "vmcall" with "wbinvd" is an option if the "vmcall" version works as expected. --- diff --git a/x86/mwait.c b/x86/mwait.c index 20f4dcbff8ae..19f988b94541 100644 --- a/x86/mwait.c +++ b/x86/mwait.c @@ -54,6 +54,7 @@ int main(int argc, char **argv) while ((smp ? *page : resumes) < TARGET_RESUMES) { asm volatile("monitor" :: "a" (page), "c" (0), "d" (0)); + asm volatile("vmcall" :: "a"(-1)); asm volatile("mwait" :: "a" (eax), "c" (ecx)); resumes++; }