[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