[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161110171732.GA17134@arm.com>
Date: Thu, 10 Nov 2016 17:17:32 +0000
From: Will Deacon <will.deacon@....com>
To: Marc Zyngier <marc.zyngier@....com>
Cc: Wei Huang <wei@...hat.com>, kvmarm@...ts.cs.columbia.edu,
linux-arm-kernel@...ts.infradead.org, shannon.zhao@...aro.org,
kvm@...r.kernel.org, christoffer.dall@...aro.org,
drjones@...hat.com, cov@...eaurora.org, mark.rutland@....com,
catalin.marinas@....com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] arm64: perf: Move ARMv8 PMU perf event definitions
to asm/perf_event.h
On Thu, Nov 10, 2016 at 03:32:12PM +0000, Marc Zyngier wrote:
> On 10/11/16 15:12, Wei Huang wrote:
> >
> >
> > On 11/10/2016 03:10 AM, Marc Zyngier wrote:
> >> Hi Wei,
> >>
> >> On 09/11/16 19:57, Wei Huang wrote:
> >>> This patch moves ARMv8-related perf event definitions from perf_event.c
> >>> to asm/perf_event.h; so KVM code can use them directly. This also help
> >>> remove a duplicated definition of SW_INCR in perf_event.h.
> >>>
> >>> Signed-off-by: Wei Huang <wei@...hat.com>
> >>> ---
> >>> arch/arm64/include/asm/perf_event.h | 161 +++++++++++++++++++++++++++++++++++-
> >>> arch/arm64/kernel/perf_event.c | 161 ------------------------------------
> >>> 2 files changed, 160 insertions(+), 162 deletions(-)
> >>>
> >>> diff --git a/arch/arm64/include/asm/perf_event.h b/arch/arm64/include/asm/perf_event.h
> >>> index 2065f46..6c7b18b 100644
> >>> --- a/arch/arm64/include/asm/perf_event.h
> >>> +++ b/arch/arm64/include/asm/perf_event.h
> >>> @@ -46,7 +46,166 @@
> >>> #define ARMV8_PMU_EVTYPE_MASK 0xc800ffff /* Mask for writable bits */
> >>> #define ARMV8_PMU_EVTYPE_EVENT 0xffff /* Mask for EVENT bits */
> >>>
> >>> -#define ARMV8_PMU_EVTYPE_EVENT_SW_INCR 0 /* Software increment event */
> >>> +/*
> >>> + * ARMv8 PMUv3 Performance Events handling code.
> >>> + * Common event types.
> >>> + */
> >>> +
> >>> +/* Required events. */
> >>> +#define ARMV8_PMUV3_PERFCTR_SW_INCR 0x00
> >>> +#define ARMV8_PMUV3_PERFCTR_L1D_CACHE_REFILL 0x03
> >>> +#define ARMV8_PMUV3_PERFCTR_L1D_CACHE 0x04
> >>> +#define ARMV8_PMUV3_PERFCTR_BR_MIS_PRED 0x10
> >>> +#define ARMV8_PMUV3_PERFCTR_CPU_CYCLES 0x11
> >>> +#define ARMV8_PMUV3_PERFCTR_BR_PRED 0x12
> >>
> >> In my initial review, I asked for the "required" events to be moved to a
> >> shared location. What's the rational for moving absolutely everything?
> >
> > I did notice the phrase "required" in the original email. However I
> > think it is weird to have two places for a same set of PMU definitions.
> > Other developers might think these two are missing if they don't search
> > kernel files carefully.
> >
> > If Will Deacon and you insist, I can move only two defs to perf_event.h,
> > consolidated with the 2nd patch into a single one.
>
> My personal feeling is that only architected events should be in a
> public header. The CPU-specific ones are probably better kept private,
> as it is doubtful that other users would appear).
>
> I'll leave it up to Will to decide, as all I want to avoid is the
> duplication of constants between the PMU and KVM code bases.
Yeah, just take the sets that you need (i.e. the architected events).
Also, check that it builds.
Will
Powered by blists - more mailing lists