linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter
@ 2020-11-05 18:06 Andy Shevchenko
  2020-11-05 18:06 ` [PATCH v1 2/2] PCI: Use predefined Pericom vendor ID Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Andy Shevchenko @ 2020-11-05 18:06 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, johan, linux-usb
  Cc: Andy Shevchenko, alberto.vignani

Pericom PCIe-USB adapter ambiguously advertises MSI, but documentation says
"The MSI Function is not implemented on this device." in the chapters 7.3.27,
7.3.29-7.3.31.

Fixes: 306c54d0edb6 ("usb: hcd: Try MSI interrupts on PCI devices")
Datasheet: https://www.diodes.com/assets/Datasheets/PI7C9X440SL.pdf
Reported-by: alberto.vignani@fastwebnet.it
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/pci/quirks.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index f70692ac79c5..7df7ae50618c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5567,17 +5567,25 @@ static void pci_fixup_no_d0_pme(struct pci_dev *dev)
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x2142, pci_fixup_no_d0_pme);
 
 /*
- * Device [12d8:0x400e] and [12d8:0x400f]
+ * Device 12d8:0x400e [OHCI] and 12d8:0x400f [EHCI]
+ *
  * These devices advertise PME# support in all power states but don't
  * reliably assert it.
+ *
+ * These devices ambiguously advertise MSI, but documentation (PI7C9X440SL.pdf)
+ * says "The MSI Function is not implemented on this device." in the chapters
+ * 7.3.27, 7.3.29-7.3.31.
  */
-static void pci_fixup_no_pme(struct pci_dev *dev)
+static void pci_fixup_no_msi_no_pme(struct pci_dev *dev)
 {
+	pci_info(dev, "The MSI Function is not implemented on this device, disabling it\n");
+	dev->no_msi = 1;
+
 	pci_info(dev, "PME# is unreliable, disabling it\n");
 	dev->pme_support = 0;
 }
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_pme);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_pme);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_msi_no_pme);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_msi_no_pme);
 
 static void apex_pci_fixup_class(struct pci_dev *pdev)
 {
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v1 2/2] PCI: Use predefined Pericom vendor ID
  2020-11-05 18:06 [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Andy Shevchenko
@ 2020-11-05 18:06 ` Andy Shevchenko
  2020-11-05 20:42 ` [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Ben Dooks
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2020-11-05 18:06 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, johan, linux-usb; +Cc: Andy Shevchenko

Pericom has predefined vendor ID, use it instead of hard coded value.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/pci/quirks.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 7df7ae50618c..6fd5ce08d027 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2356,9 +2356,9 @@ static void quirk_enable_clear_retrain_link(struct pci_dev *dev)
 	dev->clear_retrain_link = 1;
 	pci_info(dev, "Enable PCIe Retrain Link quirk\n");
 }
-DECLARE_PCI_FIXUP_HEADER(0x12d8, 0xe110, quirk_enable_clear_retrain_link);
-DECLARE_PCI_FIXUP_HEADER(0x12d8, 0xe111, quirk_enable_clear_retrain_link);
-DECLARE_PCI_FIXUP_HEADER(0x12d8, 0xe130, quirk_enable_clear_retrain_link);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PERICOM, 0xe110, quirk_enable_clear_retrain_link);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PERICOM, 0xe111, quirk_enable_clear_retrain_link);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PERICOM, 0xe130, quirk_enable_clear_retrain_link);
 
 static void fixup_rev1_53c810(struct pci_dev *dev)
 {
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter
  2020-11-05 18:06 [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Andy Shevchenko
  2020-11-05 18:06 ` [PATCH v1 2/2] PCI: Use predefined Pericom vendor ID Andy Shevchenko
@ 2020-11-05 20:42 ` Ben Dooks
  2020-11-06  9:57   ` Andy Shevchenko
  2020-11-05 20:46 ` David Woodhouse
  2020-11-06 10:11 ` Andy Shevchenko
  3 siblings, 1 reply; 7+ messages in thread
From: Ben Dooks @ 2020-11-05 20:42 UTC (permalink / raw)
  To: Andy Shevchenko, Bjorn Helgaas, linux-pci, johan, linux-usb
  Cc: alberto.vignani

On 05/11/2020 18:06, Andy Shevchenko wrote:
> Pericom PCIe-USB adapter ambiguously advertises MSI, but documentation says
> "The MSI Function is not implemented on this device." in the chapters 7.3.27,
> 7.3.29-7.3.31.
> 
> Fixes: 306c54d0edb6 ("usb: hcd: Try MSI interrupts on PCI devices")
> Datasheet: https://www.diodes.com/assets/Datasheets/PI7C9X440SL.pdf
> Reported-by: alberto.vignani@fastwebnet.it
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>   drivers/pci/quirks.c | 16 ++++++++++++----
>   1 file changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index f70692ac79c5..7df7ae50618c 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -5567,17 +5567,25 @@ static void pci_fixup_no_d0_pme(struct pci_dev *dev)
>   DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x2142, pci_fixup_no_d0_pme);
>   
>   /*
> - * Device [12d8:0x400e] and [12d8:0x400f]
> + * Device 12d8:0x400e [OHCI] and 12d8:0x400f [EHCI]
> + *
>    * These devices advertise PME# support in all power states but don't
>    * reliably assert it.
> + *
> + * These devices ambiguously advertise MSI, but documentation (PI7C9X440SL.pdf)
> + * says "The MSI Function is not implemented on this device." in the chapters
> + * 7.3.27, 7.3.29-7.3.31.
>    */
> -static void pci_fixup_no_pme(struct pci_dev *dev)
> +static void pci_fixup_no_msi_no_pme(struct pci_dev *dev)
>   {
> +	pci_info(dev, "The MSI Function is not implemented on this device, disabling it\n");
> +	dev->no_msi = 1;
> +
>   	pci_info(dev, "PME# is unreliable, disabling it\n");
>   	dev->pme_support = 0;
>   }


idea: one pci_info() print of:

pci_info(dev, "PME# is unreliable, MSI not implemented, disabling both\n");

> -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_pme);
> -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_pme);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_msi_no_pme);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_msi_no_pme);
>   
>   static void apex_pci_fixup_class(struct pci_dev *pdev)
>   {
> 


-- 
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius

https://www.codethink.co.uk/privacy.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter
  2020-11-05 18:06 [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Andy Shevchenko
  2020-11-05 18:06 ` [PATCH v1 2/2] PCI: Use predefined Pericom vendor ID Andy Shevchenko
  2020-11-05 20:42 ` [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Ben Dooks
@ 2020-11-05 20:46 ` David Woodhouse
  2020-11-06  9:56   ` Andy Shevchenko
  2020-11-06 10:11 ` Andy Shevchenko
  3 siblings, 1 reply; 7+ messages in thread
From: David Woodhouse @ 2020-11-05 20:46 UTC (permalink / raw)
  To: Andy Shevchenko, Bjorn Helgaas, linux-pci, johan, linux-usb
  Cc: alberto.vignani

[-- Attachment #1: Type: text/plain, Size: 419 bytes --]

On Thu, 2020-11-05 at 20:06 +0200, Andy Shevchenko wrote:
> Pericom PCIe-USB adapter ambiguously advertises MSI, but documentation says
> "The MSI Function is not implemented on this device." in the chapters 7.3.27,
> 7.3.29-7.3.31.

I don't think it can be ambiguous, surely? Either it does advertise it,
or it doesn't. It doesn't just give you subtle hints that it *might*
support MSI, but it isn't sure...


[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5174 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter
  2020-11-05 20:46 ` David Woodhouse
@ 2020-11-06  9:56   ` Andy Shevchenko
  0 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2020-11-06  9:56 UTC (permalink / raw)
  To: David Woodhouse
  Cc: Bjorn Helgaas, linux-pci, johan, linux-usb, alberto.vignani

On Thu, Nov 05, 2020 at 08:46:03PM +0000, David Woodhouse wrote:
> On Thu, 2020-11-05 at 20:06 +0200, Andy Shevchenko wrote:
> > Pericom PCIe-USB adapter ambiguously advertises MSI, but documentation says
> > "The MSI Function is not implemented on this device." in the chapters 7.3.27,
> > 7.3.29-7.3.31.
> 
> I don't think it can be ambiguous, surely? Either it does advertise it,
> or it doesn't. It doesn't just give you subtle hints that it *might*
> support MSI, but it isn't sure...

I will drop the word from commit message, thanks!


-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter
  2020-11-05 20:42 ` [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Ben Dooks
@ 2020-11-06  9:57   ` Andy Shevchenko
  0 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2020-11-06  9:57 UTC (permalink / raw)
  To: Ben Dooks; +Cc: Bjorn Helgaas, linux-pci, johan, linux-usb, alberto.vignani

On Thu, Nov 05, 2020 at 08:42:03PM +0000, Ben Dooks wrote:
> On 05/11/2020 18:06, Andy Shevchenko wrote:
> > Pericom PCIe-USB adapter ambiguously advertises MSI, but documentation says
> > "The MSI Function is not implemented on this device." in the chapters 7.3.27,
> > 7.3.29-7.3.31.

Thanks for review.

> > +	pci_info(dev, "The MSI Function is not implemented on this device, disabling it\n");
> > +	dev->no_msi = 1;
> > +
> >   	pci_info(dev, "PME# is unreliable, disabling it\n");
> >   	dev->pme_support = 0;
> 
> idea: one pci_info() print of:
> 
> pci_info(dev, "PME# is unreliable, MSI not implemented, disabling both\n");

I am not in favour of it. Perhaps I can do #ifdef CONFIG_PCI_MSI for those two.

> > -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_pme);
> > -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_pme);
> > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_msi_no_pme);
> > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_msi_no_pme);

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter
  2020-11-05 18:06 [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Andy Shevchenko
                   ` (2 preceding siblings ...)
  2020-11-05 20:46 ` David Woodhouse
@ 2020-11-06 10:11 ` Andy Shevchenko
  3 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2020-11-06 10:11 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, johan, linux-usb
  Cc: alberto.vignani, Ben Dooks, David Woodhouse

On Thu, Nov 05, 2020 at 08:06:43PM +0200, Andy Shevchenko wrote:
> Pericom PCIe-USB adapter ambiguously advertises MSI, but documentation says
> "The MSI Function is not implemented on this device." in the chapters 7.3.27,
> 7.3.29-7.3.31.

I have sent v2 [1].

[1]: https://lore.kernel.org/linux-usb/20201106100526.17726-1-andriy.shevchenko@linux.intel.com/

> Fixes: 306c54d0edb6 ("usb: hcd: Try MSI interrupts on PCI devices")
> Datasheet: https://www.diodes.com/assets/Datasheets/PI7C9X440SL.pdf
> Reported-by: alberto.vignani@fastwebnet.it
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-11-06 10:10 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-05 18:06 [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Andy Shevchenko
2020-11-05 18:06 ` [PATCH v1 2/2] PCI: Use predefined Pericom vendor ID Andy Shevchenko
2020-11-05 20:42 ` [PATCH v1 1/2] PCI: Disable MSI for Pericom PCIe-USB adapter Ben Dooks
2020-11-06  9:57   ` Andy Shevchenko
2020-11-05 20:46 ` David Woodhouse
2020-11-06  9:56   ` Andy Shevchenko
2020-11-06 10:11 ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).