netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jack Morgenstein <jackm@dev.mellanox.co.il>
To: Alexander Gordeev <agordeev@redhat.com>
Cc: linux-kernel@vger.kernel.org, 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-dr
Subject: Re: [PATCH RFC 46/77] mlx4: Update MSI/MSI-X interrupts enablement code
Date: Thu, 3 Oct 2013 11:02:54 +0300	[thread overview]
Message-ID: <20131003110254.5f10fbb8@jpm-OptiPlex-GX620> (raw)
In-Reply-To: <b0a9f6f455aa03b7769e6d9cc2e7fdbc06732b2f.1380703263.git.agordeev@redhat.com>

On Wed,  2 Oct 2013 12:49:02 +0200
Alexander Gordeev <agordeev@redhat.com> wrote:

NACK.  This change does not do anything logically as far as I can tell.
pci_enable_msix in the current upstream kernel itself calls
pci_msix_table_size.  The current code yields the same results
as the code suggested below. (i.e., the suggested code has no effect on
optimality).

BTW, pci_msix_table_size never returns a value < 0 (if msix is not
enabled, it returns 0 for the table size), so the (err < 0) check here
is not correct. (I also do not like using "err" here anyway for the
value returned by pci_msix_table_size().  There is no error here, and
it is simply confusing.

-Jack

> As result of recent re-design of the MSI/MSI-X interrupts enabling
> pattern this driver has to be updated to use the new technique to
> obtain a optimal number of MSI/MSI-X interrupts required.
> 
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> ---
>  drivers/net/ethernet/mellanox/mlx4/main.c |   17 ++++++++---------
>  1 files changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c
> b/drivers/net/ethernet/mellanox/mlx4/main.c index 60c9f4f..377a5ea
> 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
> @@ -1852,8 +1852,16 @@ static void mlx4_enable_msi_x(struct mlx4_dev
> *dev) int i;
>  
>  	if (msi_x) {
> +		err = pci_msix_table_size(dev->pdev);
> +		if (err < 0)
> +			goto no_msi;
> +
> +		/* Try if at least 2 vectors are available */
>  		nreq = min_t(int, dev->caps.num_eqs -
> dev->caps.reserved_eqs, nreq);
> +		nreq = min_t(int, nreq, err);
> +		if (nreq < 2)
> +			goto no_msi;
>  
>  		entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL);
>  		if (!entries)
> @@ -1862,17 +1870,8 @@ static void mlx4_enable_msi_x(struct mlx4_dev
> *dev) for (i = 0; i < nreq; ++i)
>  			entries[i].entry = i;
>  
> -	retry:
>  		err = pci_enable_msix(dev->pdev, entries, nreq);
>  		if (err) {
> -			/* Try again if at least 2 vectors are
> available */
> -			if (err > 1) {
> -				mlx4_info(dev, "Requested %d
> vectors, "
> -					  "but only %d MSI-X vectors
> available, "
> -					  "trying again\n", nreq,
> err);
> -				nreq = err;
> -				goto retry;
> -			}
>  			kfree(entries);
>  			goto no_msi;
>  		}


  reply	other threads:[~2013-10-03  8:02 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-02 10:48 [PATCH RFC 00/77] Re-design MSI/MSI-X interrupts enablement pattern Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 01/77] PCI/MSI: Fix return value when populate_msi_sysfs() failed Alexander Gordeev
     [not found]   ` <3ff5236944aae69f2cd934b5b6da7c1c269df7c1.1380703262.git.agordeev-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
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
     [not found]   ` <bae65aa3e30dfd23bd5ed47add7310cfbb96243a.1380703262.git.agordeev-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
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
     [not found]   ` <e8b51bd48c24d0fc4ee8adea5c138c9bf84191e9.1380703262.git.agordeev-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
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
     [not found]   ` <9c282c4ab92731c719d161d2db6fc54ce33891d9.1380703262.git.agordeev-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-10-03 21:52     ` Ben Hutchings
2013-10-04  5:13       ` Alexander Gordeev
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 20:50   ` Keller, Jacob E
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 [this message]
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
     [not found]       ` <20131003194837.GA27636-hdGaXg0bp3uRXgp2RCiI5R/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
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-03 17:42   ` Saurav Kashyap
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-08 22:46   ` Himanshu Madhani
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
     [not found] ` <cover.1380703262.git.agordeev-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
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-03 22:49   ` [PATCH RFC 00/77] " 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
     [not found]                   ` <20131006071027.GA29143-hdGaXg0bp3uRXgp2RCiI5R/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-07 18:01                     ` Tejun Heo
2013-10-07 20:10                       ` Benjamin Herrenschmidt
2013-10-07 20:46                         ` Ben Hutchings
2013-10-07 22:21                         ` [E1000-devel] " Waskiewicz Jr, Peter P
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=20131003110254.5f10fbb8@jpm-OptiPlex-GX620 \
    --to=jackm@dev.mellanox.co.il \
    --cc=acking@vmware.com \
    --cc=agordeev@redhat.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=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=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).