--- v4
+++ v2
@@ -1,70 +1,12 @@
-=============
-Changes in v4
-=============
+Changes in v2:
+ * Add 2 new patches that create smp_shutdown_nonboot_cpus() to be used
+ in machine_shutdown() in ia64, arm and arm64
+ * Use proper kernel-doc for the newly introduced functions
+ * Renamed a function
+ * Removed a stale comment in a function
+ * Rebased on top of 5.4-rc8
- * Split arm and arm64 patches so that the change to use reboot_cpu goes
- into its own separate patch (Russell)
- * Collected new Acked-by
- * Rebased on top of v5.6-rc6
- * Trimmed the CC list on the cover letter as lists were rejecting it
-
-
- git clone git://linux-arm.org/linux-qy.git -b cpu-hp-cleanup-v4
-
-
-Older post can be found here
-----------------------------
-
- https://lore.kernel.org/lkml/20200223192942.18420-2-qais.yousef@arm.com/
-
-
-=============
-Test Coverage
-=============
-
- All tests ran with LOCKDEP enabled.
-
-Platform: Juno-r2: arm64
-------------------------
-
- * Overnight rcutorture
- * Overnight locktorture
- * kexec -f Image --command="$(cat /proc/cmdline) reboot=s[0-5]"
- * Hibernate to disk (using suspend option)
- * Userspace hotplug via sysfs
- * PSCI firemware checker
-
-Notes:
-
- * Couldn't convince Juno to hibernate using [reboot] or [shutdown]
- options.
-
-Platform: qemu (8 vCPUs) and VM (2 vCPUs): x86_64
--------------------------------------------------
-
- * Overnight rcutorture
- * Overnight locktorture
- * Userspace hotplug via sysfs
- * echo mmiotrace > /sys/kernel/debug/tracing/current_tracer &&
- echo nop > /sys/kernel/debug/tracing/current_tracer
- * Ran with CONFIG_DEBUG_HOTPLUG_CPU0 and CONFIG_BOOTPARAM_HOTPLUG_CPU0
-
-Notes:
-
- * qemu failed to bring cpu0 after offlining. Same behavior observed on
- vanilla v5.6-rc6. Worked fine on the VM.
-
- * mmiotrace successfully brought down all cpus when enabled,
- then back online again when disabled. Including when cpu0 was
- offline.
-
- * My xen shenanigans are too 'humble' too create environment to test
- the change in xen yet..
-
-
-=====================
-Original Cover Letter
-=====================
+ git clone git://linux-arm.org/linux-qy.git -b cpu-hp-cleanup-v2
Using cpu_up/down directly to bring cpus online/offline loses synchronization
with sysfs and could suffer from a race similar to what is described in
@@ -88,10 +30,7 @@
the way cpus are being onlined/offlined and this attempt hopefully improves on
this.
-The first patch introduces new API to {add,remove}_cpu() using device_{online,
-offline}() with correct locks held and export it.
-
-The following 10 patches fix arch users.
+The first 8 patches fix arch users.
The remaining 6 patches fix generic code users. Particularly creating a new
special exported API for the device core to use instead of cpu_up/down.
@@ -102,66 +41,102 @@
the logic in a higher level - special purposed function; and converted the code
to use that instead.
+I did re-run the rcu torture, lock torture and psci checker tests and no
+problem was noticed. I did perform build tests on all arch affected except for
+parisc.
+Hopefully I got the CC list right for all the patches. Apologies in advance if
+some people were omitted from some patches but they should have been CCed.
+
+CC: Armijn Hemel <armijn@tjaldur.nl>
+CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+CC: Bjorn Helgaas <bhelgaas@google.com>
+CC: Borislav Petkov <bp@alien8.de>
+CC: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+CC: Catalin Marinas <catalin.marinas@arm.com>
+CC: Christophe Leroy <christophe.leroy@c-s.fr>
+CC: Daniel Lezcano <daniel.lezcano@linaro.org>
+CC: Davidlohr Bueso <dave@stgolabs.net>
+CC: "David S. Miller" <davem@davemloft.net>
+CC: Eiichi Tsukata <devel@etsukata.com>
+CC: Enrico Weigelt <info@metux.net>
+CC: Fenghua Yu <fenghua.yu@intel.com>
+CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+CC: Helge Deller <deller@gmx.de>
+CC: "H. Peter Anvin" <hpa@zytor.com>
+CC: Ingo Molnar <mingo@kernel.org>
+CC: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
+CC: James Morse <james.morse@arm.com>
+CC: Jiri Kosina <jkosina@suse.cz>
+CC: Josh Poimboeuf <jpoimboe@redhat.com>
+CC: Josh Triplett <josh@joshtriplett.org>
+CC: Juergen Gross <jgross@suse.com>
+CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+CC: Mark Rutland <mark.rutland@arm.com>
+CC: Michael Ellerman <mpe@ellerman.id.au>
+CC: Nadav Amit <namit@vmware.com>
+CC: Nicholas Piggin <npiggin@gmail.com>
+CC: "Paul E. McKenney" <paulmck@kernel.org>
+CC: Paul Mackerras <paulus@samba.org>
+CC: Pavankumar Kondeti <pkondeti@codeaurora.org>
+CC: "Peter Zijlstra (Intel)" <peterz@infradead.org>
+CC: "Rafael J. Wysocki" <rafael@kernel.org>
+CC: Ram Pai <linuxram@us.ibm.com>
+CC: Richard Fontana <rfontana@redhat.com>
+CC: Russell King <linux@armlinux.org.uk>
+CC: Sakari Ailus <sakari.ailus@linux.intel.com>
+CC: Stefano Stabellini <sstabellini@kernel.org>
+CC: Steve Capper <steve.capper@arm.com>
+CC: Thiago Jung Bauermann <bauerman@linux.ibm.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Tony Luck <tony.luck@intel.com>
-CC: Fenghua Yu <fenghua.yu@intel.com>
-CC: Russell King <linux@armlinux.org.uk>
-CC: Catalin Marinas <catalin.marinas@arm.com>
-CC: Michael Ellerman <mpe@ellerman.id.au>
-CC: "David S. Miller" <davem@davemloft.net>
-CC: Helge Deller <deller@gmx.de>
-CC: Juergen Gross <jgross@suse.com>
-CC: Mark Rutland <mark.rutland@arm.com>
-CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
-CC: "Paul E. McKenney" <paulmck@kernel.org>
-CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-CC: xen-devel@lists.xenproject.org
-CC: linux-parisc@vger.kernel.org
-CC: sparclinux@vger.kernel.org
-CC: linuxppc-dev@lists.ozlabs.org
-CC: x86@kernel.org
+CC: Will Deacon <will@kernel.org>
+CC: Zhenzhong Duan <zhenzhong.duan@oracle.com>
CC: linux-arm-kernel@lists.infradead.org
CC: linux-ia64@vger.kernel.org
CC: linux-kernel@vger.kernel.org
+CC: linux-parisc@vger.kernel.org
+CC: linuxppc-dev@lists.ozlabs.org
+CC: sparclinux@vger.kernel.org
+CC: x86@kernel.org
+CC: xen-devel@lists.xenproject.org
-Qais Yousef (17):
- cpu: Add new {add,remove}_cpu() functions
- smp: Create a new function to shutdown nonboot cpus
+
+Qais Yousef (14):
+ smp: create a new function to shutdown nonboot cpus
ia64: Replace cpu_down with smp_shutdown_nonboot_cpus()
- arm: Don't use disable_nonboot_cpus()
- arm: Use reboot_cpu instead of hardcoding it to 0
- arm64: Don't use disable_nonboot_cpus()
- arm64: Use reboot_cpu instead of hardconding it to 0
- arm64: hibernate.c: Create a new function to handle cpu_up(sleep_cpu)
- x86: Replace cpu_up/down with add/remove_cpu
- powerpc: Replace cpu_up/down with add/remove_cpu
- sparc: Replace cpu_up/down with add/remove_cpu
- parisc: Replace cpu_up/down with add/remove_cpu
+ arm: arm64: Don't use disable_nonboot_cpus()
+ arm64: hibernate.c: create a new function to handle cpu_up(sleep_cpu)
+ x86: Replace cpu_up/down with devcie_online/offline
+ powerpc: Replace cpu_up/down with device_online/offline
+ sparc: Replace cpu_up/down with device_online/offline
+ parisc: Replace cpu_up/down with device_online/offline
+ driver: base: cpu: export device_online/offline
driver: xen: Replace cpu_up/down with device_online/offline
- firmware: psci: Replace cpu_up/down with add/remove_cpu
- torture: Replace cpu_up/down with add/remove_cpu
+ firmware: psci: Replace cpu_up/down with device_online/offline
+ torture: Replace cpu_up/down with device_online/offline
smp: Create a new function to bringup nonboot cpus online
cpu: Hide cpu_up/down
- arch/arm/kernel/reboot.c | 4 +-
- arch/arm64/kernel/hibernate.c | 13 +--
- arch/arm64/kernel/process.c | 4 +-
- arch/ia64/kernel/process.c | 8 +-
- arch/parisc/kernel/processor.c | 2 +-
- arch/powerpc/kexec/core_64.c | 2 +-
- arch/sparc/kernel/ds.c | 4 +-
- arch/x86/kernel/topology.c | 22 ++---
- arch/x86/mm/mmio-mod.c | 4 +-
- arch/x86/xen/smp.c | 2 +-
- drivers/base/cpu.c | 4 +-
- drivers/firmware/psci/psci_checker.c | 4 +-
- drivers/xen/cpu_hotplug.c | 2 +-
- include/linux/cpu.h | 10 +-
- kernel/cpu.c | 134 ++++++++++++++++++++++++++-
- kernel/smp.c | 9 +-
- kernel/torture.c | 9 +-
- 17 files changed, 172 insertions(+), 65 deletions(-)
+ arch/arm/kernel/reboot.c | 4 +-
+ arch/arm64/kernel/hibernate.c | 13 ++--
+ arch/arm64/kernel/process.c | 4 +-
+ arch/ia64/kernel/process.c | 8 +--
+ arch/parisc/kernel/processor.c | 4 +-
+ arch/powerpc/kernel/machine_kexec_64.c | 4 +-
+ arch/sparc/kernel/ds.c | 8 ++-
+ arch/x86/kernel/topology.c | 4 +-
+ arch/x86/mm/mmio-mod.c | 8 ++-
+ arch/x86/xen/smp.c | 4 +-
+ drivers/base/core.c | 4 ++
+ drivers/base/cpu.c | 4 +-
+ drivers/firmware/psci/psci_checker.c | 6 +-
+ drivers/xen/cpu_hotplug.c | 2 +-
+ include/linux/cpu.h | 8 ++-
+ kernel/cpu.c | 85 ++++++++++++++++++++++++--
+ kernel/smp.c | 9 +--
+ kernel/torture.c | 15 +++--
+ 18 files changed, 143 insertions(+), 51 deletions(-)
--
2.17.1