>> @@ -291,6 +291,8 @@ 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 */ >> + dev_warn(&entry->dev->dev, >> + "current_state != PCI_D0, ignore writing MSI message!\n"); > > Is there a real problem here? If there is a real problem, a printk > doesn't help fix it. If there's no problem, I don't see the point of > this printk. > > I would expect that if the device is not in D0, we should remember the > hardware updates that need to be made, and if the device returns to > D0, we should apply the updates then. If that's the case this is not > an error and we shouldn't warn about it. My colleagues found some msi irqs can not work normally in their driver which works normally in SLES11 SP1(2.6.32 kernel). I review their code and found that they forget to call pci_enable_device(), so their device always in PCI_UNKNOWN state despite the really PCI Power State in PM register is PCI_D0 state. In this case, users call pci_enable_msi() always return success, but actually, nothing was wrote to the MSI registers. So I think we should warn here, if someone use pci_enable_msi(), but their devices are not in PCI_D0. Thanks! Yijing. > >> } else if (entry->msi_attrib.is_msix) { >> void __iomem *base; >> base = entry->mask_base + >> -- >> 1.7.1 >> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-pci" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- Thanks! Yijing -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html