linux/arch/arm
Stephen Boyd 787047eea2 ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable
Writes to /sys/.../cpuX/online fail if we determine the platform
doesn't support hotplug for that CPU. Furthermore, if the cpu_die
op isn't specified the system hangs when we try to offline a CPU
and it comes right back online unexpectedly. Let's figure this
stuff out before we make the sysfs nodes so that the online file
doesn't even exist if it isn't (at least sometimes) possible to
hotplug the CPU.

Add a new 'cpu_can_disable' op and repoint all 'cpu_disable'
implementations at it because all implementers use the op to
indicate if a CPU can be hotplugged or not in a static fashion.
With PSCI we may need to add a 'cpu_disable' op so that the
secure OS can be migrated off the CPU we're trying to hotplug.
In this case, the 'cpu_can_disable' op will indicate that all
CPUs are hotpluggable by returning true, but the 'cpu_disable' op
will make a PSCI migration call and occasionally fail, denying
the hotplug of a CPU. This shouldn't be any worse than x86 where
we may indicate that all CPUs are hotpluggable but occasionally
we can't offline a CPU due to check_irq_vectors_for_cpu_disable()
failing to find a CPU to move vectors to.

Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Nicolas Pitre <nico@linaro.org>
Cc: Dave Martin <Dave.Martin@arm.com>
Acked-by: Simon Horman <horms@verge.net.au> [shmobile portion]
Tested-by: Simon Horman <horms@verge.net.au>
Cc: Magnus Damm <magnus.damm@gmail.com>
Cc: <linux-sh@vger.kernel.org>
Tested-by: Tyler Baker <tyler.baker@linaro.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-07-31 18:58:30 +01:00
..
boot ARM: SoC: late fixes and dependencies 2015-07-02 14:40:49 -07:00
common ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable 2015-07-31 18:58:30 +01:00
configs ARM: multi_v7_defconfig: Enable BRCMNAND driver 2015-07-01 13:04:13 -07:00
crypto
firmware
include ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable 2015-07-31 18:58:30 +01:00
kernel ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable 2015-07-31 18:58:30 +01:00
kvm Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
lib Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
mach-alpine
mach-asm9260
mach-at91 genalloc: rename dev_get_gen_pool() to gen_pool_get() 2015-06-30 19:45:01 -07:00
mach-axxia
mach-bcm ARM: BCM: Do not select CONFIG_MTD_NAND_BRCMNAND 2015-07-01 13:04:13 -07:00
mach-berlin ARM: SoC: driver updates for v4.2 2015-06-26 11:54:29 -07:00
mach-clps711x
mach-cns3xxx
mach-davinci ARM: SoC cleanups for v4.2 2015-06-26 11:08:27 -07:00
mach-digicolor
mach-dove ARM: dove: fix legacy dove IRQ numbers 2015-06-24 11:05:57 +02:00
mach-ebsa110
mach-efm32
mach-ep93xx ARM: ep93xx: simone: support for SPI-based MMC/SD cards 2015-06-11 14:21:29 -07:00
mach-exynos The changes to the common clock framework for 4.2 are dominated by new 2015-07-01 19:22:00 -07:00
mach-footbridge
mach-gemini ARM: gemini: Fix race in installing GPIO chained IRQ handler 2015-06-18 14:03:08 +02:00
mach-highbank
mach-hisi arm/mach-hisi: remove legacy __CPUINIT section that crept in 2015-06-16 14:12:21 -04:00
mach-imx genalloc: rename dev_get_gen_pool() to gen_pool_get() 2015-06-30 19:45:01 -07:00
mach-integrator ARM: 8365/1: introduce sp804_timer_disable and remove arm_timer.h inclusion 2015-06-02 09:58:18 +01:00
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
mach-ks8695
mach-lpc18xx
mach-lpc32xx Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-07-01 15:19:35 -07:00
mach-mediatek
mach-meson
mach-mmp
mach-moxart
mach-mv78xx0
mach-mvebu ARM: SoC: late fixes and dependencies 2015-07-02 14:40:49 -07:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire ARM: 8366/1: move Dual-Timer SP804 driver to drivers/clocksource 2015-06-02 09:58:18 +01:00
mach-omap1 ARM: SoC: platform support for v4.2 2015-06-26 11:34:35 -07:00
mach-omap2 - hwspinlock core DT support from Suman Anna 2015-07-03 14:52:25 -07:00
mach-orion5x
mach-picoxcell
mach-prima2 ARM: v7 setup function should invalidate L1 cache 2015-06-01 11:30:26 +01:00
mach-pxa ARM: SoC: platform support for v4.2 2015-06-26 11:34:35 -07:00
mach-qcom
mach-realview ARM: 8366/1: move Dual-Timer SP804 driver to drivers/clocksource 2015-06-02 09:58:18 +01:00
mach-rockchip Remove __cpuinit macros and users. 2015-07-02 09:54:14 -07:00
mach-rpc
mach-s3c24xx
mach-s3c64xx
mach-s5pv210
mach-sa1100 Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
mach-shmobile ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable 2015-07-31 18:58:30 +01:00
mach-socfpga genalloc: rename dev_get_gen_pool() to gen_pool_get() 2015-06-30 19:45:01 -07:00
mach-spear
mach-sti
mach-stm32
mach-sunxi
mach-tegra ARM: SoC: platform support for v4.2 2015-06-26 11:34:35 -07:00
mach-u300
mach-uniphier
mach-ux500
mach-versatile ARM: 8366/1: move Dual-Timer SP804 driver to drivers/clocksource 2015-06-02 09:58:18 +01:00
mach-vexpress arm: don't use module_init in non-modular mach-vexpress/spc.c code 2015-06-16 14:12:29 -04:00
mach-vt8500
mach-w90x900
mach-zx ARM: zx: fix building with CONFIG_THUMB2_KERNEL 2015-05-22 16:45:54 +02:00
mach-zynq ARM: SoC: platform support for v4.2 2015-06-26 11:34:35 -07:00
mm ARM: 8395/1: l2c: Add support for the "arm,shared-override" property 2015-07-10 11:07:31 +01:00
net
nwfpe
oprofile
plat-iop
plat-omap
plat-orion
plat-pxa
plat-samsung ARM: SAMSUNG: Constify platform_device_id 2015-06-06 02:18:02 +09:00
plat-versatile
probes
tools
vdso ARM: 8384/1: VDSO: force use of BFD linker 2015-06-06 10:37:12 +01:00
vfp
xen xen: Include xen/page.h rather than asm/xen/page.h 2015-06-17 16:14:18 +01:00
Kconfig Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
Kconfig-nommu
Kconfig.debug Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
Makefile Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00