[PATCH] powerpc/mm: Add a parameter to disable 1TB segs

Balbir Singh bsingharora at gmail.com
Mon Jul 4 14:59:35 AEST 2016



On 04/07/16 10:44, Oliver O'Halloran wrote:
> This patch adds the kernel command line parameter "no_tb_segs" which
> forces the kernel to use 256MB rather than 1TB segments. Forcing the use
> of 256MB segments makes it considerably easier to test code that depends
> on an SLB miss occurring.
> 
> Suggested-by: Michael Neuling <mikey at neuling.org>
> Suggested-by: Michael Ellerman <mpe at ellerman.id.au>
> Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
> ---
>  arch/powerpc/mm/hash_utils_64.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
> index 5b22ba0b58bc..6da1a9d18e15 100644
> --- a/arch/powerpc/mm/hash_utils_64.c
> +++ b/arch/powerpc/mm/hash_utils_64.c
> @@ -321,6 +321,15 @@ int htab_remove_mapping(unsigned long vstart, unsigned long vend,
>  	return ret;
>  }
>  
> +static bool no_tb_segs = false;
> +
> +static int __init parse_no_tb_segs(char *p)
> +{
> +	no_tb_segs = true;
> +	return 0;
> +}
> +early_param("no_tb_segs", parse_no_tb_segs);


Please update Documentation/kernel-paramaters.txt as well and document the use case and the
fact that this for debugging. 

> +
>  static int __init htab_dt_scan_seg_sizes(unsigned long node,
>  					 const char *uname, int depth,
>  					 void *data)
> @@ -339,6 +348,12 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node,
>  	for (; size >= 4; size -= 4, ++prop) {
>  		if (be32_to_cpu(prop[0]) == 40) {
>  			DBG("1T segment support detected\n");
> +
> +			if (no_tb_segs) {
> +				DBG("Forcing 256MB segments\n");
> +				break;
> +			}
> +
>  			cur_cpu_spec->mmu_features |= MMU_FTR_1T_SEGMENT;
>  			return 1;
>  		}
> 

Otherwise

Acked-by: Balbir Singh <bsingharora at gmail.com>

Balbir


More information about the Linuxppc-dev mailing list