On Fri, Nov 17, 2023 at 05:18:16AM -0800, Yi Liu wrote: > +static int intel_nested_cache_invalidate_user(struct iommu_domain *domain, > + struct iommu_user_data_array *array, > + u32 *cerror_idx) > +{ > + struct dmar_domain *dmar_domain = to_dmar_domain(domain); > + struct iommu_hwpt_vtd_s1_invalidate inv_info; > + u32 index; > + int ret; > + > + /* REVISIT: > + * VT-d has defined ITE, ICE, IQE for invalidation failure per hardware, > + * but no error code yet, so just set the error code to be 0. > + */ > + *cerror_idx = 0; > + > + for (index = 0; index < array->entry_num; index++) { > + ret = iommu_copy_struct_from_user_array(&inv_info, array, > + IOMMU_HWPT_DATA_VTD_S1, > + index, __reserved); > + if (ret) { > + pr_err_ratelimited("Failed to fetch invalidation request\n"); > + break; No error prints on ioctls! > + if (inv_info.addr == 0 && inv_info.npages == -1) > + intel_flush_iotlb_all(domain); -1 is clearer written as U64_MAX - same remark for the comment documenting it. Jason