Bug 11358
Summary: | net: forcedeth call restore mac addr in nv_shutdown path | ||
---|---|---|---|
Product: | Drivers | Reporter: | Rafael J. Wysocki (rjw) |
Component: | Network | Assignee: | Jeff Garzik (jgarzik) |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | ||
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | commit f735a2a1a4f2a0f5cd823ce323e82675990469e2 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 7216, 11167 |
Description
Rafael J. Wysocki
2008-08-17 05:43:19 UTC
Caused by: commit f735a2a1a4f2a0f5cd823ce323e82675990469e2 Author: Tobias Diedrich <ranma+kernel@tdiedrich.de> Date: Sun May 18 15:02:37 2008 +0200 [netdrvr] forcedeth: setup wake-on-lan before shutting down Signed-off-by: Tobias Diedrich <ranma+kernel@tdiedrich.de> Signed-off-by: Jeff Garzik <jeff@garzik.org> On Sunday, 31 of August 2008, Tobias Diedrich wrote:
> Rafael J. Wysocki wrote:
> > Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=11358
> > Subject : net: forcedeth call restore mac addr in nv_shutdown
> path
> > Submitter : Yinghai Lu <yhlu.kernel@gmail.com>
> > Date : 2008-08-17 3:30 (14 days old)
> > References : http://marc.info/?l=linux-kernel&m=121894389018584&w=4
> > Handled-By : Yinghai Lu <yhlu.kernel@gmail.com>
> > Patch :
> http://marc.info/?l=linux-kernel&m=121894389018584&w=4
>
> I got around to try kexec and found that on 2.6.27-rc5, without
> Yinghai Lu's patch, when I kexec while forecdeth is loaded I get the
> following when the new kernel tries to load the module (on my Asus
> M2N-SLI Deluxe):
>
> |Aug 31 10:10:42 melchior kernel: [ 10.578053] forcedeth: Reverse
> Engineered nForce ethernet driver. Version 0.61.
> |Aug 31 10:10:42 melchior kernel: [ 10.578256] forcedeth 0000:00:08.0: BAR
> 0: error updating (0xfe02a000 != 0x000000)
> |Aug 31 10:10:42 melchior kernel: [ 10.580901] forcedeth 0000:00:08.0:
> enabling device (0000 -> 0003)
> |Aug 31 10:10:42 melchior kernel: [ 10.581405] ACPI: PCI Interrupt Link
> [APCH] enabled at IRQ 22
> |Aug 31 10:10:42 melchior kernel: [ 10.581509] forcedeth 0000:00:08.0: PCI
> INT A -> Link[APCH] -> GSI 22 (level, low) -> IRQ 22
> |Aug 31 10:10:42 melchior kernel: [ 10.581699] forcedeth 0000:00:08.0:
> setting latency timer to 64
> |Aug 31 10:10:42 melchior kernel: [ 10.581748] forcedeth 0000:00:08.0:
> Invalid Mac address detected: ff:ff:ff:ff:ff:ff
> |Aug 31 10:10:42 melchior kernel: [ 10.581936] forcedeth 0000:00:08.0:
> Please complain to your hardware vendor. Switching to a random MAC.
> |Aug 31 10:10:42 melchior kernel: [ 15.981960] forcedeth 0000:00:08.0:
> open: Could not find a valid PHY.
> |Aug 31 10:10:42 melchior kernel: [ 15.982131] forcedeth 0000:00:08.0: PCI
> INT A disabled
> |Aug 31 10:10:42 melchior kernel: [ 15.982283] forcedeth: probe of
> 0000:00:08.0 failed with error -12
> |Aug 31 10:10:42 melchior kernel: [ 16.017545] forcedeth 0000:00:09.0: BAR
> 0: error updating (0xfe027000 != 0x000000)
> |Aug 31 10:10:42 melchior kernel: [ 16.017766] forcedeth 0000:00:09.0:
> enabling device (0000 -> 0003)
> |Aug 31 10:10:42 melchior kernel: [ 16.018720] ACPI: PCI Interrupt Link
> [AMC1] enabled at IRQ 21
> |Aug 31 10:10:42 melchior kernel: [ 16.018839] forcedeth 0000:00:09.0: PCI
> INT A -> Link[AMC1] -> GSI 21 (level, low) -> IRQ 21
> |Aug 31 10:10:42 melchior kernel: [ 16.019050] forcedeth 0000:00:09.0:
> setting latency timer to 64
> |Aug 31 10:10:42 melchior kernel: [ 16.019129] forcedeth 0000:00:09.0:
> Invalid Mac address detected: ff:ff:ff:ff:ff:ff
> |Aug 31 10:10:42 melchior kernel: [ 16.019339] forcedeth 0000:00:09.0:
> Please complain to your hardware vendor. Switching to a random MAC.
> |Aug 31 10:10:42 melchior kernel: [ 21.399400] forcedeth 0000:00:09.0:
> open: Could not find a valid PHY.
> |Aug 31 10:10:42 melchior kernel: [ 21.399572] forcedeth 0000:00:09.0: PCI
> INT A disabled
> |Aug 31 10:10:42 melchior kernel: [ 21.399723] forcedeth: probe of
> 0000:00:09.0 failed with error -12
>
> If I rmmod forcedeth before kexec, it loads fine later.
> This is with MSI enabled:
> | CPU0
> | 0: 99 IO-APIC-edge timer
> | 1: 2 IO-APIC-edge i8042
> | 7: 1 IO-APIC-edge
> | 8: 1 IO-APIC-edge rtc
> | 9: 0 IO-APIC-fasteoi acpi
> | 12: 3 IO-APIC-edge i8042
> | 14: 53 IO-APIC-edge pata_amd
> | 15: 0 IO-APIC-edge pata_amd
> | 16: 76975 IO-APIC-fasteoi ahci, radeon@pci:0000:02:00.0
> | 18: 0 IO-APIC-fasteoi EMU10K1
> | 20: 6 IO-APIC-fasteoi ehci_hcd:usb1
> | 21: 54 IO-APIC-fasteoi sata_nv
> | 22: 0 IO-APIC-fasteoi sata_nv
> | 23: 11230 IO-APIC-fasteoi sata_nv, ohci_hcd:usb2
> |284: 81038 PCI-MSI-edge eth1
> |285: 74728 PCI-MSI-edge eth0
> |NMI: 0 Non-maskable interrupts
> |LOC: 29209 Local timer interrupts
> |TRM: 0 Thermal event interrupts
> |THR: 0 Threshold APIC interrupts
> |SPU: 0 Spurious interrupts
> |ERR: 1
>
> Maybe also calling nv_restore_phy() and/or pci_release_regions() in
> the shutdown hook would help.
>
> TODO:
> Try with the patch, maybe try nv_restore_phy, test if WOL is
> affected by the patch.
Already fixed by? 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. Ping? No, this is another one. The patch from http://marc.info/?l=linux-kernel&m=121894389018584&w=4 is needed to fix it in addition to the "forcedeth: fix kexec regression" patch. |