[PATCHv3 1/5] arm64: reorganise smp_enable_ops

Nicolas Pitre nicolas.pitre at linaro.org
Wed Aug 14 13:46:59 EDT 2013


On Wed, 14 Aug 2013, Mark Rutland wrote:

> For hotplug support, we're going to want a place to store operations
> that do more than bring CPUs online, and it makes sense to group these
> with our current smp_enable_ops.
> 
> This patch renames smp_enable_ops to smp_ops to make the intended use of
> the structure clearer. While we're at it, fix up instances of the cpu
> parameter to be an unsigned int, drop the init markinss and rename the
> *_cpu functions to cpu_* to reduce future churn when smp_operations is
> extended.
> 
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>

Acked-by: Nicolas Pitre <nico at linaro.org>

> ---
>  arch/arm64/include/asm/smp.h       | 10 +++++-----
>  arch/arm64/kernel/smp.c            | 24 ++++++++++++------------
>  arch/arm64/kernel/smp_psci.c       | 10 +++++-----
>  arch/arm64/kernel/smp_spin_table.c | 10 +++++-----
>  4 files changed, 27 insertions(+), 27 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/smp.h b/arch/arm64/include/asm/smp.h
> index 4b8023c..90626b6 100644
> --- a/arch/arm64/include/asm/smp.h
> +++ b/arch/arm64/include/asm/smp.h
> @@ -68,13 +68,13 @@ extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
>  
>  struct device_node;
>  
> -struct smp_enable_ops {
> +struct smp_operations {
>  	const char	*name;
> -	int		(*init_cpu)(struct device_node *, int);
> -	int		(*prepare_cpu)(int);
> +	int		(*cpu_init)(struct device_node *, unsigned int);
> +	int		(*cpu_prepare)(unsigned int);
>  };
>  
> -extern const struct smp_enable_ops smp_spin_table_ops;
> -extern const struct smp_enable_ops smp_psci_ops;
> +extern const struct smp_operations smp_spin_table_ops;
> +extern const struct smp_operations smp_psci_ops;
>  
>  #endif /* ifndef __ASM_SMP_H */
> diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
> index fee5cce..533f405 100644
> --- a/arch/arm64/kernel/smp.c
> +++ b/arch/arm64/kernel/smp.c
> @@ -236,17 +236,17 @@ void __init smp_prepare_boot_cpu(void)
>  
>  static void (*smp_cross_call)(const struct cpumask *, unsigned int);
>  
> -static const struct smp_enable_ops *enable_ops[] __initconst = {
> +static const struct smp_operations *supported_smp_ops[] __initconst = {
>  	&smp_spin_table_ops,
>  	&smp_psci_ops,
>  	NULL,
>  };
>  
> -static const struct smp_enable_ops *smp_enable_ops[NR_CPUS];
> +static const struct smp_operations *smp_ops[NR_CPUS];
>  
> -static const struct smp_enable_ops * __init smp_get_enable_ops(const char *name)
> +static const struct smp_operations * __init smp_get_ops(const char *name)
>  {
> -	const struct smp_enable_ops **ops = enable_ops;
> +	const struct smp_operations **ops = supported_smp_ops;
>  
>  	while (*ops) {
>  		if (!strcmp(name, (*ops)->name))
> @@ -267,7 +267,7 @@ void __init smp_init_cpus(void)
>  {
>  	const char *enable_method;
>  	struct device_node *dn = NULL;
> -	int i, cpu = 1;
> +	unsigned int i, cpu = 1;
>  	bool bootcpu_valid = false;
>  
>  	while ((dn = of_find_node_by_type(dn, "cpu"))) {
> @@ -346,15 +346,15 @@ void __init smp_init_cpus(void)
>  			goto next;
>  		}
>  
> -		smp_enable_ops[cpu] = smp_get_enable_ops(enable_method);
> +		smp_ops[cpu] = smp_get_ops(enable_method);
>  
> -		if (!smp_enable_ops[cpu]) {
> +		if (!smp_ops[cpu]) {
>  			pr_err("%s: invalid enable-method property: %s\n",
>  			       dn->full_name, enable_method);
>  			goto next;
>  		}
>  
> -		if (smp_enable_ops[cpu]->init_cpu(dn, cpu))
> +		if (smp_ops[cpu]->cpu_init(dn, cpu))
>  			goto next;
>  
>  		pr_debug("cpu logical map 0x%llx\n", hwid);
> @@ -384,8 +384,8 @@ next:
>  
>  void __init smp_prepare_cpus(unsigned int max_cpus)
>  {
> -	int cpu, err;
> -	unsigned int ncores = num_possible_cpus();
> +	int err;
> +	unsigned int cpu, ncores = num_possible_cpus();
>  
>  	/*
>  	 * are we trying to boot more cores than exist?
> @@ -412,10 +412,10 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
>  		if (cpu == smp_processor_id())
>  			continue;
>  
> -		if (!smp_enable_ops[cpu])
> +		if (!smp_ops[cpu])
>  			continue;
>  
> -		err = smp_enable_ops[cpu]->prepare_cpu(cpu);
> +		err = smp_ops[cpu]->cpu_prepare(cpu);
>  		if (err)
>  			continue;
>  
> diff --git a/arch/arm64/kernel/smp_psci.c b/arch/arm64/kernel/smp_psci.c
> index 0c53330..2f0d3dd 100644
> --- a/arch/arm64/kernel/smp_psci.c
> +++ b/arch/arm64/kernel/smp_psci.c
> @@ -23,12 +23,12 @@
>  #include <asm/psci.h>
>  #include <asm/smp_plat.h>
>  
> -static int __init smp_psci_init_cpu(struct device_node *dn, int cpu)
> +static int smp_psci_cpu_init(struct device_node *dn, unsigned int cpu)
>  {
>  	return 0;
>  }
>  
> -static int __init smp_psci_prepare_cpu(int cpu)
> +static int smp_psci_cpu_prepare(unsigned int cpu)
>  {
>  	int err;
>  
> @@ -46,8 +46,8 @@ static int __init smp_psci_prepare_cpu(int cpu)
>  	return 0;
>  }
>  
> -const struct smp_enable_ops smp_psci_ops __initconst = {
> +const struct smp_operations smp_psci_ops = {
>  	.name		= "psci",
> -	.init_cpu	= smp_psci_init_cpu,
> -	.prepare_cpu	= smp_psci_prepare_cpu,
> +	.cpu_init	= smp_psci_cpu_init,
> +	.cpu_prepare	= smp_psci_cpu_prepare,
>  };
> diff --git a/arch/arm64/kernel/smp_spin_table.c b/arch/arm64/kernel/smp_spin_table.c
> index 7c35fa6..5fecffc 100644
> --- a/arch/arm64/kernel/smp_spin_table.c
> +++ b/arch/arm64/kernel/smp_spin_table.c
> @@ -24,7 +24,7 @@
>  
>  static phys_addr_t cpu_release_addr[NR_CPUS];
>  
> -static int __init smp_spin_table_init_cpu(struct device_node *dn, int cpu)
> +static int smp_spin_table_cpu_init(struct device_node *dn, unsigned int cpu)
>  {
>  	/*
>  	 * Determine the address from which the CPU is polling.
> @@ -40,7 +40,7 @@ static int __init smp_spin_table_init_cpu(struct device_node *dn, int cpu)
>  	return 0;
>  }
>  
> -static int __init smp_spin_table_prepare_cpu(int cpu)
> +static int smp_spin_table_cpu_prepare(unsigned int cpu)
>  {
>  	void **release_addr;
>  
> @@ -59,8 +59,8 @@ static int __init smp_spin_table_prepare_cpu(int cpu)
>  	return 0;
>  }
>  
> -const struct smp_enable_ops smp_spin_table_ops __initconst = {
> +const struct smp_operations smp_spin_table_ops = {
>  	.name		= "spin-table",
> -	.init_cpu 	= smp_spin_table_init_cpu,
> -	.prepare_cpu	= smp_spin_table_prepare_cpu,
> +	.cpu_init	= smp_spin_table_cpu_init,
> +	.cpu_prepare	= smp_spin_table_cpu_prepare,
>  };
> -- 
> 1.8.1.1
> 



More information about the linux-arm-kernel mailing list