From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
To: Fenghua Yu <fenghua.yu@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
H Peter Anvin <hpa@zytor.com>, Ingo Molnar <mingo@elte.hu>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Tony Luck <tony.luck@intel.com>,
Suresh B Siddha <suresh.b.siddha@intel.com>,
Len Brown <len.brown@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Linux PM mailing list <linux-pm@vger.kernel.org>
Subject: Re: [PATCH 7/9] x86/topology.c: Support functions for BSP online/offline
Date: Sat, 05 Nov 2011 16:31:32 +0530 [thread overview]
Message-ID: <4EB5178C.7010703@linux.vnet.ibm.com> (raw)
In-Reply-To: <1320444241-834-8-git-send-email-fenghua.yu@intel.com>
On 11/05/2011 03:33 AM, Fenghua Yu wrote:
> From: Fenghua Yu <fenghua.yu@intel.com>
>
> By default, BSP can't be hotpluggable because bsp_hotpluggable is 0. Kernel
> parameter bsp_hotplug can enable BSP hotplug feature.
>
> arch_cpu_maps_update_begin() and arch_cpu_maps_update_done() locks/unlocks
> pm_mutex. This solves cpu maps race condition between BSP online check during
> hibernate/suspend and BSP online/offline operations.
>
> arch_state_check() checks if BSP is still the first online CPU.
>
> Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
> ---
> arch/x86/kernel/topology.c | 44 +++++++++++++++++++++++++++++++++++++-------
> 1 files changed, 37 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/kernel/topology.c b/arch/x86/kernel/topology.c
> index 8927486..287d7b6 100644
> --- a/arch/x86/kernel/topology.c
> +++ b/arch/x86/kernel/topology.c
> @@ -29,23 +29,53 @@
> #include <linux/mmzone.h>
> #include <linux/init.h>
> #include <linux/smp.h>
> +#include <linux/suspend.h>
> #include <asm/cpu.h>
>
> static DEFINE_PER_CPU(struct x86_cpu, cpu_devices);
>
> #ifdef CONFIG_HOTPLUG_CPU
> +
> +static int bsp_hotpluggable;
> +
> +static int __init enable_bsp_hotplug(char *str)
> +{
> + bsp_hotpluggable = 1;
> + return 0;
> +}
> +
> +__setup("bsp_hotplug", enable_bsp_hotplug);
> +
> +void arch_cpu_maps_update_begin(void)
> +{
> + lock_system_sleep();
> +}
> +
> +void arch_cpu_maps_update_done(void)
> +{
> + unlock_system_sleep();
> +}
> +
> +int arch_state_check(void)
> +{
> + if (cpumask_first(cpu_online_mask) != 0) {
> + printk(KERN_WARNING "No CPU0.\n");
How about a better warning, perhaps like "CPU0 is offline"
or something like that?
> + return -ENODEV;
> + }
> +
> + return 0;
> +}
> +
> int __ref arch_register_cpu(int num)
> {
> /*
> - * CPU0 cannot be offlined due to several
> - * restrictions and assumptions in kernel. This basically
> - * doesn't add a control file, one cannot attempt to offline
> - * BSP.
> + * Suspend/resume depends on BSP. PIC interrupts depend on BSP.
> *
> - * Also certain PCI quirks require not to enable hotplug control
> - * for all CPU's.
> + * If the BSP depencies are under control, tell kernel to
> + * enable BSP hotplug. This basically adds a control file and
> + * one can attempt to offline BSP.
> */
> - if (num)
> + if (num || bsp_hotpluggable)
> per_cpu(cpu_devices, num).cpu.hotpluggable = 1;
>
> return register_cpu(&per_cpu(cpu_devices, num).cpu, num);
Thanks,
Srivatsa S. Bhat
next prev parent reply other threads:[~2011-11-05 11:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-04 22:03 [PATCH 0/9] BSP or CPU0 online/offline Fenghua Yu
2011-11-04 22:03 ` [PATCH 1/9] include/linux/cpu.h: Define architecture dependent cpu map update and state check functions Fenghua Yu
2011-11-04 22:03 ` [PATCH 2/9] kernel/cpu.c: Add arch dependent cpu map update functions Fenghua Yu
2011-11-05 10:28 ` Srivatsa S. Bhat
2011-11-04 22:03 ` [PATCH 3/9] x86/i387.c: Thread xstate is initialized only on BSP once Fenghua Yu
2011-11-04 22:03 ` [PATCH 4/9] x86/common.c: Init BSP data during BSP online Fenghua Yu
2011-11-04 22:03 ` [PATCH 5/9] x86/mtrr/main.c: Ask the first online CPU to save mtrr Fenghua Yu
2011-11-04 22:03 ` [PATCH 6/9] kernel/power/suspend.c,hibernate.c: Don't hibernate/suspend if CPU0 is offline Fenghua Yu
2011-11-04 22:03 ` [PATCH 7/9] x86/topology.c: Support functions for BSP online/offline Fenghua Yu
2011-11-05 11:01 ` Srivatsa S. Bhat [this message]
2011-11-05 21:13 ` Srivatsa S. Bhat
2011-11-07 19:57 ` Yu, Fenghua
2011-11-04 22:04 ` [PATCH 8/9] x86/smpboot.c: Don't offline BSP if any irq can not be migrated out of it Fenghua Yu
2011-11-04 22:04 ` [PATCH 9/9] Documentations/cpu-hotplug.tx, kernel-parameters.txt: Add x86 CPU0 online/offline feature Fenghua Yu
2011-11-04 23:27 ` Randy Dunlap
2011-11-05 11:17 ` [PATCH 0/9] BSP or CPU0 online/offline Srivatsa S. Bhat
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=4EB5178C.7010703@linux.vnet.ibm.com \
--to=srivatsa.bhat@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=torvalds@linux-foundation.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.