Hi Linus, This PR has a few smaller updates related to iommufd. Several big topics are currently still on the mailing list in review: - VFIO device cdev support to allow exposing all the iommufd features: https://lore.kernel.org/kvm/20230221034812.138051-1-yi.l.liu@xxxxxxxxx/ - iommufd page table replace operation: https://lore.kernel.org/kvm/cover.1675802050.git.nicolinc@xxxxxxxxxx/ - IOMMU driver information query: https://lore.kernel.org/r/20230209041642.9346-1-yi.l.liu@xxxxxxxxx - Intel VT-d nested translation: https://lore.kernel.org/r/20230209043153.14964-1-yi.l.liu@xxxxxxxxx - Draft patches for ARM SMMUv3 nested translation: https://github.com/nicolinc/iommufd/commits/wip/iommufd-v6.2-rc5-nesting Along with qemu patches implementing iommufd: https://lore.kernel.org/qemu-devel/20230131205305.2726330-1-eric.auger@xxxxxxxxxx/ And draft patches for the qemu side support for nested translation. This PR has a shared branch with Joerg's tree changing the signature of iommu_map() to add a gfp_t. There were some conflicts with v6.2 which I've resolved in this PR and there will be a conflict against the rpmsg tree: https://lore.kernel.org/r/20230127180226.783baf07@xxxxxxxxxxxxxxxx --- a/drivers/remoteproc/qcom_q6v5_adsp.c +++ b/drivers/remoteproc/qcom_q6v5_adsp.c @@ -367,7 +367,8 @@ static int adsp_map_carveout(struct rproc *rproc) iova = adsp->mem_phys | (sid << 32); ret = iommu_map(rproc->domain, iova, adsp->mem_phys, - adsp->mem_size, IOMMU_READ | IOMMU_WRITE); + adsp->mem_size, IOMMU_READ | IOMMU_WRITE, + GFP_KERNEL); if (ret) { dev_err(adsp->dev, "Unable to map ADSP Physical Memory\n"); return ret; Thanks, Jason The following changes since commit c9c3395d5e3dcc6daee66c6908354d47bf98cb0c: Linux 6.2 (2023-02-19 14:24:22 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd.git tags/for-linus-iommufd for you to fetch changes up to 939204e4df962982cbc84acc26b29b421dd530a8: Merge tag 'v6.2' into iommufd.git for-next (2023-02-21 11:11:03 -0400) ---------------------------------------------------------------- iommufd for 6.3 Some polishing and small fixes for iommufd: - Remove IOMMU_CAP_INTR_REMAP, instead rely on the interrupt subsystem - Use GFP_KERNEL_ACCOUNT inside the iommu_domains - Support VFIO_NOIOMMU mode with iommufd - Various typos - A list corruption bug if HWPTs are used for attach ---------------------------------------------------------------- Jason Gunthorpe (26): genirq/msi: Add msi_device_has_isolated_msi() iommu: Add iommu_group_has_isolated_msi() vfio/type1: Convert to iommu_group_has_isolated_msi() iommufd: Convert to msi_device_has_isolated_msi() genirq/irqdomain: Remove unused irq_domain_check_msi_remap() code genirq/msi: Rename IRQ_DOMAIN_MSI_REMAP to IRQ_DOMAIN_ISOLATED_MSI iommu/x86: Replace IOMMU_CAP_INTR_REMAP with IRQ_DOMAIN_FLAG_ISOLATED_MSI irq/s390: Add arch_is_isolated_msi() for s390 iommu: Remove IOMMU_CAP_INTR_REMAP Merge branch 'isolated_msi' into iommufd.git for-next iommu: Add a gfp parameter to iommu_map() iommu: Remove iommu_map_atomic() iommu: Add a gfp parameter to iommu_map_sg() iommu/dma: Use the gfp parameter in __iommu_dma_alloc_noncontiguous() iommufd: Use GFP_KERNEL_ACCOUNT for iommu_map() iommu/intel: Add a gfp parameter to alloc_pgtable_page() iommu/intel: Support the gfp argument to the map_pages op iommu/intel: Use GFP_KERNEL in sleepable contexts iommu/s390: Push the gfp parameter to the kmem_cache_alloc()'s iommu/s390: Use GFP_KERNEL in sleepable contexts Merge branch 'iommu-memory-accounting' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/joro/iommu intoiommufd/for-next vfio: Support VFIO_NOIOMMU with iommufd Merge branch 'vfio-no-iommu' into iommufd.git for-next iommufd: Make sure to zero vfio_iommu_type1_info before copying to user iommufd: Do not add the same hwpt to the ioas->hwpt_list twice Merge tag 'v6.2' into iommufd.git for-next Nicolin Chen (1): selftests: iommu: Fix test_cmd_destroy_access() call in user_copy Yi Liu (1): iommufd: Add three missing structures in ucmd_buffer arch/arm/mm/dma-mapping.c | 11 ++- arch/s390/include/asm/msi.h | 17 ++++ arch/s390/include/asm/pci_dma.h | 5 +- arch/s390/pci/pci_dma.c | 31 +++--- .../gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c | 3 +- drivers/gpu/drm/tegra/drm.c | 2 +- drivers/gpu/host1x/cdma.c | 2 +- drivers/infiniband/hw/usnic/usnic_uiom.c | 8 +- drivers/iommu/amd/iommu.c | 5 +- drivers/iommu/dma-iommu.c | 18 +++- drivers/iommu/intel/iommu.c | 38 ++++---- drivers/iommu/intel/iommu.h | 2 +- drivers/iommu/intel/irq_remapping.c | 3 +- drivers/iommu/intel/pasid.c | 2 +- drivers/iommu/iommu.c | 77 ++++++++------- drivers/iommu/iommufd/Kconfig | 2 +- drivers/iommu/iommufd/device.c | 8 +- drivers/iommu/iommufd/iommufd_private.h | 2 + drivers/iommu/iommufd/main.c | 3 + drivers/iommu/iommufd/pages.c | 6 +- drivers/iommu/iommufd/vfio_compat.c | 107 +++++++++++++++++---- drivers/iommu/s390-iommu.c | 17 ++-- drivers/irqchip/irq-gic-v3-its.c | 4 +- drivers/media/platform/qcom/venus/firmware.c | 2 +- drivers/net/ipa/ipa_mem.c | 6 +- drivers/net/wireless/ath/ath10k/snoc.c | 2 +- drivers/net/wireless/ath/ath11k/ahb.c | 4 +- drivers/remoteproc/remoteproc_core.c | 5 +- drivers/vfio/Kconfig | 2 +- drivers/vfio/container.c | 7 -- drivers/vfio/group.c | 7 +- drivers/vfio/iommufd.c | 19 +++- drivers/vfio/vfio.h | 8 +- drivers/vfio/vfio_iommu_type1.c | 25 ++--- drivers/vfio/vfio_main.c | 7 ++ drivers/vhost/vdpa.c | 2 +- include/linux/iommu.h | 33 ++----- include/linux/iommufd.h | 12 ++- include/linux/irqdomain.h | 29 +----- include/linux/msi.h | 17 ++++ kernel/irq/irqdomain.c | 39 -------- kernel/irq/msi.c | 27 ++++++ tools/testing/selftests/iommu/iommufd.c | 2 +- 43 files changed, 369 insertions(+), 259 deletions(-) create mode 100644 arch/s390/include/asm/msi.h
Attachment:
signature.asc
Description: PGP signature