mbox series

[v2,0/6] pds_fwctl: fwctl for AMD/Pensando core devices

Message ID 20250301013554.49511-1-shannon.nelson@amd.com
Headers show
Series pds_fwctl: fwctl for AMD/Pensando core devices | expand

Message

Nelson, Shannon March 1, 2025, 1:35 a.m. UTC
Following along from Jason's work [1] we have our initial patchset
for pds_fwctl - an auxiliary_bus driver for supporting fwctl through the
pds_core driver and its PDS core device.

The PDS core is PCI device that is separate and distinct from the
ionic Eth device and from the other PCI devices that can be supported
by the AMD/Pensando DSC.  It is used by pds_vdpa and pds_vfio_pci to
coordinate/communicate with the FW for setting up their services.

Until now the DSC's basic configurations for defining what devices to
support and for getting low-level device debug information have been
through internal commands not available from the host side, requiring
access into the DSC's own OS.  Adding the fwctl service allows us to start
bringing these capabilities up into the host, but they don't replace the
existing function-specific tools.  For example, these are things that make
the Eth PCI device appear on the PCI bus, while the tuning of the specific
Eth features still go through the standard ethtool/devlink/ip/etc tools.

The first two patches are a bit of clean up for pds_core's add and delete
of auxiliary_devices.  Those are followed by a patch to add the new
pds_core.fwctl auxiliary_device.  This is only supported by the pds_core
PF and not on any VFs.

The remaining patches add the pds_fwctl driver framework and then fill
in the details for the fwctl services.

[1] https://lore.kernel.org/netdev/0-v5-642aa0c94070+4447f-fwctl_jgg@nvidia.com/

v2:
  - removed the RFC tag
  - add a patch to make pdsc_auxbus_dev_del() a void type (Jonathan)
  - fix up error handling if pdsc_auxbus_dev_add() fails in probe (Jonathan)
  - fix auxiliary spelling in commit subject header (Jonathan)
  - clean up of code around use of __free() gizmo (Jonathan, David)
  - removed extra whitespace and dev_xxx() calls (Leon)
  - copy ident info from DMA and release DMA memory in probe (Jonathan)
  - use dev_err_probe() (Jonathan)
  - add counted_by_le(num_entries) (Jonathan, David)
  - convert num_entries from __le32 to host in get_endpoints() (Jonathan)
  - remove unnecessary variable inits (Jonathan, Leon)

v1: https://lore.kernel.org/netdev/20250211234854.52277-1-shannon.nelson@amd.com/

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

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

 Documentation/userspace-api/fwctl/fwctl.rst   |   1 +
 Documentation/userspace-api/fwctl/index.rst   |   1 +
 .../userspace-api/fwctl/pds_fwctl.rst         |  41 ++
 MAINTAINERS                                   |   7 +
 drivers/fwctl/Kconfig                         |  10 +
 drivers/fwctl/Makefile                        |   1 +
 drivers/fwctl/pds/Makefile                    |   4 +
 drivers/fwctl/pds/main.c                      | 506 ++++++++++++++++++
 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      |  22 +-
 include/linux/pds/pds_adminq.h                | 264 +++++++++
 include/linux/pds/pds_common.h                |   2 +
 include/uapi/fwctl/fwctl.h                    |   1 +
 include/uapi/fwctl/pds.h                      |  43 ++
 17 files changed, 936 insertions(+), 33 deletions(-)
 create mode 100644 Documentation/userspace-api/fwctl/pds_fwctl.rst
 create mode 100644 drivers/fwctl/pds/Makefile
 create mode 100644 drivers/fwctl/pds/main.c
 create mode 100644 include/uapi/fwctl/pds.h

Comments

Leon Romanovsky March 2, 2025, 12:34 p.m. UTC | #1
On Fri, Feb 28, 2025 at 05:35:48PM -0800, Shannon Nelson wrote:
> Following along from Jason's work [1] we have our initial patchset
> for pds_fwctl - an auxiliary_bus driver for supporting fwctl through the
> pds_core driver and its PDS core device.
> 
> The PDS core is PCI device that is separate and distinct from the
> ionic Eth device and from the other PCI devices that can be supported
> by the AMD/Pensando DSC.  It is used by pds_vdpa and pds_vfio_pci to
> coordinate/communicate with the FW for setting up their services.
> 
> Until now the DSC's basic configurations for defining what devices to
> support and for getting low-level device debug information have been
> through internal commands not available from the host side, requiring
> access into the DSC's own OS.  Adding the fwctl service allows us to start
> bringing these capabilities up into the host, but they don't replace the
> existing function-specific tools.  For example, these are things that make
> the Eth PCI device appear on the PCI bus, while the tuning of the specific
> Eth features still go through the standard ethtool/devlink/ip/etc tools.
> 
> The first two patches are a bit of clean up for pds_core's add and delete
> of auxiliary_devices.  Those are followed by a patch to add the new
> pds_core.fwctl auxiliary_device.  This is only supported by the pds_core
> PF and not on any VFs.
> 
> The remaining patches add the pds_fwctl driver framework and then fill
> in the details for the fwctl services.
> 
> [1] https://lore.kernel.org/netdev/0-v5-642aa0c94070+4447f-fwctl_jgg@nvidia.com/
> 
> v2:
>   - removed the RFC tag
>   - add a patch to make pdsc_auxbus_dev_del() a void type (Jonathan)
>   - fix up error handling if pdsc_auxbus_dev_add() fails in probe (Jonathan)
>   - fix auxiliary spelling in commit subject header (Jonathan)
>   - clean up of code around use of __free() gizmo (Jonathan, David)
>   - removed extra whitespace and dev_xxx() calls (Leon)
>   - copy ident info from DMA and release DMA memory in probe (Jonathan)
>   - use dev_err_probe() (Jonathan)
>   - add counted_by_le(num_entries) (Jonathan, David)
>   - convert num_entries from __le32 to host in get_endpoints() (Jonathan)
>   - remove unnecessary variable inits (Jonathan, Leon)
> 
> v1: https://lore.kernel.org/netdev/20250211234854.52277-1-shannon.nelson@amd.com/
> 
> Brett Creeley (1):
>   pds_fwctl: add rpc and query support
> 
> 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
> 

Unfortunately, you didn't remove useless defines :(

Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>