kernel-ark/drivers/base
Anton Blanchard 5409d2cd84 memory hotplug: Speed up add/remove when blocks are larger than PAGES_PER_SECTION
On ppc64 the minimum memory section for hotplug is 16MB but most
recent machines have a memory block size of 256MB. This means
memory_block_change_state does 16 separate calls to
memory_section_action.

This also means we call the notifiers 16 times and the hook
in the ehea network driver is quite costly. To offline one 256MB
region takes:

# time echo offline > /sys/devices/system/memory/memory32/state
7.9s

This patch removes the loop and calls online_pages or
remove_memory once for the entire region and in doing so makes
the logic simpler since we don't have to back out if things fail
part way through.

The same test to offline one region now takes:

# time echo online > /sys/devices/system/memory/memory32/state
0.67s

Over 11 times faster.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-05-11 15:19:27 -07:00
..
power PM / Hibernate: Introduce CONFIG_HIBERNATE_CALLBACKS 2011-04-11 22:54:42 +02:00
attribute_container.c [SCSI] attirbute_container: Initialize sysfs attributes with sysfs_attr_init 2010-03-27 15:15:24 -04:00
base.h driver-core: merge private parts of class and bus 2010-11-17 14:21:08 -08:00
bus.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
class.c driver-core: merge private parts of class and bus 2010-11-17 14:21:08 -08:00
core.c drivers/base/core.c: Fixed brace coding style issue. 2011-04-22 17:06:30 -07:00
cpu.c drivers/base/cpu.c: fix the output from /sys/devices/system/cpu/offline 2010-05-21 09:37:28 -07:00
dd.c driver core: let dev_set_drvdata return int instead of void as it can fail 2011-04-22 17:09:13 -07:00
devres.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
devtmpfs.c convert get_sb_single() users 2010-10-29 04:16:28 -04:00
dma-coherent.c Driver core: internal struct dma_coherent_mem, change type of a member. 2010-08-05 13:53:33 -07:00
dma-mapping.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
driver.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
firmware_class.c firmware_classs: change val uevent's type to bool 2011-02-03 15:39:17 -08:00
firmware.c
hypervisor.c
init.c
iommu.c iommu-api: Remove iommu_{un}map_range functions 2010-03-07 18:01:13 +01:00
isa.c
Kconfig Introduce ARCH_NO_SYSDEV_OPS config option (v2) 2011-03-23 22:16:41 +01:00
Makefile PM / Core: Introduce struct syscore_ops for core subsystems PM 2011-03-15 00:43:46 +01:00
map.c
memory.c memory hotplug: Speed up add/remove when blocks are larger than PAGES_PER_SECTION 2011-05-11 15:19:27 -07:00
module.c driver core: module.c: Use kasprintf 2010-05-21 09:37:29 -07:00
node.c memory hotplug: Update phys_index to [start|end]_section_nr 2011-02-03 16:08:57 -08:00
platform.c driver core/platform_device_add_resources: free resource before overwriting 2011-04-22 17:09:13 -07:00
sys.c Fix common misspellings 2011-03-31 11:26:23 -03:00
syscore.c PM / Core: Introduce struct syscore_ops for core subsystems PM 2011-03-15 00:43:46 +01:00
topology.c topology/sysfs: Provide book id and siblings attributes 2010-09-09 20:41:25 +02:00
transport_class.c