[Skiboot] [PATCH RFC 12/12] opal-prd: hook up reset_pm_complex
Daniel M Crowell
dcrowell at us.ibm.com
Fri May 26 04:15:20 AEST 2017
> So is pm_complex replacement to occ_reset?
All of the occ_* interfaces have been replaced with interfaces that act
upon the complete power management complex (occ + sgpe + pgpe).
--
Dan Crowell
Senior Software Engineer - Power Systems Enablement Firmware
IBM Rochester: t/l 553-2987
dcrowell at us.ibm.com
From: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
To: Jeremy Kerr <jk at ozlabs.org>, skiboot at lists.ozlabs.org
Cc: Daniel M Crowell/Rochester/IBM at IBMUS
Date: 05/25/2017 11:47 AM
Subject: Re: [Skiboot] [PATCH RFC 12/12] opal-prd: hook up
reset_pm_complex
On 05/25/2017 12:35 PM, Jeremy Kerr wrote:
> This change provides the facility to invoke HBRT's reset_pm_complex, in
So is pm_complete replacement to occ_reset?
> the same manner is done with process_occ_reset previously.
>
.../...
> void hservice_puts(const char *str)
> {
> @@ -1310,22 +1311,40 @@ static int handle_msg_occ_error(struct
opal_prd_ctx *ctx,
> return 0;
> }
>
> +static int pm_complex_reset(uint64_t chip)
> +{
> + int rc;
> +
> + if (hservice_runtime->reset_pm_complex(chip)) {
if (hservice_runtime->reset_pm_complex) { ?
> + pr_debug("PM: calling
pm_complex_reset(%ld)", chip);
> + rc = call_reset_pm_complex(chip);
> +
> + } else if (hservice_runtime->process_occ_reset) {
> + pr_debug("PM: calling
process_occ_reset(%ld)", chip);
> + call_process_occ_reset(chip);
> + rc = 0;
> +
> + } else {
> + pr_log_nocall("reset_pm_complex/process_occ_reset");
> + rc = -1;
> + }
> +
> + return rc;
> +}
> +
> static int handle_msg_occ_reset(struct opal_prd_ctx *ctx,
> struct opal_prd_msg *msg)
> {
> uint32_t proc;
> + int rc;
>
> proc = be64toh(msg->occ_reset.chip);
>
> pr_debug("FW: firmware requested OCC reset for proc
0x%x", proc);
>
> - if (!hservice_runtime->process_occ_reset) {
> - pr_log_nocall("process_occ_reset");
> - return -1;
> - }
> + rc = pm_complex_reset(proc);
>
> - call_process_occ_reset(proc);
> - return 0;
> + return rc;
> }
>
> static int handle_msg_firmware_notify(struct opal_prd_ctx *ctx,
> @@ -1482,15 +1501,12 @@ static void handle_prd_control_occ_reset(struct
control_msg *send_msg,
> if (rc != sizeof(omsg))
> pr_log(LOG_WARNING, "FW: Failed to send
OCC_RESET message: %m");
>
> - if (!hservice_runtime->process_occ_reset) {
> - pr_log_nocall("process_occ_reset");
> - return;
> - }
> -
> chip = msg->occ_reset.chip;
>
> - pr_debug("CTRL: calling process_occ_reset(%ld)", chip);
> - call_process_occ_reset(chip);
> + /* do reset */
> + pr_debug("CTRL: resetting PM complex on chip %ld", chip);
> + pm_complex_reset(chip);
> +
> send_msg->data_len = 0;
> send_msg->response = 0;
> }
> @@ -2175,6 +2191,7 @@ static void usage(const char *progname)
> printf("\t%s [--debug] [--file <hbrt-image>] [--pnor
<device>]\n",
> progname);
> printf("\t%s occ <enable|disable|reset [chip]>\n",
progname);
> + printf("\t%s pm-complex reset [chip]>\n", progname);
> printf("\t%s htmgt-passthru <bytes...>\n", progname);
> printf("\t%s override <FILE>\n", progname);
> printf("\t%s run [arg 0] [arg 1]..[arg n]\n", progname);
> @@ -2216,7 +2233,7 @@ static int parse_action(const char *str, enum
action *action)
> {
> int rc;
>
> - if (!strcmp(str, "occ")) {
> + if (!strcmp(str, "occ") || !strcmp(str, "pm-complex")) {
Help says only reset option is supported. But this will enable other
options
like enable, disable.
-Vasant
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/skiboot/attachments/20170525/7c4a496c/attachment.html>
More information about the Skiboot
mailing list