Home
last modified time | relevance | path

Searched refs:viommu (Results 1 – 15 of 15) sorted by relevance

/linux-6.15/drivers/iommu/iommufd/
H A Dviommu.c8 struct iommufd_viommu *viommu = in iommufd_viommu_destroy() local
11 if (viommu->ops && viommu->ops->destroy) in iommufd_viommu_destroy()
12 viommu->ops->destroy(viommu); in iommufd_viommu_destroy()
14 xa_destroy(&viommu->vdevs); in iommufd_viommu_destroy()
52 if (IS_ERR(viommu)) { in iommufd_viommu_alloc_ioctl()
53 rc = PTR_ERR(viommu); in iommufd_viommu_alloc_ioctl()
57 xa_init(&viommu->vdevs); in iommufd_viommu_alloc_ioctl()
58 viommu->type = cmd->type; in iommufd_viommu_alloc_ioctl()
91 struct iommufd_viommu *viommu = vdev->viommu; in iommufd_vdevice_destroy() local
113 if (IS_ERR(viommu)) in iommufd_vdevice_alloc_ioctl()
[all …]
H A Dhw_pagetable.c60 if (hwpt_nested->viommu) in iommufd_hwpt_nested_destroy()
298 if (!viommu->ops || !viommu->ops->alloc_domain_nested) in iommufd_viommu_alloc_hwpt_nested()
308 hwpt_nested->viommu = viommu; in iommufd_viommu_alloc_hwpt_nested()
309 refcount_inc(&viommu->obj.users); in iommufd_viommu_alloc_hwpt_nested()
310 hwpt_nested->parent = viommu->hwpt; in iommufd_viommu_alloc_hwpt_nested()
313 viommu->ops->alloc_domain_nested(viommu, in iommufd_viommu_alloc_hwpt_nested()
394 struct iommufd_viommu *viommu; in iommufd_hwpt_alloc() local
402 viommu, cmd->flags, &user_data); in iommufd_hwpt_alloc()
534 struct iommufd_viommu *viommu = in iommufd_hwpt_invalidate() local
537 if (!viommu->ops || !viommu->ops->cache_invalidate) { in iommufd_hwpt_invalidate()
[all …]
H A Ddriver.c40 struct device *iommufd_viommu_find_dev(struct iommufd_viommu *viommu, in iommufd_viommu_find_dev() argument
45 lockdep_assert_held(&viommu->vdevs.xa_lock); in iommufd_viommu_find_dev()
47 vdev = xa_load(&viommu->vdevs, vdev_id); in iommufd_viommu_find_dev()
53 int iommufd_viommu_get_vdev_id(struct iommufd_viommu *viommu, in iommufd_viommu_get_vdev_id() argument
63 xa_lock(&viommu->vdevs); in iommufd_viommu_get_vdev_id()
64 xa_for_each(&viommu->vdevs, index, vdev) { in iommufd_viommu_get_vdev_id()
71 xa_unlock(&viommu->vdevs); in iommufd_viommu_get_vdev_id()
80 int iommufd_viommu_report_event(struct iommufd_viommu *viommu, in iommufd_viommu_report_event() argument
91 down_read(&viommu->veventqs_rwsem); in iommufd_viommu_report_event()
93 veventq = iommufd_viommu_find_veventq(viommu, type); in iommufd_viommu_report_event()
[all …]
H A Deventq.c272 struct iommufd_viommu *viommu = veventq->viommu; in iommufd_veventq_abort() local
283 refcount_dec(&viommu->obj.users); in iommufd_veventq_abort()
292 down_write(&veventq->viommu->veventqs_rwsem); in iommufd_veventq_destroy()
294 up_write(&veventq->viommu->veventqs_rwsem); in iommufd_veventq_destroy()
535 struct iommufd_viommu *viommu; in iommufd_veventq_alloc() local
546 if (IS_ERR(viommu)) in iommufd_veventq_alloc()
547 return PTR_ERR(viommu); in iommufd_veventq_alloc()
549 down_write(&viommu->veventqs_rwsem); in iommufd_veventq_alloc()
564 veventq->viommu = viommu; in iommufd_veventq_alloc()
565 refcount_inc(&viommu->obj.users); in iommufd_veventq_alloc()
[all …]
H A Diommufd_private.h319 struct iommufd_viommu *viommu; member
533 struct iommufd_viommu *viommu; member
592 iommufd_viommu_find_veventq(struct iommufd_viommu *viommu, u32 type) in iommufd_viommu_find_veventq() argument
596 lockdep_assert_held(&viommu->veventqs_rwsem); in iommufd_viommu_find_veventq()
598 list_for_each_entry_safe(veventq, next, &viommu->veventqs, node) { in iommufd_viommu_find_veventq()
613 struct iommufd_viommu *viommu; member
H A Dselftest.c155 return container_of(viommu, struct mock_viommu, core); in to_mock_viommu()
164 struct mock_viommu *viommu; member
217 if (new_viommu != mdev->viommu) { in mock_domain_nop_attach()
219 mdev->viommu = new_viommu; in mock_domain_nop_attach()
634 viommu->iommu_dev, struct mock_iommu_device, iommu_dev); in mock_viommu_destroy()
703 xa_lock(&viommu->vdevs); in mock_viommu_cache_invalidate()
704 dev = iommufd_viommu_find_dev(viommu, in mock_viommu_cache_invalidate()
707 xa_unlock(&viommu->vdevs); in mock_viommu_cache_invalidate()
720 xa_unlock(&viommu->vdevs); in mock_viommu_cache_invalidate()
1703 if (!mdev->viommu || !mdev->vdev_id) in iommufd_test_trigger_vevent()
[all …]
H A DMakefile11 viommu.o
H A Dmain.c322 struct iommu_viommu_alloc viommu; member
/linux-6.15/drivers/iommu/
H A Dvirtio-iommu.c665 struct viommu_dev *viommu = vdev->viommu; in viommu_domain_finalise() local
676 ret = ida_alloc_range(&viommu->domain_ids, viommu->first_domain, in viommu_domain_finalise()
687 vdomain->viommu = viommu; in viommu_domain_finalise()
714 if (vdomain->viommu) in viommu_domain_free()
736 } else if (vdomain->viommu != vdev->viommu) { in viommu_attach_dev()
1000 if (!viommu) in viommu_probe_device()
1008 vdev->viommu = viommu; in viommu_probe_device()
1104 viommu->evts = evts = devm_kmalloc_array(viommu->dev, nr_evts, in viommu_fill_evtq()
1132 viommu = devm_kzalloc(dev, sizeof(*viommu), GFP_KERNEL); in viommu_probe()
1133 if (!viommu) in viommu_probe()
[all …]
/linux-6.15/drivers/acpi/
H A Dviot.c48 struct viot_iommu *viommu; member
123 viommu->fwnode = &adev->fwnode; in viot_get_mmio_iommu_fwnode()
130 struct viot_iommu *viommu; in viot_get_iommu() local
139 if (viommu->offset == offset) in viot_get_iommu()
140 return viommu; in viot_get_iommu()
145 viommu = kzalloc(sizeof(*viommu), GFP_KERNEL); in viot_get_iommu()
146 if (!viommu) in viot_get_iommu()
149 viommu->offset = offset; in viot_get_iommu()
172 return viommu; in viot_get_iommu()
175 kfree(viommu); in viot_get_iommu()
[all …]
/linux-6.15/include/linux/
H A Diommufd.h125 void (*destroy)(struct iommufd_viommu *viommu);
127 struct iommufd_viommu *viommu, u32 flags,
129 int (*cache_invalidate)(struct iommufd_viommu *viommu,
195 struct device *iommufd_viommu_find_dev(struct iommufd_viommu *viommu,
197 int iommufd_viommu_get_vdev_id(struct iommufd_viommu *viommu,
199 int iommufd_viommu_report_event(struct iommufd_viommu *viommu,
211 iommufd_viommu_find_dev(struct iommufd_viommu *viommu, unsigned long vdev_id) in iommufd_viommu_find_dev() argument
216 static inline int iommufd_viommu_get_vdev_id(struct iommufd_viommu *viommu, in iommufd_viommu_get_vdev_id() argument
223 static inline int iommufd_viommu_report_event(struct iommufd_viommu *viommu, in iommufd_viommu_report_event() argument
/linux-6.15/Documentation/devicetree/bindings/virtio/
H A Dmmio.yaml56 iommus = <&viommu 23>;
59 viommu: iommu@3100 {
/linux-6.15/drivers/iommu/arm/arm-smmu-v3/
H A Darm-smmu-v3-iommufd.c220 arm_vsmmu_alloc_domain_nested(struct iommufd_viommu *viommu, u32 flags, in arm_vsmmu_alloc_domain_nested() argument
223 struct arm_vsmmu *vsmmu = container_of(viommu, struct arm_vsmmu, core); in arm_vsmmu_alloc_domain_nested()
330 static int arm_vsmmu_cache_invalidate(struct iommufd_viommu *viommu, in arm_vsmmu_cache_invalidate() argument
333 struct arm_vsmmu *vsmmu = container_of(viommu, struct arm_vsmmu, core); in arm_vsmmu_cache_invalidate()
/linux-6.15/tools/testing/selftests/iommu/
H A Diommufd_utils.h332 #define test_cmd_viommu_invalidate(viommu, reqs, lreq, nreqs) \ argument
335 _test_cmd_viommu_invalidate(self->fd, viommu, reqs, \
H A Diommufd.c2666 unsigned int viommu; in FIXTURE_VARIANT() local
2676 if (variant->viommu) { in FIXTURE_SETUP()
2709 .viommu = 0, in FIXTURE_VARIANT_ADD()
2714 .viommu = 1, in FIXTURE_VARIANT_ADD()