Re: MSI problem with ethernet on Asus P5GC mobo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 26 Dec 2009 11:13:48 +0100
klaas de waal <klaas.de.waal@xxxxxxxxx> wrote:

> Hi,
> 
> This is a bug report as requested in
> linux-2.6.32.2/Documentatoin/PCI/MSI-HOWTO.txt
> 
> Problem: Ethernet is not reliable: gives timeouts like this (in
> /var/log/messages):
> Dec 26 00:37:55 zolder kernel: NETDEV WATCHDOG: eth0 (r8169): transmit
> queue 0 timed out
> 
> The ethernet controller is the only device on the motherboard that
> uses MSI interrupts:
> 
> $ cat /proc/interrupts
> ...
> 26:         89    9245334   PCI-MSI-edge      eth0
> ...
> 
> Adding "pci=nomsi" does change this to:
> ...
>  16:         88       4114   IO-APIC-fasteoi   nouveau, eth0
> ...
> and this solves the problem.
> 
> 
> Result of "lspci -v":
> 

Hm we should probably update the howto to include the PCI IDs and DMI
info.

Something like this patch should help if you use dmidecode to figure
out which string to pass to "dmi_name_in_vendors" (there are alternate
DMI functions available too, if you can find one to match your P5GC
board).

Can you fix it up for your board and give it a try?

Thanks,
-- 
Jesse Barnes, Intel Open Source Technology Center

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index c746943..922f0a6 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2203,6 +2203,22 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA,
 			PCI_DEVICE_ID_NVIDIA_NVENET_15,
 			nvenet_msi_disable);
 
+/*
+ * On Asus P5GC, the Realtek NIC driver fails if MSI is enabled.  This could
+ * be a chipset problem or a NIC hw problem.  Just disable the NIC for now.
+ */
+static void __devinit asus_realtek_msi_disable(struct pci_dev *dev)
+{
+	if (dmi_name_in_vendors("ASUS P5GC")) {
+		dev_info(&dev->dev,
+			 "Disabling MSI for Realtek NIC on P5GC\n");
+		dev->no_msi = 1;
+	}
+}
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_REALTEK,
+			PCI_DEVICE_ID_REALTEK_8139,
+			asus_realtek_msi_disable);
+
 static int __devinit ht_check_msi_mapping(struct pci_dev *dev)
 {
 	int pos, ttl = 48;

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux