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;
}
Example #2
0
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;
}
Example #3
0
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);
}