Bug 7479

Summary: PCI MSI setting corrupted during resume
Product: Drivers Reporter: Stephen Hemminger (stephen)
Component: PCIAssignee: Greg Kroah-Hartman (greg)
Status: RESOLVED PATCH_ALREADY_AVAILABLE    
Severity: normal CC: acpi-bugzilla, ebiederm, pavel, protasnb
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.19-rc5 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 56331    
Attachments: Console output from suspend/resume
cat /proc/interrupts

Description Stephen Hemminger 2006-11-09 16:24:14 UTC
Most recent kernel where this bug did not occur: always
Distribution: Ubuntu (edgy)
Hardware Environment: Sony Vaio Intel Core Duo
Software Environment:
Problem Description:
    
MSI interrupt in sky2 driver is not enabled correctly on resume.
The problem is that PCI configuration is restored correctly in
device, but somewhere between end of device resume and when USB
hub is detected, the PCI command register INTX_DISABLE bit is cleared.

Suspect some code after the resume is doing a PCI bus reset.

Steps to reproduce:
     Suspend laptop
     Resume laptop

     Network IRQ is routed to 17 rather than MSI so first network interrupt
     cause IRQ code to trap and disable, since no IRQ's happen network device
     is deaf.
Comment 1 Stephen Hemminger 2006-11-09 16:26:09 UTC
Created attachment 9447 [details]
Console output from suspend/resume

Console log showing IRQ misrouting
Some additional instrumentation of MSI save/restore, but problem is not there.
Comment 2 Stephen Hemminger 2006-11-10 11:24:32 UTC
This is a regression. 2.6.18 works okay
Comment 3 Zhang Rui 2007-02-05 23:32:24 UTC
I have a similar bug here.

Hardware Environment: IBM R60e 06588PC UP
Software Environment: 2.6.19~2.6.20 MP kernel
Problem Description:
I got "irq 20: nobody cared" after S3 resume, and network became unavailable.
It's caused by the net driver "tg3", which is in "MSI_PCI" mode.
I tried different workarounds and finally found that it can work in one of the 
following situations:
1.build a UP kernel, even with lapic enabled.
2.MP kernel with pci=nomsi.(tg3 is is routed to 16 rather than "MSI_PCI")
3.rmmod tg3 driver before suspend and modprobe it after resume.

Steps to reproduce:
     Suspend the laptop and resume.
Comment 4 Zhang Rui 2007-02-05 23:41:21 UTC
Created attachment 10310 [details]
cat /proc/interrupts
Comment 5 Natalie Protasevich 2007-07-06 16:46:31 UTC
Is it still a problem in 2.6.22-rc7+?
Thanks.
Comment 6 Eric W. Biederman 2007-07-06 18:10:17 UTC
Natilie this should be solved, or if it remains it is a driver bug.
pci_save_state, pci_restore_state were reworked to be more robust
and generally more correct as of commit: 392ee1e6dd901db6c4504617476f6442ed91f72d

Which git-name-rev tell me went in about 2.6.21-rc4
Comment 7 Natalie Protasevich 2007-07-06 18:13:56 UTC
Great! - can you test with latest kernel Stephen?
Thanks.
Comment 8 Stephen Hemminger 2007-07-06 18:17:21 UTC
I gave the Sony laptop away to another developer.  I will ping him to
retest...
Comment 9 Natalie Protasevich 2008-04-04 09:16:04 UTC
Any updates on this? We can probably close it per #6 since no more complaints in a while now.
Comment 10 Stephen Hemminger 2008-04-04 11:34:01 UTC
Mark it as fixed, if it shows up again reopen or file new bug.