Lines Matching refs:ioas
338 rc = iopt_table_enforce_dev_resv_regions(&hwpt_paging->ioas->iopt, in iommufd_device_attach_reserved_iova()
347 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, in iommufd_device_attach_reserved_iova()
393 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, idev->dev); in iommufd_hw_pagetable_attach()
412 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, idev->dev); in iommufd_hw_pagetable_detach()
440 iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt, cur->dev); in iommufd_group_remove_reserved_iova()
454 if (!old_hwpt_paging || hwpt_paging->ioas != old_hwpt_paging->ioas) { in iommufd_group_do_replace_reserved_iova()
457 &hwpt_paging->ioas->iopt, cur->dev, NULL); in iommufd_group_do_replace_reserved_iova()
509 (!hwpt_paging || hwpt_paging->ioas != old_hwpt_paging->ioas)) in iommufd_device_do_replace()
545 struct iommufd_ioas *ioas, u32 *pt_id, in iommufd_device_auto_get_domain() argument
565 mutex_lock(&ioas->mutex); in iommufd_device_auto_get_domain()
566 list_for_each_entry(hwpt_paging, &ioas->hwpt_list, hwpt_item) { in iommufd_device_auto_get_domain()
591 hwpt_paging = iommufd_hwpt_paging_alloc(idev->ictx, ioas, idev, 0, in iommufd_device_auto_get_domain()
611 mutex_unlock(&ioas->mutex); in iommufd_device_auto_get_domain()
617 mutex_unlock(&ioas->mutex); in iommufd_device_auto_get_domain()
643 struct iommufd_ioas *ioas = in iommufd_device_change_pt() local
646 destroy_hwpt = iommufd_device_auto_get_domain(idev, ioas, pt_id, in iommufd_device_change_pt()
745 struct iommufd_ioas *cur_ioas = access->ioas; in iommufd_access_change_ioas()
761 access->ioas = NULL; in iommufd_access_change_ioas()
766 access->ioas = cur_ioas; in iommufd_access_change_ioas()
782 access->ioas = new_ioas; in iommufd_access_change_ioas()
790 struct iommufd_ioas *ioas = iommufd_get_ioas(access->ictx, id); in iommufd_access_change_ioas_id() local
793 if (IS_ERR(ioas)) in iommufd_access_change_ioas_id()
794 return PTR_ERR(ioas); in iommufd_access_change_ioas_id()
795 rc = iommufd_access_change_ioas(access, ioas); in iommufd_access_change_ioas_id()
796 iommufd_put_object(access->ictx, &ioas->obj); in iommufd_access_change_ioas_id()
806 if (access->ioas) in iommufd_access_destroy_object()
873 if (WARN_ON(!access->ioas)) { in iommufd_access_detach()
887 if (WARN_ON(access->ioas)) { in iommufd_access_attach()
903 if (!access->ioas) { in iommufd_access_replace()
932 struct iommufd_ioas *ioas = in iommufd_access_notify_unmap() local
937 xa_lock(&ioas->iopt.access_list); in iommufd_access_notify_unmap()
938 xa_for_each(&ioas->iopt.access_list, index, access) { in iommufd_access_notify_unmap()
941 xa_unlock(&ioas->iopt.access_list); in iommufd_access_notify_unmap()
946 xa_lock(&ioas->iopt.access_list); in iommufd_access_notify_unmap()
948 xa_unlock(&ioas->iopt.access_list); in iommufd_access_notify_unmap()
1055 if (!access->ioas) { in iommufd_access_pin_pages()
1059 iopt = &access->ioas->iopt; in iommufd_access_pin_pages()
1138 if (!access->ioas) { in iommufd_access_rw()
1142 iopt = &access->ioas->iopt; in iommufd_access_rw()