Subject: [GIT PULL mlx5-next] Introduce auxiliary bus IRQs sysfs

From: Saeed Mahameed <[email-masked]>
Date: Thu, 11 Jul 2024 14:31:38 -0700

From: Saeed Mahameed <[email-masked]>

Hi Jakub and Greg,

Following the review of v10 and Greg's request to send this via netdev.
This is a pull request that includes the 2 patches of adding IRQs sysfs
to aux dev subsystem based on mlx5-next tree (6.10-rc3).

v10: https://lore.kernel.org/all/2024071041-frosted-stonework-2c60@gregkh/

Please pull and let me know if there's any problem.

The following changes since commit b339e0a39dc37726712b9f0485d78fe4306d1667:

  RDMA/mlx5: Add Qcounters req_transport_retries_exceeded/req_rnr_retries_exceeded (2024-06-16 18:53:23 +0300)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git tags/aux-sysfs-irqs

for you to fetch changes up to 587aebb80370c9cdea106e5870025ad70114a2ed:

  net/mlx5: Expose SFs IRQs (2024-07-11 13:52:16 -0700)

----------------------------------------------------------------
aux-sysfs-irqs

Shay Says:
==========
Introduce auxiliary bus IRQs sysfs

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

==========

----------------------------------------------------------------
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 +-
 .../net/ethernet/mellanox/mlx5/core/irq_affinity.c |  18 +++-
 .../net/ethernet/mellanox/mlx5/core/mlx5_core.h    |   6 ++
 drivers/net/ethernet/mellanox/mlx5/core/mlx5_irq.h |  12 ++-
 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c  |  12 ++-
 include/linux/auxiliary_bus.h                      |  24 +++++
 10 files changed, 191 insertions(+), 11 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-auxiliary
 create mode 100644 drivers/base/auxiliary_sysfs.c