Hi Thomas

On 11/25/19 11:27, Qais Yousef wrote:
> 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
> 
>       git clone git://linux-arm.org/linux-qy.git -b cpu-hp-cleanup-v2

I want to spin v3 to address Russel's comments. If you have any feedback it'd
be great to have them before I spin v3.

Thanks

--
Qais Yousef

> 
> 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
> commit a6717c01ddc2 ("powerpc/rtas: use device model APIs and serialization
> during LPM").
> 
> cpu_up/down seem to be more of a internal implementation detail for the cpu
> subsystem to use to boot up cpus, perform suspend/resume and low level hotplug
> operations. Users outside of the cpu subsystem would be better using the 
> device
> core API to bring a cpu online/offline which is the interface used to hotplug
> memory and other system devices.
> 
> Several users have already migrated to use the device core API, this series
> converts the remaining users and hides cpu_up/down from internal users at the
> end.
> 
> I noticed this problem while working on a hack to disable offlining
> a particular CPU but noticed that setting the offline_disabled attribute in 
> the
> device struct isn't enough because users can easily bypass the device core.
> While my hack isn't a valid use case but it did highlight the inconsistency in
> the way cpus are being onlined/offlined and this attempt hopefully improves on
> this.
> 
> 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.
> 
> The last patch removes cpu_up/down from cpu.h and unexport the functions.
> 
> In some cases where the use of cpu_up/down seemed legitimate, I encapsulated
> 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 <arm...@tjaldur.nl>
> CC: Benjamin Herrenschmidt <b...@kernel.crashing.org>
> CC: Bjorn Helgaas <bhelg...@google.com>
> CC: Borislav Petkov <b...@alien8.de>
> CC: Boris Ostrovsky <boris.ostrov...@oracle.com>
> CC: Catalin Marinas <catalin.mari...@arm.com>
> CC: Christophe Leroy <christophe.le...@c-s.fr>
> CC: Daniel Lezcano <daniel.lezc...@linaro.org>
> CC: Davidlohr Bueso <d...@stgolabs.net>
> CC: "David S. Miller" <da...@davemloft.net>
> CC: Eiichi Tsukata <de...@etsukata.com>
> CC: Enrico Weigelt <i...@metux.net>
> CC: Fenghua Yu <fenghua...@intel.com>
> CC: Greg Kroah-Hartman <gre...@linuxfoundation.org>
> CC: Helge Deller <del...@gmx.de>
> CC: "H. Peter Anvin" <h...@zytor.com>
> CC: Ingo Molnar <mi...@kernel.org>
> CC: "James E.J. Bottomley" <james.bottom...@hansenpartnership.com>
> CC: James Morse <james.mo...@arm.com>
> CC: Jiri Kosina <jkos...@suse.cz>
> CC: Josh Poimboeuf <jpoim...@redhat.com>
> CC: Josh Triplett <j...@joshtriplett.org>
> CC: Juergen Gross <jgr...@suse.com>
> CC: Lorenzo Pieralisi <lorenzo.pieral...@arm.com>
> CC: Mark Rutland <mark.rutl...@arm.com>
> CC: Michael Ellerman <m...@ellerman.id.au>
> CC: Nadav Amit <na...@vmware.com>
> CC: Nicholas Piggin <npig...@gmail.com>
> CC: "Paul E. McKenney" <paul...@kernel.org>
> CC: Paul Mackerras <pau...@samba.org>
> CC: Pavankumar Kondeti <pkond...@codeaurora.org>
> CC: "Peter Zijlstra (Intel)" <pet...@infradead.org>
> CC: "Rafael J. Wysocki" <raf...@kernel.org>
> CC: Ram Pai <linux...@us.ibm.com>
> CC: Richard Fontana <rfont...@redhat.com>
> CC: Russell King <li...@armlinux.org.uk>
> CC: Sakari Ailus <sakari.ai...@linux.intel.com>
> CC: Stefano Stabellini <sstabell...@kernel.org>
> CC: Steve Capper <steve.cap...@arm.com>
> CC: Thiago Jung Bauermann <bauer...@linux.ibm.com>
> CC: Thomas Gleixner <t...@linutronix.de>
> CC: Tony Luck <tony.l...@intel.com>
> CC: Will Deacon <w...@kernel.org>
> CC: Zhenzhong Duan <zhenzhong.d...@oracle.com>
> CC: linux-arm-ker...@lists.infradead.org
> CC: linux-i...@vger.kernel.org
> CC: linux-ker...@vger.kernel.org
> CC: linux-par...@vger.kernel.org
> CC: linuxppc-...@lists.ozlabs.org
> CC: sparcli...@vger.kernel.org
> CC: x...@kernel.org
> CC: xen-devel@lists.xenproject.org
> 
> 
> Qais Yousef (14):
>   smp: create a new function to shutdown nonboot cpus
>   ia64: Replace cpu_down with smp_shutdown_nonboot_cpus()
>   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 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         |  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
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to