From 653fe8e724081d2f289c2245d1220d5f7170538d Mon Sep 17 00:00:00 2001
From: Alexandru Moise <alexandru.moise@windriver.com>
Date: Fri, 29 Apr 2016 07:40:46 +0000
Subject: [PATCH] mem_section: Support only 46 bit for MAX_PHYSMEM_BITS on
 PPC64

Related to change:
http://lists.infradead.org/pipermail/kexec/2013-January/007849.html

Linux on PPC64 has supported only 46 bit MAX_PHYSMEM_BITS since commit:
048ee0993ec8360abb0b51bdf8f8721e9ed62ec4

Also remove set_ppc64_max_physmem_bits and set info->max_physmem_bits in
get_machdep_info_ppc64 instead. set_ppc64_max_physmem_bits is broken
for all kernels compiled with CONFIG_SPARSEMEM=n. makedumpfile is
unable to get mem_section field from powerpc kernel since commit:
fd59d231f81cb02870b9cf15f456a897f3669b4e

Upstream-Status: Pending

Signed-off-by: Alexandru Moise <alexandru.moise@windriver.com>
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
 arch/ppc64.c | 28 ++--------------------------
 1 file changed, 2 insertions(+), 26 deletions(-)

diff --git a/arch/ppc64.c b/arch/ppc64.c
index 89a7f05..6c928ab 100644
--- a/arch/ppc64.c
+++ b/arch/ppc64.c
@@ -302,37 +302,13 @@ ppc64_vtop_level4(unsigned long vaddr)
 }
 
 int
-set_ppc64_max_physmem_bits(void)
-{
-	long array_len = ARRAY_LENGTH(mem_section);
-	/*
-	 * The older ppc64 kernels uses _MAX_PHYSMEM_BITS as 42 and the
-	 * newer kernels 3.7 onwards uses 46 bits.
-	 */
-
-	info->max_physmem_bits  = _MAX_PHYSMEM_BITS_ORIG ;
-	if ((array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT_EXTREME()))
-		|| (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
-		return TRUE;
-
-	info->max_physmem_bits  = _MAX_PHYSMEM_BITS_3_7;
-	if ((array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT_EXTREME()))
-		|| (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
-		return TRUE;
-
-	return FALSE;
-}
-
-int
 get_machdep_info_ppc64(void)
 {
 	unsigned long vmlist, vmap_area_list, vmalloc_start;
 
 	info->section_size_bits = _SECTION_SIZE_BITS;
-	if (!set_ppc64_max_physmem_bits()) {
-		ERRMSG("Can't detect max_physmem_bits.\n");
-		return FALSE;
-	}
+	info->max_physmem_bits = _MAX_PHYSMEM_BITS_3_7;
+
 	info->page_offset = __PAGE_OFFSET;
 
 	if (SYMBOL(_stext) == NOT_FOUND_SYMBOL) {
-- 
2.5.0

