On 2014/7/4 22:28, Sebastian Ott wrote: > On Fri, 4 Jul 2014, Yijing Wang wrote: >> MSI irqchip in s390 has its own mask and unmask MSI irq >> functions, zpci_enable_irq() and zpci_disable_irq(). >> They mask and unmask MSI irq in standard ways, no arch >> special. MSI driver provides two global standard functions >> mask_msi_irq() and unmask_msi_irq(). Local zpci_enable_irq() >> and zpci_disable_irq() are almost the same as the standard >> two. the difference is local mask/unmask functions >> read the mask status before mask and unmask everytime. >> Then change the value and rewrite to hardware. In standard >> functions, save the mask status after mask and unmask msi >> irq, and use the cached status to change the mask status. >> When we mask or unmask a MSI irq, we always cache its >> mask status except we know need not to cache it, like in >> pci_msi_shutdown. So use the standard functions to replace >> the local is safe. > > Thanks, for doing that! > At first glance the last hunk looks funny. Thanks for your review. > >> >> Signed-off-by: Yijing Wang <wangyijing@xxxxxxxxxx> >> --- >> arch/s390/pci/pci.c | 49 ++++++------------------------------------------- >> } >> @@ -487,7 +447,10 @@ void arch_teardown_msi_irqs(struct pci_dev *pdev) >> >> /* Release MSI interrupts */ >> list_for_each_entry(msi, &pdev->msi_list, list) { >> - zpci_msi_set_mask_bits(msi, 1, 1); >> + if (msi->msi_attrib.is_msix) >> + default_msi_mask_irq(msi, 1, 1); >> + else >> + default_msix_mask_irq(msi, 1); > > This one looks inverted. Oh, my mistake, will update and resend. Thanks! Yijing. > >> irq_set_msi_desc(msi->irq, NULL); >> irq_free_desc(msi->irq); >> msi->msg.address_lo = 0; > > Regards, > Sebastian > > > . > -- 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