From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: "David E. Box" <david.e.box@linux.intel.com>
Cc: Netdev <netdev@vger.kernel.org>,
sathyanarayanan.kuppuswamy@linux.intel.com,
LKML <linux-kernel@vger.kernel.org>,
platform-driver-x86@vger.kernel.org
Subject: Re: [PATCH 2/8] platform/x86/intel/sdsi: Combine read and write mailbox flows
Date: Thu, 8 Feb 2024 15:38:01 +0200 (EET) [thread overview]
Message-ID: <bc0fbe53-3eeb-26cb-ba91-c5fc238cb1b8@linux.intel.com> (raw)
In-Reply-To: <20240201010747.471141-3-david.e.box@linux.intel.com>
On Wed, 31 Jan 2024, David E. Box wrote:
> The current mailbox commands are either read-only or write-only and the
> flow is different for each. New commands will need to send and receive
> data. In preparation for these commands, create a common polling function
> to handle sending data and receiving in the same transaction.
>
> Signed-off-by: David E. Box <david.e.box@linux.intel.com>
> ---
> drivers/platform/x86/intel/sdsi.c | 79 +++++++++++++++++--------------
> 1 file changed, 44 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/platform/x86/intel/sdsi.c b/drivers/platform/x86/intel/sdsi.c
> index a70c071de6e2..05a35f2f85b6 100644
> --- a/drivers/platform/x86/intel/sdsi.c
> +++ b/drivers/platform/x86/intel/sdsi.c
> @@ -15,6 +15,7 @@
> #include <linux/iopoll.h>
> #include <linux/kernel.h>
> #include <linux/module.h>
> +#include <linux/overflow.h>
> #include <linux/pci.h>
> #include <linux/slab.h>
> #include <linux/sysfs.h>
> @@ -156,8 +157,8 @@ static int sdsi_status_to_errno(u32 status)
> }
> }
>
> -static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *info,
> - size_t *data_size)
> +static int sdsi_mbox_poll(struct sdsi_priv *priv, struct sdsi_mbox_info *info,
> + size_t *data_size)
> {
> struct device *dev = priv->dev;
> u32 total, loop, eom, status, message_size;
> @@ -166,18 +167,10 @@ static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *inf
>
> lockdep_assert_held(&priv->mb_lock);
>
> - /* Format and send the read command */
> - control = FIELD_PREP(CTRL_EOM, 1) |
> - FIELD_PREP(CTRL_SOM, 1) |
> - FIELD_PREP(CTRL_RUN_BUSY, 1) |
> - FIELD_PREP(CTRL_PACKET_SIZE, info->size);
> - writeq(control, priv->control_addr);
> -
> /* For reads, data sizes that are larger than the mailbox size are read in packets. */
> total = 0;
> loop = 0;
> do {
> - void *buf = info->buffer + (SDSI_SIZE_MAILBOX * loop);
> u32 packet_size;
>
> /* Poll on ready bit */
> @@ -195,6 +188,11 @@ static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *inf
> if (ret)
> break;
>
> + if (!packet_size) {
> + sdsi_complete_transaction(priv);
> + break;
> + }
> +
> /* Only the last packet can be less than the mailbox size. */
> if (!eom && packet_size != SDSI_SIZE_MAILBOX) {
> dev_err(dev, "Invalid packet size\n");
> @@ -208,9 +206,13 @@ static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *inf
> break;
> }
>
> - sdsi_memcpy64_fromio(buf, priv->mbox_addr, round_up(packet_size, SDSI_SIZE_CMD));
> + if (packet_size && info->buffer) {
Why you check for packet_size here if you break earlier for !packet_size?
> + void *buf = info->buffer + array_size(SDSI_SIZE_MAILBOX, loop);
>
> - total += packet_size;
> + sdsi_memcpy64_fromio(buf, priv->mbox_addr,
> + round_up(packet_size, SDSI_SIZE_CMD));
> + total += packet_size;
> + }
>
> sdsi_complete_transaction(priv);
> } while (!eom && ++loop < MBOX_MAX_PACKETS);
> @@ -230,16 +232,33 @@ static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *inf
> dev_warn(dev, "Read count %u differs from expected count %u\n",
> total, message_size);
>
> - *data_size = total;
> + if (data_size)
> + *data_size = total;
>
> return 0;
> }
--
i.
next prev parent reply other threads:[~2024-02-08 13:38 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-01 1:07 [PATCH 0/8] Intel On Demand: Add netlink interface for SPDM attestation David E. Box
2024-02-01 1:07 ` [PATCH 1/8] platform/x86/intel/sdsi: Set message size during writes David E. Box
2024-02-01 16:49 ` Kuppuswamy Sathyanarayanan
2024-02-08 13:42 ` Ilpo Järvinen
2024-02-08 21:49 ` Kuppuswamy Sathyanarayanan
2024-02-01 1:07 ` [PATCH 2/8] platform/x86/intel/sdsi: Combine read and write mailbox flows David E. Box
2024-02-01 17:31 ` Kuppuswamy Sathyanarayanan
2024-02-01 18:11 ` David E. Box
2024-02-08 13:38 ` Ilpo Järvinen [this message]
2024-02-01 1:07 ` [PATCH 3/8] platform/x86/intel/sdsi: Add header file David E. Box
2024-02-08 13:41 ` Ilpo Järvinen
2024-02-08 21:52 ` Kuppuswamy Sathyanarayanan
2024-02-01 1:07 ` [PATCH 4/8] platform/x86/intel/sdsi: Add netlink SPDM transport David E. Box
2024-02-01 9:26 ` Jiri Pirko
2024-02-01 16:42 ` David E. Box
2024-02-01 18:00 ` Jiri Pirko
2024-02-01 1:07 ` [PATCH 5/8] platform/x86/intel/sdsi: Add in-band BIOS lock support David E. Box
2024-02-08 13:52 ` Ilpo Järvinen
2024-02-01 1:07 ` [PATCH 6/8] platform/x86/intel/sdsi: Add attribute to read the current meter state David E. Box
2024-02-08 14:43 ` Ilpo Järvinen
2024-02-01 1:07 ` [PATCH 7/8] tools: Fix errors in meter_certificate display David E. Box
2024-02-08 14:46 ` Ilpo Järvinen
2024-02-01 1:07 ` [PATCH 8/8] tools: intel_sdsi: Add current meter support David E. Box
2024-02-08 14:52 ` Ilpo Järvinen
2024-02-01 3:49 ` [PATCH 0/8] Intel On Demand: Add netlink interface for SPDM attestation Stephen Hemminger
2024-02-01 16:53 ` Kuppuswamy Sathyanarayanan
2024-02-02 1:42 ` Jakub Kicinski
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=bc0fbe53-3eeb-26cb-ba91-c5fc238cb1b8@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=david.e.box@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=sathyanarayanan.kuppuswamy@linux.intel.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