On 31/05/16 16:26, Aneesh Kumar K.V wrote:
> LPCR cannot be updated when running in guest mode.
> 
> Signed-off-by: Aneesh Kumar K.V <[email protected]>
> ---
>  arch/powerpc/mm/pgtable-radix.c | 23 ++++++++++-------------
>  1 file changed, 10 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
> index 18b2c11604fa..c939e6e57a9e 100644
> --- a/arch/powerpc/mm/pgtable-radix.c
> +++ b/arch/powerpc/mm/pgtable-radix.c
> @@ -296,11 +296,6 @@ found:
>  void __init radix__early_init_mmu(void)
>  {
>       unsigned long lpcr;

Move this to

> -     /*
> -      * setup LPCR UPRT based on mmu_features
> -      */
> -     lpcr = mfspr(SPRN_LPCR);
> -     mtspr(SPRN_LPCR, lpcr | LPCR_UPRT);
>  
>  #ifdef CONFIG_PPC_64K_PAGES
>       /* PAGE_SIZE mappings */
> @@ -343,8 +338,11 @@ void __init radix__early_init_mmu(void)
>       __pte_frag_size_shift = H_PTE_FRAG_SIZE_SHIFT;
>  
>       radix_init_page_sizes();
> -     if (!firmware_has_feature(FW_FEATURE_LPAR))
> +     if (!firmware_has_feature(FW_FEATURE_LPAR)) {
>       unsigned long lpcr;

Here

> +             lpcr = mfspr(SPRN_LPCR);
> +             mtspr(SPRN_LPCR, lpcr | LPCR_UPRT);
>               radix_init_partition_table();
> +     }
>  
>       radix_init_pgtable();
>  }
> @@ -353,16 +351,15 @@ void radix__early_init_mmu_secondary(void)
>  {
>       unsigned long lpcr;

Same as above

>       /*
> -      * setup LPCR UPRT based on mmu_features
> +      * update partition table control register and UPRT
>        */
> -     lpcr = mfspr(SPRN_LPCR);
> -     mtspr(SPRN_LPCR, lpcr | LPCR_UPRT);
> -     /*
> -      * update partition table control register, 64 K size.
> -      */
> -     if (!firmware_has_feature(FW_FEATURE_LPAR))
> +     if (!firmware_has_feature(FW_FEATURE_LPAR)) {
> +             lpcr = mfspr(SPRN_LPCR);
> +             mtspr(SPRN_LPCR, lpcr | LPCR_UPRT);
> +
>               mtspr(SPRN_PTCR,
>                     __pa(partition_tb) | (PATB_SIZE_SHIFT - 12));
> +     }
>  }
>  
>  void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base,
> 


Balbir Singh.
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to