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

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

On Fri, Oct 19, 2007 at 05:36:17PM -0700, Michael Chan wrote:
> On Fri, 2007-10-19 at 18:29 -0500, [email-masked] wrote:
> > On Fri, Oct 19, 2007 at 02:36:56PM -0700, Matt Carlson wrote:
> > > This patch exports the pci_restore_msi_state() function.  This function
> > > is needed to restore the MSI state during PCI error recovery.
> > > 
> > > Signed-off-by: Linas Vepstas <[email-masked]>
> > > Signed-off-by: Matt Carlson <[email-masked]>
> > > Signed-off-by: Michael Chan <[email-masked]>
> > 
> > Davem,
> > 
> > This patch is generically needed for recovery from PCI errors, 
> > and not just the tg3 that Matt is working on.
> > 
> > Matt, there are also several msi-related bugs in the pseries
> > architecture implementation, those patches will go out to 
> > Paul Mackerras seperately. I was hoping today ... but things 
> > came up. One little iddy-biddy problem is that the pseries
> > is not actually *saving* the msi state, and so, ahem, the 
> > restore isn't quite working out either. I'm still trying
> > to navigate around that.
> > 
> Linas, the MSI state is saved automatically when the driver calls
> pci_enable_msi(), so it doesn't need to be saved by pseries code.

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?

--linas