Skip to content

Commit

Permalink
powerpc/pseries: Correct cpu affinity for dlpar added cpus
Browse files Browse the repository at this point in the history
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: 1a8061c ("powerpc/pseries: Add kernel based CPU DLPAR handling")

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Nathan Fontenot authored and Michael Ellerman committed May 1, 2015
1 parent 2fa30fe commit f32393c
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions arch/powerpc/platforms/pseries/dlpar.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit f32393c

Please sign in to comment.