[PATCH] perf/arm-cmn: Support CMN-600AE
Ilkka Koskinen
ilkka at os.amperecomputing.com
Thu Dec 4 15:48:25 PST 2025
On Mon, 24 Nov 2025, Robin Murphy wrote:
> The functional safety features of CMN-600AE have little to no impact on
> the PMU relative to the base CMN-600 design, so for simplicity we can
> reasonably just treat it as the same thing. The only obvious difference
> is that the revision numbers aren't aligned, so we may hide some aliases
> for events which do actually exist, but those can still be specified via
> the underlying "type,eventid" format so it's not too big a deal.
>
> Signed-off-by: Robin Murphy <robin.murphy at arm.com>
Looks good to me.
Reviewed-by: Ilkka Koskinen <ilkka at os.amperecomputing.com>
> ---
> drivers/perf/arm-cmn.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c
> index 23245352a3fc..651edd73bfcb 100644
> --- a/drivers/perf/arm-cmn.c
> +++ b/drivers/perf/arm-cmn.c
> @@ -210,6 +210,7 @@ enum cmn_model {
> enum cmn_part {
> PART_CMN600 = 0x434,
> PART_CMN650 = 0x436,
> + PART_CMN600AE = 0x438,
> PART_CMN700 = 0x43c,
> PART_CI700 = 0x43a,
> PART_CMN_S3 = 0x43e,
> @@ -2266,6 +2267,9 @@ static int arm_cmn_discover(struct arm_cmn *cmn, unsigned int rgn_offset)
> reg = readq_relaxed(cfg_region + CMN_CFGM_PERIPH_ID_01);
> part = FIELD_GET(CMN_CFGM_PID0_PART_0, reg);
> part |= FIELD_GET(CMN_CFGM_PID1_PART_1, reg) << 8;
> + /* 600AE is close enough that it's not really worth more complexity */
> + if (part == PART_CMN600AE)
> + part = PART_CMN600;
> if (cmn->part && cmn->part != part)
> dev_warn(cmn->dev,
> "Firmware binding mismatch: expected part number 0x%x, found 0x%x\n",
> --
> 2.34.1
>
>
More information about the linux-arm-kernel
mailing list