From patchwork Thu Mar 16 21:40:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9629375 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 6C26E60132 for ; Thu, 16 Mar 2017 22:17:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5C4EA2843C for ; Thu, 16 Mar 2017 22:17:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4F67128649; Thu, 16 Mar 2017 22:17:43 +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 CAE9E2843C for ; Thu, 16 Mar 2017 22:17:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752051AbdCPWRm (ORCPT ); Thu, 16 Mar 2017 18:17:42 -0400 Received: from mail-sn1nam02on0076.outbound.protection.outlook.com ([104.47.36.76]:13856 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752487AbdCPWRk (ORCPT ); Thu, 16 Mar 2017 18:17:40 -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=fh4xnW2ZjrrRkhfKG5vuWl2Row80asq1BG71oOr+uQ8=; b=NOtzLCrkrLs8/u8ASJgKu76WZffQP8AS3jT3cPXkddZlVGGbRewYQbLJJtvz/WhNiLFdsb0gRomZlWmFDqy/QlXMd1Hfej9T94hFu9c3gdn+OCnycb8nplo64gvkDhZldOK/qS0pTtThmDBvsVKYR6cT+uLSMFH+Z1aJr7806Mg= Received: from BY2PR07CA0094.namprd07.prod.outlook.com (10.166.107.47) by CO2PR07MB474.namprd07.prod.outlook.com (10.141.197.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.11; Thu, 16 Mar 2017 21:41:08 +0000 Received: from BY2FFO11FD045.protection.gbl (2a01:111:f400:7c0c::141) by BY2PR07CA0094.outlook.office365.com (2a01:111:e400:7bff::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.11 via Frontend Transport; Thu, 16 Mar 2017 21:41:07 +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 BY2FFO11FD045.mail.protection.outlook.com (10.1.15.177) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.961.10 via Frontend Transport; Thu, 16 Mar 2017 21:41:07 +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; Thu, 16 Mar 2017 14:41:03 -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 v2GLempD020524; Thu, 16 Mar 2017 14:40:48 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v2GLembT020523; Thu, 16 Mar 2017 14:40:48 -0700 From: Himanshu Madhani To: , CC: , , Subject: [RFC 2/2] qla2xxx: Driver changes to use new poll_queue() callback Date: Thu, 16 Mar 2017 14:40:48 -0700 Message-ID: <20170316214048.20481-3-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170316214048.20481-1-himanshu.madhani@cavium.com> References: <20170316214048.20481-1-himanshu.madhani@cavium.com> 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)(2980300002)(428002)(189002)(199003)(9170700003)(36756003)(50986999)(101416001)(76176999)(105586002)(8676002)(2906002)(81166006)(189998001)(42186005)(4326008)(50226002)(54906002)(86362001)(33646002)(2870700001)(47776003)(38730400002)(107886003)(2950100002)(23676002)(305945005)(8936002)(1076002)(5660300001)(80596001)(106466001)(5820100001)(50466002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR07MB474; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD045; 1:jgjnwt+SGUU9+C90vd4zV71wfRHlK3sZdPxRBEurI1XZ8Pprz0dYkCTea+C7JWjJBOu3RJNzcXO76hAR5VjKIvauAeej70xE1BALMb9GD2NvT7UBmLEmBLi0Cw4u2VTfcxK5XNyD7uIXzk2BWsNb66Azq2LLg0Bk9CHK+yEnDOU3WrkKgVSv7UkfFPjRb32etBUh7EdaXbXkzlZAPZEQMdcQ42eU3rpZ6VGuSepk+PwHXt35AAQeNiTX9Pb2z9HgfrUgjAIDmI7CN14loC8/g/Gdvs05ZcYMZkY7dzg/uk7leWD8EuZSX4FwTj32KdyEzIN1lXNppH0tkBhRGtjUqUiekoyDbNYgpuyIm/Fpq+CUMmbg7yy2GsXpvYc2ackI4SO7dJCsPwwNAJswiSJbhSsPVNI13lwLzDISI6yEQzm2Fa1V8XzaverbOJlb/FPxl+p0IOCDaSD8X7nytqQqqFyQICuw4RZps6WTGiMJEycfR8MM6VXcW9sNQtOxtjDaOS4AppO4YIY4D3BxpHAhsQ== X-MS-Office365-Filtering-Correlation-Id: 72753eba-9eeb-4127-f75b-08d46cb527e4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CO2PR07MB474; X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB474; 3:40SckG0RLIAekvw/KgEaYWN/pfpry3OzjXdkGSEbZ2XeuCG0+W3vJD0L9WRgI7FPjrHFiLJe0SKMNs7orTIQKSuRzyLCkaDkxpCIcSdY3veEesxAPfJ1ZqiHeqUOGI30hvy1ThGp9440wM4LBz2oXsYEgNzE2gp3t/w2Enap8W6IpUleqDtIx5uypgvhZ41t196WvfQdsD4FGjJ6YcrJ76tewJUyY0FUWIhLoEiIfP8xaEF7kWbZvSIX52SxV/QiBWKVS1ddfHMkZZRFE41YeUnCuYEcOIQdbVKuaACdNXoZJLk2POKZ7aPS1hH79auhLdVmBnynRnRl9S9NhaCiCfH16eRgw/cczZTfmW/aUDVCqar2OEWIUkDHXwYr4Ekd; 25:8Mlp/hsXEg7JNiqlaqY3loitH01RBWy3LAcdaVlAZopa0gX33pNpsSjkgyE6wbwu7M0Xx/CIzgMIvSk/HGD5z8JtUg0/ECQPqfCHJLtSSHYWyzVKb0155iLBkxV9QT07DLQhFdkxwedqTWVQtxUAIOkSdULqnCN0a+cG28SkQwbNER1jG35qhjSiF4/MbuHhyMJlcgO7EkpPaety+0nC1cGi1gNnMI5ei7zdXZAALG8nLnZ6PNdpODq7J0oujBNWtec5lr2WtyOoNB2GPWWAsIx2VlGSE1RyBGiqqQ3dgyRdd5PGS0SkLi3QucI11jReq8XSSojtYBfTMDUM61dky2ala5r7//f8o9UfvhbIVIgH/46J2kMnadCZpLLn7vumTuccUxjssKWmqn9haYM8AhYkWrmxkAQ9rHppfxQdjNaYhGvpMVbmduGrA+E3JqYFCRkI47TkWkGk2Cx8F2EQYg== X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB474; 31:DyA7Kv4lI7KGV6QsGq07hhF0m/NmMzeAEYdqtKjIzhnI2YOabTbDffGVYi1JKgNVL14S1FLA4qtv7gqGEQjP6+76QOtocs03qV3U6KuHuSsJtD9LJN67ZyOPzoGwNwSVp3NnATCmVeYpTL3q9mLVyQYOm7lYyU9IwBtebGBkPM/YG4oF3iI9GlhlG5dKkjRavs8FJeU7/mxq8AzZRMLL6+Slt2pIsQ4dlt9tA0G1NaWDDo4oWUdYX3SloCk3ojizHuOjfoRl2IvO+XoFoPOlJw==; 20:PPzTwWhEvYjRnsvaL5rS9HRl3rKkmGYy4mB44iJcPbmBlxIoU/9d5l8+WMwvMvy3BCEJyMswe4tgiG7zTZvoTKNxxomMT7gGuqNFVT1jrGpno5pzf4/iZQn5c0dSU0QjRw1cVBxH8PZ7yeMjJTYNWB8eTFajaohlDGQgBYgj0aLjsSMk+VimQrJbDimg2sq3SgUi5nqbzQsimTLwNpWtLEtMElyFM0Nl/I9dfFMkrBXVBA555Sc6UE3afgAnpEswfVYLqTqw5UY4BAu6ssWY8U4bmxb7jC9vJQIIxkZCjCz/pbNYvPeTLHcjEjqc4nbzhoSN5JYYZ1qBvAoAgcrMpwug6Sr3J9z5zsJrEvFYyIcZmSgLBJeakZL2H/todviDpqUcLvqYJbPQ4gF9I5tlkirhZglj6uHawAKfQl9lrLgouIWVf4SbdfEifzLHOsMvMbPfNFy5gto7ZPuzNBVbGJhy0aEHLOX9fgDqcvdo3AtZ5qZYUd9Y612lnDmfq25E 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)(13023025)(13017025)(13024025)(13018025)(5005006)(13015025)(3002001)(10201501046)(6041248)(20161123555025)(20161123558025)(20161123564025)(20161123560025)(20161123562025)(6042181)(6072148); SRVR:CO2PR07MB474; BCL:0; PCL:0; RULEID:; SRVR:CO2PR07MB474; X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB474; 4:ZDuVyYQWYc0wJXPP2QtWu+5pN8FfoLWf6z9jnmuAVdCM30Vadpm+gOzD+9GGZLuFHcljCBr1reFLvCE0Yh+zd9wV1mM/nCdWrRQJ3Ehm7DqWwQedxhXS/AeSPiUQMWPkjCWS6y10W58yMXv+i5BXQrplz21iCizo7vc+6aYUZkpHPO5KxZ9wxAticAlpd25TjI5f6G/wx31wqjmyPgsWVZM2E0F4ONHJtAvhOwkoxq7uU4djkNQgRpPcE3ph9rP5B0lVBIPMiNc+3v0RVLc5xwFYp/D5V+KomHRpcyA6JI7eifM2Qx9qilMpS38T72XvaY8JbOVipX0UefxDzDzMl6fR7TIP6hNB/YA5gScvbHF3FnWXaP8D8bnnsLYaqRG+t0KOX5odIlqWHHpcBDuKiwcBR+jGqjmGWAUouIt/VvFaT5mkVGmLOSyTAG4tbdokdOjQ3Z7+8tbrkywyJseA68PmwQsZN5ruayeWTfxNKzDh2ZOtUCownW6JcCqOu3gowJvRECrZPRRDFM6Fxcuk8RYmGac9buWoWFYBGVO+tE4J8XrQHyf7TGd9B1r5YbKMPechxI6jwTAwT0Ir9swHvduvH4ds0nMcTAZB+VhHOYdTZC4iFt8YXzMP4YM3HMaks06oqFMkF+9ndpDnPnwy0K5RKqMc2E5Hl/MhyhkzqSGpiyY7xwLV/o+wwSEujLZLyYQ+/8VXOaRCERx5gJHtPw== X-Forefront-PRVS: 024847EE92 X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB474; 23:j9E8GNuU0ppNkBrYlUwTCi77FTxNrNiMZ6GMvTNN6uI0nDnK+0UGsWnIHMOAhPPpgaN9+75q74qelqwZwyENAFNT8yCCPQOTGcbkl1sTsL9R+ieREltzQ5lCWuVg+t2MBv4qS2pCfYjxAS8M9D+cn6G5+vuoLpKdJyQdMd4cWHBb0c0sgq3fBM4va/ocVdyu0/cxXbd4s7wUkowfUpixo+1sqvRQMYgFRDhLaATnk6NFbg+mQyk9Q0ybITxnhvYovh6LnP60CX0zJOHpbfNozYV9Mcyld/m7JzbKkxPyOvWIJ+odAU1eoohJphonGUme+Mpu0sMXXFTq+HIOqIvSxAZGaT8ADuqBpwKPlBnyHb7gvjvdift8wjlHEkF627MWh9cBR89jQrN4ITZAcN/lGtzLWfxXAr9sJsvxgHhy8bU4zvt0VsYv5na1HQFKP6qoivyIQrRnF5w24sVL2MCNRArCOaogPNzRDQrTipshRlS+v1nSGtb7HWSvR/gzyQISJUGhZQ7s3zdB3kiUYBJP3Vgxv4itUN8h1za4VsremaGmc3esnOsSj5FaQFHRdysKRqmqWSGjYPWdTPEoCSsn7VxgJAgW/Zg1vuTxZhXLil/9v+B0odYRPmek9APjRxJfQmnFTb5FmSyCeA3jEA+aDkEg+wmNATY2dQnuEeMIMSN5AJXWljf+vGZOYe8hW+Gdb7BevVERdFkI4IQ7W/FJ8WlCp2P5OCheYR4Bfake/wNzzY1BBdFNnaJdLBAu4qAFc3aRJIi5+2YCkONaMGEY5fkJu/ttFgkIzEg4HL4t/VxT8O1NbrCnkX+Su1jWvJWNckUA6GH2JXIdtgVk05FXRjjJOriE+YODITCcylHgyfBEvZKegTE05pQ+pTu7xQ4FMPDl97IufH8kJABarqV5pg== X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB474; 6:x9bAPCfBU4Z0bpVGoAMB3IHrBGsJD9CN2HUCtReg/DigAvxrstEM7OmG6ErqPJ6sHWAFMP53/GhARtQOfPf960vJ/HNafY8C6jWj968Hcrkt3P7UVE6UYgcNLbTQG+1mVKG+yMSKAcp2uvWXLblyel6Dl7SbtZ+gngrKy1C65c/I+DcTR1X1M6uj2xgtlzP96hRc3vICwoUsUBLyZiRzjxj+ZSWzxgXlFbef0tSYti3ezKXFpYxvEntvrPt+SrQHHJF8qwrFRcKJI6i8oK/IkCLx8DmGZvePGDqI3Ahr0avUytomzuBMJQ9O69g9rgmysQ/E+tFhprp9wjUDdbFoAb9s0KygZ7vviOLUpHYZ1DylXOiTbqYQBGclX3hJTN7E4kXfgczgUJmd02svon8Bbw==; 5:A/0AeJw9mFk5vKFOSlbZnJKc8Jluw27Vb+g+hOVAifLiUtOb9g7CzwAJQmXcFPCmaGUsphwgGoWyTKmIghLxrJNEL48BCQmyjp4UsU+5PjukcyATqChsMeCYPxv1YiJySPAonL4BouBeFyRF0UxEAw==; 24:8zo6rwwhALif7vZ4UAFDXSnQR6w2i5c8+jvpi6LwTDGv5lRi7CRVvTzx0dSGhRj/QBujK5lfxGsfvF3Y0Mb/0BjJVb1YAftdEvlj6CGbn/4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO2PR07MB474; 7:Qketv6/Qk+ij+YagScGB3pLl1oURLe0PflmINlQQE7gsBGEFwZYf3Hk+vjdFASEn+Oqx59hDkXPhrhTu3zfzldXAEZDPRds4cNdIS4fchRMw7STCZYn7hTsX6AjkmdDDBgzLrYk1B4C7/cUkJf/PrAv8t0F80py3R110tpJuVuMWZ8kaBuxbxKsnfiXbj5JDZQEIeAp0Pv9ZBrFu3HYaTs44iLnW3XUNnySw2gN03ThEHo379XZFLlph6DdEHkrAnvd06gecKQBEt9rhQbnsKNEyw13OcNaqxw18aSwTTAFNvivvnB0IwLirsvXp0z2nTskwurR2nxENa2hJnfcZfg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2017 21:41:07.8095 (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: CO2PR07MB474 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: Darren Trapp The blk_mq layer allows polling a transport for a specific completion if the HIPRI request flag is set. This can be accomplished by using "libengine=pvsync2 –hipri" option in FIO tool. This flag then allows polling into LLDD to service specific compeletion queue for IOs. It also removes the interrupt latency and significantly improved performance in NVMeF that utilizes it. There is expense of higher CPU utlization due to active polling. Here's sample results for comparision FIO command line with synchronous IO’s results in latency avg=32.73us reported by FIO ./fio/fio --time_based --ioengine=sync --direct=1 --runtime=30 --readwrite=read \ --iodepth=1 --blocksize=4k --name=job0 --group_reporting --filename=/dev/sdd FIO command line with active polling IO’s results in latency avg=26.04 reported by FIO ./fio/fio --time_based --ioengine=pvsync2 --hipri --direct=1 --runtime=30 \ --readwrite=read --iodepth=1 --blocksize=4k --name=job0 --group_reporting \ --filename=/dev/sdd FIO version 2.17 Signed-off-by: Darren Trapp Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_os.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 41d5b09f7326..1f3a113954fd 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -253,6 +253,7 @@ static int qla2xxx_scan_finished(struct Scsi_Host *, unsigned long time); static void qla2xxx_scan_start(struct Scsi_Host *); static void qla2xxx_slave_destroy(struct scsi_device *); static int qla2xxx_queuecommand(struct Scsi_Host *h, struct scsi_cmnd *cmd); +static int qla2xxx_poll_queue(struct Scsi_Host *, struct scsi_cmnd *); static int qla2xxx_eh_abort(struct scsi_cmnd *); static int qla2xxx_eh_device_reset(struct scsi_cmnd *); static int qla2xxx_eh_target_reset(struct scsi_cmnd *); @@ -268,6 +269,7 @@ struct scsi_host_template qla2xxx_driver_template = { .module = THIS_MODULE, .name = QLA2XXX_DRIVER_NAME, .queuecommand = qla2xxx_queuecommand, + .poll_queue = qla2xxx_poll_queue, .eh_timed_out = fc_eh_timed_out, .eh_abort_handler = qla2xxx_eh_abort, @@ -973,6 +975,40 @@ qla2xxx_mqueuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd, } /* + * Poll for command to be completed. Initiated by SCSI layer. + */ +static int +qla2xxx_poll_queue(struct Scsi_Host *host, struct scsi_cmnd *cmd) +{ + uint32_t tag; + uint16_t hwq; + struct qla_qpair *qpair; + unsigned long flags; + scsi_qla_host_t *vha = shost_priv(host); + struct qla_hw_data *ha = vha->hw; + int ret = 0; + + tag = blk_mq_unique_tag(cmd->request); + hwq = blk_mq_unique_tag_to_hwq(tag); + qpair = ha->queue_pair_map[hwq]; + + /* Acquire ring specific lock */ + spin_lock_irqsave(&qpair->qp_lock, flags); + if (!CMD_SP(cmd)) { + spin_unlock_irqrestore(&qpair->qp_lock, flags); + return 1; + } + + qla24xx_process_response_queue(vha, qpair->rsp); + + if (!CMD_SP(cmd)) + ret = 1; + + spin_unlock_irqrestore(&qpair->qp_lock, flags); + return ret; +} + +/* * qla2x00_eh_wait_on_command * Waits for the command to be returned by the Firmware for some * max time.