File crash-ppc64-book3s-update-hash-page-table-geometry.patch of Package crash.7704

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 crash utility
for analyzing dump appropriately.
---
 defs.h  |    2 ++
 ppc64.c |   10 ++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/defs.h b/defs.h
index 0fe8d36..f26f642 100755
--- a/defs.h
+++ b/defs.h
@@ -3837,6 +3837,7 @@ struct efi_memory_desc_t {
 #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
@@ -3855,6 +3856,7 @@ struct efi_memory_desc_t {
 #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
diff --git a/ppc64.c b/ppc64.c
index edf46dc..bed4dea 100755
--- a/ppc64.c
+++ b/ppc64.c
@@ -455,7 +455,10 @@ ppc64_init(int when)
 					m->l1_index_size = PTE_INDEX_SIZE_L4_64K_3_10;
 					m->l2_index_size = PMD_INDEX_SIZE_L4_64K_3_10;
 					m->l3_index_size = PUD_INDEX_SIZE_L4_64K;
-					m->l4_index_size = PGD_INDEX_SIZE_L4_64K_3_10;
+					if (THIS_KERNEL_VERSION >= LINUX(4,4,63))
+						m->l4_index_size = PGD_INDEX_SIZE_L4_64K_4_4_63;
+					else
+						m->l4_index_size = PGD_INDEX_SIZE_L4_64K_3_10;
 
 				} else {
 					m->l1_index_size = PTE_INDEX_SIZE_L4_64K;
@@ -499,7 +502,10 @@ ppc64_init(int when)
 						m->l3_index_size = PUD_INDEX_SIZE_L4_4K_3_7;
 					else
 						m->l3_index_size = PUD_INDEX_SIZE_L4_4K;
-					m->l4_index_size = PGD_INDEX_SIZE_L4_4K;
+					if (THIS_KERNEL_VERSION >= LINUX(4,4,63))
+						m->l4_index_size = PGD_INDEX_SIZE_L4_4K_4_4_63;
+					else
+						m->l4_index_size = PGD_INDEX_SIZE_L4_4K;
 
 					if (machdep->flags & BOOK3E)
 						m->pte_rpn_shift = PTE_RPN_SHIFT_L4_BOOK3E_4K;
openSUSE Build Service is sponsored by