diff options
| -rw-r--r-- | arch/arm/mm/init.c | 8 | ||||
| -rw-r--r-- | arch/powerpc/mm/mem.c | 14 | ||||
| -rw-r--r-- | arch/powerpc/mm/numa.c | 4 | ||||
| -rw-r--r-- | arch/sh/mm/init.c | 4 | ||||
| -rw-r--r-- | arch/sparc/mm/init_64.c | 4 | ||||
| -rw-r--r-- | include/linux/memblock.h | 25 |
6 files changed, 29 insertions, 30 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index d6022d1f51d1..63f441797c96 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
| @@ -182,8 +182,8 @@ static void __init arm_bootmem_init(struct meminfo *mi, | |||
| 182 | * Reserve the memblock reserved regions in bootmem. | 182 | * Reserve the memblock reserved regions in bootmem. |
| 183 | */ | 183 | */ |
| 184 | for_each_memblock(reserved, reg) { | 184 | for_each_memblock(reserved, reg) { |
| 185 | phys_addr_t start = memblock_region_base_pfn(reg); | 185 | phys_addr_t start = memblock_region_reserved_base_pfn(reg); |
| 186 | phys_addr_t end = memblock_region_end_pfn(reg); | 186 | phys_addr_t end = memblock_region_reserved_end_pfn(reg); |
| 187 | if (start >= start_pfn && end <= end_pfn) | 187 | if (start >= start_pfn && end <= end_pfn) |
| 188 | reserve_bootmem_node(pgdat, __pfn_to_phys(start), | 188 | reserve_bootmem_node(pgdat, __pfn_to_phys(start), |
| 189 | (end - start) << PAGE_SHIFT, | 189 | (end - start) << PAGE_SHIFT, |
| @@ -251,8 +251,8 @@ static void arm_memory_present(void) | |||
| 251 | struct memblock_region *reg; | 251 | struct memblock_region *reg; |
| 252 | 252 | ||
| 253 | for_each_memblock(memory, reg) | 253 | for_each_memblock(memory, reg) |
| 254 | memory_present(0, memblock_region_base_pfn(reg), | 254 | memory_present(0, memblock_region_memory_base_pfn(reg), |
| 255 | memblock_region_end_pfn(reg)); | 255 | memblock_region_memory_end_pfn(reg)); |
| 256 | } | 256 | } |
| 257 | #endif | 257 | #endif |
| 258 | 258 | ||
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index f661f6c527da..a66499650909 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
| @@ -148,8 +148,8 @@ walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages, | |||
| 148 | int ret = -1; | 148 | int ret = -1; |
| 149 | 149 | ||
| 150 | for_each_memblock(memory, reg) { | 150 | for_each_memblock(memory, reg) { |
| 151 | tstart = max(start_pfn, memblock_region_base_pfn(reg)); | 151 | tstart = max(start_pfn, memblock_region_memory_base_pfn(reg)); |
| 152 | tend = min(end_pfn, memblock_region_end_pfn(reg)); | 152 | tend = min(end_pfn, memblock_region_memory_end_pfn(reg)); |
| 153 | if (tstart >= tend) | 153 | if (tstart >= tend) |
| 154 | continue; | 154 | continue; |
| 155 | ret = (*func)(tstart, tend - tstart, arg); | 155 | ret = (*func)(tstart, tend - tstart, arg); |
| @@ -195,8 +195,8 @@ void __init do_init_bootmem(void) | |||
| 195 | /* Add active regions with valid PFNs */ | 195 | /* Add active regions with valid PFNs */ |
| 196 | for_each_memblock(memory, reg) { | 196 | for_each_memblock(memory, reg) { |
| 197 | unsigned long start_pfn, end_pfn; | 197 | unsigned long start_pfn, end_pfn; |
| 198 | start_pfn = memblock_region_base_pfn(reg); | 198 | start_pfn = memblock_region_memory_base_pfn(reg); |
| 199 | end_pfn = memblock_region_end_pfn(reg); | 199 | end_pfn = memblock_region_memory_end_pfn(reg); |
| 200 | add_active_range(0, start_pfn, end_pfn); | 200 | add_active_range(0, start_pfn, end_pfn); |
| 201 | } | 201 | } |
| 202 | 202 | ||
| @@ -236,9 +236,9 @@ static int __init mark_nonram_nosave(void) | |||
| 236 | 236 | ||
| 237 | for_each_memblock(memory, reg) { | 237 | for_each_memblock(memory, reg) { |
| 238 | if (prev && | 238 | if (prev && |
| 239 | memblock_region_end_pfn(prev) < memblock_region_base_pfn(reg)) | 239 | memblock_region_memory_end_pfn(prev) < memblock_region_memory_base_pfn(reg)) |
| 240 | register_nosave_region(memblock_region_end_pfn(prev), | 240 | register_nosave_region(memblock_region_memory_end_pfn(prev), |
| 241 | memblock_region_base_pfn(reg)); | 241 | memblock_region_memory_base_pfn(reg)); |
| 242 | prev = reg; | 242 | prev = reg; |
| 243 | } | 243 | } |
| 244 | return 0; | 244 | return 0; |
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 066fb443ba5a..74505b245374 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
| @@ -811,8 +811,8 @@ static void __init setup_nonnuma(void) | |||
| 811 | (top_of_ram - total_ram) >> 20); | 811 | (top_of_ram - total_ram) >> 20); |
| 812 | 812 | ||
| 813 | for_each_memblock(memory, reg) { | 813 | for_each_memblock(memory, reg) { |
| 814 | start_pfn = memblock_region_base_pfn(reg); | 814 | start_pfn = memblock_region_memory_base_pfn(reg); |
| 815 | end_pfn = memblock_region_end_pfn(reg); | 815 | end_pfn = memblock_region_memory_end_pfn(reg); |
| 816 | 816 | ||
| 817 | fake_numa_create_new_node(end_pfn, &nid); | 817 | fake_numa_create_new_node(end_pfn, &nid); |
| 818 | add_active_range(nid, start_pfn, end_pfn); | 818 | add_active_range(nid, start_pfn, end_pfn); |
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index b977475f7446..552bea5113f5 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
| @@ -244,8 +244,8 @@ static void __init do_init_bootmem(void) | |||
| 244 | /* Add active regions with valid PFNs. */ | 244 | /* Add active regions with valid PFNs. */ |
| 245 | for_each_memblock(memory, reg) { | 245 | for_each_memblock(memory, reg) { |
| 246 | unsigned long start_pfn, end_pfn; | 246 | unsigned long start_pfn, end_pfn; |
| 247 | start_pfn = memblock_region_base_pfn(reg); | 247 | start_pfn = memblock_region_memory_base_pfn(reg); |
| 248 | end_pfn = memblock_region_end_pfn(reg); | 248 | end_pfn = memblock_region_memory_end_pfn(reg); |
| 249 | __add_active_range(0, start_pfn, end_pfn); | 249 | __add_active_range(0, start_pfn, end_pfn); |
| 250 | } | 250 | } |
| 251 | 251 | ||
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index dc584d26d597..4c2572773b55 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c | |||
| @@ -1294,8 +1294,8 @@ static void __init bootmem_init_nonnuma(void) | |||
| 1294 | if (!reg->size) | 1294 | if (!reg->size) |
| 1295 | continue; | 1295 | continue; |
| 1296 | 1296 | ||
| 1297 | start_pfn = memblock_region_base_pfn(reg); | 1297 | start_pfn = memblock_region_memory_base_pfn(reg); |
| 1298 | end_pfn = memblock_region_end_pfn(reg); | 1298 | end_pfn = memblock_region_memory_end_pfn(reg); |
| 1299 | add_active_range(0, start_pfn, end_pfn); | 1299 | add_active_range(0, start_pfn, end_pfn); |
| 1300 | } | 1300 | } |
| 1301 | 1301 | ||
diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 5096458c7535..62a10c2a11f2 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h | |||
| @@ -111,40 +111,39 @@ extern void memblock_set_current_limit(phys_addr_t limit); | |||
| 111 | */ | 111 | */ |
| 112 | 112 | ||
| 113 | /** | 113 | /** |
| 114 | * memblock_region_base_pfn - Return the lowest pfn intersecting with the region | 114 | * memblock_region_memory_base_pfn - Return the lowest pfn intersecting with the memory region |
| 115 | * @reg: memblock_region structure | 115 | * @reg: memblock_region structure |
| 116 | */ | 116 | */ |
| 117 | static inline unsigned long memblock_region_base_pfn(const struct memblock_region *reg) | 117 | static inline unsigned long memblock_region_memory_base_pfn(const struct memblock_region *reg) |
| 118 | { | 118 | { |
| 119 | return reg->base >> PAGE_SHIFT; | 119 | return PFN_UP(reg->base); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | /** | 122 | /** |
| 123 | * memblock_region_last_pfn - Return the highest pfn intersecting with the region | 123 | * memblock_region_memory_end_pfn - Return the end_pfn this region |
| 124 | * @reg: memblock_region structure | 124 | * @reg: memblock_region structure |
| 125 | */ | 125 | */ |
| 126 | static inline unsigned long memblock_region_last_pfn(const struct memblock_region *reg) | 126 | static inline unsigned long memblock_region_memory_end_pfn(const struct memblock_region *reg) |
| 127 | { | 127 | { |
| 128 | return (reg->base + reg->size - 1) >> PAGE_SHIFT; | 128 | return PFN_DOWN(reg->base + reg->size); |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | /** | 131 | /** |
| 132 | * memblock_region_end_pfn - Return the pfn of the first page following the region | 132 | * memblock_region_reserved_base_pfn - Return the lowest pfn intersecting with the reserved region |
| 133 | * but not intersecting it | ||
| 134 | * @reg: memblock_region structure | 133 | * @reg: memblock_region structure |
| 135 | */ | 134 | */ |
| 136 | static inline unsigned long memblock_region_end_pfn(const struct memblock_region *reg) | 135 | static inline unsigned long memblock_region_reserved_base_pfn(const struct memblock_region *reg) |
| 137 | { | 136 | { |
| 138 | return memblock_region_last_pfn(reg) + 1; | 137 | return PFN_DOWN(reg->base); |
| 139 | } | 138 | } |
| 140 | 139 | ||
| 141 | /** | 140 | /** |
| 142 | * memblock_region_pages - Return the number of pages covering a region | 141 | * memblock_region_reserved_end_pfn - Return the end_pfn this region |
| 143 | * @reg: memblock_region structure | 142 | * @reg: memblock_region structure |
| 144 | */ | 143 | */ |
| 145 | static inline unsigned long memblock_region_pages(const struct memblock_region *reg) | 144 | static inline unsigned long memblock_region_reserved_end_pfn(const struct memblock_region *reg) |
| 146 | { | 145 | { |
| 147 | return memblock_region_end_pfn(reg) - memblock_region_end_pfn(reg); | 146 | return PFN_UP(reg->base + reg->size); |
| 148 | } | 147 | } |
| 149 | 148 | ||
| 150 | #define for_each_memblock(memblock_type, region) \ | 149 | #define for_each_memblock(memblock_type, region) \ |
