[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH] target/arm: Configure number of pmu counters
From: |
Sai Pavan Boddu |
Subject: |
RE: [PATCH] target/arm: Configure number of pmu counters |
Date: |
Wed, 2 Sep 2020 13:40:02 +0000 |
Hi Peter,
> -----Original Message-----
> From: Peter Maydell <peter.maydell@linaro.org>
> Sent: Tuesday, September 1, 2020 6:18 PM
> To: Sai Pavan Boddu <saipava@xilinx.com>
> Cc: Richard Henderson <richard.henderson@linaro.org>; Philippe Mathieu-
> Daudé <philmd@redhat.com>; Andrew Jones <drjones@redhat.com>; Paolo
> Bonzini <pbonzini@redhat.com>; Alex Bennée <alex.bennee@linaro.org>;
> Eric Auger <eric.auger@redhat.com>; Edgar Iglesias <edgari@xilinx.com>;
> qemu-arm <qemu-arm@nongnu.org>; QEMU Developers <qemu-
> devel@nongnu.org>
> Subject: Re: [PATCH] target/arm: Configure number of pmu counters
>
> On Mon, 31 Aug 2020 at 12:44, Sai Pavan Boddu
> <sai.pavan.boddu@xilinx.com> wrote:
> >
> > Default the pmu counters to 4 and configure it a 6 for a53 cores.
> >
> > Signed-off-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
> > ---
> > target/arm/cpu.c | 3 +++
> > target/arm/cpu.h | 3 +++
> > target/arm/cpu64.c | 1 +
> > target/arm/helper.c | 2 +-
> > 4 files changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/target/arm/cpu.c b/target/arm/cpu.c index
> > 6b382fc..805a692 100644
> > --- a/target/arm/cpu.c
> > +++ b/target/arm/cpu.c
> > @@ -1051,6 +1051,9 @@ static void arm_cpu_initfn(Object *obj)
> > cpu->psci_version = 1; /* By default assume PSCI v0.1 */
> > cpu->kvm_target = QEMU_KVM_ARM_TARGET_NONE;
> >
> > + /* set number of pmu counters to 4 */
> > + cpu->pmcrn = 4;
> > +
> > if (tcg_enabled()) {
> > cpu->psci_version = 2; /* TCG implements PSCI 0.2 */
> > }
> > diff --git a/target/arm/cpu.h b/target/arm/cpu.h index
> > ac857bd..3b47ba8 100644
> > --- a/target/arm/cpu.h
> > +++ b/target/arm/cpu.h
> > @@ -879,6 +879,9 @@ struct ARMCPU {
> > */
> > int32_t core_count;
> >
> > + /* Number of pmu counters */
> > + uint8_t pmcrn;
> > +
> > /* The instance init functions for implementation-specific subclasses
> > * set these fields to specify the implementation-dependent values of
> > * various constant registers and reset values of non-constant
>
> Rather than doing this, I think the better approach would be to switch to
> treating PMCR_EL0 as an ID register in the same way we do for other varies-
> per-CPU ID registers:
>
> * new field uint64_t pmcr_el0 in the ARMISARegisters sub-struct of ARMCPU
> * each CPU's initfn needs to set this (sorry, this is going to mean
> a fair amount of digging through TRMs to find the right values)
> * define_pmu_regs() just uses the isar.pmcr_el0 field as the resetvalue
> for PMCR_EL0
> * define_pmu_regs() needs to use pmu_num_counters() to get the number
> of counters for its loops
>
> Side note: looking at the code I see we don't implement the effect that
> MDCR_EL2.HPMN has on this register... (and probably we don't in general
> get the EL2 handling of the PMU right in other places too).
[Sai Pavan Boddu] Sure, I will get back on this. I need to understand more.
Thanks,
Sai Pavan
>
> thanks
> -- PMM