powerpc/pseries: Correct cpu affinity for dlpar added cpus
PATCH v2 1/1 powerpc/pseries: Correct cpu affinity for dlpar added cpus
The incorrect ordering of operations during cpu dlpar add results in invalid affinity for the cpu being added. The ibm,associativity property in the device tree is populated with all zeroes for the added cpu which results in invalid affinity mappings and all cpus appear to belong to node 0.
This occurs because rtas configure-connector is called prior to making the rtas set-indicator calls. Phyp does not assign affinity information for a cpu until the rtas set-indicator calls are made to set the isolation and allocation state.
Correct the order of operations to make the rtas set-indicator calls (done in dlpar_acquire_drc) before calling rtas configure-connector.
Fixes 1a8061c46c46 ("powerpc/pseries: Add kernel based CPU DLPAR handling")
Signed-off-by Nathan Fontenot <[email protected]>
--- arch/powerpc/platforms/pseries/dlpar.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
arch/powerpc/platforms/pseries/dlpar.c +4 -6
@@ -412,6 +412,10 @@ static ssize_t dlpar_cpu_probe(const char *buf, size_t count)if (rc)return -EINVAL ; + rc =dlpar_acquire_drc (drc_index); +if (rc) +return -EINVAL ; + parent =of_find_node_by_path ("/cpus" );if (!parent)return -ENODEV ;
@@ -422,12 +426,6 @@ static ssize_t dlpar_cpu_probe(const char *buf, size_t count)of_node_put (parent); - rc =dlpar_acquire_drc (drc_index); -if (rc) { -dlpar_free_cc_nodes (dn); -return -EINVAL ; - } - rc =dlpar_attach_node (dn);if (rc) {dlpar_release_drc (drc_index);