All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tzung-Bi Shih <tzungbi@kernel.org>
To: Guenter Roeck <groeck@google.com>
Cc: Benson Leung <bleung@chromium.org>,
	Guenter Roeck <groeck@chromium.org>,
	"open list:CHROME HARDWARE PLATFORM SUPPORT"
	<chrome-platform@lists.linux.dev>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [RESEND PATCH 05/11] platform/chrome: cros_ec_proto: separate cros_ec_wait_until_complete()
Date: Thu, 14 Jul 2022 03:33:42 +0000	[thread overview]
Message-ID: <Ys+OlrVCy4MkyRnr@google.com> (raw)
In-Reply-To: <CABXOdTeC+q-UiPiThqL5MGg-+cGACGW4qLaLKZbmX4M26TvbDg@mail.gmail.com>

On Wed, Jul 13, 2022 at 11:15:47AM -0700, Guenter Roeck wrote:
> On Mon, Jun 27, 2022 at 7:49 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
> > -static int cros_ec_send_command(struct cros_ec_device *ec_dev, struct cros_ec_command *msg)
> > +static int cros_ec_wait_until_complete(struct cros_ec_device *ec_dev, uint32_t *result)
> >  {
> > -       int ret = cros_ec_xfer_command(ec_dev, msg);
> > +       struct cros_ec_command *msg;
> > +       struct ec_response_get_comms_status *status;
> > +       int ret = 0, i;
> > +
> > +       msg = kzalloc(sizeof(*msg) + sizeof(*status), GFP_KERNEL);
> > +       if (!msg)
> > +               return -ENOMEM;
> 
> AFAICS this is always 24 bytes. I would suggest to allocate it on the
> stack to reduce overhead.

Ack.

> > +               ret = cros_ec_xfer_command(ec_dev, msg);
> > +               if (ret == -EAGAIN)
> > +                       continue;
> > +               if (ret < 0)
> > +                       break;
> 
> With the command allocated on the stack, this can return immediately.

Nack, the function has no goto labels.  `return ret` follows the loop
immediately.  The `break` here doesn't make it to become too complicated.
I would prefer to keep it.

> > +
> > +               *result = msg->result;
> > +               if (msg->result != EC_RES_SUCCESS)
> > +                       break;
> 
> Again, this can return immediately if the command buffer is on the stack.

Nack.  See above.

> > -               kfree(status_msg);
> > +               if (!(status->flags & EC_COMMS_STATUS_PROCESSING))
> > +                       break;
> 
> Can return immediately.

Nack.  See above.

> > +       kfree(msg);
> > +       return ret;
> 
> What should this return on timeout ?

It returns either:
* -EAGAIN, if cros_ec_xfer_command() returned -EAGAIN
* 0, if EC_COMMS_STATUS_PROCESSING flag was on
for EC_COMMAND_RETRIES times so far.

This is a "move" refactor.  I would prefer to keep it as is and change the
behavior in later patch.

  reply	other threads:[~2022-07-14  3:33 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-28  2:49 [RESEND PATCH 00/11] platform/chrome: Kunit tests and refactor for cros_ec_cmd_xfer() Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 01/11] platform/chrome: cros_ec_proto: add "cros_ec_" prefix to send_command() Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 02/11] platform/chrome: cros_ec_proto: add Kunit tests for cros_ec_cmd_xfer() Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 03/11] platform/chrome: cros_ec_proto: add Kunit tests for cros_ec_send_command() Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 04/11] platform/chrome: cros_ec_proto: separate cros_ec_xfer_command() Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 05/11] platform/chrome: cros_ec_proto: separate cros_ec_wait_until_complete() Tzung-Bi Shih
2022-07-04  6:32   ` Tzung-Bi Shih
2022-07-13 18:15   ` Guenter Roeck
2022-07-14  3:33     ` Tzung-Bi Shih [this message]
2022-07-14 14:29       ` Guenter Roeck
2022-07-18  3:50         ` Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 06/11] platform/chrome: cros_ec_proto: change Kunit expectation when timed out Tzung-Bi Shih
2022-07-13 18:16   ` Guenter Roeck
2022-06-28  2:49 ` [RESEND PATCH 07/11] platform/chrome: cros_ec_proto: return -EAGAIN when retries " Tzung-Bi Shih
2022-07-13 18:18   ` Guenter Roeck
2022-07-14  3:41     ` Tzung-Bi Shih
2022-07-14 14:15       ` Guenter Roeck
2022-06-28  2:49 ` [RESEND PATCH 08/11] platform/chrome: cros_ec_proto: change Kunit expectation for EC errors Tzung-Bi Shih
2022-07-13 18:18   ` Guenter Roeck
2022-06-28  2:49 ` [RESEND PATCH 09/11] platform/chrome: cros_ec_proto: return standard error codes " Tzung-Bi Shih
2022-07-13 18:23   ` Guenter Roeck
2022-07-14  3:41     ` Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 10/11] platform/chrome: cros_ec_proto: add Kunit test for empty payload Tzung-Bi Shih
2022-06-28  2:49 ` [RESEND PATCH 11/11] platform/chrome: cros_ec_proto: return -EPROTO if " Tzung-Bi Shih
2022-07-13 18:25   ` Guenter Roeck

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=Ys+OlrVCy4MkyRnr@google.com \
    --to=tzungbi@kernel.org \
    --cc=bleung@chromium.org \
    --cc=chrome-platform@lists.linux.dev \
    --cc=groeck@chromium.org \
    --cc=groeck@google.com \
    --cc=linux-kernel@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.