[Makedumpfile PATCH v2] book3s/ppc64: Lower the max real address to 53 bits for kernels >= v4.11

Atsushi Kumagai ats-kumagai at wm.jp.nec.com
Wed Sep 13 00:29:57 PDT 2017


Hello,

>On Wednesday 13 September 2017 01:33 AM, Bhupesh Sharma wrote:
>
>
>	Kernel commit 2f18d533757da3899f4bedab0b2c051b080079dc lowered the
>	max real address on ppc64 to 53 bits.
>
>	Make similar changes in makedumpfile (on basis of the underlying kernel
>	version), without which the makedumpfile will fail to create a dumpfile
>	and instead throw a SEGV fault as shown below on kernels >= v4.11:
>
>	 # makedumpfile --split -d 31 -x vmlinux vmcore dumpfile_{1,2,3} 2>&1
>
>	 The kernel version is not supported.
>	 The makedumpfile operation may be incomplete.
>	 [ 1196.252094] makedumpfile[2367]: unhandled signal 11 at
>	 00000100f7011ca8 nip 000000001001eecc lr 000000001001f3c0 code 30001
>	 Segmentation fault
>
>	Signed-off-by: Bhupesh Sharma <bhsharma at redhat.com> <mailto:bhsharma at redhat.com>
>
>
>Looks good...
>Acked-by: Hari Bathini <hbathini at linux.vnet.ibm.com> <mailto:hbathini at linux.vnet.ibm.com>

Thanks, I'll merge this version into v1.6.3.

Regards,
Atsushi Kumagai

>
>	---
>	Changes since v1:
>	- As per Atsushi's comments introduced macros for 4_11 directly
>	  in v2 and use them in arch/ppc64.c
>
>	 arch/ppc64.c   | 8 +++++++-
>	 makedumpfile.h | 5 +++++
>	 2 files changed, 12 insertions(+), 1 deletion(-)
>
>	diff --git a/arch/ppc64.c b/arch/ppc64.c
>	index bacac778f73c..2f5a0daa16b2 100644
>	--- a/arch/ppc64.c
>	+++ b/arch/ppc64.c
>	@@ -307,11 +307,17 @@ ppc64_vmalloc_init(void)
>	 	}
>
>	 	info->pte_rpn_mask = PTE_RPN_MASK_DEFAULT;
>	-	if (info->kernel_version >= KERNEL_VERSION(4, 6, 0)) {
>	+	if ((info->kernel_version >= KERNEL_VERSION(4, 6, 0)) &&
>	+	    (info->kernel_version < KERNEL_VERSION(4, 11, 0))) {
>	 		info->pte_rpn_mask = PTE_RPN_MASK_L4_4_6;
>	 		info->pte_rpn_shift = PTE_RPN_SHIFT_L4_4_6;
>	 	}
>
>	+	if (info->kernel_version >= KERNEL_VERSION(4, 11, 0)) {
>	+		info->pte_rpn_mask = PTE_RPN_MASK_L4_4_11;
>	+		info->pte_rpn_shift = PTE_RPN_SHIFT_L4_4_11;
>	+	}
>	+
>	 	/*
>	 	 * Compute ptrs per each level
>	 	 */
>	diff --git a/makedumpfile.h b/makedumpfile.h
>	index 7d81bbcf2234..f4ba02d11f09 100644
>	--- a/makedumpfile.h
>	+++ b/makedumpfile.h
>	@@ -692,6 +692,11 @@ unsigned long get_kvbase_arm64(void);
>	 #define PUD_MASKED_BITS_4_7  0xc0000000000000ffUL
>	 #define PMD_MASKED_BITS_4_7  0xc0000000000000ffUL
>
>	+#define PTE_RPN_SIZE_L4_4_11  53
>	+#define PTE_RPN_MASK_L4_4_11   \
>	+	(((1UL << PTE_RPN_SIZE_L4_4_11) - 1) & ~((1UL << info->page_shift) - 1))
>	+#define PTE_RPN_SHIFT_L4_4_11  info->page_shift
>	+
>	 /*
>	  * Supported MMU types
>	  */
>


More information about the kexec mailing list