Subject: linux-next: manual merge of the iommufd tree with the iommu tree

From: Stephen Rothwell <[email-masked]>
Date: Fri, 27 Oct 2023 15:55:22 +1100

Hi all,

Today's linux-next merge of the iommufd tree got a conflict in:

  drivers/iommu/iommufd/selftest.c

between commits:

  1c68cbc64fe6 ("iommu: Add IOMMU_DOMAIN_PLATFORM")
  13fbceb1b8e9 ("iommufd: Convert to alloc_domain_paging()")

from the iommu tree and commits:

  408663619fcf ("iommufd/selftest: Add domain_alloc_user() support in iommu mock")
  266ce58989ba ("iommufd/selftest: Test IOMMU_HWPT_ALLOC_DIRTY_TRACKING")
  7adf267d66d1 ("iommufd/selftest: Test IOMMU_HWPT_SET_DIRTY_TRACKING")
  a9af47e382a4 ("iommufd/selftest: Test IOMMU_HWPT_GET_DIRTY_BITMAP")
  0795b305da89 ("iommufd/selftest: Test IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR flag")
  65fe32f7a447 ("iommufd/selftest: Add nested domain allocation for mock domain")

from the iommufd tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc drivers/iommu/iommufd/selftest.c
index ee6079847091,6684ab4cdc7a..000000000000
--- a/drivers/iommu/iommufd/selftest.c
+++ b/drivers/iommu/iommufd/selftest.c
@@@ -272,9 -435,28 +430,20 @@@ static phys_addr_t mock_domain_iova_to_
  
  static bool mock_domain_capable(struct device *dev, enum iommu_cap cap)
  {
- 	return cap == IOMMU_CAP_CACHE_COHERENCY;
+ 	struct mock_dev *mdev = container_of(dev, struct mock_dev, dev);
+ 
+ 	switch (cap) {
+ 	case IOMMU_CAP_CACHE_COHERENCY:
+ 		return true;
+ 	case IOMMU_CAP_DIRTY_TRACKING:
+ 		return !(mdev->flags & MOCK_FLAGS_DEVICE_NO_DIRTY);
+ 	default:
+ 		break;
+ 	}
+ 
+ 	return false;
  }
  
 -static void mock_domain_set_plaform_dma_ops(struct device *dev)
 -{
 -	/*
 -	 * mock doesn't setup default domains because we can't hook into the
 -	 * normal probe path
 -	 */
 -}
 -
  static struct iommu_device mock_iommu_device = {
  };
  
@@@ -293,8 -469,10 +462,9 @@@ static const struct iommu_ops mock_ops 
  	.owner = THIS_MODULE,
  	.pgsize_bitmap = MOCK_IO_PAGE_SIZE,
  	.hw_info = mock_domain_hw_info,
 -	.domain_alloc = mock_domain_alloc,
 +	.domain_alloc_paging = mock_domain_alloc_paging,
+ 	.domain_alloc_user = mock_domain_alloc_user,
  	.capable = mock_domain_capable,
 -	.set_platform_dma_ops = mock_domain_set_plaform_dma_ops,
  	.device_group = generic_device_group,
  	.probe_device = mock_probe_device,
  	.default_domain_ops =