From: Marcelo Tosatti <mtosatti@redhat.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,
aliguori@us.ibm.com
Subject: Re: [PATCH 6/6] Add age out of guest paused flag
Date: Fri, 28 Oct 2011 00:14:58 -0200 [thread overview]
Message-ID: <20111028021458.GB13000@amt.cnet> (raw)
In-Reply-To: <1319570779-8907-7-git-send-email-emunson@mgebm.net>
On Tue, Oct 25, 2011 at 03:26:19PM -0400, Eric B Munson wrote:
> The KVM_GUEST_PAUSED flag will prevent a guest from compaining about a soft
> lockup but it can mask real soft lockups if the flag isn't cleared when it is
> no longer relevant. This patch adds a kvm ioctl that the hypervisor will use
> when it resumes a guest to start a timer for aging out the flag. The time out
> will be specified by the hypervisor in the ioctl call.
>
> Signed-off-by: Eric B Munson <emunson@mgebm.net>
> ---
> arch/x86/include/asm/pvclock.h | 2 ++
> arch/x86/kernel/kvmclock.c | 24 ++++++++++++++++++++++++
> arch/x86/kvm/x86.c | 9 +++++++++
> include/linux/kvm.h | 2 ++
> include/linux/kvm_host.h | 2 ++
> 5 files changed, 39 insertions(+), 0 deletions(-)
>
> diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h
> index 9312814..e8460b9 100644
> --- a/arch/x86/include/asm/pvclock.h
> +++ b/arch/x86/include/asm/pvclock.h
> @@ -18,6 +18,8 @@ void kvm_set_host_stopped(struct kvm_vcpu *vcpu);
>
> bool kvm_check_and_clear_host_stopped(int cpu);
>
> +void kvm_clear_guest_paused(struct kvm_vcpu *vcpu, unsigned int length);
> +
> /*
> * 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 f4fff3d..f3f3935 100644
> --- a/arch/x86/kernel/kvmclock.c
> +++ b/arch/x86/kernel/kvmclock.c
> @@ -23,6 +23,8 @@
> #include <asm/apic.h>
> #include <linux/percpu.h>
> #include <linux/kvm_host.h>
> +#include <linux/kobject.h>
> +#include <linux/sysfs.h>
>
> #include <asm/x86_init.h>
> #include <asm/reboot.h>
> @@ -144,6 +146,28 @@ bool kvm_check_and_clear_host_stopped(int cpu)
> return ret;
> }
>
> +static void kvm_timer_clear_guest_paused(unsigned long vcpu_addr)
> +{
> + struct kvm_vcpu *vcpu = (struct kvm_vcpu *)vcpu_addr;
> + struct pvclock_vcpu_time_info *src = &vcpu->arch.hv_clock;
> + src->flags = src->flags & (!PVCLOCK_GUEST_STOPPED);
> +}
> +
> +/*
> + * Host has resumed the guest, we need to clear the guest paused flag so we
> + * don't mask any real soft lockups.
> + */
> +void kvm_clear_guest_paused(struct kvm_vcpu *vcpu, unsigned int length)
> +{
> + if (!timer_pending(&vcpu->flag_timer))
> + setup_timer(&vcpu->flag_timer,
> + kvm_timer_clear_guest_paused,
> + (unsigned long)vcpu);
> + mod_timer(&vcpu->flag_timer,
> + jiffies + (length * HZ));
> +}
> +EXPORT_SYMBOL_GPL(kvm_clear_guest_paused);
So this is why the scheme could become awkward. You can't determine a
value for length that will guarantee that _no_ genuine softlockup is
omitted.
Can you think of a way to achieve this?
Also note, all host code is located in arch/x86/kvm, guest
code in arch/x86/kernel/kvmclock.c.
next prev parent reply other threads:[~2011-10-28 2:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-25 19:26 [PATCH 0/6] Avoid soft lockup message when KVM is stopped by host Eric B Munson
2011-10-25 19:26 ` [PATCH 1/6] Add flag to indicate that a vm was stopped by the host Eric B Munson
2011-10-25 19:26 ` [PATCH 2/6] Add functions to check if the host has stopped the vm Eric B Munson
2011-10-25 19:26 ` [PATCH 3/6] Add ioctl for KVM_GUEST_STOPPED Eric B Munson
2011-10-28 1:52 ` Marcelo Tosatti
2011-10-28 13:11 ` Eric B Munson
2011-10-25 19:26 ` [PATCH 4/6] Add generic stubs for kvm stop check functions Eric B Munson
2011-10-25 19:26 ` [PATCH 5/6] Add check for suspended vm in softlockup detector Eric B Munson
2011-10-25 19:26 ` [PATCH 6/6] Add age out of guest paused flag Eric B Munson
2011-10-28 2:14 ` Marcelo Tosatti [this message]
2011-10-28 13:21 ` 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=20111028021458.GB13000@amt.cnet \
--to=mtosatti@redhat.com \
--cc=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.