[PATCH 1/5] KVM: arm64: Divorce the perf code from oprofile helpers

Marc Zyngier maz at kernel.org
Thu Apr 15 11:42:00 BST 2021


On Thu, 15 Apr 2021 07:59:26 +0100,
Keqian Zhu <zhukeqian1 at huawei.com> wrote:
> 
> Hi Marc,
> 
> On 2021/4/14 21:44, Marc Zyngier wrote:
> > KVM/arm64 is the sole user of perf_num_counters(), and really
> > could do without it. Stop using the obsolete API by relying on
> > the existing probing code.
> > 
> > Signed-off-by: Marc Zyngier <maz at kernel.org>
> > ---
> >  arch/arm64/kvm/perf.c     | 7 +------
> >  arch/arm64/kvm/pmu-emul.c | 2 +-
> >  include/kvm/arm_pmu.h     | 4 ++++
> >  3 files changed, 6 insertions(+), 7 deletions(-)
> > 
> > diff --git a/arch/arm64/kvm/perf.c b/arch/arm64/kvm/perf.c
> > index 739164324afe..b8b398670ef2 100644
> > --- a/arch/arm64/kvm/perf.c
> > +++ b/arch/arm64/kvm/perf.c
> > @@ -50,12 +50,7 @@ static struct perf_guest_info_callbacks kvm_guest_cbs = {
> >  
> >  int kvm_perf_init(void)
> >  {
> > -	/*
> > -	 * Check if HW_PERF_EVENTS are supported by checking the number of
> > -	 * hardware performance counters. This could ensure the presence of
> > -	 * a physical PMU and CONFIG_PERF_EVENT is selected.
> > -	 */
> > -	if (IS_ENABLED(CONFIG_ARM_PMU) && perf_num_counters() > 0)
> > +	if (kvm_pmu_probe_pmuver() != 0xf)
> The probe() function may be called many times
> (kvm_arm_pmu_v3_set_attr also calls it).  I don't know whether the
> first calling is enough. If so, can we use a static variable in it,
> so the following calling can return the result right away?

No, because that wouldn't help with crappy big-little implementations
that could have PMUs with different versions. We want to find the
version at the point where the virtual PMU is created, which is why we
call the probe function once per vcpu.

This of course is broken in other ways (BL+KVM is a total disaster
when it comes to PMU), but making this static would just make it
worse.

	M.

-- 
Without deviation from the norm, progress is not possible.



More information about the linux-arm-kernel mailing list