Message ID | 2c5645d4-2911-5e49-5e41-7966fb909142@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | powerpc/hotplug: Update affinity for migrated CPUs | expand |
On 07/13/2018 03:18 PM, Michael Bringmann wrote: > pmt/numa: Disable arch_update_cpu_topology during post migration > CPU readd updates when evaluating device-tree changes after LPM > to avoid thread deadlocks trying to update node assignments. > System timing between all of the threads and timers restarted in > a migrated system overlapped frequently allowing tasks to start > acquiring resources (get_online_cpus) needed by rebuild_sched_domains. > Defer the operation of that function until after the CPU readd has > completed. > > Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com> > --- > arch/powerpc/platforms/pseries/hotplug-cpu.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c > index 1906ee57..df1791b 100644 > --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c > +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c > @@ -26,6 +26,7 @@ > #include <linux/sched.h> /* for idle_task_exit */ > #include <linux/sched/hotplug.h> > #include <linux/cpu.h> > +#include <linux/cpuset.h> > #include <linux/of.h> > #include <linux/slab.h> > #include <asm/prom.h> > @@ -684,9 +685,15 @@ static int dlpar_cpu_readd_by_index(u32 drc_index) > > pr_info("Attempting to re-add CPU, drc index %x\n", drc_index); > > + arch_update_cpu_topology_suspend(); > rc = dlpar_cpu_remove_by_index(drc_index, false); > - if (!rc) > + arch_update_cpu_topology_resume(); > + > + if (!rc) { > + arch_update_cpu_topology_suspend(); > rc = dlpar_cpu_add(drc_index, false); > + arch_update_cpu_topology_resume(); > + } > A couple of questions...Why not disable across the entire remove and add operations instead of disabling for each operation? Also, what about other CPU add/remove routines, do they need to do similar disabling? -Nathan > if (rc) > pr_info("Failed to update cpu at drc_index %lx\n", >
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c index 1906ee57..df1791b 100644 --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c @@ -26,6 +26,7 @@ #include <linux/sched.h> /* for idle_task_exit */ #include <linux/sched/hotplug.h> #include <linux/cpu.h> +#include <linux/cpuset.h> #include <linux/of.h> #include <linux/slab.h> #include <asm/prom.h> @@ -684,9 +685,15 @@ static int dlpar_cpu_readd_by_index(u32 drc_index) pr_info("Attempting to re-add CPU, drc index %x\n", drc_index); + arch_update_cpu_topology_suspend(); rc = dlpar_cpu_remove_by_index(drc_index, false); - if (!rc) + arch_update_cpu_topology_resume(); + + if (!rc) { + arch_update_cpu_topology_suspend(); rc = dlpar_cpu_add(drc_index, false); + arch_update_cpu_topology_resume(); + } if (rc) pr_info("Failed to update cpu at drc_index %lx\n",
pmt/numa: Disable arch_update_cpu_topology during post migration CPU readd updates when evaluating device-tree changes after LPM to avoid thread deadlocks trying to update node assignments. System timing between all of the threads and timers restarted in a migrated system overlapped frequently allowing tasks to start acquiring resources (get_online_cpus) needed by rebuild_sched_domains. Defer the operation of that function until after the CPU readd has completed. Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com> --- arch/powerpc/platforms/pseries/hotplug-cpu.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)