Hi Ben, On 29/08/2025 13:41, Ben Horgan wrote: > On 8/22/25 16:30, James Morse wrote: >> An MSC is a container of resources, each identified by their RIS index. >> Some RIS are described by firmware to provide their position in the system. >> Others are discovered when the driver probes the hardware. >> >> To configure a resource it needs to be found by its class, e.g. 'L2'. >> There are two kinds of grouping, a class is a set of components, which >> are visible to user-space as there are likely to be multiple instances >> of the L2 cache. (e.g. one per cluster or package) >> >> struct mpam_components are a set of struct mpam_vmsc. A vMSC groups the >> RIS in an MSC that control the same logical piece of hardware. (e.g. L2). >> This is to allow hardware implementations where two controls are presented >> as different RIS. Re-combining these RIS allows their feature bits to >> be or-ed. This structure is not visible outside mpam_devices.c >> >> struct mpam_vmsc are then a set of struct mpam_msc_ris, which are not >> visible as each L2 cache may be composed of individual slices which need >> to be configured the same as the hardware is not able to distribute the >> configuration. >> >> Add support for creating and destroying these structures. >> >> A gfp is passed as the structures may need creating when a new RIS entry >> is discovered when probing the MSC. >> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c >> index 71a1fb1a9c75..5baf2a8786fb 100644 >> --- a/drivers/resctrl/mpam_devices.c >> +++ b/drivers/resctrl/mpam_devices.c >> @@ -179,7 +650,10 @@ static int update_msc_accessibility(struct mpam_msc *msc) >> cpumask_copy(&msc->accessibility, cpu_possible_mask); >> err = 0; >> } else { >> - if (of_device_is_compatible(parent, "memory")) { >> + if (of_device_is_compatible(parent, "cache")) { >> + err = get_cpumask_from_cache(parent, >> + &msc->accessibility); >> + } else if (of_device_is_compatible(parent, "memory")) { > The determination of the accessibility for the h/w msc doesn't fit with > the subject of this patch. Could this hunk and the supporting functions > be split into a precursor patch? I've moved this bit into the previous patches. Thanks, James