Subject: Re: [PATCH 5/7] pci: Export the pci_restore_msi_state() function

From: [email-masked] (Linas Vepstas)
Date: Fri, 19 Oct 2007 19:25:27 -0500

On Fri, Oct 19, 2007 at 06:12:03PM -0700, Michael Chan wrote:
> On Fri, 2007-10-19 at 19:04 -0500, [email-masked] wrote:
> > 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.
> > 
> > In particular, this has to happen after the call to
> > arch_setup_msi_irqs
> > as otherwise, the arch hasn't yet filled these fields with correct
> > values.
> > 
> > Perhaps this is fixed in the kernel you're working with?
> 
> It's possible that this doesn't work on pseries.  I've only tested
> pci_restore_msi_state() on x86 in the context of suspend and resume.
> During resume, the MSI state gets restored correctly on x86.

:-) Yes, I think that is being done in arch/i386/kernel/io_apic.c
and arch/ia64/kernel/msi_ia64.c and etc. but its not being done
on most of the powerpc's.  Its possible that none of the
old macintosh laptops use msi, and so no one noticed before; 
I know that no one ever suspends/resumes the big servers I work 
on, sooo :-)

Actually, looking at arch/i386/kernel/io_apic.c, it looks like
the msi state is being saved only when CONFIG_SMP is set, so 
it seems to me that the restore will fail on uni systems ... 
are there any of those left? 

--linas