From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751689AbeAJRiw (ORCPT + 1 other); Wed, 10 Jan 2018 12:38:52 -0500 Received: from esa5.dell-outbound.iphmx.com ([68.232.153.95]:31576 "EHLO esa5.dell-outbound.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750830AbeAJRit (ORCPT ); Wed, 10 Jan 2018 12:38:49 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AMuA7HxNGV2y+uwK47vgl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0K/37r8bcNUDSrc9gkEXOFd2Cra4c0qyO6+jJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fcbglUmTaxe69+IAmrpgjNq8cahpdvJLwswRXTuHtIfO?= =?us-ascii?q?pWxWJsJV2Nmhv3+9m98p1+/SlOovwt78FPX7n0cKQ+VrxYES8pM3sp683xtBnM?= =?us-ascii?q?VhWA630BWWgLiBVIAgzF7BbnXpfttybxq+Rw1DWGMcDwULs5Xymp4aV2Rx/ykC?= =?us-ascii?q?oJNyA3/nzLisJ+j6xbrhCupx1jzIDbb46YL+Z+frrffd8GWWZNQthdWipcCY28?= =?us-ascii?q?dYsPCO8BMP5foof6vVQOtxq+BQ62CO3pyz9Ig3j23asm3OQgDw7G2AggH9UVvX?= =?us-ascii?q?vJstr1MKMSXfqpw6nPyDXOdvVb0irz5ojPdxAuu/CMXbRofMrS10YvDQXFgUuU?= =?us-ascii?q?qYD/ODOVzOsNv3CU7+phSeKvi3MnpBprrjezwccsj4/EjZ8WxFDc7Sh0wYU4Kc?= =?us-ascii?q?emREN1f9KoCoZcuiGUOodsXM8uX3xktD4nxrEao5K3YScHxZo9yxLCaPGLaYuF?= =?us-ascii?q?7xP7WOqMLjp1imhpdK++ihuz60Stye3xWtOq3FpWrydIlMTHuGoX2BzJ8MeHT+?= =?us-ascii?q?Nw/kKm2TmSyQ/e8vpEIUUolarDLJ4h36IwmoITsUvdGi/2n137g7GNdko+5+Sk?= =?us-ascii?q?8fnobavipp+YLoN0jRz+Mrg1lcy4HOQ4NBUBU3aB9eS9zL3j/Uj5QbpQgvIqla?= =?us-ascii?q?nZtYjWJcUdpqGnHw9Yyocu5hWlAzu43tkUg2MLIE9FdR+JlYTlJU3CLO3gAfe6?= =?us-ascii?q?mVuskTNrx/7cPr3mB5XANn/Nn637fbZ87E5Q0gw9zdFa55JTDLEOPPPzVVH1tN?= =?us-ascii?q?zcCR80KBG7zPjjCNV5zI8RRWWPAqqBPKPIrVCI/v4vI/WLZIINvDb9Kv4l5+Ph?= =?us-ascii?q?jHMgg1ASYbGp3ZoMZXCmEfRpPV+ZbWDvgtgfC2cKuBQxTOjwhF2FSz5TaG64X7?= =?us-ascii?q?gg6TEjFIKmEYDDS5ipgLyA2ie7A5JXanlFCl+SC3focZuLW/MXZSKMLc9ujCYE?= =?us-ascii?q?WaKiS4A/zxGushH1y759IurT4C0Yuorp1MJp6O3LiREy6Tt0AtyZ02GMSWF0g2?= =?us-ascii?q?wJSyYu3KB6ukF91FiD3rZig/BCFtxc+elJUgEkOp7Y1eB6DMryWg3ZdNeTVFmm?= =?us-ascii?q?WsmmAS02Tt8p298OZ1xyG8msjhDExSqqBqYZmKGRBJw17KLTwWLxK99yynvF1a?= =?us-ascii?q?QslEcmQsRROm28nKJ/9BbcB5TPk0qHk6amb6Mc3DTC9DTL8W3b6FtaTyZqU7rU?= =?us-ascii?q?RncUZUqQq9nlsAeKG7uvD6k3dwJK0c+qNKRHcJvqgE9ASfOlP87RNTGfgWC1UE?= =?us-ascii?q?Ktz6mNa8zOemAa2i7cBUwAlCgf8HKCcwM5A3Hy8CrlEDVyGAe3MAvX+u5kpSbj?= =?us-ascii?q?Qw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2H0AQA1TlZah8mZ6EReGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYQXEHQnB50MggKXL4FTQwojhRgChEZBFgEBAQEBAQEBAQECEAE?= =?us-ascii?q?BAQgNCQgoL4I4Ig0ESyovAQEBAQEBAQEBAQEBAQEBGgINXQEBAQEDJxM/DAQCA?= =?us-ascii?q?QgRBAEBHwkHRgkIAgQBDQUIiisQsSI6ijoBAQEBAQEBAwEBAQEBAQEBAQEZBYQ?= =?us-ascii?q?gghWDQIMugy8CAhmBOoYYBaNkiAuNMZQXjTuJZoE8JgiBe2+CfIJkgXN4AYkUK?= =?us-ascii?q?oEKgRcBAQE?= X-IPAS-Result: =?us-ascii?q?A2H0AQA1TlZah8mZ6EReGQEBAQEBAQEBAQEBAQcBAQEBAYQ?= =?us-ascii?q?XEHQnB50MggKXL4FTQwojhRgChEZBFgEBAQEBAQEBAQECEAEBAQgNCQgoL4I4I?= =?us-ascii?q?g0ESyovAQEBAQEBAQEBAQEBAQEBGgINXQEBAQEDJxM/DAQCAQgRBAEBHwkHRgk?= =?us-ascii?q?IAgQBDQUIiisQsSI6ijoBAQEBAQEBAwEBAQEBAQEBAQEZBYQgghWDQIMugy8CA?= =?us-ascii?q?hmBOoYYBaNkiAuNMZQXjTuJZoE8JgiBe2+CfIJkgXN4AYkUKoEKgRcBAQE?= From: X-LoopCount0: from 10.166.132.198 X-IronPort-AV: E=Sophos;i="5.46,341,1511848800"; d="scan'208";a="1200158823" X-DLP: DLP_GlobalPCIDSS To: , CC: , , , , , Subject: RE: [PATCH 1/2] ACPI / PM: Use Low Power S0 Idle on more systems Thread-Topic: [PATCH 1/2] ACPI / PM: Use Low Power S0 Idle on more systems Thread-Index: AQHTig6vHOj9Ot6LoUi9F8Z9Ks8leqNtXsbg Date: Wed, 10 Jan 2018 17:38:46 +0000 Message-ID: <8b088fbf3e8d47dc94cefdae6fe515d9@ausx13mpc120.AMER.DELL.COM> References: <4046497.JI7UjL75gC@aspire.rjw.lan> <12541194.33112yYDjW@aspire.rjw.lan> In-Reply-To: <12541194.33112yYDjW@aspire.rjw.lan> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.143.18.86] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: > -----Original Message----- > From: platform-driver-x86-owner@vger.kernel.org [mailto:platform-driver-x86- > owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki > Sent: Wednesday, January 10, 2018 6:26 AM > To: Linux ACPI > Cc: Andy Shevchenko ; Darren Hart > ; LKML ; Linux PM pm@vger.kernel.org>; Platform Driver ; > Valentin Manea > Subject: [PATCH 1/2] ACPI / PM: Use Low Power S0 Idle on more systems > > From: Rafael J. Wysocki > > Some systems don't support the ACPI_LPS0_ENTRY and ACPI_LPS0_EXIT > functions in their Low Power S0 Idle _DSM, but still expect EC > events to be processed in the suspend-to-idle state for power button > wakeup (among other things) to work. Surface Pro3 turns out to be > one of them. > > Fortunately, it still provides Low Power S0 Idle _DSM with the screen > on/off functions supported, so modify the ACPI suspend-to-idle to use > the Low Power S0 Idle code path for all systems supporting the > ACPI_LPS0_ENTRY and ACPI_LPS0_EXIT or the ACPI_LPS0_SCREEN_OFF and > ACPI_LPS0_SCREEN_ON functions in their Low Power S0 Idle _DSM. > > Potentially, that will cause more systems to use suspend-to-idle by > default, so some future corrections may be necessary if it leads > to issues, but let it remain more straightforward for now. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=198389 > Reported-by: Valentin Manea > Signed-off-by: Rafael J. Wysocki > --- > drivers/acpi/sleep.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > Index: linux-pm/drivers/acpi/sleep.c > =================================================================== > --- linux-pm.orig/drivers/acpi/sleep.c > +++ linux-pm/drivers/acpi/sleep.c > @@ -707,7 +707,8 @@ static const struct acpi_device_id lps0_ > #define ACPI_LPS0_ENTRY 5 > #define ACPI_LPS0_EXIT 6 > > -#define ACPI_S2IDLE_FUNC_MASK ((1 << ACPI_LPS0_ENTRY) | (1 << > ACPI_LPS0_EXIT)) > +#define ACPI_LPS0_SCREEN_MASK ((1 << ACPI_LPS0_SCREEN_OFF) | (1 << > ACPI_LPS0_SCREEN_ON)) > +#define ACPI_LPS0_S2I_MASK ((1 << ACPI_LPS0_ENTRY) | (1 << ACPI_LPS0_EXIT)) > > static acpi_handle lps0_device_handle; > static guid_t lps0_dsm_guid; > @@ -910,7 +911,8 @@ static int lps0_device_attach(struct acp > if (out_obj && out_obj->type == ACPI_TYPE_BUFFER) { > char bitmask = *(char *)out_obj->buffer.pointer; > > - if ((bitmask & ACPI_S2IDLE_FUNC_MASK) == > ACPI_S2IDLE_FUNC_MASK) { > + if ((bitmask & ACPI_LPS0_S2I_MASK) == ACPI_LPS0_S2I_MASK || > + (bitmask & ACPI_LPS0_SCREEN_MASK) == > ACPI_LPS0_SCREEN_MASK) { > lps0_dsm_func_mask = bitmask; > lps0_device_handle = adev->handle; > /* In making this change I believe you'll need to cache the values that you found from the function mask to test them later too. Here: https://github.com/torvalds/linux/blob/master/drivers/acpi/sleep.c#L943 This is because later on both ACPI_LPS0_SCREEN_OFF and ACPI_LPS0_ENTRY are called whether or not they both exist. Fortunately looking at the DSDT in the attached bug nothing happens if calling the undefined Arg2 == 0x05/Arg2 == 0x06 but that might not always be the case.