From patchwork Fri Dec 2 21:44:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9459309 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 2EF126074E for ; Fri, 2 Dec 2016 22:01:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1ED002858E for ; Fri, 2 Dec 2016 22:01:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 13B4128599; Fri, 2 Dec 2016 22:01: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 62C072858E for ; Fri, 2 Dec 2016 22:01:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755138AbcLBWBV (ORCPT ); Fri, 2 Dec 2016 17:01:21 -0500 Received: from mail-dm3nam03on0066.outbound.protection.outlook.com ([104.47.41.66]:56400 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754987AbcLBWBU (ORCPT ); Fri, 2 Dec 2016 17:01:20 -0500 X-Greylist: delayed 889 seconds by postgrey-1.27 at vger.kernel.org; Fri, 02 Dec 2016 17:01:19 EST 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=IOaufR98q7mzCtdYxxryRy27DefdKFftgiw+fzlKypo=; b=GS1LBZrhIXf8jk3WRWFa0E2eTiYaX375FtQei676gYYUUqbwtuDwm8UaKntwmBvLVUThymK89GEd4pyTlCud+KJL0wxrdlkY1ePoKWOP7YcMY2GIhCZVk4MWs57BOxJf1FE4RBlx7Fxk8P/r8u4y4kQskPw0mcF+uxwZccdHi1A= Received: from BY2PR07CA0020.namprd07.prod.outlook.com (10.166.107.15) by BY2PR07MB202.namprd07.prod.outlook.com (10.242.46.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Fri, 2 Dec 2016 21:45:28 +0000 Received: from BN1BFFO11FD039.protection.gbl (2a01:111:f400:7c10::1:180) by BY2PR07CA0020.outlook.office365.com (2a01:111:e400:7bff::15) 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; Fri, 2 Dec 2016 21:45:28 +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 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.734.4 via Frontend Transport; Fri, 2 Dec 2016 21:45:28 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1105; 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; Fri, 2 Dec 2016 13:44:59 -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 uB2LiwA5013664; Fri, 2 Dec 2016 13:44:58 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uB2Liwwc013663; Fri, 2 Dec 2016 13:44:58 -0800 From: Himanshu Madhani To: CC: , Subject: [PATCH v3 6/6] qla2xxx: Fix Target mode handling with Multiqueue changes. Date: Fri, 2 Dec 2016 13:44:57 -0800 Message-ID: <1480715097-13611-7-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1480715097-13611-1-git-send-email-himanshu.madhani@cavium.com> References: <1480715097-13611-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:CAL; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(428002)(199003)(189002)(50466002)(189998001)(92566002)(5003940100001)(33646002)(4326007)(8936002)(50226002)(107886002)(48376002)(2906002)(5660300001)(38730400001)(39410400001)(76176999)(50986999)(106466001)(105586002)(101416001)(42186005)(86362001)(4001430100002)(305945005)(626004)(39450400002)(47776003)(36756003)(80596001)(6916009)(81156014)(69596002)(356003)(7846002)(81166006)(8676002)(4720700003)(2351001)(2950100002)(110136003)(26826002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB202; 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; BN1BFFO11FD039; 1:NZ2+WSfLrr2dkLjDgOOCZwgrJcIefnOj1vNfJBKdnYvObwjBGmh2/tvq0fEeWGjeRjjwx+dsFkjMeWQRzVOXbv+T7vLsekW9M6J959JsMHF5kA/LWoJyY79nHkNYm6VJpAbNxeukydVhNVPrfM9hOGwI3Zhc5ZGGUEhKvY0LvX5SCchjH1sgDBENuAQwn2lPe/uUtMtOuJSRpjex5oLdBFMe8yJA4M+A7Wto1YfluYpupiVesdxeAvvUo7gcf/9QR1n8CK05C1hep2JfRp4iNFrMygc/jzuE+0M/tg6OcsmfilEAQjOmSjYqsIQTmjFzZ/V4EYi4cQwjrwnf5cYP9Defj4o8PdMVs7l7p/dgQ94y6jt3sgEi3douDQRsIaqRFCdxSc78mXo/YsH44vWUnTIkrX+vor6VERlMcMzpTJ8YRsM/Ml3qELS7IsDJBU1NPeWTlAOhgpmyYbj9THr8FriC98MB01WwbmsXOck4tge15rQXPj66MFBCHejgwovFxFDSDo3Uji6MtQOGxikL3w== X-MS-Office365-Filtering-Correlation-Id: 2ce79336-8d5b-459f-c82b-08d41afc885f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR07MB202; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB202; 3:ZxLXK36u6C/IrRXbhsYgb0zoUQaGCoHyF9j+6Bqf2+sM8R5SmA+K7ZzlinCIFeWkhvrz0LN6V2+VUL1RklbSHFuTrH952qeZqhK35Q1CM0kFYr5h7ogvzpVgdmv+6YSgVaPSD970L3kjQWa6vrddtOiIce1YE3qJwtZK7S0X7stzkb+g/CmbMY1Qgda9oiMCyLzBNPz93YrgFpa9Exn/eHDHLCYQKhpu9J6E4Id/fWdpoYDCsJzBFS7+2TLcxdoEuM/4beODaZ9V3o/daTcdCvrDvBt5xHdAWt2sMvUpRB6B+CFoSQK05l7KbgEEZD8la7bzelrv64mVLF3FlTQxkdpZHnn/1sEMpiyd9FhJcgIkVooPJIfbsymU3XfXGGju X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB202; 25:Q7/Bg6YLKNxNtEA73WOhY6ZKWVrIIHGoN8O9dUG2oS/NvFXzUi8K1WQag2YWk4RL91X2kljo69ZWARlB18x2vA45mwaFRnSdFL+70IOZR3SMbCXiPX1xW3lSc5OE70qx7ZN4t5Q9L2a5m/B1HZqwkAgVXQyn1d4SDF7jvf3g+bKhk0JEKZE9VUFTSMV8AwINwVxCp87lJUluyGjqk7YJXbFWvFLJhuPlmrUsSVophUGwgP5xqqtXLheo77ff+DBDwAOj0flYXwScR0/uApm3LAkGpchfTG1FJcsmaTyP2J3+GZ0WbHnEo4fxQreEI964YZhdTC7WMrJh1L/IMp3SJWtCu2UXlBD93Syp2z9rT0tVYMBKArLtB9jLButhx0BFgFMjqQ7+xoDQ73fttNISJV+QyvH3uG8IcSYreRzjSUIadcg1uSeC3i7F3yLhPQGJZy2wXGBnYlzfFRR3FCHTCuypmPhr4T07KU4FmqMruZ6F7AiYt4+3uwoh+LhYt09L/5khjL5qMzEBb8vOUew0dkyreGXjnNEPc2cyeEr1hfGj05C/b+ver+PA7n9fEw/r4T2onDPZ0mOMaHNhUPQH55eipEjdqTFfid74DUcqzPBEfGGE2WJmeXYAJ/HzB3fL3LqgmnigJxHD8POK1jOznMmVZZnnAzZhBevUBwTlejijqgy2B6YlDjHR8/jA+ugKL29SjfOG2408wIIiqZiwgdfMtH2a+zfESxe4JVjq4wCXTKUBWylXr5X/eOoSEF7KG7QQ/W7voWCWtMrgwB48O1jaMQNhWjvuev1E2tUX+YSopMSFVrGANqO3GIqh8uIs/PbUqhVMEZOPZaysVcv8XfA+Rld3IM5LnhCAPov2RFkMkHR3wmajRA4oQTf5bRDU X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB202; 31:qcE+QedMgW84UUbJbo58hfR+rnI9Zbz9FoT4Qyx0P4bsqVPetwD/FOzM87OmoZAs7vMWw3Mt1xEoBShEcg8POr48R7VFyNKLEL10jNqh8X0/G87Y3ICRWzFMcApmCV/8QSpl6CB9HW8HkkWWBevqRf1u/BlWzHt2gxYYsFGuIAdqD62AMFU8oRD7RA1l5CPNCTM9Ir0+556S9mZBkMZd1HDvOKyw9xZsnrf/Gwbs1IZpqEmDJZ21/IMce7HvLUscg5YQ1laVBXzMQsvxn4iV4ksHHUNRk1ObxxR8Ua8rY2w=; 20:agqusY5W7pE7/VpcRf4gXTyDj742m68yoSimwOlZnpyvfGlfz+WKnPpwgoFH7yCgkfhLQoQ4i2g1eAw3BNs301LqsKFXg9HqBW4JxWb60/zFOvuNoCzzpLsppVZMdKiJTRcfbqubUOfvLSqWfYJFzrJ7+wHNQAey04hVo8gWR8EYIeWAJz/07GUBw9iuBS/nUvSqcm9M5YBG4kDxMB+MEl76IernCGVpndg3Q892xj8XS/6ax0rAexA/CASwdtbv1wpZHUS+3gN3kV8GW3OViRqiFzOFqK9QJmopdmqirB6UJUK24X3+xy8otMTGbgNiXP1DwV13hkcOun5oCBvArJ9A+2SfSuR4aJc7VBL8xlLrmPQThWmhOtHm30gQawYm0dfyWpuWhQ56P808mhMR6MOiOg3l2VIZFLPvUbXEjS7sisG1XpruL8vfPYnWOV8axV+169DnyLuaJAlX1FHyqWebNMuIq8hWLBUJfLHQUTCo0gyQKml2xhuRuUvKDfXN X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13013025)(13023025)(13021025)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148); SRVR:BY2PR07MB202; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB202; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB202; 4:8nZD/MigTHR39XelavQv19hFoODIeioKz1qWZYNNdHij0owMnnND8hDjjgkF0aJ9pQ2am24GTa0mUzu84hSpeZW2B7TueW00hXagM3NlCCffEKWz3mRJ60ALN5to+MonAFV6KeHlfj1m4vR7fAmGF6y/tlqK8saZpsnOCJAasVeOdas9Z3XSndMfVQ9l+l7lJuL7km/UCIbUA6kKzhNn4y5uMb2koSUGg7ANPvz7fO37hps+ecwM50tCLYL4b8FcxfZY45pm6Y0DqwxX0NVUF3zbeTn3oqLfhPReTgL6wzF3J/+mN3hh5EzW7RhfO+IjMe2XqjwaWuO2/hTF1he00DbxbvEkLIUjdP1aHaeVOnDf3QFAUyLcYO1zHJbeN6kEf2PpiX2SJ+JVor8kfmEYTVvGZchgtIwl8hV65nxQmIyvP67xqmG5M9O8hzlBQcHCBJ1bn99Enj8KCkgcfC3gD5oZAzv23bIVGET8qlBsGUW/Szrg/wiqC/qmiH11A1/ImEmD1a2DsLORfWdiCKuhjg3PdMuJJWbIDW+lF/0sXp7yN7vXM8ro2Qe0LVZRTNUOllSuyvkU+jfG8OITHKX5aucJNPlk9jWqizUdtjpzz9w6zzE4Dpn+Y+dDKqnTIrNG X-Forefront-PRVS: 0144B30E41 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB202; 23:IbGlpS7CAsO8oA0NTrQpwQ7TUIZWFJmb0c7GxS1nWw?= =?us-ascii?Q?D05brjvi5hQtP6LIzy2GVg9cyi+SdNGZa27vbF1OIUTfE3DU38G4bZT2tEQg?= =?us-ascii?Q?BbwgJif8RcCr6DxXBmtTEtwg9oZo7GadmQb4EVnJGiYDI2Ss51xpUAOwberq?= =?us-ascii?Q?CnxV7VkH/Xs/A3arGX6UqWJtfy1tHE5w0AcMj+cYyKcLtc8EaGuyYEBRAszG?= =?us-ascii?Q?40KhVd9Vou00Hj1xhAuT0IgiBuZEAxxmrI11epAESCejQb4XZ9rGPuAJTwxH?= =?us-ascii?Q?zJgeKqKjlXUB0BjDG/nxaVrlyZokln2oK+r7DQP+xFj81EBWCpPufd4N38VX?= =?us-ascii?Q?y/+KbrtmGHO64aEJmpAd/pp0JTNTt/+uh6E6qEfBplMhpFKVL5s4omXLMkbi?= =?us-ascii?Q?Y9WSIBZDM1ftBDX9PoI8KidLU19xLSACb9T9scPGXIYJqx3w4LDPqmAOTIg7?= =?us-ascii?Q?4MS7W9jkLh3QogPH5Q2fraHYTS2DslLhU8xJ3SZpwS37SnL49G4ouhaJPC6T?= =?us-ascii?Q?E2A+PazHU3LNgm8rIkE5kIjT7WXFVhMtlBVD2uRRpOch1G0vzmzP0omtANKM?= =?us-ascii?Q?C2gS7iK3TvvuO4A9pCC5GCNfDFpTwUJujfuEfCU3bwx6TaE4Ws75EZ7xuEV1?= =?us-ascii?Q?CQc8vq6dJoP2HBokOm+RUjWQEzsZr3e7mnRkrLBMP2OlVK4X4bPsYLPkRyPn?= =?us-ascii?Q?aAe85g1SyaVtLP0x0l5V10nmt1xmxREVe4AK75ZT0exo/oYlVApHeR/3vXf8?= =?us-ascii?Q?znz4APgk3HkDtIfg4onicOn2/hPkknhHYVUCmNMNQgYUQUakU/bT0x9wFfIW?= =?us-ascii?Q?W5id2h+GDaLzBQfdy6aLwcX/XIkAvOJwSDYn3eItCsyO1uKLtfJVLpObpy+Y?= =?us-ascii?Q?JJhdwa3Jo8E1xml5uXiWf5XgK09keM9GbWQqv2pPaWkegsFYss7NPx61v6rD?= =?us-ascii?Q?A9aQ6dk/G8EO26xPXE9NgAeuA4rek5mEn1HUNH3lr/c6xl61NQMnrHIuOSvR?= =?us-ascii?Q?GOBO0qBMbQFpbRSnVhYVWld8BU1eyBi9n/NWah2tp0oGbrc1JzehduPTwNI8?= =?us-ascii?Q?N3cYEiaKRKDRQLV6NqEEbY2WvosNzlZlfpWjAOzGK7wvNSh3m97yu6dV8j0G?= =?us-ascii?Q?ZkaDRu0BjgTWj2nsvp14lZZNyI1kaIb82iFqT4JDRUJRE7/F3gjA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB202; 6:QXWVN8+irJOuT0+kw+PIJYICSD1rNxes6xyD827c09I5CPObdNv9WTkYZMZwRbdeswqqp9mQIKZhlblNIH0XBHoZ0YXDk8tTPNWndSKWozNs8XSFURsXGj2sLN+NtOdM3xMcllYgtDKd64uP5uAc+rTUCQIpzEksleRxUYkJvIjc7mKMCdPEqPknxPl6L+Ppwn4K1U3odcRNKT1QQqfWz+9A73V/QKOAHp3aEPGdDqt95s1UTCSzqPNP0KqanbJleievrMO9lfWqVL5c3JyFAP6zYoOjevTOk+3zzyhWOG7M4YHpfHRlGjxbw1nUtwNCTiu8BmT/08Bj+xzCEGNyL4Y2px4f3nHx12375pJpaU6yZsXHnVyz9oJDM7PRYRH9RFOtDdY6eko02gc51SqKl1crhPMEC3LZC70ht7YYD9rjT225uhwgAWBeVcxi6Mf51WSwJbiepmTXmLo1RR9pcg==; 5:40mI4A5QNFirI6E231Uji4PcNl2do1swtQFV+I5I7M+KBKlHAMx+vNMqLya4xX2VJ4/g9y6ankAAx3VPOzAl+fXe7zn4eBODxRlaQdgSaSFK1JvMzFWSeXCIGMVKs9wmq2zF6472SorbudUst0StXw==; 24:7uA3qc5u2zfKKKTLSOv94/vtRDVgVclb+3adclJnbwpyTeDV/jHe5ENFynr/jp3sMznbMlci3Pj0Mh53EfrF33m4tcOowhF9P0xB26MagZ0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB202; 7:dh8UUFUZHboNxoemLnlDi8BQJgfo5UU9CpynWyyIWA2xBDonyUSVaS9fc+ZIEdf6YoFitxYRZWX4zdodnrvXB7iaOQ5ZorlYLDezrS4xmFYQ3U0OuWGnZ+AEmmv/d+ksoYh1YqrK9DbtRmTzxrHiZRH1EHuR7snUjwwHawA1qKXTpkyLXb/KK5ta2HNxLgoZ4E1lloA+omfYP5dPfgLMeKp4ACvmoICttZWam8u0JcZp3lDesuqzKT9NTUHX0Mq60cR19LYH9+63tuNX0+gY05gahJjv3i4pA+brJYkkN9+JcWNAn/twW+5Q9DMyTExtE5ZMIjRpwpt3zDMv1Ay15evngxe/utIYdEwshVSNNNzJtPn9Cmd5z4uor1us21i6M5LjsP2VHpkuYLdpkEJ7d8Fr81z066xBYWZNFvL/xRU/G4QOBTNesumUNCoe6CEuw3so2ivP97Lv3HkSM7o3Wg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Dec 2016 21:45:28.4553 (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: BY2PR07MB202 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: Quinn Tran - Fix race condition between dpc_thread accessing Multiqueue resources and qla2x00_remove_one thread trying to free resource. - Fix out of order free for Multiqueue resources. Also, Multiqueue interrupts needs a workqueue. Interrupt needed to stop before the wq can be destroyed. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani Reviewed-by: Hannes Reinecke --- drivers/scsi/qla2xxx/qla_def.h | 3 ++- drivers/scsi/qla2xxx/qla_isr.c | 20 +++++++---------- drivers/scsi/qla2xxx/qla_mq.c | 2 +- drivers/scsi/qla2xxx/qla_os.c | 51 +++++++++++++++++++++++++++++++----------- 4 files changed, 49 insertions(+), 27 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 607d539..e613535 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -2734,7 +2734,8 @@ struct isp_operations { #define QLA_MSIX_DEFAULT 0x00 #define QLA_MSIX_RSP_Q 0x01 -#define QLA_MSIX_QPAIR_MULTIQ_RSP_Q 0x02 +#define QLA_ATIO_VECTOR 0x02 +#define QLA_MSIX_QPAIR_MULTIQ_RSP_Q 0x03 #define QLA_MIDX_DEFAULT 0 #define QLA_MIDX_RSP_Q 1 diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 14f27a7..03384cf 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -2976,6 +2976,7 @@ struct qla_init_msix_entry { static struct qla_init_msix_entry msix_entries[] = { { "qla2xxx (default)", qla24xx_msix_default }, { "qla2xxx (rsp_q)", qla24xx_msix_rsp_q }, + { "qla2xxx (atio_q)", qla83xx_msix_atio_q }, { "qla2xxx (qpair_multiq)", qla2xxx_msix_rsp_q }, }; @@ -2984,17 +2985,10 @@ struct qla_init_msix_entry { { "qla2xxx (rsp_q)", qla82xx_msix_rsp_q }, }; -static struct qla_init_msix_entry qla83xx_msix_entries[] = { - { "qla2xxx (default)", qla24xx_msix_default }, - { "qla2xxx (rsp_q)", qla24xx_msix_rsp_q }, - { "qla2xxx (atio_q)", qla83xx_msix_atio_q }, -}; - 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 qla_msix_entry *qentry; scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); @@ -3051,7 +3045,7 @@ struct qla_init_msix_entry { } /* Enable MSI-X vectors for the base queue */ - for (i = 0; i < 2; i++) { + for (i = 0; i < (QLA_MSIX_RSP_Q + 1); i++) { qentry = &ha->msix_entries[i]; qentry->handle = rsp; rsp->msix = qentry; @@ -3068,6 +3062,7 @@ struct qla_init_msix_entry { if (ret) goto msix_register_fail; qentry->have_irq = 1; + qentry->in_use = 1; /* Register for CPU affinity notification. */ irq_set_affinity_notifier(qentry->vector, &qentry->irq_notify); @@ -3087,14 +3082,15 @@ struct qla_init_msix_entry { * queue. */ if (QLA_TGT_MODE_ENABLED() && IS_ATIO_MSIX_CAPABLE(ha)) { - qentry = &ha->msix_entries[ATIO_VECTOR]; + qentry = &ha->msix_entries[QLA_ATIO_VECTOR]; rsp->msix = qentry; qentry->handle = rsp; scnprintf(qentry->name, sizeof(qentry->name), - qla83xx_msix_entries[ATIO_VECTOR].name); + msix_entries[QLA_ATIO_VECTOR].name); + qentry->in_use = 1; ret = request_irq(qentry->vector, - qla83xx_msix_entries[ATIO_VECTOR].handler, - 0, qla83xx_msix_entries[ATIO_VECTOR].name, rsp); + msix_entries[QLA_ATIO_VECTOR].handler, + 0, msix_entries[QLA_ATIO_VECTOR].name, rsp); qentry->have_irq = 1; } diff --git a/drivers/scsi/qla2xxx/qla_mq.c b/drivers/scsi/qla2xxx/qla_mq.c index a64b7b0..5543b4c 100644 --- a/drivers/scsi/qla2xxx/qla_mq.c +++ b/drivers/scsi/qla2xxx/qla_mq.c @@ -118,7 +118,7 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos, int v qpair->vp_idx = vp_idx; for (i = 0; i < ha->msix_count; i++) { - msix = &ha->msix_entries[i + 2]; + msix = &ha->msix_entries[i]; if (msix->in_use) continue; qpair->msix = msix; diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 3371b3f..91d8e7a 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -434,24 +434,41 @@ static void qla2x00_free_queues(struct qla_hw_data *ha) struct req_que *req; struct rsp_que *rsp; int cnt; + unsigned long flags; + spin_lock_irqsave(&ha->hardware_lock, flags); for (cnt = 0; cnt < ha->max_req_queues; cnt++) { if (!test_bit(cnt, ha->req_qid_map)) continue; req = ha->req_q_map[cnt]; + clear_bit(cnt, ha->req_qid_map); + ha->req_q_map[cnt] = NULL; + + spin_unlock_irqrestore(&ha->hardware_lock, flags); qla2x00_free_req_que(ha, req); + spin_lock_irqsave(&ha->hardware_lock, flags); } + spin_unlock_irqrestore(&ha->hardware_lock, flags); + kfree(ha->req_q_map); ha->req_q_map = NULL; + + spin_lock_irqsave(&ha->hardware_lock, flags); for (cnt = 0; cnt < ha->max_rsp_queues; cnt++) { if (!test_bit(cnt, ha->rsp_qid_map)) continue; rsp = ha->rsp_q_map[cnt]; + clear_bit(cnt, ha->req_qid_map); + ha->rsp_q_map[cnt] = NULL; + spin_unlock_irqrestore(&ha->hardware_lock, flags); qla2x00_free_rsp_que(ha, rsp); + spin_lock_irqsave(&ha->hardware_lock, flags); } + spin_unlock_irqrestore(&ha->hardware_lock, flags); + kfree(ha->rsp_q_map); ha->rsp_q_map = NULL; } @@ -1729,17 +1746,22 @@ uint32_t qla2x00_isp_reg_stat(struct qla_hw_data *ha) pci_read_config_word(ha->pdev, QLA_83XX_PCI_MSIX_CONTROL, &msix); ha->msix_count = msix + 1; - /* Max queues are bounded by available msix vectors */ - /* queue 0 uses two msix vectors */ + /* + * By default, driver uses at least two msix vectors + * (default & rspq) + */ if (ql2xmqsupport) { /* MB interrupt uses 1 vector */ ha->max_req_queues = ha->msix_count - 1; ha->max_rsp_queues = ha->max_req_queues; + + /* ATIOQ needs 1 vector. That's 1 less QPair */ + if (QLA_TGT_MODE_ENABLED()) + ha->max_req_queues--; + /* Queue pairs is the max value minus * the base queue pair */ ha->max_qpairs = ha->max_req_queues - 1; - ql_dbg_pci(ql_dbg_multiq, ha->pdev, 0xc010, - "Max no of queues pairs: %d.\n", ha->max_qpairs); ql_dbg_pci(ql_dbg_init, ha->pdev, 0x0190, "Max no of queues pairs: %d.\n", ha->max_qpairs); } @@ -1751,6 +1773,8 @@ uint32_t qla2x00_isp_reg_stat(struct qla_hw_data *ha) mqiobase_exit: ha->msix_count = ha->max_rsp_queues + 1; + if (QLA_TGT_MODE_ENABLED()) + ha->msix_count++; qlt_83xx_iospace_config(ha); @@ -3122,13 +3146,6 @@ static void qla2x00_destroy_mbx_wq(struct qla_hw_data *ha) static void qla2x00_destroy_deferred_work(struct qla_hw_data *ha) { - /* Flush the work queue and remove it */ - if (ha->wq) { - flush_workqueue(ha->wq); - destroy_workqueue(ha->wq); - ha->wq = NULL; - } - /* Cancel all work and destroy DPC workqueues */ if (ha->dpc_lp_wq) { cancel_work_sync(&ha->idc_aen); @@ -3326,9 +3343,17 @@ static void qla2x00_destroy_mbx_wq(struct qla_hw_data *ha) ha->isp_ops->disable_intrs(ha); } + qla2x00_free_fcports(vha); + qla2x00_free_irqs(vha); - qla2x00_free_fcports(vha); + /* Flush the work queue and remove it */ + if (ha->wq) { + flush_workqueue(ha->wq); + destroy_workqueue(ha->wq); + ha->wq = NULL; + } + qla2x00_mem_free(ha); @@ -5048,8 +5073,8 @@ void qla2x00_relogin(struct scsi_qla_host *vha) base_vha->flags.init_done = 0; qla25xx_delete_queues(base_vha); - qla2x00_free_irqs(base_vha); qla2x00_free_fcports(base_vha); + qla2x00_free_irqs(base_vha); qla2x00_mem_free(ha); qla82xx_md_free(base_vha); qla2x00_free_queues(ha);