[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