[PATCH] perf/arm-cmn: Permit more exhaustive groups

Ilkka Koskinen ilkka at os.amperecomputing.com
Thu Dec 12 14:35:17 PST 2024


On Wed, 11 Dec 2024, Will Deacon wrote:
>
> [+ Ilkka for comments/testing]
>
> On Wed, Dec 11, 2024 at 07:04:58PM +0000, Robin Murphy wrote:
>> The group validation logic still somewhat assumes the original CMN-600
>> case of events counting globally, such that if one tries to group 9
>> events where the first 8 target a single DTC domain, the 9th will be
>> rejected because *a* DTC domain is full, even though it might only
>> target other non-overlapping domains and thus still be schedulable.
>> Improve matters by only counting the DTCs that the new event actually
>> needs (as arm_cmn_val_add_event() was already clever enough to do).
>>
>> Signed-off-by: Robin Murphy <robin.murphy at arm.com>

Good catch, I must have missed that one. I did some quick tests on 
AmpereOne and everything seemed to work fine.

   Reviewed-and-tested-by: Ilkka Koskinen <ilkka at os.amperecomputing.com>


FYI, I'll take the rest of the year off and will be back online in the 
beginning of January.

Cheers, Ilkka

>> ---
>>  drivers/perf/arm-cmn.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c
>> index edefb51ac90a..b49e353e10ab 100644
>> --- a/drivers/perf/arm-cmn.c
>> +++ b/drivers/perf/arm-cmn.c
>> @@ -1779,8 +1779,8 @@ static int arm_cmn_validate_group(struct arm_cmn *cmn, struct perf_event *event)
>>  		goto done;
>>  	}
>>
>> -	for (i = 0; i < CMN_MAX_DTCS; i++)
>> -		if (val->dtc_count[i] == CMN_DT_NUM_COUNTERS)
>> +	for_each_hw_dtc_idx(hw, dtc, idx)
>> +		if (val->dtc_count[dtc] == CMN_DT_NUM_COUNTERS)
>>  			goto done;
>>
>>  	for_each_hw_dn(hw, dn, i) {
>> --
>> 2.39.2.101.g768bb238c484.dirty
>>
>



More information about the linux-arm-kernel mailing list