All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric B Munson <emunson@mgebm.net>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: avi@redhat.com, mingo@redhat.com, x86@kernel.org, hpa@zytor.com,
	arnd@arndb.de, linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	linux-arch@vger.kernel.org, ryanh@linux.vnet.ibm.com
Subject: Re: [PATCH 2/6 V2] Add functions to check if the host has stopped the vm
Date: Tue, 1 Nov 2011 16:07:46 -0400	[thread overview]
Message-ID: <20111101200746.GC9852@mgebm.net> (raw)
In-Reply-To: <4EB0485F.8010406@us.ibm.com>

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

On Tue, 01 Nov 2011, Anthony Liguori wrote:

> On 10/31/2011 03:07 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.
> >
> >Signed-off-by: Eric B Munson<emunson@mgebm.net>
> >---
> >  arch/x86/include/asm/pvclock.h |    2 ++
> >  arch/x86/kernel/kvmclock.c     |   19 +++++++++++++++++++
> >  2 files changed, 21 insertions(+), 0 deletions(-)
> >
> >diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h
> >index c59cc97..7d3ba41 100644
> >--- a/arch/x86/include/asm/pvclock.h
> >+++ b/arch/x86/include/asm/pvclock.h
> >@@ -13,6 +13,8 @@ void pvclock_read_wallclock(struct pvclock_wall_clock *wall,
> >  			    struct timespec *ts);
> >  void pvclock_resume(void);
> >
> >+bool kvm_check_and_clear_host_stopped(int cpu);
> 
> A kvm-specific function shouldn't be declared in pvclock.h as this
> is shared code between KVM and Xen.

I'll move it for V3.

> 
> >+
> >  /*
> >   * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction,
> >   * yielding a 64-bit result.
> >diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
> >index c1a0188..8ddcfaf 100644
> >--- a/arch/x86/kernel/kvmclock.c
> >+++ b/arch/x86/kernel/kvmclock.c
> >@@ -113,6 +113,25 @@ static void kvm_get_preset_lpj(void)
> >  	preset_lpj = lpj;
> >  }
> >
> >+bool kvm_check_and_clear_host_stopped(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);
> >+	if ((src->flags&  PVCLOCK_GUEST_STOPPED) != 0) {
> >+		src->flags = src->flags&  (~PVCLOCK_GUEST_STOPPED);
> >+		ret = true;
> >+	}
> 
> It would be helpful to separate out the patches for guest enablement
> from host enablement.  This is a guest function, correct?
> 

Yes, this is guest only.

> Don't you need an atomic getandset here?  Can the host clear this
> flag or only set it?

I didn't think they needed to be atomic because an over-write of this means that
a soft lockup message is delayed by the detector's timeout in the worst case.
If you disagree with that assessment, I can move to atomic get/set.

> 
> It's ashame we don't have a proper pvclock spec in Documentation/.
> I would suggest at least adding a description of how this bit works
> in the first patch.
> 



> Regards,
> 
> Anthony Liguori
> 
> >+
> >+	return ret;
> >+}
> >+
> >  static struct clocksource kvm_clock = {
> >  	.name = "kvm-clock",
> >  	.read = kvm_clock_get_cycles,
> 

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

  reply	other threads:[~2011-11-01 20:07 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-31 20:07 [PATCH 0/6 V2] Avoid soft lockup message when KVM is stopped by host Eric B Munson
2011-10-31 20:07 ` [PATCH 1/6 V2] Add flag to indicate that a vm was stopped by the host Eric B Munson
2011-11-01 19:22   ` Anthony Liguori
2011-10-31 20:07 ` [PATCH 2/6 V2] Add functions to check if the host has stopped the vm Eric B Munson
2011-11-01 19:28   ` Anthony Liguori
2011-11-01 20:07     ` Eric B Munson [this message]
2011-10-31 20:07 ` [PATCH 3/6 V2] Add ioctl for KVM_GUEST_STOPPED Eric B Munson
2011-11-01 19:32   ` Anthony Liguori
2011-11-01 20:11     ` Eric B Munson
2011-10-31 20:07 ` [PATCH 4/6 V2] Add generic stubs for kvm stop check functions Eric B Munson
2011-10-31 20:07 ` [PATCH 5/6 V2] Add check for suspended vm in softlockup detector Eric B Munson
2011-10-31 20:07 ` [PATCH 6/6 V2] Add age out of guest paused flag Eric B Munson
2011-11-01 19:34   ` Anthony Liguori
2011-11-01 19:51     ` Eric B Munson
2011-11-01 19:58       ` Anthony Liguori
2011-11-01 20:10         ` Eric B Munson

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=20111101200746.GC9852@mgebm.net \
    --to=emunson@mgebm.net \
    --cc=aliguori@us.ibm.com \
    --cc=arnd@arndb.de \
    --cc=avi@redhat.com \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@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 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.