[BUG] powerpc does not save msi state [was Re: [PATCH 5/7] pci: Export the pci_restore_msi_state() function
From: Linas Vepstas <hidden>
Date: 2007-10-20 00:46:38
Also in:
netdev
Hi, On Fri, Oct 19, 2007 at 05:27:06PM -0700, David Miller wrote:
From: linas@austin.ibm.com (Linas Vepstas) Date: Fri, 19 Oct 2007 19:04:21 -0500quoted
I'm working in linux-2.6.23-rc8-mm1 at the moment, and I don't see that happening. viz. read_msi_msg() is not called anywhere, and I need to have valid msg->address_lo and msg->address_hi and msg->data in order to be able to restore.See the pci_restore_msi_state() call done from pci_restore_state() in drivers/pci/pci.c, that pci_restore_msi_state() code in drivers/pci/msi.c very much relies upon the entry->msg values being uptodate and valid. The MSI arch layer code is supposed to fill the entry->msg values in via arch_setup_msi_irq(). Perhaps the pseries code is forgetting to do that.
Yep. Thank you for confirming the correct location for the fix. FWIW, it looks like not all that many arches do this; the output for grep -r address_hi * is pretty thin. Then, looking at i386/kernel/io_apic.c as an example, one can see that the msi state save happens "by accident" if CONFIG_SMP is enabled; and so its surely broekn on uniprocesor machines. I'm cc'ing the powerpc mailing list to point this out: it looks like only cell/axon_msi.c and mpic_u3msi.c bother do do anything. I guess that there aren't any old macintosh laptops that have msi on them? Because without this, suspend and resume breaks. Paul, On the off chance your reading this, I'll send a pseries patch on Monday, with luck (and some other patches too). I'm not touching any of the other plaforms, you and benh would know those better. --linas