Commit 39a33b59 authored by Haren Myneni's avatar Haren Myneni Committed by Benjamin Herrenschmidt

powerpc/pseries: Device tree should only be updated once after suspend/migrate

The current code makes rtas calls for update-nodes, activate-firmware and then
update-nodes again. The FW provides the same data for both update-nodes calls.
As a result a proc entry exists error is reported for the second update while
adding device nodes.

This patch makes a single rtas call for update-nodes after activating the FW.
It also add rtas_busy delay for the activate-firmware rtas call.
Signed-off-by: default avatarHaren Myneni <hbabu@us.ibm.com>
Signed-off-by: default avatarTyrel Datwyler <tyreld@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 639291f2
...@@ -290,13 +290,6 @@ void post_mobility_fixup(void) ...@@ -290,13 +290,6 @@ void post_mobility_fixup(void)
int rc; int rc;
int activate_fw_token; int activate_fw_token;
rc = pseries_devicetree_update(MIGRATION_SCOPE);
if (rc) {
printk(KERN_ERR "Initial post-mobility device tree update "
"failed: %d\n", rc);
return;
}
activate_fw_token = rtas_token("ibm,activate-firmware"); activate_fw_token = rtas_token("ibm,activate-firmware");
if (activate_fw_token == RTAS_UNKNOWN_SERVICE) { if (activate_fw_token == RTAS_UNKNOWN_SERVICE) {
printk(KERN_ERR "Could not make post-mobility " printk(KERN_ERR "Could not make post-mobility "
...@@ -304,16 +297,17 @@ void post_mobility_fixup(void) ...@@ -304,16 +297,17 @@ void post_mobility_fixup(void)
return; return;
} }
rc = rtas_call(activate_fw_token, 0, 1, NULL); do {
if (!rc) { rc = rtas_call(activate_fw_token, 0, 1, NULL);
rc = pseries_devicetree_update(MIGRATION_SCOPE); } while (rtas_busy_delay(rc));
if (rc)
printk(KERN_ERR "Secondary post-mobility device tree " if (rc)
"update failed: %d\n", rc);
} else {
printk(KERN_ERR "Post-mobility activate-fw failed: %d\n", rc); printk(KERN_ERR "Post-mobility activate-fw failed: %d\n", rc);
return;
} rc = pseries_devicetree_update(MIGRATION_SCOPE);
if (rc)
printk(KERN_ERR "Post-mobility device tree update "
"failed: %d\n", rc);
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment