On 23/02/2023 16:38, Qais Yousef wrote: IMHO the patch title is misleading since what you want to avoid in certain cases is that the RD DL accounting is updated. > On 02/06/23 22:14, Qais Yousef wrote: >> Commit f9a25f776d78 ("cpusets: Rebuild root domain deadline accounting information") >> enabled rebuilding root domain on cpuset and hotplug operations to >> correct deadline accounting. >> >> Rebuilding root domain is a slow operation and we see 10+ of ms delays >> on suspend-resume because of that (worst case captures 20ms which >> happens often). >> >> Since nothing is expected to change on suspend-resume operation; skip >> rebuilding the root domains to regain the some of the time lost. >> >> Achieve this by refactoring the code to pass whether dl accoutning needs >> an update to rebuild_sched_domains(). And while at it, rename >> rebuild_root_domains() to update_dl_rd_accounting() which I believe is >> a more representative name since we are not really rebuilding the root >> domains, but rather updating dl accounting at the root domain. >> >> Some users of rebuild_sched_domains() will skip dl accounting update >> now: >> >> * Update sched domains when relaxing the domain level in cpuset >> which only impacts searching level in load balance This one is cpuset related. (1) >> * update sched domains when cpufreq governor changes and we need >> to create the perf domains This one is drivers/base/arch_topology.c [arm/arm64/...] related. (2) There are several levels of passing this `update_dl_accounting` information through. I guess it looks like this: update_dl_accounting arm/arm64/riscv/parisc specific: update_topology_flags_workfn() true rebuild_sched_domains_energy() false (2) cpuset_hotplug_workfn() cpus_updated || force_rebuild == CPUSET_FORCE_REBUILD_PRS_ERROR ->rebuild_sched_domains(update_dl_accounting) update_cpumasks_hier() true update_relax_domain_level() false (1) update_flag() true update_prstate() true ->rebuild_sched_domains_locked(update_dl_accounting) ->partition_and_rebuild_sched_domains(..., update_dl_accounting) if (update_dl_accounting) update_dl_rd_accounting() There is already a somehow hidden interface for `sd/rd rebuild` int __weak arch_update_cpu_topology(void) which lets partition_sched_domains_locked() figure out whether sched domains have to be rebuild.. But in your case it is more on the interface `cpuset/hotplug -> sd/rd rebuild` and not only `arch -> `sd/rd rebuild``. IMHO, it would be still nice to have only one way to tell `sd/rd rebuild` what to do and what not to do during sd/rd/(pd) rebuild. [...]