Patchwork powerpc: Add System RAM to /proc/iomem

login
register
mail settings
Submitter Anton Blanchard
Date Nov. 3, 2011, 12:56 a.m.
Message ID <20111103115612.1558c0dc@kryten>
Download mbox | patch
Permalink /patch/123377/
State Accepted
Headers show

Comments

Anton Blanchard - Nov. 3, 2011, 12:56 a.m.
We've resisted adding System RAM to /proc/iomem because it is
the wrong place for it. Unfortunately we continue to find tools
that rely on this behaviour so give up and add it in.

Signed-off-by: Anton Blanchard <anton@samba.org>
---

Patch

Index: linux-build/arch/powerpc/mm/mem.c
===================================================================
--- linux-build.orig/arch/powerpc/mm/mem.c	2011-11-03 11:28:48.128478738 +1100
+++ linux-build/arch/powerpc/mm/mem.c	2011-11-03 11:53:39.002465556 +1100
@@ -34,6 +34,7 @@ 
 #include <linux/suspend.h>
 #include <linux/memblock.h>
 #include <linux/hugetlb.h>
+#include <linux/slab.h>
 
 #include <asm/pgalloc.h>
 #include <asm/prom.h>
@@ -549,3 +550,32 @@  void update_mmu_cache(struct vm_area_str
 	hash_preload(vma->vm_mm, address, access, trap);
 #endif /* CONFIG_PPC_STD_MMU */
 }
+
+/*
+ * System memory should not be in /proc/iomem but various tools expect it
+ * (eg kdump).
+ */
+static int add_system_ram_resources(void)
+{
+	struct memblock_region *reg;
+
+	for_each_memblock(memory, reg) {
+		struct resource *res;
+		unsigned long base = reg->base;
+		unsigned long size = reg->size;
+
+		res = kzalloc(sizeof(struct resource), GFP_KERNEL);
+		WARN_ON(!res);
+
+		if (res) {
+			res->name = "System RAM";
+			res->start = base;
+			res->end = base + size - 1;
+			res->flags = IORESOURCE_MEM;
+			WARN_ON(request_resource(&iomem_resource, res) < 0);
+		}
+	}
+
+	return 0;
+}
+subsys_initcall(add_system_ram_resources);