From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ken Xue Subject: Re: [PATCH 1/1] ACPI: Support D3 COLD device for old BIOS Date: Tue, 8 Dec 2015 09:37:56 +0800 Message-ID: <1449538676.2175.35.camel@kxue-X58A-UD3R> References: <1449463473.2175.13.camel@kxue-X58A-UD3R> <3822904.Z6rtg8lMJ5@vostro.rjw.lan> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-bl2on0065.outbound.protection.outlook.com ([65.55.169.65]:63631 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932193AbbLHBnf (ORCPT ); Mon, 7 Dec 2015 20:43:35 -0500 In-Reply-To: <3822904.Z6rtg8lMJ5@vostro.rjw.lan> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "Rafael J. Wysocki" Cc: lenb@kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, SPG_Linux_Kernel@amd.com, mika.westerberg@linux.intel.com, Andy Shevchenko , Ivan.Zheng@amd.com, Alex.Chuang@amd.com On Mon, 2015-12-07 at 23:48 +0100, Rafael J. Wysocki wrote: > On Monday, December 07, 2015 12:44:33 PM Ken Xue wrote: > > D3cold is only regarded as valid if the "_PR3" object is present > > for the given device after the commit <20dacb71ad28> > > (ACPI/PM: Reworkdevice power management to follow ACPI 6). > > > > But some old BIOS only defined "_PS3" for the D3COLD device. > > And old kernel also believes the device has "_PS3" is a > > D3COLD device. > > > > So, add some logics for supporting D3 COLD device for old BIOS > > which is compatible with earlier ACPI spec. > > > > Signed-off-by: Ken Xue > > Reported-and-tested-by: Gang Long > > Well, what really is the problem? My problem is that "acpi_device_can_poweroff" is called by "zpodd_init" in libata-zpodd.c. And ZPODD feature only can be enabled when D3_COLD is valid. > > acpi_device_set_power() has a special case specifically for D3cold and > falls back to D3hot if D3cold has been requested but is not "valid". > > > --- > > drivers/acpi/scan.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c > > index 01136b8..85c16bb 100644 > > --- a/drivers/acpi/scan.c > > +++ b/drivers/acpi/scan.c > > @@ -979,7 +979,9 @@ static void acpi_bus_get_power_flags(struct acpi_device *device) > > acpi_bus_init_power_state(device, i); > > > > INIT_LIST_HEAD(&device->power.states[ACPI_STATE_D3_COLD].resources); > > - if (!list_empty(&device->power.states[ACPI_STATE_D3_HOT].resources)) > > + if (!list_empty(&device->power.states[ACPI_STATE_D3_HOT].resources) || > > + ((acpi_gbl_FADT.header.revision < 6) && > > + device->power.states[ACPI_STATE_D3_HOT].flags.explicit_set)) > > device->power.states[ACPI_STATE_D3_COLD].flags.valid = 1; > > > > /* Set defaults for D0 and D3hot states (always valid) */ > > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932590AbbLHBnh (ORCPT ); Mon, 7 Dec 2015 20:43:37 -0500 Received: from mail-bl2on0065.outbound.protection.outlook.com ([65.55.169.65]:63631 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932193AbbLHBnf (ORCPT ); Mon, 7 Dec 2015 20:43:35 -0500 X-Greylist: delayed 74333 seconds by postgrey-1.27 at vger.kernel.org; Mon, 07 Dec 2015 20:43:34 EST Authentication-Results: spf=none (sender IP is 165.204.84.221) smtp.mailfrom=amd.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=permerror action=none header.from=amd.com; X-WSS-ID: 0NZ0NGJ-07-GP2-02 X-M-MSG: Message-ID: <1449538676.2175.35.camel@kxue-X58A-UD3R> Subject: Re: [PATCH 1/1] ACPI: Support D3 COLD device for old BIOS From: Ken Xue To: "Rafael J. Wysocki" CC: , , , , , Andy Shevchenko , , Date: Tue, 8 Dec 2015 09:37:56 +0800 In-Reply-To: <3822904.Z6rtg8lMJ5@vostro.rjw.lan> References: <1449463473.2175.13.camel@kxue-X58A-UD3R> <3822904.Z6rtg8lMJ5@vostro.rjw.lan> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.221;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(377454003)(199003)(377424004)(24454002)(189002)(86362001)(50466002)(33646002)(19580395003)(50986999)(23676002)(33716001)(19580405001)(47776003)(101416001)(76176999)(230700001)(586003)(77096005)(106466001)(103116003)(110136002)(92566002)(1220700001)(1096002)(105586002)(11100500001)(5008740100001)(97736004)(87936001)(5820100001)(189998001)(2950100001)(50226001)(99106002)(3940600001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0856;H:atltwp01.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0856;2:sGD8JCXhr45LapW/H6IzSxuEF+hYJ1meqJAGUF729vTKw6M02BxTTE2a5777LxE2HYaYHwl8lnYkXrlXakq8dIWERKAaEFtXgZXwfv/8rzEiI6Qx0exrMJ73fiZ9XrELd1Ns04VPUcrlMT7bBEHFwQ==;3:u8NlYDT99tdtIA8E0Gn7+zD7rObQx9pxvDBN3h7YEzsIwAbqD9gNgmnKJTHjiqjDxPIxWsiv5m2Y3ENoJMj9H6Ale6a0KKYWxeGX7XfN7ms6XBpY+WJMzK2aPgRDwNGHXfdCIIrQ74QePvbgwhFQC6RhEZB1igP+gEfn/hMUJb5/7EnGeemQdiRa/m39C22L/wwsrDfpLkYJxiLb+mNRl2N+7Om+6fn1JmshE0PLF38=;25:9Lzi3Pc52RitobqUhG6r+tmPHtt35wvmm3hApuCpYP6QYj/6cpsr5O6QX8hZH9iuOFe9R6H8E9hQu9AqeBKQqsQjX5u8Mq5JNCsQsM4iZoX2g6nSjFuwGYKqqNlxqOVwmtPpN2dO5AUaXE+p4oR/f/9oiT/EnRcVTF+DVZ7+B6wPPevNw7+mbrui6T8J412himrjksylg0P3hd5vbZtvw33wi+CFWOvlWZJ59Kgwp8qwD/CyDFdhooLvLFQGmgdY X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0856; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0856;20:ybXOz+tqnXSiJMfQXeYdLSXhbs9un1XjFvRZn5Zc5zXK7sH9IVtQV1vDB5KMEC9N6i9j732UepUKJsMixADAvrsufPB25pz5kChq4/O5O92gIyj8vrg3EjxF6H0xe5/f4qoI8leLukFJh5DCrKnd+W4C+Ua3dxx8KEH3T8eEpKWogs+MOQT/euKc48omaEjqLdR5vItjYQDT9El8CGazkn5gR1WkXfyBxg97ZDv5HJirK+JwmHYEqcaSoOybYxQvqS8EKswxpNEVxwPE/jFV7hhW+AVhqEFnfHzzvZbQgz7JWZi6WllUFJbdf+FZT9I58oaTcia+nuJz2I3Jd8QJzOxtk5U+IcZQ59vYpFAYFrLxU2HDG75mACItijYCir7m3znn7+F9N+C3h3LBD4zxU/vQ1HP0j9qyHKtRIdqDyizhf7izEyEZKzb5nrfoDZHPoQE5I7fEo0MpB+x4ejvFRJMITRV1B1phQznm2Ljw/i8QDea5ljuaXsL45LzTutyg;4:I6l0yGevK9uKDqZzFZqpLMT2mPHNoXssNkBj261n/89niwiuKBsOVaKjvCQc4llEcbH/5E9WF4wzTX3XnTJeNZ0TjYZVBpZEJIMVzMsCIp8lFOtjk1As+UCVEW2Fxax56XyAIe0d5+wbGFImKnVv9TcT2RKs4BMsTMeXD8a+FGEAs7A+b43dM6Nq1ok6myMN+hvLR/qYXqrbF0Hq9/z5Y1eUujPMZfB4R6lVRoVwjyp0X6ZmOSav8RqWH15eKYINTFL2m/76S7XLAW9fKf/cnFWOj9IUY2d5fRGsz7ZQzHUGhom5Pm7jihweKC3/Z+VwE3H7xWU775zm0anI1h1ClFTEk3iLFRQg3uav5Bo1fuYrngkWvuC7OJJo42ZlWDnLTiVUEzQHgjUtx7+SDW+3HA0NAsvhyasx/5KN22MMaTg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001)(10201501046);SRVR:CY1PR12MB0856;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0856; X-Forefront-PRVS: 0784C803FD X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjEyTUIwODU2OzIzOmkwQlFjWFpWcHZDd1U4cno4ZmRuNTNOc3VQ?= =?utf-8?B?R3NQNHVpOG84THoxWDJCNzg2Y3NyOWtlaDVQTWlJV3FxOW9VVER4YzdEc1Zs?= =?utf-8?B?YmFqUnZNMkRHSGNVWWh4bnczTzBqa2cvcndUNzExMWJPak5BUkx0R1BmYzhx?= =?utf-8?B?d0oxckI2NmE3QnpHSUE4RUoyYjE0Z3N3VjBuRDA1MTFsVEVYb3A5c2prN1k4?= =?utf-8?B?TnY0Um9MMkJsVmg0WXpiV1JOeklxS1VkOGdVWnoydmZIci9Da2hjWEpLWGxS?= =?utf-8?B?Rzl2UUlJZ2tZa2tiL1NnU2U4ck5SeXdPSU9QTzNlNXp2b0kzMzkvVCs4NWhq?= =?utf-8?B?dDVJY0NKQXF5UFlEVE5YR3dMKzZReHI3Y3I2MWluc3lIYVRPcGJERmJGN3VS?= =?utf-8?B?d3lpWVBDY1ZwcnAvSEE2WWdJaGN6SDZjRVVSQTllME40aExkV3B3NGc5QkFJ?= =?utf-8?B?R3FZWngvVm1WYUQ2UkNqc2w5ZmR6SnBndTlWc2EweXRSL1BmRlJVbXdGNVcy?= =?utf-8?B?bldTOGw5dGM1RU1DZTZ4aHJ0dUlqampOTU1rb1BaNU8zSDVBOE55dy9Kb3Ez?= =?utf-8?B?ZkxCc2hHQi9OS1JuUGluTG9tN1RPZlRpVGJKSHE0SUZmL0xIMWJRQW9oQk0x?= =?utf-8?B?YnFRY0xJNXZ4Qkx2blZUaE1zNmxYZGxueW81ZXZ6VEszK1VVU2lMaXR6VGww?= =?utf-8?B?SnJrbHN3N0JnYWxGRnZQNkN0Y0dUN0VySFlRT2E4NVdoeS9BVzN2VjV6U3lu?= =?utf-8?B?ZUZrWHJtcHhxV2dYYjBsYkdFSGZpQjlLQnhXbXN1V3ZCaVZTL0JRNWdIbVlL?= =?utf-8?B?dVJqTTBEVHlBSTRCOHE3ZHlyREpueWNBQkE0V3VqYkU3M0xYYmhmeitoeXBE?= =?utf-8?B?cXBRRWllS0NEVEk0SnNoOE05VFdIV1M1Ym1YUlpJTDhFY2x6YkI3bk9wRytV?= =?utf-8?B?bnZUM2JKa1lQVktpYURYaGZyR05DZW43emlXbDlLWTFRQXBLbUpicTZIdEVo?= =?utf-8?B?Rlh2U1ZLYTlVRDFkQWE5VFBwalY5VVZpWUFNaWlzZloxQWt6VncwNWErMFlQ?= =?utf-8?B?MzVQQmJRYjZCdzJhY2lIUFhhU3VXbDU4VDVWcnFjQ3d4UXVrOGZ1Rk9XcCtD?= =?utf-8?B?eWxvZ01RNEhlcHh1NURjYWM3UFNGYWJEOThMbGVWMExJeDJ2ejNtZ2pEaWl5?= =?utf-8?B?NUp5TDNkSSs0bkxpUUkwQlVjbUU4SS9kTGl4a3BONHl5MnpxdVVzVlNlVUJ5?= =?utf-8?B?Rks5STJWSzEwRm55RGNsdE1tVFIwTFBoeE9BencvbmF4aWpGLzcrQ1lnNUtQ?= =?utf-8?B?MWhZK0pMY3AvUGR5MnNWL2xLL3Y2bVdFK2NJL0lwbUxZZGRKbmlhQTdZZWQ5?= =?utf-8?B?VzNIM0dIZ2lZb2k4enp3ZkVDSkFaWEoxTXU2T2R3PT0=?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0856;5:SjouEdXWdwMm1Q3wm/hFQrhezT5P6G29B7/9dWVk94r92ZhwOEOZfoKsF7fc2cLcChst1FFkaCvFzSiKzNI2MzejN7uTXffUuFp0vqs18S7JtQnRp1a4J7ezb5UXlqZhRxxBhiFdofY4i6+1x9qjAA==;24:gkpw3OdhjgE4PoFNXEP6XpvqIz+MJhX/ve3IXJeByRWfq5eo2HC1GCbTs7MoPLFp/DuBXbOAjkXUo2yoFfJ2Oo9JOv6rOxEwiGYNuOuqU3o=;20:1maovFlmiSy0/FxsH1NCs29UUc/WTHCkxwxxZvuk4xidZlKxYdv0DnY27KAwLctOVRe6jgkZ52KYaWxmVfFOd55Z+RjEsB+Jxy6SCbyAyTgsUxQX86eKFwIurqmGZkeeZvDoatn56iDZm+jfFUYvBqm8KYgGBK7Kn03rfTAJN2elMBdDBg20q2hGSJ05pq0+SN0jU42NH7tM4uAFD6840eW0t7lDHbJRK8V7Y9iaw3N6wwLXsGAj2KNdxMobTvB4 SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2015 01:43:31.8575 (UTC) X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.221];Helo=[atltwp01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0856 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2015-12-07 at 23:48 +0100, Rafael J. Wysocki wrote: > On Monday, December 07, 2015 12:44:33 PM Ken Xue wrote: > > D3cold is only regarded as valid if the "_PR3" object is present > > for the given device after the commit <20dacb71ad28> > > (ACPI/PM: Reworkdevice power management to follow ACPI 6). > > > > But some old BIOS only defined "_PS3" for the D3COLD device. > > And old kernel also believes the device has "_PS3" is a > > D3COLD device. > > > > So, add some logics for supporting D3 COLD device for old BIOS > > which is compatible with earlier ACPI spec. > > > > Signed-off-by: Ken Xue > > Reported-and-tested-by: Gang Long > > Well, what really is the problem? My problem is that "acpi_device_can_poweroff" is called by "zpodd_init" in libata-zpodd.c. And ZPODD feature only can be enabled when D3_COLD is valid. > > acpi_device_set_power() has a special case specifically for D3cold and > falls back to D3hot if D3cold has been requested but is not "valid". > > > --- > > drivers/acpi/scan.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c > > index 01136b8..85c16bb 100644 > > --- a/drivers/acpi/scan.c > > +++ b/drivers/acpi/scan.c > > @@ -979,7 +979,9 @@ static void acpi_bus_get_power_flags(struct acpi_device *device) > > acpi_bus_init_power_state(device, i); > > > > INIT_LIST_HEAD(&device->power.states[ACPI_STATE_D3_COLD].resources); > > - if (!list_empty(&device->power.states[ACPI_STATE_D3_HOT].resources)) > > + if (!list_empty(&device->power.states[ACPI_STATE_D3_HOT].resources) || > > + ((acpi_gbl_FADT.header.revision < 6) && > > + device->power.states[ACPI_STATE_D3_HOT].flags.explicit_set)) > > device->power.states[ACPI_STATE_D3_COLD].flags.valid = 1; > > > > /* Set defaults for D0 and D3hot states (always valid) */ > > >