void post_mobility_fixup(void) { int rc; int activate_fw_token; rc = pseries_devicetree_update(); 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 " "activate-fw call.\n"); return; } rc = rtas_call(activate_fw_token, 0, 1, NULL); if (!rc) { rc = pseries_devicetree_update(); if (rc) printk(KERN_ERR "Secondary post-mobility device tree " "update failed: %d\n", rc); } else { printk(KERN_ERR "Post-mobility activate-fw failed: %d\n", rc); return; } return; }
void post_mobility_fixup(void) { int rc; int activate_fw_token; activate_fw_token = rtas_token("ibm,activate-firmware"); if (activate_fw_token == RTAS_UNKNOWN_SERVICE) { printk(KERN_ERR "Could not make post-mobility " "activate-fw call.\n"); return; } 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); rc = pseries_devicetree_update(MIGRATION_SCOPE); if (rc) printk(KERN_ERR "Post-mobility device tree update " "failed: %d\n", rc); return; }
static void prrn_work_fn(struct work_struct *work) { /* * For PRRN, we must pass the negative of the scope value in * the RTAS event. */ pseries_devicetree_update(-prrn_update_scope); }