From: Bjorn Helgaas <bhelgaas@google.com>
To: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
Lv Zheng <lv.zheng@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org,
"x86 @ kernel . org" <x86@kernel.org>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [RFC 2/4] PCI, MSI: Optionally free legacy PCI IRQ when enabling MSI/MSI-X
Date: Tue, 19 May 2015 10:08:38 -0500 [thread overview]
Message-ID: <20150519150838.GQ31666@google.com> (raw)
In-Reply-To: <1430968374-29286-3-git-send-email-jiang.liu@linux.intel.com>
[+cc Michael]
On Thu, May 07, 2015 at 11:12:52AM +0800, Jiang Liu wrote:
> Once PCI MSI/MSI-X is enabled by the device driver, PCI device won't
> make use of legacy PCI IRQ until PCI MSI/MSI-X is disabled again.
> So optionally free legacy PCI IRQ when enabling MSI/MSI-X and reallocate
> when disabling MSI/MSI-X.
>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
> drivers/pci/msi.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index c3e7dfcf9ff5..47cf72c669f0 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -686,6 +686,7 @@ static int msi_capability_init(struct pci_dev *dev, int nvec)
> msi_set_enable(dev, 1);
> dev->msi_enabled = 1;
>
> + pcibios_free_irq(dev);
>From the recent discussion about disabling MSI at shutdown, I seem to
recall that turning off bus mastering also effectively disables MSI and
causes at least some devices to revert to using INTx.
So with this patch, do we now have a problem in the following scenario?
pci_enable_msi(dev); /* now frees INTx IRQ */
pci_clear_master(dev);
<device interrupts> /* uses INTx since bus mastering disabled */
> dev->irq = entry->irq;
> return 0;
> }
> @@ -813,9 +814,10 @@ static int msix_capability_init(struct pci_dev *dev,
> /* Set MSI-X enabled bits and unmask the function */
> pci_intx_for_msi(dev, 0);
> dev->msix_enabled = 1;
> -
> msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_MASKALL, 0);
>
> + pcibios_free_irq(dev);
> +
> return 0;
>
> out_avail:
> @@ -930,6 +932,7 @@ void pci_msi_shutdown(struct pci_dev *dev)
>
> /* Restore dev->irq to its default pin-assertion irq */
> dev->irq = desc->msi_attrib.default_irq;
> + pcibios_alloc_irq(dev);
> }
>
> void pci_disable_msi(struct pci_dev *dev)
> @@ -1030,6 +1033,7 @@ void pci_msix_shutdown(struct pci_dev *dev)
> msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0);
> pci_intx_for_msi(dev, 1);
> dev->msix_enabled = 0;
> + pcibios_alloc_irq(dev);
> }
>
> void pci_disable_msix(struct pci_dev *dev)
> --
> 1.7.10.4
>
next prev parent reply other threads:[~2015-05-19 15:08 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-07 3:12 [RFC 0/4] Introduce a mechanism to allocate PCI IRQ on demand Jiang Liu
2015-05-07 3:12 ` [RFC 1/4] PCI: Add hooks to allocate/free IRQ resources when binding/unbinding driver Jiang Liu
2015-05-19 14:45 ` Bjorn Helgaas
2015-05-07 3:12 ` [RFC 2/4] PCI, MSI: Optionally free legacy PCI IRQ when enabling MSI/MSI-X Jiang Liu
2015-05-15 21:02 ` Thomas Gleixner
2015-05-20 3:06 ` Jiang Liu
2015-05-20 7:47 ` Thomas Gleixner
2015-05-19 15:08 ` Bjorn Helgaas [this message]
2015-05-19 15:16 ` Michael S. Tsirkin
2015-05-19 15:26 ` Michael S. Tsirkin
2015-05-20 3:07 ` Jiang Liu
2015-05-19 21:39 ` Bjorn Helgaas
2015-05-20 3:12 ` Jiang Liu
2015-05-07 3:12 ` [RFC 3/4] PCI, x86: Allocate PCI IRQ on demand and free it when not used anymore Jiang Liu
2015-05-07 3:12 ` [RFC 4/4] PCI: Introduce helpers to manage pci_dev->irq and pci_dev->irq_managed Jiang Liu
2015-05-19 13:35 ` [RFC 0/4] Introduce a mechanism to allocate PCI IRQ on demand Thomas Gleixner
2015-05-20 3:21 ` Jiang Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150519150838.GQ31666@google.com \
--to=bhelgaas@google.com \
--cc=jiang.liu@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lv.zheng@intel.com \
--cc=mst@redhat.com \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).