[Crash-utility] [PATCH] ppc64: increase MAX_PHYSMEM_BITS to 2PB
Dave Anderson
anderson at redhat.com
Tue Dec 4 15:20:49 UTC 2018
----- Original Message -----
> With kernel commit 4ffe713b7587 ("powerpc/mm: Increase the max addressable
> memory to 2PB"), MAX_PHYSMEM_BITS is bumped up to 51 for SPARSEMEM_VMEMMAP
> and SPARSEMEM_EXTREME case. Make the appropriate update here.
>
> Signed-off-by: Hari Bathini <hbathini at linux.ibm.com>
Thanks Hari -- queued for crash-7.2.5:
https://github.com/crash-utility/crash/commit/fb185074415db0a63f900f46ac8635b6ed248100
Dave
> ---
> defs.h | 1 +
> ppc64.c | 33 ++++++++++++++++++++++++++-------
> 2 files changed, 27 insertions(+), 7 deletions(-)
>
> diff --git a/defs.h b/defs.h
> index b66ccad..9ce32c1 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -4093,6 +4093,7 @@ struct efi_memory_desc_t {
> #define _MAX_PHYSMEM_BITS 44
> #define _MAX_PHYSMEM_BITS_3_7 46
> #define _MAX_PHYSMEM_BITS_4_19 47
> +#define _MAX_PHYSMEM_BITS_4_20 51
>
> #endif /* PPC64 */
>
> diff --git a/ppc64.c b/ppc64.c
> index 041480b..485fa9d 100644
> --- a/ppc64.c
> +++ b/ppc64.c
> @@ -220,6 +220,31 @@ static int ppc64_is_vmaddr(ulong addr)
> return (vt->vmalloc_start && addr >= vt->vmalloc_start);
> }
>
> +static int set_ppc64_max_physmem_bits(void)
> +{
> + int dimension;
> +
> + get_array_length("mem_section", &dimension, 0);
> +
> + if ((machdep->flags & VMEMMAP) &&
> + (THIS_KERNEL_VERSION >= LINUX(4,20,0)) &&
> + !dimension && (machdep->pagesize == 65536)) {
> + /*
> + * SPARSEMEM_VMEMMAP & SPARSEMEM_EXTREME configurations with
> + * 64K pagesize and v4.20 kernel or later.
> + */
> + machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_20;
> + } else if ((machdep->flags & VMEMMAP) &&
> + (THIS_KERNEL_VERSION >= LINUX(4,19,0))) {
> + /* SPARSEMEM_VMEMMAP & v4.19 kernel or later */
> + machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19;
> + } else if (THIS_KERNEL_VERSION >= LINUX(3,7,0))
> + machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_3_7;
> + else
> + machdep->max_physmem_bits = _MAX_PHYSMEM_BITS;
> +
> + return 0;
> +}
>
> struct machine_specific ppc64_machine_specific = {
> .hwintrstack = { 0 },
> @@ -583,13 +608,7 @@ ppc64_init(int when)
> ppc64_vmemmap_init();
>
> machdep->section_size_bits = _SECTION_SIZE_BITS;
> - if ((machdep->flags & VMEMMAP) &&
> - (THIS_KERNEL_VERSION >= LINUX(4,19,0)))
> - machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19;
> - else if (THIS_KERNEL_VERSION >= LINUX(3,7,0))
> - machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_3_7;
> - else
> - machdep->max_physmem_bits = _MAX_PHYSMEM_BITS;
> + set_ppc64_max_physmem_bits();
>
> ppc64_init_cpu_info();
> machdep->vmalloc_start = ppc64_vmalloc_start;
>
>
More information about the Crash-utility
mailing list