From: Alexander Gordeev <agordeev@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Alexander Gordeev <agordeev@redhat.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Ralf Baechle <ralf@linux-mips.org>,
Michael Ellerman <michael@ellerman.id.au>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Ingo Molnar <mingo@redhat.com>, Tejun Heo <tj@kernel.org>,
Dan Williams <dan.j.williams@intel.com>,
Andy King <acking@vmware.com>, Jon Mason <jon.mason@intel.com>,
Matt Porter <mporter@kernel.crashing.org>,
linux-pci@vger.kernel.org, linux-mips@linux-mips.org,
linuxppc-dev@lists.ozlabs.org, linux390@de.ibm.com,
linux-s390@vger.kernel.org, x86@kernel.org,
linux-ide@vger.kernel.org, iss_storagedev@hp.com,
linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org,
netdev@vger.kernel.org, e1000-devel@lists.sourceforge.net,
linux-driver@qlogic.com,
Solarflare linux maintainers <linux-net-drivers@solarflare.com>,
"VMware, Inc." <pv-drivers@vmware.com>,
linux-scsi@vger.kernel.org
Subject: [PATCH RFC 00/77] Re-design MSI/MSI-X interrupts enablement pattern
Date: Wed, 2 Oct 2013 12:48:16 +0200 [thread overview]
Message-ID: <cover.1380703262.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
Currently pci_enable_msi_block() and pci_enable_msix() interfaces
return a error code in case of failure, 0 in case of success and a
positive value which indicates the number of MSI-X/MSI interrupts
that could have been allocated. The latter value should be passed
to a repeated call to the interfaces until a failure or success:
for (i = 0; i < FOO_DRIVER_MAXIMUM_NVEC; i++)
adapter->msix_entries[i].entry = i;
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;
This technique proved to be confusing and error-prone. Vast share
of device drivers simply fail to follow the described guidelines.
This update converts pci_enable_msix() and pci_enable_msi_block()
interfaces to canonical kernel functions and makes them return a
error code in case of failure or 0 in case of success.
As result, device drivers will cease to use the overcomplicated
repeated fallbacks technique and resort to a straightforward
pattern - determine the number of MSI/MSI-X interrupts required
before calling pci_enable_msi_block() and pci_enable_msix()
interfaces:
rc = pci_msix_table_size(adapter->pdev);
if (rc < 0)
return rc;
nvec = min(nvec, rc);
if (nvec < FOO_DRIVER_MINIMUM_NVEC) {
return -ENOSPC;
for (i = 0; i < nvec; i++)
adapter->msix_entries[i].entry = i;
rc = pci_enable_msix(adapter->pdev,
adapter->msix_entries, nvec);
return rc;
Device drivers will use their knowledge of underlying hardware
to determine the number of MSI/MSI-X interrupts required.
The simplest case would be requesting all available interrupts -
to obtain that value device drivers will use pci_get_msi_cap()
interface for MSI and pci_msix_table_size() for MSI-X.
More complex cases would entail matching device capabilities
to the system environment, i.e. limiting number of hardware
queues (and hence associated MSI/MSI-X interrupts) to the number
of online CPUs.
Device drivers using MSI/MSI-X could be divided in three groups:
- drivers that request a hardcoded number of interrupts;
- drivers that request a number of interrupts using one call to
pci_enable_msix() and then enable MSI/MSI-X using a follow-up
to pci_enable_msix();
- drivers that fully follow the guidelines and repeatedly call
pci_enable_msix() in a loop;
This series converts to the new technique second and third groups.
To simplify device drivers code review I tried to make as little
changes as possible - the scope of this series is an introduction
of the new technique rather than clean-up effort for all drivers
affected.
The testing was very limited - I ensured successful booting on
all affected architectures except MIPS and operation of few
devices with and without pci=nomsi kernel parameter.
There is a ongoing discussion about impact of this update on
PowerPC pSeries platform. I am going to incorporate the outcome
of this discussion into the next version. Yet, the rest of the
platforms and the vast majority of device drivers already can
start getting initial reviews.
Patches 5,6,8 - update of the generic MSI code
Patch 7 - update of architectures affected
Patches 9-77 - bugfixes and updates of device drivers affected
The tree could be found in "pci-next-msi-v1" branch in repo:
https://github.com/a-gordeev/linux.git
Alexander Gordeev (77):
PCI/MSI: Fix return value when populate_msi_sysfs() failed
PCI/MSI/PPC: Fix wrong RTAS error code reporting
PCI/MSI/s390: Fix single MSI only check
PCI/MSI/s390: Remove superfluous check of MSI type
PCI/MSI: Convert pci_msix_table_size() to a public interface
PCI/MSI: Factor out pci_get_msi_cap() interface
PCI/MSI: Re-design MSI/MSI-X interrupts enablement pattern
PCI/MSI: Get rid of pci_enable_msi_block_auto() interface
ahci: Update MSI/MSI-X interrupts enablement code
ahci: Check MRSM bit when multiple MSIs enabled
benet: Return -ENOSPC when not enough MSI-Xs available
benet: Update MSI/MSI-X interrupts enablement code
bna: Update MSI/MSI-X interrupts enablement code
bnx2x: Update MSI/MSI-X interrupts enablement code
bnx2: Update MSI/MSI-X interrupts enablement code
cciss: Update MSI/MSI-X interrupts enablement code
cciss: Update a misleading comment on interrupt usage
cciss: Fallback to single MSI mode in case MSI-X failed
csiostor: Do not call pci_disable_msix() if pci_enable_msix() failed
csiostor: Return -ENOSPC when not enough MSI-X vectors available
csiostor: Update MSI/MSI-X interrupts enablement code
cxgb3: Do not call pci_disable_msix() if pci_enable_msix() failed
cxgb3: Return -ENOSPC when not enough MSI-X vectors available
cxgb3: Update MSI/MSI-X interrupts enablement code
cxgb4: Return -ENOSPC when not enough MSI-X vectors available
cxgb4: Update MSI/MSI-X interrupts enablement code
cxgb4vf: Do not call pci_disable_msix() if pci_enable_msix() failed
cxgb4vf: Return -ENOSPC when not enough MSI-X vectors available
cxgb4vf: Update MSI/MSI-X interrupts enablement code
hpsa: Update a misleading comment on interrupt usage
hpsa: Update MSI/MSI-X interrupts enablement code
hpsa: Fallback to single MSI mode in case MSI-X failed
ioat: Disable MSI-X in case request of IRQ failed
ioat: Update MSI/MSI-X interrupts enablement code
ipr: Do not call pci_disable_msi/msix() if pci_enable_msi/msix()
failed
ipr: Enable MSI-X when IPR_USE_MSIX type is set, not IPR_USE_MSI
ipr: Update MSI/MSI-X interrupts enablement code
ixgbe: Update MSI/MSI-X interrupts enablement code
ixgbevf: Return -ENOSPC when not enough MSI-X vectors available
ixgbevf: Update MSI/MSI-X interrupts enablement code
lpfc: Do not call pci_disable_msix() if pci_enable_msix() failed
lpfc: Update MSI/MSI-X interrupts enablement code
lpfc: Return -ENOSPC when not enough MSI-X vectors available
lpfc: Make MSI-X initialization routine more readable
megaraid: Update MSI/MSI-X interrupts enablement code
mlx4: Update MSI/MSI-X interrupts enablement code
mlx5: Fix memory leak in case not enough MSI-X vectors available
mlx5: Return -ENOSPC when not enough MSI-X vectors available
mlx5: Fix minimum number of MSI-Xs
mlx5: Update MSI/MSI-X interrupts enablement code
mthca: Update MSI/MSI-X interrupts enablement code
niu: Update MSI/MSI-X interrupts enablement code
ntb: Fix missed call to pci_enable_msix()
ntb: Ensure number of MSIs on SNB is enough for the link interrupt
ntb: Update MSI/MSI-X interrupts enablement code
nvme: Update MSI/MSI-X interrupts enablement code
pmcraid: Update MSI/MSI-X interrupts enablement code
qib: Update MSI/MSI-X interrupts enablement code
qla2xxx: Update MSI/MSI-X interrupts enablement code
qlcnic: Return -ENOSPC when not enough MSI-X vectors available
qlogic: Return -EINVAL in case MSI-X is not supported
qlcnic: Remove redundant return operator
qlcnic: Update MSI/MSI-X interrupts enablement code
qlcnic: Make MSI-X initialization routine bit more readable
qlge: Remove a redundant assignment
qlge: Update MSI/MSI-X interrupts enablement code
rapidio: Update MSI/MSI-X interrupts enablement code
sfc: Update MSI/MSI-X interrupts enablement code
tg3: Update MSI/MSI-X interrupts enablement code
vmci: Update MSI/MSI-X interrupts enablement code
vmxnet3: Return -EINVAL if number of requested MSI-Xs is not enough
vmxnet3: Fixup a weird loop exit
vmxnet3: Return -ENOSPC when not enough MSI-X vectors available
vmxnet3: Limit number of rx queues to 1 if per-queue MSI-Xs failed
vmxnet3: Update MSI/MSI-X interrupts enablement code
vxge: Sanitize MSI-X allocation routine error codes
vxge: Update MSI/MSI-X interrupts enablement code
Documentation/PCI/MSI-HOWTO.txt | 123 +++++++++++---------
arch/mips/pci/msi-octeon.c | 2 +-
arch/powerpc/kernel/msi.c | 2 +-
arch/powerpc/platforms/pseries/msi.c | 4 +-
arch/s390/pci/pci.c | 2 +-
arch/x86/kernel/apic/io_apic.c | 2 +-
drivers/ata/ahci.c | 71 ++++++++---
drivers/ata/ahci.h | 1 +
drivers/block/cciss.c | 22 ++--
drivers/block/nvme-core.c | 48 ++++----
drivers/dma/ioat/dma.c | 11 ++-
drivers/infiniband/hw/mthca/mthca_main.c | 16 ++-
drivers/infiniband/hw/qib/qib_pcie.c | 4 -
drivers/misc/vmw_vmci/vmci_guest.c | 22 +++-
drivers/net/ethernet/broadcom/bnx2.c | 27 +++--
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 54 ++++-----
drivers/net/ethernet/broadcom/tg3.c | 24 ++--
drivers/net/ethernet/brocade/bna/bnad.c | 34 +++---
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 32 +++---
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 62 ++++++----
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 49 +++++---
drivers/net/ethernet/emulex/benet/be_main.c | 36 +++---
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 62 +++++-----
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 18 +--
drivers/net/ethernet/mellanox/mlx4/main.c | 17 ++--
drivers/net/ethernet/mellanox/mlx5/core/main.c | 17 ++--
drivers/net/ethernet/neterion/vxge/vxge-main.c | 38 +++----
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 108 +++++++++--------
drivers/net/ethernet/qlogic/qlge/qlge_main.c | 40 +++----
drivers/net/ethernet/sfc/efx.c | 18 ++-
drivers/net/ethernet/sun/niu.c | 20 ++--
drivers/net/vmxnet3/vmxnet3_drv.c | 84 +++++++-------
drivers/ntb/ntb_hw.c | 37 ++----
drivers/ntb/ntb_hw.h | 2 -
drivers/pci/msi.c | 93 +++++----------
drivers/pci/pcie/portdrv_core.c | 2 +
drivers/rapidio/devices/tsi721.c | 27 +++--
drivers/scsi/csiostor/csio_isr.c | 20 ++--
drivers/scsi/hpsa.c | 35 +++---
drivers/scsi/ipr.c | 52 ++++-----
drivers/scsi/lpfc/lpfc_init.c | 40 ++++---
drivers/scsi/megaraid/megaraid_sas_base.c | 20 ++--
drivers/scsi/pmcraid.c | 23 ++--
drivers/scsi/qla2xxx/qla_isr.c | 18 ++-
include/linux/pci.h | 7 +-
45 files changed, 744 insertions(+), 702 deletions(-)
--
1.7.7.6
next reply other threads:[~2013-10-02 17:33 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-02 10:48 Alexander Gordeev [this message]
2013-10-02 10:48 ` [PATCH RFC 01/77] PCI/MSI: Fix return value when populate_msi_sysfs() failed Alexander Gordeev
2013-10-03 0:39 ` Jon Mason
2013-10-03 21:46 ` Ben Hutchings
2013-10-04 0:59 ` Jon Mason
2013-10-02 10:48 ` [PATCH RFC 02/77] PCI/MSI/PPC: Fix wrong RTAS error code reporting Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 03/77] PCI/MSI/s390: Fix single MSI only check Alexander Gordeev
2013-10-04 7:39 ` Martin Schwidefsky
2013-10-02 10:48 ` [PATCH RFC 04/77] PCI/MSI/s390: Remove superfluous check of MSI type Alexander Gordeev
2013-10-02 18:17 ` Greg KH
2013-10-04 7:40 ` Martin Schwidefsky
2013-10-02 10:48 ` [PATCH RFC 05/77] PCI/MSI: Convert pci_msix_table_size() to a public interface Alexander Gordeev
2013-10-07 18:10 ` Tejun Heo
2013-10-08 7:56 ` Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 06/77] PCI/MSI: Factor out pci_get_msi_cap() interface Alexander Gordeev
2013-10-03 21:52 ` Ben Hutchings
2013-10-04 5:13 ` Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 07/77] PCI/MSI: Re-design MSI/MSI-X interrupts enablement pattern Alexander Gordeev
2013-10-07 18:17 ` Tejun Heo
2013-10-08 7:48 ` Alexander Gordeev
2013-10-09 15:54 ` Tejun Heo
2013-10-02 10:48 ` [PATCH RFC 08/77] PCI/MSI: Get rid of pci_enable_msi_block_auto() interface Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 09/77] ahci: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 10/77] ahci: Check MRSM bit when multiple MSIs enabled Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 11/77] benet: Return -ENOSPC when not enough MSI-Xs available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 12/77] benet: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 13/77] bna: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 14/77] bnx2x: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 15/77] bnx2: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 16/77] cciss: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 17/77] cciss: Update a misleading comment on interrupt usage Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 18/77] cciss: Fallback to single MSI mode in case MSI-X failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 19/77] csiostor: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 20/77] csiostor: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 21/77] csiostor: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 22/77] cxgb3: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 23/77] cxgb3: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 24/77] cxgb3: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 25/77] cxgb4: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 26/77] cxgb4: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 27/77] cxgb4vf: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 28/77] cxgb4vf: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 29/77] cxgb4vf: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 30/77] hpsa: Update a misleading comment on interrupt usage Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 31/77] hpsa: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 32/77] hpsa: Fallback to single MSI mode in case MSI-X failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 33/77] ioat: Disable MSI-X in case request of IRQ failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 34/77] ioat: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 35/77] ipr: Do not call pci_disable_msi/msix() if pci_enable_msi/msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 36/77] ipr: Enable MSI-X when IPR_USE_MSIX type is set, not IPR_USE_MSI Alexander Gordeev
2013-10-02 19:31 ` Brian King
2013-10-02 10:48 ` [PATCH RFC 37/77] ipr: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 38/77] ixgbe: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 39/77] ixgbevf: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 40/77] ixgbevf: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 41/77] lpfc: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 42/77] lpfc: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 43/77] lpfc: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 44/77] lpfc: Make MSI-X initialization routine more readable Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 45/77] megaraid: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 46/77] mlx4: " Alexander Gordeev
2013-10-03 8:02 ` Jack Morgenstein
2013-10-03 8:27 ` Jack Morgenstein
2013-10-03 8:39 ` Jack Morgenstein
2013-10-02 10:49 ` [PATCH RFC 47/77] mlx5: Fix memory leak in case not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 48/77] mlx5: Return -ENOSPC when " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 49/77] mlx5: Fix minimum number of MSI-Xs Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 50/77] mlx5: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-03 7:14 ` Eli Cohen
2013-10-03 19:48 ` Alexander Gordeev
2013-10-10 15:29 ` Eli Cohen
2013-10-02 10:49 ` [PATCH RFC 51/77] mthca: " Alexander Gordeev
2013-10-03 16:11 ` Jack Morgenstein
2013-10-02 10:49 ` [PATCH RFC 52/77] niu: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 53/77] ntb: Fix missed call to pci_enable_msix() Alexander Gordeev
2013-10-03 0:49 ` Jon Mason
2013-10-02 10:49 ` [PATCH RFC 54/77] ntb: Ensure number of MSIs on SNB is enough for the link interrupt Alexander Gordeev
2013-10-03 0:48 ` Jon Mason
2013-10-05 21:43 ` Alexander Gordeev
2013-10-07 16:50 ` Jon Mason
2013-10-07 18:38 ` Alexander Gordeev
2013-10-07 20:31 ` Jon Mason
2013-10-02 10:49 ` [PATCH RFC 55/77] ntb: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-03 1:02 ` Jon Mason
2013-10-02 10:49 ` [PATCH RFC 56/77] nvme: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 57/77] pmcraid: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 58/77] qib: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 59/77] qla2xxx: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 60/77] qlcnic: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 61/77] qlogic: Return -EINVAL in case MSI-X is not supported Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 62/77] qlcnic: Remove redundant return operator Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 63/77] qlcnic: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 64/77] qlcnic: Make MSI-X initialization routine bit more readable Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 65/77] qlge: Remove a redundant assignment Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 66/77] qlge: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 67/77] rapidio: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 68/77] sfc: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 69/77] tg3: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 70/77] vmci: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 71/77] vmxnet3: Return -EINVAL if number of requested MSI-Xs is not enough Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 72/77] vmxnet3: Fixup a weird loop exit Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 73/77] vmxnet3: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 74/77] vmxnet3: Limit number of rx queues to 1 if per-queue MSI-Xs failed Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 75/77] vmxnet3: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 76/77] vxge: Sanitize MSI-X allocation routine error codes Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 77/77] vxge: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-03 0:29 ` Jon Mason
2013-10-03 22:49 ` [PATCH RFC 00/77] Re-design MSI/MSI-X interrupts enablement pattern Ben Hutchings
2013-10-04 8:29 ` Alexander Gordeev
2013-10-04 8:31 ` David Laight
2013-10-04 9:21 ` Alexander Gordeev
2013-10-04 21:29 ` Ben Hutchings
2013-10-05 14:20 ` Alexander Gordeev
2013-10-05 21:46 ` Benjamin Herrenschmidt
2013-10-06 6:02 ` Alexander Gordeev
2013-10-06 6:19 ` Benjamin Herrenschmidt
2013-10-06 7:10 ` Alexander Gordeev
2013-10-07 18:01 ` Tejun Heo
2013-10-07 20:10 ` Benjamin Herrenschmidt
2013-10-07 20:46 ` Ben Hutchings
2013-10-08 12:22 ` Alexander Gordeev
2013-10-09 15:41 ` Tejun Heo
2013-10-09 12:57 ` Alexander Gordeev
2013-10-09 15:43 ` Tejun Heo
2013-10-07 20:48 ` Ben Hutchings
2013-10-09 15:46 ` Tejun Heo
2013-10-07 18:21 ` Tejun Heo
2013-10-08 9:07 ` Alexander Gordeev
2013-10-09 15:57 ` Tejun Heo
2013-10-08 4:33 ` Michael Ellerman
2013-10-08 7:33 ` Alexander Gordeev
2013-10-09 1:34 ` Michael Ellerman
2013-10-09 1:55 ` Mark Lord
2013-10-09 3:55 ` H. Peter Anvin
2013-10-09 4:24 ` Benjamin Herrenschmidt
2013-10-10 10:17 ` Alexander Gordeev
2013-10-10 16:28 ` H. Peter Anvin
2013-10-10 18:07 ` Alexander Gordeev
2013-10-10 23:17 ` Mark Lord
2013-10-11 8:41 ` Alexander Gordeev
2013-10-11 20:29 ` Mark Lord
2013-10-15 15:30 ` Alexander Gordeev
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.1380703262.git.agordeev@redhat.com \
--to=agordeev@redhat.com \
--cc=acking@vmware.com \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=dan.j.williams@intel.com \
--cc=e1000-devel@lists.sourceforge.net \
--cc=iss_storagedev@hp.com \
--cc=jon.mason@intel.com \
--cc=linux-driver@qlogic.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-net-drivers@solarflare.com \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux390@de.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=michael@ellerman.id.au \
--cc=mingo@redhat.com \
--cc=mporter@kernel.crashing.org \
--cc=netdev@vger.kernel.org \
--cc=pv-drivers@vmware.com \
--cc=ralf@linux-mips.org \
--cc=schwidefsky@de.ibm.com \
--cc=tj@kernel.org \
--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).