[PATCH v3 19/62] arm/smpboot: Move dt specific code in smp to seperate functions
Stefano Stabellini
stefano.stabellini at eu.citrix.com
Mon Nov 23 07:22:51 PST 2015
On Tue, 17 Nov 2015, shannon.zhao at linaro.org wrote:
> From: Parth Dixit <parth.dixit at linaro.org>
>
> Partition smp initialization functions into generic and dt specific
> parts, this will be useful when introducing new functions for smp
> initialization based on acpi.
>
> Signed-off-by: Parth Dixit <parth.dixit at linaro.org>
> Signed-off-by: Shannon Zhao <shannon.zhao at linaro.org>
Acked-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
> xen/arch/arm/arm64/smpboot.c | 7 ++++++-
> xen/arch/arm/smpboot.c | 29 ++++++++++++++++++-----------
> 2 files changed, 24 insertions(+), 12 deletions(-)
>
> diff --git a/xen/arch/arm/arm64/smpboot.c b/xen/arch/arm/arm64/smpboot.c
> index 62e6abb..7928f69 100644
> --- a/xen/arch/arm/arm64/smpboot.c
> +++ b/xen/arch/arm/arm64/smpboot.c
> @@ -70,7 +70,7 @@ int __init arch_smp_init(void)
> return 0;
> }
>
> -int __init arch_cpu_init(int cpu, struct dt_device_node *dn)
> +static int __init dt_arch_cpu_init(int cpu, struct dt_device_node *dn)
> {
> const char *enable_method;
>
> @@ -94,6 +94,11 @@ int __init arch_cpu_init(int cpu, struct dt_device_node *dn)
> return 0;
> }
>
> +int __init arch_cpu_init(int cpu, struct dt_device_node *dn)
> +{
> + return dt_arch_cpu_init(cpu, dn);
> +}
> +
> int __init arch_cpu_up(int cpu)
> {
> if ( !smp_enable_ops[cpu].prepare_cpu )
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index a96cda2..d115228 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -92,7 +92,7 @@ smp_clear_cpu_maps (void)
> * MPIDR values related to logical cpus
> * Code base on Linux arch/arm/kernel/devtree.c
> */
> -void __init smp_init_cpus(void)
> +static void __init dt_smp_init_cpus(void)
> {
> register_t mpidr;
> struct dt_device_node *cpus = dt_find_node_by_path("/cpus");
> @@ -106,16 +106,6 @@ void __init smp_init_cpus(void)
> bool_t bootcpu_valid = 0;
> int rc;
>
> - /* scan the DTB for a PSCI node and set a global variable */
> - psci_init();
> -
> - if ( (rc = arch_smp_init()) < 0 )
> - {
> - printk(XENLOG_WARNING "SMP init failed (%d)\n"
> - "Using only 1 CPU\n", rc);
> - return;
> - }
> -
> mpidr = boot_cpu_data.mpidr.bits & MPIDR_HWID_MASK;
>
> if ( !cpus )
> @@ -243,6 +233,23 @@ void __init smp_init_cpus(void)
> }
> }
>
> +void __init smp_init_cpus(void)
> +{
> + int rc;
> +
> + /* initialize PSCI and set a global variable */
> + psci_init();
> +
> + if ( (rc = arch_smp_init()) < 0 )
> + {
> + printk(XENLOG_WARNING "SMP init failed (%d)\n"
> + "Using only 1 CPU\n", rc);
> + return;
> + }
> +
> + dt_smp_init_cpus();
> +}
> +
> int __init
> smp_get_max_cpus (void)
> {
> --
> 2.1.0
>
More information about the linux-arm-kernel
mailing list