linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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
>
>

  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).