Re: [PATCH v2 1/7] PCI: Keep the ACS capability offset in device

From: Bjorn Helgaas
Date: Mon Jul 06 2020 - 19:18:52 EST


On Mon, Jul 06, 2020 at 03:16:42PM -0700, Rajat Jain wrote:
> On Mon, Jul 6, 2020 at 8:58 AM Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote:
> > On Mon, Jun 29, 2020 at 09:49:37PM -0700, Rajat Jain wrote:

> > > +static void pci_enable_acs(struct pci_dev *dev);
> >
> > I don't think we need this forward declaration, do we?
>
> We need it unless we move its definition further up in the file:
>
> drivers/pci/pci.c: In function âpci_restore_stateâ:
> drivers/pci/pci.c:1551:2: error: implicit declaration of function
> âpci_enable_acsâ; did you mean âpci_enable_atsâ?
> [-Werror=implicit-function-declaration]
> 1551 | pci_enable_acs(dev);
>
> Do you want me to move it up in the file so that we do not need the
> forward declaration?

Yes, please move it. Maybe a preliminary patch that moves it but
doesn't change anything else.

I think I thought you had renamed the function, in which case you
could tell from the patch itself. But I was mistaken!

> > > @@ -4653,7 +4653,7 @@ static int pci_quirk_intel_spt_pch_acs(struct pci_dev *dev, u16 acs_flags)
> > > if (!pci_quirk_intel_spt_pch_acs_match(dev))
> > > return -ENOTTY;
> > >
> > > - pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS);
> > > + pos = dev->acs_cap;
> >
> > I assume you verified that all these quirks are FINAL quirks, since
> > pci_init_capabilities() is called after HEADER quirks. I'll
> > double-check before applying this.
>
> None of these quirks are applied via DECLARE_PCI_FIXUP_*(). All these
> quirks are called (directly or indirectly) from either
> pci_enable_acs() or pci_acs_enabled(),
>
> EXCEPT
>
> pci_idt_bus_quirk(). That one is called from
> pci_bus_read_dev_vendor_id() which should be called only after the
> parent bridge has been added and setup correctly.
>
> So it looks all good to me.

Great, thanks for checking that.