All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/6] DMA mapping changes for SCSI core
@ 2022-07-14 11:15 John Garry
  2022-07-14 11:15 ` [PATCH v6 1/6] dma-mapping: Add dma_opt_mapping_size() John Garry
                   ` (6 more replies)
  0 siblings, 7 replies; 15+ messages in thread
From: John Garry @ 2022-07-14 11:15 UTC (permalink / raw)
  To: damien.lemoal, joro, will, jejb, martin.petersen, hch,
	m.szyprowski, robin.murphy
  Cc: linux-doc, linux-kernel, linux-ide, iommu, linux-scsi, linuxarm,
	John Garry

As reported in [0], DMA mappings whose size exceeds the IOMMU IOVA caching
limit may see a big performance hit.

This series introduces a new DMA mapping API, dma_opt_mapping_size(), so
that drivers may know this limit when performance is a factor in the
mapping.

The SCSI SAS transport code is modified only to use this limit. For now I
did not want to touch other hosts as I have a concern that this change
could cause a performance regression.

I also added a patch for libata-scsi as it does not currently honour the
shost max_sectors limit.

[0] https://lore.kernel.org/linux-iommu/20210129092120.1482-1-thunder.leizhen@huawei.com/

Changes since v5:
- Rebase to Linux 5.19-rc6
- Add Martin's tags to unmodified patches (thanks!)
- Apply DMA opt limit to max_sectors in sd driver, and not max_hw_sectors

Changes since v4:
- tweak libata and other patch titles
- Add Robin's tag (thanks!)
- Clarify description of new DMA mapping API

Changes since v3:
- Apply max DMA optimial limit to SAS hosts only
  Note: Even though "scsi: core: Cap shost max_sectors only once when
  adding" is a subset of a previous patch I did not transfer the RB tags
- Rebase on v5.19-rc4

John Garry (6):
  dma-mapping: Add dma_opt_mapping_size()
  dma-iommu: Add iommu_dma_opt_mapping_size()
  scsi: core: Cap shost max_sectors according to DMA limits only once
  scsi: sd: Allow max_sectors be capped at DMA optimal size limit
  scsi: scsi_transport_sas: Cap shost opt_sectors according to DMA
    optimal limit
  ata: libata-scsi: Cap ata_device->max_sectors according to
    shost->max_sectors

 Documentation/core-api/dma-api.rst | 14 ++++++++++++++
 drivers/ata/libata-scsi.c          |  1 +
 drivers/iommu/dma-iommu.c          |  6 ++++++
 drivers/iommu/iova.c               |  5 +++++
 drivers/scsi/hosts.c               |  5 +++++
 drivers/scsi/scsi_lib.c            |  4 ----
 drivers/scsi/scsi_transport_sas.c  |  6 ++++++
 drivers/scsi/sd.c                  |  2 ++
 include/linux/dma-map-ops.h        |  1 +
 include/linux/dma-mapping.h        |  5 +++++
 include/linux/iova.h               |  2 ++
 include/scsi/scsi_host.h           |  1 +
 kernel/dma/mapping.c               | 12 ++++++++++++
 13 files changed, 60 insertions(+), 4 deletions(-)

-- 
2.35.3


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

end of thread, other threads:[~2022-07-19  9:17 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-14 11:15 [PATCH v6 0/6] DMA mapping changes for SCSI core John Garry
2022-07-14 11:15 ` [PATCH v6 1/6] dma-mapping: Add dma_opt_mapping_size() John Garry
2022-07-14 11:15 ` [PATCH v6 2/6] dma-iommu: Add iommu_dma_opt_mapping_size() John Garry
2022-07-14 11:15 ` [PATCH v6 3/6] scsi: core: Cap shost max_sectors according to DMA limits only once John Garry
2022-07-14 11:15 ` [PATCH v6 4/6] scsi: sd: Allow max_sectors be capped at DMA optimal size limit John Garry
2022-07-18 10:47   ` Damien Le Moal
2022-07-19  7:05     ` John Garry
2022-07-19  7:10       ` Christoph Hellwig
2022-07-19  9:10         ` John Garry
2022-07-19  9:17           ` Christoph Hellwig
2022-07-19  2:30   ` Martin K. Petersen
2022-07-14 11:15 ` [PATCH v6 5/6] scsi: scsi_transport_sas: Cap shost opt_sectors according to DMA optimal limit John Garry
2022-07-18 10:47   ` Damien Le Moal
2022-07-14 11:15 ` [PATCH v6 6/6] ata: libata-scsi: Cap ata_device->max_sectors according to shost->max_sectors John Garry
2022-07-19  4:06 ` [PATCH v6 0/6] DMA mapping changes for SCSI core Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.