From patchwork Wed Mar 1 23:31:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 734401 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vYWx15Drvz9s7k for ; Thu, 2 Mar 2017 10:33:57 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="RVnQio5D"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753375AbdCAXd4 (ORCPT ); Wed, 1 Mar 2017 18:33:56 -0500 Received: from mail-bn3nam01on0074.outbound.protection.outlook.com ([104.47.33.74]:61903 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752865AbdCAXdx (ORCPT ); Wed, 1 Mar 2017 18:33:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=dla+HKZg9+ioVYoR9xKi0R1DuuEE0VtW09E4IOS1v2c=; b=RVnQio5DOlekx0NyMhrWjlKEO/gaYuv8+wzACNGQBIv+PBvyP/RedFex6V0HYVNnvUNP8tViAAtJW9QBD8YkIKTDrjNZLJpQjJEPTcCOJTuwwsfnLyaoNPr+2j/Tlh9MW59hm9sy/woxlsOxqxLVumFnm1f/jBbOrS59DfXSjEo= Received: from BY2PR07CA0097.namprd07.prod.outlook.com (10.166.107.50) by BL2PR07MB2449.namprd07.prod.outlook.com (10.167.101.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12; Wed, 1 Mar 2017 23:32:31 +0000 Received: from BL2FFO11FD053.protection.gbl (2a01:111:f400:7c09::166) by BY2PR07CA0097.outlook.office365.com (2a01:111:e400:7bff::50) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16 via Frontend Transport; Wed, 1 Mar 2017 23:32:31 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; lst.de; dkim=none (message not signed) header.d=none; lst.de; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BL2FFO11FD053.mail.protection.outlook.com (10.173.161.181) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.933.11 via Frontend Transport; Wed, 1 Mar 2017 23:32:30 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.309.2; Wed, 1 Mar 2017 15:32:27 -0800 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id v21NWD4U001081; Wed, 1 Mar 2017 15:32:13 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v21NWCfP001072; Wed, 1 Mar 2017 15:32:12 -0800 From: Himanshu Madhani To: , , CC: Subject: [PATCH] PCI/MSI: Only disable affinity settings if pre and post vector count is equal to max_vecs and not min_vecs Date: Wed, 1 Mar 2017 15:31:58 -0800 Message-ID: <20170301233158.1035-1-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(2980300002)(428002)(189002)(199003)(9170700003)(81166006)(47776003)(8676002)(575784001)(50226002)(107886003)(189998001)(38730400002)(8936002)(626004)(5003940100001)(2906002)(36756003)(6666003)(33646002)(101416001)(2201001)(50986999)(5660300001)(106466001)(50466002)(356003)(42186005)(86362001)(92566002)(48376002)(105586002)(305945005)(4326008)(1076002)(80596001)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR07MB2449; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD053; 1:qBZuDh2SNnu2xFgi+SYeEB3HDyApJTPjUmI4UAJtT7HGAHoSNzIjfUzn8Ah093ccNYGDnbSPZiQwKl7o3X6MlHeop1ZlEZzdADu5hGef6ABBn/dZnhKbKuYsq8WPs+zkpkWSyzPbqC2QwWEl6IMykKi+ggn+OYykbM4DBAmlkroFLNExOi+ujG7/Kqyy8tU02xtEiuKPPFdO8xDQwVNhP/knGBRvl76QvTyj2v6gjdcM9LHRRFxdwB4QRxuTmcVrjS8pGazazNCu4oWKVfc6UX3aoLpJtd2xB1ELffoOWo1Wjr00DyQStdel6UtJwVevYnupj2WdUrGv428XfVjoDPo7L242YmXBp/v7/GJxVnFnLHaa9mzVeFNMvqcAM1h66JDX3niEwMeAUFDMxH7c3bmEL3hTUYCjPyyX61RAJl8bB8GPAtDfoMDGHsT3OrYKxYu5Q+/RY5kgPFs9LeqXetoXnzn4DrMJHpgD5MDQm0E1h3/mr1/MiecCphJuADAY4qfO2ALgRmWuqoikb+iQ/A== X-MS-Office365-Filtering-Correlation-Id: 369c91d9-e3a5-4347-07e5-08d460fb3ab2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BL2PR07MB2449; X-Microsoft-Exchange-Diagnostics: 1; BL2PR07MB2449; 3:cQBwqCKipeDV++6JHHt5J4k/u2QrMhqKGEmTGh7MQuEZRgcUrWu+2vy2TtCyaHqGZlAqb1rnXP1zmLWHm36aMz3Sm9yxEbKtsKrbedYWUegMuDAY4dSw82G/iyzW5wcp0/whuOQbXD9tEKUpDrWu/QZE8qqx+NAO+eLCm6R0RxRxvYFouek/f88BCsiZPam2V7AuJRWKd+vCerEtCTlpMkp7VHpwjRvwIdUxxCDGvk2+zVzobs+MYqpeusI6PTCEOyxmY6u6RXv6mORaXTq9tjLOq46NHQLgUtgkZinRNwn0yTDtIbqnMBJiJJ0QZbQ1/CK/DBcsKSeYClsxhGEYRxdVI7qTvmR3ikJqsT08tY1KCSWPDJBoi7Ar8NHN3oo2; 25:hbQzyzNtTnJxxlDgz+B98Snadconuej3DP5FiVhejbNKrEwNMA41FeitU6k5Y3dOMcq5aKFZPnKb3nJGS+CZ3W4TRyfPZr49iu4s5lhvfawtCay+pxSGBDU0Z5T4xfLIHcFAUj+VReCeE3JNSK9mcjJPrlZwh+F6qI97WfNp1D7Yd7z+BM4QEF3wVTf1W+s/4qFUznyHvO3ogkx6OV2D94b8+JoanLhA5CWQqERht2DB0pbkr61QJV6VfqBbw8/xXc2HxbmozqkNQFveIG13ovw2btzWx6fe1EEGFhr0EOrPok0X90wGn1ImeADW6uuLGwozfBYkZFkOQVXPuuueBDQOhDRIxv8bQjOgRqNpPg07k05V2PBr3Fr74SxETF+uoGzOMCfF1+7HP5Hv24liNz+favaZpGRfxlg4LPh02xrs8mLaZAncIxQR87fBGGeuTT4cMwx5n84gkokLuLseEg== X-Microsoft-Exchange-Diagnostics: 1; BL2PR07MB2449; 31:MrxuJirrOmHN8k8b0Wivnq69Ej1KMeul+CwQ1mnQe/Y9JBReF3GmK+8GkZ0EE2WwIpr6RmJ6L+4tEzGdnoHSUqwBVslBK8NAs9RCRpIqplaLSxoZectvW9vEY2PS3umRE8z0xUFXjppiypTHXKeUIewNw4U0vkn7EfqtplgEmu56b/AwrDj+OK/YTZPk2XpeyJGW6zCxKH7+Y2gc1aTdPWevBK60MjCcPWPgavAOgMKEJHUrA2dw+l9AyMRjI/JCs57VQCPlKr6nn/Y2NZbFBqhu70DzFItKjrWzttjJeS0=; 20:SAkfreKE5E1jalVKDsyWxfxqA0QEghbS99WKp+SeJR1B7l2Vd9UZWm68swsel90TYtphkNdwPjGENVSLLaEFT4VTkcpY+NvGzVWrfGHl3BnBixi/xF21Iwo+o/8ZfQ7gZ4f0LGky++ipMXvomcoghfeFEl5G1vNMFZQyyewdLE5DbvNKF9IPMrxSdv26z+ccH44hkNl7D2TqUQ0vOfK+1aXi6Mr8KZRm5LtjefQWKNqSMNKiBj5e/Dfn3yQrTYz/vulUpyytNz7M+8l5eRFxx9zDfib+6csA2E79CofbfrOC6ekWDYhiBO+Pm53+Pn51/NXx57/Yyyr0SwHXhpuSHt4Cj9mCrs67fyuoPBQwxykCn6wqAokbGqrgFcXMI9H4JzeSA/pi8NMvzwEhCIOHWciba37LQopEv95JeV748twj4iWNGHYXTwvwZK18yZlonIJY04G1hdpiMFncyONuPRnEtxpa/B2QG11jrJZBfijELuDhGpO7ZVqF5jGbkpdU X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(13017025)(13015025)(13023025)(13024025)(13018025)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123564025)(20161123558025)(20161123562025)(6072148); SRVR:BL2PR07MB2449; BCL:0; PCL:0; RULEID:; SRVR:BL2PR07MB2449; X-Microsoft-Exchange-Diagnostics: 1; BL2PR07MB2449; 4:5nsf0Pa3Stwg+eyzMQWKznMMkQscqA8eAZBiJ0NllLvzWpjjFYNm+9yVJKvOmH/FNOXViccINw1k9n5cPnDmsAQRHnpagirCteyoWKGjM+RP/7/ZcHrwhIhsim1eLgb760SW8Iw5crN1w56zLnJsOfsZ1zV/X1654OQiq/g+IW4HsofQxPqw5FnrldOE65Cws7O0vGwl3i5FgnYConfXFkHQZywUyqGUeZf+40RA5fIa0xS2S4W/G6rRZ/DBONC35evzdUlmLOG4KHKhf3xqn954T14xKkJZF2Y751Mk+esu6pezefH6dsqxBT195p8oAo0s3rGm1tgJEIba0ho9ZTwTWcBVTST4dxp0b66KASZ5uZzDHtWZYQuWoybRB2hw0M8PljU/qnvVnXPh4cq072S7u39PPOUA8k5HIE2J4YeT5UnuXGOJ4xfPXn8FjQdz50Lw/BrLYZAR0DLNWOJph0CripUOUZGCutARaonJulqsqQspJotqgfs52fx3WseXxIY/3SYmtXLWKT9q9sdDYpcPEL9m4uJAohe4rbfTbBE1bsOKit8Lkrtm2dOZAW6t4v91DcPfRUMeE2p72p4as9w2AKmYDOfQAG7gw+x5YebmbgFAwXAYfX0bTGmubrF197zX9WTYrE4WjSi7D4PdgnTdYQy7DNiIrf/QaKgd/CsUE5/26WSUqBsHWQVmXdb9IDCsphGhRd5kVT/qYkFzr+34YezCyiMKm9fb3VxVeaVrIBGiLxrbvLFAcic3/wdt X-Forefront-PRVS: 0233768B38 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR07MB2449; 23:UwzA2ktCV+iUoCDjTYTZDDu66NxpH07kQjD7c4At6?= =?us-ascii?Q?z0Uo0qLxTlcsOGf6wdICX4yi1ROTXXyncdNhN77SS1KcnGfLWMUSzoer6VVS?= =?us-ascii?Q?fhW9FA+wv9egp8A/LL8UbGrAx1BeGww565d4z53MvIIfYGcK9twYNdl7RxWL?= =?us-ascii?Q?ZCz6O4J13BQp/+y0Z7sWhXzt0GCftmqqh9vBckqTnHgy8HLyE0ayQHPuc0Zq?= =?us-ascii?Q?peptX/0kaQ2uvOCHjmuTTKGDthYWzT5+vszktHXKTSbwg2YTHtZCtNu1uz0u?= =?us-ascii?Q?rKidsC5bWkr0JWp3LL3anGsk/WWcY5tyZGKL1DF/WEir+nCT59h5xhk+tU6L?= =?us-ascii?Q?7Cy8wtF598TPjJL+H+vRocjWBv4HQXbuFgDoUWBo0JMq0R18Mf3vtpK95rN/?= =?us-ascii?Q?PTRlXH4NfR+LxYNwCPAVE25xtZzwiPIkgInOxYaEgzTB5Nomk5K8HO2PRaUS?= =?us-ascii?Q?oP/7NySTqWC9Oqwd0P8/54s1K4lTvQGZ0imvFkqUP4xuv4I4LE9Ub0ZSS4X2?= =?us-ascii?Q?k2vybW+lylP3UQ9mERJCaCcHGr2Vh6o5Cf1FZhgKy1wntRzgK/PsnC7WzVFP?= =?us-ascii?Q?MDXJ0GYvdhM6rMqSiIDfVauvAxF8gVc5aZmO/jT4A2k+EXqSft9pZ3VdrXgn?= =?us-ascii?Q?7Yg9/lE3bAk1ytDmMM5/DAyM3Pjj3IrVzczAz1OVT7AeO+89G5kOKRGVcVIf?= =?us-ascii?Q?Icqp26E9yrTWF0F0dFtzSe2h7MWLD9j5pdpAsSsTy1XtAOTo17u4FasJiEDq?= =?us-ascii?Q?wjhJ/12D0/Z/dyzQuyTeVh8YBM0zT3L1aTKoTPYCQZnY0O700AEgmvq+tto7?= =?us-ascii?Q?9ysbLrpbUuy2xsGLepAP8lEqZMQKbNDS5caWW7ziplJ40UBhxQSovwi3TwW+?= =?us-ascii?Q?Eyu1Rx0QB16a1ql+TZ90ImZnNgAVT8HFUZAXwtMAiev7l8J+0LAaJx+iJuKR?= =?us-ascii?Q?MsiGnHJbRbWGVYdO0hdSGLu2aT7BVGNbiMwEDUYCFRP9GrCnjnhbFYqZif/Z?= =?us-ascii?Q?ZQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR07MB2449; 6:nLwjYPmayFeEZxtEhHH/EL3NPhEouRcjLKA+rCXeG7PLvTP6YLD62NapjuG+Csj5d9W83FrDkSm42cdMexwHYgjX90qU8Iv9sAFD8Wb7A5/Szzulx3EX0pkJiFCqoG+pMbCNDa/4tVErqWBEBiodCRYWMeV3i89mCccJpuH12l6b3rR3fIZQ/zuI/aGxj1d/YoJNegUZYE2h57W9x1McowjwjVvGpRk7vKxZbQukK+ETTA6H9EIKHgq+7YzNWyEyG02Bx7F4WQCMzvmogZ7LQRppqSHXTWRqb9ZfQE97tuWuDr5RFwG35egpskxx09D0zf/tdli1SS6ob/UehTBmp8WmYnIiCI2wSDtYbcTOP/H8R6OOi6NTo458PS3KXoirCGZnMTTeXQFWMm2kLZfyYQ==; 5:QLKn6N2TE94J6ZCza28PZxxMP2K47VFUAdqM4kNDfCH+B2FV0JBiCAZs/AbPgnIzbn709sGYuAKdzaTU+C5XFl67YlDtjjLkh4YQE3fNnU6F6SBJIr6OrF46bwaDo8nfuJASEwESx8sPoGwOket/pg==; 24:pFNp0cZIwJFGtbyh+JZMtJOwdMfhcvmPGZzssKs4qbpt5eJITCQq6h213etVwUT+RcE4wri3Z6bXpjJIZfSHnM0Kcpbk77hrP1/OWwna7P0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR07MB2449; 7:zm+Abvcmg92EOakwTkZHtN9ZJeewtycZXJRuFNvX/ylL6q4MqBT8xshUl3lkVNT1YtJNm7S9XfPtRvA5181kCyNWbhYVb8PIREnGwazy3rTqI+vDVURsYFY70a0Gt3ktQW06z4Mcocdal6l8iuXxu8mAxKBzZD2cYdSae5qRssK3cxM+SYUt1I43Phwrne61Ij9Ze8FIBp4jxbW0m0Ylt1RV7PxZYumzgxTVX3Cr3TcrpfPhx56Yxg6l8nAi6NbNL2BdAH1OVRaXlbfS95OnOvAkzIpoj+qC2saZSxc6RoaZ04uaufe4+psM9p8A5uc6Fq4yMvY45PkhQh49AGNjyQ== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2017 23:32:30.0298 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR07MB2449 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Michael Hernandez min_vecs is the minimum amount of vectors needed to operate in MSI-X mode which may just include the vectors that don't need affinity. Disabling affinity settings causes the qla2xxx driver scsi_add_host to fail when blk_mq is enabled as the blk_mq_pci_map_queues expects affinity masks on each vector. v2 --> v3 o fixed code as per review comments. v1 --> v2 o Moved the check from pci_alloc_irq_vectors_affinity() to __pci_enable_{msi|msix}_range() Fixes: dfef358 ("PCI/MSI: Don't apply affinity if there aren't enough vectors left") Signed-off-by: Michael Hernandez Signed-off-by: Himanshu Madhani Cc: Christoph Hellwig Cc: stable@vger.kernel.org Reviewed-by: Christoph Hellwig --- drivers/pci/msi.c | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-) diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 7f73bac..46c0cdd 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -1091,6 +1091,15 @@ static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec, for (;;) { if (affd) { + /* + * If there aren't any vectors left after applying the + * pre/post vectors don't bother with assigning + * affinity. + */ + if (affd->pre_vectors + affd->post_vectors == nvec) + affd = NULL; + } + if (affd) { nvec = irq_calc_affinity_vectors(nvec, affd); if (nvec < minvec) return -ENOSPC; @@ -1138,6 +1147,15 @@ static int __pci_enable_msix_range(struct pci_dev *dev, for (;;) { if (affd) { + /* + * If there aren't any vectors left after applying the + * pre/post vectors don't bother with assigning + * affinity. + */ + if (affd->pre_vectors + affd->post_vectors == nvec) + affd = NULL; + } + if (affd) { nvec = irq_calc_affinity_vectors(nvec, affd); if (nvec < minvec) return -ENOSPC; @@ -1209,13 +1227,6 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, if (affd->pre_vectors + affd->post_vectors > min_vecs) return -EINVAL; - - /* - * If there aren't any vectors left after applying the pre/post - * vectors don't bother with assigning affinity. - */ - if (affd->pre_vectors + affd->post_vectors == min_vecs) - affd = NULL; } else { if (WARN_ON(affd)) affd = NULL;