2019-07-12 13:11:06

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH 3/8] PCI/VPD: Add VPD release quirk for Amazon Annapurna Labs host bridge

On Thu, Jul 11, 2019 at 05:55:56PM +0300, Jonathan Chocron wrote:
> The Amazon Annapurna Labs pcie host bridge exposes the VPD capability,
> but there is no actual support for it.

s/pcie/PCIe/
s/host bridge/Root Port/

> The reason for not using the already existing quirk_blacklist_vpd()
> is that, although this fails pci_vpd_read/write, the 'vpd' sysfs
> entry still exists. When running lspci -vv, for example, this
> results in the following error:
>
> pcilib: sysfs_read_vpd: read failed: Input/output error
>
> This quirk removes the sysfs entry, which avoids the error print.
>
> Signed-off-by: Jonathan Chocron <[email protected]>
> ---
> drivers/pci/vpd.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/pci/vpd.c b/drivers/pci/vpd.c
> index 4963c2e2bd4c..b594b2895ffe 100644
> --- a/drivers/pci/vpd.c
> +++ b/drivers/pci/vpd.c
> @@ -644,4 +644,16 @@ static void quirk_chelsio_extend_vpd(struct pci_dev *dev)
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
> quirk_chelsio_extend_vpd);
>
> +static void quirk_al_vpd_release(struct pci_dev *dev)
> +{
> + if (dev->vpd) {
> + pci_vpd_release(dev);
> + dev->vpd = NULL;
> + pci_warn(dev, FW_BUG "Annapurna Labs pcie quirk - Releasing VPD capability (No support for VPD read/write transactions)\n");

The "Annapurna Labs pcie quirk" text is superfluous.

> + }
> +}
> +
> +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031,
> + PCI_CLASS_BRIDGE_PCI, 8, quirk_al_vpd_release);

Why DECLARE_PCI_FIXUP_CLASS_FINAL()? See comments on the MSI-X quirk
patch.

> +
> #endif
> --
> 2.17.1
>
>


2019-07-14 15:09:32

by Chocron, Jonathan

[permalink] [raw]
Subject: Re: [PATCH 3/8] PCI/VPD: Add VPD release quirk for Amazon Annapurna Labs host bridge

On Fri, 2019-07-12 at 08:10 -0500, Bjorn Helgaas wrote:
> On Thu, Jul 11, 2019 at 05:55:56PM +0300, Jonathan Chocron wrote:
> > The Amazon Annapurna Labs pcie host bridge exposes the VPD
> > capability,
> > but there is no actual support for it.
>
> s/pcie/PCIe/
> s/host bridge/Root Port/
Ack.

>
> > The reason for not using the already existing quirk_blacklist_vpd()
> > is that, although this fails pci_vpd_read/write, the 'vpd' sysfs
> > entry still exists. When running lspci -vv, for example, this
> > results in the following error:
> >
> > pcilib: sysfs_read_vpd: read failed: Input/output error
> >
> > This quirk removes the sysfs entry, which avoids the error print.
> >
> > Signed-off-by: Jonathan Chocron <[email protected]>
> > ---
> > drivers/pci/vpd.c | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/drivers/pci/vpd.c b/drivers/pci/vpd.c
> > index 4963c2e2bd4c..b594b2895ffe 100644
> > --- a/drivers/pci/vpd.c
> > +++ b/drivers/pci/vpd.c
> > @@ -644,4 +644,16 @@ static void quirk_chelsio_extend_vpd(struct
> > pci_dev *dev)
> > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
> > quirk_chelsio_extend_vpd);
> >
> > +static void quirk_al_vpd_release(struct pci_dev *dev)
> > +{
> > + if (dev->vpd) {
> > + pci_vpd_release(dev);
> > + dev->vpd = NULL;
> > + pci_warn(dev, FW_BUG "Annapurna Labs pcie quirk -
> > Releasing VPD capability (No support for VPD read/write
> > transactions)\n");
>
> The "Annapurna Labs pcie quirk" text is superfluous.
>
Ack.

> > + }
> > +}
> > +
> > +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS,
> > 0x0031,
> > + PCI_CLASS_BRIDGE_PCI, 8,
> > quirk_al_vpd_release);
>
> Why DECLARE_PCI_FIXUP_CLASS_FINAL()? See comments on the MSI-X quirk
> patch.
>
Responded in the MSI-x quirk patch, but in short, indeed the 0x0031
dev-id is re-used for a non-host bridge device :(

> > +
> > #endif
> > --
> > 2.17.1
> >
> >