All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Alex Chiang <achiang@hp.com>, Matthew Wilcox <matthew@wil.cx>,
	Andi Kleen <andi@firstfloor.org>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-acpi@vger.kernel.org
Subject: Re: [PATCH 01/14] Introduce cpu_enabled_map and friends
Date: Fri, 18 Jul 2008 22:44:55 +0100	[thread overview]
Message-ID: <20080718214454.GD25816@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20080715191515.GE10919@ldl.fc.hp.com>

On Tue, Jul 15, 2008 at 01:15:15PM -0600, Alex Chiang wrote:
> * Russell King <rmk+lkml@arm.linux.org.uk>:
> > On Tue, Jul 15, 2008 at 12:16:32PM -0600, Matthew Wilcox wrote:
> > > On Tue, Jul 15, 2008 at 11:57:40AM -0600, Alex Chiang wrote:
> > > > My thought was that big SMP systems like ia64, possibly sparc and
> > > > ppc, and increasingly, x86, might find something like this
> > > > useful, as systems get larger and larger, and vendors are going
> > > > to want to do RAS-ish features, like the ability to keep CPUs in
> > > > firmware across reboots until told otherwise by the sysadmin.
> > > > 
> > > > Right now, a 'present' CPU strongly implies 'online' as well,
> > > > since we're calling cpu_up() for all 'present' CPUs in
> > > > smp_init(). But this hurts if:
> > > > 
> > > > 	- you don't actually want to bring up all 'present' CPUs
> > > > 	- you still want to interact with these weirdo zombie
> > > > 	  CPUs that are 'present' but not 'online'
> > > 
> > > Have you considered simply failing __cpu_up() for CPUs that are
> > > deconfigured by firmware?
> > 
> > But what if you want to have a system boot with, say, 4 CPUs and
> > then decide at run time to bring up another 4 CPUs when required?
> > 
> > How about having smp_init() call into arch code to query whether
> > it should bring up a not-already-online CPU?  Architectures that
> > want to do something special can then make the decision there and
> > everyone else can define the test completely away.
> 
> So this is exactly what I'm doing. The ia64 patch has this hunk:
> 
> @@ -820,6 +824,9 @@ __cpu_up (unsigned int cpu)
>         if (cpu_isset(cpu, cpu_callin_map))
>                 return -EINVAL;
> 
> +       if (!cpu_isset(cpu, cpu_enabled_map))
> +               return -EINVAL;
> +
>         per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
>         /* Processor goes to start_secondary(), sets online flag */
>         ret = do_boot_cpu(sapicid, cpu);
> 
> That was the easiest, most-straightforward solution I could think
> of. If you have an idea for a version with lower taxes (doesn't
> touch all the archs or can be #define'd out), I'm happy to hear
> it.

I think I did make a suggestion in the bit you quote from me above.

Let me be more explicit:

static void __init smp_init(void)
{
        unsigned int cpu;

        /* FIXME: This should be done in userspace --RR */
        for_each_present_cpu(cpu) {
                if (num_online_cpus() >= setup_max_cpus)
                        break;
-		if (!cpu_online(cpu))
+		if (smp_cpu_enabled(cpu) && !cpu_online(cpu))
                        cpu_up(cpu);
        }

        /* Any cleanup work */
        printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
        smp_cpus_done(setup_max_cpus);
}

and have architectures provide 'smp_cpu_enabled(cpu)' which can either
be a function, inline function or a macro (and therefore possible to be
completely eliminated.)

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

  reply	other threads:[~2008-07-18 21:44 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-15  2:33 [PATCH 00/14] Introduce cpu_enabled_map and friends Alex Chiang
2008-07-15  2:33 ` [PATCH 01/14] " Alex Chiang
2008-07-15  3:15   ` Matthew Wilcox
2008-07-15 10:03     ` Andi Kleen
2008-07-15 10:21       ` Russell King
2008-07-15 17:57         ` Alex Chiang
2008-07-15 18:16           ` Matthew Wilcox
2008-07-15 18:48             ` Russell King
2008-07-15 19:15               ` Alex Chiang
2008-07-18 21:44                 ` Russell King [this message]
2008-07-18 23:08                   ` Alex Chiang
2008-07-16  1:11               ` Alex Chiang
2008-07-16  1:11                 ` Alex Chiang
2008-07-15  2:33 ` [PATCH 02/14] [M32R] Populate cpu_enabled_map Alex Chiang
2008-07-15  2:33 ` [PATCH 03/14] [ALPHA] " Alex Chiang
2008-07-15  2:34 ` [PATCH 04/14] [ARM] " Alex Chiang
2008-07-15  2:34 ` [PATCH 05/14] [MIPS] " Alex Chiang
2008-07-15  2:34 ` [PATCH 06/14] [PARISC] " Alex Chiang
2008-07-15  2:34 ` [PATCH 07/14] [POWERPC] " Alex Chiang
2008-07-15  5:51   ` Benjamin Herrenschmidt
2008-07-16  1:04     ` Alex Chiang
2008-07-15  2:34 ` [PATCH 08/14] [S390] " Alex Chiang
2008-07-15  2:34 ` [PATCH 09/14] [SH] " Alex Chiang
2008-07-15  2:34 ` [PATCH 12/14] [IA64] Populate and use cpu_enabled_map Alex Chiang
2008-07-15  2:34 ` [PATCH 13/14] [IA64] Avoid overflowing ia64_cpu_to_sapicid in acpi_map_lsapic() Alex Chiang
2008-07-15  2:34 ` [PATCH 14/14] ACPI: Provide /sys/devices/system/cpu/cpuN/deconfigure Alex Chiang
2008-07-15 17:06   ` Andi Kleen
2008-07-15 18:40     ` Alex Chiang
2008-07-15  2:56 ` [PATCH 11/14] x86: Populate cpu_enabled_map Alex Chiang
2008-07-18 20:00   ` H. Peter Anvin
2008-07-18 20:00     ` H. Peter Anvin
2008-07-18 23:06     ` Alex Chiang
2008-07-15 20:10 ` [PATCH 00/14] Introduce cpu_enabled_map and friends Luck, Tony
2008-07-15 20:10   ` Luck, Tony
2008-07-15 23:54   ` Alex Chiang
2008-07-15 23:54     ` Alex Chiang

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=20080718214454.GD25816@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=achiang@hp.com \
    --cc=andi@firstfloor.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    /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.