File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -36,5 +36,18 @@ struct iommufd_object *_iommufd_object_alloc(struct iommufd_ctx *ictx,
36
36
}
37
37
EXPORT_SYMBOL_NS_GPL (_iommufd_object_alloc , IOMMUFD );
38
38
39
+ /* Caller should xa_lock(&viommu->vdevs) to protect the return value */
40
+ struct device * iommufd_viommu_find_dev (struct iommufd_viommu * viommu ,
41
+ unsigned long vdev_id )
42
+ {
43
+ struct iommufd_vdevice * vdev ;
44
+
45
+ lockdep_assert_held (& viommu -> vdevs .xa_lock );
46
+
47
+ vdev = xa_load (& viommu -> vdevs , vdev_id );
48
+ return vdev ? vdev -> dev : NULL ;
49
+ }
50
+ EXPORT_SYMBOL_NS_GPL (iommufd_viommu_find_dev , IOMMUFD );
51
+
39
52
MODULE_DESCRIPTION ("iommufd code shared with builtin modules" );
40
53
MODULE_LICENSE ("GPL" );
Original file line number Diff line number Diff line change @@ -185,13 +185,21 @@ static inline int iommufd_vfio_compat_set_no_iommu(struct iommufd_ctx *ictx)
185
185
struct iommufd_object * _iommufd_object_alloc (struct iommufd_ctx * ictx ,
186
186
size_t size ,
187
187
enum iommufd_object_type type );
188
+ struct device * iommufd_viommu_find_dev (struct iommufd_viommu * viommu ,
189
+ unsigned long vdev_id );
188
190
#else /* !CONFIG_IOMMUFD_DRIVER_CORE */
189
191
static inline struct iommufd_object *
190
192
_iommufd_object_alloc (struct iommufd_ctx * ictx , size_t size ,
191
193
enum iommufd_object_type type )
192
194
{
193
195
return ERR_PTR (- EOPNOTSUPP );
194
196
}
197
+
198
+ static inline struct device *
199
+ iommufd_viommu_find_dev (struct iommufd_viommu * viommu , unsigned long vdev_id )
200
+ {
201
+ return NULL ;
202
+ }
195
203
#endif /* CONFIG_IOMMUFD_DRIVER_CORE */
196
204
197
205
/*
You can’t perform that action at this time.
0 commit comments