From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zheng, Lv" Subject: RE: [RFC PATCH 1/2] ACPI / button: Send "open" state after boot/resume Date: Wed, 18 May 2016 01:25:50 +0000 Message-ID: <1AE640813FDE7649BE1B193DEA596E883BBA2DED@SHSMSX101.ccr.corp.intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com ([134.134.136.65]:24061 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752513AbcERBZz (ORCPT ); Tue, 17 May 2016 21:25:55 -0400 In-Reply-To: Content-Language: en-US Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "Rafael J. Wysocki" Cc: "Wysocki, Rafael J" , "Rafael J. Wysocki" , "Brown, Len" , Lv Zheng , Linux Kernel Mailing List , ACPI Devel Maling List , "Bastien Nocera:" SGksIFJhZmFlbA0KDQpUaGFua3MgZm9yIHRoZSByZXZpZXcuDQoNCj4gRnJvbTogcmp3eXNvY2tp QGdtYWlsLmNvbSBbbWFpbHRvOnJqd3lzb2NraUBnbWFpbC5jb21dIE9uIEJlaGFsZiBPZg0KPiBS YWZhZWwgSi4gV3lzb2NraQ0KPiBTZW50OiBXZWRuZXNkYXksIE1heSAxOCwgMjAxNiA3OjM3IEFN DQo+IFRvOiBaaGVuZywgTHYgPGx2LnpoZW5nQGludGVsLmNvbT4NCj4gQ2M6IFd5c29ja2ksIFJh ZmFlbCBKIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT47IFJhZmFlbCBKLiBXeXNvY2tpDQo+ IDxyandAcmp3eXNvY2tpLm5ldD47IEJyb3duLCBMZW4gPGxlbi5icm93bkBpbnRlbC5jb20+OyBM diBaaGVuZw0KPiA8emV0YWxvZ0BnbWFpbC5jb20+OyBMaW51eCBLZXJuZWwgTWFpbGluZyBMaXN0 IDxsaW51eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZz47IEFDUEkgRGV2ZWwgTWFsaW5nIExp c3QgPGxpbnV4LWFjcGlAdmdlci5rZXJuZWwub3JnPjsNCj4gQmFzdGllbiBOb2NlcmE6IDxoYWRl c3NAaGFkZXNzLm5ldD4NCj4gU3ViamVjdDogUmU6IFtSRkMgUEFUQ0ggMS8yXSBBQ1BJIC8gYnV0 dG9uOiBTZW5kICJvcGVuIiBzdGF0ZSBhZnRlcg0KPiBib290L3Jlc3VtZQ0KPiANCj4gT24gVHVl LCBNYXkgMTcsIDIwMTYgYXQgMTA6MjcgQU0sIEx2IFpoZW5nIDxsdi56aGVuZ0BpbnRlbC5jb20+ IHdyb3RlOg0KPiA+IChUaGlzIHBhdGNoIGhhc24ndCBiZWVuIHRlc3RlZCwgaXQncyBzZW50IGZv ciBjb21tZW50cykNCj4gDQo+IEkgaGF2ZSBhIGNvdXBsZSBvZiBjb25jZXJucyAoc2VlIGJlbG93 KS4NCj4gDQo+ID4gTGludXggdXNlcnNwYWNlIChzeXN0ZW1kLWxvZ2luZCkga2VlcHMgb24gcmVj aGVja2luZyBsaWQgc3RhdGUgd2hlbiB0aGUNCj4gPiBsaWQgc3RhdGUgaXMgY2xvc2VkLiBJZiBp dCBmYWlsZWQgdG8gdXBkYXRlIHRoZSBsaWQgc3RhdGUgdG8gb3BlbiBhZnRlcg0KPiA+IGJvb3Qv cmVzdW1lLCBpdCBjb3VsZCBzdXNwZW5kIHRoZSBzeXN0ZW0uIEJ1dCBhczoNCj4gPiAxLiBUcmFk aXRpb25hbCBBQ1BJIHBsYXRmb3JtIG1heSBub3QgZ2VuZXJhdGUgdGhlIGxpZCBvcGVuIGV2ZW50 IGFmdGVyDQo+ID4gICAgcmVzdW1pbmcgYXMgdGhlIG9wZW4gZXZlbnQgaXMgYWN0dWFsbHkgaGFu ZGxlZCBieSB0aGUgQklPUyBhbmQgdGhlIHN5c3RlbQ0KPiA+ICAgIGlzIHRoZW4gcmVzdW1lZCBm cm9tIGEgRkFDUyB2ZWN0b3IuDQo+ID4gMi4gVGhlIF9MSUQgY29udHJvbCBtZXRob2QncyBpbml0 aWFsIHJldHVybmluZyB2YWx1ZSBpcyBub3QgcmVsaWFibGUuIFRoZQ0KPiA+ICAgIF9MSUQgY29u dHJvbCBtZXRob2QgaXMgZGVzY3JpYmVkIHRvIHJldHVybiB0aGUgImN1cnJlbnQiIGxpZCBzdGF0 ZSwNCj4gPiAgICBob3dldmVyIHRoZSB3b3JkIG9mICJjdXJyZW50IiBoYXMgYW1iaWd1aXR5LCBt YW55IEJJT1NlbiByZXR1cm4gbGlkDQo+ID4gICAgc3RhdGUgdXBvbiBsYXN0IGxpZCBub3RpZmlj YXRpb24gd2hpbGUgdGhlIGRldmVsb3BlcnMgbWF5IHRoaW5rIHRoZQ0KPiA+ICAgIEJJT1NlbiBz aG91bGQgYWx3YXlzIHJldHVybiB0aGUgbGlkIHN0YXRlIHVwb24gbGFzdCBfTElEIGV2YWx1YXRp b24uDQo+ID4gICAgVGhlcmUgd29uJ3QgYmUgZGlmZmVyZW5jZSB3aGVuIHdlIGV2YWx1YXRlIF9M SUQgZHVyaW5nIHRoZSBydW50aW1lLCB0aGUNCj4gPiAgICBwcm9ibGVtIGlzIHRoZSBpbml0aWFs IHJldHVybmluZyB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uLiBXaGVuIHRoZSBCSU9TZW4NCj4gPiAg ICBpbXBsZW1lbnQgdGhpcyBjb250cm9sIG1ldGhvZCB3aXRoIGNhY2hlZCB2YWx1ZSwgdGhlIGlu aXRpYWwgcmV0dXJuaW5nDQo+ID4gICAgdmFsdWUgaXMgbGlrZWx5IG5vdCByZWxpYWJsZS4NCj4g PiBUaHVzIHRoZXJlIGlzIG5vIG1lYW4gZm9yIHRoZSBBQ1BJIGxpZCBkcml2ZXIgdG8gcHJvdmlk ZSBzdWNoIGFuIGV2ZW50DQo+ID4gY29udmV5aW5nIGNvcnJlY3QgY3VycmVudCBsaWQgc3RhdGUu IFdoZW4gdGhlcmUgaXMgbm8gc3VjaCBhbiBldmVudCBvciB0aGUNCj4gPiBldmVudCBjb252ZXlz IHdyb25nIHJlc3VsdCwgZmFsc2Ugc3VzcGVuZGluZyBjYW4gYmUgZXhhbWluZWQuDQo+ID4NCj4g PiBUaGUgcm9vdCBjYXVzZSBvZiB0aGUgaXNzdWUgaXMgc3lzdGVtZCBpdHNlbGYsIGl0IGNvdWxk IGhhbmRsZSB0aGUgQUNQSQ0KPiA+IGNvbnRyb2wgbWV0aG9kIGxpZCBkZXZpY2UgYnkgaW1wbGVt ZW50aW5nIGEgc3BlY2lhbCBvcHRpb24gbGlrZQ0KPiA+IExpZFN3aXRjaExldmVsVHJpZ2dlcmVk PUZhbHNlIHdoZW4gaXQgZGV0ZWN0ZWQgdGhlIEFDUEkgbGlkIGRldmljZS4gSG93ZXZlcg0KPiA+ IHRoZXJlIGlzIG5vIGV4cGxpY2l0IGRvY3VtZW50YXRpb24gY2xhcmlmaWVkIHRoZSBhbWJpZ3Vp dHksIHdlIG5lZWQgdG8NCj4gPiB3b3JrIGl0IGFyb3VuZCBpbiB0aGUga2VybmVsIGJlZm9yZSBz eXN0ZW1kIGNoYW5naW5nIGl0cyBtaW5kLg0KPiANCj4gVGhlIGFib3ZlIGRvZXNuJ3QgZXhwbGFp biBob3cgdGhlIGlzc3VlIGlzIGFkZHJlc3NlZCBoZXJlLg0KW0x2IFpoZW5nXSANClRoZSBzdG9y eSBpcyBhIGJpdCBsb25nLg0KV2UgY2FuIHNlZSBzZXZlcmFsIGlzc3VlcyB0aGF0IHNvbWUgcGxh dGZvcm0gc3VzcGVuZHMgcmlnaHQgYWZ0ZXIgYm9vdC9yZXN1bWUuDQpXZSBub3RpY2VkIHRoYXQg b24gdGhhdCBwbGF0Zm9ybXMsIF9MSUQgaXMgYWx3YXlzIGltcGxlbWVudGVkIHdpdGggY2FjaGVk IGxpZCBzdGF0ZSByZXR1cm5lZC4NCkFuZCBpdCdzIGluaXRpYWwgcmV0dXJuaW5nIHZhbHVlIG1h eSBiZSAiY2xvc2VkIiBhZnRlciBib290L3Jlc3VtZS4NCg0KSXQgYXBwZWFycyB0aGUgYWNwaV9s aWRfc2VuZF9zdGF0ZSgpIHNlbnQgYWZ0ZXIgYm9vdC9yZXN1bWUgaXMgdGhlIGN1bHByaXQgdG8g cmVwb3J0IHRoZSB3cm9uZyBsaWQgc3RhdGUgdG8gdGhlIHVzZXJzcGFjZS4NCkJ1dCB0byBvdXIg c3VycHJpc2UsIGFmdGVyIGRlbGV0ZSB0aGUgMiBsaW5lcywgcmVwb3J0ZXJzIHN0aWxsIGNhbiBz ZWUgc3VzcGVuZHMgYWZ0ZXIgYm9vdC9yZXN1bWUuDQpUaGF0J3MgYmVjYXVzZSBvZiBzeXN0ZW1k IGltcGxlbWVudGF0aW9uLg0KSXQgY29udGFpbnMgY29kZSBsb2dpYyB0aGF0Og0KV2hlbiB0aGUg bGlkIHN0YXRlIGlzIGNsb3NlZCwgYSByZS1jaGVja2luZyBtZWNoYW5pc20gaXMgaW5zdGFsbGVk Lg0KU28gaWYgd2UgZG8gbm90IHNlbmQgYW55IG5vdGlmaWNhdGlvbiBhZnRlciBib290L3Jlc3Vt ZSBhbmQgdGhlIG9sZCBsaWQgc3RhdGUgaXMgImNsb3NlZCIuDQpzeXN0ZW1kIGRldGVybWluZXMg dG8gc3VzcGVuZCBpbiB0aGUgcmUtY2hlY2tpbmcgbWVjaGFuaXNtLg0KDQoNCj4gDQo+ID4gTGlu ayAxOiBodHRwczovL2xrbWwub3JnLzIwMTYvMy83LzQ2MA0KPiA+IExpbmsgMjogaHR0cHM6Ly9n aXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvMjA4Nw0KPiA+IExpbmsgMzogaHR0cHM6 Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIxMQ0KPiA+ICAgICAgICAg aHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNTENCj4gPiAg ICAgICAgIGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTQx DQo+ID4gU2lnbmVkLW9mZi1ieTogTHYgWmhlbmcgPGx2LnpoZW5nQGludGVsLmNvbT4NCj4gPiBD YzogQmFzdGllbiBOb2NlcmE6IDxoYWRlc3NAaGFkZXNzLm5ldD4NCj4gPiAtLS0NCj4gPiAgZHJp dmVycy9hY3BpL2J1dHRvbi5jIHwgICA2Mw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA1OSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9i dXR0b24uYyBiL2RyaXZlcnMvYWNwaS9idXR0b24uYw0KPiA+IGluZGV4IDVjM2IwOTEuLmJiMTRj YTUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hY3BpL2J1dHRvbi5jDQo+ID4gKysrIGIvZHJp dmVycy9hY3BpL2J1dHRvbi5jDQo+ID4gQEAgLTUzLDYgKzUzLDEwIEBADQo+ID4gICNkZWZpbmUg QUNQSV9CVVRUT05fREVWSUNFX05BTUVfTElEICAgICJMaWQgU3dpdGNoIg0KPiA+ICAjZGVmaW5l IEFDUElfQlVUVE9OX1RZUEVfTElEICAgICAgICAgICAweDA1DQo+ID4NCj4gPiArI2RlZmluZSBB Q1BJX0JVVFRPTl9MSURfSU5JVF9JR05PUkUgICAgMHgwMA0KPiA+ICsjZGVmaW5lIEFDUElfQlVU VE9OX0xJRF9JTklUX09QRU4gICAgICAweDAxDQo+ID4gKyNkZWZpbmUgQUNQSV9CVVRUT05fTElE X0lOSVRfTUVUSE9EICAgIDB4MDINCj4gPiArDQo+ID4gICNkZWZpbmUgX0NPTVBPTkVOVCAgICAg ICAgICAgICBBQ1BJX0JVVFRPTl9DT01QT05FTlQNCj4gPiAgQUNQSV9NT0RVTEVfTkFNRSgiYnV0 dG9uIik7DQo+ID4NCj4gPiBAQCAtMTA1LDYgKzEwOSw3IEBAIHN0cnVjdCBhY3BpX2J1dHRvbiB7 DQo+ID4NCj4gPiAgc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQoYWNwaV9saWRfbm90aWZp ZXIpOw0KPiA+ICBzdGF0aWMgc3RydWN0IGFjcGlfZGV2aWNlICpsaWRfZGV2aWNlOw0KPiA+ICtz dGF0aWMgdTggbGlkX2luaXRfc3RhdGUgPSBBQ1BJX0JVVFRPTl9MSURfSU5JVF9PUEVOOw0KPiA+ DQo+ID4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEZTIEludGVyZmFjZSAoL3Byb2MpDQo+ID4gQEAgLTI0Niw3ICsyNTEsOCBAQCBpbnQg YWNwaV9saWRfb3Blbih2b2lkKQ0KPiA+ICB9DQo+ID4gIEVYUE9SVF9TWU1CT0woYWNwaV9saWRf b3Blbik7DQo+ID4NCj4gPiAtc3RhdGljIGludCBhY3BpX2xpZF9zZW5kX3N0YXRlKHN0cnVjdCBh Y3BpX2RldmljZSAqZGV2aWNlKQ0KPiA+ICtzdGF0aWMgaW50IGFjcGlfbGlkX3NlbmRfc3RhdGUo c3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgbm90aWZ5X2luaXRfc3RhdGUpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0cnVj dCBhY3BpX2J1dHRvbiAqYnV0dG9uID0gYWNwaV9kcml2ZXJfZGF0YShkZXZpY2UpOw0KPiA+ICAg ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0YXRlOw0KPiA+IEBAIC0yNTcsNiArMjYzLDEwIEBA IHN0YXRpYyBpbnQgYWNwaV9saWRfc2VuZF9zdGF0ZShzdHJ1Y3QgYWNwaV9kZXZpY2UNCj4gKmRl dmljZSkNCj4gPiAgICAgICAgIGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkNCj4gPiAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9ERVY7DQo+ID4NCj4gPiArICAgICAgIGlmIChub3RpZnlfaW5p dF9zdGF0ZSAmJg0KPiA+ICsgICAgICAgICAgIGxpZF9pbml0X3N0YXRlID09IEFDUElfQlVUVE9O X0xJRF9JTklUX09QRU4pDQo+ID4gKyAgICAgICAgICAgICAgIHN0YXRlID0gMTsNCj4gPiArDQo+ IA0KPiBXaHkgZG8gd2UgbmVlZCB0byBjb21wbGljYXRlIHRoaXMgZnVuY3Rpb24/DQo+IA0KPiBD YW4ndCB3ZSBoYXZlIGEgc2VwYXJhdGUgZnVuY3Rpb24gZm9yIHNlbmRpbmcgdGhlIGZha2UgImxp ZCBvcGVuIiBldmVudD8NCltMdiBaaGVuZ10gDQoNClllcywgd2UgY2FuLg0KQnV0IEkgcHV0IHRo ZSBjb2RlIGhlcmUgZm9yIHJlYXNvbnMuDQoNCkkgaW50ZW50aW9uYWxseSBrZXB0IHRoZSBfTElE IGV2YWx1YXRpb24gcmlnaHQgYWZ0ZXIgYm9vdC9yZXN1bWUuDQpCZWNhdXNlIEkgdmFsaWRhdGVk IFdpbmRvd3MgYmVoYXZpb3IuDQpJdCBzZWVtcyBXaW5kb3dzIGV2YWx1YXRlcyBfTElEIHJpZ2h0 IGFmdGVyIGJvb3QuDQpTbyBJIGtlcHQgX0xJRCBldmFsdWF0ZWQgcmlnaHQgYWZ0ZXIgYm9vdCB0 byBwcmV2ZW50IGNvbXBsaWFuY2UgaXNzdWVzLg0KDQo+IA0KPiA+ICAgICAgICAgLyogaW5wdXQg bGF5ZXIgY2hlY2tzIGlmIGV2ZW50IGlzIHJlZHVuZGFudCAqLw0KPiA+ICAgICAgICAgaW5wdXRf cmVwb3J0X3N3aXRjaChidXR0b24tPmlucHV0LCBTV19MSUQsICFzdGF0ZSk7DQo+ID4gICAgICAg ICBpbnB1dF9zeW5jKGJ1dHRvbi0+aW5wdXQpOw0KPiA+IEBAIC0yNzgsNiArMjg4LDEzIEBAIHN0 YXRpYyBpbnQgYWNwaV9saWRfc2VuZF9zdGF0ZShzdHJ1Y3QgYWNwaV9kZXZpY2UNCj4gKmRldmlj ZSkNCj4gPiAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50 IGFjcGlfbGlkX3NlbmRfaW5pdF9zdGF0ZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSkNCj4g PiArew0KPiA+ICsgICAgICAgaWYgKGxpZF9pbml0X3N0YXRlICE9IEFDUElfQlVUVE9OX0xJRF9J TklUX0lHTk9SRSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGFjcGlfbGlkX3NlbmRfc3Rh dGUoZGV2aWNlLCB0cnVlKTsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICBzdGF0aWMgdm9pZCBhY3BpX2J1dHRvbl9ub3RpZnkoc3RydWN0IGFjcGlfZGV2aWNlICpk ZXZpY2UsIHUzMiBldmVudCkNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0IGFjcGlfYnV0dG9u ICpidXR0b24gPSBhY3BpX2RyaXZlcl9kYXRhKGRldmljZSk7DQo+ID4gQEAgLTI5MCw3ICszMDcs NyBAQCBzdGF0aWMgdm9pZCBhY3BpX2J1dHRvbl9ub3RpZnkoc3RydWN0IGFjcGlfZGV2aWNlDQo+ ICpkZXZpY2UsIHUzMiBldmVudCkNCj4gPiAgICAgICAgIGNhc2UgQUNQSV9CVVRUT05fTk9USUZZ X1NUQVRVUzoNCj4gPiAgICAgICAgICAgICAgICAgaW5wdXQgPSBidXR0b24tPmlucHV0Ow0KPiA+ ICAgICAgICAgICAgICAgICBpZiAoYnV0dG9uLT50eXBlID09IEFDUElfQlVUVE9OX1RZUEVfTElE KSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9saWRfc2VuZF9zdGF0ZShkZXZp Y2UpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfbGlkX3NlbmRfc3RhdGUoZGV2 aWNlLCBmYWxzZSk7DQo+IA0KPiBJIHdvdWxkbid0IGNoYW5nZSB0aGlzIGNvZGUgYXQgYWxsLg0K PiANCj4gPiAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQga2V5Y29kZTsNCj4gPg0KPiA+IEBAIC0zMzUsNyArMzUyLDcgQEAgc3RhdGljIGlu dCBhY3BpX2J1dHRvbl9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+DQo+ID4gICAgICAg ICBidXR0b24tPnN1c3BlbmRlZCA9IGZhbHNlOw0KPiA+ICAgICAgICAgaWYgKGJ1dHRvbi0+dHlw ZSA9PSBBQ1BJX0JVVFRPTl9UWVBFX0xJRCkNCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIGFj cGlfbGlkX3NlbmRfc3RhdGUoZGV2aWNlKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGFj cGlfbGlkX3NlbmRfaW5pdF9zdGF0ZShkZXZpY2UpOw0KPiA+ICAgICAgICAgcmV0dXJuIDA7DQo+ ID4gIH0NCj4gPiAgI2VuZGlmDQo+ID4gQEAgLTQxNiw3ICs0MzMsNyBAQCBzdGF0aWMgaW50IGFj cGlfYnV0dG9uX2FkZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSkNCj4gPiAgICAgICAgIGlm IChlcnJvcikNCj4gPiAgICAgICAgICAgICAgICAgZ290byBlcnJfcmVtb3ZlX2ZzOw0KPiA+ICAg ICAgICAgaWYgKGJ1dHRvbi0+dHlwZSA9PSBBQ1BJX0JVVFRPTl9UWVBFX0xJRCkgew0KPiA+IC0g ICAgICAgICAgICAgICBhY3BpX2xpZF9zZW5kX3N0YXRlKGRldmljZSk7DQo+ID4gKyAgICAgICAg ICAgICAgIGFjcGlfbGlkX3NlbmRfaW5pdF9zdGF0ZShkZXZpY2UpOw0KPiA+ICAgICAgICAgICAg ICAgICAvKg0KPiA+ICAgICAgICAgICAgICAgICAgKiBUaGlzIGFzc3VtZXMgdGhlcmUncyBvbmx5 IG9uZSBsaWQgZGV2aWNlLCBvciBpZiB0aGVyZSBhcmUNCj4gPiAgICAgICAgICAgICAgICAgICog bW9yZSB3ZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGxhc3Qgb25lLi4uDQo+ID4gQEAgLTQ0Niw0ICs0 NjMsNDIgQEAgc3RhdGljIGludCBhY3BpX2J1dHRvbl9yZW1vdmUoc3RydWN0IGFjcGlfZGV2aWNl DQo+ICpkZXZpY2UpDQo+ID4gICAgICAgICByZXR1cm4gMDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0 YXRpYyBpbnQgcGFyYW1fc2V0X2xpZF9pbml0X3N0YXRlKGNvbnN0IGNoYXIgKnZhbCwgc3RydWN0 IGtlcm5lbF9wYXJhbSAqa3ApDQo+ID4gK3sNCj4gPiArICAgICAgIGludCByZXN1bHQgPSAwOw0K PiA+ICsNCj4gPiArICAgICAgIGlmICghc3RybmNtcCh2YWwsICJvcGVuIiwgc2l6ZW9mKCJvcGVu IikgLSAxKSkgew0KPiA+ICsgICAgICAgICAgICAgICBsaWRfaW5pdF9zdGF0ZSA9IEFDUElfQlVU VE9OX0xJRF9JTklUX09QRU47DQo+ID4gKyAgICAgICAgICAgICAgIHByX2luZm8oIk5vdGlmeSBp bml0aWFsIGxpZCBzdGF0ZSBhcyBvcGVuXG4iKTsNCj4gPiArICAgICAgIH0gZWxzZSBpZiAoIXN0 cm5jbXAodmFsLCAibWV0aG9kIiwgc2l6ZW9mKCJtZXRob2QiKSAtIDEpKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIGxpZF9pbml0X3N0YXRlID0gQUNQSV9CVVRUT05fTElEX0lOSVRfTUVUSE9EOw0K PiA+ICsgICAgICAgICAgICAgICBwcl9pbmZvKCJOb3RpZnkgaW5pdGlhbCBsaWQgc3RhdGUgd2l0 aCBfTElEIHJldHVybiB2YWx1ZVxuIik7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21w KHZhbCwgImlnbm9yZSIsIHNpemVvZigiaWdub3JlIikgLSAxKSkgew0KPiA+ICsgICAgICAgICAg ICAgICBsaWRfaW5pdF9zdGF0ZSA9IEFDUElfQlVUVE9OX0xJRF9JTklUX0lHTk9SRTsNCj4gPiAr ICAgICAgICAgICAgICAgcHJfaW5mbygiRG8gbm90IG5vdGlmeSBpbml0aWFsIGxpZCBzdGF0ZVxu Iik7DQo+ID4gKyAgICAgICB9IGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcmVzdWx0ID0gLUVJ TlZBTDsNCj4gPiArICAgICAgIHJldHVybiByZXN1bHQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgcGFyYW1fZ2V0X2xpZF9pbml0X3N0YXRlKGNoYXIgKmJ1ZmZlciwgc3RydWN0IGtl cm5lbF9wYXJhbSAqa3ApDQo+ID4gK3sNCj4gPiArICAgICAgIHN3aXRjaCAobGlkX2luaXRfc3Rh dGUpIHsNCj4gPiArICAgICAgIGNhc2UgQUNQSV9CVVRUT05fTElEX0lOSVRfT1BFTjoNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoYnVmZmVyLCAib3BlbiIpOw0KPiA+ICsgICAg ICAgY2FzZSBBQ1BJX0JVVFRPTl9MSURfSU5JVF9NRVRIT0Q6DQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiBzcHJpbnRmKGJ1ZmZlciwgIm1ldGhvZCIpOw0KPiA+ICsgICAgICAgY2FzZSBBQ1BJ X0JVVFRPTl9MSURfSU5JVF9JR05PUkU6DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBzcHJp bnRmKGJ1ZmZlciwgImlnbm9yZSIpOw0KPiA+ICsgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIHNwcmludGYoYnVmZmVyLCAiaW52YWxpZCIpOw0KPiA+ICsgICAgICAg fQ0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK21vZHVsZV9wYXJh bV9jYWxsKGxpZF9pbml0X3N0YXRlLA0KPiA+ICsgICAgICAgICAgICAgICAgIHBhcmFtX3NldF9s aWRfaW5pdF9zdGF0ZSwgcGFyYW1fZ2V0X2xpZF9pbml0X3N0YXRlLA0KPiA+ICsgICAgICAgICAg ICAgICAgIE5VTEwsIDA2NDQpOw0KPiA+ICtNT0RVTEVfUEFSTV9ERVNDKGxpZF9pbml0X3N0YXRl LCAiQmVoYXZpb3IgZm9yIHJlcG9ydGluZyBMSUQgaW5pdGlhbA0KPiBzdGF0ZSIpOw0KPiA+ICsN Cj4gDQo+IEknbSBub3Qgc2VlaW5nIGEgcGFydGljdWxhciB2YWx1ZSBpbiBoYXZpbmcgdGhpcyBj b21tYW5kIGxpbmUgc3dpdGNoDQo+IHRvIGJlIGhvbmVzdC4gIEFwcGFyZW50bHksIHRoZSBpc3N1 ZSBjYW4gYmUgd29ya2VkIGFyb3VuZCBmcm9tIHVzZXINCj4gc3BhY2UgaW4gYW55IGNhc2UsIHNv IHdoeSBkbyB3ZSBuZWVkIG9uZSBtb3JlIHdheSB0byB3b3JrIGFyb3VuZCBpdD8NCj4gDQo+ID4g IG1vZHVsZV9hY3BpX2RyaXZlcihhY3BpX2J1dHRvbl9kcml2ZXIpOw0KPiA+IC0tDQo+IA0KPiBU aGUgbWFpbiBjb25jZXJuIGlzIGdlbmVyYWwsIHRob3VnaC4gIEV2aWRlbnRseSwgd2Ugc2VuZCBm YWtlIGxpZA0KPiBpbnB1dCBldmVudHMgdG8gdXNlciBzcGFjZSBvbiBpbml0IGFuZCByZXN1bWUu ICBJIGRvbid0IHRoaW5rIHRoaXMgaXMNCj4gYSBnb29kIGlkZWEsIGJlY2F1c2UgaXQgbWF5IGNv bmZ1c2Ugc3lzdGVtcyBsaWtlIENocm9tZSB0aGF0IHdhbnQgdG8NCj4gaW1wbGVtZW50ICJkYXJr IHJlc3VtZSIgc2NlbmFyaW9zIGFuZCBtYXkgcmVseSBvbiBpbnB1dCBldmVudHMgdG8NCj4gZGVj aWRlIHdoZXRoZXIgdG8gc3RhcnQgYSBVSSBvciBzdXNwZW5kIGFnYWluLg0KPiANCj4gVGh1cyBp dCBtaWdodCBiZSBiZXR0ZXIgdG8gc2ltcGx5IGRyb3AgdGhlIHNlbmRpbmcgb2YgdGhvc2UgZmFr ZSBpbnB1dA0KPiBldmVudHMgZnJvbSB0aGUgY29kZS4NCltMdiBaaGVuZ10gDQpJZiB3ZSBkaWQg dGhpcyByaWdodCBub3csIG1hbnkgb3RoZXIgdXNlcnNwYWNlIGNvdWxkIGJlIGJyb2tlbi4NClNv IHdlIHByZXBhcmVkIHRoZSBvcHRpb25zIHRvIGFsbG93IHVzZXJzIHRvIGNob29zZS4NCg0KVGhh bmtzIGFuZCBiZXN0IHJlZ2FyZHMNCi1Mdg0KDQo=