|
@@ -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)
|
|
return;
|
|
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);
|
|
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;
|
|
}
|
|
}
|