[PATCH] perf/arm-cmn: Support CMN-600AE
Michal Simek
michal.simek at amd.com
Mon Nov 24 23:33:00 PST 2025
On 11/24/25 17:39, 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>
> ---
> 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",
Tested-by: Michal Simek <michal.simek at amd.com>
Thanks,
Michal
More information about the linux-arm-kernel
mailing list