Bug 139977 - Oops in via-rhine at shutdown
Oops in via-rhine at shutdown
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Dave Jones
Brian Brock
Depends On:
  Show dependency treegraph
Reported: 2004-11-18 18:40 EST by Alan Hamilton
Modified: 2015-01-04 17:12 EST (History)
2 users (show)

See Also:
Fixed In Version: 2.6.11-1.14_FC3
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2005-04-13 01:27:38 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Alan Hamilton 2004-11-18 18:40:35 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.5)
Gecko/20041110 Firefox/1.0

Description of problem:
At shutdown/restart I'm getting a kernel oops with the via-rhine
driver and the D-Link DFE-530TX card.  This happens on two different
machines, one with an i386 kernel and one with an x86_64 kernel.  For
the x86_64 machine I get:

Unable to handle kernel paging request at ffffff000001b021 RIP:

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1.  Shut down with DFE-530TX card installed.

Actual Results:  Kernel oops

Expected Results:  Normal shutdown

Additional info:

The problem seems to be in
static struct pci_driver rhine_driver = {
        .name           = DRV_NAME,
        .id_table       = rhine_pci_tbl,
        .probe          = rhine_init_one,
        .remove         = __devexit_p(rhine_remove_one),
#ifdef CONFIG_PM
        .suspend        = rhine_suspend,
        .resume         = rhine_resume,
#endif /* CONFIG_PM */
        .driver = {
                .shutdown = rhine_shutdown,

The last line causes the kernel to call rhine_shutdown when the system
is shutting down, and that's where it crashes.  If I rem out the
.shutdown line, it works.  That function seems to be concerned with
setting wake-on-lan.
Comment 1 Alan Hamilton 2005-04-13 01:27:38 EDT
The problem was caused by old non-WOL chipsets.  The shutdown routine tried to
set it up even if it wasn't supported.  The current patch checks first.

--- linux-2.6.11.orig/drivers/net/via-rhine.c	2005-03-02 01:38:32.000000000 -0600
+++ linux-2.6.11/drivers/net/via-rhine.c	2005-03-05 12:25:34.000000000 
@@ -1899,6 +1899,9 @@
 	struct rhine_private *rp = netdev_priv(dev);
 	void __iomem *ioaddr = rp->base;

+	if (!(rp->quirks & rqWOL))
+		return; /* Nothing to do for non-WOL adapters */

 	/* Make sure we use pattern 0, 1 and not 4, 5 */

Note You need to log in before you can comment on or make changes to this bug.