Home
last modified time | relevance | path

Searched refs:hwpt (Results 1 – 9 of 9) sorted by relevance

/openbmc/linux/drivers/iommu/iommufd/
H A Dhw_pagetable.c12 struct iommufd_hw_pagetable *hwpt = in iommufd_hw_pagetable_destroy() local
15 if (!list_empty(&hwpt->hwpt_item)) { in iommufd_hw_pagetable_destroy()
16 mutex_lock(&hwpt->ioas->mutex); in iommufd_hw_pagetable_destroy()
17 list_del(&hwpt->hwpt_item); in iommufd_hw_pagetable_destroy()
18 mutex_unlock(&hwpt->ioas->mutex); in iommufd_hw_pagetable_destroy()
20 iopt_table_remove_domain(&hwpt->ioas->iopt, hwpt->domain); in iommufd_hw_pagetable_destroy()
23 if (hwpt->domain) in iommufd_hw_pagetable_destroy()
24 iommu_domain_free(hwpt->domain); in iommufd_hw_pagetable_destroy()
26 refcount_dec(&hwpt->ioas->obj.users); in iommufd_hw_pagetable_destroy()
31 struct iommufd_hw_pagetable *hwpt = in iommufd_hw_pagetable_abort() local
[all …]
H A Ddevice.c25 WARN_ON(igroup->hwpt || !list_empty(&igroup->device_list)); in iommufd_group_release()
296 struct iommufd_hw_pagetable *hwpt) in iommufd_group_setup_msi() argument
314 if (sw_msi_start != PHYS_ADDR_MAX && !hwpt->msi_cookie) { in iommufd_group_setup_msi()
315 rc = iommu_get_msi_cookie(hwpt->domain, sw_msi_start); in iommufd_group_setup_msi()
323 hwpt->msi_cookie = true; in iommufd_group_setup_msi()
328 int iommufd_hw_pagetable_attach(struct iommufd_hw_pagetable *hwpt, in iommufd_hw_pagetable_attach() argument
335 if (idev->igroup->hwpt != NULL && idev->igroup->hwpt != hwpt) { in iommufd_hw_pagetable_attach()
342 rc = iommufd_hw_pagetable_enforce_cc(hwpt); in iommufd_hw_pagetable_attach()
347 rc = iopt_table_enforce_dev_resv_regions(&hwpt->ioas->iopt, idev->dev, in iommufd_hw_pagetable_attach()
360 rc = iommufd_group_setup_msi(idev->igroup, hwpt); in iommufd_hw_pagetable_attach()
[all …]
H A Diommufd_private.h246 int iommufd_hw_pagetable_enforce_cc(struct iommufd_hw_pagetable *hwpt);
247 int iommufd_hw_pagetable_attach(struct iommufd_hw_pagetable *hwpt,
256 struct iommufd_hw_pagetable *hwpt) in iommufd_hw_pagetable_put() argument
258 lockdep_assert_not_held(&hwpt->ioas->mutex); in iommufd_hw_pagetable_put()
259 if (hwpt->auto_domain) in iommufd_hw_pagetable_put()
260 iommufd_object_deref_user(ictx, &hwpt->obj); in iommufd_hw_pagetable_put()
262 refcount_dec(&hwpt->obj.users); in iommufd_hw_pagetable_put()
270 struct iommufd_hw_pagetable *hwpt; member
H A Dselftest.c343 struct iommufd_hw_pagetable *hwpt; in get_md_pagetable() local
350 hwpt = container_of(obj, struct iommufd_hw_pagetable, obj); in get_md_pagetable()
351 if (hwpt->domain->ops != mock_ops.default_domain_ops) { in get_md_pagetable()
352 iommufd_put_object(&hwpt->obj); in get_md_pagetable()
355 *mock = container_of(hwpt->domain, struct mock_iommu_domain, domain); in get_md_pagetable()
356 return hwpt; in get_md_pagetable()
533 struct iommufd_hw_pagetable *hwpt; in iommufd_test_md_check_pa() local
543 hwpt = get_md_pagetable(ucmd, mockpt_id, &mock); in iommufd_test_md_check_pa()
544 if (IS_ERR(hwpt)) in iommufd_test_md_check_pa()
545 return PTR_ERR(hwpt); in iommufd_test_md_check_pa()
[all …]
H A Dvfio_compat.c258 struct iommufd_hw_pagetable *hwpt; in iommufd_vfio_cc_iommu() local
267 list_for_each_entry(hwpt, &ioas->hwpt_list, hwpt_item) { in iommufd_vfio_cc_iommu()
268 if (!hwpt->enforce_cache_coherency) { in iommufd_vfio_cc_iommu()
H A Dmain.c309 struct iommu_hwpt_alloc hwpt; member
/openbmc/qemu/hw/vfio/
H A Diommufd.c114 static bool iommufd_hwpt_dirty_tracking(VFIOIOASHwpt *hwpt) in iommufd_hwpt_dirty_tracking() argument
116 return hwpt && hwpt->hwpt_flags & IOMMU_HWPT_ALLOC_DIRTY_TRACKING; in iommufd_hwpt_dirty_tracking()
124 VFIOIOASHwpt *hwpt; in iommufd_set_dirty_page_tracking() local
126 QLIST_FOREACH(hwpt, &container->hwpt_list, next) { in iommufd_set_dirty_page_tracking()
127 if (!iommufd_hwpt_dirty_tracking(hwpt)) { in iommufd_set_dirty_page_tracking()
132 hwpt->hwpt_id, start, errp)) { in iommufd_set_dirty_page_tracking()
140 QLIST_FOREACH(hwpt, &container->hwpt_list, next) { in iommufd_set_dirty_page_tracking()
141 if (!iommufd_hwpt_dirty_tracking(hwpt)) { in iommufd_set_dirty_page_tracking()
145 hwpt->hwpt_id, !start, NULL); in iommufd_set_dirty_page_tracking()
158 VFIOIOASHwpt *hwpt; in iommufd_query_dirty_bitmap() local
[all …]
/openbmc/qemu/backends/
H A Dtrace-events19 iommufd_backend_set_dirty(int iommufd, uint32_t hwpt_id, bool start, int ret) " iommufd=%d hwpt=%u …
20 …, uint64_t iova, uint64_t size, uint64_t page_size, int ret) " iommufd=%d hwpt=%u iova=0x%"PRIx64"…
/openbmc/qemu/include/hw/vfio/
H A Dvfio-common.h151 VFIOIOASHwpt *hwpt; member