aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/cpuset.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 584bb4e6c042..794af5024c2f 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -912,6 +912,10 @@ static int update_nodemask(struct cpuset *cs, char *buf)
912 int fudge; 912 int fudge;
913 int retval; 913 int retval;
914 914
915 /* top_cpuset.mems_allowed tracks node_online_map; it's read-only */
916 if (cs == &top_cpuset)
917 return -EACCES;
918
915 trialcs = *cs; 919 trialcs = *cs;
916 retval = nodelist_parse(buf, trialcs.mems_allowed); 920 retval = nodelist_parse(buf, trialcs.mems_allowed);
917 if (retval < 0) 921 if (retval < 0)
@@ -2042,9 +2046,8 @@ out:
2042 * (of no affect) on systems that are actively using CPU hotplug 2046 * (of no affect) on systems that are actively using CPU hotplug
2043 * but making no active use of cpusets. 2047 * but making no active use of cpusets.
2044 * 2048 *
2045 * This handles CPU hotplug (cpuhp) events. If someday Memory 2049 * This routine ensures that top_cpuset.cpus_allowed tracks
2046 * Nodes can be hotplugged (dynamically changing node_online_map) 2050 * cpu_online_map on each CPU hotplug (cpuhp) event.
2047 * then we should handle that too, perhaps in a similar way.
2048 */ 2051 */
2049 2052
2050#ifdef CONFIG_HOTPLUG_CPU 2053#ifdef CONFIG_HOTPLUG_CPU
@@ -2063,6 +2066,25 @@ static int cpuset_handle_cpuhp(struct notifier_block *nb,
2063} 2066}
2064#endif 2067#endif
2065 2068
2069/*
2070 * Keep top_cpuset.mems_allowed tracking node_online_map.
2071 * Call this routine anytime after you change node_online_map.
2072 * See also the previous routine cpuset_handle_cpuhp().
2073 */
2074
2075#ifdef CONFIG_MEMORY_HOTPLUG
2076void cpuset_track_online_nodes()
2077{
2078 mutex_lock(&manage_mutex);
2079 mutex_lock(&callback_mutex);
2080
2081 top_cpuset.mems_allowed = node_online_map;
2082
2083 mutex_unlock(&callback_mutex);
2084 mutex_unlock(&manage_mutex);
2085}
2086#endif
2087
2066/** 2088/**
2067 * cpuset_init_smp - initialize cpus_allowed 2089 * cpuset_init_smp - initialize cpus_allowed
2068 * 2090 *