[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