linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79
@ 2019-03-04  7:00 Kai-Heng Feng
  2019-03-04 19:32 ` David Miller
  0 siblings, 1 reply; 2+ messages in thread
From: Kai-Heng Feng @ 2019-03-04  7:00 UTC (permalink / raw)
  To: mlindner, stephen, davem; +Cc: netdev, linux-kernel, Kai-Heng Feng

Some sky2 chips fire IRQ after S3, before the driver is fully resumed:
[ 686.804877] do_IRQ: 1.37 No irq handler for vector

This is likely a platform bug that device isn't fully quiesced during
S3. Use MSI-X, maskable MSI or INTx can prevent this issue from
happening.

Since MSI-X and maskable MSI are not supported by this device, fallback
to use INTx on affected platforms.

BugLink: https://bugs.launchpad.net/bugs/1807259
BugLink: https://bugs.launchpad.net/bugs/1809843
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/net/ethernet/marvell/sky2.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 57727fe1501e..8b3495ee2b6e 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -46,6 +46,7 @@
 #include <linux/mii.h>
 #include <linux/of_device.h>
 #include <linux/of_net.h>
+#include <linux/dmi.h>
 
 #include <asm/irq.h>
 
@@ -93,7 +94,7 @@ static int copybreak __read_mostly = 128;
 module_param(copybreak, int, 0);
 MODULE_PARM_DESC(copybreak, "Receive copy threshold");
 
-static int disable_msi = 0;
+static int disable_msi = -1;
 module_param(disable_msi, int, 0);
 MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
 
@@ -4917,6 +4918,24 @@ static const char *sky2_name(u8 chipid, char *buf, int sz)
 	return buf;
 }
 
+static const struct dmi_system_id msi_blacklist[] = {
+	{
+		.ident = "Dell Inspiron 1545",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1545"),
+		},
+	},
+	{
+		.ident = "Gateway P-79",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Gateway"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "P-79"),
+		},
+	},
+	{}
+};
+
 static int sky2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	struct net_device *dev, *dev1;
@@ -5028,6 +5047,9 @@ static int sky2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 		goto err_out_free_pci;
 	}
 
+	if (disable_msi == -1)
+		disable_msi = !!dmi_check_system(msi_blacklist);
+
 	if (!disable_msi && pci_enable_msi(pdev) == 0) {
 		err = sky2_test_msi(hw);
 		if (err) {
-- 
2.17.1


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

* Re: [PATCH] sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79
  2019-03-04  7:00 [PATCH] sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 Kai-Heng Feng
@ 2019-03-04 19:32 ` David Miller
  0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2019-03-04 19:32 UTC (permalink / raw)
  To: kai.heng.feng; +Cc: mlindner, stephen, netdev, linux-kernel

From: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date: Mon,  4 Mar 2019 15:00:03 +0800

> Some sky2 chips fire IRQ after S3, before the driver is fully resumed:
> [ 686.804877] do_IRQ: 1.37 No irq handler for vector
> 
> This is likely a platform bug that device isn't fully quiesced during
> S3. Use MSI-X, maskable MSI or INTx can prevent this issue from
> happening.
> 
> Since MSI-X and maskable MSI are not supported by this device, fallback
> to use INTx on affected platforms.
> 
> BugLink: https://bugs.launchpad.net/bugs/1807259
> BugLink: https://bugs.launchpad.net/bugs/1809843
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

Applied and queued up for -stable, thanks.

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

end of thread, other threads:[~2019-03-04 19:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-04  7:00 [PATCH] sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 Kai-Heng Feng
2019-03-04 19:32 ` David Miller

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).