Cover Letter Detail
Show a cover letter.
GET /api/covers/806886/?format=api
{ "id": 806886, "url": "http://patchwork.ozlabs.org/api/covers/806886/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/cover/4245176.X6JjkhnUAM@aspire.rjw.lan/", "project": { "id": 35, "url": "http://patchwork.ozlabs.org/api/projects/35/?format=api", "name": "Linux I2C development", "link_name": "linux-i2c", "list_id": "linux-i2c.vger.kernel.org", "list_email": "linux-i2c@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<4245176.X6JjkhnUAM@aspire.rjw.lan>", "list_archive_url": null, "date": "2017-08-29T00:18:13", "name": "[0/3] PM / ACPI / i2c: Runtime PM aware system sleep handling", "submitter": { "id": 26536, "url": "http://patchwork.ozlabs.org/api/people/26536/?format=api", "name": "Rafael J. Wysocki", "email": "rjw@rjwysocki.net" }, "mbox": "http://patchwork.ozlabs.org/project/linux-i2c/cover/4245176.X6JjkhnUAM@aspire.rjw.lan/mbox/", "series": [ { "id": 283, "url": "http://patchwork.ozlabs.org/api/series/283/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/list/?series=283", "date": "2017-08-29T00:59:49", "name": "PM / ACPI / i2c: Runtime PM aware system sleep handling", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/283/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/806886/comments/", "headers": { "Return-Path": "<linux-i2c-owner@vger.kernel.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-i2c-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xh9Y12KxMz9sP5\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 11:10:13 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751227AbdH2BKJ (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tMon, 28 Aug 2017 21:10:09 -0400", "from cloudserver094114.home.net.pl ([79.96.170.134]:61958 \"EHLO\n\tcloudserver094114.home.net.pl\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1751242AbdH2BKD (ORCPT\n\t<rfc822; linux-i2c@vger.kernel.org>); Mon, 28 Aug 2017 21:10:03 -0400", "from 79.184.253.199.ipv4.supernova.orange.pl (79.184.253.199)\n\t(HELO aspire.rjw.lan)\n\tby serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer\n\t0.82) id f692bae34c8e2ab2; Tue, 29 Aug 2017 03:10:02 +0200" ], "From": "\"Rafael J. Wysocki\" <rjw@rjwysocki.net>", "To": "Ulf Hansson <ulf.hansson@linaro.org>", "Cc": "Wolfram Sang <wsa@the-dreams.de>, Len Brown <lenb@kernel.org>,\n\tlinux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,\n\tKevin Hilman <khilman@kernel.org>,\n\tJarkko Nikula <jarkko.nikula@linux.intel.com>,\n\tAndy Shevchenko <andriy.shevchenko@linux.intel.com>,\n\tMika Westerberg <mika.westerberg@linux.intel.com>,\n\tJisheng Zhang <jszhang@marvell.com>,\n\tJohn Stultz <john.stultz@linaro.org>, Guodong Xu <guodong.xu@linaro.org>,\n\tSumit Semwal <sumit.semwal@linaro.org>,\n\tHaojian Zhuang <haojian.zhuang@linaro.org>,\n\tlinux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org,\n\tGreg Kroah-Hartman <gregkh@linuxfoundation.org>", "Subject": "[PATCH 0/3] PM / ACPI / i2c: Runtime PM aware system sleep handling", "Date": "Tue, 29 Aug 2017 02:18:13 +0200", "Message-ID": "<4245176.X6JjkhnUAM@aspire.rjw.lan>", "In-Reply-To": "<1503499329-28834-1-git-send-email-ulf.hansson@linaro.org>", "References": "<1503499329-28834-1-git-send-email-ulf.hansson@linaro.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "7Bit", "Content-Type": "text/plain; charset=\"us-ascii\"", "Sender": "linux-i2c-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<linux-i2c.vger.kernel.org>", "X-Mailing-List": "linux-i2c@vger.kernel.org" }, "content": "On Wednesday, August 23, 2017 4:42:00 PM CEST Ulf Hansson wrote:\n> The i2c designware platform driver, drivers/i2c/busses/i2c-designware-platdrv.c,\n> isn't well optimized for system sleep.\n> \n> What makes this driver particularly interesting is because it's a cross-SoC\n> driver, which sometimes means there is an ACPI PM domain attached to the i2c\n> device and sometimes not. The driver is being used on both x86 and ARM.\n> \n> In principle, to optimize the system sleep support in i2c driver, this series\n> enables the proven runtime PM centric path for the i2c driver. However, to do\n> that the ACPI PM domain also have to collaborate and understand this behaviour.\n> Therefore a number of changes, patch 1 to patch 7, makes the needed changes to\n> the ACPI PM domain. In patch8 and patch 9, the i2c driver gets optimized and is\n> converted to the runtime PM centric path for system sleep.\n> \n> It shall be noted, the behaviour of the ACPI PM domain should remain intact,\n> still taking benefit of using the direct_complete path during system sleep,\n> except for those drivers that explicitly request it not to (via a new ACPI API\n> added in this series).\n\nThe following is my take on this (untested so far).\n\nBasically, the point is to allow i2c-designware-platdrv to point its late\nsuspend and early resume callbacks, respectively, to pm_runtime_force_suspend()\nand pm_runtime_force_resume() which then will do the right thing regardless of\nwhether or not the device is runtime suspended when system suspend starts.\n\nHowever, for this to work, the ACPI PM domain (and the LPSS driver which also\nhas to work with i2c-designware-platdrv) must do the right thing regardless of\nwhether or not the device is runtime suspended when system suspend starts too.\n\nThe primary problem with that is that acpi_subsys_suspend() has to decide\nwhether or not to runtime resume the device and then\nacpi_subsys_suspend_late/resume_early() (and their counterparts in the ACPI\nLPSS driver) need to know whether or not to run acpi_dev_suspend_late/resume_early(), respectively.\n\nIn order to make that decision, acpi_subsys_suspend() needs to know (a) if\nthe power state of the device has to be updated (in which case the device\nshould be runtime resumed) and (b) if the driver's callbacks that will be\nrun subsequently can cope with a runtime suspended device. The former can\nbe figured out from the check done in acpi_subsys_prepare() (but its result\nneeds to be saved), but the latter is only known to the driver, so it needs a\nway to tell the code above it about that. Hence, the SAFE_SUSPEND flag\nintroduced by the first patch.\n\nThe second patch simply reworks the ACPI PM domain and the ACPI LPSS driver\nto do all the checks etc as needed.\n\nThe third one finally updates i2c-designware-platdrv.\n\nThanks,\nRafael" }