All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srivatsa Vaddagiri <vatsa@in.ibm.com>
To: Andrew Morton <akpm@osdl.org>
Cc: torvalds@osdl.org, linux-kernel@vger.kernel.org,
	shaohua.li@intel.com, bryce@osdl.org
Subject: Re: [PATCH] Check for online cpus before bringing them up
Date: Fri, 17 Mar 2006 14:16:53 +0530	[thread overview]
Message-ID: <20060317084653.GA4515@in.ibm.com> (raw)
In-Reply-To: <20060316170814.02fa55a1.akpm@osdl.org>

On Thu, Mar 16, 2006 at 05:08:14PM -0800, Andrew Morton wrote:
> Is x86 the only architecture which is exposed to this?

Currently only x86 implements smp_prepare_cpu(). On other arch, it is a
no-op. Hence yes, only x86 is exposed to this bug.

> >  
> >  	lock_cpu_hotplug();
> > +
> > +	if (cpu_online(cpu)) {
> > +		ret = -EINVAL;
> > +		goto exit;
> > +	}
> > +
> >  	apicid = x86_cpu_to_apicid[cpu];
> >  	if (apicid == BAD_APICID) {
> >  		ret = -ENODEV;
> 
> a) It's hard for the reader to understand what that test is doing there
> 
> b) People copy code from x86, so other architectures which are not
>    exposed to this problem will end up having a pointless test in there.

Well ..other arch-es need to have a similar check if they get around to
implement physical hot-add (even if they allow offlining of all CPUs). This is 
required since a user can (by mistake maybe) try to bring up an already online 
CPU by writing a '1' to it's sysfs 'online' file. 'store_online' 
(drivers/base/cpu.c) unconditionally calls 'smp_prepare_cpu' w/o checking for 
this error condition. The check added in the patch catches such error 
conditions as well.

> IOW: please comment your code.   I'll fix this one up.

Sorry about not commenting my code earlier! How does the patch below look?


Add check for online cpus.

Signed-off-by : Srivatsa Vaddagiri <vatsa@in.ibm.com>


 arch/i386/kernel/smpboot.c |   10 ++++++++++
 1 files changed, 10 insertions(+)

diff -puN arch/i386/kernel/smpboot.c~cpu_hp arch/i386/kernel/smpboot.c
--- linux-2.6.16-rc6/arch/i386/kernel/smpboot.c~cpu_hp	2006-03-17 14:27:15.000000000 +0530
+++ linux-2.6.16-rc6-root/arch/i386/kernel/smpboot.c	2006-03-17 14:38:50.000000000 +0530
@@ -1029,6 +1029,16 @@ int __devinit smp_prepare_cpu(int cpu)
 	int	apicid, ret;
 
 	lock_cpu_hotplug();
+
+	/* Check if CPU is already online. This can happen if user tries to 
+	 * bringup an already online CPU or a previous offline attempt
+	 * on this CPU has failed.
+	 */
+	if (cpu_online(cpu)) {
+		ret = -EINVAL;
+		goto exit;
+	}
+
 	apicid = x86_cpu_to_apicid[cpu];
 	if (apicid == BAD_APICID) {
 		ret = -ENODEV;

_

-- 
Regards,
vatsa

  parent reply	other threads:[~2006-03-17  8:46 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-16 17:44 [PATCH] Check for online cpus before bringing them up Srivatsa Vaddagiri
2006-03-17  1:08 ` Andrew Morton
2006-03-17  1:16   ` Shaohua Li
2006-03-17  8:46   ` Srivatsa Vaddagiri [this message]
2006-03-17  9:04     ` Andrew Morton
2006-03-17 14:13       ` Srivatsa Vaddagiri
2006-03-18 14:09         ` Ashok Raj
2006-03-21  1:08           ` Shaohua Li
2006-03-21  1:25             ` Ashok Raj
2006-03-21  1:36               ` Shaohua Li
2006-10-06 23:10       ` Status on CPU hotplug issues Bryce Harrington
2006-10-06 23:29         ` Andrew Morton
2006-10-07  0:00           ` Bryce Harrington
2006-10-07 10:35             ` Pavel Machek
2006-10-07 20:42               ` Bryce Harrington
2006-10-08 18:29                 ` Heiko Carstens
2006-10-08 19:14                   ` Pavel Machek
2006-10-11  1:08                     ` [BUG] 2.6.19-rc1-mm1: fs/file.c138 on ia64 Bryce Harrington
2006-10-11  1:15                       ` Andrew Morton
2006-10-11  5:38                         ` Bryce Harrington
2006-10-07 10:24           ` Status on CPU hotplug issues Pavel Machek
2006-10-07 20:25             ` Bryce Harrington
2006-10-08 19:13               ` Pavel Machek
2006-10-09  7:42                 ` Bryce Harrington
2006-10-07 21:57         ` Pavel Machek
2006-10-09 21:40           ` Randy Dunlap
2006-10-23 22:26             ` Bryce Harrington
2006-11-08  5:35               ` Randy Dunlap
2006-11-08  5:52                 ` Bryce Harrington
2006-03-17 12:21     ` [PATCH] Check for online cpus before bringing them up Ashok Raj
2006-03-17 13:59       ` Srivatsa Vaddagiri

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=20060317084653.GA4515@in.ibm.com \
    --to=vatsa@in.ibm.com \
    --cc=akpm@osdl.org \
    --cc=bryce@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shaohua.li@intel.com \
    --cc=torvalds@osdl.org \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.