Re: [RFC PATCH] PCI: remove access to pci_[enable|disable]_msi() for drivers - take 2

Jeff Garzik
2005-06-07T22:17:22Z

Greg KH wrote:
> @@ -6047,7 +6046,7 @@
> if (!(tp->tg3_flags & TG3_FLAG_TAGGED_STATUS)) {
> printk(KERN_WARNING PFX "%s: MSI without TAGGED? "
> "Not using MSI.\n", tp->dev->name);
> - } else if (pci_enable_msi(tp->pdev) == 0) {
> + } else if (pci_in_msi_mode(tp->pdev)) {
> u32 msi_mode;
>
> msi_mode = tr32(MSGINT_MODE);
> @@ -6063,15 +6062,12 @@
> if (tp->tg3_flags & TG3_FLAG_TAGGED_STATUS)
> fn = tg3_interrupt_tagged;
>
> + pci_disable_msi(tp->pdev);
> err = request_irq(tp->pdev->irq, fn,
> SA_SHIRQ | SA_SAMPLE_RANDOM, dev->name, dev);
> }
>
> if (err) {
> - if (tp->tg3_flags2 & TG3_FLG2_USING_MSI) {
> - pci_disable_msi(tp->pdev);
> - tp->tg3_flags2 &= ~TG3_FLG2_USING_MSI;
> - }
> tg3_free_consistent(tp);
> return err;
> }

If the driver has to _undo_ something that it did not do, that's pretty
lame. Non-orthogonal.

Also, it looks like all the PCI MSI drivers need touching for this
scheme -- which defeats the original intention. At this rate, the best
API is the one we've already got.

Jeff