On Mon, May 27, 2024 at 12:05:10PM +0800, Lu Baolu wrote:
> @@ -206,20 +182,49 @@ void iommu_report_device_fault(struct device *dev, 
> struct iopf_fault *evt)
>       if (group == &abort_group)
>               goto err_abort;
>  
> -     group->domain = get_domain_for_iopf(dev, fault);
> -     if (!group->domain)
> +     if (fault->prm.flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID) {
> +             group->attach_handle = iommu_attach_handle_get(dev->iommu_group,
> +                                                            fault->prm.pasid,
> +                                                            0);
> +             if (IS_ERR(group->attach_handle)) {
> +                     if (!device_iommu_capable(dev, 
> IOMMU_CAP_USER_IOASID_TABLE))
> +                             goto err_abort;

I'm not excited about calling a function pointer on every fault. Let's
just add a constant flag to iommu_ops?

Jason

Reply via email to