[PATCH v4 12/25] powernv/fadump: define register/un-register callback functions
Mahesh J Salgaonkar
mahesh at linux.vnet.ibm.com
Wed Aug 14 00:34:13 AEST 2019
On 2019-07-16 17:03:23 Tue, Hari Bathini wrote:
> Make OPAL calls to register and un-register with firmware for MPIPL.
>
> Signed-off-by: Hari Bathini <hbathini at linux.ibm.com>
> ---
> arch/powerpc/platforms/powernv/opal-fadump.c | 71 +++++++++++++++++++++++++-
> 1 file changed, 69 insertions(+), 2 deletions(-)
>
[...]
> @@ -88,12 +104,63 @@ static int opal_fadump_setup_kernel_metadata(struct fw_dump *fadump_conf)
>
> static int opal_fadump_register_fadump(struct fw_dump *fadump_conf)
> {
> - return -EIO;
> + int i, err = -EIO;
> + s64 rc;
> +
> + for (i = 0; i < opal_fdm->region_cnt; i++) {
> + rc = opal_mpipl_update(OPAL_MPIPL_ADD_RANGE,
> + opal_fdm->rgn[i].src,
> + opal_fdm->rgn[i].dest,
> + opal_fdm->rgn[i].size);
> + if (rc != OPAL_SUCCESS)
You may want to remove ranges which has been added so far on error and reset
opal_fdm->registered_regions.
> + break;
> +
> + opal_fdm->registered_regions++;
> + }
> +
> + switch (rc) {
> + case OPAL_SUCCESS:
> + pr_info("Registration is successful!\n");
> + fadump_conf->dump_registered = 1;
> + err = 0;
> + break;
> + case OPAL_UNSUPPORTED:
> + pr_err("Support not available.\n");
> + fadump_conf->fadump_supported = 0;
> + fadump_conf->fadump_enabled = 0;
> + break;
> + case OPAL_INTERNAL_ERROR:
> + pr_err("Failed to register. Hardware Error(%lld).\n", rc);
> + break;
> + case OPAL_PARAMETER:
> + pr_err("Failed to register. Parameter Error(%lld).\n", rc);
> + break;
> + case OPAL_PERMISSION:
You may want to remove this check. With latest opal mpipl patches
opal_mpipl_update() no more returns OPAL_PERMISSION.
Even if opal does, we can not say fadump already registered just by
looking at return status of single entry addition.
Thanks,
-Mahesh.
> + pr_err("Already registered!\n");
> + fadump_conf->dump_registered = 1;
> + err = -EEXIST;
> + break;
> + default:
> + pr_err("Failed to register. Unknown Error(%lld).\n", rc);
> + break;
> + }
> +
> + return err;
> }
More information about the Linuxppc-dev
mailing list