Until now, cpuset would propagate isolated partition changes to timer migration so that unbound timers don't get migrated to isolated CPUs. Since housekeeping now centralizes, synchronize and propagates isolation cpumask changes, perform the work from that subsystem for consolidation and consistency purposes. Signed-off-by: Frederic Weisbecker <frederic@kernel.org> --- kernel/cgroup/cpuset.c | 3 --- kernel/sched/isolation.c | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index a492d23dd622..25ac6c98113c 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -1487,9 +1487,6 @@ static void update_isolation_cpumasks(void) ret = housekeeping_update(isolated_cpus, HK_TYPE_DOMAIN); WARN_ON_ONCE(ret < 0); - ret = tmigr_isolated_exclude_cpumask(isolated_cpus); - WARN_ON_ONCE(ret < 0); - isolated_cpus_updating = false; } diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index d224bca299ed..84a257d05918 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c @@ -150,7 +150,12 @@ int housekeeping_update(struct cpumask *isol_mask, enum hk_type type) pci_probe_flush_workqueue(); mem_cgroup_flush_workqueue(); vmstat_flush_workqueue(); + err = workqueue_unbound_housekeeping_update(housekeeping_cpumask(type)); + WARN_ON_ONCE(err < 0); + + err = tmigr_isolated_exclude_cpumask(isol_mask); + WARN_ON_ONCE(err < 0); kfree(old);
If you are doing "WARN_ON_ONCE() in housekeeping_update(), you don't need to do it inĀ update_isolation_cpumask() to avoid double warnings. Actually, you don't need to return an error code from housekeeping_update() at all.
Cheers, Longman