Re: [PATCH 1/1] [RFC]sparc64: enable cpu hotplug feature

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Allen Pais <allen.pais@xxxxxxxxxx>
Date: Sat, 27 Feb 2016 15:08:26 +0530

> @@ -1277,20 +1277,26 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
>  {
>  	int ret = smp_boot_one_cpu(cpu, tidle);
>  
> -	if (!ret) {
> -		cpumask_set_cpu(cpu, &smp_commenced_mask);
> -		while (!cpu_online(cpu))
> -			mb();
> -		if (!cpu_online(cpu)) {
> -			ret = -ENODEV;
> -		} else {
> -			/* On SUN4V, writes to %tick and %stick are
> -			 * not allowed.
> -			 */
> -			if (tlb_type != hypervisor)
> -				smp_synchronize_one_tick(cpu);
> -		}
> +	if (ret)
> +		goto out;
> +
> +	cpumask_set_cpu(cpu, &smp_commenced_mask);
> +	while (!cpu_online(cpu))
> +		mb();
> +	if (!cpu_online(cpu)) {
> +		ret = -ENODEV;
> +		goto out;
>  	}
> +
> +	/* On SUN4V, writes to %tick and %stick are
> +	 * not allowed.
> +	 */
> +	if (tlb_type != hypervisor)
> +		smp_synchronize_one_tick(cpu);
> +
> +	smp_fill_in_sib_core_maps();
> +	cpu_map_rebuild();
> +out:
>  	return ret;
>  }
>  

You've made this significantly harder to review and audit by moving the code
around so much.

Just add the new calls:

	smp_fill_in_sib_core_maps();
	cpu_map_rebuild();

in the existing basic block containing the smp_synchronize_one_tick() call.

Then it's obvious to reviewers what your change is actually doing.

>  
> +	set_cpu_online(cpu, false);
> +
>  	/* Make sure no interrupts point to this cpu.  */
>  	fixup_irqs();

This looks like a bug fix, to make sure fixup_irqs() does the right
thing, right?

All the little bug fixes like this should be split out into separate
patches.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux