[PATCH for-4.8 12/12] powerpc/mm/radix: Add a kernel command line to disable radix

Aneesh Kumar K.V aneesh.kumar at linux.vnet.ibm.com
Thu Jul 14 18:43:44 AEST 2016


Balbir Singh <bsingharora at gmail.com> writes:

> On Wed, Jul 13, 2016 at 03:05:31PM +0530, Aneesh Kumar K.V wrote:
>> This patch adds the kernel command line disable_radix which disable
>> the radix MMU mode even if firmware indicates radix support via
>> ibm,pa-features device tree node.
>> 
>> This helps in testing different MMU mode easily.
>> 
>> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
>> ---
>>  Documentation/kernel-parameters.txt |  3 +++
>>  arch/powerpc/kernel/prom.c          | 13 +++++++++++++
>>  2 files changed, 16 insertions(+)
>> 
>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
>> index 738bae4a5958..bba7ef30d74e 100644
>> --- a/Documentation/kernel-parameters.txt
>> +++ b/Documentation/kernel-parameters.txt
>> @@ -929,6 +929,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>>  	disable=	[IPV6]
>>  			See Documentation/networking/ipv6.txt.
>>  
>> +	disable_radix	[PPC]
>> +			Disable RADIX MMU mode on POWER9
>> +
>>  	disable_cpu_apicid= [X86,APIC,SMP]
>>  			Format: <int>
>>  			The number of initial APIC ID for the
>> diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
>> index 946e34ffeae9..022540b9366d 100644
>> --- a/arch/powerpc/kernel/prom.c
>> +++ b/arch/powerpc/kernel/prom.c
>> @@ -645,6 +645,14 @@ static void __init early_reserve_mem(void)
>>  #endif
>>  }
>>  
>> +static bool disable_radix;
>
> __read_mostly?

We actually read it only once.

>
>> +static int __init parse_disable_radix(char *p)
>> +{
>> +	disable_radix = true;
>> +	return 0;
>> +}
>> +early_param("disable_radix", parse_disable_radix);
>> +
>>  void __init early_init_devtree(void *params)
>>  {
>>  	phys_addr_t limit;
>> @@ -739,6 +747,11 @@ void __init early_init_devtree(void *params)
>>  	/* Scan and build the list of machine check recoverable ranges */
>>  	of_scan_flat_dt(early_init_dt_scan_recoverable_ranges, NULL);
>>  #endif
>> +	/*
>> +	 * now fixup radix MMU mode based on kernel command line
>> +	 */
>> +	if (disable_radix)
>> +		cur_cpu_spec->mmu_features &= ~MMU_FTR_RADIX;
>
> Shouldn't this happen before prom_init() and exchanging capabilities?

Didn't get that. We actually set the FTR_RADIX in
check_cpu_pa_features(node) which is called via
of_scan_flat_dt(early_init_dt_scan_cpus, NULL); We clear that
immediately after if the feature is disabled via kernel command line.

-aneesh




More information about the Linuxppc-dev mailing list