Message ID | BCBE834BAC19744BA2C3AC4D68DBF2198D8270D9@CNMAILEX03.lenovo.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
On 05/24/2016 02:41 AM, Ocean HY1 He wrote: > Hi Prarit and Jon, > > How do you think of this? > > Thanks. > > Ocean He / 何海洋 > SW Development Dept. > Beijing Design Center > Enterprise Product Group > Mobile: 18911778926 > E-mail: hehy1@lenovo.com > No.6 Chuang Ye Road, Haidian District, Beijing, China 100085 > > -----Original Message----- > From: Ocean HY1 He > Sent: Monday, May 16, 2016 11:04 AM > To: rjw@rjwysocki.net; lenb@kernel.org > Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David Tanaka; Nagananda Chumbalkar > Subject: RE: [PATCH] ACPI: Execute the _PTS method when system reboot > > To whom may concern, > > A Lenovo feature depends on _PTS method execution when reboot. And after check the ACPI spec, I think _PTS should be exectued when reboo. This patch could fix the problem. > > Any comments of this patch? Many thanks! > > Ocean He / 何海洋 > SW Development Dept. > Beijing Design Center > Enterprise Product Group > Mobile: 18911778926 > E-mail: hehy1@lenovo.com > No.6 Chuang Ye Road, Haidian District, Beijing, China 100085 > > -----Original Message----- > From: Ocean HY1 He > Sent: Monday, May 09, 2016 1:50 PM > To: rjw@rjwysocki.net; lenb@kernel.org > Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David Tanaka; Ocean HY1 He; Nagananda Chumbalkar > Subject: [PATCH] ACPI: Execute the _PTS method when system reboot > > The _PTS control method is defined in the section 7.4.1 of acpi 6.0 > spec. The _PTS control method is executed by the OS during the sleep > transition process for S1, S2, S3, S4, and for orderly S5 shutdown. > The sleeping state value (For example, 1, 2, 3, 4 or 5 for the S5 > soft-off state) is passed to the _PTS control method. This method > is called after OSPM has notified native device drivers of the sleep > state transition and before the OSPM has had a chance to fully > prepare the system for a sleep state transition. > > The _PTS control method provides the BIOS a mechanism for performing > some housekeeping, such as writing the sleep type value to the embedded > controller, before entering the system sleeping state. > > According to section 7.5 of acpi 6.0 spec, _PTS should run after _TTS. > > Thus, a _PTS block notifier is added to the reboot notifier list so that > the _PTS object will also be evaluated when the system reboot. > > Signed-off-by: Ocean He <hehy1@lenovo.com> > Signed-off-by: Nagananda Chumbalkar <nchumbalkar@lenovo.com> > --- > drivers/acpi/sleep.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c > index 2a8b596..8b290fb 100644 > --- a/drivers/acpi/sleep.c > +++ b/drivers/acpi/sleep.c > @@ -55,6 +55,26 @@ static struct notifier_block tts_notifier = { > .priority = 0, > }; > > +static int pts_notify_reboot(struct notifier_block *this, > + unsigned long code, void *x) > +{ > + acpi_status status; > + > + status = acpi_execute_simple_method(NULL, "\\_PTS", ACPI_STATE_S5); > + if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { > + /* It won't break anything. */ > + printk(KERN_NOTICE "Failure in evaluating _PTS object\n"); ^^^^ pr_debug("No _PTS object found.\n"); It isn't a warning or error, so don't put the word "Failure" in there. Beyond that, looks entirely reasonable to me. P. > + } > + > + return NOTIFY_DONE; > +} > + > +static struct notifier_block pts_notifier = { > + .notifier_call = pts_notify_reboot, > + .next = NULL, > + .priority = 0, > +}; > + > static int acpi_sleep_prepare(u32 acpi_state) > { > #ifdef CONFIG_ACPI_SLEEP > @@ -896,5 +916,12 @@ int __init acpi_sleep_init(void) > * object can also be evaluated when the system enters S5. > */ > register_reboot_notifier(&tts_notifier); > + > + /* > + * According to section 7.5 of acpi 6.0 spec, _PTS should run after > + * _TTS when the system enters S5. > + */ > + register_reboot_notifier(&pts_notifier); > + > return 0; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQcmFyaXQgQmhhcmdhdmEgW21h aWx0bzpwcmFyaXRAcmVkaGF0LmNvbV0NCj4gU2VudDogVHVlc2RheSwgTWF5IDI0LCAyMDE2IDY6 MTYgUE0NCj4gVG86IE9jZWFuIEhZMSBIZTsgamNtQHJlZGhhdC5jb20NCj4gQ2M6IGxpbnV4LWFj cGlAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBEYXZpZCBU YW5ha2E7DQo+IE5hZ2FuYW5kYSBDaHVtYmFsa2FyOyByandAcmp3eXNvY2tpLm5ldDsgbGVuYkBr ZXJuZWwub3JnOw0KPiB3ZWZ1QHJlZGhhdC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gQUNQ STogRXhlY3V0ZSB0aGUgX1BUUyBtZXRob2Qgd2hlbiBzeXN0ZW0gcmVib290DQo+IA0KPiANCj4g DQo+IE9uIDA1LzI0LzIwMTYgMDI6NDEgQU0sIE9jZWFuIEhZMSBIZSB3cm90ZToNCj4gPiBIaSBQ cmFyaXQgYW5kIEpvbiwNCj4gPg0KPiA+IEhvdyBkbyB5b3UgdGhpbmsgb2YgdGhpcz8NCj4gPg0K PiA+IFRoYW5rcy4NCj4gPg0KPiA+IE9jZWFuIEhlIC8gus66o9HzDQo+ID4gU1cgRGV2ZWxvcG1l bnQgRGVwdC4NCj4gPiBCZWlqaW5nIERlc2lnbiBDZW50ZXINCj4gPiBFbnRlcnByaXNlIFByb2R1 Y3QgR3JvdXANCj4gPiBNb2JpbGU6IDE4OTExNzc4OTI2DQo+ID4gRS1tYWlsOiBoZWh5MUBsZW5v dm8uY29tDQo+ID4gTm8uNiBDaHVhbmcgWWUgUm9hZCwgSGFpZGlhbiBEaXN0cmljdCwgQmVpamlu ZywgQ2hpbmEgMTAwMDg1DQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ IEZyb206IE9jZWFuIEhZMSBIZQ0KPiA+IFNlbnQ6IE1vbmRheSwgTWF5IDE2LCAyMDE2IDExOjA0 IEFNDQo+ID4gVG86IHJqd0Byand5c29ja2kubmV0OyBsZW5iQGtlcm5lbC5vcmcNCj4gPiBDYzog bGludXgtYWNwaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7 IERhdmlkDQo+IFRhbmFrYTsgTmFnYW5hbmRhIENodW1iYWxrYXINCj4gPiBTdWJqZWN0OiBSRTog W1BBVENIXSBBQ1BJOiBFeGVjdXRlIHRoZSBfUFRTIG1ldGhvZCB3aGVuIHN5c3RlbQ0KPiByZWJv b3QNCj4gPg0KPiA+IFRvIHdob20gbWF5IGNvbmNlcm4sDQo+ID4NCj4gPiBBIExlbm92byBmZWF0 dXJlIGRlcGVuZHMgb24gX1BUUyBtZXRob2QgZXhlY3V0aW9uIHdoZW4gcmVib290LiBBbmQNCj4g YWZ0ZXIgY2hlY2sgdGhlIEFDUEkgc3BlYywgSSB0aGluayBfUFRTIHNob3VsZCBiZSBleGVjdHVl ZCB3aGVuIHJlYm9vLg0KPiBUaGlzIHBhdGNoIGNvdWxkIGZpeCB0aGUgcHJvYmxlbS4NCj4gPg0K PiA+IEFueSBjb21tZW50cyBvZiB0aGlzIHBhdGNoPyBNYW55IHRoYW5rcyENCj4gPg0KPiA+IE9j ZWFuIEhlIC8gus66o9HzDQo+ID4gU1cgRGV2ZWxvcG1lbnQgRGVwdC4NCj4gPiBCZWlqaW5nIERl c2lnbiBDZW50ZXINCj4gPiBFbnRlcnByaXNlIFByb2R1Y3QgR3JvdXANCj4gPiBNb2JpbGU6IDE4 OTExNzc4OTI2DQo+ID4gRS1tYWlsOiBoZWh5MUBsZW5vdm8uY29tDQo+ID4gTm8uNiBDaHVhbmcg WWUgUm9hZCwgSGFpZGlhbiBEaXN0cmljdCwgQmVpamluZywgQ2hpbmEgMTAwMDg1DQo+ID4NCj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE9jZWFuIEhZMSBIZQ0KPiA+ IFNlbnQ6IE1vbmRheSwgTWF5IDA5LCAyMDE2IDE6NTAgUE0NCj4gPiBUbzogcmp3QHJqd3lzb2Nr aS5uZXQ7IGxlbmJAa2VybmVsLm9yZw0KPiA+IENjOiBsaW51eC1hY3BpQHZnZXIua2VybmVsLm9y ZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgRGF2aWQNCj4gVGFuYWthOyBPY2VhbiBI WTEgSGU7IE5hZ2FuYW5kYSBDaHVtYmFsa2FyDQo+ID4gU3ViamVjdDogW1BBVENIXSBBQ1BJOiBF eGVjdXRlIHRoZSBfUFRTIG1ldGhvZCB3aGVuIHN5c3RlbSByZWJvb3QNCj4gPg0KPiA+IFRoZSBf UFRTIGNvbnRyb2wgbWV0aG9kIGlzIGRlZmluZWQgaW4gdGhlIHNlY3Rpb24gNy40LjEgb2YgYWNw aSA2LjANCj4gPiBzcGVjLiBUaGUgX1BUUyBjb250cm9sIG1ldGhvZCBpcyBleGVjdXRlZCBieSB0 aGUgT1MgZHVyaW5nIHRoZSBzbGVlcA0KPiA+IHRyYW5zaXRpb24gcHJvY2VzcyBmb3IgUzEsIFMy LCBTMywgUzQsIGFuZCBmb3Igb3JkZXJseSBTNSBzaHV0ZG93bi4NCj4gPiBUaGUgc2xlZXBpbmcg c3RhdGUgdmFsdWUgKEZvciBleGFtcGxlLCAxLCAyLCAzLCA0IG9yIDUgZm9yIHRoZSBTNQ0KPiA+ IHNvZnQtb2ZmIHN0YXRlKSBpcyBwYXNzZWQgdG8gdGhlIF9QVFMgY29udHJvbCBtZXRob2QuIFRo aXMgbWV0aG9kDQo+ID4gaXMgY2FsbGVkIGFmdGVyIE9TUE0gaGFzIG5vdGlmaWVkIG5hdGl2ZSBk ZXZpY2UgZHJpdmVycyBvZiB0aGUgc2xlZXANCj4gPiBzdGF0ZSB0cmFuc2l0aW9uIGFuZCBiZWZv cmUgdGhlIE9TUE0gaGFzIGhhZCBhIGNoYW5jZSB0byBmdWxseQ0KPiA+IHByZXBhcmUgdGhlIHN5 c3RlbSBmb3IgYSBzbGVlcCBzdGF0ZSB0cmFuc2l0aW9uLg0KPiA+DQo+ID4gVGhlIF9QVFMgY29u dHJvbCBtZXRob2QgcHJvdmlkZXMgdGhlIEJJT1MgYSBtZWNoYW5pc20gZm9yIHBlcmZvcm1pbmcN Cj4gPiBzb21lIGhvdXNla2VlcGluZywgc3VjaCBhcyB3cml0aW5nIHRoZSBzbGVlcCB0eXBlIHZh bHVlIHRvIHRoZQ0KPiBlbWJlZGRlZA0KPiA+IGNvbnRyb2xsZXIsIGJlZm9yZSBlbnRlcmluZyB0 aGUgc3lzdGVtIHNsZWVwaW5nIHN0YXRlLg0KPiA+DQo+ID4gQWNjb3JkaW5nIHRvIHNlY3Rpb24g Ny41IG9mIGFjcGkgNi4wIHNwZWMsIF9QVFMgc2hvdWxkIHJ1biBhZnRlciBfVFRTLg0KPiA+DQo+ ID4gVGh1cywgYSBfUFRTIGJsb2NrIG5vdGlmaWVyIGlzIGFkZGVkIHRvIHRoZSByZWJvb3Qgbm90 aWZpZXIgbGlzdCBzbyB0aGF0DQo+ID4gdGhlIF9QVFMgb2JqZWN0IHdpbGwgYWxzbyBiZSBldmFs dWF0ZWQgd2hlbiB0aGUgc3lzdGVtIHJlYm9vdC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE9j ZWFuIEhlIDxoZWh5MUBsZW5vdm8uY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE5hZ2FuYW5kYSBD aHVtYmFsa2FyIDxuY2h1bWJhbGthckBsZW5vdm8uY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJz L2FjcGkvc2xlZXAuYyB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAxIGZp bGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvYWNwaS9zbGVlcC5jIGIvZHJpdmVycy9hY3BpL3NsZWVwLmMNCj4gPiBpbmRleCAyYThiNTk2 Li44YjI5MGZiIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYWNwaS9zbGVlcC5jDQo+ID4gKysr IGIvZHJpdmVycy9hY3BpL3NsZWVwLmMNCj4gPiBAQCAtNTUsNiArNTUsMjYgQEAgc3RhdGljIHN0 cnVjdCBub3RpZmllcl9ibG9jayB0dHNfbm90aWZpZXIgPSB7DQo+ID4gIAkucHJpb3JpdHkJPSAw LA0KPiA+ICB9Ow0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgcHRzX25vdGlmeV9yZWJvb3Qoc3RydWN0 IG5vdGlmaWVyX2Jsb2NrICp0aGlzLA0KPiA+ICsJCQl1bnNpZ25lZCBsb25nIGNvZGUsIHZvaWQg KngpDQo+ID4gK3sNCj4gPiArCWFjcGlfc3RhdHVzIHN0YXR1czsNCj4gPiArDQo+ID4gKwlzdGF0 dXMgPSBhY3BpX2V4ZWN1dGVfc2ltcGxlX21ldGhvZChOVUxMLCAiXFxfUFRTIiwNCj4gQUNQSV9T VEFURV9TNSk7DQo+ID4gKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykgJiYgc3RhdHVzICE9IEFF X05PVF9GT1VORCkgew0KPiA+ICsJCS8qIEl0IHdvbid0IGJyZWFrIGFueXRoaW5nLiAqLw0KPiA+ ICsJCXByaW50ayhLRVJOX05PVElDRSAiRmFpbHVyZSBpbiBldmFsdWF0aW5nIF9QVFMgb2JqZWN0 XG4iKTsNCj4gDQo+IF5eXl4NCj4gCXByX2RlYnVnKCJObyBfUFRTIG9iamVjdCBmb3VuZC5cbiIp Ow0KPiANCj4gSXQgaXNuJ3QgYSB3YXJuaW5nIG9yIGVycm9yLCBzbyBkb24ndCBwdXQgdGhlIHdv cmQgIkZhaWx1cmUiIGluIHRoZXJlLg0KPiANCj4gQmV5b25kIHRoYXQsIGxvb2tzIGVudGlyZWx5 IHJlYXNvbmFibGUgdG8gbWUuDQo+IA0KPiBQLg0KPiANCkhpIFByYXJpdCwNCg0KVGhlIG1lc3Nh Z2Ugb3V0cHV0cyB3aGVuIF9QVFMgaXMgZm91bmQgYnV0IGZhaWwgdG8gZXhlY3V0ZS4gSSBjb3B5 IHRoaXMgY29kZQ0KZnJvbSBleGlzdGVkIGZ1bmN0aW9uIGFjcGlfc2xlZXBfdHRzX3N3aXRjaCgp LiBJIGp1c3Qgd2FudHMgdG8ga2VlcCBuZXcgY29kZXMNCmFzIHRoZSBzYW1lIHN0eWxlIGFzIGV4 aXN0ZWQgY29kZXMuIE1ha2Ugc2Vuc2U/IDstKQ0KDQpPY2Vhbi4NCj4gDQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIE5PVElGWV9ET05FOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg c3RydWN0IG5vdGlmaWVyX2Jsb2NrIHB0c19ub3RpZmllciA9IHsNCj4gPiArCS5ub3RpZmllcl9j YWxsCT0gcHRzX25vdGlmeV9yZWJvb3QsDQo+ID4gKwkubmV4dAkJPSBOVUxMLA0KPiA+ICsJLnBy aW9yaXR5CT0gMCwNCj4gPiArfTsNCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgYWNwaV9zbGVlcF9w cmVwYXJlKHUzMiBhY3BpX3N0YXRlKQ0KPiA+ICB7DQo+ID4gICNpZmRlZiBDT05GSUdfQUNQSV9T TEVFUA0KPiA+IEBAIC04OTYsNSArOTE2LDEyIEBAIGludCBfX2luaXQgYWNwaV9zbGVlcF9pbml0 KHZvaWQpDQo+ID4gIAkgKiBvYmplY3QgY2FuIGFsc28gYmUgZXZhbHVhdGVkIHdoZW4gdGhlIHN5 c3RlbSBlbnRlcnMgUzUuDQo+ID4gIAkgKi8NCj4gPiAgCXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmll cigmdHRzX25vdGlmaWVyKTsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogQWNjb3JkaW5nIHRv IHNlY3Rpb24gNy41IG9mIGFjcGkgNi4wIHNwZWMsIF9QVFMgc2hvdWxkIHJ1biBhZnRlcg0KPiA+ ICsJICogX1RUUyB3aGVuIHRoZSBzeXN0ZW0gZW50ZXJzIFM1Lg0KPiA+ICsJICovDQo+ID4gKwly ZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJnB0c19ub3RpZmllcik7DQo+ID4gKw0KPiA+ICAJcmV0 dXJuIDA7DQo+ID4gIH0NCj4gPg0K -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/29/2016 11:28 PM, Ocean HY1 He wrote: >> -----Original Message----- >> From: Prarit Bhargava [mailto:prarit@redhat.com] >> Sent: Tuesday, May 24, 2016 6:16 PM >> To: Ocean HY1 He; jcm@redhat.com >> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David Tanaka; >> Nagananda Chumbalkar; rjw@rjwysocki.net; lenb@kernel.org; >> wefu@redhat.com >> Subject: Re: [PATCH] ACPI: Execute the _PTS method when system reboot >> >> >> >> On 05/24/2016 02:41 AM, Ocean HY1 He wrote: >>> Hi Prarit and Jon, >>> >>> How do you think of this? >>> >>> Thanks. >>> >>> Ocean He / 何海洋 >>> SW Development Dept. >>> Beijing Design Center >>> Enterprise Product Group >>> Mobile: 18911778926 >>> E-mail: hehy1@lenovo.com >>> No.6 Chuang Ye Road, Haidian District, Beijing, China 100085 >>> >>> -----Original Message----- >>> From: Ocean HY1 He >>> Sent: Monday, May 16, 2016 11:04 AM >>> To: rjw@rjwysocki.net; lenb@kernel.org >>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David >> Tanaka; Nagananda Chumbalkar >>> Subject: RE: [PATCH] ACPI: Execute the _PTS method when system >> reboot >>> >>> To whom may concern, >>> >>> A Lenovo feature depends on _PTS method execution when reboot. And >> after check the ACPI spec, I think _PTS should be exectued when reboo. >> This patch could fix the problem. >>> >>> Any comments of this patch? Many thanks! >>> >>> Ocean He / 何海洋 >>> SW Development Dept. >>> Beijing Design Center >>> Enterprise Product Group >>> Mobile: 18911778926 >>> E-mail: hehy1@lenovo.com >>> No.6 Chuang Ye Road, Haidian District, Beijing, China 100085 >>> >>> -----Original Message----- >>> From: Ocean HY1 He >>> Sent: Monday, May 09, 2016 1:50 PM >>> To: rjw@rjwysocki.net; lenb@kernel.org >>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David >> Tanaka; Ocean HY1 He; Nagananda Chumbalkar >>> Subject: [PATCH] ACPI: Execute the _PTS method when system reboot >>> >>> The _PTS control method is defined in the section 7.4.1 of acpi 6.0 >>> spec. The _PTS control method is executed by the OS during the sleep >>> transition process for S1, S2, S3, S4, and for orderly S5 shutdown. >>> The sleeping state value (For example, 1, 2, 3, 4 or 5 for the S5 >>> soft-off state) is passed to the _PTS control method. This method >>> is called after OSPM has notified native device drivers of the sleep >>> state transition and before the OSPM has had a chance to fully >>> prepare the system for a sleep state transition. >>> >>> The _PTS control method provides the BIOS a mechanism for performing >>> some housekeeping, such as writing the sleep type value to the >> embedded >>> controller, before entering the system sleeping state. >>> >>> According to section 7.5 of acpi 6.0 spec, _PTS should run after _TTS. >>> >>> Thus, a _PTS block notifier is added to the reboot notifier list so that >>> the _PTS object will also be evaluated when the system reboot. >>> >>> Signed-off-by: Ocean He <hehy1@lenovo.com> >>> Signed-off-by: Nagananda Chumbalkar <nchumbalkar@lenovo.com> >>> --- >>> drivers/acpi/sleep.c | 27 +++++++++++++++++++++++++++ >>> 1 file changed, 27 insertions(+) >>> >>> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c >>> index 2a8b596..8b290fb 100644 >>> --- a/drivers/acpi/sleep.c >>> +++ b/drivers/acpi/sleep.c >>> @@ -55,6 +55,26 @@ static struct notifier_block tts_notifier = { >>> .priority = 0, >>> }; >>> >>> +static int pts_notify_reboot(struct notifier_block *this, >>> + unsigned long code, void *x) >>> +{ >>> + acpi_status status; >>> + >>> + status = acpi_execute_simple_method(NULL, "\\_PTS", >> ACPI_STATE_S5); >>> + if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { >>> + /* It won't break anything. */ >>> + printk(KERN_NOTICE "Failure in evaluating _PTS object\n"); >> >> ^^^^ >> pr_debug("No _PTS object found.\n"); >> >> It isn't a warning or error, so don't put the word "Failure" in there. >> >> Beyond that, looks entirely reasonable to me. >> >> P. >> > Hi Prarit, > > The message outputs when _PTS is found but fail to execute. I copy this code > from existed function acpi_sleep_tts_switch(). I just wants to keep new codes > as the same style as existed codes. Make sense? ;-) Not really. "Failure" is something that QE groups look for when testing, debugging, or verifying. This message implies something went wrong when the _PTS object is an optional implementation of ACPI. P. > > Ocean. >> >>> + } >>> + >>> + return NOTIFY_DONE; >>> +} >>> + >>> +static struct notifier_block pts_notifier = { >>> + .notifier_call = pts_notify_reboot, >>> + .next = NULL, >>> + .priority = 0, >>> +}; >>> + >>> static int acpi_sleep_prepare(u32 acpi_state) >>> { >>> #ifdef CONFIG_ACPI_SLEEP >>> @@ -896,5 +916,12 @@ int __init acpi_sleep_init(void) >>> * object can also be evaluated when the system enters S5. >>> */ >>> register_reboot_notifier(&tts_notifier); >>> + >>> + /* >>> + * According to section 7.5 of acpi 6.0 spec, _PTS should run after >>> + * _TTS when the system enters S5. >>> + */ >>> + register_reboot_notifier(&pts_notifier); >>> + >>> return 0; >>> } >>> -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index 2a8b596..8b290fb 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c @@ -55,6 +55,26 @@ static struct notifier_block tts_notifier = { .priority = 0, }; +static int pts_notify_reboot(struct notifier_block *this, + unsigned long code, void *x) +{ + acpi_status status; + + status = acpi_execute_simple_method(NULL, "\\_PTS", ACPI_STATE_S5); + if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { + /* It won't break anything. */ + printk(KERN_NOTICE "Failure in evaluating _PTS object\n"); + } + + return NOTIFY_DONE; +} + +static struct notifier_block pts_notifier = { + .notifier_call = pts_notify_reboot, + .next = NULL, + .priority = 0, +}; + static int acpi_sleep_prepare(u32 acpi_state) { #ifdef CONFIG_ACPI_SLEEP @@ -896,5 +916,12 @@ int __init acpi_sleep_init(void) * object can also be evaluated when the system enters S5. */ register_reboot_notifier(&tts_notifier); + + /* + * According to section 7.5 of acpi 6.0 spec, _PTS should run after + * _TTS when the system enters S5. + */ + register_reboot_notifier(&pts_notifier); + return 0; }