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