Loading include/linux/cpuset.h +4 −4 Original line number Original line Diff line number Diff line Loading @@ -40,14 +40,14 @@ static inline bool cpusets_enabled(void) static inline void cpuset_inc(void) static inline void cpuset_inc(void) { { static_branch_inc(&cpusets_pre_enable_key); static_branch_inc_cpuslocked(&cpusets_pre_enable_key); static_branch_inc(&cpusets_enabled_key); static_branch_inc_cpuslocked(&cpusets_enabled_key); } } static inline void cpuset_dec(void) static inline void cpuset_dec(void) { { static_branch_dec(&cpusets_enabled_key); static_branch_dec_cpuslocked(&cpusets_enabled_key); static_branch_dec(&cpusets_pre_enable_key); static_branch_dec_cpuslocked(&cpusets_pre_enable_key); } } extern int cpuset_init(void); extern int cpuset_init(void); Loading kernel/cgroup/cpuset.c +14 −4 Original line number Original line Diff line number Diff line Loading @@ -837,8 +837,8 @@ static void rebuild_sched_domains_locked(void) cpumask_var_t *doms; cpumask_var_t *doms; int ndoms; int ndoms; lockdep_assert_cpus_held(); lockdep_assert_held(&cpuset_mutex); lockdep_assert_held(&cpuset_mutex); get_online_cpus(); /* /* * We have raced with CPU hotplug. Don't do anything to avoid * We have raced with CPU hotplug. Don't do anything to avoid Loading @@ -846,15 +846,13 @@ static void rebuild_sched_domains_locked(void) * Anyways, hotplug work item will rebuild sched domains. * Anyways, hotplug work item will rebuild sched domains. */ */ if (!cpumask_equal(top_cpuset.effective_cpus, cpu_active_mask)) if (!cpumask_equal(top_cpuset.effective_cpus, cpu_active_mask)) goto out; return; /* Generate domain masks and attrs */ /* Generate domain masks and attrs */ ndoms = generate_sched_domains(&doms, &attr); ndoms = generate_sched_domains(&doms, &attr); /* Have scheduler rebuild the domains */ /* Have scheduler rebuild the domains */ partition_sched_domains(ndoms, doms, attr); partition_sched_domains(ndoms, doms, attr); out: put_online_cpus(); } } #else /* !CONFIG_SMP */ #else /* !CONFIG_SMP */ static void rebuild_sched_domains_locked(void) static void rebuild_sched_domains_locked(void) Loading @@ -864,9 +862,11 @@ static void rebuild_sched_domains_locked(void) void rebuild_sched_domains(void) void rebuild_sched_domains(void) { { get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); rebuild_sched_domains_locked(); rebuild_sched_domains_locked(); mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); } } static int update_cpus_allowed(struct cpuset *cs, struct task_struct *p, static int update_cpus_allowed(struct cpuset *cs, struct task_struct *p, Loading Loading @@ -1634,6 +1634,7 @@ static int cpuset_write_u64(struct cgroup_subsys_state *css, struct cftype *cft, cpuset_filetype_t type = cft->private; cpuset_filetype_t type = cft->private; int retval = 0; int retval = 0; get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (!is_cpuset_online(cs)) { if (!is_cpuset_online(cs)) { retval = -ENODEV; retval = -ENODEV; Loading Loading @@ -1671,6 +1672,7 @@ static int cpuset_write_u64(struct cgroup_subsys_state *css, struct cftype *cft, } } out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); return retval; return retval; } } Loading @@ -1681,6 +1683,7 @@ static int cpuset_write_s64(struct cgroup_subsys_state *css, struct cftype *cft, cpuset_filetype_t type = cft->private; cpuset_filetype_t type = cft->private; int retval = -ENODEV; int retval = -ENODEV; get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (!is_cpuset_online(cs)) if (!is_cpuset_online(cs)) goto out_unlock; goto out_unlock; Loading @@ -1695,6 +1698,7 @@ static int cpuset_write_s64(struct cgroup_subsys_state *css, struct cftype *cft, } } out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); return retval; return retval; } } Loading Loading @@ -1733,6 +1737,7 @@ static ssize_t cpuset_write_resmask(struct kernfs_open_file *of, kernfs_break_active_protection(of->kn); kernfs_break_active_protection(of->kn); flush_work(&cpuset_hotplug_work); flush_work(&cpuset_hotplug_work); get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (!is_cpuset_online(cs)) if (!is_cpuset_online(cs)) goto out_unlock; goto out_unlock; Loading @@ -1758,6 +1763,7 @@ static ssize_t cpuset_write_resmask(struct kernfs_open_file *of, free_trial_cpuset(trialcs); free_trial_cpuset(trialcs); out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); kernfs_unbreak_active_protection(of->kn); kernfs_unbreak_active_protection(of->kn); css_put(&cs->css); css_put(&cs->css); flush_workqueue(cpuset_migrate_mm_wq); flush_workqueue(cpuset_migrate_mm_wq); Loading Loading @@ -2007,6 +2013,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) if (!parent) if (!parent) return 0; return 0; get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); set_bit(CS_ONLINE, &cs->flags); set_bit(CS_ONLINE, &cs->flags); Loading Loading @@ -2058,6 +2065,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) spin_unlock_irq(&callback_lock); spin_unlock_irq(&callback_lock); out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); return 0; return 0; } } Loading @@ -2071,6 +2079,7 @@ static void cpuset_css_offline(struct cgroup_subsys_state *css) { { struct cpuset *cs = css_cs(css); struct cpuset *cs = css_cs(css); get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (is_sched_load_balance(cs)) if (is_sched_load_balance(cs)) Loading @@ -2080,6 +2089,7 @@ static void cpuset_css_offline(struct cgroup_subsys_state *css) clear_bit(CS_ONLINE, &cs->flags); clear_bit(CS_ONLINE, &cs->flags); mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); } } static void cpuset_css_free(struct cgroup_subsys_state *css) static void cpuset_css_free(struct cgroup_subsys_state *css) Loading Loading
include/linux/cpuset.h +4 −4 Original line number Original line Diff line number Diff line Loading @@ -40,14 +40,14 @@ static inline bool cpusets_enabled(void) static inline void cpuset_inc(void) static inline void cpuset_inc(void) { { static_branch_inc(&cpusets_pre_enable_key); static_branch_inc_cpuslocked(&cpusets_pre_enable_key); static_branch_inc(&cpusets_enabled_key); static_branch_inc_cpuslocked(&cpusets_enabled_key); } } static inline void cpuset_dec(void) static inline void cpuset_dec(void) { { static_branch_dec(&cpusets_enabled_key); static_branch_dec_cpuslocked(&cpusets_enabled_key); static_branch_dec(&cpusets_pre_enable_key); static_branch_dec_cpuslocked(&cpusets_pre_enable_key); } } extern int cpuset_init(void); extern int cpuset_init(void); Loading
kernel/cgroup/cpuset.c +14 −4 Original line number Original line Diff line number Diff line Loading @@ -837,8 +837,8 @@ static void rebuild_sched_domains_locked(void) cpumask_var_t *doms; cpumask_var_t *doms; int ndoms; int ndoms; lockdep_assert_cpus_held(); lockdep_assert_held(&cpuset_mutex); lockdep_assert_held(&cpuset_mutex); get_online_cpus(); /* /* * We have raced with CPU hotplug. Don't do anything to avoid * We have raced with CPU hotplug. Don't do anything to avoid Loading @@ -846,15 +846,13 @@ static void rebuild_sched_domains_locked(void) * Anyways, hotplug work item will rebuild sched domains. * Anyways, hotplug work item will rebuild sched domains. */ */ if (!cpumask_equal(top_cpuset.effective_cpus, cpu_active_mask)) if (!cpumask_equal(top_cpuset.effective_cpus, cpu_active_mask)) goto out; return; /* Generate domain masks and attrs */ /* Generate domain masks and attrs */ ndoms = generate_sched_domains(&doms, &attr); ndoms = generate_sched_domains(&doms, &attr); /* Have scheduler rebuild the domains */ /* Have scheduler rebuild the domains */ partition_sched_domains(ndoms, doms, attr); partition_sched_domains(ndoms, doms, attr); out: put_online_cpus(); } } #else /* !CONFIG_SMP */ #else /* !CONFIG_SMP */ static void rebuild_sched_domains_locked(void) static void rebuild_sched_domains_locked(void) Loading @@ -864,9 +862,11 @@ static void rebuild_sched_domains_locked(void) void rebuild_sched_domains(void) void rebuild_sched_domains(void) { { get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); rebuild_sched_domains_locked(); rebuild_sched_domains_locked(); mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); } } static int update_cpus_allowed(struct cpuset *cs, struct task_struct *p, static int update_cpus_allowed(struct cpuset *cs, struct task_struct *p, Loading Loading @@ -1634,6 +1634,7 @@ static int cpuset_write_u64(struct cgroup_subsys_state *css, struct cftype *cft, cpuset_filetype_t type = cft->private; cpuset_filetype_t type = cft->private; int retval = 0; int retval = 0; get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (!is_cpuset_online(cs)) { if (!is_cpuset_online(cs)) { retval = -ENODEV; retval = -ENODEV; Loading Loading @@ -1671,6 +1672,7 @@ static int cpuset_write_u64(struct cgroup_subsys_state *css, struct cftype *cft, } } out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); return retval; return retval; } } Loading @@ -1681,6 +1683,7 @@ static int cpuset_write_s64(struct cgroup_subsys_state *css, struct cftype *cft, cpuset_filetype_t type = cft->private; cpuset_filetype_t type = cft->private; int retval = -ENODEV; int retval = -ENODEV; get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (!is_cpuset_online(cs)) if (!is_cpuset_online(cs)) goto out_unlock; goto out_unlock; Loading @@ -1695,6 +1698,7 @@ static int cpuset_write_s64(struct cgroup_subsys_state *css, struct cftype *cft, } } out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); return retval; return retval; } } Loading Loading @@ -1733,6 +1737,7 @@ static ssize_t cpuset_write_resmask(struct kernfs_open_file *of, kernfs_break_active_protection(of->kn); kernfs_break_active_protection(of->kn); flush_work(&cpuset_hotplug_work); flush_work(&cpuset_hotplug_work); get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (!is_cpuset_online(cs)) if (!is_cpuset_online(cs)) goto out_unlock; goto out_unlock; Loading @@ -1758,6 +1763,7 @@ static ssize_t cpuset_write_resmask(struct kernfs_open_file *of, free_trial_cpuset(trialcs); free_trial_cpuset(trialcs); out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); kernfs_unbreak_active_protection(of->kn); kernfs_unbreak_active_protection(of->kn); css_put(&cs->css); css_put(&cs->css); flush_workqueue(cpuset_migrate_mm_wq); flush_workqueue(cpuset_migrate_mm_wq); Loading Loading @@ -2007,6 +2013,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) if (!parent) if (!parent) return 0; return 0; get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); set_bit(CS_ONLINE, &cs->flags); set_bit(CS_ONLINE, &cs->flags); Loading Loading @@ -2058,6 +2065,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css) spin_unlock_irq(&callback_lock); spin_unlock_irq(&callback_lock); out_unlock: out_unlock: mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); return 0; return 0; } } Loading @@ -2071,6 +2079,7 @@ static void cpuset_css_offline(struct cgroup_subsys_state *css) { { struct cpuset *cs = css_cs(css); struct cpuset *cs = css_cs(css); get_online_cpus(); mutex_lock(&cpuset_mutex); mutex_lock(&cpuset_mutex); if (is_sched_load_balance(cs)) if (is_sched_load_balance(cs)) Loading @@ -2080,6 +2089,7 @@ static void cpuset_css_offline(struct cgroup_subsys_state *css) clear_bit(CS_ONLINE, &cs->flags); clear_bit(CS_ONLINE, &cs->flags); mutex_unlock(&cpuset_mutex); mutex_unlock(&cpuset_mutex); put_online_cpus(); } } static void cpuset_css_free(struct cgroup_subsys_state *css) static void cpuset_css_free(struct cgroup_subsys_state *css) Loading