All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/5] DMA mapping changes for SCSI core
@ 2022-06-27 15:25 ` John Garry via iommu
  0 siblings, 0 replies; 36+ messages in thread
From: John Garry @ 2022-06-27 15:25 UTC (permalink / raw)
  To: damien.lemoal, joro, will, jejb, martin.petersen, hch,
	m.szyprowski, robin.murphy
  Cc: linux-doc, linux-kernel, linux-ide, iommu, 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/
[1] https://lore.kernel.org/linux-iommu/f5b78c9c-312e-70ab-ecbb-f14623a4b6e3@arm.com/

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

Changes since v2:
- Rebase on v5.19-rc1
- Add Damien's tag to 2/4 (thanks)

Changes since v1:
- Relocate scsi_add_host_with_dma() dma_dev check (Reported by Dan)
- Add tags from Damien and Martin (thanks)
  - note: I only added Martin's tag to the SCSI patch

John Garry (5):
  dma-mapping: Add dma_opt_mapping_size()
  dma-iommu: Add iommu_dma_opt_mapping_size()
  scsi: core: Cap shost max_sectors according to DMA mapping limits only
    once
  scsi: scsi_transport_sas: Cap shost max_sectors according to DMA
    optimal mapping limit
  libata-scsi: Cap ata_device->max_sectors according to
    shost->max_sectors

 Documentation/core-api/dma-api.rst |  9 +++++++++
 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 ++++++
 include/linux/dma-map-ops.h        |  1 +
 include/linux/dma-mapping.h        |  5 +++++
 include/linux/iova.h               |  2 ++
 kernel/dma/mapping.c               | 12 ++++++++++++
 11 files changed, 52 insertions(+), 4 deletions(-)

-- 
2.35.3


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

end of thread, other threads:[~2022-06-29 11:58 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-27 15:25 [PATCH v4 0/5] DMA mapping changes for SCSI core John Garry
2022-06-27 15:25 ` John Garry via iommu
2022-06-27 15:25 ` [PATCH v4 1/5] dma-mapping: Add dma_opt_mapping_size() John Garry
2022-06-27 15:25   ` John Garry via iommu
2022-06-28 11:23   ` Robin Murphy
2022-06-28 11:23     ` Robin Murphy
2022-06-28 11:27     ` John Garry via iommu
2022-06-28 11:27       ` John Garry
2022-06-29 11:57       ` John Garry
2022-06-29 11:57         ` John Garry via iommu
2022-06-27 15:25 ` [PATCH v4 2/5] dma-iommu: Add iommu_dma_opt_mapping_size() John Garry
2022-06-27 15:25   ` John Garry via iommu
2022-06-28 10:56   ` Robin Murphy
2022-06-28 10:56     ` Robin Murphy
2022-06-27 15:25 ` [PATCH v4 3/5] scsi: core: Cap shost max_sectors according to DMA mapping limits only once John Garry via iommu
2022-06-27 15:25   ` John Garry
2022-06-27 15:25 ` [PATCH v4 4/5] scsi: scsi_transport_sas: Cap shost max_sectors according to DMA optimal mapping limit John Garry via iommu
2022-06-27 15:25   ` John Garry
2022-06-27 15:25 ` [PATCH v4 5/5] libata-scsi: Cap ata_device->max_sectors according to shost->max_sectors John Garry via iommu
2022-06-27 15:25   ` John Garry
2022-06-27 23:24   ` Damien Le Moal
2022-06-27 23:24     ` Damien Le Moal via iommu
2022-06-28  7:54     ` John Garry
2022-06-28  7:54       ` John Garry via iommu
2022-06-28  9:14       ` Damien Le Moal
2022-06-28  9:14         ` Damien Le Moal via iommu
2022-06-28 11:33         ` John Garry
2022-06-28 11:33           ` John Garry via iommu
2022-06-29  5:40           ` Christoph Hellwig
2022-06-29  5:40             ` Christoph Hellwig
2022-06-29  5:58             ` Damien Le Moal
2022-06-29  5:58               ` Damien Le Moal via iommu
2022-06-29  7:43               ` John Garry
2022-06-29  7:43                 ` John Garry via iommu
2022-06-29  8:24                 ` Damien Le Moal
2022-06-29  8:24                   ` Damien Le Moal via iommu

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.