linux/drivers/dma
Linus Torvalds 08cdc21579 iommufd for 6.2
iommufd is the user API to control the IOMMU subsystem as it relates to
 managing IO page tables that point at user space memory.
 
 It takes over from drivers/vfio/vfio_iommu_type1.c (aka the VFIO
 container) which is the VFIO specific interface for a similar idea.
 
 We see a broad need for extended features, some being highly IOMMU device
 specific:
  - Binding iommu_domain's to PASID/SSID
  - Userspace IO page tables, for ARM, x86 and S390
  - Kernel bypassed invalidation of user page tables
  - Re-use of the KVM page table in the IOMMU
  - Dirty page tracking in the IOMMU
  - Runtime Increase/Decrease of IOPTE size
  - PRI support with faults resolved in userspace
 
 Many of these HW features exist to support VM use cases - for instance the
 combination of PASID, PRI and Userspace IO Page Tables allows an
 implementation of DMA Shared Virtual Addressing (vSVA) within a
 guest. Dirty tracking enables VM live migration with SRIOV devices and
 PASID support allow creating "scalable IOV" devices, among other things.
 
 As these features are fundamental to a VM platform they need to be
 uniformly exposed to all the driver families that do DMA into VMs, which
 is currently VFIO and VDPA.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQRRRCHOFoQz/8F5bUaFwuHvBreFYQUCY5ct7wAKCRCFwuHvBreF
 YZZ5AQDciXfcgXLt0UBEmWupNb0f/asT6tk717pdsKm8kAZMNAEAsIyLiKT5HqGl
 s7fAu+CQ1pr9+9NKGevD+frw8Solsw4=
 =jJkd
 -----END PGP SIGNATURE-----

Merge tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd

Pull iommufd implementation from Jason Gunthorpe:
 "iommufd is the user API to control the IOMMU subsystem as it relates
  to managing IO page tables that point at user space memory.

  It takes over from drivers/vfio/vfio_iommu_type1.c (aka the VFIO
  container) which is the VFIO specific interface for a similar idea.

  We see a broad need for extended features, some being highly IOMMU
  device specific:
   - Binding iommu_domain's to PASID/SSID
   - Userspace IO page tables, for ARM, x86 and S390
   - Kernel bypassed invalidation of user page tables
   - Re-use of the KVM page table in the IOMMU
   - Dirty page tracking in the IOMMU
   - Runtime Increase/Decrease of IOPTE size
   - PRI support with faults resolved in userspace

  Many of these HW features exist to support VM use cases - for instance
  the combination of PASID, PRI and Userspace IO Page Tables allows an
  implementation of DMA Shared Virtual Addressing (vSVA) within a guest.
  Dirty tracking enables VM live migration with SRIOV devices and PASID
  support allow creating "scalable IOV" devices, among other things.

  As these features are fundamental to a VM platform they need to be
  uniformly exposed to all the driver families that do DMA into VMs,
  which is currently VFIO and VDPA"

For more background, see the extended explanations in Jason's pull request:

  https://lore.kernel.org/lkml/Y5dzTU8dlmXTbzoJ@nvidia.com/

* tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd: (62 commits)
  iommufd: Change the order of MSI setup
  iommufd: Improve a few unclear bits of code
  iommufd: Fix comment typos
  vfio: Move vfio group specific code into group.c
  vfio: Refactor dma APIs for emulated devices
  vfio: Wrap vfio group module init/clean code into helpers
  vfio: Refactor vfio_device open and close
  vfio: Make vfio_device_open() truly device specific
  vfio: Swap order of vfio_device_container_register() and open_device()
  vfio: Set device->group in helper function
  vfio: Create wrappers for group register/unregister
  vfio: Move the sanity check of the group to vfio_create_group()
  vfio: Simplify vfio_create_group()
  iommufd: Allow iommufd to supply /dev/vfio/vfio
  vfio: Make vfio_container optionally compiled
  vfio: Move container related MODULE_ALIAS statements into container.c
  vfio-iommufd: Support iommufd for emulated VFIO devices
  vfio-iommufd: Support iommufd for physical VFIO devices
  vfio-iommufd: Allow iommufd to be used in place of a container fd
  vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent()
  ...
2022-12-14 09:15:43 -08:00
..
bestcomm treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
dw dmaengine updates for v6.0-rc1 2022-08-04 18:44:38 -07:00
dw-axi-dmac dmaengine updates for v6.0-rc1 2022-08-04 18:44:38 -07:00
dw-edma dmaengine: dw-edma: Remove runtime PM support 2022-09-29 22:46:08 +05:30
fsl-dpaa2-qdma dmaengine: fsl-dpaa2-qdma: Drop comma after SoC match table sentinel 2022-03-11 15:47:39 +05:30
hsu dmaengine: hsu: Include headers we are direct user of 2022-09-04 22:49:35 +05:30
idxd Merge tag 'v6.1-rc7' into iommufd.git for-next 2022-12-02 12:04:39 -04:00
ioat dmaengine: ioat: remove unused declarations in dma.h 2022-09-29 22:46:09 +05:30
ipu
lgm dmaengine: lgm: Fix an error handling path in intel_ldma_probe() 2022-07-06 10:53:25 +05:30
mediatek dmaengine: mediatek: mtk-hsdma: Fix typo 'the the' in comment 2022-07-26 22:06:05 +05:30
ppc4xx treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_406.RULE 2022-06-10 14:51:37 +02:00
ptdma dmaengine: ptdma: statify pt_tx_status 2022-04-22 11:29:13 +05:30
qcom genirq: Get rid of GENERIC_MSI_IRQ_DOMAIN 2022-11-17 15:15:20 +01:00
sf-pdma dmaengine: sf-pdma:Remove the print function dev_err() 2022-09-05 11:50:38 +05:30
sh dmaengine: sh: rcar-dmac: Replace zero-length arrays with DECLARE_FLEX_ARRAY() helper 2022-09-29 21:14:32 +05:30
ti dmaengine: ti: k3-udma-glue: fix memory leak when register device fail 2022-11-08 10:43:56 +05:30
xilinx dmaengine updates for v6.1-rc1 2022-10-07 15:56:34 -07:00
acpi-dma.c
altera-msgdma.c dmaengine: altera-msgdma: Fixed some inconsistent function name descriptions 2022-07-06 22:00:06 +05:30
amba-pl08x.c dmaengine: pl08x: Fix double word 2022-09-29 12:24:16 +05:30
apple-admac.c dmaengine: apple-admac: Fix grabbing of channels in of_xlate 2022-11-08 10:43:56 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: Fix at_lli struct definition 2022-11-08 10:43:56 +05:30
at_hdmac.c dmaengine: at_hdmac: Check return code of dma_async_device_register 2022-11-08 10:43:57 +05:30
at_xdmac.c dmaengine: at_xdmac: Replace two if statements with only one with two conditions 2022-09-05 12:01:55 +05:30
bcm2835-dma.c
bcm-sba-raid.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
dma-axi-dmac.c dmaengine: axi-dmac: check cache coherency register 2022-07-26 22:05:20 +05:30
dma-jz4780.c dmaengine: jz4780: fix typo in comment 2022-07-06 10:51:43 +05:30
dmaengine.c dmaengine: remove DMA_MEMCPY_SG once again 2022-06-27 12:01:40 +05:30
dmaengine.h
dmatest.c treewide: use get_random_bytes() when possible 2022-10-11 17:42:58 -06:00
ep93xx_dma.c dmaengine: ep93xx: Fix typo in comments 2022-07-01 21:50:23 +05:30
fsl_raid.c
fsl_raid.h
fsl-edma-common.c dmaengine: fsl-edma: remove redundant assignment to pointer last_sg 2022-07-01 22:09:16 +05:30
fsl-edma-common.h dmaengine: fsl-edma: support edma memcpy 2021-10-28 22:56:24 +05:30
fsl-edma.c dmaengine: fsl-edma: support edma memcpy 2021-10-28 22:56:24 +05:30
fsl-qdma.c
fsldma.c
fsldma.h
hisi_dma.c dmaengine: hisilicon: Dump regs to debugfs 2022-09-04 22:42:35 +05:30
idma64.c
idma64.h
img-mdc-dma.c
imx-dma.c dmaengine: imx-dma: Cast of_device_get_match_data() with (uintptr_t) 2022-07-21 18:08:35 +05:30
imx-sdma.c dmaengine updates for v6.0-rc1 2022-08-04 18:44:38 -07:00
iop-adma.c
iop-adma.h
k3dma.c
Kconfig genirq: Get rid of GENERIC_MSI_IRQ_DOMAIN 2022-11-17 15:15:20 +01:00
lpc18xx-dmamux.c
Makefile dmaengine: apple-admac: Add Apple ADMAC driver 2022-06-09 12:20:20 +05:30
mcf-edma.c
milbeaut-hdmac.c
milbeaut-xdmac.c
mmp_pdma.c dmaengine: mmp: deprecate '#dma-channels' 2022-05-19 22:53:46 +05:30
mmp_tdma.c
moxart-dma.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
mpc512x_dma.c
mv_xor_v2.c dmaengine: mv_xor_v2: Fix a resource leak in mv_xor_v2_remove() 2022-11-08 10:43:56 +05:30
mv_xor.c
mv_xor.h
mxs-dma.c dmaengine: mxs: use platform_driver_register 2022-09-29 12:05:20 +05:30
nbpfaxi.c dmaengine: nbpfaxi: Use platform_get_irq_optional() to get the interrupt 2022-04-11 16:26:53 +05:30
of-dma.c
owl-dma.c dmaengine: owl: fix typo in comment 2022-07-06 10:50:43 +05:30
pch_dma.c dmaengine: pch_dma: Remove usage of the deprecated "pci-dma-compat.h" API 2022-01-08 22:16:44 +05:30
pl330.c dmaengine: pl330: Remove unused flags 2022-09-05 12:01:54 +05:30
plx_dma.c dmaengine: plx_dma: Move spin_lock_bh() to spin_lock() 2022-04-20 15:59:33 +05:30
pxa_dma.c dmaengine: pxa_dma: use platform_get_irq_optional 2022-11-08 10:42:51 +05:30
s3c24xx-dma.c dmaengine: virt-dma: Fix double word in comments 2022-09-29 12:22:27 +05:30
sa11x0-dma.c dmaengine: sa11x0: Mark PM functions as __maybe_unused 2021-10-26 10:55:07 +05:30
sprd-dma.c dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed 2022-07-26 18:20:49 +05:30
st_fdma.c dmaengine: st_fdma: fix MODULE_ALIAS 2021-12-13 13:18:48 +05:30
st_fdma.h
ste_dma40_ll.c
ste_dma40_ll.h
ste_dma40.c dmaengine: ste_dma40: fix typo in comment 2022-07-06 10:54:08 +05:30
stm32-dma.c dmaengine: stm32-dma: fix potential race between pause and resume 2022-11-08 10:43:56 +05:30
stm32-dmamux.c dmaengine: stm32-dmamux: Simplify code and save a few bytes of memory 2022-09-05 11:52:28 +05:30
stm32-mdma.c dmaengine: stm32-mdma: memset stm32_mdma_chan_config struct before using it 2022-10-19 19:01:19 +05:30
sun4i-dma.c dmaengine: sun4i: Set the maximum segment size 2022-07-05 18:34:26 +05:30
sun6i-dma.c dmaengine: sun6i: Add support for the D1 variant 2022-05-19 23:43:41 +05:30
tegra20-apb-dma.c dmaengine: tegra20-apb: stop checking config->slave_id 2021-12-17 11:23:38 +05:30
tegra186-gpc-dma.c dmaengine: tegra: Add terminate() for Tegra234 2022-07-26 18:12:21 +05:30
tegra210-adma.c
timb_dma.c
TODO
txx9dmac.c
txx9dmac.h
uniphier-mdmac.c
uniphier-xdmac.c dmaengine: uniphier-xdmac: Fix type of address variables 2022-01-03 17:49:37 +05:30
virt-dma.c
virt-dma.h
xgene-dma.c