[GIT PULL] Please pull fwctl subsystem changes

Jason Gunthorpe
2025-03-24T15:14:01Z

[-- Attachment #1: Type: text/plain, Size: 8820 bytes --]

Hi Linus,

Here is the pull request for fwctl, this is following what was agreed
at the Maintainer Summit in Austria.

To refresh what it is about please refer to the cover letter and LWN coverage:

https://lore.kernel.org/all/0-v5-642aa0c94070+4447f-fwctl_jgg@nvidia.com/
https://lwn.net/Articles/990802/

This PR has three drivers for CXL, mlx5 and pds to launch the
subsystem. I have interest and soft commitments for maybe as many as 7
drivers in the forseeable future.

There is a shared branch in here with CXL, but we still have a trivial
conflict to resolve:

diff --cc tools/testing/cxl/test/mem.c
index 9495dbcc03a7,0ceba8aa6eec..000000000000
--- a/tools/testing/cxl/test/mem.c
+++ b/tools/testing/cxl/test/mem.c
@@@ -177,7 -169,7 +181,8 @@@ struct cxl_mockmem_data
u8 event_buf[SZ_4K];
u64 timestamp;
unsigned long sanitize_timeout;
+ struct vendor_test_feat test_feat;
+ u8 shutdown_state;
};

Thanks,
Jason

The following changes since commit 2014c95afecee3e76ca4a56956a936e23283f05b:

Linux 6.14-rc1 (2025-02-02 15:39:26 -0800)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git tags/for-linus-fwctl

for you to fetch changes up to 403257070602fcd1512af6f24cecdb23da8a914a:

pds_fwctl: add Documentation entries (2025-03-21 20:57:55 -0300)

----------------------------------------------------------------
fwctl first pull request

fwctl is a new subsystem intended to bring some common rules and order to
the growing pattern of exposing a secure FW interface directly to
userspace. Unlike existing places like RDMA/DRM/VFIO/uacce that are
exposing a device for datapath operations fwctl is focused on debugging,
configuration and provisioning of the device. It will not have the
necessary features like interrupt delivery to support a datapath.

This concept is similar to the long standing practice in the "HW" RAID
space of having a device specific misc device to manage the RAID
controller FW. fwctl generalizes this notion of a companion debug and
management interface that goes along with a dataplane implemented in an
appropriate subsystem.

There have been three LWN articles written discussing various aspects of
this:

https://lwn.net/Articles/955001/
https://lwn.net/Articles/969383/
https://lwn.net/Articles/990802/

This pull requests includes three drivers to launch the subsystem:

- CXL provides a vendor scheme for executing commands and a way to learn
the 'command effects' (ie the security properties) of such
commands. The fwctl driver allows access to these mechanism within the
fwctl security model

- mlx5 is family of networking products, the driver supports all current
Mellanox HW still receiving FW feature updates. This includes RDMA
multiprotocol NICs like ConnectX and the Bluefield family of Smart
NICs.

- AMD/Pensando Distributed Services card is a multi protocol Smart NIC
with a multi PCI function design. fwctl works on the management PCI
function following a 'command effects' model similar to CXL.

----------------------------------------------------------------
Brett Creeley (1):
pds_fwctl: add rpc and query support

Dave Jiang (14):
cxl: Refactor user ioctl command path from mds to mailbox
cxl: Enumerate feature commands
cxl: Add Get Supported Features command for kernel usage
cxl/test: Add Get Supported Features mailbox command support
cxl: Setup exclusive CXL features that are reserved for the kernel
cxl: Add FWCTL support to CXL
cxl: Move cxl feature command structs to user header
cxl: Add support for fwctl RPC command to enable CXL feature commands
cxl: Add support to handle user feature commands for get feature
cxl: Add support to handle user feature commands for set feature
cxl/test: Add Get Feature support to cxl_test
cxl/test: Add Set Feature support to cxl_test
fwctl/cxl: Add documentation to FWCTL CXL
cxl: Fixup kdoc issues for include/cxl/features.h

Jason Gunthorpe (7):
fwctl: Add basic structure for a class subsystem with a cdev
fwctl: Basic ioctl dispatch for the character device
fwctl: FWCTL_INFO to return basic information about the device
taint: Add TAINT_FWCTL
fwctl: FWCTL_RPC to execute a Remote Procedure Call to device firmware
fwctl: Add documentation
Merge branch 'for-6.15/features' into fwctl

Saeed Mahameed (2):
fwctl/mlx5: Support for communicating with mlx5 fw
mlx5: Create an auxiliary device for fwctl_mlx5

Shannon Nelson (5):
pds_core: make pdsc_auxbus_dev_del() void
pds_core: specify auxiliary_device to be created
pds_core: add new fwctl auxiliary_device
pds_fwctl: initial driver framework
pds_fwctl: add Documentation entries

Shiju Jose (2):
cxl/mbox: Add GET_FEATURE mailbox command
cxl/mbox: Add SET_FEATURE mailbox command

Documentation/admin-guide/tainted-kernels.rst | 5 +
Documentation/userspace-api/fwctl/fwctl-cxl.rst | 142 +++++
Documentation/userspace-api/fwctl/fwctl.rst | 286 +++++++++
Documentation/userspace-api/fwctl/index.rst | 14 +
Documentation/userspace-api/fwctl/pds_fwctl.rst | 46 ++
Documentation/userspace-api/index.rst | 1 +
Documentation/userspace-api/ioctl/ioctl-number.rst | 1 +
MAINTAINERS | 26 +
drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/cxl/Kconfig | 12 +
drivers/cxl/core/Makefile | 1 +
drivers/cxl/core/core.h | 17 +-
drivers/cxl/core/features.c | 708 +++++++++++++++++++++
drivers/cxl/core/mbox.c | 124 ++--
drivers/cxl/core/memdev.c | 22 +-
drivers/cxl/cxlmem.h | 47 +-
drivers/cxl/pci.c | 8 +
drivers/fwctl/Kconfig | 33 +
drivers/fwctl/Makefile | 6 +
drivers/fwctl/main.c | 421 ++++++++++++
drivers/fwctl/mlx5/Makefile | 4 +
drivers/fwctl/mlx5/main.c | 411 ++++++++++++
drivers/fwctl/pds/Makefile | 4 +
drivers/fwctl/pds/main.c | 536 ++++++++++++++++
drivers/net/ethernet/amd/pds_core/auxbus.c | 44 +-
drivers/net/ethernet/amd/pds_core/core.c | 7 +
drivers/net/ethernet/amd/pds_core/core.h | 8 +-
drivers/net/ethernet/amd/pds_core/devlink.c | 7 +-
drivers/net/ethernet/amd/pds_core/main.c | 25 +-
drivers/net/ethernet/mellanox/mlx5/core/dev.c | 9 +
include/cxl/features.h | 87 +++
include/cxl/mailbox.h | 44 +-
include/linux/fwctl.h | 135 ++++
include/linux/panic.h | 3 +-
include/linux/pds/pds_adminq.h | 277 ++++++++
include/linux/pds/pds_common.h | 2 +
include/uapi/cxl/features.h | 170 +++++
include/uapi/fwctl/cxl.h | 56 ++
include/uapi/fwctl/fwctl.h | 141 ++++
include/uapi/fwctl/mlx5.h | 36 ++
include/uapi/fwctl/pds.h | 62 ++
kernel/panic.c | 1 +
tools/debugging/kernel-chktaint | 8 +
tools/testing/cxl/Kbuild | 1 +
tools/testing/cxl/test/mem.c | 185 ++++++
46 files changed, 4054 insertions(+), 132 deletions(-)
create mode 100644 Documentation/userspace-api/fwctl/fwctl-cxl.rst
create mode 100644 Documentation/userspace-api/fwctl/fwctl.rst
create mode 100644 Documentation/userspace-api/fwctl/index.rst
create mode 100644 Documentation/userspace-api/fwctl/pds_fwctl.rst
create mode 100644 drivers/cxl/core/features.c
create mode 100644 drivers/fwctl/Kconfig
create mode 100644 drivers/fwctl/Makefile
create mode 100644 drivers/fwctl/main.c
create mode 100644 drivers/fwctl/mlx5/Makefile
create mode 100644 drivers/fwctl/mlx5/main.c
create mode 100644 drivers/fwctl/pds/Makefile
create mode 100644 drivers/fwctl/pds/main.c
create mode 100644 include/cxl/features.h
create mode 100644 include/linux/fwctl.h
create mode 100644 include/uapi/cxl/features.h
create mode 100644 include/uapi/fwctl/cxl.h
create mode 100644 include/uapi/fwctl/fwctl.h
create mode 100644 include/uapi/fwctl/mlx5.h
create mode 100644 include/uapi/fwctl/pds.h

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]