[PATCH v6 06/10] powerpc/64: Setup KUP on secondary CPUs
Christophe Leroy
christophe.leroy at c-s.fr
Wed Apr 24 16:03:54 AEST 2019
Le 18/04/2019 à 08:51, Michael Ellerman a écrit :
> From: Russell Currey <ruscur at russell.cc>
>
> Some platforms (i.e. Radix MMU) need per-CPU initialisation for KUP.
>
> Any platforms that only want to do KUP initialisation once
> globally can just check to see if they're running on the boot CPU, or
> check if whatever setup they need has already been performed.
>
> Note that this is only for 64-bit.
>
> Signed-off-by: Russell Currey <ruscur at russell.cc>
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
> ---
>
> v6: setup_kup() can't be __init anymore.
As reported by the kbuild robot, then setup_kuap() and setup_kuep()
can't be __init anymore in that case on the 8xx allthough the 8xx is not
SMP. That is rather pitty since they are only used at init.
Why can't we keep setup_kup() __init ? Are secondary CPUs started after
init section has been freed ?
Christophe
> ---
> arch/powerpc/kernel/setup_64.c | 3 +++
> arch/powerpc/mm/init-common.c | 2 +-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
> index 6179c4200339..684e34493bf5 100644
> --- a/arch/powerpc/kernel/setup_64.c
> +++ b/arch/powerpc/kernel/setup_64.c
> @@ -390,6 +390,9 @@ void early_setup_secondary(void)
> /* Initialize the hash table or TLB handling */
> early_init_mmu_secondary();
>
> + /* Perform any KUP setup that is per-cpu */
> + setup_kup();
> +
> /*
> * At this point, we can let interrupts switch to virtual mode
> * (the MMU has been setup), so adjust the MSR in the PACA to
> diff --git a/arch/powerpc/mm/init-common.c b/arch/powerpc/mm/init-common.c
> index ecaedfff9992..6ea5607fc564 100644
> --- a/arch/powerpc/mm/init-common.c
> +++ b/arch/powerpc/mm/init-common.c
> @@ -45,7 +45,7 @@ static int __init parse_nosmap(char *p)
> }
> early_param("nosmap", parse_nosmap);
>
> -void __init setup_kup(void)
> +void setup_kup(void)
> {
> setup_kuep(disable_kuep);
> setup_kuap(disable_kuap);
>
More information about the Linuxppc-dev
mailing list