LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Heiko Carstens <heiko.carstens@de.ibm.com> To: Srivatsa Vaddagiri <vatsa@in.ibm.com> Cc: Benjamin Gilbert <bgilbert@cs.cmu.edu>, linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>, Gautham shenoy <ego@in.ibm.com>, Andrew Morton <akpm@osdl.org> Subject: [patch -mm] call cpu_chain with CPU_DOWN_FAILED if CPU_DOWN_PREPARE failed Date: Tue, 9 Jan 2007 16:05:29 +0100 [thread overview] Message-ID: <20070109150529.GE9563@osiris.boeblingen.de.ibm.com> (raw) In-Reply-To: <20070109150351.GD9563@osiris.boeblingen.de.ibm.com> From: Heiko Carstens <heiko.carstens@de.ibm.com> This makes cpu hotplug symmetrical: if CPU_UP_PREPARE fails we get CPU_UP_CANCELED, so we can undo what ever happened on PREPARE. The same should happen for CPU_DOWN_PREPARE. Cc: Srivatsa Vaddagiri <vatsa@in.ibm.com> Cc: Gautham Shenoy <ego@in.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> --- kernel/cpu.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) Index: linux-2.6.20-rc3-mm1/kernel/cpu.c =================================================================== --- linux-2.6.20-rc3-mm1.orig/kernel/cpu.c +++ linux-2.6.20-rc3-mm1/kernel/cpu.c @@ -122,9 +122,10 @@ static int take_cpu_down(void *unused) /* Requires cpu_add_remove_lock to be held */ static int _cpu_down(unsigned int cpu) { - int err; + int err, nr_calls = 0; struct task_struct *p; cpumask_t old_allowed, tmp; + void *hcpu = (void *)(long)cpu; if (num_online_cpus() == 1) return -EBUSY; @@ -132,11 +133,12 @@ static int _cpu_down(unsigned int cpu) if (!cpu_online(cpu)) return -EINVAL; - raw_notifier_call_chain(&cpu_chain, CPU_LOCK_ACQUIRE, - (void *)(long)cpu); - err = raw_notifier_call_chain(&cpu_chain, CPU_DOWN_PREPARE, - (void *)(long)cpu); + raw_notifier_call_chain(&cpu_chain, CPU_LOCK_ACQUIRE, hcpu); + err = __raw_notifier_call_chain(&cpu_chain, CPU_DOWN_PREPARE, + hcpu, -1, &nr_calls); if (err == NOTIFY_BAD) { + __raw_notifier_call_chain(&cpu_chain, CPU_DOWN_FAILED, hcpu, + nr_calls, NULL); printk("%s: attempt to take down CPU %u failed\n", __FUNCTION__, cpu); err = -EINVAL; @@ -156,7 +158,7 @@ static int _cpu_down(unsigned int cpu) if (IS_ERR(p) || cpu_online(cpu)) { /* CPU didn't die: tell everyone. Can't complain. */ if (raw_notifier_call_chain(&cpu_chain, CPU_DOWN_FAILED, - (void *)(long)cpu) == NOTIFY_BAD) + hcpu) == NOTIFY_BAD) BUG(); if (IS_ERR(p)) { @@ -178,8 +180,7 @@ static int _cpu_down(unsigned int cpu) put_cpu(); /* CPU is completely dead: tell everyone. Too late to complain. */ - if (raw_notifier_call_chain(&cpu_chain, CPU_DEAD, - (void *)(long)cpu) == NOTIFY_BAD) + if (raw_notifier_call_chain(&cpu_chain, CPU_DEAD, hcpu) == NOTIFY_BAD) BUG(); check_for_tasks(cpu);
next prev parent reply other threads:[~2007-01-09 15:05 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-01-08 17:07 Failure to release lock after CPU hot-unplug canceled Benjamin Gilbert 2007-01-09 12:17 ` Heiko Carstens 2007-01-09 12:27 ` Srivatsa Vaddagiri 2007-01-09 15:03 ` Heiko Carstens 2007-01-09 15:05 ` Heiko Carstens [this message] 2007-01-09 15:06 ` [patch -mm] slab: use CPU_LOCK_[ACQUIRE|RELEASE] Heiko Carstens 2007-01-10 18:20 ` Christoph Lameter 2007-01-11 2:30 ` Srivatsa Vaddagiri 2007-01-09 16:34 ` Failure to release lock after CPU hot-unplug canceled Benjamin Gilbert
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20070109150529.GE9563@osiris.boeblingen.de.ibm.com \ --to=heiko.carstens@de.ibm.com \ --cc=akpm@osdl.org \ --cc=bgilbert@cs.cmu.edu \ --cc=ego@in.ibm.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@elte.hu \ --cc=vatsa@in.ibm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).