Loading arch/powerpc/platforms/pseries/hotplug-memory.c +19 −11 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/of.h> #include <linux/memblock.h> #include <linux/vmalloc.h> #include <linux/memory.h> #include <asm/firmware.h> #include <asm/machdep.h> #include <asm/pSeries_reconfig.h> Loading @@ -20,24 +22,25 @@ static unsigned long get_memblock_size(void) { struct device_node *np; unsigned int memblock_size = 0; unsigned int memblock_size = MIN_MEMORY_BLOCK_SIZE; struct resource r; np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); if (np) { const unsigned long *size; const __be64 *size; size = of_get_property(np, "ibm,lmb-size", NULL); memblock_size = size ? *size : 0; if (size) memblock_size = be64_to_cpup(size); of_node_put(np); } else { } else if (machine_is(pseries)) { /* This fallback really only applies to pseries */ unsigned int memzero_size = 0; const unsigned int *regs; np = of_find_node_by_path("/memory@0"); if (np) { regs = of_get_property(np, "reg", NULL); memzero_size = regs ? regs[3] : 0; if (!of_address_to_resource(np, 0, &r)) memzero_size = resource_size(&r); of_node_put(np); } Loading @@ -50,16 +53,21 @@ static unsigned long get_memblock_size(void) sprintf(buf, "/memory@%x", memzero_size); np = of_find_node_by_path(buf); if (np) { regs = of_get_property(np, "reg", NULL); memblock_size = regs ? regs[3] : 0; if (!of_address_to_resource(np, 0, &r)) memblock_size = resource_size(&r); of_node_put(np); } } } return memblock_size; } /* WARNING: This is going to override the generic definition whenever * pseries is built-in regardless of what platform is active at boot * time. This is fine for now as this is the only "option" and it * should work everywhere. If not, we'll have to turn this into a * ppc_md. callback */ unsigned long memory_block_size_bytes(void) { return get_memblock_size(); Loading arch/x86/mm/init_64.c +1 −2 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <linux/poison.h> #include <linux/dma-mapping.h> #include <linux/module.h> #include <linux/memory.h> #include <linux/memory_hotplug.h> #include <linux/nmi.h> #include <linux/gfp.h> Loading Loading @@ -895,8 +896,6 @@ const char *arch_vma_name(struct vm_area_struct *vma) } #ifdef CONFIG_X86_UV #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) unsigned long memory_block_size_bytes(void) { if (is_uv_system()) { Loading drivers/base/memory.c +0 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ static DEFINE_MUTEX(mem_sysfs_mutex); #define MEMORY_CLASS_NAME "memory" #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) static int sections_per_block; Loading include/linux/memory.h +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <linux/compiler.h> #include <linux/mutex.h> #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) struct memory_block { unsigned long start_section_nr; unsigned long end_section_nr; Loading Loading
arch/powerpc/platforms/pseries/hotplug-memory.c +19 −11 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/of.h> #include <linux/memblock.h> #include <linux/vmalloc.h> #include <linux/memory.h> #include <asm/firmware.h> #include <asm/machdep.h> #include <asm/pSeries_reconfig.h> Loading @@ -20,24 +22,25 @@ static unsigned long get_memblock_size(void) { struct device_node *np; unsigned int memblock_size = 0; unsigned int memblock_size = MIN_MEMORY_BLOCK_SIZE; struct resource r; np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); if (np) { const unsigned long *size; const __be64 *size; size = of_get_property(np, "ibm,lmb-size", NULL); memblock_size = size ? *size : 0; if (size) memblock_size = be64_to_cpup(size); of_node_put(np); } else { } else if (machine_is(pseries)) { /* This fallback really only applies to pseries */ unsigned int memzero_size = 0; const unsigned int *regs; np = of_find_node_by_path("/memory@0"); if (np) { regs = of_get_property(np, "reg", NULL); memzero_size = regs ? regs[3] : 0; if (!of_address_to_resource(np, 0, &r)) memzero_size = resource_size(&r); of_node_put(np); } Loading @@ -50,16 +53,21 @@ static unsigned long get_memblock_size(void) sprintf(buf, "/memory@%x", memzero_size); np = of_find_node_by_path(buf); if (np) { regs = of_get_property(np, "reg", NULL); memblock_size = regs ? regs[3] : 0; if (!of_address_to_resource(np, 0, &r)) memblock_size = resource_size(&r); of_node_put(np); } } } return memblock_size; } /* WARNING: This is going to override the generic definition whenever * pseries is built-in regardless of what platform is active at boot * time. This is fine for now as this is the only "option" and it * should work everywhere. If not, we'll have to turn this into a * ppc_md. callback */ unsigned long memory_block_size_bytes(void) { return get_memblock_size(); Loading
arch/x86/mm/init_64.c +1 −2 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <linux/poison.h> #include <linux/dma-mapping.h> #include <linux/module.h> #include <linux/memory.h> #include <linux/memory_hotplug.h> #include <linux/nmi.h> #include <linux/gfp.h> Loading Loading @@ -895,8 +896,6 @@ const char *arch_vma_name(struct vm_area_struct *vma) } #ifdef CONFIG_X86_UV #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) unsigned long memory_block_size_bytes(void) { if (is_uv_system()) { Loading
drivers/base/memory.c +0 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ static DEFINE_MUTEX(mem_sysfs_mutex); #define MEMORY_CLASS_NAME "memory" #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) static int sections_per_block; Loading
include/linux/memory.h +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <linux/compiler.h> #include <linux/mutex.h> #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) struct memory_block { unsigned long start_section_nr; unsigned long end_section_nr; Loading