mbox series

[v1,0/19] cxl: Add CXL feature commands support via fwctl

Message ID 20250122235159.2716036-1-dave.jiang@intel.com
Headers show
Series cxl: Add CXL feature commands support via fwctl | expand

Message

Dave Jiang Jan. 22, 2025, 11:50 p.m. UTC
v1:
- Create a CXL features driver to handle all feature command related bits
  including FWCTL support. (Dan)
- Tested against CXL CLI unit tests for FWCTL.
- See individual patches for detailed changes from RFC v2.

RFC v2:
- Dropped 1/13 and 2/13 from previous version. Merged upstream already.
- Combined changes from Shiju for "get supported features"
- Addressed comments from Jonathan and Jason
- See specific changes in individual patch revision history
- Added hardware command info to FWCTL
- Added filtering to set feature command
- Added documentation

This series add support for CXL feature commands using the FWCTL framework [1].
The code has been tested with CXL CLI unit tests for FWCTL.

Patches 1-7 are shared with EDAC series [1] and there will be an immuable branch
once accepted post review.

A CXL features driver is created to handle all CXL mailbox feature commands related
functionalities as suggested by Dan. The 3 mailbox commands "Get Supported Features",
"Get Feature", and "Set Feature" are implemented. The "get" commands under the
FWCTL_RPC_CONFIGURATION policy, the "set" command checks the policy depending
on the effect of the feature. All mailbox commands for CXL provides an effects
table that describes the effects of a command when performed on the device.
For CXL features, there is also an effects field that describes the effects
a feature write operation has on the device per feature. The security policy
is checked against this feature specific effects field. Looking for discussion
on matching the CXL spec defined effects with the FWCTL security policy.

The code is based off of v3 of FWCTL series [2] posted by Jason and rebased on top of
v6.13-rc5.

[1]: https://lore.kernel.org/linux-cxl/20250106121017.1620-1-shiju.jose@huawei.com/T/#t
[2]: https://lore.kernel.org/linux-cxl/0-v3-960f17f90f17+516-fwctl_jgg@nvidia.com/#r
---

Dave Jiang (17):
      cxl: Refactor user ioctl command path from mds to mailbox
      cxl: Add skeletal features driver
      cxl: Enumerate feature commands
      cxl: Add Get Supported Features command for kernel usage
      cxl: Add features driver attribute to emit number of features supported
      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 the CXL features driver
      cxl: Add support for get driver information
      cxl: Move cxl_mem.h under uapi to cxl exclusive directory
      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

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

 Documentation/userspace-api/fwctl/fwctl-cxl.rst |  81 +++++++
 Documentation/userspace-api/fwctl/index.rst     |   1 +
 drivers/cxl/Kconfig                             |   9 +
 drivers/cxl/Makefile                            |   3 +
 drivers/cxl/core/Makefile                       |   1 +
 drivers/cxl/core/core.h                         |   7 +-
 drivers/cxl/core/features.c                     | 287 +++++++++++++++++++++++
 drivers/cxl/core/mbox.c                         | 143 ++++++++----
 drivers/cxl/core/memdev.c                       |  22 +-
 drivers/cxl/core/port.c                         |   3 +
 drivers/cxl/cxl.h                               |   3 +
 drivers/cxl/cxlmem.h                            |  45 +---
 drivers/cxl/features.c                          | 558 ++++++++++++++++++++++++++++++++++++++++++++
 drivers/cxl/pci.c                               |  19 ++
 include/cxl/features.h                          |  75 ++++++
 include/cxl/mailbox.h                           |  46 +++-
 include/uapi/cxl/features.h                     | 135 +++++++++++
 include/uapi/{linux/cxl_mem.h => cxl/mem.h}     |   0
 include/uapi/fwctl/cxl.h                        |  60 +++++
 include/uapi/fwctl/fwctl.h                      |   1 +
 tools/testing/cxl/Kbuild                        |   1 +
 tools/testing/cxl/test/mem.c                    | 194 +++++++++++++++
 22 files changed, 1597 insertions(+), 97 deletions(-)

Comments

Jonathan Cameron Jan. 23, 2025, 5:03 p.m. UTC | #1
On Wed, 22 Jan 2025 16:50:31 -0700
Dave Jiang <dave.jiang@intel.com> wrote:

> v1:
> - Create a CXL features driver to handle all feature command related bits
>   including FWCTL support. (Dan)
> - Tested against CXL CLI unit tests for FWCTL.
> - See individual patches for detailed changes from RFC v2.
> 
> RFC v2:
> - Dropped 1/13 and 2/13 from previous version. Merged upstream already.
> - Combined changes from Shiju for "get supported features"
> - Addressed comments from Jonathan and Jason
> - See specific changes in individual patch revision history
> - Added hardware command info to FWCTL
> - Added filtering to set feature command
> - Added documentation
> 
> This series add support for CXL feature commands using the FWCTL framework [1].
> The code has been tested with CXL CLI unit tests for FWCTL.
> 
> Patches 1-7 are shared with EDAC series [1] and there will be an immuable branch
> once accepted post review.

Looks like immutable should be maybe 3-8?  Perhaps reorder for next version
as odd to have middle of series in an immutable branch.

> 
> A CXL features driver is created to handle all CXL mailbox feature commands related
> functionalities as suggested by Dan. The 3 mailbox commands "Get Supported Features",
> "Get Feature", and "Set Feature" are implemented. The "get" commands under the
> FWCTL_RPC_CONFIGURATION policy, the "set" command checks the policy depending
> on the effect of the feature. All mailbox commands for CXL provides an effects
> table that describes the effects of a command when performed on the device.
> For CXL features, there is also an effects field that describes the effects
> a feature write operation has on the device per feature. The security policy
> is checked against this feature specific effects field. Looking for discussion
> on matching the CXL spec defined effects with the FWCTL security policy.
> 
> The code is based off of v3 of FWCTL series [2] posted by Jason and rebased on top of
> v6.13-rc5.
> 
> [1]: https://lore.kernel.org/linux-cxl/20250106121017.1620-1-shiju.jose@huawei.com/T/#t
> [2]: https://lore.kernel.org/linux-cxl/0-v3-960f17f90f17+516-fwctl_jgg@nvidia.com/#r
> ---
> 
> Dave Jiang (17):
>       cxl: Refactor user ioctl command path from mds to mailbox
>       cxl: Add skeletal features driver
>       cxl: Enumerate feature commands
>       cxl: Add Get Supported Features command for kernel usage
>       cxl: Add features driver attribute to emit number of features supported
>       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 the CXL features driver
>       cxl: Add support for get driver information
>       cxl: Move cxl_mem.h under uapi to cxl exclusive directory
>       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
> 
> Shiju Jose (2):
>       cxl/mbox: Add GET_FEATURE mailbox command
>       cxl/mbox: Add SET_FEATURE mailbox command
> 
>  Documentation/userspace-api/fwctl/fwctl-cxl.rst |  81 +++++++
>  Documentation/userspace-api/fwctl/index.rst     |   1 +
>  drivers/cxl/Kconfig                             |   9 +
>  drivers/cxl/Makefile                            |   3 +
>  drivers/cxl/core/Makefile                       |   1 +
>  drivers/cxl/core/core.h                         |   7 +-
>  drivers/cxl/core/features.c                     | 287 +++++++++++++++++++++++
>  drivers/cxl/core/mbox.c                         | 143 ++++++++----
>  drivers/cxl/core/memdev.c                       |  22 +-
>  drivers/cxl/core/port.c                         |   3 +
>  drivers/cxl/cxl.h                               |   3 +
>  drivers/cxl/cxlmem.h                            |  45 +---
>  drivers/cxl/features.c                          | 558 ++++++++++++++++++++++++++++++++++++++++++++
>  drivers/cxl/pci.c                               |  19 ++
>  include/cxl/features.h                          |  75 ++++++
>  include/cxl/mailbox.h                           |  46 +++-
>  include/uapi/cxl/features.h                     | 135 +++++++++++
>  include/uapi/{linux/cxl_mem.h => cxl/mem.h}     |   0
>  include/uapi/fwctl/cxl.h                        |  60 +++++
>  include/uapi/fwctl/fwctl.h                      |   1 +
>  tools/testing/cxl/Kbuild                        |   1 +
>  tools/testing/cxl/test/mem.c                    | 194 +++++++++++++++
>  22 files changed, 1597 insertions(+), 97 deletions(-)