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;