[PATCH 06/38] powerpc: Move 64-bit feature fixup earlier

Aneesh Kumar K.V aneesh.kumar at linux.vnet.ibm.com
Tue Jun 28 21:05:39 AEST 2016


Benjamin Herrenschmidt <benh at kernel.crashing.org> writes:

> Make it part of early_setup() as we really want the feature fixups
> to be applied before we turn on the MMU since they can have an impact
> on the various assembly path related to MMU management and interrupts.
>
> This makes 64-bit match what 32-bit does.
>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
>  arch/powerpc/kernel/setup_64.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
> index 996bed2..e79cf1b 100644
> --- a/arch/powerpc/kernel/setup_64.c
> +++ b/arch/powerpc/kernel/setup_64.c
> @@ -286,6 +286,9 @@ void __init early_setup(unsigned long dt_ptr)
>  	/* Initialize the hash table or TLB handling */
>  	early_init_mmu();
>  
> +	/* Apply all the dynamic patching */
> +	apply_feature_fixups();
> +
>  	/*
>  	 * At this point, we can let interrupts switch to virtual mode
>  	 * (the MMU has been setup), so adjust the MSR in the PACA to
> @@ -468,8 +471,6 @@ void __init setup_system(void)
>  {
>  	DBG(" -> setup_system()\n");
>  
> -	apply_feature_fixups();
> -
>  	/*
>  	 * Unflatten the device-tree passed by prom_init or kexec
>  	 */

Why not move it immediately after we finish all the device tress scan.

ie,
	early_init_devtree(__va(dt_ptr));

	epapr_paravirt_early_init();

  +      apply_feature_fixups();
	/* Now we know the logical id of our boot cpu, setup the paca. */
	setup_paca(&paca[boot_cpuid]);
	fixup_boot_paca();

Also with a comment explaining why we can't move it further up ?


-aneesh



More information about the Linuxppc-dev mailing list