| /linux-6.15/drivers/iommu/iommufd/ |
| H A D | viommu.c | 8 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 D | hw_pagetable.c | 60 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 D | driver.c | 40 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 D | eventq.c | 272 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 D | iommufd_private.h | 319 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 D | selftest.c | 155 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 D | Makefile | 11 viommu.o
|
| H A D | main.c | 322 struct iommu_viommu_alloc viommu; member
|
| /linux-6.15/drivers/iommu/ |
| H A D | virtio-iommu.c | 665 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 D | viot.c | 48 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 D | iommufd.h | 125 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 D | mmio.yaml | 56 iommus = <&viommu 23>; 59 viommu: iommu@3100 {
|
| /linux-6.15/drivers/iommu/arm/arm-smmu-v3/ |
| H A D | arm-smmu-v3-iommufd.c | 220 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 D | iommufd_utils.h | 332 #define test_cmd_viommu_invalidate(viommu, reqs, lreq, nreqs) \ argument 335 _test_cmd_viommu_invalidate(self->fd, viommu, reqs, \
|
| H A D | iommufd.c | 2666 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()
|