aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sparc/mm/init_64.c42
1 files changed, 2 insertions, 40 deletions
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index f2d70ff7a284..bc2aaa47bc8a 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -2269,19 +2269,6 @@ static unsigned long last_valid_pfn;
2269static void sun4u_pgprot_init(void); 2269static void sun4u_pgprot_init(void);
2270static void sun4v_pgprot_init(void); 2270static void sun4v_pgprot_init(void);
2271 2271
2272static phys_addr_t __init available_memory(void)
2273{
2274 phys_addr_t available = 0ULL;
2275 phys_addr_t pa_start, pa_end;
2276 u64 i;
2277
2278 for_each_free_mem_range(i, NUMA_NO_NODE, MEMBLOCK_NONE, &pa_start,
2279 &pa_end, NULL)
2280 available = available + (pa_end - pa_start);
2281
2282 return available;
2283}
2284
2285#define _PAGE_CACHE_4U (_PAGE_CP_4U | _PAGE_CV_4U) 2272#define _PAGE_CACHE_4U (_PAGE_CP_4U | _PAGE_CV_4U)
2286#define _PAGE_CACHE_4V (_PAGE_CP_4V | _PAGE_CV_4V) 2273#define _PAGE_CACHE_4V (_PAGE_CP_4V | _PAGE_CV_4V)
2287#define __DIRTY_BITS_4U (_PAGE_MODIFIED_4U | _PAGE_WRITE_4U | _PAGE_W_4U) 2274#define __DIRTY_BITS_4U (_PAGE_MODIFIED_4U | _PAGE_WRITE_4U | _PAGE_W_4U)
@@ -2295,33 +2282,8 @@ static phys_addr_t __init available_memory(void)
2295 */ 2282 */
2296static void __init reduce_memory(phys_addr_t limit_ram) 2283static void __init reduce_memory(phys_addr_t limit_ram)
2297{ 2284{
2298 phys_addr_t avail_ram = available_memory(); 2285 limit_ram += memblock_reserved_size();
2299 phys_addr_t pa_start, pa_end; 2286 memblock_enforce_memory_limit(limit_ram);
2300 u64 i;
2301
2302 if (limit_ram >= avail_ram)
2303 return;
2304
2305 for_each_free_mem_range(i, NUMA_NO_NODE, MEMBLOCK_NONE, &pa_start,
2306 &pa_end, NULL) {
2307 phys_addr_t region_size = pa_end - pa_start;
2308 phys_addr_t clip_start = pa_start;
2309
2310 avail_ram = avail_ram - region_size;
2311 /* Are we consuming too much? */
2312 if (avail_ram < limit_ram) {
2313 phys_addr_t give_back = limit_ram - avail_ram;
2314
2315 region_size = region_size - give_back;
2316 clip_start = clip_start + give_back;
2317 }
2318
2319 memblock_remove(clip_start, region_size);
2320
2321 if (avail_ram <= limit_ram)
2322 break;
2323 i = 0UL;
2324 }
2325} 2287}
2326 2288
2327void __init paging_init(void) 2289void __init paging_init(void)