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

From: Stephen Rothwell <[email-masked]>
Date: Wed, 11 Oct 2023 16:03:57 +1100

Hi all,

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

  include/linux/iommu.h

between commit:

  4601cd2d7c4c ("iommu: Add ops->domain_alloc_paging()")

from the iommu tree and commit:

  909f4abd1097 ("iommu: Add new iommu op to create domains owned by userspace")

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 include/linux/iommu.h
index 0c4d8ae985ac,3861d66b65c1..000000000000
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@@ -238,9 -234,15 +238,17 @@@ struct iommu_iotlb_gather 
   *           op is allocated in the iommu driver and freed by the caller after
   *           use. The information type is one of enum iommu_hw_info_type defined
   *           in include/uapi/linux/iommufd.h.
-  * @domain_alloc: allocate iommu domain
+  * @domain_alloc: allocate and return an iommu domain if success. Otherwise
+  *                NULL is returned. The domain is not fully initialized until
+  *                the caller iommu_domain_alloc() returns.
 + * @domain_alloc_paging: Allocate an iommu_domain that can be used for
 + *                       UNMANAGED, DMA, and DMA_FQ domain types.
+  * @domain_alloc_user: Allocate an iommu domain corresponding to the input
+  *                     parameters as defined in include/uapi/linux/iommufd.h.
+  *                     Unlike @domain_alloc, it is called only by IOMMUFD and
+  *                     must fully initialize the new domain before return.
+  *                     Upon success, a domain is returned. Upon failure,
+  *                     ERR_PTR must be returned.
   * @probe_device: Add device to iommu driver handling
   * @release_device: Remove device from iommu driver handling
   * @probe_finalize: Do final setup work after the device is added to an IOMMU
@@@ -275,7 -275,7 +283,8 @@@ struct iommu_ops 
  
  	/* Domain allocation and freeing by the iommu driver */
  	struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type);
 +	struct iommu_domain *(*domain_alloc_paging)(struct device *dev);
+ 	struct iommu_domain *(*domain_alloc_user)(struct device *dev, u32 flags);
  
  	struct iommu_device *(*probe_device)(struct device *dev);
  	void (*release_device)(struct device *dev);