All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Radim Krčmář" <rkrcmar@redhat.com>
To: Nadav Amit <nadav.amit@gmail.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	"Gabriel L. Somlo" <gsomlo@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	x86@kernel.org, Joerg Roedel <joro@8bytes.org>,
	kvm@vger.kernel.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH v5 untested] kvm: better MWAIT emulation for guests
Date: Tue, 21 Mar 2017 20:22:39 +0100	[thread overview]
Message-ID: <20170321192239.GD25540@potion> (raw)
In-Reply-To: <15F4973A-9D7E-46B9-97B9-A431A756C272@gmail.com>

2017-03-21 10:29-0700, Nadav Amit:
> 
> > On Mar 21, 2017, at 9:58 AM, Radim Krčmář <rkrcmar@redhat.com> 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++;
 	}

  reply	other threads:[~2017-03-21 19:27 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-15 21:22 [PATCH v5 untested] kvm: better MWAIT emulation for guests Michael S. Tsirkin
2017-03-15 23:35 ` Gabriel L. Somlo
2017-03-15 23:41   ` Michael S. Tsirkin
2017-03-16 13:24     ` Gabriel L. Somlo
2017-03-16 14:04       ` Michael S. Tsirkin
2017-03-16 14:58         ` Gabriel L. Somlo
2017-03-16 15:23           ` Michael S. Tsirkin
2017-03-16 15:35           ` Radim Krčmář
2017-03-16 16:01             ` Radim Krčmář
2017-03-16 16:47               ` Gabriel L. Somlo
2017-03-16 17:22                 ` Radim Krčmář
2017-03-16 17:39                   ` Gabriel L. Somlo
2017-03-16 17:27                 ` Michael S. Tsirkin
2017-03-16 17:41                   ` Gabriel L. Somlo
2017-03-16 18:29                     ` Michael S. Tsirkin
2017-03-16 19:24                       ` Gabriel L. Somlo
2017-03-16 19:27                         ` Michael S. Tsirkin
2017-03-16 20:17                           ` Gabriel L. Somlo
2017-03-16 21:14                             ` Gabriel L. Somlo
2017-03-17  2:03                               ` Michael S. Tsirkin
2017-03-17 13:23                                 ` Gabriel L. Somlo
2017-03-21  3:22                                   ` Michael S. Tsirkin
2017-03-21 16:58                                     ` Radim Krčmář
2017-03-21 17:29                                       ` Nadav Amit
2017-03-21 17:29                                         ` Nadav Amit
2017-03-21 19:22                                         ` Radim Krčmář [this message]
2017-03-21 22:51                                           ` Gabriel Somlo
2017-03-22  0:02                                             ` Nadav Amit
2017-03-22 13:35                                               ` Michael S. Tsirkin
2017-03-22 14:10                                                 ` Gabriel L. Somlo
2017-03-22 14:15                                                   ` Michael S. Tsirkin
2017-03-16 16:16             ` Gabriel L. Somlo
2017-03-16 16:45               ` Michael S. Tsirkin
2017-03-16 16:52                 ` Gabriel L. Somlo
2017-03-16 16:54                   ` Gabriel L. Somlo
2017-03-16 17:14                     ` Michael S. Tsirkin
2017-03-16 17:38                       ` Radim Krčmář
2017-03-16 14:08       ` Radim Krčmář
2017-03-16 15:44         ` Gabriel L. Somlo
2017-03-16 15:54           ` Radim Krčmář
2017-03-16 16:26             ` Gabriel L. Somlo
2017-03-21 16:16 ` Joerg Roedel
2017-03-21 18:45   ` Michael S. Tsirkin
2017-03-27 13:34 ` Alexander Graf
2017-03-28 14:28   ` Radim Krčmář
2017-03-28 20:35     ` Jim Mattson
2017-03-29 12:11       ` Radim Krčmář
2017-04-03 10:04         ` Alexander Graf
2017-04-04 12:39           ` Radim Krčmář
2017-04-04 12:51             ` Alexander Graf
2017-04-04 13:13               ` Radim Krčmář
2017-04-04 13:15                 ` Alexander Graf
2017-04-04 13:44                   ` Radim Krčmář
2017-04-04 13:44                     ` [Qemu-devel] " Radim Krčmář

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170321192239.GD25540@potion \
    --to=rkrcmar@redhat.com \
    --cc=corbet@lwn.net \
    --cc=gsomlo@gmail.com \
    --cc=hpa@zytor.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mst@redhat.com \
    --cc=nadav.amit@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.