Hi Tony, On 7/18/2023 5:11 PM, Luck, Tony wrote: >> Yes, this is the idea. Thank you for considering it. Something else >> to consider that may make this even cleaner/simpler would be to review >> struct rdt_domain and struct rdt_hw_domain members for "monitor" vs "control" >> usage. These structs could potentially be split further into separate >> "control" and "monitor" variants. For example, "struct rdt_domain" split into >> "struct rdt_ctrl_domain" and "struct rdt_mon_domain". If there is a clean >> split then resctrl can always create two lists with the unnecessary duplication >> eliminated when two domain lists are created. This would also >> eliminate the need to scatter ctrl_scope == mon_scope checks throughout. > > You might like what I'm doing in the "resctrl2" re-write[1]. Arch independent code > that maintains the domain lists for a resource via a cpuhp notifier just has this > for the domain structure: > > struct resctrl_domain { > struct list_head list; > struct cpumask cpu_mask; > int id; > int cache_size; > }; > > Each module managing a resource decides what extra information it wants to > carry in the domain. So the above structure is common to all, but it is followed > by whatever the resource module wants. E.g. the CBM masks for each CLOSid > for the CAT module. The module tells core code the size to allocate. hmmm ... what I am *hearing* you say is that the goodness from the rewrite can be added to resctrl? :) > "cache_size" is only there because the cache topology bits needed to discover > sizes of caches aren't exported. Both the "size" file and pseudo-locking need > to know the size. > > It's also possible that you may hate it. There is zero sharing of resource structures > even if they have the same scope. This is because all modules are independently > loadable. Apologies but I am still unable to understand the problem statement that motivates the rewrite. Reinette