> To deal with these complexities I would like to consider if it may > make things simpler to always (irrespective of allocation and > monitoring scope) maintain allocation and monitoring domain lists. > Each list need only carry data appropriate to its use ... the allocation > list only has data relevant to allocation, the monitoring list only > has data relevant to monitoring. This is the struct rdt_domain related > split I mentioned previously. > > Code could become something like: resctrl_online_cpu() { ... for_each_alloc_capable_rdt_resource(r) alloc_domain_add_cpu(...) for_each_mon_capable_rdt_resource(r) mon_domain_add_cpu(...) ... } > This would reduce complication in domain_add_cpu() since each domain list > only need to concern itself with monitoring or allocation. This does seem a worthy target. I started on a patch to so this ... but I'm not sure I have the stamina or the time to see it through. I split struct rdt_domain into rdt_ctrl_domain and rdt_mon_domain. But that led to also splitting the rdt_hw_domain structure into two, and then splitting the resctrl_to_arch_dom() function, and then another and another. That process will eventually converge (there are a finite number of lines of code) .... but it will be a big patch. I don't see how to stage it a piece at a time. -Tony