From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7BF516E4F8 for ; Mon, 12 Aug 2019 12:05:52 +0000 (UTC) Date: Mon, 12 Aug 2019 15:04:33 +0300 From: Imre Deak Message-ID: <20190812120433.GD14455@ideak-desk.fi.intel.com> References: <20190618175617.22546-1-anshuman.gupta@intel.com> <20190618175617.22546-2-anshuman.gupta@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190618175617.22546-2-anshuman.gupta@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t 1/6] lib/igt_pm: igt lib helper routines to support DC5/6 tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Anshuman Gupta Cc: igt-dev@lists.freedesktop.org, jyoti.r.yadav@intel.com List-ID: T24gVHVlLCBKdW4gMTgsIDIwMTkgYXQgMTE6MjY6MTJQTSArMDUzMCwgQW5zaHVtYW4gR3VwdGEg d3JvdGU6Cj4gRnJvbTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgo+IAo+ IFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nIGNobmVncyB0byBsaWIvaWd0X3BtLmMKPiAK PiAtZG1jX2xvYWRlZCgpIHdpbGwgYmUgdXNlZCBieSBuZXcgdGVzdCBpOTE1X3BtX2RjLmMgd2hp Y2ggd2lsbCB2YWxpZGF0ZQo+ICBEaXNwbGF5IEMgU3RhdGVzLiBTbyBtb3ZpbmcgdGhlIHNhbWUg dG8gaWd0X3BtIGxpYnJhcnkuCj4gCj4gLUludHJvZHVjZWQgaWd0X2Rpc2FibGVfcnVudGltZV9w bSgpIGluIG9yZGVyIHRvIGRpc2FibGUgcnVudGltZSBzdXNwZW5kCj4gIGZvciB0aGUgZnVuY3Rp b24gd2hpY2ggc3VwcG9ydCBkYzkuCj4gCj4gLUNoYW5nZWQgdGhlIGlndF9wbV9lbmFibGVfc2F0 YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKSBhbmQKPiAgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQoKSBpbiBvcmRlciB0byBzYXZlCj4gIGFuZCByZXN0b3JlIHRoZSBz YXRhIGxpbmsgcG93ZXIgcG9saWN5IGJ5IGFuIGV4aXQgaGFuZGxlci4KPiAKPiB2MjogU2ltcGxp ZnkgdGhlIGNvbW1lbnQgc2VjdGlvbi4KPiB2MzogUmVtb3ZlIC4gZnJvbSB0aGUgc3ViamVjdCBs aW5lLgo+IHY0OiBSZWJhc2VkLCByZXNvbHZlIGNvbmZsaWN0cyBpbiBwbV9ycG0uYwo+ICAgICBJ bmNsdWRlZCBwYXRjaCBzZXQgdmVyc2lvbiBjaGFuZ2UgbG9nLgo+IHY1OiBMaXN0aW5nIGFjdHVh bCBjaGFuZ2UgaW4gcGF0Y2ggc2V0IGNoYW5nZWxvZyB0byBtYWtlIHJldmlldyBlYXNpZXIuCj4g djY6IGlndCdzIGxpYiBhZGRlZCBzdXBwb3J0IGZvciBkaXNhYmxpbmcgcnVudGltZSBzdXNwZW5k LAo+ICAgICBjaGFuZ2UgaW4gY29tbWl0IGxvZy4gcmViYXNlZCBkdWUgdG8gdGVzdCBuYW1lIHBt X3JwbSBjaGFuZ2VkCj4gICAgIHRvIGk5MTVfcG1fcnBtLgo+IHY3OiBBZGRyZXNzZWQgcmV2aWV3 IGNvbW1lbnQgYnkgc2F2aW5nIFBPV0VSX0RJUiB2YWx1ZXMgaW4KPiAgICAgaWd0X2Rpc2FibGVf cnVudGltZV9wbSgpLiBbSW1yZV0KPiB2ODogQWRkcmVzc2VkIHRoZSByZXZpZXcgY29tbWVudCwg aWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudAo+ICAgICBmdW5jdGlvbiB0 byByZXN0b3JlIHRoZSBvcmlnaW5hbCBTQVRBIGxpbmsgcG93ZXIgcG9saWN5IGlmIHRoaW5ncyBm YWlsCj4gICAgIGJ5IHVzaW5nIGFuIGV4aXQgaGFuZGxlci4gW0ltcmVdCj4gdjk6IElHVCBmYWls dXJlIGZpeHR1cmUgaW4gaTkxNV9wbV9iYWNrbGlnaHQgYW5kIGk5MTVfcG1fcnBtLgo+IAo+IFNp Z25lZC1vZmYtYnk6IEp5b3RpIFlhZGF2IDxqeW90aS5yLnlhZGF2QGludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPgo+IC0t LQo+ICBsaWIvaWd0X3BtLmMgICAgICAgICAgICAgICAgICAgfCAxOTAgKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tCj4gIGxpYi9pZ3RfcG0uaCAgICAgICAgICAgICAgICAgICB8ICAg NiArLQo+ICB0ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMgfCAgIDYgKy0KPiAgdGVzdHMv aTkxNS9pOTE1X3BtX3JwbS5jICAgICAgIHwgIDI0ICstLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwg MTU5IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIv aWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKPiBpbmRleCBmZDIyMjczYS4uOWI4M2ZiYjUgMTAwNjQ0 Cj4gLS0tIGEvbGliL2lndF9wbS5jCj4gKysrIGIvbGliL2lndF9wbS5jCj4gQEAgLTM4LDYgKzM4 LDcgQEAKPiAgI2luY2x1ZGUgImRybXRlc3QuaCIKPiAgI2luY2x1ZGUgImlndF9wbS5oIgo+ICAj aW5jbHVkZSAiaWd0X2F1eC5oIgo+ICsjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gIAo+ICAvKioK PiAgICogU0VDVElPTjppZ3RfcG0KPiBAQCAtNjMsMTEgKzY0LDE1IEBAIGVudW0gewo+ICAjZGVm aW5lIE1JTl9QT1dFUl9TVFIJCSJtaW5fcG93ZXJcbiIKPiAgLyogUmVtZW1iZXIgdG8gZml4IHRo aXMgaWYgYWRkaW5nIGxvbmdlciBzdHJpbmdzICovCj4gICNkZWZpbmUgTUFYX1BPTElDWV9TVFJM RU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCj4gK2ludDhfdCAqX19zYXRhX2xpbmtfcG1f cG9saWNpZXM7Cj4gIAo+ICBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX3Bvd2Vy X3NhdmVbNjRdOwo+ICBzdGF0aWMgY2hhciAqIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJv bF9wYXRoOwo+ICBzdGF0aWMgY2hhciBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xbNjRd Owo+ICAKPiArc3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihp bnQgc2lnKTsKPiArc3RhdGljIHZvaWQgX19pZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCh2b2lkKTsKPiArCj4gIHN0YXRpYyBpbnQgX19pZ3RfcG1fYXVkaW9fcmVzdG9y ZV9ydW50aW1lX3BtKHZvaWQpCj4gIHsKPiAgCWludCBmZDsKPiBAQCAtMjgwLDI4ICsyODUsMTIg QEAgdm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCkKPiAgCQlpZ3RfZGVi dWcoIkZhaWxlZCB0byBlbmFibGUgYXVkaW8gcnVudGltZSBQTSEgKCVkKVxuIiwgLWVycik7Cj4g IH0KPiAgCj4gLS8qKgo+IC0gKiBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50Ogo+IC0gKgo+IC0gKiBFbmFibGUgdGhlIG1pbl9wb3dlciBwb2xpY3kgZm9yIFNBVEEgbGlu ayBwb3dlciBtYW5hZ2VtZW50Lgo+IC0gKiBXaXRob3V0IHRoaXMgd2UgY2Fubm90IHJlYWNoIGRl ZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCj4gLSAqCj4gLSAqIFdlIGRvbid0IGhhdmUgYW55IGFz c2VydGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lzdGVtIG1pZ2h0IG5vdCBoYXZlCj4gLSAqIGEg U0FUQSBob3N0Lgo+IC0gKgo+IC0gKiBSZXR1cm5zOgo+IC0gKiBBbiBvcGFxdWUgcG9pbnRlciB0 byB0aGUgZGF0YSBuZWVkZWQgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCB2YWx1ZXMKPiAtICogYWZ0 ZXIgdGhlIHRlc3QgaGFzIHRlcm1pbmF0ZWQsIG9yIE5VTEwgaWYgU0FUQSBsaW5rIHBvd2VyIG1h bmFnZW1lbnQKPiAtICogaXMgbm90IHN1cHBvcnRlZC4gVGhpcyBwb2ludGVyIHNob3VsZCBiZSBm cmVlZCB3aGVuIG5vIGxvbmdlciB1c2VkCj4gLSAqICh0eXBpY2FsbHkgYWZ0ZXIgaGF2aW5nIGNh bGxlZCByZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkpLgo+IC0gKi8KPiAtaW50 OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gK3N0 YXRpYyB2b2lkIF9faWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lk KQo+ICB7Cj4gIAlpbnQgZmQsIGk7Cj4gIAlzc2l6ZV90IGxlbjsKPiAgCWNoYXIgKmJ1ZjsKPiAg CWNoYXIgKmZpbGVfbmFtZTsKPiAtCWludDhfdCAqbGlua19wbV9wb2xpY2llcyA9IE5VTEw7Cj4g IAo+ICAJZmlsZV9uYW1lID0gbWFsbG9jKFBBVEhfTUFYKTsKPiAgCWJ1ZiA9IG1hbGxvYyhNQVhf UE9MSUNZX1NUUkxFTiArIDEpOwo+IEBAIC0zMTMsNiArMzAyLDkgQEAgaW50OF90ICppZ3RfcG1f ZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gIAkJCSAiL3N5cy9jbGFz cy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAo+ICAJCQkg aSk7Cj4gIAo+ICsJCS8qIFdlIGRvbid0IGhhdmUgYW55IGFzc2VydGlvbnMgb24gb3BlbiBzaW5j ZSB0aGUgc3lzdGVtCj4gKwkJICogbWlnaHQgbm90IGhhdmUgYSBTQVRBIGhvc3QuCj4gKwkJICov Cj4gIAkJZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRFdSKTsKPiAgCQlpZiAoZmQgPCAwKQo+ICAJ CQlicmVhazsKPiBAQCAtMzMzLDExICszMjUsMTMgQEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gIAkJCXBvbGljeSA9IFBPTElDWV9VTktO T1dOOwo+ICAKPiAgCQlpZiAoIShpICUgMjU2KSkKPiAtCQkJbGlua19wbV9wb2xpY2llcyA9IHJl YWxsb2MobGlua19wbV9wb2xpY2llcywKPiAtCQkJCQkJICAgKGkgLyAyNTYgKyAxKSAqIDI1NiAr IDEpOwo+ICsJCQlfX3NhdGFfbGlua19wbV9wb2xpY2llcyA9Cj4gKwkJCXJlYWxsb2MoX19zYXRh X2xpbmtfcG1fcG9saWNpZXMsCj4gKwkJCQkoaSAvIDI1NiArIDEpICogMjU2ICsgMSk7CgpNaXNz aW5nIGluZGVudGF0aW9uLgoKPiAgCj4gLQkJbGlua19wbV9wb2xpY2llc1tpXSA9IHBvbGljeTsK PiAtCQlsaW5rX3BtX3BvbGljaWVzW2kgKyAxXSA9IDA7CgpOb3QgYWRkZWQgYnkgdGhpcyBwYXRj aCwgYnV0IGNhbid0IHNlZSB0aGUgcHVycG9zZSBvZiB0aGlzIDAKdGVybWluYXRpb24uCgo+ICsJ CV9fc2F0YV9saW5rX3BtX3BvbGljaWVzW2ldID0gcG9saWN5Owo+ICsJCV9fc2F0YV9saW5rX3Bt X3BvbGljaWVzW2kgKyAxXSA9IDA7Cj4gKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0 X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIpOwoKVGhpcyB3b3VsZCByZXN0b3JlIHVuaW5p dGlhbGl6ZWQgdmFsdWVzIHRvIHN1YnNlcXVlbnQgU0FUQSBob3N0cywgaWYKc29tZSBmYWlsdXJl IHdvdWxkIGhhcHBlbiBiZWZvcmUgdGhlIGxvb3AgZW5kcy4gU28gSSdkIHJhdGhlcjoKCglmb3Ig KHNhdGFfaG9zdF9jb3VudCA9IDA7IDsgc2F0YV9ob3N0X2NvdW50KyspCgkJc2F2ZSB0aGUgbGlu ayBwb2xpY2l5CgoJaW5zdGFsbCBleGl0IGhhbmRsZXIKCglmb3IgKGkgPSAwOyBpIDwgc2F0YV9o b3N0X2NvdW50OyBpKyspCgkJc2V0IGxpbmsgcG9saWN5IHRvIG1pbiBwb3dlcgoKPiAgCj4gIAkJ LyogSWYgdGhlIHBvbGljeSBpcyBzb21ldGhpbmcgd2UgZG9uJ3Qga25vdyBhYm91dCwKPiAgCQkg KiBkb24ndCB0b3VjaCBpdCwgc2luY2Ugd2UgbWlnaHQgcG90ZW50aWFsbHkgYnJlYWsgdGhpbmdz Lgo+IEBAIC0zNTUsMzkgKzM0OSwyNyBAQCBpbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKPiAgCX0KPiAgCWZyZWUoYnVmKTsKPiAgCWZyZWUoZmls ZV9uYW1lKTsKPiAtCj4gLQlyZXR1cm4gbGlua19wbV9wb2xpY2llczsKPiAgfQo+ICAKPiAtLyoq Cj4gLSAqIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50Ogo+IC0gKiBA cG1fZGF0YTogQW4gb3BhcXVlIHBvaW50ZXIgd2l0aCBzYXZlZCBsaW5rIFBNIHBvbGljaWVzOwo+ IC0gKiAgICAgICAgICAgSWYgTlVMTCBpcyBwYXNzZWQgd2UgZm9yY2UgZW5hYmxlIHRoZSAibWF4 X3BlcmZvcm1hbmNlIiBwb2xpY3kuCj4gLSAqCj4gLSAqIFJlc3RvcmUgdGhlIGxpbmsgcG93ZXIg bWFuYWdlbWVudCBwb2xpY2llcyB0byB0aGUgdmFsdWVzCj4gLSAqIHByaW9yIHRvIGVuYWJsaW5n IG1pbl9wb3dlci4KPiAtICoKPiAtICogQ2F2ZWF0OiBJZiB0aGUgc3lzdGVtIHN1cHBvcnRzIGhv dHBsdWdnaW5nIGFuZCBob3RwbHVnZ2luZyB0YWtlcwo+IC0gKiAgICAgICAgIHBsYWNlIGR1cmlu ZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBob3N0cyBjaGFuZ2UgbnVtYmVycwo+IC0gKiAgICAg ICAgIHdlIG1pZ2h0IHJlc3RvcmUgdGhlIHNldHRpbmdzIHRvIHRoZSB3cm9uZyBob3N0cy4KPiAt ICovCj4gLXZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50 OF90ICpwbV9kYXRhKQo+IC0KPiArc3RhdGljIHZvaWQgX19pZ3RfcG1fcmVzdG9yZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ICB7Cj4gIAlpbnQgZmQsIGk7Cj4gIAljaGFyICpm aWxlX25hbWU7Cj4gIAo+ICsJaWYgKCFfX3NhdGFfbGlua19wbV9wb2xpY2llcykKPiArCQlyZXR1 cm47Cj4gKwo+ICAJLyogRGlzayBydW50aW1lIFBNIHBvbGljaWVzLiAqLwo+ICAJZmlsZV9uYW1l ID0gbWFsbG9jKFBBVEhfTUFYKTsKPiAgCWZvciAoaSA9IDA7IDsgaSsrKSB7Cj4gIAkJaW50OF90 IHBvbGljeTsKPiAgCj4gLQkJaWYgKCFwbV9kYXRhKQo+ICsJCWlmICghX19zYXRhX2xpbmtfcG1f cG9saWNpZXMpCgpUaGlzIGNhbid0IGhhcHBlbiBub3cuCgo+ICAJCQlwb2xpY3kgPSBQT0xJQ1lf TUFYX1BFUkZPUk1BTkNFOwo+IC0JCWVsc2UgaWYgKHBtX2RhdGFbaV0gPT0gUE9MSUNZX1VOS05P V04pCj4gKwkJZWxzZSBpZiAoX19zYXRhX2xpbmtfcG1fcG9saWNpZXNbaV0gPT0gUE9MSUNZX1VO S05PV04pCj4gIAkJCWNvbnRpbnVlOwo+ICAJCWVsc2UKPiAtCQkJcG9saWN5ID0gcG1fZGF0YVtp XTsKPiArCQkJcG9saWN5ID0gX19zYXRhX2xpbmtfcG1fcG9saWNpZXNbaV07Cj4gIAo+ICAJCXNu cHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCj4gIAkJCSAiL3N5cy9jbGFzcy9zY3NpX2hvc3Qv aG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAo+IEBAIC00MjEsNyArNDAzLDUz IEBAIHZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoaW50OF90 ICpwbV9kYXRhKQo+ICAJCWNsb3NlKGZkKTsKPiAgCX0KPiAgCWZyZWUoZmlsZV9uYW1lKTsKPiAr CWZyZWUoX19zYXRhX2xpbmtfcG1fcG9saWNpZXMpOwo+ICsJX19zYXRhX2xpbmtfcG1fcG9saWNp ZXMgPSBOVUxMOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtf cG93ZXJfbWFuYWdlbWVudDoKPiArICoKPiArICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5 IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KPiArICogV2l0aG91dCB0aGlzIHdlIGNh bm5vdCByZWFjaCBkZWVwIHJ1bnRpbWUgcG93ZXIgc3RhdGVzLgo+ICsgKiBSZXR1cm5zOiBWb2lk Cj4gKyAqLwo+ICt2b2lkIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo dm9pZCkKPiArewo+ICsJaW50IGVycjsKClVudXNlZCB2YXIuCgo+ICsKPiArCS8qIENoZWNrIGlm IGhhcyBiZWVuIGFscmVhZHkgc2F2ZWQuICovCj4gKwlpZiAoX19zYXRhX2xpbmtfcG1fcG9saWNp ZXMpCj4gKwkJcmV0dXJuOwo+ICsKPiArCSBfX2lndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2Vy X21hbmFnZW1lbnQoKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGlndF9wbV9yZXN0b3JlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50Ogo+ICsgKgo+ICsgKiBSZXN0b3JlIHRoZSBsaW5rIHBvd2Vy IG1hbmFnZW1lbnQgcG9saWNpZXMgdG8gdGhlIHZhbHVlcwo+ICsgKiBwcmlvciB0byBlbmFibGlu ZyBtaW5fcG93ZXIuCj4gKyAqCj4gKyAqIENhdmVhdDogSWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBo b3RwbHVnZ2luZyBhbmQgaG90cGx1Z2dpbmcgdGFrZXMKPiArICogICAgICAgICBwbGFjZSBkdXJp bmcgb3VyIHRlc3Rpbmcgc28gdGhhdCB0aGUgaG9zdHMgY2hhbmdlIG51bWJlcnMKPiArICogICAg ICAgICB3ZSBtaWdodCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCj4g KyAqLwo+ICt2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZv aWQpCj4gK3sKPiArCWludCBlcnI7CgpEaXR0by4KCj4gKwo+ICsJaWYgKCFfX3NhdGFfbGlua19w bV9wb2xpY2llcykKPiArCQlyZXR1cm47Cj4gKwo+ICsJIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9s aW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiAgfQo+ICsKPiArc3RhdGljIHZvaWQgX19pZ3RfcG1f c2F0YV9saW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKQo+ICt7Cj4gKwlfX2lndF9wbV9yZXN0 b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gK30KPiArCj4gICNkZWZpbmUgUE9X RVJfRElSICIvc3lzL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjAyLjAvcG93ZXIiCj4gIC8q IFdlIGp1c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCj4gIGludCBwbV9zdGF0dXNfZmQgPSAt MTsKPiBAQCAtNTg1LDYgKzYxMyw2MSBAQCBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQp Cj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiArYm9vbCBpZ3RfZGlzYWJsZV9ydW50aW1lX3Bt KHZvaWQpCj4gK3sKPiArCWludCBmZDsKPiArCXNzaXplX3Qgc2l6ZTsKPiArCWNoYXIgYnVmWzZd Owo+ICsKPiArCWlmIChwbV9zdGF0dXNfZmQgPCAwKSB7Cj4gKwkJZmQgPSBvcGVuKFBPV0VSX0RJ UiAiL2F1dG9zdXNwZW5kX2RlbGF5X21zIiwgT19SRFdSKTsKPiArCQlpZiAoZmQgPCAwKQo+ICsJ CQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJCXNpemUgPSByZWFkKGZkLCBfX2lndF9wbV9ydW50aW1l X2F1dG9zdXNwZW5kLAo+ICsJCQkgICAgc2l6ZW9mKF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3Bl bmQpKTsKPiArCj4gKwkJaWYgKHNpemUgPD0gMCkgewo+ICsJCQljbG9zZShmZCk7Cj4gKwkJCXJl dHVybiBmYWxzZTsKPiArCQl9Cj4gKwo+ICsJCXN0cmNob21wKF9faWd0X3BtX3J1bnRpbWVfYXV0 b3N1c3BlbmQpOwo+ICsJCWlndF9pbnN0YWxsX2V4aXRfaGFuZGxlcihfX2lndF9wbV9ydW50aW1l X2V4aXRfaGFuZGxlcik7Cj4gKwkJY2xvc2UoZmQpOwo+ICsJfQo+ICsKPiArCS8qIFdlIGtub3cg d2Ugc3VwcG9ydCBydW50aW1lIFBNLCBsZXQncyB0cnkgdG8gZGlzYWJsZSBpdCBub3cuICovCj4g KwlmZCA9IG9wZW4oUE9XRVJfRElSICIvY29udHJvbCIsIE9fUkRXUik7Cj4gKwlpZ3RfYXNzZXJ0 X2YoZmQgPj0gMCwgIkNhbid0IG9wZW4gIiBQT1dFUl9ESVIgIi9jb250cm9sXG4iKTsKPiArCj4g KwlpZiAocG1fc3RhdHVzX2ZkIDwgMCkgewo+ICsJCWlndF9hc3NlcnQocmVhZChmZCwgX19pZ3Rf cG1fcnVudGltZV9jb250cm9sLAo+ICsJCQkJc2l6ZW9mKF9faWd0X3BtX3J1bnRpbWVfY29udHJv bCkpID4gMCk7Cj4gKwkJc3RyY2hvbXAoX19pZ3RfcG1fcnVudGltZV9jb250cm9sKTsKPiArCj4g KwkJaWd0X2RlYnVnKCJTYXZlZCBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQg JyVzJ1xuIiwKPiArCQkJICBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLAo+ICsJCQkgIF9f aWd0X3BtX3J1bnRpbWVfY29udHJvbCk7Cj4gKwl9Cj4gKwo+ICsJc2l6ZSA9IHdyaXRlKGZkLCAi b25cbiIsIDMpOwo+ICsJaWd0X2Fzc2VydChzaXplID09IDMpOwo+ICsJbHNlZWsoZmQsIDAsIFNF RUtfU0VUKTsKPiArCXNpemUgPSByZWFkKGZkLCBidWYsIEFSUkFZX1NJWkUoYnVmKSk7Cj4gKwlp Z3RfYXNzZXJ0KHNpemUgPT0gMyk7Cj4gKwlpZ3RfYXNzZXJ0KHN0cm5jbXAoYnVmLCAib25cbiIs IDMpID09IDApOwo+ICsJY2xvc2UoZmQpOwo+ICsKPiArCWlmIChwbV9zdGF0dXNfZmQgPCAwKSB7 Cj4gKwkJcG1fc3RhdHVzX2ZkID0gb3BlbihQT1dFUl9ESVIgIi9ydW50aW1lX3N0YXR1cyIsIE9f UkRPTkxZKTsKPiArCQlpZ3RfYXNzZXJ0X2YocG1fc3RhdHVzX2ZkID49IDAsCj4gKwkJCSAgICAg IkNhbid0IG9wZW4gIiBQT1dFUl9ESVIgIi9ydW50aW1lX3N0YXR1c1xuIik7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBpZ3RfZ2V0X3J1bnRpbWVfcG1f c3RhdHVzOgo+ICAgKgo+IEBAIC02MjgsMyArNzExLDMwIEBAIGJvb2wgaWd0X3dhaXRfZm9yX3Bt X3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpCj4gIHsKPiAgCXJldHVy biBpZ3Rfd2FpdChpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKCkgPT0gc3RhdHVzLCAxMDAwMCwg MTAwKTsKPiAgfQo+ICsKPiArLyoqCj4gKyAqIGRtY19sb2FkZWQ6Cj4gKyAqIEBkZWJ1Z2ZzOiBm ZCB0byB0aGUgZGVidWdmcyBkaXIuCj4gKwo+ICsgKiBDaGVjayB3aGV0aGVyIERNQyBGVyBpcyBs b2FkZWQgb3Igbm90LiBETUMgRlcgaXMgcmVxdWlyZSBmb3IgZmV3IERpc3BsYXkgQwo+ICsgKiBz dGF0ZXMgbGlrZSBEQzUgYW5kIERDNi4gRlcgZG9lcyB0aGUgQ29udGV4dCBTYXZlIGFuZCBSZXN0 b3JlIGR1cmluZyBEaXNwbGF5Cj4gKyAqIEMgU3RhdGVzIGVudHJ5IGFuZCBleGl0Lgo+ICsgKgo+ ICsgKiBSZXR1cm5zOgo+ICsgKiBUcnVlIGlmIERNQyBGVyBpcyBsb2FkZWQgb3RoZXJ3aXNlIGZh bHNlLgo+ICsgKi8KPiArYm9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdmcykKPiArewo+ ICsJaWd0X3JlcXVpcmUoZGVidWdmcyAhPSAtMSk7CgpUaGlzIGlzIG1pc3BsYWNlZCBhbmQgcHJv YmFibHkgbm90IG5lZWRlZC4KCj4gKwljaGFyIGJ1ZlsxNV07Cj4gKwlpbnQgbGVuOwo+ICsKPiAr CWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJpOTE1X2RtY19pbmZvIiwgYnVmLCBzaXpl b2YoYnVmKSAtIDEpOwo+ICsJaWYgKGxlbiA8IDApCj4gKwkJcmV0dXJuIHRydWU7IC8qIG5vIENT UiBzdXBwb3J0LCBubyBETUMgcmVxdWlyZW1lbnQgKi8KPiArCj4gKwlidWZbbGVuXSA9ICdcMCc7 Cj4gKwo+ICsJaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7Cj4gKwlyZXR1cm4gc3Ryc3RyKGJ1 ZiwgImZ3IGxvYWRlZDogeWVzIik7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9wbS5oIGIv bGliL2lndF9wbS5oCj4gaW5kZXggMTBjYzY3OTQuLjk3OWIzNDYzIDEwMDY0NAo+IC0tLSBhL2xp Yi9pZ3RfcG0uaAo+ICsrKyBiL2xpYi9pZ3RfcG0uaAo+IEBAIC0yNSw4ICsyNSw4IEBACj4gICNk ZWZpbmUgSUdUX1BNX0gKPiAgCj4gIHZvaWQgaWd0X3BtX2VuYWJsZV9hdWRpb19ydW50aW1lX3Bt KHZvaWQpOwo+IC1pbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1l bnQodm9pZCk7Cj4gLXZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1l bnQoaW50OF90ICpwbV9kYXRhKTsKPiArdm9pZCBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dl cl9tYW5hZ2VtZW50KHZvaWQpOwo+ICt2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dl cl9tYW5hZ2VtZW50KHZvaWQpOwo+ICAKPiAgLyoqCj4gICAqIGlndF9ydW50aW1lX3BtX3N0YXR1 czoKPiBAQCAtNDcsOCArNDcsMTAgQEAgZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgewo+ICB9 Owo+ICAKPiAgYm9vbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSh2b2lkKTsKPiArYm9vbCBpZ3RfZGlz YWJsZV9ydW50aW1lX3BtKHZvaWQpOwo+ICB2b2lkIGlndF9yZXN0b3JlX3J1bnRpbWVfcG0odm9p ZCk7Cj4gIGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIGlndF9nZXRfcnVudGltZV9wbV9zdGF0 dXModm9pZCk7Cj4gIGJvb2wgaWd0X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1l X3BtX3N0YXR1cyBzdGF0dXMpOwo+ICtib29sIGlndF9wbV9kbWNfbG9hZGVkKGludCBkZWJ1Z2Zz KTsKPiAgCj4gICNlbmRpZiAvKiBJR1RfUE1fSCAqLwo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1 L2k5MTVfcG1fYmFja2xpZ2h0LmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiBp bmRleCA0YzFiZmY1Yi4uOWE1ZjRjMzcgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3Bt X2JhY2tsaWdodC5jCj4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCj4gQEAg LTQ3LDcgKzQ3LDYgQEAgc3RydWN0IGNvbnRleHQgewo+ICAjZGVmaW5lIEZBREVTUEVFRCAxMDAg LyogbWlsbGlzZWNvbmRzIGJldHdlZW4gc3RlcHMgKi8KPiAgCj4gIElHVF9URVNUX0RFU0NSSVBU SU9OKCJCYXNpYyBiYWNrbGlnaHQgc3lzZnMgdGVzdCIpOwo+IC1zdGF0aWMgaW50OF90ICpwbV9k YXRhID0gTlVMTDsKPiAgCj4gIHN0YXRpYyBpbnQgYmFja2xpZ2h0X3JlYWQoaW50ICpyZXN1bHQs IGNvbnN0IGNoYXIgKmZuYW1lKQo+ICB7Cj4gQEAgLTIzNSw3ICsyMzQsNyBAQCBpZ3RfbWFpbgo+ ICAJCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsKPiAgCj4gIAkJaWd0X2Rpc3BsYXlf Y29tbWl0MigmZGlzcGxheSwgZGlzcGxheS5pc19hdG9taWMgPyBDT01NSVRfQVRPTUlDIDogQ09N TUlUX0xFR0FDWSk7Cj4gLQkJcG1fZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2Vy X21hbmFnZW1lbnQoKTsKPiArCQlpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50KCk7Cj4gIAl9Cj4gIAo+ICAJaWd0X3N1YnRlc3QoImJhc2ljLWJyaWdodG5lc3MiKQo+IEBA IC0yNTUsOCArMjU0LDcgQEAgaWd0X21haW4KPiAgCj4gIAkJaWd0X2Rpc3BsYXlfZmluaSgmZGlz cGxheSk7Cj4gIAkJaWd0X3JlbW92ZV9mYihkaXNwbGF5LmRybV9mZCwgJmZiKTsKPiAtCQlpZ3Rf cG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChwbV9kYXRhKTsKPiAtCQlmcmVl KHBtX2RhdGEpOwo+ICsJCWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KCk7Cj4gIAkJY2xvc2UoZGlzcGxheS5kcm1fZmQpOwo+ICAJfQo+ICB9Cj4gZGlmZiAtLWdpdCBh L3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYwo+IGlu ZGV4IGEyYzlkMGVkLi4yZDJmNzdiZSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1f cnBtLmMKPiArKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKPiBAQCAtMTIyLDggKzEyMiw2 IEBAIHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyBscHNwX21vZGVfcGFyYW1zOwo+ICBzdHJ1Y3QgbW9k ZXNldF9wYXJhbXMgbm9uX2xwc3BfbW9kZV9wYXJhbXM7Cj4gIHN0cnVjdCBtb2Rlc2V0X3BhcmFt cyAqZGVmYXVsdF9tb2RlX3BhcmFtczsKPiAgCj4gLXN0YXRpYyBpbnQ4X3QgKnBtX2RhdGEgPSBO VUxMOwo+IC0KPiAgc3RhdGljIGludCBtb2Rwcm9iZShjb25zdCBjaGFyICpkcml2ZXIpCj4gIHsK PiAgCXJldHVybiBpZ3Rfa21vZF9sb2FkKGRyaXZlciwgTlVMTCk7Cj4gQEAgLTcxMCwyMSArNzA4 LDYgQEAgc3RhdGljIHZvaWQgc2V0dXBfcGM4KHZvaWQpCj4gIAloYXNfcGM4ID0gdHJ1ZTsKPiAg fQo+ICAKPiAtc3RhdGljIGJvb2wgZG1jX2xvYWRlZCh2b2lkKQo+IC17Cj4gLQljaGFyIGJ1Zlsx NV07Cj4gLQlpbnQgbGVuOwo+IC0KPiAtCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJp OTE1X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwo+IC0JaWYgKGxlbiA8IDApCj4g LQkgICAgcmV0dXJuIHRydWU7IC8qIG5vIENTUiBzdXBwb3J0LCBubyBETUMgcmVxdWlyZW1lbnQg Ki8KPiAtCj4gLQlidWZbbGVuXSA9ICdcMCc7Cj4gLQo+IC0JaWd0X2luZm8oIkRNQzogJXNcbiIs IGJ1Zik7Cj4gLQlyZXR1cm4gc3Ryc3RyKGJ1ZiwgImZ3IGxvYWRlZDogeWVzIik7Cj4gLX0KPiAt Cj4gIHN0YXRpYyB2b2lkIGR1bXBfZmlsZShpbnQgZGlyLCBjb25zdCBjaGFyICpmaWxlbmFtZSkK PiAgewo+ICAJY2hhciAqY29udGVudHM7Cj4gQEAgLTc1MSw3ICs3MzQsNyBAQCBzdGF0aWMgYm9v bCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQo+ICAKPiAgCWluaXRfbW9kZV9zZXRfZGF0YSgmbXNf ZGF0YSk7Cj4gIAo+IC0JcG1fZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQoKTsKPiArCWlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo KTsKPiAgCj4gIAloYXNfcnVudGltZV9wbSA9IGlndF9zZXR1cF9ydW50aW1lX3BtKCk7Cj4gIAlz ZXR1cF9wYzgoKTsKPiBAQCAtNzU5LDcgKzc0Miw3IEBAIHN0YXRpYyBib29sIHNldHVwX2Vudmly b25tZW50KHZvaWQpCj4gIAlpZ3RfaW5mbygiUnVudGltZSBQTSBzdXBwb3J0OiAlZFxuIiwgaGFz X3J1bnRpbWVfcG0pOwo+ICAJaWd0X2luZm8oIlBDOCByZXNpZGVuY3kgc3VwcG9ydDogJWRcbiIs IGhhc19wYzgpOwo+ICAJaWd0X3JlcXVpcmUoaGFzX3J1bnRpbWVfcG0pOwo+IC0JaWd0X3JlcXVp cmUoZG1jX2xvYWRlZCgpKTsKPiArCWlndF9yZXF1aXJlKGlndF9wbV9kbWNfbG9hZGVkKGRlYnVn ZnMpKTsKPiAgCj4gIG91dDoKPiAgCWRpc2FibGVfYWxsX3NjcmVlbnMoJm1zX2RhdGEpOwo+IEBA IC03NzYsOCArNzU5LDcgQEAgc3RhdGljIHZvaWQgdGVhcmRvd25fZW52aXJvbm1lbnQodm9pZCkK PiAgCj4gIAlpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7Cj4gIAo+IC0JaWd0X3BtX3Jlc3RvcmVf c2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7Cj4gLQlmcmVlKHBtX2RhdGEpOwo+ ICsJaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiAgCj4gIAlm aW5pX21vZGVfc2V0X2RhdGEoJm1zX2RhdGEpOwo+ICAKPiAtLSAKPiAyLjIxLjAKPiAKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2