From patchwork Thu Aug 9 19:41:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 10561851 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1180313BB for ; Thu, 9 Aug 2018 19:42:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 00CDB2B979 for ; Thu, 9 Aug 2018 19:42:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E93412B980; Thu, 9 Aug 2018 19:42:09 +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=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,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 252BF2B979 for ; Thu, 9 Aug 2018 19:42:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726931AbeHIWI0 (ORCPT ); Thu, 9 Aug 2018 18:08:26 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:1352 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726744AbeHIWI0 (ORCPT ); Thu, 9 Aug 2018 18:08:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1533843727; x=1565379727; h=from:to:cc:subject:date:message-id:mime-version; bh=fGN/mraglyKjyPXujON3qSG8+5rY61JbuhL/BAqUhEQ=; b=Xb/jHNx4J0Bmi2r7iEQz8ZUgMxxEbO4ZGbahEAUUPSLCGRaf3uxTOFLe QL2FT7fDVw8pJkYqg97u6UiJJr2jjw+zjoUI6/0fbx8Id1wamfoJFyiYr oRpyNq/RMmfVoayPME/LE2XOJecvAtJ1/iATNXjxEpFORvZ4g/YbHYAq5 13Ct7/bWyPxbb6doyYCVsPVK+TvkQrTIzYDugU6YDXHslKI7wCUTSnIxT uYapQjYONfsltZ19YMUwQUUyIQYUgZHyydaqgoiXPcb6qkIjuNLG9zdjz +DuZ7XwcOVDIVGMoDTHb7S/AKFj6gsp/FcZiU7azmexUCLF01p8ojTsxe Q==; X-IronPort-AV: E=Sophos;i="5.53,215,1531756800"; d="scan'208";a="191119585" Received: from mail-sn1nam01lp0119.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([207.46.163.119]) by ob1.hgst.iphmx.com with ESMTP; 10 Aug 2018 03:42:06 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IL65sMJHJnvifQTYFLKrknTsQPQ7MtOrmybIzry/NrA=; b=F9rjyqKBN0hnZw6Yoj7DZrOGEkZlGdRNK17TYguLcEZkmdW9jhDMNJ2VrHJGYEjLnUPl+8hkXzGWJF3Z6kDNSRiheiJoGVRSo09EdbX8eErdo/WCulMhHu3B64Lvs6lDr8OF0/UyLq5K4SVbfuXBBr1hY/h6aIoLnAvE3RL+tnc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Bart.VanAssche@wdc.com; Received: from asus.hsd1.ca.comcast.net (174.62.111.89) by MWHPR04MB1198.namprd04.prod.outlook.com (2603:10b6:300:71::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1038.23; Thu, 9 Aug 2018 19:42:03 +0000 From: Bart Van Assche To: Jens Axboe Cc: linux-block@vger.kernel.org, Christoph Hellwig , Bart Van Assche Subject: [PATCH v6 00/12] blk-mq: Implement runtime power management Date: Thu, 9 Aug 2018 12:41:37 -0700 Message-Id: <20180809194149.15285-1-bart.vanassche@wdc.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 X-Originating-IP: [174.62.111.89] X-ClientProxiedBy: MWHPR2201CA0066.namprd22.prod.outlook.com (2603:10b6:301:5e::19) To MWHPR04MB1198.namprd04.prod.outlook.com (2603:10b6:300:71::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48cc8f0d-4187-437a-a651-08d5fe302ec7 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:MWHPR04MB1198; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;3:aXNTzCGaBB1bJ/k3V8ZKaqq6mizvGTuCJNoF+ckzvJD9DPx0o/7hFv5xAk4qE4xSTimzxHx9YXhBmxNqZBOxFEJbmbMTZtyr1UWadQqG/GOqkPN314I3U/lTs2hcoOXBh0TVYw89tcGF8rOKtFhGg9OyWxgpzKgn+XVJQ5J+d4NnJA2ZwxLe0fYVPuj/jxz7a6elHYeVvNr+wJa3m8OIdF9sHfu+7QAYioxMzm5qxp5H0JTFlo6Zen7M6blAF75L;25:lRETFdEPpUJ+AgeOYYcmd6i7CwG2Hbn+rGTIC5TjqIrdN8MfQZjHssz4NArJ6r5+3tv/7AKfcOXjR2z7ymINauZYjA4y1oVT2GxBRAreiXie8Y3xV95qesGxbkW3T5SU3BpYIfDASjFlcGEvz4kqiem0RentuptQPdZXDK09OBnE/pvCjsk3pkHYringj1ag9m0sKtVC9+bEyI7SkDKIx+V6iM50rnKyDu5PDGj+42g12sX0oLfbLVbz76fRmDxV/jdPBY0Z+hGDz/e2/DC2BnoIaD8o9Ml/smGMQs5wAYxTN9jsaFpCfVKadS1oziYxUPGw13cfjPrIU/OWFU2Z8g==;31:bU1vfLvVWPSmtaRCMV6RzERV0usrcK81ssUeS8uQN+7pL+aJwhX+2Qs3IuxH1mfRSJNsENPKp1Jor0sl2vY3+rKs5lmPHCNSkAN65O5bke95WYA06ghVWIf1BsN72hdsBRcVMrykNrAGgOeSom8WINgWVMtdA/E236UBACjzyTtc3lls3htExbdQ34fY1ZcpE+uNNw3VOzLsIvQlqrJnvst1lOpRr8UXsu7dbGRbCC0= X-MS-TrafficTypeDiagnostic: MWHPR04MB1198: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;20:LtzJ296pZUwQeBK5LfU/d6g8gpTk3mlynTAfxYbObWbQVnI2fA1d0qjFkBgo+6E1QVl9WBrOyTUuTR0zOtfoK7/928ov9Z9Z6rBFmBitJd6eh8EptJMwGIxZvjwwGwuynyUo1GTcJe0XfWRis5Tn0er7NkWLONwX8D+DSHl7HEzMJ2uHaiq80Ll+3rri78szBhkY+4Brfh5eMZrfHy91QIq5ttq/jj9jKx7yru3iWL6Zn1ips95f7uSzP6j7gPxwbuw1eAvIIluwuSJLV/d9z5Gf54mXDSUjP5GFsVqWhN/pTdrPOrVPj+ze16QQMiRTZycy/akZ/ToZga6Yy6Wg7w/aldJnfP+LO//o3jhc0bfMzSo1z+BsqMvgpxtM+cGQXN65ECKRCmBPplxuFsNEgsgdwBfJPr99dVWMii3hcCpRRipu4Sde9bkoqs01bkUuzBr05CyCAx74EpTXS4gNbwz0NDVt6dJ/aJKpOfVmmvwRulPsZW+JwSJIenDV3cVO;4:WClu+t7ANi4pDI2vGw8wStlPD5I3+ZOcW3x+GadN5066WFZZ1CvQ9UihvZvNLVbdjRHui2ZaaZ5hJHzNu7Fp9ecEvLbbHGGx3xTi28Tw1AhNM7u44cHwD19WBbZiCZG/FQEjmjHEVlwf842VxzuDdb+kGv/y7G+086rBvzZlblb1o8aUQZs5K2AbZ544u5NqpEbXRlnutrj3N1sFC4lcidJkgD8Zxt2b1vllZhrrEszEIHlmMyta6SzwRokffDT8LGoE7M/OqCtPWg+oFTEPdg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231311)(944501410)(52105095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(6072148)(201708071742011)(7699016);SRVR:MWHPR04MB1198;BCL:0;PCL:0;RULEID:;SRVR:MWHPR04MB1198; X-Forefront-PRVS: 0759F7A50A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(396003)(39860400002)(136003)(366004)(346002)(376002)(199004)(189003)(50466002)(476003)(51416003)(4326008)(478600001)(52116002)(6486002)(105586002)(72206003)(48376002)(5660300001)(47776003)(305945005)(2616005)(956004)(7736002)(6916009)(6666003)(486006)(8936002)(2906002)(68736007)(36756003)(66066001)(186003)(81166006)(50226002)(8676002)(81156014)(316002)(6506007)(386003)(106356001)(97736004)(25786009)(16586007)(54906003)(14444005)(6116002)(1076002)(3846002)(86362001)(26005)(16526019)(53936002)(6512007);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR04MB1198;H:asus.hsd1.ca.comcast.net;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;23:jM3DrkZvp8MoU8pwyGEycQMqhELpha3aHR3C2F93Y/sIL/S9QErufqV2JgJnlK6eE4SyUB4Xb6isjYxRMK/f33D+KRkmVlkJZBEr6N6R1ikUX8oz+Z1Iv644m/+ewVg3b8UnZn3N2/hAHiBv1wRfasThEDCGhoCB3hSlcYaxSI5GhyVDQOQHGRao+E64jPWzQN/fo6IoPTVCWaCEpOhisuBILQBLzLsxiviQgU+e9ji24f8vxnI3o7VUd/4XvG03YV02UyoAZs23609vlXy1wPH87Wq2OP6LDZSbIZ+dtyw7b4PuRYiBwY4OL1+BjWUH/o74NxcJFAfa5ruFMYSd9bryR9IszhQqcCp9ZUJBUFBRWyVUzHn8wZQSdBe7rnhEHITdmXq+YCNyHWyuxX90jb36q6KS9xUpDIlo1gyp++hnSYbZ4YWlbLiU/h/LtN/IvJvNJ5FTMLD/T6dUKkw6AAvtUCMfcsGz5ACKvzDLXbL2mAcyZ1f7YiWIq15i92ALAVCBvv5VR+40Ah82920LIqCF5iJKwgiAn8Ta8OzSJIMQ0e+t8EK+k3qRtUNgCqhY9ItRUb0L3uDb/+2IGF56yDCBtvVhbYr/P/RA/W0s2ohE2UvVFHqe4UdWxNGeTIZET8G3fiOSdgYZGVFC7zAlUESE2BhSK8zc6P+D2UXB9K9vaJdvrbcKOu2ftsoP2BScdFualQaZUeVm03ZP0BmceG0eJ+YweJ2Entni9yc16+4HH827ghlZA/NKTmfDMDDrlKnaeiHT1idyulrV/f7+G+2hmZpBp2sI5huztR63vWLKGiB0vPqBw8E8GG4aZ5eLf9wlAYPBIvMRbxa53jG5L5n8+5o3nRc7McTae0DlC2f+PJ9aF7G8xeIPcw8Rz9AsPLaWYEKtE9VnNFygLA1szSK91kzRSU+v6BUhVliPCFjjZ5Oo9Cb3wG+lufzoNU1MesfSTOD2hHzXf5vsxo9kiDshXPpwVkn4p0F2g0lrrcUNGu8tGz7t9j/Y6jFF3/wRvADzxzzwLgBbgq6ag/KuAbo3mMmrIG/D5e//N2J6d9IJE2T7A39s5ggm+l27C2WQnhri03lG0gxqPBIfChg8MWlRkGM1tmvE43XOX3PYZV2wj21S7AjZc4QH07yA+abaBFNui//xv6BjSJKxck/JkUBkfPlT6OAHaR2oS+a+lNk= X-Microsoft-Antispam-Message-Info: YBSWuaAv030316QVkeIVCg/5ifa5SE+zPn1w5Hz0j6EzLtH+CJl2GqAnMBcK+wLZvP8tGGF+GMWYljn+ouMONFAHJL7WnmcbD0mIk5IVHJxN9F0ZiPd7n4vAk9sS2VbbabJDTVS9wlYwsjLjAWHtXPCz8S9Lr2BPtthlwV10PtBX5Y9o6aA+tds6nUZZhfqHoZibSj5IJSc/gwlBvsRhhynIOi5EhBEc5m7rVYrrvL+pqYiOW/57QIGYpPq1lA4e/3QgKXU6un7B3NI/jLuaj0oY/Heet/dq8RsARvEOJn0VASC0xV+cyd9/wCCeQbKeO3oNjorDmjarkXq62YYqZ8WcHXiZ7wh7epoTp34uMvw= X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;6:TYGyT+BwN0UMbOB4m7D41XHBt/sm+XLIcBcQkvra6QImMAEIw09lNttHWRohSCcJcrQ6iF8VEd5tx5eXYenXWHQenXYxxrJi8q3a9Ih3MIdnwwf1Bhch6Gn44eN2EO1k8NzaKRscPfRl6JQ7tlPxAraa/+jwL3QNC2jSAquLlSyDTJchbsN9mDDO/VupFEZceyKjk7+AF4Cb6J8CF8W5Ev5mfpVAvcFwa2fPcfzLPzas54oXSiMZe33OQt644s22tGKeuxZ7GPKsKXrT6a4dpuBPbhR3ceCMUKAcrW50K9AjkHY8eQOTsx8peVegU6K6Y7HJXmjh7Uqb2XLjNjPgoFB1rijtSN4weMrhSciAs7VeROTWLU5oMblLAuGBwnddoAMdtEg6z3Cgtd64xXsinrd/cHc5BB68bU9gm0jNj/et+aneiUlpNpm64crqK5OJrqzGG9ppAGhOiZnBmkIX0w==;5:lZe21VwfCktgk+gh8FijNAwwd9gHqu4NrYlxkKIvwxWfJLAq+tCLT/3BXFL8kGVJL7Z4hIJqP9J1H82lokR5Gsrv2fNmMaCNsK7vg/bLEhCKHddrahAsX98xrniWRbAOAPHnf2Rm52nZ6v1g2bj2qD7vJ3gt5RD/erc2kGDCFic=;7:VU2By+F8u4E2X68Q7ju0pwZl0+luYQ9ZAxe8BdldzCNccumd08QlBrVYYQ8etIOqeqgwYlQEvPd9+ZA4djhK9axWTehsrWpQhVOr4NqexNC34nja+MpKESv4aoNFG1RrpAsPNQUhY8AY6txLDOl+Nul5uzJ+qrAoiMHwjuWcHMx4KKIEC4askuecSY3vMQ/qE5YaCT8G4heWIq/EpO2aCoK2jVIGNL3gsPS8dPJxoRYTFJ7/awR32inGmgfQKUxW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;20:nQo7wFHs1sE+7NMsnK2NtmtsBAXLOgcX80tRzawOxWkNWY+FM2Sc9ySefej2tOwdYVTBQq82MmBlADlZT27sGOzEnLdJDOfJ4/Czwmag+7gPkeRxrIJubSdseWe9do8iWLFNTVi/8jde7rBT/BpOXq0EyVQLDJdKhlFcBMoGgsU= X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2018 19:42:03.7502 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48cc8f0d-4187-437a-a651-08d5fe302ec7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1198 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hello Jens, This patch series not only implements runtime power management for blk-mq but also fixes a starvation issue in the power management code for the legacy block layer. Please consider this patch series for the upstream kernel. Thanks, Bart. Changes compared to v5: - Introduced a new flag RQF_DV that replaces RQF_PREEMPT for SCSI domain validation. - Introduced a new request queue state QUEUE_FLAG_DV_ONLY for SCSI domain validation. - Instead of using SDEV_QUIESCE for both runtime suspend and SCSI domain validation, use that state for domain validation only and introduce a new state for runtime suspend, namely SDEV_QUIESCE. - Reallow system suspend during SCSI domain validation. - Moved the runtime resume call from the request allocation code into blk_queue_enter(). - Instead of relying on q_usage_counter, iterate over the tag set to determine whether or not any requests are in flight. Changes compared to v4: - Dropped the patches "Give RQF_PREEMPT back its original meaning" and "Serialize queue freezing and blk_pre_runtime_suspend()". - Replaced "percpu_ref_read()" with "percpu_is_in_use()". - Inserted pm_request_resume() calls in the block layer request allocation code such that the context that submits a request no longer has to call pm_runtime_get(). Changes compared to v3: - Avoid adverse interactions between system-wide suspend/resume and runtime power management by changing the PREEMPT_ONLY flag into a counter. - Give RQF_PREEMPT back its original meaning, namely that it is only set for ide_preempt requests. - Remove the flag BLK_MQ_REQ_PREEMPT. - Removed the pm_request_resume() call. Changes compared to v2: - Fixed the build for CONFIG_BLOCK=n. - Added a patch that introduces percpu_ref_read() in the percpu-counter code. - Added a patch that makes it easier to detect missing pm_runtime_get*() calls. - Addressed Jianchao's feedback including the comment about runtime overhead of switching a per-cpu counter to atomic mode. Changes compared to v1: - Moved the runtime power management code into a separate file. - Addressed Ming's feedback. Bart Van Assche (12): block, scsi: Introduce request flag RQF_DV scsi: Alter handling of RQF_DV requests scsi: Only set RQF_DV for requests used for domain validation scsi: Introduce the SDEV_SUSPENDED device status block, scsi: Rename QUEUE_FLAG_PREEMPT_ONLY into DV_ONLY and introduce PM_ONLY scsi: Reallow SPI domain validation during system suspend block: Move power management code into a new source file block, scsi: Introduce blk_pm_runtime_exit() block: Split blk_pm_add_request() and blk_pm_put_request() block: Change the runtime power management approach (1/2) block: Change the runtime power management approach (2/2) blk-mq: Enable support for runtime power management block/Kconfig | 5 + block/Makefile | 1 + block/blk-core.c | 310 ++++++------------------------ block/blk-mq-debugfs.c | 4 +- block/blk-mq.c | 4 +- block/blk-pm.c | 262 +++++++++++++++++++++++++ block/blk-pm.h | 69 +++++++ block/elevator.c | 22 +-- drivers/ide/ide-pm.c | 3 +- drivers/scsi/scsi_lib.c | 266 ++++++++++++++++++------- drivers/scsi/scsi_pm.c | 7 +- drivers/scsi/scsi_sysfs.c | 2 + drivers/scsi/scsi_transport_spi.c | 26 +-- drivers/scsi/sd.c | 10 +- drivers/scsi/sr.c | 4 +- include/linux/blk-mq.h | 6 +- include/linux/blk-pm.h | 26 +++ include/linux/blkdev.h | 41 ++-- include/scsi/scsi_device.h | 15 +- include/scsi/scsi_transport_spi.h | 1 - 20 files changed, 673 insertions(+), 411 deletions(-) create mode 100644 block/blk-pm.c create mode 100644 block/blk-pm.h create mode 100644 include/linux/blk-pm.h