diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 22:56:33 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 22:56:33 -0500 |
commit | 74b84233458e9db7c160cec67638efdbec748ca9 (patch) | |
tree | 0d174c7386386dca17f494396d7febc300ffa3dd /arch/x86/Kconfig | |
parent | 507447473756e316f3f182324071389a51736a83 (diff) | |
parent | a71c8bc5dfefbbf80ef90739791554ef7ea4401b (diff) |
Merge branch 'x86-bsp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 BSP hotplug changes from Ingo Molnar:
"This tree enables CPU#0 (the boot processor) to be onlined/offlined on
x86, just like any other CPU. Enabled on Intel CPUs for now.
Allowing this required the identification and fixing of latent CPU#0
assumptions (such as CPU#0 initializations, etc.) in the x86
architecture code, plus the identification of barriers to
BSP-offlining, such as active PIC interrupts which can only be
serviced on the BSP.
It's behind a default-off option, and there's a debug option that
allows the automatic testing of this feature.
The motivation of this feature is to allow and prepare for true
CPU-hotplug hardware support: recent changes to MCE support enable us
to detect a deteriorating but not yet hard-failing L1/L2 cache on a
CPU that could be soft-unplugged - or a failing L3 cache on a
multi-socket system.
Note that true hardware hot-plug is not yet fully enabled by this,
because that requires a special platform wakeup sequence to be sent to
the freshly powered up CPU#0. Future patches for this are planned,
once such a platform exists. Chicken and egg"
* 'x86-bsp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86, topology: Debug CPU0 hotplug
x86/i387.c: Initialize thread xstate only on CPU0 only once
x86, hotplug: Handle retrigger irq by the first available CPU
x86, hotplug: The first online processor saves the MTRR state
x86, hotplug: During CPU0 online, enable x2apic, set_numa_node.
x86, hotplug: Wake up CPU0 via NMI instead of INIT, SIPI, SIPI
x86-32, hotplug: Add start_cpu0() entry point to head_32.S
x86-64, hotplug: Add start_cpu0() entry point to head_64.S
kernel/cpu.c: Add comment for priority in cpu_hotplug_pm_callback
x86, hotplug, suspend: Online CPU0 for suspend or hibernate
x86, hotplug: Support functions for CPU0 online/offline
x86, topology: Don't offline CPU0 if any PIC irq can not be migrated out of it
x86, Kconfig: Add config switch for CPU0 hotplug
doc: Add x86 CPU0 online/offline feature
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r-- | arch/x86/Kconfig | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 6c304438b503..2d643255c40d 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -1698,6 +1698,50 @@ config HOTPLUG_CPU | |||
1698 | automatically on SMP systems. ) | 1698 | automatically on SMP systems. ) |
1699 | Say N if you want to disable CPU hotplug. | 1699 | Say N if you want to disable CPU hotplug. |
1700 | 1700 | ||
1701 | config BOOTPARAM_HOTPLUG_CPU0 | ||
1702 | bool "Set default setting of cpu0_hotpluggable" | ||
1703 | default n | ||
1704 | depends on HOTPLUG_CPU && EXPERIMENTAL | ||
1705 | ---help--- | ||
1706 | Set whether default state of cpu0_hotpluggable is on or off. | ||
1707 | |||
1708 | Say Y here to enable CPU0 hotplug by default. If this switch | ||
1709 | is turned on, there is no need to give cpu0_hotplug kernel | ||
1710 | parameter and the CPU0 hotplug feature is enabled by default. | ||
1711 | |||
1712 | Please note: there are two known CPU0 dependencies if you want | ||
1713 | to enable the CPU0 hotplug feature either by this switch or by | ||
1714 | cpu0_hotplug kernel parameter. | ||
1715 | |||
1716 | First, resume from hibernate or suspend always starts from CPU0. | ||
1717 | So hibernate and suspend are prevented if CPU0 is offline. | ||
1718 | |||
1719 | Second dependency is PIC interrupts always go to CPU0. CPU0 can not | ||
1720 | offline if any interrupt can not migrate out of CPU0. There may | ||
1721 | be other CPU0 dependencies. | ||
1722 | |||
1723 | Please make sure the dependencies are under your control before | ||
1724 | you enable this feature. | ||
1725 | |||
1726 | Say N if you don't want to enable CPU0 hotplug feature by default. | ||
1727 | You still can enable the CPU0 hotplug feature at boot by kernel | ||
1728 | parameter cpu0_hotplug. | ||
1729 | |||
1730 | config DEBUG_HOTPLUG_CPU0 | ||
1731 | def_bool n | ||
1732 | prompt "Debug CPU0 hotplug" | ||
1733 | depends on HOTPLUG_CPU && EXPERIMENTAL | ||
1734 | ---help--- | ||
1735 | Enabling this option offlines CPU0 (if CPU0 can be offlined) as | ||
1736 | soon as possible and boots up userspace with CPU0 offlined. User | ||
1737 | can online CPU0 back after boot time. | ||
1738 | |||
1739 | To debug CPU0 hotplug, you need to enable CPU0 offline/online | ||
1740 | feature by either turning on CONFIG_BOOTPARAM_HOTPLUG_CPU0 during | ||
1741 | compilation or giving cpu0_hotplug kernel parameter at boot. | ||
1742 | |||
1743 | If unsure, say N. | ||
1744 | |||
1701 | config COMPAT_VDSO | 1745 | config COMPAT_VDSO |
1702 | def_bool y | 1746 | def_bool y |
1703 | prompt "Compat VDSO support" | 1747 | prompt "Compat VDSO support" |