From: Avi Kivity <avi@redhat.com>
To: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
Cc: Ingo Molnar <mingo@elte.hu>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Sheng Yang <sheng@linux.intel.com>,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
Marcelo Tosatti <mtosatti@redhat.com>,
oerg Roedel <joro@8bytes.org>,
Jes Sorensen <Jes.Sorensen@redhat.com>,
Gleb Natapov <gleb@redhat.com>,
Zachary Amsden <zamsden@redhat.com>,
zhiteng.huang@intel.com, tim.c.chen@intel.com,
Arnaldo Carvalho de Melo <acme@infradead.org>
Subject: Re: [PATCH V3] perf & kvm: Enhance perf to collect KVM guest os statistics from host side
Date: Wed, 14 Apr 2010 12:20:15 +0300 [thread overview]
Message-ID: <4BC588CF.5010507@redhat.com> (raw)
In-Reply-To: <1902387910.2078.435.camel@ymzhang.sh.intel.com>
On 04/14/2030 12:05 PM, Zhang, Yanmin wrote:
> Here is the new patch of V3 against tip/master of April 13th
> if anyone wants to try it.
>
>
Thanks for persisting despite the flames.
Can you please separate arch/x86/kvm part of the patch? That will make
for easier reviewing, and will need to go through separate trees.
Sheng, did you make any progress with the NMI injection issue?
> +
> diff -Nraup linux-2.6_tip0413/arch/x86/kvm/x86.c linux-2.6_tip0413_perfkvm/arch/x86/kvm/x86.c
> --- linux-2.6_tip0413/arch/x86/kvm/x86.c 2010-04-14 11:11:04.341042024 +0800
> +++ linux-2.6_tip0413_perfkvm/arch/x86/kvm/x86.c 2010-04-14 11:32:45.841278890 +0800
> @@ -3765,6 +3765,35 @@ static void kvm_timer_init(void)
> }
> }
>
> +static DEFINE_PER_CPU(struct kvm_vcpu *, current_vcpu);
> +
> +static int kvm_is_in_guest(void)
> +{
> + return percpu_read(current_vcpu) != NULL;
>
An even more accurate way to determine this is to check whether the
interrupt frame points back at the 'int $2' instruction. However we
plan to switch to a self-IPI method to inject the NMI, and I'm not sure
wether APIC NMIs are accepted on an instruction boundary or whether
there's some latency involved.
> +static unsigned long kvm_get_guest_ip(void)
> +{
> + unsigned long ip = 0;
> + if (percpu_read(current_vcpu))
> + ip = kvm_rip_read(percpu_read(current_vcpu));
> + return ip;
> +}
>
This may be racy. kvm_rip_read() accesses a cache in memory; if we're
in the process of updating the cache, then we may read a stale value.
See below.
>
> trace_kvm_entry(vcpu->vcpu_id);
> +
> + percpu_write(current_vcpu, vcpu);
> kvm_x86_ops->run(vcpu);
> + percpu_write(current_vcpu, NULL);
>
If you move this around the 'int $2' instructions you will close the
race, as a stray NMI won't catch us updating the rip cache. But that
depends on whether self-IPI is accepted on the next instruction or not.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-04-14 9:20 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-14 9:06 [PATCH V3] perf & kvm: Enhance perf to collect KVM guest os statistics from host side Zhang, Yanmin
2030-04-14 9:05 ` Zhang, Yanmin
2010-04-14 9:20 ` Avi Kivity [this message]
2010-04-14 9:43 ` Sheng Yang
2010-04-14 9:57 ` Avi Kivity
2010-04-14 10:14 ` Sheng Yang
2010-04-14 10:19 ` Avi Kivity
2010-04-14 10:27 ` Sheng Yang
2010-04-14 10:33 ` Avi Kivity
2010-04-14 10:36 ` Sheng Yang
2010-04-14 10:43 ` Ingo Molnar
2010-04-14 11:17 ` Avi Kivity
2010-04-15 1:05 ` Zhang, Yanmin
2030-04-15 1:04 ` Zhang, Yanmin
2010-04-15 8:05 ` Avi Kivity
2010-04-15 8:58 ` Zhang, Yanmin
2030-04-15 8:57 ` Zhang, Yanmin
2010-04-15 9:04 ` oerg Roedel
2010-04-15 9:09 ` Avi Kivity
2010-04-15 9:44 ` oerg Roedel
2010-04-15 9:48 ` Avi Kivity
2010-04-15 10:40 ` Joerg Roedel
2010-04-15 10:44 ` Avi Kivity
2010-04-15 14:08 ` Sheng Yang
2010-04-15 14:08 ` Sheng Yang
2010-04-17 18:12 ` Avi Kivity
2010-04-19 8:25 ` Avi Kivity
2010-04-20 3:32 ` Sheng Yang
2010-04-20 9:38 ` Avi Kivity
2010-04-27 19:03 ` [PATCH] Psychovisually-optimized HZ setting (2.6.33.3) Uwaysi Bin Kareem
2010-04-27 19:51 ` Randy Dunlap
2010-04-27 21:50 ` Valdis.Kletnieks
2010-04-15 8:58 ` [PATCH V3] perf & kvm: Enhance perf to collect KVM guest os statistics from host side Zhang, Yanmin
2010-04-15 1:05 ` Zhang, Yanmin
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=4BC588CF.5010507@redhat.com \
--to=avi@redhat.com \
--cc=Jes.Sorensen@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@infradead.org \
--cc=gleb@redhat.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mtosatti@redhat.com \
--cc=sheng@linux.intel.com \
--cc=tim.c.chen@intel.com \
--cc=yanmin_zhang@linux.intel.com \
--cc=zamsden@redhat.com \
--cc=zhiteng.huang@intel.com \
/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.