Hi Logan,

> Subject: Re: [PATCH v3 1/5] PCI/P2PDMA: Don't enforce ACS check for device
> functions of Intel GPUs
> 
> 
> 
> On 2025-09-03 16:30, Vivek Kasireddy wrote:
> > diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c
> > index da5657a02007..9484991c4765 100644
> > --- a/drivers/pci/p2pdma.c
> > +++ b/drivers/pci/p2pdma.c
> > @@ -544,6 +544,18 @@ static unsigned long map_types_idx(struct pci_dev
> *client)
> >     return (pci_domain_nr(client->bus) << 16) | pci_dev_id(client);
> >  }
> >
> > +static bool pci_devfns_support_p2pdma(struct pci_dev *provider,
> > +                                 struct pci_dev *client)
> > +{
> > +   if (provider->vendor == PCI_VENDOR_ID_INTEL) {
> > +           if ((pci_is_vga(provider) && pci_is_vga(client)) ||
> > +               (pci_is_display(provider) && pci_is_display(client)))
> > +                   return pci_physfn(provider) == pci_physfn(client);
> > +   }
> 
> Do we not also need to check that the client has a vendor of
> PCI_VENDOR_ID_INTEL?
Yes, I missed that. Will add it in the next version.

> 
> > @@ -705,7 +717,9 @@ int pci_p2pdma_distance_many(struct pci_dev
> *provider, struct device **clients,
> >             return -1;
> >
> >     for (i = 0; i < num_clients; i++) {
> > -           pci_client = find_parent_pci_dev(clients[i]);
> > +           pci_client = dev_is_pf(clients[i]) ?
> > +                           pci_dev_get(to_pci_dev(clients[i])) :
> > +                           find_parent_pci_dev(clients[i]);
> 
> I don't understand this hunk. Why would this need special handling if
> dev_is_pf()?. find_parent_pci_dev() looks like it will do the same thing
> just look at the parents if it is not a PCI devices.
Right, this hunk is not needed. Its a leftover from an earlier experimental
version that I'll drop in the next iteration.

Thanks,
Vivek

> 
> Logan

Reply via email to