From: Alexander Gordeev <agordeev@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Alexander Gordeev <agordeev@redhat.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Michael Ellerman <michael@ellerman.id.au>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Tejun Heo <tj@kernel.org>,
Ben Hutchings <bhutchings@solarflare.com>,
David Laight <David.Laight@ACULAB.COM>,
Mark Lord <kernel@start.ca>, "H. Peter Anvin" <hpa@zytor.com>,
linux-pci@vger.kernel.org
Subject: [PATCH v4 0/9] PCI/MSI: Introduce pci_auto_enable_msi*() family helpers
Date: Mon, 16 Dec 2013 09:34:53 +0100 [thread overview]
Message-ID: <cover.1387140921.git.agordeev@redhat.com> (raw)
This series is against "next" branch in Bjorn's repo:
git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
Changes from v3 to v4:
- pcim_enable_msi* functions renamed to pci_auto_enable_msi* ones
- PowerPC patches dropped
- pci_get_msi_cap() renamed to pci_get_msix_vec_count() and
pci_msix_table_size() renamed to pci_get_msix_vec_count()
Changes from v2 to v3:
- new public interfaces commented in drivers/pci/msi.c;
- patch "Make quota traversing and requesting race-safe" explained;
- pci_enable_msi/msix() 'nvec' arg type changed from 'unsigned int' to 'int';
- pcim_enable_msi*() arg 'nvec' renamed to 'maxvec' when upper limit passed;
- pcim_enable_msi*(..., maxvec, minvec) arg order swapped to minvec, maxvec;
- "PCI: Fail MSI/MSI-X initialization if device is not in PCI_D0" commit
869a161 and "PCI/MSI: Factor out pci_get_msi_cap() interface" patch
conflicts resolved;
Currently many device drivers need contiguously call functions
pci_enable_msix() for MSI-X or pci_enable_msi_block() for MSI
in a loop until success or failure. This update generalizes
this usage pattern and introduces pci_auto_enable_msi*() family
helpers.
As result, device drivers do not have to deal with tri-state
return values from pci_enable_msix() and pci_enable_msi_block()
functions directly and expected to have more clearer and straight
code.
So i.e. the request loop described in the documentation...
int foo_driver_enable_msix(struct foo_adapter *adapter,
int nvec)
{
while (nvec >= FOO_DRIVER_MINIMUM_NVEC) {
rc = pci_enable_msix(adapter->pdev,
adapter->msix_entries,
nvec);
if (rc > 0)
nvec = rc;
else
return rc;
}
return -ENOSPC;
}
...would turn into a single helper call....
rc = pci_auto_enable_msix_range(adapter->pdev,
adapter->msix_entries,
FOO_DRIVER_MINIMUM_NVEC,
nvec);
Device drivers with more specific requirements (i.e. a number of
MSI-Xs which is a multiple of a certain number within a specified
range) would still need to implement the loop using the two old
functions.
The tree could be found in "pci-next-msi-v4" branch in repo:
https://github.com/a-gordeev/linux.git
Alexander Gordeev (9):
PCI/MSI/s390: Fix single MSI only check
PCI/MSI/s390: Remove superfluous check of MSI type
PCI/MSI: Fix return value when populate_msi_sysfs() failed
PCI/MSI: Return -ENOSYS for unimplemented interfaces, not -1
PCI/MSI: Make pci_enable_msi/msix() 'nvec' argument type as int
PCI/MSI: Factor out pci_get_msi_vec_count() interface
PCI/MSI: Get rid of pci_enable_msi_block_auto() interface
PCI/MSI: Introduce pci_get_msix_vec_count() interface
PCI/MSI: Introduce pci_auto_enable_msi*() family helpers
Documentation/PCI/MSI-HOWTO.txt | 175 +++++++++++++++++++++++++++++++++------
arch/s390/pci/pci.c | 4 +-
drivers/ata/ahci.c | 56 ++++++++-----
drivers/pci/msi.c | 163 +++++++++++++++++++++++++++---------
drivers/pci/pcie/portdrv_core.c | 7 +-
include/linux/pci.h | 78 +++++++++++++++---
6 files changed, 380 insertions(+), 103 deletions(-)
--
1.7.7.6
next reply other threads:[~2013-12-16 18:44 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-16 8:34 Alexander Gordeev [this message]
2013-12-16 8:34 ` [PATCH v4 1/9] PCI/MSI/s390: Fix single MSI only check Alexander Gordeev
2013-12-16 8:34 ` [PATCH v4 2/9] PCI/MSI/s390: Remove superfluous check of MSI type Alexander Gordeev
2013-12-16 8:34 ` [PATCH v4 3/9] PCI/MSI: Fix return value when populate_msi_sysfs() failed Alexander Gordeev
2013-12-16 8:34 ` [PATCH v4 4/9] PCI/MSI: Return -ENOSYS for unimplemented interfaces, not -1 Alexander Gordeev
2013-12-16 8:34 ` [PATCH v4 5/9] PCI/MSI: Make pci_enable_msi/msix() 'nvec' argument type as int Alexander Gordeev
2013-12-16 8:34 ` [PATCH v4 6/9] PCI/MSI: Factor out pci_get_msi_vec_count() interface Alexander Gordeev
2013-12-18 0:33 ` Bjorn Helgaas
2013-12-16 8:35 ` [PATCH v4 7/9] PCI/MSI: Get rid of pci_enable_msi_block_auto() interface Alexander Gordeev
2013-12-16 8:35 ` [PATCH v4 8/9] PCI/MSI: Introduce pci_get_msix_vec_count() interface Alexander Gordeev
2013-12-16 8:35 ` [PATCH v4 9/9] PCI/MSI: Introduce pci_auto_enable_msi*() family helpers Alexander Gordeev
2013-12-18 0:30 ` Bjorn Helgaas
2013-12-18 13:23 ` Alexander Gordeev
2013-12-18 18:58 ` Bjorn Helgaas
2013-12-19 13:42 ` Alexander Gordeev
2013-12-19 13:47 ` Tejun Heo
2013-12-19 21:37 ` Bjorn Helgaas
2013-12-20 9:04 ` Alexander Gordeev
2013-12-20 13:28 ` Tejun Heo
2013-12-20 10:28 ` Alexander Gordeev
2013-12-23 14:44 ` Alexander Gordeev
2013-12-23 17:19 ` Bjorn Helgaas
2013-12-19 22:30 ` [PATCH v4 0/9] " Bjorn Helgaas
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=cover.1387140921.git.agordeev@redhat.com \
--to=agordeev@redhat.com \
--cc=David.Laight@ACULAB.COM \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=bhutchings@solarflare.com \
--cc=hpa@zytor.com \
--cc=kernel@start.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=michael@ellerman.id.au \
--cc=tj@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.