Subject: [PATCH 2/2] mm: include memory section subtree in sysfs with only sparsemem enabled
Subsystems (4)
Include memory section subtree in sysfs with only Sparsemem enabled.
Inclusion of the /sys/devices/system/memory subtree and symlinks to the /sys/devices/system/memory/memory* memory section directories from /sys/devices/system/node/node* currently depend on both Memory Hotplug (CONFIG_MEMORY_HOTPLUG) and Sparsemem (CONFIG_SPARSEMEM) being enabled. This change eliminates the Memory Hotplug dependency so that the useful memory section information will be available in sysfs when only Sparsemem is enabled.
Tested on 2-node x86_64, 2-node ppc64, and 2-node ia64 systems.
This change is in response to the suggestion received from Yasunori Goto on 30 Sept 2008 in his review comments with respect to the "mm: show node to memory section relationship with symlinks in sysfs" patch posted on 29 Sept 2008.
--- drivers/base/Makefile | 2 +- drivers/base/memory.c | 9 +++++++++ drivers/base/node.c | 4 ++-- include/linux/memory.h | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-)
drivers/base/Makefile +1 -1
@@ -9,7 +9,7 @@ obj-$(CONFIG_ISA) += isa.o obj-$(CONFIG_FW_LOADER) += firmware_class.o obj-$(CONFIG_NUMA) += node.o -obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o +obj-$(CONFIG_SPARSEMEM) += memory.o obj-$(CONFIG_SMP) += topology.o ifeq ($(CONFIG_SYSFS),y) obj-$(CONFIG_MODULES) += module.o
drivers/base/memory.c +9 -0
@@ -155,6 +155,7 @@return blocking_notifier_call_chain (&memory_chain, val, v); } +#ifdef CONFIG_MEMORY_HOTPLUG /* * MEMORY_HOTPLUG depends on SPARSEMEM in mm/Kconfig, so it is * OK to have direct references to sparsemem variables in here.
@@ -256,6 +257,14 @@return ret; return count; } +#else +static ssize_t +store_mem_state (struct sys_device *dev, +struct sysdev_attribute *attr,const char *buf,size_t count) +{ +return -EINVAL ; +} +#endif /* CONFIG_MEMORY_HOTPLUG */ /* * phys_device is a bad name for this. What I really want
drivers/base/node.c +2 -2
@@ -226,7 +226,7 @@return 0 ; } -#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE +#ifdef CONFIG_SPARSEMEM #define page_initialized (page) (page->lru.next)static int get_nid_for_pfn (unsigned long pfn)
@@ -320,7 +320,7 @@ }#else static int link_mem_sections (int nid) {return 0 ; } -#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ +#endif /* CONFIG_SPARSEMEM */ int register_one_node (int nid) {
include/linux/memory.h +2 -2
@@ -60,7 +60,7 @@#define SLAB_CALLBACK_PRI 1#define IPC_CALLBACK_PRI 10 -#ifndef CONFIG_MEMORY_HOTPLUG_SPARSE +#ifndef CONFIG_SPARSEMEM static inline int memory_dev_init (void ) {return 0 ;
@@ -87,7 +87,7 @@extern struct memory_block *find_memory_block (struct mem_section *);#define CONFIG_MEM_BLOCK_SIZE (PAGES_PER_SECTION<<PAGE_SHIFT)enum mem_add_context {BOOT ,HOTPLUG }; -#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ +#endif /* CONFIG_SPARSEMEM */ #ifdef CONFIG_MEMORY_HOTPLUG #define hotplug_memory_notifier (fn, pri) { \
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Yasunori Goto
Acked-byThanks.
Quoted 111 lines
Include memory section subtree in sysfs with only Sparsemem enabled.
Inclusion of the
/sys/devices/system/memorysubtree and symlinks to the/sys/devices/system/memory/memory*memory section directories from/sys/devices/system/node/node*currently depend on both Memory Hotplug (CONFIG_MEMORY_HOTPLUG) and Sparsemem (CONFIG_SPARSEMEM) being enabled. This change eliminates the Memory Hotplug dependency so that the useful memory section information will be available in sysfs when only Sparsemem is enabled.Tested on 2-node
x86_64, 2-node ppc64, and 2-node ia64 systems.This change is in response to the suggestion received from Yasunori Goto on 30 Sept 2008 in his review comments with respect to the "mm: show node to memory section relationship with symlinks in sysfs" patch posted on 29 Sept 2008.
Signed-off-by Gary Hade <[email protected]>--- drivers/base/Makefile | 2 +- drivers/base/memory.c | 9 +++++++++ drivers/base/node.c | 4 ++-- include/linux/memory.h | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-)Index: linux-2.6.27-rc8/drivers/base/Makefile
===================================================================drivers/base/Makefile +1
-1@@ -9,7 +9,7 @@ obj-$(CONFIG_ISA) += isa.o obj-$(CONFIG_FW_LOADER) += firmware_class.o obj-$(CONFIG_NUMA) += node.o -obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o +obj-$(CONFIG_SPARSEMEM) += memory.o obj-$(CONFIG_SMP) += topology.o ifeq ($(CONFIG_SYSFS),y) obj-$(CONFIG_MODULES) += module.oIndex:
linux-2.6.27-rc8/drivers/base/memory.c
===================================================================drivers/base/memory.c +9
-0@@ -155,6 +155,7 @@return blocking_notifier_call_chain (&memory_chain, val, v); } +#ifdef CONFIG_MEMORY_HOTPLUG /* * MEMORY_HOTPLUG depends on SPARSEMEM in mm/Kconfig, so it is * OK to have direct references to sparsemem variables in here. @@ -256,6 +257,14 @@return ret; return count; } +#else +static ssize_t +store_mem_state (struct sys_device *dev, +struct sysdev_attribute *attr,const char *buf,size_t count) +{ +return -EINVAL ; +} +#endif /* CONFIG_MEMORY_HOTPLUG */ /* * phys_device is a bad name for this. What I really want Index:
linux-2.6.27-rc8/drivers/base/node.c
===================================================================drivers/base/node.c +2
-2@@ -226,7 +226,7 @@return 0 ; } -#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE +#ifdef CONFIG_SPARSEMEM #define page_initialized (page) (page->lru.next)static int get_nid_for_pfn (unsigned long pfn)@@ -320,7 +320,7 @@ }#else static int link_mem_sections (int nid) {return 0 ; } -#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ +#endif /* CONFIG_SPARSEMEM */ int register_one_node (int nid) {Index:
linux-2.6.27-rc8/include/linux/memory.h
===================================================================include/linux/memory.h +2
-2@@ -60,7 +60,7 @@#define SLAB_CALLBACK_PRI 1#define IPC_CALLBACK_PRI 10 -#ifndef CONFIG_MEMORY_HOTPLUG_SPARSE +#ifndef CONFIG_SPARSEMEM static inline int memory_dev_init (void ) {return 0 ;@@ -87,7 +87,7 @@extern struct memory_block *find_memory_block (struct mem_section *);#define CONFIG_MEM_BLOCK_SIZE (PAGES_PER_SECTION<<PAGE_SHIFT)enum mem_add_context {BOOT ,HOTPLUG }; -#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ +#endif /* CONFIG_SPARSEMEM */ #ifdef CONFIG_MEMORY_HOTPLUG #define hotplug_memory_notifier (fn, pri) { \
Signature · 8 lines
Yasunori Goto -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>