On Thu, 2013-10-10 at 16:31 +0800, Yijing Wang wrote: > Currently, if device power state != PCI_D0, we still initialize > device MSI/MSIX, but we won't write the MSI message to device > MSI/MSIX registers. It's weird, we don't configure MSI/MSIX > registers properly, but pci_enable_msi() or pci_enable_msix() > return success, and even these registers will never be updated later. > So I think it should return error if device power state != PCI_D0. > > Signed-off-by: Yijing Wang <wangyijing@xxxxxxxxxx> > --- > drivers/pci/msi.c | 10 ++++------ > 1 files changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index d5f90d6..eb502f6 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -308,9 +308,7 @@ void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg) > > void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) > { > - if (entry->dev->current_state != PCI_D0) { > - /* Don't touch the hardware now */ > - } else if (entry->msi_attrib.is_msix) { > + if (entry->msi_attrib.is_msix) { [...] As I said before, this function was being called to change IRQ affinities during suspend/resume at a point when most PCI devices were in D3. If that is no longer the case then this change is probably OK. Otherwise you should not touch this function. Ben. -- Ben Hutchings A free society is one where it is safe to be unpopular. - Adlai Stevenson
Attachment:
signature.asc
Description: This is a digitally signed message part