linux/arch/powerpc/platforms/pseries
David Hildenbrand 8df1d0e4a2 mm/memory_hotplug: make add_memory() take the device_hotplug_lock
add_memory() currently does not take the device_hotplug_lock, however
is aleady called under the lock from
	arch/powerpc/platforms/pseries/hotplug-memory.c
	drivers/acpi/acpi_memhotplug.c
to synchronize against CPU hot-remove and similar.

In general, we should hold the device_hotplug_lock when adding memory to
synchronize against online/offline request (e.g.  from user space) - which
already resulted in lock inversions due to device_lock() and
mem_hotplug_lock - see 30467e0b3b ("mm, hotplug: fix concurrent memory
hot-add deadlock").  add_memory()/add_memory_resource() will create memory
block devices, so this really feels like the right thing to do.

Holding the device_hotplug_lock makes sure that a memory block device
can really only be accessed (e.g. via .online/.state) from user space,
once the memory has been fully added to the system.

The lock is not held yet in
	drivers/xen/balloon.c
	arch/powerpc/platforms/powernv/memtrace.c
	drivers/s390/char/sclp_cmd.c
	drivers/hv/hv_balloon.c
So, let's either use the locked variants or take the lock.

Don't export add_memory_resource(), as it once was exported to be used by
XEN, which is never built as a module.  If somebody requires it, we also
have to export a locked variant (as device_hotplug_lock is never
exported).

Link: http://lkml.kernel.org/r/20180925091457.28651-3-david@redhat.com
Signed-off-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Pavel Tatashin <pavel.tatashin@microsoft.com>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Rashmica Gupta <rashmica.g@gmail.com>
Reviewed-by: Oscar Salvador <osalvador@suse.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Len Brown <lenb@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: John Allen <jallen@linux.vnet.ibm.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Mathieu Malaterre <malat@debian.org>
Cc: Pavel Tatashin <pavel.tatashin@microsoft.com>
Cc: YASUAKI ISHIMATSU <yasu.isimatu@gmail.com>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Michael Neuling <mikey@neuling.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-10-31 08:54:17 -07:00
..
cmm.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
dlpar.c powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
dtl.c powerpc/pseries: Fix how we iterate over the DTL entries 2018-10-03 15:40:02 +10:00
eeh_pseries.c powerpc/eeh: Cleanup eeh_ops.wait_state() 2018-10-13 22:21:25 +11:00
event_sources.c powerpc/pseries: Use of_irq_get helper() in request_event_sources_irqs() 2018-10-03 15:40:01 +10:00
firmware.c powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
hotplug-cpu.c powerpc: Convert to using %pOFn instead of device_node.name 2018-10-03 15:40:01 +10:00
hotplug-memory.c mm/memory_hotplug: make add_memory() take the device_hotplug_lock 2018-10-31 08:54:17 -07:00
hvCall_inst.c powerpc/pseries: hcall_exit tracepoint retval should be signed 2018-05-10 23:17:43 +10:00
hvCall.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
hvconsole.c
hvcserver.c
ibmebus.c powerpc: Convert to using %pOFn instead of device_node.name 2018-10-03 15:40:01 +10:00
io_event_irq.c powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
iommu.c powerpc updates for 4.16 2018-02-02 10:01:04 -08:00
Kconfig powerpc/pseries: Add driver for PAPR SCM regions 2018-10-19 00:56:17 +11:00
kexec.c powerpc/xive: Remove xive_kexec_teardown_cpu() 2018-08-07 21:49:28 +10:00
lpar.c powerpc/pseries: Export raw per-CPU VPA data via debugfs 2018-10-20 13:26:47 +11:00
lparcfg.c powerpc/pseries: Remove VLA from lparcfg_write() 2018-09-19 22:08:12 +10:00
Makefile powerpc/pseries: Add driver for PAPR SCM regions 2018-10-19 00:56:17 +11:00
mobility.c powerpc/pseries/mobility: Extend start/stop topology update scope 2018-10-13 22:21:25 +11:00
msi.c powerpc/eeh: Cleanup list_head field names 2018-10-13 22:21:25 +11:00
nvram.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
of_helpers.c pseries/drc-info: Search DRC properties for CPU indexes 2018-01-21 16:21:46 +11:00
of_helpers.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
offline_states.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
papr_scm.c powerpc/pseries: Add driver for PAPR SCM regions 2018-10-19 00:56:17 +11:00
pci_dlpar.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
pci.c powerpc/eeh: Cleanup EEH_POSTPONED_PROBE 2018-10-13 22:21:25 +11:00
pmem.c powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
power.c powerpc/sparse: Include headers containing prototypes 2016-06-16 22:40:19 +10:00
pseries_energy.c pseries/drc-info: Search DRC properties for CPU indexes 2018-01-21 16:21:46 +11:00
pseries.h powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
ras.c powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
reconfig.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
rng.c
scanlog.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
setup.c powerpc/pseries: Dump the SLB contents on SLB MCE errors. 2018-09-19 21:59:41 +10:00
smp.c Merge branch 'topic/paca' into next 2018-03-31 09:09:36 +11:00
suspend.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
vio.c powerpc: Convert to using %pOFn instead of device_node.name 2018-10-03 15:40:01 +10:00