From: Pavan Chebbi <pavan.chebbi@broadcom.com>
To: jgg@ziepe.ca, michael.chan@broadcom.com
Cc: linux-kernel@vger.kernel.org, dave.jiang@intel.com,
saeedm@nvidia.com, jic23@kernel.org, gospo@broadcom.com,
selvin.xavier@broadcom.com, leon@kernel.org,
kalesh-anakkur.purayil@broadcom.com,
Pavan Chebbi <pavan.chebbi@broadcom.com>
Subject: [PATCH v5 fwctl 0/3] fwctl/bnxt: DMA buffer support for HWRM commands
Date: Tue, 7 Jul 2026 15:30:16 +0530 [thread overview]
Message-ID: <20260707100019.60553-1-pavan.chebbi@broadcom.com> (raw)
Several HWRM (HardWare Resource Manager) commands used for diagnostics,
firmware management, and NVM access carry one or more DMA address fields
in their input structures. Until now these commands could not be issued
through the fwctl interface because the driver had no mechanism to safely
broker the host-side DMA buffers on userspace's behalf.
This series adds that mechanism in three steps.
In patch #1, the fwctl core UAPI adds a new driver_data field in struct
fwctl_rpc. Drivers that need a driver_data payload receive the value and
are free to interpret it. Drivers that do not define one will reject any
non-zero value with -EOPNOTSUPP. Existing mlx5 and pds fwctl drivers are
updated accordingly.
In patch #2, the bnxt HSI header is updated to add the missing struct
definitions for the HWRM commands that the bnxt fwctl driver will support.
In patch #3, the bnxt fwctl driver consumes driver_data as a pointer to
a new bnxt UAPI struct fwctl_bnxt_driver_data, which describes indirect
DMA buffers.
v5: In patch #3, addressed the issues found by sashiko and Jason as follows:
- Simplify the DMA buffer uAPI: drop the len field from struct
fwctl_bnxt_buf. The driver will derive each buffer's required length
from the HWRM command itself, either the transfer-length field named in
the request, or a fixed/maximum size.
- Tighten the condition to do a exact match for the DMA buffers' count
- Validate in_len against each command's actual HWRM input struct size
- Switch DMA bounce buffers from kvzalloc() + dma_map_single() to
dma_alloc_coherent()
- Use kvzalloc() instead of kzalloc() for response buffer
- Reduce FWCTL_BNXT_MAX_DMABUF to 64k as that is sufficient for the
commands we are supporting
v4: Collected Rb tag from Dave for patch #1. Thanks Dave
v3: In patch #3, remove include of linux/sizes.h from UAPI header bnxt.h
v2: In patch #1, update all the drivers that implement fw_rpc to check
driver_data. In patch #2, add another HWRM command that I had missed in v1.
In patch #3, update the allow-list and timeout tables for the additional
commands.
Pavan Chebbi (3):
fwctl: Add driver_data field to fwctl_rpc
bnxt_en: Update bnxt firmware spec
fwctl/bnxt: add DMA buffer support for HWRM commands
drivers/cxl/core/features.c | 6 +-
drivers/fwctl/bnxt/main.c | 483 ++++++++++++++++++++++++++++-
drivers/fwctl/main.c | 3 +-
drivers/fwctl/mlx5/main.c | 6 +-
drivers/fwctl/pds/main.c | 6 +-
include/linux/bnxt/hsi.h | 585 ++++++++++++++++++++++++++++++++++++
include/linux/fwctl.h | 8 +-
include/uapi/fwctl/bnxt.h | 35 +++
include/uapi/fwctl/fwctl.h | 3 +
9 files changed, 1125 insertions(+), 10 deletions(-)
--
2.52.0
next reply other threads:[~2026-07-07 9:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 10:00 Pavan Chebbi [this message]
2026-07-07 10:00 ` [PATCH v5 fwctl 1/3] fwctl: Add driver_data field to fwctl_rpc Pavan Chebbi
2026-07-07 10:00 ` [PATCH v5 fwctl 2/3] bnxt_en: Update bnxt firmware spec Pavan Chebbi
2026-07-07 10:00 ` [PATCH v5 fwctl 3/3] fwctl/bnxt: add DMA buffer support for HWRM commands Pavan Chebbi
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=20260707100019.60553-1-pavan.chebbi@broadcom.com \
--to=pavan.chebbi@broadcom.com \
--cc=dave.jiang@intel.com \
--cc=gospo@broadcom.com \
--cc=jgg@ziepe.ca \
--cc=jic23@kernel.org \
--cc=kalesh-anakkur.purayil@broadcom.com \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.chan@broadcom.com \
--cc=saeedm@nvidia.com \
--cc=selvin.xavier@broadcom.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