diff mbox series

PCI: quirks: add vendor ID for AR9462 card

Message ID 20190107213248.3034-1-james.prestwood@linux.intel.com (mailing list archive)
State Accepted, archived
Commit 6afb7e26978da5e86e57e540fdce65c8b04f398a
Headers show
Series PCI: quirks: add vendor ID for AR9462 card | expand

Commit Message

James Prestwood Jan. 7, 2019, 9:32 p.m. UTC
This card has similar issues with bus reset as the others present in
this list.

Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Bjorn Helgaas Jan. 7, 2019, 10:08 p.m. UTC | #1
[+cc Alex, Bharat, LKML]

Hi James,

Thanks for finding this issue and for the patch.

Is there any chance you have a PCIe analyzer and could investigate
what's going on at that level?  The bus reset should be fairly similar
to what happens on a cold boot, and obviously *that* works, so I
wonder if we can figure out what the difference here is.

If this is actually broken somehow in the hardware, can you dig up a
hardware erratum and include a URL here?

If there's any chance we could fix or work around this in the kernel,
I'd rather do that than extend this quirk to more devices.

FWIW, here's a similar report, which hasn't been resolved yet:
https://lore.kernel.org/linux-pci/20181127083454.26560-1-Bharat.Bhushan@nxp.com

On Mon, Jan 07, 2019 at 01:32:48PM -0800, James Prestwood wrote:
> This card has similar issues with bus reset as the others present in
> this list.
> 
> Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>
> ---
>  drivers/pci/quirks.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index ef7143a274e0..d9d4a95b0309 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3379,6 +3379,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033, quirk_no_bus_reset);
> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034, quirk_no_bus_reset);
>  
>  /*
>   * Root port on some Cavium CN8xxx chips do not successfully complete a bus
> -- 
> 2.17.1
>
James Prestwood Jan. 7, 2019, 11:02 p.m. UTC | #2
On Mon, 2019-01-07 at 16:08 -0600, Bjorn Helgaas wrote:
> [+cc Alex, Bharat, LKML]
> 
> Hi James,
> 
> Thanks for finding this issue and for the patch.
> 
> Is there any chance you have a PCIe analyzer and could investigate
> what's going on at that level?  The bus reset should be fairly
> similar
> to what happens on a cold boot, and obviously *that* works, so I
> wonder if we can figure out what the difference here is.

I don't have a PCIe analyzer (unless thats just a piece of software I
could download). Maybe I should have included a cover letter about what
exactly is happening in my testing:

I am using PCI passthough with various wireless hardware, all of which
worked fine except this Ath9k card. If I tried to pass through this
card my host machine would completely lock up/freeze when starting the
VM, and I would have to hard reboot. I asked on the linux-wireless
mailing list (since it seemed to be specific to the Ath9k card) and it
was suggested to add that line to quirks.c, which did resolve the
issue.

Beyond that, its really all I know. I am not at all knowledgeable about
how PCI actually works :) (or really what this patch is even doing).
Since it was so simple and fixed my issue I figured I should try and
upstream it.

I wish I could be of more help hardware wise. If there is anything
software wise I could run to get more info I can do that.

Thanks,
James
> 
> If this is actually broken somehow in the hardware, can you dig up a
> hardware erratum and include a URL here?
> 
> If there's any chance we could fix or work around this in the kernel,
> I'd rather do that than extend this quirk to more devices.
> 
> FWIW, here's a similar report, which hasn't been resolved yet:
> 
https://lore.kernel.org/linux-pci/20181127083454.26560-1-Bharat.Bhushan@nxp.com
> 
> On Mon, Jan 07, 2019 at 01:32:48PM -0800, James Prestwood wrote:
> > This card has similar issues with bus reset as the others present
> > in
> > this list.
> > 
> > Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>
> > ---
> >  drivers/pci/quirks.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > index ef7143a274e0..d9d4a95b0309 100644
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
> > @@ -3379,6 +3379,7 @@
> > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030,
> > quirk_no_bus_reset);
> >  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032,
> > quirk_no_bus_reset);
> >  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c,
> > quirk_no_bus_reset);
> >  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033,
> > quirk_no_bus_reset);
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034,
> > quirk_no_bus_reset);
> >  
> >  /*
> >   * Root port on some Cavium CN8xxx chips do not successfully
> > complete a bus
> > -- 
> > 2.17.1
> >
Bjorn Helgaas April 19, 2019, 1:45 p.m. UTC | #3
On Mon, Jan 07, 2019 at 01:32:48PM -0800, James Prestwood wrote:
> This card has similar issues with bus reset as the others present in
> this list.
> 
> Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>

Alex, I'm inclined to apply this unless you object because it's
basically one more of something we already do.  I wish we didn't have
this quirk at all, but I don't know what else to do.

Maybe there's someplace we could add a printk so dmesg contains a clue
that we can't reset the device?  I assume this quirk means we can't
reset the device when we otherwise would, so maybe that means this
device will leak state from one VM to another?  That sounds like
something we would want to surface somehow if we don't already.

Bjorn

> ---
>  drivers/pci/quirks.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index ef7143a274e0..d9d4a95b0309 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3379,6 +3379,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033, quirk_no_bus_reset);
> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034, quirk_no_bus_reset);
>  
>  /*
>   * Root port on some Cavium CN8xxx chips do not successfully complete a bus
> -- 
> 2.17.1
>
Bjorn Helgaas April 23, 2019, 8:38 p.m. UTC | #4
On Mon, Jan 07, 2019 at 01:32:48PM -0800, James Prestwood wrote:
> This card has similar issues with bus reset as the others present in
> this list.
> 
> Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>

Applied to pci/virtualization for v5.2, thanks!

I added a stable tag and a Fixes tag to connect it with the other similar
quirks.

> ---
>  drivers/pci/quirks.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index ef7143a274e0..d9d4a95b0309 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3379,6 +3379,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c, quirk_no_bus_reset);
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033, quirk_no_bus_reset);
> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034, quirk_no_bus_reset);
>  
>  /*
>   * Root port on some Cavium CN8xxx chips do not successfully complete a bus
> -- 
> 2.17.1
>
diff mbox series

Patch

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index ef7143a274e0..d9d4a95b0309 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3379,6 +3379,7 @@  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030, quirk_no_bus_reset);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c, quirk_no_bus_reset);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033, quirk_no_bus_reset);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034, quirk_no_bus_reset);
 
 /*
  * Root port on some Cavium CN8xxx chips do not successfully complete a bus