From: Ilkka Koskinen <ilkka@os.amperecomputing.com>
To: Robin Murphy <robin.murphy@arm.com>
Cc: will@kernel.org, mark.rutland@arm.com, bwicaksono@nvidia.com,
ilkka@os.amperecomputing.com,
linux-arm-kernel@lists.infradead.org,
linux-perf-users@vger.kernel.org
Subject: Re: [PATCH 1/3] perf/arm_cspmu: Move register definitons to header
Date: Thu, 6 Mar 2025 15:28:22 -0800 (PST) [thread overview]
Message-ID: <ffd0824-cada-d454-bea8-8c45e0a13b6c@os.amperecomputing.com> (raw)
In-Reply-To: <5a3c796560665b51cb63fec0d473afd8f8d0a836.1741190362.git.robin.murphy@arm.com>
On Wed, 5 Mar 2025, Robin Murphy wrote:
> Implementations may occasionally want to refer to register offsets, so
> for the sake of consistency move all of the register definitions to join
> the PMIIDR fields in the private header where they can be shared. As an
> example nicety, we can then define Ampere's imp-def filters in terms of
> the architectural PMIMPDEF range rather than open-coded offsets.
>
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
> ---
> drivers/perf/arm_cspmu/ampere_cspmu.c | 8 ++---
> drivers/perf/arm_cspmu/arm_cspmu.c | 45 --------------------------
> drivers/perf/arm_cspmu/arm_cspmu.h | 46 +++++++++++++++++++++++++++
> 3 files changed, 50 insertions(+), 49 deletions(-)
>
> diff --git a/drivers/perf/arm_cspmu/ampere_cspmu.c b/drivers/perf/arm_cspmu/ampere_cspmu.c
> index f72f5689923c..31cc1a4ac9df 100644
> --- a/drivers/perf/arm_cspmu/ampere_cspmu.c
> +++ b/drivers/perf/arm_cspmu/ampere_cspmu.c
> @@ -10,10 +10,10 @@
>
> #include "arm_cspmu.h"
>
> -#define PMAUXR0 0xD80
> -#define PMAUXR1 0xD84
> -#define PMAUXR2 0xD88
> -#define PMAUXR3 0xD8C
> +#define PMAUXR0 PMIMPDEF
> +#define PMAUXR1 (PMIMPDEF + 0x4)
> +#define PMAUXR2 (PMIMPDEF + 0x8)
> +#define PMAUXR3 (PMIMPDEF + 0xC)
>
> #define to_ampere_cspmu_ctx(cspmu) ((struct ampere_cspmu_ctx *)(cspmu->impl.ctx))
>
> diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c
> index 81e8b97e9353..769466d55bea 100644
> --- a/drivers/perf/arm_cspmu/arm_cspmu.c
> +++ b/drivers/perf/arm_cspmu/arm_cspmu.c
> @@ -40,51 +40,6 @@
> ARM_CSPMU_EXT_ATTR(_name, arm_cspmu_cpumask_show, \
> (unsigned long)_config)
>
> -/*
> - * CoreSight PMU Arch register offsets.
> - */
> -#define PMEVCNTR_LO 0x0
> -#define PMEVCNTR_HI 0x4
> -#define PMEVTYPER 0x400
> -#define PMCCFILTR 0x47C
> -#define PMEVFILTR 0xA00
> -#define PMCNTENSET 0xC00
> -#define PMCNTENCLR 0xC20
> -#define PMINTENSET 0xC40
> -#define PMINTENCLR 0xC60
> -#define PMOVSCLR 0xC80
> -#define PMOVSSET 0xCC0
> -#define PMCFGR 0xE00
> -#define PMCR 0xE04
> -#define PMIIDR 0xE08
> -
> -/* PMCFGR register field */
> -#define PMCFGR_NCG GENMASK(31, 28)
> -#define PMCFGR_HDBG BIT(24)
> -#define PMCFGR_TRO BIT(23)
> -#define PMCFGR_SS BIT(22)
> -#define PMCFGR_FZO BIT(21)
> -#define PMCFGR_MSI BIT(20)
> -#define PMCFGR_UEN BIT(19)
> -#define PMCFGR_NA BIT(17)
> -#define PMCFGR_EX BIT(16)
> -#define PMCFGR_CCD BIT(15)
> -#define PMCFGR_CC BIT(14)
> -#define PMCFGR_SIZE GENMASK(13, 8)
> -#define PMCFGR_N GENMASK(7, 0)
> -
> -/* PMCR register field */
> -#define PMCR_TRO BIT(11)
> -#define PMCR_HDBG BIT(10)
> -#define PMCR_FZO BIT(9)
> -#define PMCR_NA BIT(8)
> -#define PMCR_DP BIT(5)
> -#define PMCR_X BIT(4)
> -#define PMCR_D BIT(3)
> -#define PMCR_C BIT(2)
> -#define PMCR_P BIT(1)
> -#define PMCR_E BIT(0)
> -
> /* Each SET/CLR register supports up to 32 counters. */
> #define ARM_CSPMU_SET_CLR_COUNTER_SHIFT 5
> #define ARM_CSPMU_SET_CLR_COUNTER_NUM \
> diff --git a/drivers/perf/arm_cspmu/arm_cspmu.h b/drivers/perf/arm_cspmu/arm_cspmu.h
> index 2621f3111148..576249e0deea 100644
> --- a/drivers/perf/arm_cspmu/arm_cspmu.h
> +++ b/drivers/perf/arm_cspmu/arm_cspmu.h
> @@ -65,6 +65,52 @@
> /* The cycle counter, if implemented, is located at counter[31]. */
> #define ARM_CSPMU_CYCLE_CNTR_IDX 31
>
> +/*
> + * CoreSight PMU Arch register offsets.
> + */
> +#define PMEVCNTR_LO 0x0
> +#define PMEVCNTR_HI 0x4
> +#define PMEVTYPER 0x400
> +#define PMCCFILTR 0x47C
> +#define PMEVFILTR 0xA00
> +#define PMCNTENSET 0xC00
> +#define PMCNTENCLR 0xC20
> +#define PMINTENSET 0xC40
> +#define PMINTENCLR 0xC60
> +#define PMOVSCLR 0xC80
> +#define PMOVSSET 0xCC0
> +#define PMIMPDEF 0xD80
> +#define PMCFGR 0xE00
> +#define PMCR 0xE04
> +#define PMIIDR 0xE08
> +
> +/* PMCFGR register field */
> +#define PMCFGR_NCG GENMASK(31, 28)
> +#define PMCFGR_HDBG BIT(24)
> +#define PMCFGR_TRO BIT(23)
> +#define PMCFGR_SS BIT(22)
> +#define PMCFGR_FZO BIT(21)
> +#define PMCFGR_MSI BIT(20)
> +#define PMCFGR_UEN BIT(19)
> +#define PMCFGR_NA BIT(17)
> +#define PMCFGR_EX BIT(16)
> +#define PMCFGR_CCD BIT(15)
> +#define PMCFGR_CC BIT(14)
> +#define PMCFGR_SIZE GENMASK(13, 8)
> +#define PMCFGR_N GENMASK(7, 0)
> +
> +/* PMCR register field */
> +#define PMCR_TRO BIT(11)
> +#define PMCR_HDBG BIT(10)
> +#define PMCR_FZO BIT(9)
> +#define PMCR_NA BIT(8)
> +#define PMCR_DP BIT(5)
> +#define PMCR_X BIT(4)
> +#define PMCR_D BIT(3)
> +#define PMCR_C BIT(2)
> +#define PMCR_P BIT(1)
> +#define PMCR_E BIT(0)
> +
> /* PMIIDR register field */
> #define ARM_CSPMU_PMIIDR_IMPLEMENTER GENMASK(11, 0)
> #define ARM_CSPMU_PMIIDR_PRODUCTID GENMASK(31, 20)
> --
> 2.39.2.101.g768bb238c484.dirty
>
>
next prev parent reply other threads:[~2025-03-06 23:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-05 16:10 [PATCH 0/3] perf/arm_cspmu: Add PMEVFILT2R support Robin Murphy
2025-03-05 16:10 ` [PATCH 1/3] perf/arm_cspmu: Move register definitons to header Robin Murphy
2025-03-06 9:45 ` James Clark
2025-03-06 23:28 ` Ilkka Koskinen [this message]
2025-03-05 16:10 ` [PATCH 2/3] perf/arm_cspmu: Generalise event filtering Robin Murphy
2025-03-06 9:45 ` James Clark
2025-03-06 23:29 ` Ilkka Koskinen
2025-03-05 16:10 ` [PATCH 3/3] perf/arm_cspmu: Add PMEVFILT2R support Robin Murphy
2025-03-06 9:32 ` James Clark
2025-03-06 23:30 ` Ilkka Koskinen
2025-03-06 23:26 ` [PATCH 0/3] " Ilkka Koskinen
2025-03-13 22:22 ` Will Deacon
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=ffd0824-cada-d454-bea8-8c45e0a13b6c@os.amperecomputing.com \
--to=ilkka@os.amperecomputing.com \
--cc=bwicaksono@nvidia.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robin.murphy@arm.com \
--cc=will@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).