• Shay Drory's avatar
    driver core: auxiliary bus: show auxiliary device IRQs · a8088783
    Shay Drory authored
    PCI subfunctions (SF) are anchored on the auxiliary bus. PCI physical
    and virtual functions are anchored on the PCI bus. The irq information
    of each such function is visible to users via sysfs directory "msi_irqs"
    containing files for each irq entry. However, for PCI SFs such
    information is unavailable. Due to this users have no visibility on IRQs
    used by the SFs.
    Secondly, an SF can be multi function device supporting rdma, netdevice
    and more. Without irq information at the bus level, the user is unable
    to view or use the affinity of the SF IRQs.
    
    Hence to match to the equivalent PCI PFs and VFs, add "irqs" directory,
    for supporting auxiliary devices, containing file for each irq entry.
    
    For example:
    $ ls /sys/bus/auxiliary/devices/mlx5_core.sf.1/irqs/
    50  51  52  53  54  55  56  57  58
    
    Cc: Simon Horman <horms@kernel.org>
    Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: default avatarParav Pandit <parav@nvidia.com>
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarShay Drory <shayd@nvidia.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
    
    ---
    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 (Greg)
    - removed irqs flag and simplified the dev_add() API (Greg)
    - move sysfs related new code to a new auxiliary_sysfs.c file (Greg)
    v5-v6:
    - removed concept of shared and exclusive and hence global xarray (Greg)
    v4-v5:
    - restore global mutex and replace refcount_t with simple integer (Greg)
    v3->4:
    - remove global mutex (Przemek)
    v2->v3:
    - fix function declaration in case SYSFS isn't defined
    v1->v2:
    - move #ifdefs from drivers/base/auxiliary.c to
      include/linux/auxiliary_bus.h (Greg)
    - use EXPORT_SYMBOL_GPL instead of EXPORT_SYMBOL (Greg)
    - Fix kzalloc(ref) to kzalloc(*ref) (Simon)
    - Add return description in auxiliary_device_sysfs_irq_add() kdoc (Simon)
    - Fix auxiliary_irq_mode_show doc (kernel test boot)
    a8088783
auxiliary_sysfs.c 3.05 KB