freeipmi-devel
[Top][All Lists]
Advanced

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

[Freeipmi-devel] Re: BMC/ARP investigation update


From: Anand Babu
Subject: [Freeipmi-devel] Re: BMC/ARP investigation update
Date: Thu, 05 Feb 2004 02:27:04 -0800
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)

Fix is very simple. 

FILE: src/e1000_main.c
----------------------
static int
e1000_notify_reboot(struct notifier_block *nb, unsigned long event, void *p)
{
        struct pci_dev *pdev = NULL;

        switch(event) {
        case SYS_DOWN:
        case SYS_HALT:
        case SYS_POWER_OFF:
                pci_for_each_dev(pdev) {
                        if(pci_dev_driver(pdev) == &e1000_driver)
=>                              e1000_suspend(pdev, 3);
                                ^^^^^^^ CAUSE OF BUG ^^^^^^
                }
        }
        return NOTIFY_DONE;
}


We want the NIC to be in usable state even after kernel halts. Because
BMC shares the NIC. You can either comment out e1000_suspend or
replace it with 
  pci_unregister_driver(&e1000_driver);
  or
  directly call e1000_remove(struct pci_dev *pdev);


Call trace:
pci_unregister_driver 
   -> e1000_remove
        -> e1000_smbus_arp_enable(adapter, TRUE); 
        -> e1000_phy_hw_reset(&adapter->hw);      
              /* Returns the PHY to the power-on reset state */
 
-ab

,----[ Albert Chu <address@hidden> ]
| I just did the following experiment:
| 
| - Forced e1000 to *not* load by turning it off in /etc/modules.conf
| - Boot stock RHEL3 kernel
| 
| and the halting problem was gone.  So it looks like the e1000 driver
| is the cause, although I'm still not 100% if it is the root cause.
| I'll begin looking at redhat's e1000 driver, to see if there is
| anything fishy about it ... Have you guys gotten the Intel driver to
| work??
`----


-- 
Anand Babu
Free as in Freedom <www.gnu.org>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]