linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/5] Support managed interrupts for platform devices
@ 2020-12-02 10:36 John Garry
  2020-12-02 10:36 ` [PATCH v5 1/5] genirq/affinity: Add irq_update_affinity_desc() John Garry
                   ` (5 more replies)
  0 siblings, 6 replies; 18+ messages in thread
From: John Garry @ 2020-12-02 10:36 UTC (permalink / raw)
  To: jejb, martin.petersen, lenb, rjw, gregkh, tglx, maz
  Cc: linux-scsi, linux-kernel, linuxarm, linux-acpi, dwagner, John Garry

So far, managed interrupts are only used for PCI MSIs. This series adds
platform device support for managed interrupts. Initially this topic was
discussed at [0].

The method to enable managed interrupts is to allocate a group of IRQs for
the device, and then switch the interrupts to managed - this is done
through new function irq_update_affinity_desc().

Function devm_platform_get_irqs_affinity() is added as a helper to manage
this work, such that we don't need to export irq_update_affinity_desc() or
irq_create_affinity_masks().

In the devm_platform_get_irqs_affinity() release call we are required to
"put" or unmap the irqs which have been setup. The reason for this is that
per-irq mapping (and irq_desc) needs to be recreated anew for re-probing
the LLDD, such that we don't attempt to reconfigure the managed or any
other flag for an irq_desc.

For now, the HiSilicon SAS v2 hw driver is switched over. This is used
in the D05 dev board.

Performance gain observed for 6x SAS SSDs is ~357K -> 420K IOPs for fio read.

This series is tested based on Marc's "MSI: Track device proxying when
allocating MSIs" series, [1].

[0] https://lore.kernel.org/lkml/84a9411b-4ae3-1928-3d35-1666f2687ec8@huawei.com/
[1] https://lore.kernel.org/lkml/20201129135208.680293-1-maz@kernel.org/

Changes since v4:
- Add Rafael's tags (thanks)
- Expand commit message and code comment for genirq change

Changes since v3:
- Fix genirq change to re-activate interrupt if we have deactivated it
- Remove standalone platform_put_irq(), and combine code into
  devm_platform_get_irqs_affinity_release()
- Add new inline function in ioport.h rather than making
  acpi_dev_irqresource_disabled() public

Changes since v2:
- Update genirq change as follows:
 - Handle when the irq is started, active, or already managed
 - Reject update when CONFIG_GENERIC_IRQ_RESERVATION_MODE is set
- Revamp platform.c API as follows:
 - Make it devm type
 - Add platform_put_irq() and associated change in ACPI code to allow irq
   resource to be reset
 - Unmap irqs for driver removal
 - Change API to accept min and max vectors

John Garry (5):
  genirq/affinity: Add irq_update_affinity_desc()
  resource: Add irqresource_disabled()
  ACPI: Drop acpi_dev_irqresource_disabled()
  Driver core: platform: Add devm_platform_get_irqs_affinity()
  scsi: hisi_sas: Expose HW queues for v2 hw

 drivers/acpi/resource.c                |  17 +---
 drivers/base/platform.c                | 121 +++++++++++++++++++++++++
 drivers/scsi/hisi_sas/hisi_sas.h       |   4 +
 drivers/scsi/hisi_sas/hisi_sas_main.c  |  11 +++
 drivers/scsi/hisi_sas/hisi_sas_v2_hw.c |  66 +++++++++++---
 include/linux/interrupt.h              |   8 ++
 include/linux/ioport.h                 |   7 ++
 include/linux/platform_device.h        |   6 ++
 kernel/irq/manage.c                    |  70 ++++++++++++++
 9 files changed, 285 insertions(+), 25 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-12-11 19:16 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-02 10:36 [PATCH v5 0/5] Support managed interrupts for platform devices John Garry
2020-12-02 10:36 ` [PATCH v5 1/5] genirq/affinity: Add irq_update_affinity_desc() John Garry
2020-12-02 10:36 ` [PATCH v5 2/5] resource: Add irqresource_disabled() John Garry
2020-12-02 10:36 ` [PATCH v5 3/5] ACPI: Drop acpi_dev_irqresource_disabled() John Garry
2020-12-02 10:36 ` [PATCH v5 4/5] Driver core: platform: Add devm_platform_get_irqs_affinity() John Garry
2020-12-09 18:32   ` Greg KH
2020-12-09 19:04     ` John Garry
2020-12-09 19:13       ` Greg KH
2020-12-09 19:36         ` John Garry
2020-12-09 19:39         ` Marc Zyngier
2020-12-10 10:10           ` John Garry
2020-12-10 15:29           ` Greg KH
2020-12-10 16:37             ` John Garry
2020-12-02 10:36 ` [PATCH v5 5/5] scsi: hisi_sas: Expose HW queues for v2 hw John Garry
2020-12-11 16:56   ` John Garry
2020-12-11 17:20     ` Martin K. Petersen
2020-12-11 17:33       ` John Garry
2020-12-11 15:01 ` [PATCH v5 0/5] Support managed interrupts for platform devices Marc Zyngier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).