diff options
Diffstat (limited to 'arch/powerpc/mm/mem.c')
| -rw-r--r-- | arch/powerpc/mm/mem.c | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 16da595ff40..2dd6bdd31fe 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -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> @@ -555,3 +556,32 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address,  		book3e_hugetlb_preload(vma->vm_mm, address, *ptep);  #endif  } + +/* + * 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);  |