Thread (33 messages) 33 messages, 7 authors, 2009-03-31

Re: [PATCH] igb: fix kexec with igb

From: Rafael J. Wysocki <hidden>
Date: 2009-03-08 21:40:31
Also in: lkml

On Sunday 08 March 2009, Yinghai Lu wrote:
Rafael J. Wysocki wrote:
quoted
On Sunday 08 March 2009, Yinghai Lu wrote:
quoted
Rafael J. Wysocki wrote:
quoted
On Saturday 07 March 2009, Yinghai Lu wrote:
quoted
On Fri, Mar 6, 2009 at 11:18 PM, Jesse Brandeburg
[off-list ref] wrote:
quoted
On Fri, Mar 6, 2009 at 8:33 PM, Yinghai Lu [off-list ref] wrote:
quoted
Impact: could probe igb

Found one system with 82575EB, in the kernel that is kexeced, probe igb
failed with -2.

it looks like the same behavior happened on forcedeth.

try to check system_state to make sure if put it on D3

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 drivers/net/igb/igb_main.c |   19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
I see the point of the patch, but I know for a fact that ixgbe when
enabled for MSI-X also doesn't work with kexec.

so my questions are:
are you going to change every driver?
i tend to only change driver that i have related HW.
quoted
why can't this be fixed in core kernel code instead?
will check it.
quoted
Shouldn't pci_enable_device take it out of D3?
Or maybe it should be taken out of D3 immediately if someone tries to
ioremap any of the BARx registers?
looks like second kernel can not detect the state any more.
In fact pci_enable_device() calls pci_set_power_state(dev, PCI_D0) as the first
thing.  The question is why it doesn't work as expected.
not sure... please check the version for forcedeth that you made.

commit 3cb5599a84c557c0dd9a19feb63a3788268cf249
Author: Rafael J. Wysocki [off-list ref]
Date:   Fri Sep 5 14:00:19 2008 -0700

    forcedeth: fix kexec regression
    
    Fix regression tracked as http://bugzilla.kernel.org/show_bug.cgi?id=11361
    and caused by commit f735a2a1a4f2a0f5cd823ce323e82675990469e2 ("[netdrvr]
    forcedeth: setup wake-on-lan before shutting down") that makes network
    adapters integrated into the NVidia MCP55 chipsets fail to work in kexeced
    kernels.  The problem appears to be that if the adapter is put into D3_hot
    during ->shutdown(), it cannot be brought back into D0 after kexec (ref.
    http://marc.info/?l=linux-kernel&m=121900062814967&w=4).  Therefore, only
    put forcedeth into D3 during ->shutdown() if the system is to be powered
    off.
Thanks, I remember now.

This appears to be quirky hardware, doesn't it?
all my systems with ck804 and mcp55 need this trick.

for igb: one system need this trick, and other doesn't need this trick.
could BIOS/ACPI difference or the nic option rom difference.

but for kexec path, we really don't need put pci devices to D3.
Agreed, but pci_set_power_state() may be called for too many different reasons
to be a suitable place for a fix IMO.

Thanks,
Rafael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help