From: Anthony Liguori <aliguori@us.ibm.com>
To: Eric B Munson <emunson@mgebm.net>
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, 01 Nov 2011 14:28:31 -0500 [thread overview]
Message-ID: <4EB0485F.8010406@us.ibm.com> (raw)
In-Reply-To: <1320091650-24682-3-git-send-email-emunson@mgebm.net>
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.
> +
> /*
> * 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?
Don't you need an atomic getandset here? Can the host clear this flag or only
set it?
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,
next prev parent reply other threads:[~2011-11-01 19:28 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 [this message]
2011-11-01 20:07 ` Eric B Munson
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=4EB0485F.8010406@us.ibm.com \
--to=aliguori@us.ibm.com \
--cc=arnd@arndb.de \
--cc=avi@redhat.com \
--cc=emunson@mgebm.net \
--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.