From patchwork Tue Dec 6 19:07:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9463135 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 6EDE86022E for ; Tue, 6 Dec 2016 19:08:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5E483284C9 for ; Tue, 6 Dec 2016 19:08:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 533CD284CD; Tue, 6 Dec 2016 19:08:23 +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 ADFF1284CC for ; Tue, 6 Dec 2016 19:08:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752879AbcLFTIV (ORCPT ); Tue, 6 Dec 2016 14:08:21 -0500 Received: from mail-sn1nam01on0058.outbound.protection.outlook.com ([104.47.32.58]:27184 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752726AbcLFTIT (ORCPT ); Tue, 6 Dec 2016 14:08:19 -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=Xo8AwQ7O19aSHZaRhmrG4AE7WGIzh1IUPctDm27wsAE=; b=YebjPNEx130mStGkO7KhOK6cav6eHI0RARBAxey+XUeWrnZXcnvVfvmGdGrjGUAsqL5GNGoYAtTqYE1+0Ofj2cshZG/vfKi9thDFO0x0+a09r5Qa6DmsUYguDR3x0DWfz7TzvgRCg8bOK+UCNEqyhgJc0D5OBirNW9k6BIoZZvE= Received: from MWHPR07CA0024.namprd07.prod.outlook.com (10.172.94.34) by BY2PR0701MB2086.namprd07.prod.outlook.com (10.163.156.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Tue, 6 Dec 2016 19:08:11 +0000 Received: from BL2FFO11FD056.protection.gbl (2a01:111:f400:7c09::175) by MWHPR07CA0024.outlook.office365.com (2603:10b6:300:dc::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9 via Frontend Transport; Tue, 6 Dec 2016 19:08:10 +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 BL2FFO11FD056.mail.protection.outlook.com (10.173.161.184) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.734.4 via Frontend Transport; Tue, 6 Dec 2016 19:08:09 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1113; 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; Tue, 6 Dec 2016 11:07:49 -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 uB6J7moW032403; Tue, 6 Dec 2016 11:07:48 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uB6J7mYK032402; Tue, 6 Dec 2016 11:07:48 -0800 From: Himanshu Madhani To: CC: , Subject: [PATCH v4 3/6] qla2xxx: Utilize pci_alloc_irq_vectors/pci_free_irq_vectors calls. Date: Tue, 6 Dec 2016 11:07:43 -0800 Message-ID: <1481051266-32362-4-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1481051266-32362-1-git-send-email-himanshu.madhani@cavium.com> References: <1481051266-32362-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)(2980300002)(428002)(199003)(189002)(42186005)(106466001)(105586002)(48376002)(50986999)(76176999)(33646002)(36756003)(50466002)(101416001)(2351001)(92566002)(4001430100002)(305945005)(189998001)(4326007)(38730400001)(39450400002)(2906002)(8936002)(50226002)(39410400001)(8676002)(81156014)(107886002)(81166006)(356003)(7846002)(80596001)(5003940100001)(69596002)(4720700003)(47776003)(6916009)(6666003)(5660300001)(2950100002)(110136003)(626004)(86362001)(39850400001)(39840400001)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0701MB2086; 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; BL2FFO11FD056; 1:iLb4eRdx705LeZfLS/jPH6a71cz8T8zL9FTJiWIKZVKIzGtBqX0roQQTUItJ2sWuyIvP9ZvTB+m2SZnzues4WC+zeeLVh5zKF/QSrz7KZgICxKJdAJxahUgtLDwW+vNqW1UaYIYWCUSj4IoSDCAGN3iNeCBMvKEeoYy/EoduzK20BA3TGcPnBT5T91DzeaQjdglkmtdYrAq1xnbIaSQ/2njbPAt5vkAway2NxytG8a932VAzj5BZhV2Tc7uMPdgJ4vnz4O+hufs+SoPNW7YmTXybkm0mN+QZiz5PEXs4IeNqd/jjsDe2sAFfLNejIZij3TnhriM/NEpdWnDj4KhmzhSi+i95kOxv9iDvnnIY3dC/hEPMeU7mWbQ53Gimrt4BwjsL8WH7JdsOFO5sanY3wh1q5sbOu/PmJMq3KextCTexzyH5D+OyKgBFBR0TOI3QZtIBm9Q/BEwCpANRrP+DM3eEctpnAczjrzZ4iDj30lsn7Fuf9DsJGCHMdmX89YgbmKk59m5ch0zd0DNCZWbnpK7AIAbr/7MyJY8V6Cu1/vA3AhtpquE+7whIFxsvpMFn X-MS-Office365-Filtering-Correlation-Id: 29d9d3e8-fd6e-4ff3-e1ab-08d41e0b385b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0701MB2086; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2086; 3:ui/2pTvjhxTQGIUm7bjk0vx5uriNvrOYSJLIJFq5xW9j94BZMLcsvTcrOAViCVj5AP0hR0hySGPoT5wGyhZPVB/U/okOftRgbhxAiL3rZJ9j9yY+xjBKO85lXdaJMlmTP0p2isWFANQVuBFutjPl5NinbNwyCy6ggBZW22/m+VFQ9zdBwsqzNsGzFC6YQxrEWJh5685+kozTP8NmpcMYMMy5lbGsIfY8DRhlFd0MhNBabcCIgnKVp+2gybzMp+t0p6VIgiqNrLJ0DmKMeQRSJ46XwSh2Yrf52pHtwWingPlTGdzDvSZUq/19MM5/AieveHJLgq52qMZZKjw/3bg/OwKY2LsmiEmLNcTB180KiREZNKpnNt39eBM4LX4OEZpL; 25:8DZJVrcmtxNLjlO2ez2VxRELWYZ/poBkfiUzhfKHTSwhQCUzwyMvgrwUke5qBx6LkBV1C9ecH3p3ao6FPSl8RBvKU+Y9vg2z+w0TnnWnXva1O8D5yIoqS88qGsa9DcvVoBtn5qWX0fO0r/A8XEMELMth3NOydKiKjwnyvDp+9kZwecc7fBVhOrkyEYOtmIMz1B0+XdjuSX2oXLtAmkkb/C2sdR2HIlFCYJg1zMG7smBMScOtPWUKhVG2+WC/ufYsLXD6tubvrTBZng8R5fGgq9mNfj4GzHwXWMQrFjzy2rIrWtMYPXDq2u5V0NKhW3bNyD334f4V56fHH7lDcoUjZFsbagf8TIpkG+fAhUgzNGh4OUEPCvn+j5aURx9miXB2dYnZh0D1NPxyUAOh+2Vp0zjxovqNDKKwst+qiL6mzSSfOAG/1xJ6iO5l1jZ2doY8nsTMy93KAvErjkI1utOLyQ== X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2086; 31:KCGXQko0wq87YhVkvvAehhJIF4cm1sJfGFgDYU3V3hEzULTYbcCYmTWDXHI2F+YAePLy56CcCvskiqyd3pig6TelMWDqvptINLcnrQcpV1WhITBDcvQ2SlpvvqKGHBvGa8lY0dC49vtaUfGon4f3A5Aeh1KJ+Pm9Vvn8gIsTlWnrwnRaGAh0pzCNiCRZHwYwX1VmK/RZOQAC32GkWesvIjK7IqOJbwUi6nOA4/GQqkhz8kVeF6SLwGmEzne0vD/kMqs/VNPIPoOxH7nCOKVOMA==; 20:LqJQhHZZJJATFMONlt7cg8r4ldRkamrZT6RGAFCkiRn1iMbMaPXCDh9IeAuD2rGcKIW/xiYXRF0R2ijqQNeNgR73NMjkj8mAcexz9spw3wzZ3nJYIIZADOpjf2cK2jHDIA4FYVNmKmdzMqlStEoRakq2ovzQuY/WVACq/HvqJ+nzDh+BkqSK9Y2CZr/PoRAsIG382qF2ZRq8OqmYIBQg0dceswiCp0+kfxfYMN/EqI7dPMjCcPLFVYBUw28A2zIBzDKcTg6e9gLathT7NGUvNX38SYax3xET+Zazvj6H9JU6mInl3D1276PBGwA830sDbh14TABTAwE9C0MmPlriMWo5lregPtjG10pI7023ivTtZZNjaM21k1u9n4ddTgg4cPZ4swMQvwq668vZyVjI4bSHvY+RYHHnABH++eY2FtA6y73RpEMlBhY7dRobgpdPOO4L2waHxM+YRxgKP16QQwl9nEdf5P3tR9SPA7QGPZe9LUCXSmCVk+GfdOSh9ESx X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13017025)(13023025)(13015025)(13024025)(13018025)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148); SRVR:BY2PR0701MB2086; BCL:0; PCL:0; RULEID:; SRVR:BY2PR0701MB2086; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2086; 4:+dHAmd/f+2bOPCf9i5ckCNlcsKztTzdjsjOy+YWlhHwxxs/gzTGCFVfBwvYu7pMsQa6sGwZqTDdjCN2WHgPQI/4T+9etdFoNN2D2BDSV9Lp8ZiduwivZPLNj8zWdnwpiMX2ytTmIV76qe6PJogvf96+kFf6Z7XOVZPKON0VMY99TJANl+9ca9o5fZPXz2dBB4PE3SU+O0I+Qix1BAoTUC1nACpmCpVdGULGtWlCE/W15Bz4Etzd2lD9rAlPrcD1Zosc307DfvRWfrYNo2TSNIkoL9kBSESVwxAzmHhp0EwzkMx70t6GEDtdh5Wk0fpOliG0GUkmoTvMHCGPrVNXAqsxXOpyJIM+j0E/8xLZVUKqt5fUDzKcTcoAmTUwrG1Iqw7dUfwAtVRgzazlhouDIE+V5nuoTM3gUULQdTuhFPmDuHm3G24xlaVNHgZaNW7GAW1tzMsSC3FVu4ApVCfdYD/I3P++Z2rrCOvlF4lv93UgQc3L+sdG9U/b30M1FZXgT2/audQfmnRFA6ahOMkW/oyDb76pgAhxt9pd6E3mvDE/OjbjJwb4BStuNkPnn1DnQgux6EmmCJajU7j4zb2TqobimTkHS03v+vRoQlSr5ULGw1PaJsGnMVhOSFM50nRbkM7YRZqCgteeTkJT0y3y3PX+daB9oWdWQBbISC2RPKQw= X-Forefront-PRVS: 01480965DA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0701MB2086; 23:aynz+zB2PjflPNqhV7pB4VXTYag/8HKljjKRM9Y?= =?us-ascii?Q?phZLscpdlz/95y6sjUX7oJ4sewZD264q9efH70ULxJOiIn987jes7LxdliNl?= =?us-ascii?Q?KtdXiWuZf8OKD2QFy0KmabGlWYUU2TxmvDroBCblr8LMoF1d9XnO4UAz76RZ?= =?us-ascii?Q?x21i08XDT/xNXu7fRODo88vujkxMxaB+OdMv6MkYEQIdZPZ71W4w3or8Qn50?= =?us-ascii?Q?73Hp6H7PU/xsdo4S/WaKAIB+oBH8qsLgOUJOAWAZfCwqfTDeCrgJhkGPgpNI?= =?us-ascii?Q?K/o1Y/Ki1BzKmU8dEVdsdZfqrQx6qL3wNqQjaSl5robHkoq9QMsTmIntPngM?= =?us-ascii?Q?VjbtSjYyrx0ZOUbjbqmLkvnLmdZb1fUYRW0JtGgWOMmHBL3/MyPw3atledOx?= =?us-ascii?Q?1ERKJbxeEPEQEPnLZhhOzMXkTT5FzdbX1x43dnCFZqlFN0O0HHr4AM/d+fO6?= =?us-ascii?Q?C2TuRdAnO6PTKae4zzgVZ1uSkktUpFZqvlHZLjCKQS4FtZDrU3c1Cmo0ObY1?= =?us-ascii?Q?5Yxc3et66nWrlqsLc0YRytHTZfozAH0CScnsKo6auLcfJO1aSimE/UAPigFS?= =?us-ascii?Q?xQ5QVWzyTGi/bPk/hxfd36Uv1Ay2YiiftM3toQN64j+SOAHSWv/wceb9MGBi?= =?us-ascii?Q?3rYxT+QclPxpFSca3d0XEUKVUQPqCPgyW4AY5rGGqi/YDbz5IoshEcUO7FW6?= =?us-ascii?Q?2CdJJ4GSIPSBESQRPQxvPKijzuGFusAtqe8+GVrniB2yeX2apNYNA19vDYou?= =?us-ascii?Q?EMOREFkg6x0TsK4CB93rIGjdCxz8zZKnevRH0m+h/BATMjXWnIA3iESXqP/5?= =?us-ascii?Q?0JQ4cnErkvtrpI2l7/63/TaXPHdewwMQlP62Z1VWMSQwEAgn53FHmAQi2aUh?= =?us-ascii?Q?yvWbXEUDDQxLRByzvRnhF2u9ymTTBg88vFFqcVT7VnRHIXniC0syNMfABxN/?= =?us-ascii?Q?FfmEzWZ+HAVs435WJM+T/1JklUzndallgAWaLootUj33bZzKC39Eg9StcWmd?= =?us-ascii?Q?dO7IFmWkP0P899gGfw/mc+urrA6qvTwEKqlPy1P95i3izy9Ru4vkOvI7fB9R?= =?us-ascii?Q?gJoG/sGlTiLi5ONDdqnnrdfazLdSKKCpCP7Axrp49l0YRuWRjqRC/htZaXFx?= =?us-ascii?Q?Kh0Bi/ayNG0Ns/Si1Gizuxx8Ocryn+2FprEC8flB+tw1vUcQOSG8352cEHb5?= =?us-ascii?Q?8qU/Py1Y4ZPd92Om60WnE04NgMft56oMSiaNa?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2086; 6:py47le3veOzdxySgudNzfdviFS8q6ryul82E/KtawHkuD5nWqoxmRpS90mZwkSZ1rWsK4gIHfbcOBVlpHzL9qv44vEIhpIhvtLMXyOryK7aua8ltCMxhGDSN8YAOHBhNliZSiNMA3GGy4i6mBKOjjWoIpKcafGnjVxYtRDP3Ofxw1bqvQjGfJjpiLXgp8kMPfGYUyjziV7M4yHSdUXMJhowcKwtX+frj1AYOGacDYNAzj2rkL/zzqcvW+umdLlsUdC5lx6vLx+f7Kbxgbq7KSwJnXTSo7wVQaOsbWfq1H2Ovlke1mmYspEh+25cnW0bKdJhl1h8Vlvp/Hr7idDpXVs3bYdorTNzqFNJ4CHJ8Z+rlZnYz67XEDn4YRXTSO3vaOcn8U3yOEWZZ2vc0CEn+B9dTvRe5ZFiBdspL8lZIJ4HAGGuGeeFx31PLdSQVgjmysr7yd32fX+Fkjin2bgYhlQ==; 5:QZm54QxPDWhyS2Dx+ANBPIohY/F8q3GHgz+F5QlIwm7BpCICEP3/YS9VysEyBNUWzYTklCYdYaDfJgsYsH4RBOMOKrMI6PMUG0biMBB1BcVe9jstChsGu9GFmDLtYZGg+Z4Tx6WJmz11pdA8zcXT1Q==; 24:ZlzeS6S3cWQcxjp6GnZznHGSDtG3pVAMuBzMWRs3Ql62Ob40+v6rvNhfJeXk41XgwYDLE5h6+qZaRk8PE3rp71BuiY4q6JJm/wPM6oHyWfk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2086; 7:XrEDtDPG+oQIv14XKPyHRbqwoqHGvGh3+xmfPEJZtR6qvVaIDFr2Zuvmd4C+J8TPPUYZQxJKiKqPr7LVk55XefzPGorxMcuxPObBFNx+AbXN6ZqjXeXO5sX9bzpa0SM5xpRyIEya39+nuUdfWW5eo91p5dKmKL7mKR2SvurHUlUFmuveYPoFLGb2EnYAIE82yog7QDoVOdRKzWJTqJ1kSn1p9e6PfSqVOJzdpx4M7Z6biK1q0+2x7lE4ACat3CMMBVqikADPzpn1OJmVQrPbHC8qP6IKbBTB/NEPD4UDxqd9jofivLwShpaPeFYxyF6b0ixAxb5PeFiYS+/He7fk8WGhTIX2jdLObul/lFVySLykdUK++jzmOkXwcGzwA77jjXHyLyEPbJXbUM8+ZQFEG/bqU3u7PAWtXuu8upNdbzBiRWkjOOlZZ2swz8cCQqZod3x8Dh6bJ0rHtqTG5USW2w== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2016 19:08:09.7301 (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: BY2PR0701MB2086 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: Hannes Reinecke --- 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 9a6ddcb..8a6780c 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..0601ba2 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|PCI_IRQ_AFFINITY); 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 = (struct rsp_que *)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 = (struct rsp_que *)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);