Skip to contentSkip to conversation

Subject: [PATCH 2/2] mm: include memory section subtree in sysfs with only sparsemem enabled

PATCH Gary Hade 2 participants 2 messages Oct 9, 2008 – Oct 10, 2008

Subsystems (4)
lore
Share & tools
lore

Gary Hade

author
#0 lore raw

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
Index: linux-2.6.27-rc8/drivers/base/Makefile
===================================================================
@@ -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
Index: linux-2.6.27-rc8/drivers/base/memory.c
===================================================================
@@ -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
Index: linux-2.6.27-rc8/drivers/base/node.c
===================================================================
@@ -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
Index: linux-2.6.27-rc8/include/linux/memory.h
===================================================================
@@ -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>

Acked-by
#1 lore raw

Thanks.

Quoted 111 lines

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(-)

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.o

Index: 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>