Do not update sysfs cpu registration from invalid context
PATCH v2 1/1 Do not update sysfs cpu registration from invalid context
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 <[email protected]>
--- arch/powerpc/mm/numa.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
arch/powerpc/mm/numa.c +3 -2
@@ -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 (ud->cpu, ud->old_nid); +register_cpu_under_node (ud->cpu, ud->new_nid); + dev =get_cpu_device (ud->cpu);if (dev)kobject_uevent (&dev->kobj,KOBJ_CHANGE );