From: Peter Zijlstra <peterz@infradead.org>
To: Wei Wang <wei.w.wang@intel.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
pbonzini@redhat.com, ak@linux.intel.com, kan.liang@intel.com,
mingo@redhat.com, rkrcmar@redhat.com, like.xu@intel.com,
jannh@google.com, arei.gonglei@huawei.com
Subject: Re: [PATCH v3 1/5] perf/x86: add a function to get the lbr stack
Date: Thu, 20 Sep 2018 14:05:45 +0200 [thread overview]
Message-ID: <20180920120545.GP24124@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <1537437959-8751-2-git-send-email-wei.w.wang@intel.com>
On Thu, Sep 20, 2018 at 06:05:55PM +0800, Wei Wang wrote:
> diff --git a/arch/x86/events/intel/lbr.c b/arch/x86/events/intel/lbr.c
> index c88ed39..c81f160 100644
> --- a/arch/x86/events/intel/lbr.c
> +++ b/arch/x86/events/intel/lbr.c
> @@ -1277,3 +1277,26 @@ void intel_pmu_lbr_init_knl(void)
> if (x86_pmu.intel_cap.lbr_format == LBR_FORMAT_LIP)
> x86_pmu.intel_cap.lbr_format = LBR_FORMAT_EIP_FLAGS;
> }
> +
> +/**
> + * perf_get_lbr_stack - get the lbr stack related MSRs
> + *
> + * @stack: the caller's memory to get the lbr stack
> + *
> + * Returns: 0 indicates that the lbr stack has been successfully obtained.
> + */
> +int perf_get_lbr_stack(struct perf_lbr_stack *stack)
> +{
> + stack->nr = x86_pmu.lbr_nr;
> + stack->tos = x86_pmu.lbr_tos;
> + stack->from = x86_pmu.lbr_from;
> + stack->to = x86_pmu.lbr_to;
> +
> + if (x86_pmu.intel_cap.lbr_format == LBR_FORMAT_INFO)
> + stack->info = MSR_LBR_INFO_0;
> + else
> + stack->info = 0;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(perf_get_lbr_stack);
Blergh, I know KVM is a module but it really sucks having to export
everything :/
> diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h
> index 12f5408..84cc8cb 100644
> --- a/arch/x86/include/asm/perf_event.h
> +++ b/arch/x86/include/asm/perf_event.h
> @@ -267,7 +267,16 @@ struct perf_guest_switch_msr {
> u64 host, guest;
> };
>
> +struct perf_lbr_stack {
> + int nr;
Do we need a negative number of LBR entries?
> + unsigned long tos;
> + unsigned long from;
> + unsigned long to;
> + unsigned long info;
These are all MSR values, that can be 'unsigned int', right? If so,
please also fix struct x86_pmu for that.
> +};
> +
> extern struct perf_guest_switch_msr *perf_guest_get_msrs(int *nr);
> +extern int perf_get_lbr_stack(struct perf_lbr_stack *stack);
> extern void perf_get_x86_pmu_capability(struct x86_pmu_capability *cap);
> extern void perf_check_microcode(void);
> #else
I would like to use the x86_perf namespace or something along those
lines, this is very much not a generic perf interface -- it is very much
x86 (or rather even Intel) specific.
next prev parent reply other threads:[~2018-09-20 12:05 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-20 10:05 [PATCH v3 0/5] Guest LBR Enabling Wei Wang
2018-09-20 10:05 ` [PATCH v3 1/5] perf/x86: add a function to get the lbr stack Wei Wang
2018-09-20 12:05 ` Peter Zijlstra [this message]
2018-09-20 12:07 ` Peter Zijlstra
2018-09-20 10:05 ` [PATCH v3 2/5] KVM/x86: KVM_CAP_X86_GUEST_LBR Wei Wang
2018-09-20 10:05 ` [PATCH v3 3/5] KVM/x86: expose MSR_IA32_PERF_CAPABILITIES to the guest Wei Wang
2018-09-20 12:38 ` Wei Wang
2018-09-20 10:05 ` [PATCH v3 4/5] KVM/x86/vPMU: Add APIs to support host save/restore the guest lbr stack Wei Wang
2018-09-20 12:17 ` Peter Zijlstra
2018-09-20 12:32 ` Peter Zijlstra
2018-09-27 13:45 ` Wang, Wei W
2018-09-20 15:30 ` Andi Kleen
2018-09-20 16:24 ` Peter Zijlstra
2018-09-27 10:10 ` Wang, Wei W
2018-09-27 10:05 ` Wang, Wei W
2018-09-20 10:05 ` [PATCH v3 5/5] KVM/x86/lbr: lazy save " Wei Wang
2018-09-20 12:07 ` Gonglei (Arei)
2018-09-27 14:11 ` Wang, Wei W
2018-09-20 12:37 ` Peter Zijlstra
2018-09-20 12:58 ` Wei Wang
2018-09-20 12:57 ` Peter Zijlstra
2018-09-20 11:34 ` [PATCH v3 0/5] Guest LBR Enabling Gonglei (Arei)
2018-09-20 12:36 ` Wei Wang
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=20180920120545.GP24124@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=ak@linux.intel.com \
--cc=arei.gonglei@huawei.com \
--cc=jannh@google.com \
--cc=kan.liang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=like.xu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=wei.w.wang@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.