Re: [PATCH v8 07/10] iommufd: Fault-capable hwpt attach/detach/replace

From: Zhangfei Gao
Date: Thu Oct 17 2024 - 08:35:51 EST


On Thu, 17 Oct 2024 at 20:05, Jason Gunthorpe <jgg@xxxxxxxx> wrote:
>
> On Thu, Oct 17, 2024 at 09:44:18AM +0800, Zhangfei Gao wrote:
> > On Wed, 16 Oct 2024 at 23:25, Jason Gunthorpe <jgg@xxxxxxxx> wrote:
> > >
> > > On Wed, Oct 16, 2024 at 09:58:36AM +0800, Zhangfei Gao wrote:
> > > > On Tue, 15 Oct 2024 at 20:54, Jason Gunthorpe <jgg@xxxxxxxx> wrote:
> > > > >
> > > > > On Tue, Oct 15, 2024 at 11:19:33AM +0800, Zhangfei Gao wrote:
> > > > > > > +static int iommufd_fault_iopf_enable(struct iommufd_device *idev)
> > > > > > > +{
> > > > > > > + struct device *dev = idev->dev;
> > > > > > > + int ret;
> > > > > > > +
> > > > > > > + /*
> > > > > > > + * Once we turn on PCI/PRI support for VF, the response failure code
> > > > > > > + * should not be forwarded to the hardware due to PRI being a shared
> > > > > > > + * resource between PF and VFs. There is no coordination for this
> > > > > > > + * shared capability. This waits for a vPRI reset to recover.
> > > > > > > + */
> > > > > > > + if (dev_is_pci(dev) && to_pci_dev(dev)->is_virtfn)
> > > > > > > + return -EINVAL;
> > > > > >
> > > > > > I am using the SMMUv3 stall feature, and need to forward this to hardware,
> > > > > > And now I am hacking to comment this check.
> > > > > > Any suggestions?
> > > > >
> > > > > Are you using PCI SRIOV and stall together?
> > > >
> > > > Only use smmuv3 stall feature.
Sorry, this is not correct

> > >
> > > Then isn't to_pci_dev(dev)->is_virtfn == false?
> > >
> > > That should only be true with SRIOV
> >
> > Do you mean
> > if (dev_is_pci(dev) && to_pci_dev(dev)->is_virtfn == false)
> > return -EINVAL;
> >
> > This is fine
>
> No, I mean on your test system you are not using SRIOV so all your PCI
> devices will have is_virtfn == false and the above if shouldn't be a
> problem. is_virtfn indicates the PCI device is a SRIOV VF.
>
> Your explanation for your problem doesn't really make sense, or there
> is something wrong someplace else to get a bogus is_virtfn..
>
> If you are doing SRIOV with stall, then that is understandable.

Yes, you are right
I am using SRIOV vf and stall feature, so is_virtfn == true

Our ACC devices are fake pci endpoint devices which supports stall,
And they also supports sriov

So I have to ignore the limitation.

Thanks