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: Haren Myneni <hbabu@us.ibm.com> Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
Родитель
639291f263
Коммит
39a33b59f4
|
@ -290,13 +290,6 @@ void post_mobility_fixup(void)
|
|||
int rc;
|
||||
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");
|
||||
if (activate_fw_token == RTAS_UNKNOWN_SERVICE) {
|
||||
printk(KERN_ERR "Could not make post-mobility "
|
||||
|
@ -304,16 +297,17 @@ void post_mobility_fixup(void)
|
|||
return;
|
||||
}
|
||||
|
||||
rc = rtas_call(activate_fw_token, 0, 1, NULL);
|
||||
if (!rc) {
|
||||
rc = pseries_devicetree_update(MIGRATION_SCOPE);
|
||||
if (rc)
|
||||
printk(KERN_ERR "Secondary post-mobility device tree "
|
||||
"update failed: %d\n", rc);
|
||||
} else {
|
||||
do {
|
||||
rc = rtas_call(activate_fw_token, 0, 1, NULL);
|
||||
} while (rtas_busy_delay(rc));
|
||||
|
||||
if (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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче