File makedumpfile-ppc64-update-hash-page-table-geometry.patch of Package makedumpfile.8642

From: Hari Krishna Bathini <hbathini@in.ibm.com>
Subject: book3s/ppc64: update hash page table geometry

Patch-mainline: never, SLE12-SP3 specific

Kernel commit f6eedbba7a26 ("powerpc/mm/hash: Increase VA range to 128TB")
updated hash page table geometry. A modified version of this commit is
included in SLES12 SP3. Make the corresponding changes in makedumpfile
tool for filtering dump appropriately.
---
 arch/ppc64.c   |   10 ++++++++--
 makedumpfile.h |    2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/arch/ppc64.c b/arch/ppc64.c
index 6aeab7e..98c4ff3 100644
--- a/arch/ppc64.c
+++ b/arch/ppc64.c
@@ -253,7 +253,10 @@ ppc64_vmalloc_init(void)
 			info->l1_index_size = PTE_INDEX_SIZE_L4_64K_3_10;
 			info->l2_index_size = PMD_INDEX_SIZE_L4_64K_3_10;
 			info->l3_index_size = PUD_INDEX_SIZE_L4_64K;
-			info->l4_index_size = PGD_INDEX_SIZE_L4_64K_3_10;
+			if (info->kernel_version >= KERNEL_VERSION(4, 4, 63))
+				info->l4_index_size = PGD_INDEX_SIZE_L4_64K_4_4_63;
+			else
+				info->l4_index_size = PGD_INDEX_SIZE_L4_64K_3_10;
 		} else {
 			info->l1_index_size = PTE_INDEX_SIZE_L4_64K;
 			info->l2_index_size = PMD_INDEX_SIZE_L4_64K;
@@ -289,7 +263,10 @@ ppc64_vmalloc_init(void)
 			info->l2_index_size = PMD_INDEX_SIZE_L4_4K;
 			info->l3_index_size = (info->kernel_version >= KERNEL_VERSION(3, 7, 0) ?
 				PUD_INDEX_SIZE_L4_4K_3_7 : PUD_INDEX_SIZE_L4_4K);
-			info->l4_index_size = PGD_INDEX_SIZE_L4_4K;
+			if (info->kernel_version >= KERNEL_VERSION(4, 4, 63))
+				info->l4_index_size = PGD_INDEX_SIZE_L4_4K_4_4_63;
+			else
+				info->l4_index_size = PGD_INDEX_SIZE_L4_4K;
 		}
 
 		info->pte_rpn_shift = (info->kernel_version >= KERNEL_VERSION(4, 5, 0) ?
diff --git a/makedumpfile.h b/makedumpfile.h
index e32e567..f25b39f 100644
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -642,6 +642,7 @@ unsigned long get_kvbase_arm64(void);
 #define PUD_INDEX_SIZE_L4_4K  7
 #define PGD_INDEX_SIZE_L4_4K  9
 #define PUD_INDEX_SIZE_L4_4K_3_7  9
+#define PGD_INDEX_SIZE_L4_4K_4_4_63  12
 #define PTE_INDEX_SIZE_RADIX_4K  9
 #define PMD_INDEX_SIZE_RADIX_4K  9
 #define PUD_INDEX_SIZE_RADIX_4K  9
@@ -660,6 +661,7 @@ unsigned long get_kvbase_arm64(void);
 #define PTE_INDEX_SIZE_L4_64K_3_10  8
 #define PMD_INDEX_SIZE_L4_64K_3_10  10
 #define PGD_INDEX_SIZE_L4_64K_3_10  12
+#define PGD_INDEX_SIZE_L4_64K_4_4_63  15
 #define PMD_INDEX_SIZE_L4_64K_4_6  5
 #define PUD_INDEX_SIZE_L4_64K_4_6  5
 #define PTE_INDEX_SIZE_RADIX_64K  5
openSUSE Build Service is sponsored by