Commit d13d28de authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds

[PATCH] sched: add CPU_DOWN_PREPARE notifier

Add a CPU_DOWN_PREPARE hotplug CPU notifier.  This is needed so we can dettach
all sched-domains before a CPU goes down, thus we can build domains from
online cpumasks, and not have to check for the possibility of a CPU coming up
or going down.
Signed-off-by: default avatarNick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e4dbd222
...@@ -67,6 +67,7 @@ extern int notifier_call_chain(struct notifier_block **n, unsigned long val, voi ...@@ -67,6 +67,7 @@ extern int notifier_call_chain(struct notifier_block **n, unsigned long val, voi
#define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */ #define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */
#define CPU_UP_PREPARE 0x0003 /* CPU (unsigned)v coming up */ #define CPU_UP_PREPARE 0x0003 /* CPU (unsigned)v coming up */
#define CPU_UP_CANCELED 0x0004 /* CPU (unsigned)v NOT coming up */ #define CPU_UP_CANCELED 0x0004 /* CPU (unsigned)v NOT coming up */
#define CPU_DOWN_PREPARE 0x0005 /* CPU (unsigned)v going down */
#define CPU_DEAD 0x0006 /* CPU (unsigned)v dead */ #define CPU_DEAD 0x0006 /* CPU (unsigned)v dead */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
......
...@@ -124,6 +124,15 @@ int cpu_down(unsigned int cpu) ...@@ -124,6 +124,15 @@ int cpu_down(unsigned int cpu)
goto out; goto out;
} }
err = notifier_call_chain(&cpu_chain, CPU_DOWN_PREPARE,
(void *)(long)cpu);
if (err == NOTIFY_BAD) {
printk("%s: attempt to take down CPU %u failed\n",
__FUNCTION__, cpu);
err = -EINVAL;
goto out;
}
/* Ensure that we are not runnable on dying cpu */ /* Ensure that we are not runnable on dying cpu */
old_allowed = current->cpus_allowed; old_allowed = current->cpus_allowed;
tmp = CPU_MASK_ALL; tmp = CPU_MASK_ALL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment