[PATCH] powerpc/mm: Correct process and partition table max size
Aneesh Kumar K.V
aneesh.kumar at linux.vnet.ibm.com
Thu Nov 10 20:36:51 AEDT 2016
Suraj Jitindar Singh <sjitindarsingh at gmail.com> writes:
> Version 3.00 of the ISA states that the PATS (partition table size) field
> of the PTCR (partition table control register) and the PRTS (process table
> size) field of the partition table entry must both be less than or equal
> to 24. However the actual size of the partition and process tables is equal
> to 2 to the power of 12 plus the PATS and PRTS fields, respectively. This
> means that the max allowable size of each of these tables is 2^36 or 64GB
> for both.
>
> Thus when checking the size shift for each we should be checking for values
> of greater than 36 instead of the current check for shifts larger than 24
> and 23.
>
> Fixes: 2bfd65e45e877fb5704730244da67c748d28a1b8
> Signed-off-by: Suraj Jitindar Singh <sjitindarsingh at gmail.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
> ---
> arch/powerpc/mm/pgtable-radix.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
> index ed7bddc..80f3479 100644
> --- a/arch/powerpc/mm/pgtable-radix.c
> +++ b/arch/powerpc/mm/pgtable-radix.c
> @@ -159,7 +159,7 @@ static void __init radix_init_pgtable(void)
> * Allocate Partition table and process table for the
> * host.
> */
> - BUILD_BUG_ON_MSG((PRTB_SIZE_SHIFT > 23), "Process table size too large.");
> + BUILD_BUG_ON_MSG((PRTB_SIZE_SHIFT > 36), "Process table size too large.");
> process_tb = early_alloc_pgtable(1UL << PRTB_SIZE_SHIFT);
> /*
> * Fill in the process table.
> @@ -181,7 +181,7 @@ static void __init radix_init_partition_table(void)
>
> rts_field = radix__get_tree_size();
>
> - BUILD_BUG_ON_MSG((PATB_SIZE_SHIFT > 24), "Partition table size too large.");
> + BUILD_BUG_ON_MSG((PATB_SIZE_SHIFT > 36), "Partition table size too large.");
> partition_tb = early_alloc_pgtable(1UL << PATB_SIZE_SHIFT);
> partition_tb->patb0 = cpu_to_be64(rts_field | __pa(init_mm.pgd) |
> RADIX_PGD_INDEX_SIZE | PATB_HR);
> --
> 2.5.5
More information about the Linuxppc-dev
mailing list