[RFC PATCH 17/36] arm_mpam: Add cpuhp callbacks to probe MSC hardware

James Morse james.morse at arm.com
Wed Aug 6 11:07:15 PDT 2025


Hi Ben,

On 24/07/2025 15:13, Ben Horgan wrote:
> On 11/07/2025 19:36, James Morse wrote:
>> Because an MSC can only by accessed from the CPUs in its cpu-affinity
>> set we need to be running on one of those CPUs to probe the MSC
>> hardware.
>>
>> Do this work in the cpuhp callback. Probing the hardware will only
>> happen before MPAM is enabled, walk all the MSCs and probe those we can
>> reach that haven't already been probed.
>>
>> Later once MPAM is enabled, this cpuhp callback will be replaced by
>> one that avoids the global list.
>>
>> Enabling a static key will also take the cpuhp lock, so can't be done
>> from the cpuhp callback. Whenever a new MSC has been probed schedule
>> work to test if all the MSCs have now been probed.

>> diff --git a/drivers/platform/arm64/mpam/mpam_devices.c b/drivers/platform/arm64/mpam/
>> mpam_devices.c
>> index 0d6d5180903b..89434ae3efa6 100644
>> --- a/drivers/platform/arm64/mpam/mpam_devices.c
>> +++ b/drivers/platform/arm64/mpam/mpam_devices.c
>> @@ -513,9 +541,84 @@ int mpam_ris_create(struct mpam_msc *msc, u8 ris_idx,
>>       return err;
>>   }
>>   -static void mpam_discovery_complete(void)
>> +static int mpam_msc_hw_probe(struct mpam_msc *msc)
>>   {
>> -    pr_err("Discovered all MSC\n");
>> +    u64 idr;
>> +    int err;
>> +
>> +    lockdep_assert_held(&msc->probe_lock);
>> +
>> +    mutex_lock(&msc->part_sel_lock);
>> +    idr = mpam_read_partsel_reg(msc, AIDR);
>> +    if ((idr & MPAMF_AIDR_ARCH_MAJOR_REV) != MPAM_ARCHITECTURE_V1) {
>> +        pr_err_once("%s does not match MPAM architecture v1.0\n",
>> +                dev_name(&msc->pdev->dev));

> The error message need only mention the major revision. You've added support for v1.1 and
> v1.0.

Makes sense,


Thanks,

James



More information about the linux-arm-kernel mailing list