From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F24489453 for ; Tue, 3 Sep 2019 14:32:43 +0000 (UTC) Date: Tue, 3 Sep 2019 17:32:06 +0300 From: Imre Deak Message-ID: <20190903143206.GA4392@ideak-desk.fi.intel.com> References: <20190901142001.11279-1-anshuman.gupta@intel.com> <20190901142001.11279-2-anshuman.gupta@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190901142001.11279-2-anshuman.gupta@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v13 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: T24gU3VuLCBTZXAgMDEsIDIwMTkgYXQgMDc6NDk6NTZQTSArMDUzMCwgQW5zaHVtYW4gR3VwdGEg d3JvdGU6Cj4gRnJvbTogSnlvdGkgWWFkYXYgPGp5b3RpLnIueWFkYXZAaW50ZWwuY29tPgo+IAo+ IFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nIGNoYW5nZXMgdG8gbGliL2lndF9wbS5jCj4g Cj4gLWRtY19sb2FkZWQoKSB3aWxsIGJlIHVzZWQgYnkgbmV3IHRlc3QgaTkxNV9wbV9kYy5jIHdo aWNoIHdpbGwgdmFsaWRhdGUKPiAgRGlzcGxheSBDIFN0YXRlcy4gU28gbW92aW5nIHRoZSBzYW1l IHRvIGlndF9wbSBsaWJyYXJ5Lgo+IAo+IC1JbnRyb2R1Y2VkIGlndF9kaXNhYmxlX3J1bnRpbWVf cG0oKSBpbiBvcmRlciB0byBkaXNhYmxlIHJ1bnRpbWUgc3VzcGVuZAo+ICBmb3IgdGhlIGZ1bmN0 aW9uIHdoaWNoIHN1cHBvcnQgZGM5Lgo+IAo+IC1DaGFuZ2VkIHRoZSBpZ3RfcG1fZW5hYmxlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCkgYW5kCj4gIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlu a19wb3dlcl9tYW5hZ2VtZW50KCkgaW4gb3JkZXIgdG8gc2F2ZQo+ICBhbmQgcmVzdG9yZSB0aGUg c2F0YSBsaW5rIHBvd2VyIHBvbGljeSBieSBhbiBleGl0IGhhbmRsZXIuCj4gCj4gdjI6IFNpbXBs aWZ5IHRoZSBjb21tZW50IHNlY3Rpb24uCj4gdjM6IFJlbW92ZSAuIGZyb20gdGhlIHN1YmplY3Qg bGluZS4KPiB2NDogUmViYXNlZCwgcmVzb2x2ZSBjb25mbGljdHMgaW4gcG1fcnBtLmMKPiAgICAg SW5jbHVkZWQgcGF0Y2ggc2V0IHZlcnNpb24gY2hhbmdlIGxvZy4KPiB2NTogTGlzdGluZyBhY3R1 YWwgY2hhbmdlIGluIHBhdGNoIHNldCBjaGFuZ2Vsb2cgdG8gbWFrZSByZXZpZXcgZWFzaWVyLgo+ IHY2OiBpZ3QncyBsaWIgYWRkZWQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIHJ1bnRpbWUgc3VzcGVu ZCwKPiAgICAgY2hhbmdlIGluIGNvbW1pdCBsb2cuIHJlYmFzZWQgZHVlIHRvIHRlc3QgbmFtZSBw bV9ycG0gY2hhbmdlZAo+ICAgICB0byBpOTE1X3BtX3JwbS4KPiB2NzogQWRkcmVzc2VkIHJldmll dyBjb21tZW50IGJ5IHNhdmluZyBQT1dFUl9ESVIgdmFsdWVzIGluCj4gICAgIGlndF9kaXNhYmxl X3J1bnRpbWVfcG0oKS4gW0ltcmVdCj4gdjg6IEFkZHJlc3NlZCB0aGUgcmV2aWV3IGNvbW1lbnQs IGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQKPiAgICAgZnVuY3Rpb24g dG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgU0FUQSBsaW5rIHBvd2VyIHBvbGljeSBpZiB0aGluZ3Mg ZmFpbAo+ICAgICBieSB1c2luZyBhbiBleGl0IGhhbmRsZXIuIFtJbXJlXQo+IHY5OiBJR1QgZmFp bHVyZSBmaXh0dXJlIGluIGk5MTVfcG1fYmFja2xpZ2h0IGFuZCBpOTE1X3BtX3JwbS4KPiB2MTA6 UmV2aWV3IGNvbW1lbnQgZml4dXAgaW4gc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQKPiAgICAg bGliIGZ1bmN0aW9ucy4gW0ltcmVdCj4gdjExOkFkZCBpZ3RfYXNzZXJ0X2ZkKHBtX3N0YXR1c19m ZCkgaW4gaWd0X2Rpc2FibGVfcnVudGltZV9wbSgpLgo+ICAgICBbSW1yZSAmIFBldHJpXQo+IAo+ IFNpZ25lZC1vZmYtYnk6IEp5b3RpIFlhZGF2IDxqeW90aS5yLnlhZGF2QGludGVsLmNvbT4KPiBT aWduZWQtb2ZmLWJ5OiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPgo+ IC0tLQo+ICBsaWIvaWd0X3BtLmMgICAgICAgICAgICAgICAgICAgfCAxODggKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tCj4gIGxpYi9pZ3RfcG0uaCAgICAgICAgICAgICAgICAgICB8 ICAgNiArLQo+ICB0ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMgfCAgIDYgKy0KPiAgdGVz dHMvaTkxNS9pOTE1X3BtX3JwbS5jICAgICAgIHwgIDI0ICstLS0tCj4gIDQgZmlsZXMgY2hhbmdl ZCwgMTUwIGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9s aWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKPiBpbmRleCBmZDIyMjczYS4uZGQ1MDIyZmMgMTAw NjQ0Cj4gLS0tIGEvbGliL2lndF9wbS5jCj4gKysrIGIvbGliL2lndF9wbS5jCj4gQEAgLTM4LDYg KzM4LDcgQEAKPiAgI2luY2x1ZGUgImRybXRlc3QuaCIKPiAgI2luY2x1ZGUgImlndF9wbS5oIgo+ ICAjaW5jbHVkZSAiaWd0X2F1eC5oIgo+ICsjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gIAo+ICAv KioKPiAgICogU0VDVElPTjppZ3RfcG0KPiBAQCAtNjMsMTEgKzY0LDE2IEBAIGVudW0gewo+ICAj ZGVmaW5lIE1JTl9QT1dFUl9TVFIJCSJtaW5fcG93ZXJcbiIKPiAgLyogUmVtZW1iZXIgdG8gZml4 IHRoaXMgaWYgYWRkaW5nIGxvbmdlciBzdHJpbmdzICovCj4gICNkZWZpbmUgTUFYX1BPTElDWV9T VFJMRU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCj4gK2ludDhfdCAqX19zYXRhX3BtX3Bv bGljaWVzOwo+ICtpbnQgX19zY3NpX2hvc3RfY250Owo+ICAKPiAgc3RhdGljIGNoYXIgX19pZ3Rf cG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlWzY0XTsKPiAgc3RhdGljIGNoYXIgKiBfX2lndF9w bV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aDsKPiAgc3RhdGljIGNoYXIgX19pZ3RfcG1fYXVk aW9fcnVudGltZV9jb250cm9sWzY0XTsKPiAgCj4gK3N0YXRpYyB2b2lkIF9faWd0X3BtX3NhdGFf bGlua19wbV9leGl0X2hhbmRsZXIoaW50IHNpZyk7Cj4gK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jl c3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7Cj4gKwo+ICBzdGF0aWMgaW50 IF9faWd0X3BtX2F1ZGlvX3Jlc3RvcmVfcnVudGltZV9wbSh2b2lkKQo+ICB7Cj4gIAlpbnQgZmQ7 Cj4gQEAgLTI4MCwzOSArMjg2LDI2IEBAIHZvaWQgaWd0X3BtX2VuYWJsZV9hdWRpb19ydW50aW1l X3BtKHZvaWQpCj4gIAkJaWd0X2RlYnVnKCJGYWlsZWQgdG8gZW5hYmxlIGF1ZGlvIHJ1bnRpbWUg UE0hICglZClcbiIsIC1lcnIpOwo+ICB9Cj4gIAo+IC0vKioKPiAtICogaWd0X3BtX2VuYWJsZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKPiAtICoKPiAtICogRW5hYmxlIHRoZSBtaW5fcG93 ZXIgcG9saWN5IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KPiAtICogV2l0aG91dCB0 aGlzIHdlIGNhbm5vdCByZWFjaCBkZWVwIHJ1bnRpbWUgcG93ZXIgc3RhdGVzLgo+IC0gKgo+IC0g KiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25zIG9uIG9wZW4gc2luY2UgdGhlIHN5c3RlbSBt aWdodCBub3QgaGF2ZQo+IC0gKiBhIFNBVEEgaG9zdC4KPiAtICoKPiAtICogUmV0dXJuczoKPiAt ICogQW4gb3BhcXVlIHBvaW50ZXIgdG8gdGhlIGRhdGEgbmVlZGVkIHRvIHJlc3RvcmUgdGhlIGRl ZmF1bHQgdmFsdWVzCj4gLSAqIGFmdGVyIHRoZSB0ZXN0IGhhcyB0ZXJtaW5hdGVkLCBvciBOVUxM IGlmIFNBVEEgbGluayBwb3dlciBtYW5hZ2VtZW50Cj4gLSAqIGlzIG5vdCBzdXBwb3J0ZWQuIFRo aXMgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgd2hlbiBubyBsb25nZXIgdXNlZAo+IC0gKiAodHlw aWNhbGx5IGFmdGVyIGhhdmluZyBjYWxsZWQgcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudCgpKS4KPiAtICovCj4gLWludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCh2b2lkKQo+ICtzdGF0aWMgdm9pZCBfX2lndF9wbV9lbmFibGVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKPiAgewo+ICAJaW50IGZkLCBpOwo+ICAJc3NpemVfdCBs ZW47Cj4gIAljaGFyICpidWY7Cj4gIAljaGFyICpmaWxlX25hbWU7Cj4gLQlpbnQ4X3QgKmxpbmtf cG1fcG9saWNpZXMgPSBOVUxMOwo+ICsJaW50OF90IHBvbGljeTsKPiAgCj4gIAlmaWxlX25hbWUg PSBtYWxsb2MoUEFUSF9NQVgpOwo+ICAJYnVmID0gbWFsbG9jKE1BWF9QT0xJQ1lfU1RSTEVOICsg MSk7Cj4gIAo+IC0JZm9yIChpID0gMDsgOyBpKyspIHsKPiAtCQlpbnQ4X3QgcG9saWN5Owo+IC0K PiArCWZvciAoX19zY3NpX2hvc3RfY250ID0gMDsgOyBfX3Njc2lfaG9zdF9jbnQrKykgewo+ICAJ CXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCj4gIAkJCSAiL3N5cy9jbGFzcy9zY3NpX2hv c3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAo+IC0JCQkgaSk7Cj4gKwkJ CSBfX3Njc2lfaG9zdF9jbnQpOwo+ICAKPiArCQkvKgo+ICsJCSAqIFdlIGRvbid0IGhhdmUgYW55 IGFzc2VydGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lzdGVtCj4gKwkJICogbWlnaHQgbm90IGhh dmUgYSBTQVRBIGhvc3QuCj4gKwkJICovCj4gIAkJZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRFdS KTsKPiAgCQlpZiAoZmQgPCAwKQo+ICAJCQlicmVhazsKPiBAQCAtMzMyLDEyICszMjUsMjYgQEAg aW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4g IAkJZWxzZQo+ICAJCQlwb2xpY3kgPSBQT0xJQ1lfVU5LTk9XTjsKPiAgCj4gLQkJaWYgKCEoaSAl IDI1NikpCj4gLQkJCWxpbmtfcG1fcG9saWNpZXMgPSByZWFsbG9jKGxpbmtfcG1fcG9saWNpZXMs Cj4gLQkJCQkJCSAgIChpIC8gMjU2ICsgMSkgKiAyNTYgKyAxKTsKPiArCQlpZiAoIShfX3Njc2lf aG9zdF9jbnQgJSAyNTYpKQo+ICsJCQlfX3NhdGFfcG1fcG9saWNpZXMgPSByZWFsbG9jKF9fc2F0 YV9wbV9wb2xpY2llcywKPiArCQkJCQkJICAgICAoX19zY3NpX2hvc3RfY250IC8gMjU2ICsgMSkK PiArCQkJCQkJICAgICAqIDI1NiArIDEpOwo+ICsKPiArCQlfX3NhdGFfcG1fcG9saWNpZXNbX19z Y3NpX2hvc3RfY250XSA9IHBvbGljeTsKPiArCQljbG9zZShmZCk7Cj4gKwl9Cj4gIAo+IC0JCWxp bmtfcG1fcG9saWNpZXNbaV0gPSBwb2xpY3k7Cj4gLQkJbGlua19wbV9wb2xpY2llc1tpICsgMV0g PSAwOwo+ICsJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3BtX3NhdGFfbGlua19wbV9l eGl0X2hhbmRsZXIpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBfX3Njc2lfaG9zdF9jbnQ7IGkr Kykgewo+ICsJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCj4gKwkJCSAiL3N5cy9jbGFz cy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAo+ICsJCQkg aSk7Cj4gKwkJZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRFdSKTsKPiArCQlpZiAoZmQgPCAwKQo+ ICsJCQlicmVhazsKPiArCj4gKwkJcG9saWN5ID0gX19zYXRhX3BtX3BvbGljaWVzW2ldOwo+ICAK PiAgCQkvKiBJZiB0aGUgcG9saWN5IGlzIHNvbWV0aGluZyB3ZSBkb24ndCBrbm93IGFib3V0LAo+ ICAJCSAqIGRvbid0IHRvdWNoIGl0LCBzaW5jZSB3ZSBtaWdodCBwb3RlbnRpYWxseSBicmVhayB0 aGluZ3MuCj4gQEAgLTM1NSwzOSArMzYyLDI1IEBAIGludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRh X2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ICAJfQo+ICAJZnJlZShidWYpOwo+ICAJZnJl ZShmaWxlX25hbWUpOwo+IC0KPiAtCXJldHVybiBsaW5rX3BtX3BvbGljaWVzOwo+ICB9Cj4gIAo+ IC0vKioKPiAtICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Cj4g LSAqIEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3aXRoIHNhdmVkIGxpbmsgUE0gcG9saWNp ZXM7Cj4gLSAqICAgICAgICAgICBJZiBOVUxMIGlzIHBhc3NlZCB3ZSBmb3JjZSBlbmFibGUgdGhl ICJtYXhfcGVyZm9ybWFuY2UiIHBvbGljeS4KPiAtICoKPiAtICogUmVzdG9yZSB0aGUgbGluayBw b3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKPiAtICogcHJpb3IgdG8gZW5h YmxpbmcgbWluX3Bvd2VyLgo+IC0gKgo+IC0gKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9y dHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCj4gLSAqICAgICAgICAgcGxhY2Ug ZHVyaW5nIG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJzCj4gLSAq ICAgICAgICAgd2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0dGluZ3MgdG8gdGhlIHdyb25nIGhvc3Rz Lgo+IC0gKi8KPiAtdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVu dChpbnQ4X3QgKnBtX2RhdGEpCj4gLQo+ICtzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gIHsKPiAgCWludCBmZCwgaTsKPiAgCWNo YXIgKmZpbGVfbmFtZTsKPiAgCj4gKwlpZiAoIV9fc2F0YV9wbV9wb2xpY2llcykKPiArCQlyZXR1 cm47Cj4gKwo+ICAJLyogRGlzayBydW50aW1lIFBNIHBvbGljaWVzLiAqLwo+ICAJZmlsZV9uYW1l ID0gbWFsbG9jKFBBVEhfTUFYKTsKPiAtCWZvciAoaSA9IDA7IDsgaSsrKSB7Cj4gKwlmb3IgKGkg PSAwOyBpIDwgX19zY3NpX2hvc3RfY250OyBpKyspIHsKPiAgCQlpbnQ4X3QgcG9saWN5Owo+ICAK PiAtCQlpZiAoIXBtX2RhdGEpCj4gLQkJCXBvbGljeSA9IFBPTElDWV9NQVhfUEVSRk9STUFOQ0U7 Cj4gLQkJZWxzZSBpZiAocG1fZGF0YVtpXSA9PSBQT0xJQ1lfVU5LTk9XTikKPiArCQlpZiAoX19z YXRhX3BtX3BvbGljaWVzW2ldID09IFBPTElDWV9VTktOT1dOKQo+ICAJCQljb250aW51ZTsKPiAg CQllbHNlCj4gLQkJCXBvbGljeSA9IHBtX2RhdGFbaV07Cj4gKwkJCXBvbGljeSA9IF9fc2F0YV9w bV9wb2xpY2llc1tpXTsKPiAgCj4gIAkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKPiAg CQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQvbGlua19wb3dlcl9tYW5hZ2VtZW50X3Bv bGljeSIsCj4gQEAgLTQyMSw3ICs0MTQsNDkgQEAgdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpCj4gIAkJY2xvc2UoZmQpOwo+ICAJ fQo+ICAJZnJlZShmaWxlX25hbWUpOwo+ICsJZnJlZShfX3NhdGFfcG1fcG9saWNpZXMpOwo+ICsJ X19zYXRhX3BtX3BvbGljaWVzID0gTlVMTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGlndF9wbV9l bmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Cj4gKyAqCj4gKyAqIEVuYWJsZSB0aGUg bWluX3Bvd2VyIHBvbGljeSBmb3IgU0FUQSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQuCj4gKyAqIFdp dGhvdXQgdGhpcyB3ZSBjYW5ub3QgcmVhY2ggZGVlcCBydW50aW1lIHBvd2VyIHN0YXRlcy4KPiAr ICogUmV0dXJuczogVm9pZAoKTm8gbmVlZCB0byBzdGF0ZSB0aGF0IG5vdGhpbmcgaXMgcmV0dXJu ZWQuCgo+ICsgKi8KPiArdm9pZCBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50KHZvaWQpCj4gK3sKPiArCS8qIENoZWNrIGlmIGhhcyBiZWVuIGFscmVhZHkgc2F2ZWQuICov Cj4gKwlpZiAoX19zYXRhX3BtX3BvbGljaWVzKQo+ICsJCXJldHVybjsKPiArCj4gKwkgX19pZ3Rf cG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gIH0KPiArCj4gKy8qKgo+ ICsgKiBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKPiArICoKPiAr ICogUmVzdG9yZSB0aGUgbGluayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1 ZXMKPiArICogcHJpb3IgdG8gZW5hYmxpbmcgbWluX3Bvd2VyLgo+ICsgKgo+ICsgKiBDYXZlYXQ6 IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2Vz Cj4gKyAqICAgICAgICAgcGxhY2UgZHVyaW5nIG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3Rz IGNoYW5nZSBudW1iZXJzCj4gKyAqICAgICAgICAgd2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0dGlu Z3MgdG8gdGhlIHdyb25nIGhvc3RzLgo+ICsgKi8KPiArdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRh X2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ICt7Cj4gKwlpZiAoIV9fc2F0YV9wbV9wb2xp Y2llcykKPiArCQlyZXR1cm47Cj4gKwo+ICsJIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bv d2VyX21hbmFnZW1lbnQoKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19pZ3RfcG1fc2F0YV9s aW5rX3BtX2V4aXRfaGFuZGxlcihpbnQgc2lnKQo+ICt7Cj4gKwlfX2lndF9wbV9yZXN0b3JlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gK30KPiArCj4gICNkZWZpbmUgUE9XRVJfRElS ICIvc3lzL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjAyLjAvcG93ZXIiCj4gIC8qIFdlIGp1 c3QgbGVhayB0aGlzIG9uIGV4aXQgLi4uICovCj4gIGludCBwbV9zdGF0dXNfZmQgPSAtMTsKPiBA QCAtNTg1LDYgKzYyMCwzOSBAQCBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpCj4gIAly ZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiArLyoqCj4gKyAqIGlndF9kaXNhYmxlX3J1bnRpbWVfcG06 Cj4gKyAqCj4gKyAqIERpc2FibGUgdGhlIHJ1bnRpbWUgcG0gZm9yIGk5MTUgZGV2aWNlLgo+ICsg KiBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtIGFzc3VtZXMgdGhhdCBpZ3Rfc2V0dXBfcnVudGltZV9w bSBoYXMgYWxyZWFkeQo+ICsgKiBjYWxsZWQgdG8gc2F2ZSBydW50aW1lIGF1dG9zdXNwZW5kIGFu ZCBjb250cm9sIGF0dHJpYnV0ZXMuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFRydWUgaWYg cnVudGltZSBwbSBpcyBkaXNhYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLgoKVGhpcyBiZWNhbWUgc3Rh bGUgbm93LCBwbGVhc2UgYWxzbyBtYWtlIGl0IGEgdm9pZCBmbigpIGFjY29yZGluZ2x5LgoKPiAr ICovCj4gK2Jvb2wgaWd0X2Rpc2FibGVfcnVudGltZV9wbSh2b2lkKQo+ICt7Cj4gKwlpbnQgZmQ7 Cj4gKwlzc2l6ZV90IHNpemU7Cj4gKwljaGFyIGJ1Zls2XTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2Zk KHBtX3N0YXR1c19mZCk7Cj4gKwo+ICsJLyogV2Uga25vdyB3ZSBzdXBwb3J0IHJ1bnRpbWUgUE0s IGxldCdzIHRyeSB0byBkaXNhYmxlIGl0IG5vdy4gKi8KPiArCWZkID0gb3BlbihQT1dFUl9ESVIg Ii9jb250cm9sIiwgT19SRFdSKTsKPiArCWlndF9hc3NlcnRfZihmZCA+PSAwLCAiQ2FuJ3Qgb3Bl biAiIFBPV0VSX0RJUiAiL2NvbnRyb2xcbiIpOwo+ICsKPiArCXNpemUgPSB3cml0ZShmZCwgIm9u XG4iLCAzKTsKPiArCWlndF9hc3NlcnQoc2l6ZSA9PSAzKTsKPiArCWxzZWVrKGZkLCAwLCBTRUVL X1NFVCk7Cj4gKwlzaXplID0gcmVhZChmZCwgYnVmLCBBUlJBWV9TSVpFKGJ1ZikpOwo+ICsJaWd0 X2Fzc2VydChzaXplID09IDMpOwo+ICsJaWd0X2Fzc2VydChzdHJuY21wKGJ1ZiwgIm9uXG4iLCAz KSA9PSAwKTsKPiArCWNsb3NlKGZkKTsKPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAg LyoqCj4gICAqIGlndF9nZXRfcnVudGltZV9wbV9zdGF0dXM6Cj4gICAqCj4gQEAgLTYyOCwzICs2 OTYsMjkgQEAgYm9vbCBpZ3Rfd2FpdF9mb3JfcG1fc3RhdHVzKGVudW0gaWd0X3J1bnRpbWVfcG1f c3RhdHVzIHN0YXR1cykKPiAgewo+ICAJcmV0dXJuIGlndF93YWl0KGlndF9nZXRfcnVudGltZV9w bV9zdGF0dXMoKSA9PSBzdGF0dXMsIDEwMDAwLCAxMDApOwo+ICB9Cj4gKwo+ICsvKioKPiArICog ZG1jX2xvYWRlZDoKPiArICogQGRlYnVnZnM6IGZkIHRvIHRoZSBkZWJ1Z2ZzIGRpci4KPiArCj4g KyAqIENoZWNrIHdoZXRoZXIgRE1DIEZXIGlzIGxvYWRlZCBvciBub3QuIERNQyBGVyBpcyByZXF1 aXJlIGZvciBmZXcgRGlzcGxheSBDCj4gKyAqIHN0YXRlcyBsaWtlIERDNSBhbmQgREM2LiBGVyBk b2VzIHRoZSBDb250ZXh0IFNhdmUgYW5kIFJlc3RvcmUgZHVyaW5nIERpc3BsYXkKPiArICogQyBT dGF0ZXMgZW50cnkgYW5kIGV4aXQuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFRydWUgaWYg RE1DIEZXIGlzIGxvYWRlZCBvdGhlcndpc2UgZmFsc2UuCj4gKyAqLwo+ICtib29sIGlndF9wbV9k bWNfbG9hZGVkKGludCBkZWJ1Z2ZzKQo+ICt7Cj4gKwljaGFyIGJ1ZlsxNV07Cj4gKwlpbnQgbGVu Owo+ICsKPiArCWxlbiA9IGlndF9zeXNmc19yZWFkKGRlYnVnZnMsICJpOTE1X2RtY19pbmZvIiwg YnVmLCBzaXplb2YoYnVmKSAtIDEpOwo+ICsJaWYgKGxlbiA8IDApCj4gKwkJcmV0dXJuIHRydWU7 IC8qIG5vIENTUiBzdXBwb3J0LCBubyBETUMgcmVxdWlyZW1lbnQgKi8KPiArCj4gKwlidWZbbGVu XSA9ICdcMCc7Cj4gKwo+ICsJaWd0X2luZm8oIkRNQzogJXNcbiIsIGJ1Zik7Cj4gKwlyZXR1cm4g c3Ryc3RyKGJ1ZiwgImZ3IGxvYWRlZDogeWVzIik7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2ln dF9wbS5oIGIvbGliL2lndF9wbS5oCj4gaW5kZXggMTBjYzY3OTQuLjk3OWIzNDYzIDEwMDY0NAo+ IC0tLSBhL2xpYi9pZ3RfcG0uaAo+ICsrKyBiL2xpYi9pZ3RfcG0uaAo+IEBAIC0yNSw4ICsyNSw4 IEBACj4gICNkZWZpbmUgSUdUX1BNX0gKPiAgCj4gIHZvaWQgaWd0X3BtX2VuYWJsZV9hdWRpb19y dW50aW1lX3BtKHZvaWQpOwo+IC1pbnQ4X3QgKmlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2Vy X21hbmFnZW1lbnQodm9pZCk7Cj4gLXZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2Vy X21hbmFnZW1lbnQoaW50OF90ICpwbV9kYXRhKTsKPiArdm9pZCBpZ3RfcG1fZW5hYmxlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwo+ICt2b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpOwo+ICAKPiAgLyoqCj4gICAqIGlndF9ydW50aW1l X3BtX3N0YXR1czoKPiBAQCAtNDcsOCArNDcsMTAgQEAgZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0 dXMgewo+ICB9Owo+ICAKPiAgYm9vbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSh2b2lkKTsKPiArYm9v bCBpZ3RfZGlzYWJsZV9ydW50aW1lX3BtKHZvaWQpOwo+ICB2b2lkIGlndF9yZXN0b3JlX3J1bnRp bWVfcG0odm9pZCk7Cj4gIGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIGlndF9nZXRfcnVudGlt ZV9wbV9zdGF0dXModm9pZCk7Cj4gIGJvb2wgaWd0X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGln dF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMpOwo+ICtib29sIGlndF9wbV9kbWNfbG9hZGVkKGlu dCBkZWJ1Z2ZzKTsKPiAgCj4gICNlbmRpZiAvKiBJR1RfUE1fSCAqLwo+IGRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xp Z2h0LmMKPiBpbmRleCA0YzFiZmY1Yi4uOWE1ZjRjMzcgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkx NS9pOTE1X3BtX2JhY2tsaWdodC5jCj4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdo dC5jCj4gQEAgLTQ3LDcgKzQ3LDYgQEAgc3RydWN0IGNvbnRleHQgewo+ICAjZGVmaW5lIEZBREVT UEVFRCAxMDAgLyogbWlsbGlzZWNvbmRzIGJldHdlZW4gc3RlcHMgKi8KPiAgCj4gIElHVF9URVNU X0RFU0NSSVBUSU9OKCJCYXNpYyBiYWNrbGlnaHQgc3lzZnMgdGVzdCIpOwo+IC1zdGF0aWMgaW50 OF90ICpwbV9kYXRhID0gTlVMTDsKPiAgCj4gIHN0YXRpYyBpbnQgYmFja2xpZ2h0X3JlYWQoaW50 ICpyZXN1bHQsIGNvbnN0IGNoYXIgKmZuYW1lKQo+ICB7Cj4gQEAgLTIzNSw3ICsyMzQsNyBAQCBp Z3RfbWFpbgo+ICAJCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsKPiAgCj4gIAkJaWd0 X2Rpc3BsYXlfY29tbWl0MigmZGlzcGxheSwgZGlzcGxheS5pc19hdG9taWMgPyBDT01NSVRfQVRP TUlDIDogQ09NTUlUX0xFR0FDWSk7Cj4gLQkJcG1fZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9s aW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiArCQlpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dl cl9tYW5hZ2VtZW50KCk7Cj4gIAl9Cj4gIAo+ICAJaWd0X3N1YnRlc3QoImJhc2ljLWJyaWdodG5l c3MiKQo+IEBAIC0yNTUsOCArMjU0LDcgQEAgaWd0X21haW4KPiAgCj4gIAkJaWd0X2Rpc3BsYXlf ZmluaSgmZGlzcGxheSk7Cj4gIAkJaWd0X3JlbW92ZV9mYihkaXNwbGF5LmRybV9mZCwgJmZiKTsK PiAtCQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChwbV9kYXRhKTsK PiAtCQlmcmVlKHBtX2RhdGEpOwo+ICsJCWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50KCk7Cj4gIAkJY2xvc2UoZGlzcGxheS5kcm1fZmQpOwo+ICAJfQo+ICB9Cj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9y cG0uYwo+IGluZGV4IDIxNjhmZjcyLi42ODc5YzUxMyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1 L2k5MTVfcG1fcnBtLmMKPiArKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKPiBAQCAtMTIz LDggKzEyMyw2IEBAIHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyBscHNwX21vZGVfcGFyYW1zOwo+ICBz dHJ1Y3QgbW9kZXNldF9wYXJhbXMgbm9uX2xwc3BfbW9kZV9wYXJhbXM7Cj4gIHN0cnVjdCBtb2Rl c2V0X3BhcmFtcyAqZGVmYXVsdF9tb2RlX3BhcmFtczsKPiAgCj4gLXN0YXRpYyBpbnQ4X3QgKnBt X2RhdGEgPSBOVUxMOwo+IC0KPiAgc3RhdGljIGludCBtb2Rwcm9iZShjb25zdCBjaGFyICpkcml2 ZXIpCj4gIHsKPiAgCXJldHVybiBpZ3Rfa21vZF9sb2FkKGRyaXZlciwgTlVMTCk7Cj4gQEAgLTc1 NSwyMSArNzUzLDYgQEAgc3RhdGljIHZvaWQgc2V0dXBfcGM4KHZvaWQpCj4gIAloYXNfcGM4ID0g dHJ1ZTsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wgZG1jX2xvYWRlZCh2b2lkKQo+IC17Cj4gLQlj aGFyIGJ1ZlsxNV07Cj4gLQlpbnQgbGVuOwo+IC0KPiAtCWxlbiA9IGlndF9zeXNmc19yZWFkKGRl YnVnZnMsICJpOTE1X2RtY19pbmZvIiwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwo+IC0JaWYgKGxl biA8IDApCj4gLQkgICAgcmV0dXJuIHRydWU7IC8qIG5vIENTUiBzdXBwb3J0LCBubyBETUMgcmVx dWlyZW1lbnQgKi8KPiAtCj4gLQlidWZbbGVuXSA9ICdcMCc7Cj4gLQo+IC0JaWd0X2luZm8oIkRN QzogJXNcbiIsIGJ1Zik7Cj4gLQlyZXR1cm4gc3Ryc3RyKGJ1ZiwgImZ3IGxvYWRlZDogeWVzIik7 Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGR1bXBfZmlsZShpbnQgZGlyLCBjb25zdCBjaGFyICpm aWxlbmFtZSkKPiAgewo+ICAJY2hhciAqY29udGVudHM7Cj4gQEAgLTc5Niw3ICs3NzksNyBAQCBz dGF0aWMgYm9vbCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQo+ICAKPiAgCWluaXRfbW9kZV9zZXRf ZGF0YSgmbXNfZGF0YSk7Cj4gIAo+IC0JcG1fZGF0YSA9IGlndF9wbV9lbmFibGVfc2F0YV9saW5r X3Bvd2VyX21hbmFnZW1lbnQoKTsKPiArCWlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21h bmFnZW1lbnQoKTsKPiAgCj4gIAloYXNfcnVudGltZV9wbSA9IGlndF9zZXR1cF9ydW50aW1lX3Bt KCk7Cj4gIAlzZXR1cF9wYzgoKTsKPiBAQCAtODA0LDcgKzc4Nyw3IEBAIHN0YXRpYyBib29sIHNl dHVwX2Vudmlyb25tZW50KHZvaWQpCj4gIAlpZ3RfaW5mbygiUnVudGltZSBQTSBzdXBwb3J0OiAl ZFxuIiwgaGFzX3J1bnRpbWVfcG0pOwo+ICAJaWd0X2luZm8oIlBDOCByZXNpZGVuY3kgc3VwcG9y dDogJWRcbiIsIGhhc19wYzgpOwo+ICAJaWd0X3JlcXVpcmUoaGFzX3J1bnRpbWVfcG0pOwo+IC0J aWd0X3JlcXVpcmUoZG1jX2xvYWRlZCgpKTsKPiArCWlndF9yZXF1aXJlKGlndF9wbV9kbWNfbG9h ZGVkKGRlYnVnZnMpKTsKPiAgCj4gIG91dDoKPiAgCWRpc2FibGVfYWxsX3NjcmVlbnMoJm1zX2Rh dGEpOwo+IEBAIC04MjEsOCArODA0LDcgQEAgc3RhdGljIHZvaWQgdGVhcmRvd25fZW52aXJvbm1l bnQodm9pZCkKPiAgCj4gIAlpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKCk7Cj4gIAo+IC0JaWd0X3Bt X3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7Cj4gLQlmcmVlKHBt X2RhdGEpOwo+ICsJaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsK PiAgCj4gIAlmaW5pX21vZGVfc2V0X2RhdGEoJm1zX2RhdGEpOwo+ICAKPiAtLSAKPiAyLjIxLjAK PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRl diBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2