[PATCH 14/33] arm_mpam: Add cpuhp callbacks to probe MSC hardware
Dave Martin
Dave.Martin at arm.com
Tue Sep 9 07:23:23 PDT 2025
Hi James,
While I'm here:
On Fri, Aug 22, 2025 at 03:29:55PM +0000, 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.
>
> CC: Lecopzer Chen <lecopzerc at nvidia.com>
> Signed-off-by: James Morse <james.morse at arm.com>
> ---
> drivers/resctrl/mpam_devices.c | 144 +++++++++++++++++++++++++++++++-
> drivers/resctrl/mpam_internal.h | 8 +-
> 2 files changed, 147 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
> index 5baf2a8786fb..9d6516f98acf 100644
> --- a/drivers/resctrl/mpam_devices.c
> +++ b/drivers/resctrl/mpam_devices.c
[...]
> @@ -511,9 +539,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)
> +{
> + u64 idr;
> + int err;
Redundant variable which gets removed again in the next patch?
> +
> + 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.x\n",
> + dev_name(&msc->pdev->dev));
> + err = -EIO;
> + } else {
> + msc->probed = true;
> + err = 0;
> + }
> + mutex_unlock(&msc->part_sel_lock);
> +
> + return err;
> +}
[...]
Cheers
---Dave
More information about the linux-arm-kernel
mailing list