linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Joel Stanley <joel@jms.id.au>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Eddie James <eajames@linux.ibm.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-hwmon@vger.kernel.org, Jean Delvare <jdelvare@suse.com>,
	Lei YU <mine260309@gmail.com>
Subject: Re: [PATCH] OCC: FSI and hwmon: Add sequence numbering
Date: Tue, 2 Jul 2019 03:44:54 +0000	[thread overview]
Message-ID: <CACPK8Xf9MC=3oDS4=+Zr3YFW2kKL9X7P8=bDoG_jLTr9=eawkA@mail.gmail.com> (raw)
In-Reply-To: <20190626194048.GA7374@roeck-us.net>

On Wed, 26 Jun 2019 at 19:41, Guenter Roeck <linux@roeck-us.net> wrote:
>
> On Wed, Jun 26, 2019 at 02:13:15PM -0500, Eddie James wrote:
> > Sequence numbering of the commands submitted to the OCC is required by
> > the OCC interface specification. Add sequence numbering and check for
> > the correct sequence number on the response.
> >
> > Signed-off-by: Eddie James <eajames@linux.ibm.com>
>
> For hwmon:
>
> Acked-by: Guenter Roeck <linux@roeck-us.net>
>
> I assume this will be pushed through drivers/fsi.

Yes. Eddie, can you please collect the acks and send to Greg?

Cheers,

Joel

>
> Guenter
>
> > ---
> >  drivers/fsi/fsi-occ.c      | 15 ++++++++++++---
> >  drivers/hwmon/occ/common.c |  4 ++--
> >  drivers/hwmon/occ/common.h |  1 +
> >  3 files changed, 15 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/fsi/fsi-occ.c b/drivers/fsi/fsi-occ.c
> > index a2301ce..7da9c81 100644
> > --- a/drivers/fsi/fsi-occ.c
> > +++ b/drivers/fsi/fsi-occ.c
> > @@ -412,6 +412,7 @@ int fsi_occ_submit(struct device *dev, const void *request, size_t req_len,
> >               msecs_to_jiffies(OCC_CMD_IN_PRG_WAIT_MS);
> >       struct occ *occ = dev_get_drvdata(dev);
> >       struct occ_response *resp = response;
> > +     u8 seq_no;
> >       u16 resp_data_length;
> >       unsigned long start;
> >       int rc;
> > @@ -426,6 +427,8 @@ int fsi_occ_submit(struct device *dev, const void *request, size_t req_len,
> >
> >       mutex_lock(&occ->occ_lock);
> >
> > +     /* Extract the seq_no from the command (first byte) */
> > +     seq_no = *(const u8 *)request;
> >       rc = occ_putsram(occ, OCC_SRAM_CMD_ADDR, request, req_len);
> >       if (rc)
> >               goto done;
> > @@ -441,11 +444,17 @@ int fsi_occ_submit(struct device *dev, const void *request, size_t req_len,
> >               if (rc)
> >                       goto done;
> >
> > -             if (resp->return_status == OCC_RESP_CMD_IN_PRG) {
> > +             if (resp->return_status == OCC_RESP_CMD_IN_PRG ||
> > +                 resp->seq_no != seq_no) {
> >                       rc = -ETIMEDOUT;
> >
> > -                     if (time_after(jiffies, start + timeout))
> > -                             break;
> > +                     if (time_after(jiffies, start + timeout)) {
> > +                             dev_err(occ->dev, "resp timeout status=%02x "
> > +                                     "resp seq_no=%d our seq_no=%d\n",
> > +                                     resp->return_status, resp->seq_no,
> > +                                     seq_no);
> > +                             goto done;
> > +                     }
> >
> >                       set_current_state(TASK_UNINTERRUPTIBLE);
> >                       schedule_timeout(wait_time);
> > diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
> > index d593517..a7d2b16 100644
> > --- a/drivers/hwmon/occ/common.c
> > +++ b/drivers/hwmon/occ/common.c
> > @@ -124,12 +124,12 @@ struct extended_sensor {
> >  static int occ_poll(struct occ *occ)
> >  {
> >       int rc;
> > -     u16 checksum = occ->poll_cmd_data + 1;
> > +     u16 checksum = occ->poll_cmd_data + occ->seq_no + 1;
> >       u8 cmd[8];
> >       struct occ_poll_response_header *header;
> >
> >       /* big endian */
> > -     cmd[0] = 0;                     /* sequence number */
> > +     cmd[0] = occ->seq_no++;         /* sequence number */
> >       cmd[1] = 0;                     /* cmd type */
> >       cmd[2] = 0;                     /* data length msb */
> >       cmd[3] = 1;                     /* data length lsb */
> > diff --git a/drivers/hwmon/occ/common.h b/drivers/hwmon/occ/common.h
> > index fc13f3c..67e6968 100644
> > --- a/drivers/hwmon/occ/common.h
> > +++ b/drivers/hwmon/occ/common.h
> > @@ -95,6 +95,7 @@ struct occ {
> >       struct occ_sensors sensors;
> >
> >       int powr_sample_time_us;        /* average power sample time */
> > +     u8 seq_no;
> >       u8 poll_cmd_data;               /* to perform OCC poll command */
> >       int (*send_cmd)(struct occ *occ, u8 *cmd);
> >
> > --
> > 1.8.3.1
> >

  reply	other threads:[~2019-07-02  3:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-26 19:13 [PATCH] OCC: FSI and hwmon: Add sequence numbering Eddie James
2019-06-26 19:40 ` Guenter Roeck
2019-07-02  3:44   ` Joel Stanley [this message]
2019-07-02 15:47 Eddie James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACPK8Xf9MC=3oDS4=+Zr3YFW2kKL9X7P8=bDoG_jLTr9=eawkA@mail.gmail.com' \
    --to=joel@jms.id.au \
    --cc=eajames@linux.ibm.com \
    --cc=jdelvare@suse.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mine260309@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).