git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PM: Fix dependencies of CONFIG_SUSPEND and CONFIG_HIBERNATION
[pandora-kernel.git]
/
kernel
/
cpu.c
diff --git
a/kernel/cpu.c
b/kernel/cpu.c
index
208cf34
..
38033db
100644
(file)
--- a/
kernel/cpu.c
+++ b/
kernel/cpu.c
@@
-103,11
+103,19
@@
static inline void check_for_tasks(int cpu)
write_unlock_irq(&tasklist_lock);
}
write_unlock_irq(&tasklist_lock);
}
+struct take_cpu_down_param {
+ unsigned long mod;
+ void *hcpu;
+};
+
/* Take this CPU down. */
/* Take this CPU down. */
-static int take_cpu_down(void *
unused
)
+static int take_cpu_down(void *
_param
)
{
{
+ struct take_cpu_down_param *param = _param;
int err;
int err;
+ raw_notifier_call_chain(&cpu_chain, CPU_DYING | param->mod,
+ param->hcpu);
/* Ensure this CPU doesn't handle any more interrupts. */
err = __cpu_disable();
if (err < 0)
/* Ensure this CPU doesn't handle any more interrupts. */
err = __cpu_disable();
if (err < 0)
@@
-127,6
+135,10
@@
static int _cpu_down(unsigned int cpu, int tasks_frozen)
cpumask_t old_allowed, tmp;
void *hcpu = (void *)(long)cpu;
unsigned long mod = tasks_frozen ? CPU_TASKS_FROZEN : 0;
cpumask_t old_allowed, tmp;
void *hcpu = (void *)(long)cpu;
unsigned long mod = tasks_frozen ? CPU_TASKS_FROZEN : 0;
+ struct take_cpu_down_param tcd_param = {
+ .mod = mod,
+ .hcpu = hcpu,
+ };
if (num_online_cpus() == 1)
return -EBUSY;
if (num_online_cpus() == 1)
return -EBUSY;
@@
-153,7
+165,7
@@
static int _cpu_down(unsigned int cpu, int tasks_frozen)
set_cpus_allowed(current, tmp);
mutex_lock(&cpu_bitmask_lock);
set_cpus_allowed(current, tmp);
mutex_lock(&cpu_bitmask_lock);
- p = __stop_machine_run(take_cpu_down,
NULL
, cpu);
+ p = __stop_machine_run(take_cpu_down,
&tcd_param
, cpu);
mutex_unlock(&cpu_bitmask_lock);
if (IS_ERR(p) || cpu_online(cpu)) {
mutex_unlock(&cpu_bitmask_lock);
if (IS_ERR(p) || cpu_online(cpu)) {
@@
-261,7
+273,7
@@
int __cpuinit cpu_up(unsigned int cpu)
return err;
}
return err;
}
-#ifdef CONFIG_
SUSPEND
_SMP
+#ifdef CONFIG_
PM_SLEEP
_SMP
static cpumask_t frozen_cpus;
int disable_nonboot_cpus(void)
static cpumask_t frozen_cpus;
int disable_nonboot_cpus(void)
@@
-322,4
+334,4
@@
void enable_nonboot_cpus(void)
out:
mutex_unlock(&cpu_add_remove_lock);
}
out:
mutex_unlock(&cpu_add_remove_lock);
}
-#endif
+#endif
/* CONFIG_PM_SLEEP_SMP */