linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric B Munson <emunson@mgebm.net>
To: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
	mingo@redhat.com, hpa@zytor.com, arnd@arndb.de,
	ryanh@linux.vnet.ibm.com, aliguori@us.ibm.com,
	jeremy.fitzhardinge@citrix.com, levinsasha928@gmail.com,
	Jan Kiszka <jan.kiszka@siemens.com>,
	kvm@vger.kernel.org, linux-arch@vger.kernel.org, x86@kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/5 V5] Add functions to check if the host has stopped the vm
Date: Wed, 14 Dec 2011 12:11:05 -0500	[thread overview]
Message-ID: <20111214171105.GB4075@mgebm.net> (raw)
In-Reply-To: <4EE8B4AD.2060101@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2137 bytes --]

On Wed, 14 Dec 2011, Avi Kivity wrote:

> On 12/14/2011 02:11 PM, Marcelo Tosatti wrote:
> > On Thu, Dec 08, 2011 at 10:23:10AM -0500, Eric B Munson wrote:
> > > On Wed, 07 Dec 2011, Avi Kivity wrote:
> > > 
> > > > On 12/05/2011 10:19 PM, Eric B Munson wrote:
> > > > > When a host stops or suspends a VM it will set a flag to show this.  The
> > > > > watchdog will use these functions to determine if a softlockup is real, or the
> > > > > result of a suspended VM.
> > > > >  
> > > > > +bool kvm_check_and_clear_guest_paused(int cpu)
> > > > > +{
> > > > > +	bool ret = false;
> > > > > +	struct pvclock_vcpu_time_info *src;
> > > > > +
> > > > > +	/*
> > > > > +	 * per_cpu() is safe here because this function is only called from
> > > > > +	 * timer functions where preemption is already disabled.
> > > > > +	 */
> > > > > +	WARN_ON(!in_atomic());
> > > > > +	src = &per_cpu(hv_clock, cpu);
> > > > 
> > > > __get_cpu_var(); drop the cpu argument
> > > > 
> > > 
> > > Will change for V6.
> > > 
> > > > > +	if ((src->flags & PVCLOCK_GUEST_STOPPED) != 0) {
> > > > > +		src->flags = src->flags & (~PVCLOCK_GUEST_STOPPED);
> > > > 
> > > > Isn't this racy?  Between reading and writing src->flags, we can exit to
> > > > the hypervisor and add/remove new flags.  The write then overrides those
> > > > new flags.
> > > > 
> > > 
> > > If I understand (please correct me if this is wrong) because this is only
> > > called from the watchdog, which disables preemption, we should be protected
> > > from something else writing to these flags.
> >
> > The host can write, but in that case race is harmless.
> 
> Why is it harmless?  You don't know what's in those other flags.
> 
> -- 
> error compiling committee.c: too many arguments to function
> 

Currently there is only one other flag in this byte (PVCLOCK_TSC_STABLE_BIT)
and it isset once in kvmclock_init().  It is highly unlikely that the vm will
be stopped during this init and have the flag clobbered.  After the tsc stable
bit is written in the init, the field is read only outside of the guest paused
code.

Eric

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2011-12-14 17:11 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-05 20:18 [PATCH 0/5 V5] Avoid soft lockup message when KVM is stopped by host Eric B Munson
2011-12-05 20:18 ` Eric B Munson
2011-12-05 20:19 ` [PATCH 1/5 V5] Add flag to indicate that a vm was stopped by the host Eric B Munson
2011-12-05 20:19   ` Eric B Munson
2011-12-05 20:19 ` [PATCH 2/5 V5] Add functions to check if the host has stopped the vm Eric B Munson
2011-12-05 20:19   ` Eric B Munson
2011-12-07 14:31   ` Avi Kivity
2011-12-08 15:23     ` Eric B Munson
2011-12-08 15:23       ` Eric B Munson
2011-12-14 12:11       ` Marcelo Tosatti
2011-12-14 12:11         ` Marcelo Tosatti
2011-12-14 14:37         ` Avi Kivity
2011-12-14 17:11           ` Eric B Munson [this message]
2011-12-14 17:11             ` Eric B Munson
2011-12-14 17:30             ` Avi Kivity
2011-12-14 17:57               ` Eric B Munson
2011-12-05 20:19 ` [PATCH 3/5 V5] Add ioctl for KVMCLOCK_GUEST_STOPPED Eric B Munson
2011-12-05 20:19   ` Eric B Munson
2011-12-07 14:34   ` Avi Kivity
2011-12-08 15:25     ` Eric B Munson
2011-12-05 20:19 ` [PATCH 4/5 V5] Add generic stubs for kvm stop check functions Eric B Munson
2011-12-05 20:19   ` Eric B Munson
2011-12-07 14:36   ` Avi Kivity
2011-12-07 14:36     ` Avi Kivity
2011-12-08 15:27     ` Eric B Munson
2011-12-05 20:19 ` [PATCH 5/5 V5] Add check for suspended vm in softlockup detector Eric B Munson
2011-12-05 20:19   ` Eric B Munson
2011-12-07 14:38   ` Avi Kivity
2011-12-07 14:38     ` Avi Kivity
2011-12-07 14:41 ` [PATCH 0/5 V5] Avoid soft lockup message when KVM is stopped by host Avi Kivity
2011-12-08 15:19   ` Eric B Munson
2011-12-14 15:08     ` Avi Kivity
2011-12-14 15:08       ` Avi Kivity
2011-12-14 17:58       ` Eric B Munson
2011-12-14 17:58         ` Eric B Munson
2011-12-15  9:48         ` Avi Kivity
2011-12-15 18:53           ` Eric B Munson
2011-12-19 13:01             ` Avi Kivity
2011-12-19 13:01               ` Avi Kivity
2011-12-11 12:40   ` Dor Laor
2011-12-14 12:18     ` Marcelo Tosatti
2011-12-14 12:18       ` Marcelo Tosatti
2011-12-14 12:16   ` Marcelo Tosatti
2011-12-14 12:16     ` Marcelo Tosatti
2011-12-14 14:39     ` Avi Kivity
2011-12-14 14:39       ` Avi Kivity
2011-12-14 14:49       ` Anthony Liguori
2011-12-14 15:01         ` Avi Kivity
2011-12-14 14:54       ` Eric B Munson
2011-12-14 18:21       ` Marcelo Tosatti
2011-12-15 10:21         ` Avi Kivity
2011-12-16  9:31           ` Marcelo Tosatti
2011-12-19 12:59             ` Avi Kivity
2011-12-19 16:11               ` Marcelo Tosatti
2011-12-19 16:11                 ` Marcelo Tosatti
2011-12-19 17:50                 ` Marcelo Tosatti
2011-12-19 17:50                   ` Marcelo Tosatti
2011-12-22  9:59                   ` Avi Kivity
2011-12-08 11:34 ` Amit Shah
2011-12-15 11:55   ` Avi Kivity
2011-12-19 12:52     ` Amit Shah
2011-12-19 12:52       ` Amit Shah
2011-12-19 12:59       ` Avi Kivity
2011-12-19 17:59         ` Amit Shah
2011-12-22  9:18           ` Dor Laor

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=20111214171105.GB4075@mgebm.net \
    --to=emunson@mgebm.net \
    --cc=aliguori@us.ibm.com \
    --cc=arnd@arndb.de \
    --cc=avi@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jeremy.fitzhardinge@citrix.com \
    --cc=kvm@vger.kernel.org \
    --cc=levinsasha928@gmail.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=ryanh@linux.vnet.ibm.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).