[Crash-utility] [PATCH v2] book3s/ppc64: update hash page table geometry

Dave Anderson anderson at redhat.com
Thu Nov 9 16:43:33 UTC 2017



----- Original Message -----
> Starting with kernel 4.12, the hash page table geometry is updated to
> accommodate larger VA range. Update here accordingly.
> 
> Signed-off-by: Hari Bathini <hbathini at linux.vnet.ibm.com>
> ---
> changes in v1:
> * Kernel commit 92d9dfda8b54 reverted the geometry update
>   for 4K hash pagetable. So, undo'ing 4K pagesize changes.

Hari,

As discussed in the related bugzilla, this patch fixes the user-space address
translation issues seen in 4.14-based kernels.  Queued for crash-7.2.1:

  https://github.com/crash-utility/crash/commit/c8178eca9c74f81a7f803a58d339635cc152e8d9

Thanks for your help,
  Dave


> 
>  defs.h  |    3 +++
>  ppc64.c |   12 +++++++++---
>  2 files changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/defs.h b/defs.h
> index 18f36b3..9132075 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -3915,6 +3915,9 @@ struct efi_memory_desc_t {
>  #define PGD_INDEX_SIZE_L4_64K_3_10  12
>  #define PMD_INDEX_SIZE_L4_64K_4_6  5
>  #define PUD_INDEX_SIZE_L4_64K_4_6  5
> +#define PMD_INDEX_SIZE_L4_64K_4_12 10
> +#define PUD_INDEX_SIZE_L4_64K_4_12 7
> +#define PGD_INDEX_SIZE_L4_64K_4_12 8
>  #define PTE_INDEX_SIZE_RADIX_64K  5
>  #define PMD_INDEX_SIZE_RADIX_64K  9
>  #define PUD_INDEX_SIZE_RADIX_64K  9
> diff --git a/ppc64.c b/ppc64.c
> index 84cec09..672ee60 100644
> --- a/ppc64.c
> +++ b/ppc64.c
> @@ -447,10 +447,16 @@ ppc64_init(int when)
>  				} else if (!(machdep->flags & BOOK3E) &&
>  				    (THIS_KERNEL_VERSION >= LINUX(4,6,0))) {
>  					m->l1_index_size = PTE_INDEX_SIZE_L4_64K_3_10;
> -					m->l2_index_size = PMD_INDEX_SIZE_L4_64K_4_6;
> -					m->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_6;
> -					m->l4_index_size = PGD_INDEX_SIZE_L4_64K_3_10;
>  
> +					if (THIS_KERNEL_VERSION >= LINUX(4,12,0)) {
> +						m->l2_index_size = PMD_INDEX_SIZE_L4_64K_4_12;
> +						m->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_12;
> +						m->l4_index_size = PGD_INDEX_SIZE_L4_64K_4_12;
> +					} else {
> +						m->l2_index_size = PMD_INDEX_SIZE_L4_64K_4_6;
> +						m->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_6;
> +						m->l4_index_size = PGD_INDEX_SIZE_L4_64K_3_10;
> +					}
>  				} else if (THIS_KERNEL_VERSION >= LINUX(3,10,0)) {
>  					m->l1_index_size = PTE_INDEX_SIZE_L4_64K_3_10;
>  					m->l2_index_size = PMD_INDEX_SIZE_L4_64K_3_10;
> 
> 




More information about the Crash-utility mailing list