From patchwork Mon Apr 17 21:26:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9684557 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4BE80600F6 for ; Mon, 17 Apr 2017 21:26:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3267E27D0C for ; Mon, 17 Apr 2017 21:26:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 262BC28179; Mon, 17 Apr 2017 21:26:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 436FD27D0C for ; Mon, 17 Apr 2017 21:26:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755012AbdDQV0u (ORCPT ); Mon, 17 Apr 2017 17:26:50 -0400 Received: from mail-by2nam01on0055.outbound.protection.outlook.com ([104.47.34.55]:30336 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753726AbdDQV0s (ORCPT ); Mon, 17 Apr 2017 17:26:48 -0400 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=aSr5wjytRY3REI/DPp2hx5l6KH0WPlUYJHT9VvEyFwM=; b=JfweZRq+Chht7K713C7zxOWkgCsaFar/BYTKqiSP7KE47Zd8QXAAQRj2HnCOFbxdbRKxdPQf7OuxehUPpeSUGt8c6QmGfKMyl126vHtMeg/zG9Ld8OWHXUttpP+kEzuNDqEHKT4KuNn7J6ToYvv23ErwjenBlzPh9CXhT3RE8xY= Received: from BY2PR07CA038.namprd07.prod.outlook.com (10.141.251.13) by BN3PR0701MB1411.namprd07.prod.outlook.com (10.160.119.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10; Mon, 17 Apr 2017 21:26:45 +0000 Received: from BN1BFFO11FD039.protection.gbl (2a01:111:f400:7c10::1:176) by BY2PR07CA038.outlook.office365.com (2a01:111:e400:2c61::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10 via Frontend Transport; Mon, 17 Apr 2017 21:26:44 +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 BN1BFFO11FD039.mail.protection.outlook.com (10.58.144.102) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1019.14 via Frontend Transport; Mon, 17 Apr 2017 21:26:43 +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; Mon, 17 Apr 2017 14:26:40 -0700 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 v3HLQQOa014344; Mon, 17 Apr 2017 14:26:26 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v3HLQP8D014343; Mon, 17 Apr 2017 14:26:25 -0700 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: Mon, 17 Apr 2017 14:26:25 -0700 Message-ID: <20170417212625.14309-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)(39400400002)(39840400002)(39850400002)(39450400003)(2980300002)(428002)(189002)(199003)(9170700003)(50466002)(8936002)(8676002)(575784001)(105586002)(81166006)(106466001)(87636002)(50986999)(2201001)(86362001)(33646002)(4326008)(305945005)(5003940100001)(356003)(2906002)(80596001)(38730400002)(48376002)(107886003)(5660300001)(42186005)(1076002)(36756003)(47776003)(189998001)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1411; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD039; 1:6IRZyHa46K8ZdEPJZf1n5vF+ffbUrxLSRNWBmI5uPn5aOKcGpBi3KkY/747RrSwbLZOUvMYIHFgfBMym9MQa/F+3yLsO5hVig4Vg5puKoE8rwSGRBABNtaqSeoKKy1OeoccRLV4pEM2Yfc0OO+1iVqfz1oLA0tRg02KYwaCmE0vUZsMD/Y/LqEjjkerk2qR5HfdIkCouZ+46vCFWbR/RTzkhMmJPdDF08e2H5oV5BOZHNk0+eVgTWa7WE0RpijEABbvjqY1mQxecWmBLicFzKRZJ0y2Tr8nfNLAySyo3hTNFYRrgLy1YcTqPn1d84+dznh07PdBzHE47AsggJhs2DZzP4Biyb/KU5N5o6Sc6HU+Fd+sjzsWBR0uUYBgYKb+/5gCyhVsC1vFN6TsBz9JUtYlz11SMxr60z0J411cu9XvN0jusotzY43BRUbhGwh7EnwBeMmx0r1lc8/DSk5oSf01LwRdOSf0i3MB6+rdh7cCHy9DSBSj2TpWuaum2ZrhC2LDuFynGuBMrlUMSBn3094ezdK8xjRdnwWeniAkot4M= X-MS-Office365-Filtering-Correlation-Id: 0bbaae7f-bc5c-422c-09a6-08d485d871dd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:BN3PR0701MB1411; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1411; 3:t0rIoyiNWIreZyHU7RcXS1y/Tj3baytvUOWfir1XJ5aHQoF18PbhACYdIMCQUQk321SLVTBWmbbxlHwEOdyXLolHB3vAJ0uY7Rv+dczIIzjdkxe10cw/Har3LzLMsKoSWfM+NBlGbcSBJUZjQob8i3o1ah89jRG252py473AJhqF5GlBUv4SOO776uAdFokUDbwWImQa/rM4WhBUJrD0WD6HbQ8HoJzZYIbEngCtrwMUvXj0KFDjtRKO7jooGEmCPtp3vXxud62FI4Q1V41jNynSPOY+vhqPC5ftBPjSY+wDBXfAi7lUzvAr0tyW2B6q4YWLoq+3FmOuIs0T36434zyqYAAT32DdwGl3F5y2fbiQgDAV6YA2eeOePOkldWVoSm1BSGzS7o+2MOEdefGbnkOPGFdCIiDcgmHgrkR7Yb+8JdHQInVUF4BjR+AM22+F9KxcB3ENFiVO3XnynO7yEA== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1411; 25:c8tIJfHBKXY6CDfDpLeRPfXkT0PBYfsmfcXEtnm+9lR4Oqa8sRNaK3y8ZTezPl/0zO9ZqtgU8w2VPOMyrZ41GYRpm4Vb/JI9JF8Oqgd78dC/i9WOXUJXUkbzpEjLC7ONC1MKPPvUhohcrqUoRbe29L21YkEVYD9IPzW7dPw/fywdJPvZWC7qLyAMWa5whtSNNwXK6C+L/Ps1FugPMYUnO50PScBrJ4ZG/1dCzk7hQT1cV9KLTELvxFUdFIw/y2W225vA52TOUB1+xqgdYr46sblZ3erJHLtnK4o81dkACAVQ6Nu0IIURmYYLbsB3EERy8Ro4LRfFYSbs8Z70ED7OAoCz+sqYCU15RAStGspzoX9tnrJRwdIxJbZX5GdFTulcHFkh361N32SrMBg6hrTJSbopdlpSQEFH3tEQB4xG7U+T9TfcozcDigHOQVHn0Hnolqs4xAjFl7a7xjuFNeqgYA==; 31:SMLc4P/rM8B3Zj6/4jEB7OCOME/EzYO9UUirCtNhOMqB5M1sKo9Svz8XfE6oXRSYh/zKL95f6KWsxPfWdIPWWec0eoOOcPPk3XKw7j2JcYsxxI810fOMYmeSBb20Prtbey+SrflmyV50ESbwjOyuhmYPpZ5dVsXZlnBVxU1gTHHHpgyL3bntXcPHm1m9dK11Rhkvl347tv6yXx4tzOcwaigbAvOIufiUt/3b4TbB5D05HjVR3fboquhGngONWkgMA2RvKC0GQPvygUDR6g5Tvw== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1411; 20:xzN3qXPVWgs3GktcqzW1c0u4G8/v68LdCFXCNsyM8olXjC+apnTD0x4njlj/CHH9utnpDKUGduSza/I3svWubBWYAlwq2zoO3UEaQErQS8ZtcZyAlk7besBzk274mdFajsXHQ+T1mwMGy137DgN4Km7WJFnBNpWOfnbynM43nnpfu4zmohgpm8FCftwsZwCP0xK/LRbrsn7kF3PrRVVTu3sqiTUjT8pMalUAPnyr2+VxU+cm1NlVPDT6ubKpOSRbVYQs4NIsOiT6FpYkZGU0gig8K38N/Ob/f4/j7AcqLwduWgAkjb2Wip5o0ECDZ3uyAa4J3LUCmAbgoCeeMUplUuFgYAXZd1w0VslmA/waPCj2kI2465xWh7NgYNfBT7EnAWKY1ng7kCa1WIsJS+JLw//eq1I4dxZpKH1iHuVXsPtjFKvp6JkrYLbCIEjuETBhfdodZBWrm32eCjSbIHJvSJXz1kv0Ik8AMeNv4T3QxEUX1WEU/x2PIjXSBZ3TZWft X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(211936372134217); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13015025)(13023025)(13024025)(13018025)(13017025)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123555025)(20161123562025)(6072148); SRVR:BN3PR0701MB1411; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1411; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1411; 4:zSwvXz4gipb76WFDd3fHFWwkyCSsMMkAJZ3Wx6H+cyDc9BDhN2N3lxoAOgiYLtsiXFYCQStJ+ainPCfTssMs78qixTgVLW7w9N4y4yFnIXo5zRp0eKIz36lsBKOt5USEurB5dey21TiLW6AZ9P3ffHqUl3gIGuBOCK2/IiZCJd53paKEy84DGSwIB4/MVKqXQVeKKXBtk3yQpWP3hGtyvUxazOy5SfXQ1thMKnQXCgaWAqG+OEuavyMlL/2sg9oTpn6IJsQ89m+y9c58q+KrfQFMSCDLLvVlDfvzSxsOJzV+7HCgP2adrq0qsIiLQphI3a/OgiDcSfVgCDEZuTNTDQneqmSqyh2XVbqjxr09pBC6zFc3ekxz1cWMCyvzuX74khCqN3Lfb0QnRwIHs9noxgtRmxHWZ2Nm8ztuGKiZ1IC76KKv0MepbiJzwJ3c72HZmaIwHIgTdXARpnvx1hRP8U16B3TN2vMQMOGAbR2er8LyD9On26D1Tu2XVSzxz2ugVx/rEwFwW7bpSlG0or0cuWWbRD+JKxq7p0w85DFw7TsPa8bhan/C4LcyruxZrZK4iDhMi47a9gtsW+UEIZvmGzrJ1yDAG0srYNVyfVJKRiWuQr9E5ttt29vMgh9EJsR0o7JTEw+QU8szSJ6IuHsAKjtJngFB2xQfoPCbw/YC32Rt79Ra/MyTa9R/yhaG6D+1mh/5FOY1RGxgTpdgKzB7bAxmlEjyj8UKB7V4cMhg+IaiSiL0WkHwfcmx3PID3QuqyGaTYvmKGy42sZJI+4z9dtMqxwDX0CbRKv+WRao0SPjwX78HR6q4MsH/aD+OUPgWghzzNK5PdFCtxLjWy4fhtNfUbqOiLwStXkc7YxmE7bzganIY3X/biKW69lY0lgz6 X-Forefront-PRVS: 02801ACE41 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0701MB1411; 23:izXCKva8flW9jMVojK/VcTl4KfKeXA6DNpQmrl9?= =?us-ascii?Q?qF1cdTyotLs7LPZzp2ZBkTiZKQhiVlcHWhYUeGJCrBJer9dcx+ZAVg//PrEp?= =?us-ascii?Q?e5SikANWhAIGWfxovsFz/7M2mF0lqKvZutSsTO8YM7yBw0tjka9dDDtsfYFO?= =?us-ascii?Q?5BXZxE7KI/5/s9KWsm1dDRBOqVE8JIrxv6VNTsaW7BID4ZOMPTKEnL9v56EK?= =?us-ascii?Q?F3AoXDannVUdNA37LZac/eOsdYL2Q9LAeZDc00Qe9FSEi2B35Cha/6DCXzRc?= =?us-ascii?Q?qwbjW2Tg8xvInfZ96pkenybah5/Uopdhfz8xRRMFfyho8xBfJ+pA1CAZANxh?= =?us-ascii?Q?4XZiPtl3c8dK4ism8bIWPMtjezLqjFNWHBifLFvHXKE9Dcj3ipRyFCVF8zjv?= =?us-ascii?Q?AazW9t2tl/VGq5GzcMfDb+1aMfKk1caehwnZY3TLXhmUOOsEoTEWVAQTWnB1?= =?us-ascii?Q?ox2sBJZddsI/mX8joabC2c0TP2fq7kCfCRQaPbzP/m7pmCzLORyv4okCEN64?= =?us-ascii?Q?ql5ohtFO0wNHtqpXurFkipJ7OGq1OuWca3Igf2AZIm7z+3BmAG+RIcupt3gs?= =?us-ascii?Q?0j/Em1EOoD4z5OSDouiklVmETNXBtTpZMGKAfXsWUtXitcq8FUJgwGAZowiA?= =?us-ascii?Q?DRLKytbNKOUW29C8RgF5AMYCXCn4NVI0eh/8+o32eMZ0UQ9BYotbPm88QKom?= =?us-ascii?Q?H275XqHrbT9Hg95iE3jCRHcbyD87n2IQZFTjuFoxTFuMoNUKJz6iCEbVF6Yu?= =?us-ascii?Q?SgN77aUSHAWVvisVHElbd3SesDk4/dNTQiZ/Y+zEzOQlztM9db8/ej6Y8YKn?= =?us-ascii?Q?rRgMu9qlJaSnJNxl99VnzRAH5Yg3Hz/fvhNXANzDS9aLX3NRpEjbodVGbi2z?= =?us-ascii?Q?3y1u1XjaaGHgFsLRuQS6yz+ao1LsIV2NO5XVwqkCBMVLYeilvi18LG6WNAmf?= =?us-ascii?Q?y625Y6FcXrnpfUmctfMitBQlujiaDSFaFvzmLKtwV9A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1411; 6:L3Tr5d4H58VhGqvB8yuwAl5L/ZzMeiFXPmskzO8lig4rNrhfkhkAXiAq/+KhNtTuAcQ5Vw4yuyaIYzLas7UCyTX4QI+E/m5X9/8wgDMvLm9f4S7uwagT6/Yp1ymZcqP3hZCdR7PvZn455QflP8n4X98i23+2RLxc8bbKNNgB1MH0co8GjNItsmR9I95X+NDyOSSobF3fGshkqdzbQTs4WUInUJ9hCRSy9WvHPmg32KawvrllpuLa88TG2Nqz/H5I6TuxG7byN9lKgKhs5LLYjmFwlHmr/pEqF9zImwizhsbAW64/GjOOsiDgvQHiK5Qwi+B17Jg/xw5jzOlFo96v9M4tuuyuc1uPVTw+xs7iWnWBTjBbKHqpR4GcSj5EhgwN2Yey3HIg6o3S11CFQ5Ta/JwNhySQF49gvjId2NAnvYZyL/ZI3+F/ZveTx38l3/sB6gaQX+abcuupZxOaGVSmZQ==; 5:qEEk5r2TlfuNQ8VE84Vndjb2vbYhWA37027qdid64ZJ56LHYsJ7tKRQfFUr5gxFP5xA/fMfZMwcV4cEN9JIIaT6OCeFr6RQfVvi7PqLjrvBKq8sThnUQaB3dZTa3ewqX08Cm+hrJ4B5a6MLAI0MNqg==; 24:bh8TsHoMndg+6/S2UK3LUEW36XZnpoUO5At53MyXkreZGM7qLUgbW+IOavdbsx14BAkgZqm7fW3uwjouE+XsBM8J1QuFmNagnrOyBufF2b0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1411; 7:Z5+eNuY0klOdk6LbJZOqS0vyuFtIk2PE9WWfRcmQjQ8Zk76c+a21Hw5PsDGi8YfcwyxAhktWz1+lP8mlQJX3waYh5aUmSYDwhDXbn2sg123SfmEGaovnY6gMHQG/w0ZFPNB2lJnoEsRV2CzlqlOXgO3BzsDryeUSLngpglBzUe6JtSt+6Zuevgu7uIFlEJ/zQqOAotse5B3deoKVVbx4heCeDS3krBJehsja3Gcuz/2ECqB6PTzLZVhFVPBAs7FuONfvlpDGfkwKLeXbfond1S5ghawyTGQt3KZKmaTyasjrU3z4XmnkULUhDz5yolMRt4G394/mMeFOJwnNtbYuqQ== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2017 21:26:43.2392 (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: BN3PR0701MB1411 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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. Fixes: dfef358bd1be ("PCI/MSI: Don't apply affinity if there aren't enough vectors left") Signed-off-by: Michael Hernandez Signed-off-by: Himanshu Madhani Cc: # 4.10 --- This patch has been compile on linux-next tree commit f4fa27cbc0b6b9f3f41a8fbd771af3abbc480f13 Author: Stephen Rothwell Date: Thu Apr 13 15:35:23 2017 +1000 Add linux-next specific files for 20170413 Signed-off-by: Stephen Rothwell Also has compiled on pci tree next branch with following commit commit 9c5579a1a10f29c1491b38cfe8a16bf2d0a68aa1 Merge: 22e2495b76db b8e82c1bdd28 Author: Bjorn Helgaas Date: Wed Apr 12 12:25:43 2017 -0500 Merge branch 'pci/host-mvebu' into next * pci/host-mvebu: PCI: mvebu: Avoid changing the SCC bit in the Link Status register drivers/pci/msi.c | 14 ++------------ include/linux/interrupt.h | 2 +- kernel/irq/affinity.c | 12 +++++++++++- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index ba44fdfda66b..9e1569107cd6 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -1058,7 +1058,7 @@ static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec, for (;;) { if (affd) { - nvec = irq_calc_affinity_vectors(nvec, affd); + nvec = irq_calc_affinity_vectors(minvec, nvec, affd); if (nvec < minvec) return -ENOSPC; } @@ -1097,7 +1097,7 @@ static int __pci_enable_msix_range(struct pci_dev *dev, for (;;) { if (affd) { - nvec = irq_calc_affinity_vectors(nvec, affd); + nvec = irq_calc_affinity_vectors(minvec, nvec, affd); if (nvec < minvec) return -ENOSPC; } @@ -1165,16 +1165,6 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, if (flags & PCI_IRQ_AFFINITY) { if (!affd) affd = &msi_default_affd; - - 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; diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 53144e78a369..b3c569f7405b 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -291,7 +291,7 @@ extern int irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify); struct cpumask *irq_create_affinity_masks(int nvec, const struct irq_affinity *affd); -int irq_calc_affinity_vectors(int maxvec, const struct irq_affinity *affd); +int irq_calc_affinity_vectors(int minvec, int maxvec, const struct irq_affinity *affd); #else /* CONFIG_SMP */ diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c index dc529116f7e6..e545e7a96270 100644 --- a/kernel/irq/affinity.c +++ b/kernel/irq/affinity.c @@ -69,6 +69,13 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd) if (!zalloc_cpumask_var(&nmsk, GFP_KERNEL)) return NULL; + /* + * If there aren't any vectors left after applying the pre/post + * vectors don't bother with assigning affinity. + */ + if (!affv) + return NULL; + masks = kcalloc(nvecs, sizeof(*masks), GFP_KERNEL); if (!masks) goto out; @@ -143,12 +150,15 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd) * @maxvec: The maximum number of vectors available * @affd: Description of the affinity requirements */ -int irq_calc_affinity_vectors(int maxvec, const struct irq_affinity *affd) +int irq_calc_affinity_vectors(int minvec, int maxvec, const struct irq_affinity *affd) { int resv = affd->pre_vectors + affd->post_vectors; int vecs = maxvec - resv; int cpus; + if (resv > minvec) + return 0; + /* Stabilize the cpumasks */ get_online_cpus(); cpus = cpumask_weight(cpu_online_mask);