From patchwork Mon Dec 12 22:40:06 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9471465 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 5327F60760 for ; Mon, 12 Dec 2016 22:40:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 43E7C284F7 for ; Mon, 12 Dec 2016 22:40:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 35E1E2850F; Mon, 12 Dec 2016 22:40:30 +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.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID 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 7E121284F7 for ; Mon, 12 Dec 2016 22:40:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752726AbcLLWk3 (ORCPT ); Mon, 12 Dec 2016 17:40:29 -0500 Received: from mail-by2nam03on0072.outbound.protection.outlook.com ([104.47.42.72]:65446 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751697AbcLLWk1 (ORCPT ); Mon, 12 Dec 2016 17:40:27 -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=/FL6YezALfLKtD7qZ3TDowkkXvaqwBRUDZdiUvUjDpY=; b=Xw77jjlOILywEIYeP6Eb7qXCx4Ny8s9eLC3agOUSDrVunCPVJm7dilTTpdx8Sjztr9S0qXP16et4tBNkXUxqMa3l1YXckYL74+AbBBft8sBITKR7acUX5XSiKrwqQWi/0u3OoR5b+/TFJDPCr8gFjDhorWYZCHbZJ7I8/mmEQEg= Received: from BLUPR07CA063.namprd07.prod.outlook.com (10.160.24.18) by BY2PR07MB025.namprd07.prod.outlook.com (10.255.241.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.761.9; Mon, 12 Dec 2016 22:40:25 +0000 Received: from BY2FFO11FD002.protection.gbl (2a01:111:f400:7c0c::138) by BLUPR07CA063.outlook.office365.com (2a01:111:e400:8ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.771.8 via Frontend Transport; Mon, 12 Dec 2016 22:40:18 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; 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 BY2FFO11FD002.mail.protection.outlook.com (10.1.14.124) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.761.6 via Frontend Transport; Mon, 12 Dec 2016 22:40:18 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1117; Count:15 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, 12 Dec 2016 14:40:10 -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 uBCMeAAx022064; Mon, 12 Dec 2016 14:40:10 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBCMeAUc022063; Mon, 12 Dec 2016 14:40:10 -0800 From: Himanshu Madhani To: CC: , Subject: [PATCH v5 2/5] qla2xxx: Utilize pci_alloc_irq_vectors/pci_free_irq_vectors calls. Date: Mon, 12 Dec 2016 14:40:06 -0800 Message-ID: <1481582409-22027-3-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1481582409-22027-1-git-send-email-himanshu.madhani@cavium.com> References: <1481582409-22027-1-git-send-email-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-IncomingHeaderCount: 15 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39410400002)(39850400002)(39840400002)(39450400003)(2980300002)(428002)(199003)(189002)(76176999)(33646002)(6916009)(47776003)(50226002)(38730400001)(92566002)(107886002)(4720700003)(50986999)(2906002)(2950100002)(6666003)(4001430100002)(8936002)(110136003)(5660300001)(189998001)(50466002)(626004)(69596002)(81156014)(36756003)(48376002)(5003940100001)(8676002)(80596001)(305945005)(2351001)(4326007)(105586002)(356003)(81166006)(86362001)(42186005)(101416001)(106466001)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB025; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD002; 1:j2VN1GUV8YQwwBpfDhtvpdUKqwTxajH1RP7d5YO2EBqCc81hasIhTVB1IjkiNa1OZEsZfkgcnwrUHgotqpWwG7iGzGljfWXdhQRnnBMCuxY5rODeuWfL5KQ0PXRDOBAo0QJLqnZ9S8YUyJwf4fe2ajINMx5CG76T5+UlfGX4A23pfjwpA+nHmGcSj/+86CVxe1ATiZ8NK3oKIiay+dnMOnMiPf12RmYyc0Mgmr6s8we9hYlicSkrSzE6Y7wBF59JSn6Y7+sT1EYAiR4ePygkIW2zUgGWbOgVMH85WmnaU+Te6mf/Kl+6lJ6ek0CjHUvAOqDOMKpfO1XnJICc3WY634tGvvLeGO28Aa7yu6b+Km2EH+DuDoBe8b7+rgwX4pYNTAWng1ucNlJgprmWiNYD82WEMxpe5V8arvbzPU09s23ww6nAVCvTBmL+uEmNfJwy8Sc29NMsvVNBSrM8hCQWgwlMz07LUbG4TF8aUmR4Zf2Xmoo54lxaanvZIJToCi2kE9TXg17shZAfZC3RKPw7GmMj5Zn4cylO0s97A76LEs+W6FtVFpxuyrzp9475vVdy X-MS-Office365-Filtering-Correlation-Id: a201e6c1-13c0-4a68-1b35-08d422dfd936 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR07MB025; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB025; 3:K9TpBvUb4jcOscaUd6nc8Zbx2w2jLN4VfzWtQ+KtsAY89j6DHsrTsk7ylv9cZkQ0+Fk4E+llw+kwQwIXu34uHIlI/Mq8feh+GwcpJt7b/CaYdnGpejTpmzRqhQJVxIRQ6d4luVkXHv0kSVGvoqxbL2DpHh7yzBnEf+cfIm7Xl7ncRfZQBLfY4xaYcKfCHvLPSfZNqPUt6StrW6YLaRcMb+6ZFwmP6yJZrS3nbWyKN7S/Gv97ZASYyOHquiMuGgD+fde1MwkhliYFNLHueK8Mqi2RoP03owzTryqIizvyPb+wW/8kqQh0wEfPX2Whiv0SO31Adg3sqy1NLFVC4Jhc/2KKbZx8dTa0utxhDeiW22wzmOXFlR4rPIbJ6BQOJ/nw; 25:md5S2dY2vyyunOl7WNqYrQQVAM2k1s6mpw4AioFd/Ahh5iuJyDJb9KRedwBjlkOD0h6oCwMgB4zfB59Ma2sNxIs46nH4oMA8KRC3WXKnJRQnoicuWyiCrkEnGxMm3jTshTgE8ynaLt9YEGNkv+NR9nihjOVyL1djljnDRIuta3+IcNWC/mrVomtdSrjqEY1LKQ72JE1YshCY/D57fGsRlDjI4+/NNG34SX8Rk4fsF2NyjzctZq+No33qFL3pWw4LOAtdphIs8255JxMZtwrdz24gcTTwuHyu6TAcUhUvbvQvshncIzVTPSPCzVKxd+v+Rcd7Mmc2sS7zt8+HvYd3Spk02B49200LFf0a7qZ76J0ItiHqqagh+RJoT6+qLtXn2xcXWiTEiGFg9adVWkYOSjQq6ph7+ZPNO1PXZDt/i8IXucxo66A6i57xqIC37mA1w2FrmKzIkjIJfXGmiSOKLg== X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB025; 31:W3BY/I3NQnEvM8SazS30LrEj0OvBlBQrPWWhKUun0XSFGlClsa8uv07weiqD8bDQFL7EbwtbJC3V2uluqo5I++csN6XJZJKvG7PnG+VYrNRRxfWnxDOycl29oKgeU2rf9tio2h7oHXQPJCnhhdc7BkRgcfK+uxRiG1edb4RPh6ybU6pj4Cn3r60zR3iSv+dpVbewsXMqM4QspXZtcsAuX0H1kXqvDIHbc07vmaL/txmXIu31KsoqvCBJF8fNBjrr1O9mcl81TGt490rHS2Xo5w==; 20:TDFXI/i+zL55mvOFNb8pp6IxvYFpQmHiuFzbjlG+/BrWnwCAmIqT5f7K/XL+N49O/+dF1U2psZ7gdP1hgV3Y4atNBEecbwMO6lpdEslWFSH9KkkDPicHosYKNaeJPWWmb/s3DeORX3F77N80oIH5jIXw0vke4x73CZ7mN7MEV2/Stro+Czcid2a7cRVZhU8yZion59wcIpIXvn/kihnGRPY3uPSIsiXh9sMDJ+hG0dlmor592de83fMiNzrQIl2RqoaaLsFwENc6k99a+WtuflhEbsg7STyFmY7+VGcjBq60RPIFCBJvaJbebmUR+5cARCFzC6gqjeq4J6ZJsqiaGwbKOXIr6XfIQbD/sQuSLD4XhzTta4LjzyTmy1Qa4oNiWObLeTuI0YAVfUyFp6y4pbpdn3epY5iJRCv9bxUX6hJHI0iWhpZNYBdUHLOAmi5+0trNp8dw//4RN5W+zUZqi4UOII9l2FxkF3mk5betOYfrsKWpoBPJ3UzNeKsoavNd X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(13015025)(13017025)(13023025)(13024025)(13018025)(3002001)(10201501046)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(6072148); SRVR:BY2PR07MB025; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB025; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB025; 4:OPde1wi9jooAR4gvUIN9+YJMhPGJJgcYZtLOASX73pT3+FVC9P52UUKzATe2jzfLAZunp9WHvlrZw8t8C7vwPxS4UlHtPh9Kk0zCG6/tnIypz4S31oNRtTIoblAq/nn6Wo24WDWBCr1ckdr1SxA0J1YCPgcpDi6d1G8Pra5uEugP1Nj+zGx5g0lit3rABiINqxBMC5jAWOlFf+zvGghla8BluqOyN+3oaTK3LA57T5AMoQkfV30Ropi9gHEiJwdkXg1eqLlOhEfZaDP7ZgF1rlR2Zu6xpyGn+SGvV9OnNW5FvEN3NTbTZhm8vRtJS0ov7nCJ3eYqyvR8TK1qlUEpwevAElJh1kLYhof39GHZRkCVvCCUTf7xC2Xc0vQynXChkmkNMIFzb6Fox9KKH9v44W/mhtcwbN++/PgOikM2R4VUzdQnCubedzeuF8U4XOE3ToLyF10BoEn0OV+/jUPhNKN/9jxBCaxDpzHIlNk2EHhXxyoF9+/DKi2gPlW5C7Zx6qgMW8MOM84FA1NON0SkOMgR1MNKBvcgSLd+lGmwWWdvmzOv/7SjBXII97YcGfkr0XBTCj00XQk+b/zHX8WRciLSHgC47cg7r6+RNXphzKOKGBXbpZ/ipyWoh+y+WGsytXsDwjUow13mQyWw6BOQom0ULJOGg+ktrDxXm2gugdE= X-Forefront-PRVS: 0154C61618 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB025; 23:FU1/mm2cNlM9lmOXLBeVLwtbvE6ENRTOk2QkWz57iP?= =?us-ascii?Q?LPUVjKb8vukkZkF8sTPNEwjeaivJHGsJGsvnocp9HTKwBPFDz3m+E4NmIuPS?= =?us-ascii?Q?sYc3n3q1mpVDedd5byH2PQAZBMBvDQI1wn4WLC9Kwkpa2kn7xjM6Rxexxts9?= =?us-ascii?Q?MUr+26jYkw9dU7h+6QJLE8W15CxkKxhN01Z1r9YweQiOfnLQ3RzN5vhB3Dxe?= =?us-ascii?Q?XbuV4j1QaXJSZZN48HU+s26Br0hVnfpywclwCnWaEXuIrcEitef1ltp5EKgO?= =?us-ascii?Q?E3WzLKXHSFt479MzP45o0Uh+qk9pbaDog0h8vu1177K+QJrK6hinuD4CvPtS?= =?us-ascii?Q?mWWeQwlJjhpWncFFodV1G0yjGo0J+I+jIkCMbg33rzBtUBtuNUevSCZ3/Vej?= =?us-ascii?Q?laT698sBn7fb33XUrgO6+UCiLAf/P9eFduFUlmD7VQAj9fLnGQN2f/PniNXZ?= =?us-ascii?Q?j+IsAEqXo7M34VP52NKL/z8U6xbmxg2qMOh3ujALbTlE/Czo84j9GV/WNtF7?= =?us-ascii?Q?N1Qs+pNuB+M1mWaY8CbtcG8+dKD60iHBlCJoMBvPysYCk6jAWYfVSEEB4+Og?= =?us-ascii?Q?YeFCLTAKdi+ULJCfwfCch4x4xsldLdMe26QCpt3vZUTMYHZMGpxjTSdsDQOT?= =?us-ascii?Q?UTt0OwBjPZ1fKtZAsuHdIrHkUvOAQUQETOss9HuVeZe48RxFYl3PtIfZYaFU?= =?us-ascii?Q?cggBhPZqUk3aatGlsGWG9O6vFMOrFDKppTCK5lmQwB5epBd/sSOWOYCYc2Xa?= =?us-ascii?Q?dryU2Ydx5gs2RRAnruhCJY/8LitCal9YXYohO5ol5/Qw8bCs2VPQA8lQpqhw?= =?us-ascii?Q?ffKOBNSJbeGoeHmI2ITfAfWOycbsos1PcgJVBsVFOdI/H3OrTqzETgoaXCKb?= =?us-ascii?Q?HZ5eaEh2MV6enMFvdHg9zlIypcLQb7kgbfjgn92CnHiyhycgfvvQ4Cvnucdq?= =?us-ascii?Q?kkfJlpw6EtNZw2TBgJAl6hWhajuUPrJ9Knwjq4dwew6OQJWpQRMfENwJtGcA?= =?us-ascii?Q?2tHJGx7r3MfzgjnHVtI+qNQtFLt0W27IDDnxNIEjMW1tmusUi4nZ3eUHCCZF?= =?us-ascii?Q?ddsoZm9A3ZuBQi594v3OzvlLTB6rdll+mYQuWrURbZMji6xcG9u010PJI41a?= =?us-ascii?Q?EtnYgU+6ay1Tce1xM0tdeXiJzkQV/++HBE7ejkJ7Lxl7VdbK8OdQFoT6d1Sb?= =?us-ascii?Q?yQ302KonqQOzU=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB025; 6:09M+RSKTzyocpfamVuiRly+gXvkmclr9CFRwO+o1fY92mgFU/cye7SNkkv8PwMIHCQA0tcY62zbqJo4mGxFkxBGhvqFBbk6vojrKeXg+GrpowLzeDvkkZgUXrXzB+yNIkjWwlJq331MT8ycn3anjHF5clQFwT7sCzuENwl1VEQSzwD1Vy4LTMm4Hbi7l7n+ZY1uQMNu1m6qB8h4wNS3oWSH3/DNF1cXFVq37K1mFf9bqnN8Y6qAM0hU3B29BioVl70ko0mMtpjFSDpSNZE4x1+PtPkv4rPY9Ihb9uN8DbtEsUgAWAJvZD9xycUPtzwW3DgzbOE0pUcnOIbSpZ66LDoADvilPkIlv9yPME0kgwJte280F/ZwIS/+AKd3LBtWFbFDasCp0mKXGsyPg0Fx+74RqtTdcgCCfa7IpjCmZPvk=; 5:UYacF7KqcK6JtnJ6oNXIKh89CW4JGAv7dlAL6owtHf9xSSj0ecVi1rhgTCTJznq6UuYuZYkt9/KDME3raWvpXR45oOw5gKxz9Qd6VCubYy0nk5oQr2QbM8k5vbGgLKkyLs8JcSyM+Mq6AXbnCn9rpQ==; 24:ehZ1Xzg+aVMI2+ZwDFEiC0m23oPKZRS5RenLH0hNr8tQ7erL2r9BhJ7C35q4q3KQBvTAyFdy1MDAEd4sSDvs+dsZ1qcxQatQhodDUP7EmOo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB025; 7:3cWyJ2mISE9VewYRQjpiB6XO6F6fLxK7tNtk4lhA7FtP3V21yRVDjgWWlmSBqzIxG28hbyGFxNuT807jXuXaej69u4CQnFdf4uRaY4L5s/WiYYNtgnCQa9/PA13NFQoDIqvnRkskS8tBIvI03KhJZYaMv0YwBMQNfctEAYxfKhB5BkeT+s4dlefMB158aOQ2GqELTOkceN8pIPgGA6Bn5ziKLsj/wfCQSB8h8xsODkD3i4Cp6BzqvG4EvChDDZd5rDiKa3TJWRvGtkE8kUz0cAFYx49HlljD0vtW9H6mxbY9wWtspfOCy99G5LWKh5jGViY6mym9CQuaAG0m2ZvHc0olLby8ejXfpSPSJ6bEk4xHn3Fq3O/X7ZMJHUWgbZaMnCdhALR3Yz3EtDGlotu+9voKaH0p7N7aXTtzXFipWLvGvJSiPdc2NAV8wxQWlBMlNUtAcWdCF3XYfp8zsyYhrA== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2016 22:40:18.0995 (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: BY2PR07MB025 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Michael Hernandez Replaces the old pci_enable_msi[x]* and pci_disable_msi[x] calls. Signed-off-by: Michael Hernandez Signed-off-by: Himanshu Madhani Reviewed-by: Christoph Hellwig --- drivers/scsi/qla2xxx/qla_def.h | 2 +- drivers/scsi/qla2xxx/qla_isr.c | 89 ++++++++++++++++-------------------------- drivers/scsi/qla2xxx/qla_mid.c | 2 +- 3 files changed, 36 insertions(+), 57 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 5236e3f..d38c205 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -2747,7 +2747,7 @@ struct qla_msix_entry { int have_irq; uint32_t vector; uint16_t entry; - struct rsp_que *rsp; + void *handle; struct irq_affinity_notify irq_notify; int cpuid; }; diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 19f1848..ad5304c 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -3025,52 +3025,17 @@ struct qla_init_msix_entry { { "qla2xxx (atio_q)", qla83xx_msix_atio_q }, }; -static void -qla24xx_disable_msix(struct qla_hw_data *ha) -{ - int i; - struct qla_msix_entry *qentry; - scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); - - for (i = 0; i < ha->msix_count; i++) { - qentry = &ha->msix_entries[i]; - if (qentry->have_irq) { - /* un-register irq cpu affinity notification */ - irq_set_affinity_notifier(qentry->vector, NULL); - free_irq(qentry->vector, qentry->rsp); - } - } - pci_disable_msix(ha->pdev); - kfree(ha->msix_entries); - ha->msix_entries = NULL; - ha->flags.msix_enabled = 0; - ql_dbg(ql_dbg_init, vha, 0x0042, - "Disabled the MSI.\n"); -} - static int qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp) { #define MIN_MSIX_COUNT 2 #define ATIO_VECTOR 2 int i, ret; - struct msix_entry *entries; struct qla_msix_entry *qentry; scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); - entries = kzalloc(sizeof(struct msix_entry) * ha->msix_count, - GFP_KERNEL); - if (!entries) { - ql_log(ql_log_warn, vha, 0x00bc, - "Failed to allocate memory for msix_entry.\n"); - return -ENOMEM; - } - - for (i = 0; i < ha->msix_count; i++) - entries[i].entry = i; - - ret = pci_enable_msix_range(ha->pdev, - entries, MIN_MSIX_COUNT, ha->msix_count); + ret = pci_alloc_irq_vectors(ha->pdev, MIN_MSIX_COUNT, ha->msix_count, + PCI_IRQ_MSIX); if (ret < 0) { ql_log(ql_log_fatal, vha, 0x00c7, "MSI-X: Failed to enable support, " @@ -3097,10 +3062,10 @@ struct qla_init_msix_entry { for (i = 0; i < ha->msix_count; i++) { qentry = &ha->msix_entries[i]; - qentry->vector = entries[i].vector; - qentry->entry = entries[i].entry; + qentry->vector = pci_irq_vector(ha->pdev, i); + qentry->entry = i; qentry->have_irq = 0; - qentry->rsp = NULL; + qentry->handle = NULL; qentry->irq_notify.notify = qla_irq_affinity_notify; qentry->irq_notify.release = qla_irq_affinity_release; qentry->cpuid = -1; @@ -3109,7 +3074,7 @@ struct qla_init_msix_entry { /* Enable MSI-X vectors for the base queue */ for (i = 0; i < 2; i++) { qentry = &ha->msix_entries[i]; - qentry->rsp = rsp; + qentry->handle = rsp; rsp->msix = qentry; if (IS_P3P_TYPE(ha)) ret = request_irq(qentry->vector, @@ -3142,7 +3107,7 @@ struct qla_init_msix_entry { */ if (QLA_TGT_MODE_ENABLED() && IS_ATIO_MSIX_CAPABLE(ha)) { qentry = &ha->msix_entries[ATIO_VECTOR]; - qentry->rsp = rsp; + qentry->handle = rsp; rsp->msix = qentry; ret = request_irq(qentry->vector, qla83xx_msix_entries[ATIO_VECTOR].handler, @@ -3155,7 +3120,7 @@ struct qla_init_msix_entry { ql_log(ql_log_fatal, vha, 0x00cb, "MSI-X: unable to register handler -- %x/%d.\n", qentry->vector, ret); - qla24xx_disable_msix(ha); + qla2x00_free_irqs(vha); ha->mqenable = 0; goto msix_out; } @@ -3177,7 +3142,6 @@ struct qla_init_msix_entry { ha->mqiobase, ha->max_rsp_queues, ha->max_req_queues); msix_out: - kfree(entries); return ret; } @@ -3230,7 +3194,7 @@ struct qla_init_msix_entry { !IS_QLA27XX(ha)) goto skip_msi; - ret = pci_enable_msi(ha->pdev); + ret = pci_alloc_irq_vectors(ha->pdev, 1, 1, PCI_IRQ_MSI); if (!ret) { ql_dbg(ql_dbg_init, vha, 0x0038, "MSI: Enabled.\n"); @@ -3275,6 +3239,8 @@ struct qla_init_msix_entry { { struct qla_hw_data *ha = vha->hw; struct rsp_que *rsp; + struct qla_msix_entry *qentry; + int i; /* * We need to check that ha->rsp_q_map is valid in case we are called @@ -3284,13 +3250,24 @@ struct qla_init_msix_entry { return; rsp = ha->rsp_q_map[0]; - if (ha->flags.msix_enabled) - qla24xx_disable_msix(ha); - else if (ha->flags.msi_enabled) { - free_irq(ha->pdev->irq, rsp); - pci_disable_msi(ha->pdev); - } else - free_irq(ha->pdev->irq, rsp); + if (ha->flags.msix_enabled) { + for (i = 0; i < ha->msix_count; i++) { + qentry = &ha->msix_entries[i]; + if (qentry->have_irq) { + irq_set_affinity_notifier(qentry->vector, NULL); + free_irq(pci_irq_vector(ha->pdev, i), qentry->handle); + } + } + kfree(ha->msix_entries); + ha->msix_entries = NULL; + ha->flags.msix_enabled = 0; + ql_dbg(ql_dbg_init, vha, 0x0042, + "Disabled MSI-X.\n"); + } else { + free_irq(pci_irq_vector(ha->pdev, 0), rsp); + } + + pci_free_irq_vectors(ha->pdev); } @@ -3310,7 +3287,7 @@ int qla25xx_request_irq(struct rsp_que *rsp) return ret; } msix->have_irq = 1; - msix->rsp = rsp; + msix->handle = rsp; return ret; } @@ -3323,11 +3300,12 @@ static void qla_irq_affinity_notify(struct irq_affinity_notify *notify, container_of(notify, struct qla_msix_entry, irq_notify); struct qla_hw_data *ha; struct scsi_qla_host *base_vha; + struct rsp_que *rsp = e->handle; /* user is recommended to set mask to just 1 cpu */ e->cpuid = cpumask_first(mask); - ha = e->rsp->hw; + ha = rsp->hw; base_vha = pci_get_drvdata(ha->pdev); ql_dbg(ql_dbg_init, base_vha, 0xffff, @@ -3351,7 +3329,8 @@ static void qla_irq_affinity_release(struct kref *ref) container_of(ref, struct irq_affinity_notify, kref); struct qla_msix_entry *e = container_of(notify, struct qla_msix_entry, irq_notify); - struct scsi_qla_host *base_vha = pci_get_drvdata(e->rsp->hw->pdev); + struct rsp_que *rsp = e->handle; + struct scsi_qla_host *base_vha = pci_get_drvdata(rsp->hw->pdev); ql_dbg(ql_dbg_init, base_vha, 0xffff, "%s: host%ld: vector %d cpu %d \n", __func__, diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c index cf7ba52..8e406fc 100644 --- a/drivers/scsi/qla2xxx/qla_mid.c +++ b/drivers/scsi/qla2xxx/qla_mid.c @@ -542,7 +542,7 @@ if (rsp->msix && rsp->msix->have_irq) { free_irq(rsp->msix->vector, rsp); rsp->msix->have_irq = 0; - rsp->msix->rsp = NULL; + rsp->msix->handle = NULL; } dma_free_coherent(&ha->pdev->dev, (rsp->length + 1) * sizeof(response_t), rsp->ring, rsp->dma);