On Mon, Jun 24, 2013 at 09:14:23AM -0500, Nathan Fontenot wrote:
> The topology update code that updates the cpu node registration in sysfs
> should not be called while in stop_machine(). The register/unregister
> calls take a lock and may sleep.
> 
> This patch moves these calls outside of the call to stop_machine().
> 
> Signed-off-by:Nathan Fontenot <nf...@linux.vnet.ibm.com>

Reviewed-by: Seth Jennings <sjenn...@linux.vnet.ibm.com>

> ---
>  arch/powerpc/mm/numa.c |    5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> Index: powerpc/arch/powerpc/mm/numa.c
> ===================================================================
> --- powerpc.orig/arch/powerpc/mm/numa.c       2013-06-24 06:53:31.000000000 
> -0500
> +++ powerpc/arch/powerpc/mm/numa.c    2013-06-24 06:56:30.000000000 -0500
> @@ -1433,11 +1433,9 @@
>               if (cpu != update->cpu)
>                       continue;
> 
> -             unregister_cpu_under_node(update->cpu, update->old_nid);
>               unmap_cpu_from_node(update->cpu);
>               map_cpu_to_node(update->cpu, update->new_nid);
>               vdso_getcpu_init();
> -             register_cpu_under_node(update->cpu, update->new_nid);
>       }
> 
>       return 0;
> @@ -1485,6 +1483,9 @@
>       stop_machine(update_cpu_topology, &updates[0], &updated_cpus);
> 
>       for (ud = &updates[0]; ud; ud = ud->next) {
> +             unregister_cpu_under_node(update->cpu, update->old_nid);
> +             register_cpu_under_node(update->cpu, update->new_nid);
> +
>               dev = get_cpu_device(ud->cpu);
>               if (dev)
>                       kobject_uevent(&dev->kobj, KOBJ_CHANGE);
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
> 

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to