aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/mobility.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/pseries/mobility.c')
-rw-r--r--arch/powerpc/platforms/pseries/mobility.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
index cde4e0a095ae..bde7ebad3949 100644
--- a/arch/powerpc/platforms/pseries/mobility.c
+++ b/arch/powerpc/platforms/pseries/mobility.c
@@ -290,13 +290,6 @@ void post_mobility_fixup(void)
290 int rc; 290 int rc;
291 int activate_fw_token; 291 int activate_fw_token;
292 292
293 rc = pseries_devicetree_update(MIGRATION_SCOPE);
294 if (rc) {
295 printk(KERN_ERR "Initial post-mobility device tree update "
296 "failed: %d\n", rc);
297 return;
298 }
299
300 activate_fw_token = rtas_token("ibm,activate-firmware"); 293 activate_fw_token = rtas_token("ibm,activate-firmware");
301 if (activate_fw_token == RTAS_UNKNOWN_SERVICE) { 294 if (activate_fw_token == RTAS_UNKNOWN_SERVICE) {
302 printk(KERN_ERR "Could not make post-mobility " 295 printk(KERN_ERR "Could not make post-mobility "
@@ -304,16 +297,17 @@ void post_mobility_fixup(void)
304 return; 297 return;
305 } 298 }
306 299
307 rc = rtas_call(activate_fw_token, 0, 1, NULL); 300 do {
308 if (!rc) { 301 rc = rtas_call(activate_fw_token, 0, 1, NULL);
309 rc = pseries_devicetree_update(MIGRATION_SCOPE); 302 } while (rtas_busy_delay(rc));
310 if (rc) 303
311 printk(KERN_ERR "Secondary post-mobility device tree " 304 if (rc)
312 "update failed: %d\n", rc);
313 } else {
314 printk(KERN_ERR "Post-mobility activate-fw failed: %d\n", rc); 305 printk(KERN_ERR "Post-mobility activate-fw failed: %d\n", rc);
315 return; 306
316 } 307 rc = pseries_devicetree_update(MIGRATION_SCOPE);
308 if (rc)
309 printk(KERN_ERR "Post-mobility device tree update "
310 "failed: %d\n", rc);
317 311
318 return; 312 return;
319} 313}