mbox series

[net-next,v10,0/2] Introduce auxiliary bus IRQs sysfs

Message ID 20240708055537.1014744-1-shayd@nvidia.com (mailing list archive)
Headers show
Series Introduce auxiliary bus IRQs sysfs | expand

Message

Shay Drori July 8, 2024, 5:55 a.m. UTC
Today, PCI PFs and VFs, which are anchored on the PCI bus, display their
IRQ information in the <pci_device>/msi_irqs/<irq_num> sysfs files.  PCI
subfunctions (SFs) are similar to PFs and VFs and these SFs are anchored
on the auxiliary bus. However, these PCI SFs lack such IRQ information
on the auxiliary bus, leaving users without visibility into which IRQs
are used by the SFs. This absence makes it impossible to debug
situations and to understand the source of interrupts/SFs for
performance tuning and debug.

Additionally, the SFs are multifunctional devices supporting RDMA,
network devices, clocks, and more, similar to their peer PCI PFs and
VFs. Therefore, it is desirable to have SFs' IRQ information available
at the bus/device level.

To overcome the above limitations, this short series extends the
auxiliary bus to display IRQ information in sysfs, similar to that of
PFs and VFs.

It adds an 'irqs' directory under the auxiliary device and includes an
<irq_num> sysfs file within it.

For example:
$ ls /sys/bus/auxiliary/devices/mlx5_core.sf.1/irqs/
50  51  52  53  54  55  56  57  58

Patch summary:
==============
patch-1 adds auxiliary bus to support irqs used by auxiliary device
patch-2 mlx5 driver using exposing irqs for PCI SF devices via auxiliary
        bus

---
v9-v10:
- remove Przemek RB
- add name field to auxiliary_irq_info (Greg and Przemek)
- handle bogus IRQ in auxiliary_device_sysfs_irq_remove (Greg)
v8-v9:
- add Przemek RB
- use guard() in auxiliary_irq_dir_prepare (Paolo)
v7-v8:
- use cleanup.h for info and name fields (Greg)
- correct error flow in auxiliary_irq_dir_prepare (Przemek)
- add documentation for new fields of auxiliary_device (Simon)
v6->v7:
- dynamically creating irqs directory when first irq file created, patch #1 (Greg).
- removed irqs flag and simplified the dev_add() API, patch #1 (Greg).
- move sysfs related new code to a new auxiliary_sysfs.c file, patch #1 (Greg).
v5->v6:
- fix error flow in patch #2 (Przemek and Parav).
- remove concept of shared and exclusive and hence global xarray in patch #1 (Greg).
v4->v5:
- addressed comments from Greg in patch #1.
v3->4:
- addressed comments from Przemek in patch #1.
v2->v3:
- addressed comments from Parav and Przemek in patch #1.
- fixed a bug in patch #2.
v1->v2:
- addressed comments from Greg, Simon H and kernel test boot in patch #1.

Shay Drory (2):
  driver core: auxiliary bus: show auxiliary device IRQs
  net/mlx5: Expose SFs IRQs

 Documentation/ABI/testing/sysfs-bus-auxiliary |   9 ++
 drivers/base/Makefile                         |   1 +
 drivers/base/auxiliary.c                      |   1 +
 drivers/base/auxiliary_sysfs.c                | 113 ++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/eq.c  |   6 +-
 .../mellanox/mlx5/core/irq_affinity.c         |  18 ++-
 .../ethernet/mellanox/mlx5/core/mlx5_core.h   |   6 +
 .../ethernet/mellanox/mlx5/core/mlx5_irq.h    |  12 +-
 .../net/ethernet/mellanox/mlx5/core/pci_irq.c |  12 +-
 include/linux/auxiliary_bus.h                 |  22 ++++
 10 files changed, 189 insertions(+), 11 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-auxiliary
 create mode 100644 drivers/base/auxiliary_sysfs.c

Comments

Przemek Kitszel July 10, 2024, 2:19 p.m. UTC | #1
On 7/8/24 07:55, Shay Drory wrote:
> Today, PCI PFs and VFs, which are anchored on the PCI bus, display their
> IRQ information in the <pci_device>/msi_irqs/<irq_num> sysfs files.  PCI
> subfunctions (SFs) are similar to PFs and VFs and these SFs are anchored
> on the auxiliary bus. However, these PCI SFs lack such IRQ information
> on the auxiliary bus, leaving users without visibility into which IRQs
> are used by the SFs. This absence makes it impossible to debug
> situations and to understand the source of interrupts/SFs for
> performance tuning and debug.
> 
> Additionally, the SFs are multifunctional devices supporting RDMA,
> network devices, clocks, and more, similar to their peer PCI PFs and
> VFs. Therefore, it is desirable to have SFs' IRQ information available
> at the bus/device level.
> 
> To overcome the above limitations, this short series extends the
> auxiliary bus to display IRQ information in sysfs, similar to that of
> PFs and VFs.
> 
> It adds an 'irqs' directory under the auxiliary device and includes an
> <irq_num> sysfs file within it.
> 
> For example:
> $ ls /sys/bus/auxiliary/devices/mlx5_core.sf.1/irqs/
> 50  51  52  53  54  55  56  57  58
> 
> Patch summary:
> ==============
> patch-1 adds auxiliary bus to support irqs used by auxiliary device
> patch-2 mlx5 driver using exposing irqs for PCI SF devices via auxiliary
>          bus
> 
> ---
> v9-v10:
> - remove Przemek RB

no need to drop my RB after you had one and applied my additional
suggestion ;), for the record, the diff is still fine, for the series:
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>

and congrats for the patience!

> - add name field to auxiliary_irq_info (Greg and Przemek)
> - handle bogus IRQ in auxiliary_device_sysfs_irq_remove (Greg)
> v8-v9:
> - add Przemek RB
> - use guard() in auxiliary_irq_dir_prepare (Paolo)
> v7-v8:
> - use cleanup.h for info and name fields (Greg)
> - correct error flow in auxiliary_irq_dir_prepare (Przemek)
> - add documentation for new fields of auxiliary_device (Simon)
> v6->v7:
> - dynamically creating irqs directory when first irq file created, patch #1 (Greg).
> - removed irqs flag and simplified the dev_add() API, patch #1 (Greg).
> - move sysfs related new code to a new auxiliary_sysfs.c file, patch #1 (Greg).
> v5->v6:
> - fix error flow in patch #2 (Przemek and Parav).
> - remove concept of shared and exclusive and hence global xarray in patch #1 (Greg).
> v4->v5:
> - addressed comments from Greg in patch #1.
> v3->4:
> - addressed comments from Przemek in patch #1.
> v2->v3:
> - addressed comments from Parav and Przemek in patch #1.
> - fixed a bug in patch #2.
> v1->v2:
> - addressed comments from Greg, Simon H and kernel test boot in patch #1.
> 
> Shay Drory (2):
>    driver core: auxiliary bus: show auxiliary device IRQs
>    net/mlx5: Expose SFs IRQs
> 
>   Documentation/ABI/testing/sysfs-bus-auxiliary |   9 ++
>   drivers/base/Makefile                         |   1 +
>   drivers/base/auxiliary.c                      |   1 +
>   drivers/base/auxiliary_sysfs.c                | 113 ++++++++++++++++++
>   drivers/net/ethernet/mellanox/mlx5/core/eq.c  |   6 +-
>   .../mellanox/mlx5/core/irq_affinity.c         |  18 ++-
>   .../ethernet/mellanox/mlx5/core/mlx5_core.h   |   6 +
>   .../ethernet/mellanox/mlx5/core/mlx5_irq.h    |  12 +-
>   .../net/ethernet/mellanox/mlx5/core/pci_irq.c |  12 +-
>   include/linux/auxiliary_bus.h                 |  22 ++++
>   10 files changed, 189 insertions(+), 11 deletions(-)
>   create mode 100644 Documentation/ABI/testing/sysfs-bus-auxiliary
>   create mode 100644 drivers/base/auxiliary_sysfs.c
>