From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6251F6E379 for ; Thu, 15 Aug 2019 11:53:35 +0000 (UTC) Date: Thu, 15 Aug 2019 14:52:39 +0300 From: Imre Deak Message-ID: <20190815115239.GA13955@ideak-desk.fi.intel.com> References: <20190621154252.27952-2-anshuman.gupta@intel.com> <20190814173904.4279-1-anshuman.gupta@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190814173904.4279-1-anshuman.gupta@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v12 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 Yadav List-ID: T24gV2VkLCBBdWcgMTQsIDIwMTkgYXQgMTE6MDk6MDRQTSArMDUzMCwgQW5zaHVtYW4gR3VwdGEg 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+IHYxMDpS ZXZpZXcgY29tbWVudCBmaXh1cCBpbiBzYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudAo+ICAgICBs aWIgZnVuY3Rpb25zLiBbSW1yZV0KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKeW90aSBZYWRhdiA8anlv dGkuci55YWRhdkBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQW5zaHVtYW4gR3VwdGEgPGFu c2h1bWFuLmd1cHRhQGludGVsLmNvbT4KPiAtLS0KPiAgbGliL2lndF9wbS5jICAgICAgICAgICAg ICAgICAgIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICBsaWIvaWd0 X3BtLmggICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgdGVzdHMvaTkxNS9pOTE1X3BtX2Jh Y2tsaWdodC5jIHwgICA2ICstCj4gIHRlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyAgICAgICB8ICAy NCArLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKPiBpbmRl eCBmZDIyMjczYS4uMmE0Mzk3MDAgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9wbS5jCj4gKysrIGIv bGliL2lndF9wbS5jCj4gQEAgLTM4LDYgKzM4LDcgQEAKPiAgI2luY2x1ZGUgImRybXRlc3QuaCIK PiAgI2luY2x1ZGUgImlndF9wbS5oIgo+ICAjaW5jbHVkZSAiaWd0X2F1eC5oIgo+ICsjaW5jbHVk ZSAiaWd0X3N5c2ZzLmgiCj4gIAo+ICAvKioKPiAgICogU0VDVElPTjppZ3RfcG0KPiBAQCAtNjMs MTEgKzY0LDE1IEBAIGVudW0gewo+ICAjZGVmaW5lIE1JTl9QT1dFUl9TVFIJCSJtaW5fcG93ZXJc biIKPiAgLyogUmVtZW1iZXIgdG8gZml4IHRoaXMgaWYgYWRkaW5nIGxvbmdlciBzdHJpbmdzICov Cj4gICNkZWZpbmUgTUFYX1BPTElDWV9TVFJMRU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIp Cj4gK2ludDhfdCAqX19zYXRhX3BtX3BvbGljaWVzOwo+ICAKPiAgc3RhdGljIGNoYXIgX19pZ3Rf cG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlWzY0XTsKPiAgc3RhdGljIGNoYXIgKiBfX2lndF9w bV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aDsKPiAgc3RhdGljIGNoYXIgX19pZ3RfcG1fYXVk aW9fcnVudGltZV9jb250cm9sWzY0XTsKPiAgCj4gK3N0YXRpYyB2b2lkIF9faWd0X3BtX3NhdGFf bGlua19wbV9leGl0X2hhbmRsZXIoaW50IHNpZyk7Cj4gK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jl c3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7Cj4gKwo+ICBzdGF0aWMgaW50 IF9faWd0X3BtX2F1ZGlvX3Jlc3RvcmVfcnVudGltZV9wbSh2b2lkKQo+ICB7Cj4gIAlpbnQgZmQ7 Cj4gQEAgLTI4MCw2NCArMjg1LDcyIEBAIHZvaWQgaWd0X3BtX2VuYWJsZV9hdWRpb19ydW50aW1l X3BtKHZvaWQpCj4gIAkJaWd0X2RlYnVnKCJGYWlsZWQgdG8gZW5hYmxlIGF1ZGlvIHJ1bnRpbWUg UE0hICglZClcbiIsIC1lcnIpOwo+ICB9Cj4gIAo+IC0vKioKPiAtICogaWd0X3BtX2VuYWJsZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKPiAtICoKPiAtICogRW5hYmxlIHRoZSBtaW5fcG93 ZXIgcG9saWN5IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFuYWdlbWVudC4KPiAtICogV2l0aG91dCB0 aGlzIHdlIGNhbm5vdCByZWFjaCBkZWVwIHJ1bnRpbWUgcG93ZXIgc3RhdGVzLgo+IC0gKgo+IC0g KiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25zIG9uIG9wZW4gc2luY2UgdGhlIHN5c3RlbSBt aWdodCBub3QgaGF2ZQo+IC0gKiBhIFNBVEEgaG9zdC4KPiAtICoKPiAtICogUmV0dXJuczoKPiAt ICogQW4gb3BhcXVlIHBvaW50ZXIgdG8gdGhlIGRhdGEgbmVlZGVkIHRvIHJlc3RvcmUgdGhlIGRl ZmF1bHQgdmFsdWVzCj4gLSAqIGFmdGVyIHRoZSB0ZXN0IGhhcyB0ZXJtaW5hdGVkLCBvciBOVUxM IGlmIFNBVEEgbGluayBwb3dlciBtYW5hZ2VtZW50Cj4gLSAqIGlzIG5vdCBzdXBwb3J0ZWQuIFRo aXMgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgd2hlbiBubyBsb25nZXIgdXNlZAo+IC0gKiAodHlw aWNhbGx5IGFmdGVyIGhhdmluZyBjYWxsZWQgcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudCgpKS4KPiAtICovCj4gLWludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJf bWFuYWdlbWVudCh2b2lkKQo+ICtzdGF0aWMgaW50OF90IGdldF9zYXRhX3BvbGljeV9mb3JfaG9z dChpbnQgZmQsIGNoYXIgKmJ1ZiwgaW50IGkpCj4gIHsKPiAtCWludCBmZCwgaTsKPiArCWludDhf dCBwb2xpY3k7Cj4gIAlzc2l6ZV90IGxlbjsKPiArCj4gKwlsZW4gPSByZWFkKGZkLCBidWYsIE1B WF9QT0xJQ1lfU1RSTEVOKTsKPiArCWJ1ZltsZW5dID0gJ1wwJzsKPiArCj4gKwlpZiAoIXN0cm5j bXAoTUFYX1BFUkZPUk1BTkNFX1NUUiwgYnVmLAo+ICsJCSAgICAgc3RybGVuKE1BWF9QRVJGT1JN QU5DRV9TVFIpKSkKPiArCQlwb2xpY3kgPSBQT0xJQ1lfTUFYX1BFUkZPUk1BTkNFOwo+ICsJZWxz ZSBpZiAoIXN0cm5jbXAoTUVESVVNX1BPV0VSX1NUUiwgYnVmLAo+ICsJCQkgIHN0cmxlbihNRURJ VU1fUE9XRVJfU1RSKSkpCj4gKwkJcG9saWN5ID0gUE9MSUNZX01FRElVTV9QT1dFUjsKPiArCWVs c2UgaWYgKCFzdHJuY21wKE1JTl9QT1dFUl9TVFIsIGJ1ZiwKPiArCQkJICBzdHJsZW4oTUlOX1BP V0VSX1NUUikpKQo+ICsJCXBvbGljeSA9IFBPTElDWV9NSU5fUE9XRVI7Cj4gKwllbHNlCj4gKwkJ cG9saWN5ID0gUE9MSUNZX1VOS05PV047Cj4gKwo+ICsJcmV0dXJuIHBvbGljeTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgX19pZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KHZvaWQpCj4gK3sKPiArCWludCBmZCwgaTsKPiAgCWNoYXIgKmJ1ZjsKPiAgCWNoYXIgKmZpbGVf bmFtZTsKPiAtCWludDhfdCAqbGlua19wbV9wb2xpY2llcyA9IE5VTEw7Cj4gKwlpbnQ4X3QgcG9s aWN5Owo+ICAKPiAgCWZpbGVfbmFtZSA9IG1hbGxvYyhQQVRIX01BWCk7Cj4gIAlidWYgPSBtYWxs b2MoTUFYX1BPTElDWV9TVFJMRU4gKyAxKTsKPiAgCj4gIAlmb3IgKGkgPSAwOyA7IGkrKykgewoK Zm9yIChzY3NpX2hvc3RfY291bnQgPSAwOyA7IHNjc2lfaG9zdF9jb3VudCsrKQoKPiAtCQlpbnQ4 X3QgcG9saWN5Owo+IC0KPiAgCQlzbnByaW50ZihmaWxlX25hbWUsIFBBVEhfTUFYLAo+ICAJCQkg Ii9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QlZC9saW5rX3Bvd2VyX21hbmFnZW1lbnRfcG9saWN5 IiwKPiAgCQkJIGkpOwo+ICAKPiArCQkvKgo+ICsJCSAqIFdlIGRvbid0IGhhdmUgYW55IGFzc2Vy dGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lzdGVtCj4gKwkJICogbWlnaHQgbm90IGhhdmUgYSBT QVRBIGhvc3QuCj4gKwkJICovCj4gIAkJZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRFdSKTsKPiAg CQlpZiAoZmQgPCAwKQo+ICAJCQlicmVhazsKPiAgCj4gLQkJbGVuID0gcmVhZChmZCwgYnVmLCBN QVhfUE9MSUNZX1NUUkxFTik7Cj4gLQkJYnVmW2xlbl0gPSAnXDAnOwo+IC0KPiAtCQlpZiAoIXN0 cm5jbXAoTUFYX1BFUkZPUk1BTkNFX1NUUiwgYnVmLAo+IC0JCQkgICAgIHN0cmxlbihNQVhfUEVS Rk9STUFOQ0VfU1RSKSkpCj4gLQkJCXBvbGljeSA9IFBPTElDWV9NQVhfUEVSRk9STUFOQ0U7Cj4g LQkJZWxzZSBpZiAoIXN0cm5jbXAoTUVESVVNX1BPV0VSX1NUUiwgYnVmLAo+IC0JCQkJICBzdHJs ZW4oTUVESVVNX1BPV0VSX1NUUikpKQo+IC0JCQlwb2xpY3kgPSBQT0xJQ1lfTUVESVVNX1BPV0VS Owo+IC0JCWVsc2UgaWYgKCFzdHJuY21wKE1JTl9QT1dFUl9TVFIsIGJ1ZiwKPiAtCQkJCSAgc3Ry bGVuKE1JTl9QT1dFUl9TVFIpKSkKPiAtCQkJcG9saWN5ID0gUE9MSUNZX01JTl9QT1dFUjsKPiAt CQllbHNlCj4gLQkJCXBvbGljeSA9IFBPTElDWV9VTktOT1dOOwo+ICsJCXBvbGljeSA9IGdldF9z YXRhX3BvbGljeV9mb3JfaG9zdChmZCwgYnVmLCBpKTsKPiAgCj4gIAkJaWYgKCEoaSAlIDI1Nikp Cj4gLQkJCWxpbmtfcG1fcG9saWNpZXMgPSByZWFsbG9jKGxpbmtfcG1fcG9saWNpZXMsCj4gLQkJ CQkJCSAgIChpIC8gMjU2ICsgMSkgKiAyNTYgKyAxKTsKPiArCQkJX19zYXRhX3BtX3BvbGljaWVz ID0gcmVhbGxvYyhfX3NhdGFfcG1fcG9saWNpZXMsCj4gKwkJCQkJCSAgICAgKGkgLyAyNTYgKyAx KSAqIDI1NiArIDEpOwo+ICAKPiAtCQlsaW5rX3BtX3BvbGljaWVzW2ldID0gcG9saWN5Owo+IC0J CWxpbmtfcG1fcG9saWNpZXNbaSArIDFdID0gMDsKPiArCQlfX3NhdGFfcG1fcG9saWNpZXNbaV0g PSBwb2xpY3k7Cj4gKwkJY2xvc2UoZmQpOwo+ICsJfQo+ICsJCWlndF9pbnN0YWxsX2V4aXRfaGFu ZGxlcihfX2lndF9wbV9zYXRhX2xpbmtfcG1fZXhpdF9oYW5kbGVyKTsKCkV4dHJhIGluZGVudC4K Cj4gKwo+ICsJZm9yIChpID0gMDsgOyBpKyspIHsKCmZvciAoaSA9IDA7IDsgaSA8IHNjc2lfaG9z dF9jb3VudCkKCj4gKwkJc25wcmludGYoZmlsZV9uYW1lLCBQQVRIX01BWCwKPiArCQkJICIvc3lz L2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQvbGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGljeSIsCj4g KwkJCSBpKTsKPiArCQlmZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JEV1IpOwo+ICsJCWlmIChmZCA8 IDApCj4gKwkJCWJyZWFrOwo+ICsKPiArCQlwb2xpY3kgPSBnZXRfc2F0YV9wb2xpY3lfZm9yX2hv c3QoZmQsIGJ1ZiwgaSk7Cgpwb2xpY3kgPSBfX3NhdGFfcG1fcG9saWNpZXNbaV07Cgo+ICAKPiAg CQkvKiBJZiB0aGUgcG9saWN5IGlzIHNvbWV0aGluZyB3ZSBkb24ndCBrbm93IGFib3V0LAo+ICAJ CSAqIGRvbid0IHRvdWNoIGl0LCBzaW5jZSB3ZSBtaWdodCBwb3RlbnRpYWxseSBicmVhayB0aGlu Z3MuCj4gQEAgLTM1NSwzOSArMzY4LDI1IEBAIGludDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xp bmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ICAJfQo+ICAJZnJlZShidWYpOwo+ICAJZnJlZShm aWxlX25hbWUpOwo+IC0KPiAtCXJldHVybiBsaW5rX3BtX3BvbGljaWVzOwo+ICB9Cj4gIAo+IC0v KioKPiAtICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Cj4gLSAq IEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3aXRoIHNhdmVkIGxpbmsgUE0gcG9saWNpZXM7 Cj4gLSAqICAgICAgICAgICBJZiBOVUxMIGlzIHBhc3NlZCB3ZSBmb3JjZSBlbmFibGUgdGhlICJt YXhfcGVyZm9ybWFuY2UiIHBvbGljeS4KPiAtICoKPiAtICogUmVzdG9yZSB0aGUgbGluayBwb3dl ciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2YWx1ZXMKPiAtICogcHJpb3IgdG8gZW5hYmxp bmcgbWluX3Bvd2VyLgo+IC0gKgo+IC0gKiBDYXZlYXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMg aG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRha2VzCj4gLSAqICAgICAgICAgcGxhY2UgZHVy aW5nIG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhvc3RzIGNoYW5nZSBudW1iZXJzCj4gLSAqICAg ICAgICAgd2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0dGluZ3MgdG8gdGhlIHdyb25nIGhvc3RzLgo+ IC0gKi8KPiAtdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChp bnQ4X3QgKnBtX2RhdGEpCj4gLQo+ICtzdGF0aWMgdm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gIHsKPiAgCWludCBmZCwgaTsKPiAgCWNoYXIg KmZpbGVfbmFtZTsKPiAgCj4gKwlpZiAoIV9fc2F0YV9wbV9wb2xpY2llcykKPiArCQlyZXR1cm47 Cj4gKwo+ICAJLyogRGlzayBydW50aW1lIFBNIHBvbGljaWVzLiAqLwo+ICAJZmlsZV9uYW1lID0g bWFsbG9jKFBBVEhfTUFYKTsKPiAgCWZvciAoaSA9IDA7IDsgaSsrKSB7Cgpmb3IgKGkgPSAwOyA7 IGkgPCBzY3NpX2hvc3RfY291bnQpIHsKCj4gIAkJaW50OF90IHBvbGljeTsKPiAgCj4gLQkJaWYg KCFwbV9kYXRhKQo+IC0JCQlwb2xpY3kgPSBQT0xJQ1lfTUFYX1BFUkZPUk1BTkNFOwo+IC0JCWVs c2UgaWYgKHBtX2RhdGFbaV0gPT0gUE9MSUNZX1VOS05PV04pCj4gKwkJaWYgKF9fc2F0YV9wbV9w b2xpY2llc1tpXSA9PSBQT0xJQ1lfVU5LTk9XTikKPiAgCQkJY29udGludWU7Cj4gIAkJZWxzZQo+ IC0JCQlwb2xpY3kgPSBwbV9kYXRhW2ldOwo+ICsJCQlwb2xpY3kgPSBfX3NhdGFfcG1fcG9saWNp ZXNbaV07Cj4gIAo+ICAJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCj4gIAkJCSAiL3N5 cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kiLAo+ IEBAIC00MjEsNyArNDIwLDQ5IEBAIHZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2Vy X21hbmFnZW1lbnQoaW50OF90ICpwbV9kYXRhKQo+ICAJCWNsb3NlKGZkKTsKPiAgCX0KPiAgCWZy ZWUoZmlsZV9uYW1lKTsKPiArCWZyZWUoX19zYXRhX3BtX3BvbGljaWVzKTsKPiArCV9fc2F0YV9w bV9wb2xpY2llcyA9IE5VTEw7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpZ3RfcG1fZW5hYmxlX3Nh dGFfbGlua19wb3dlcl9tYW5hZ2VtZW50Ogo+ICsgKgo+ICsgKiBFbmFibGUgdGhlIG1pbl9wb3dl ciBwb2xpY3kgZm9yIFNBVEEgbGluayBwb3dlciBtYW5hZ2VtZW50Lgo+ICsgKiBXaXRob3V0IHRo aXMgd2UgY2Fubm90IHJlYWNoIGRlZXAgcnVudGltZSBwb3dlciBzdGF0ZXMuCj4gKyAqIFJldHVy bnM6IFZvaWQKPiArICovCj4gK3ZvaWQgaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudCh2b2lkKQo+ICt7Cj4gKwkvKiBDaGVjayBpZiBoYXMgYmVlbiBhbHJlYWR5IHNhdmVk LiAqLwo+ICsJaWYgKF9fc2F0YV9wbV9wb2xpY2llcykKPiArCQlyZXR1cm47Cj4gKwo+ICsJIF9f aWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICt9Cj4gKwo+ICsv KioKPiArICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6Cj4gKyAq Cj4gKyAqIFJlc3RvcmUgdGhlIGxpbmsgcG93ZXIgbWFuYWdlbWVudCBwb2xpY2llcyB0byB0aGUg dmFsdWVzCj4gKyAqIHByaW9yIHRvIGVuYWJsaW5nIG1pbl9wb3dlci4KPiArICoKPiArICogQ2F2 ZWF0OiBJZiB0aGUgc3lzdGVtIHN1cHBvcnRzIGhvdHBsdWdnaW5nIGFuZCBob3RwbHVnZ2luZyB0 YWtlcwo+ICsgKiAgICAgICAgIHBsYWNlIGR1cmluZyBvdXIgdGVzdGluZyBzbyB0aGF0IHRoZSBo b3N0cyBjaGFuZ2UgbnVtYmVycwo+ICsgKiAgICAgICAgIHdlIG1pZ2h0IHJlc3RvcmUgdGhlIHNl dHRpbmdzIHRvIHRoZSB3cm9uZyBob3N0cy4KPiArICovCj4gK3ZvaWQgaWd0X3BtX3Jlc3RvcmVf c2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKPiArewo+ICsJaWYgKCFfX3NhdGFfcG1f cG9saWNpZXMpCj4gKwkJcmV0dXJuOwo+ICsKPiArCSBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlu a19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gIH0KPiArCj4gK3N0YXRpYyB2b2lkIF9faWd0X3BtX3Nh dGFfbGlua19wbV9leGl0X2hhbmRsZXIoaW50IHNpZykKPiArewo+ICsJX19pZ3RfcG1fcmVzdG9y ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICt9Cj4gKwo+ICAjZGVmaW5lIFBPV0VS X0RJUiAiL3N5cy9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDowMi4wL3Bvd2VyIgo+ICAvKiBX ZSBqdXN0IGxlYWsgdGhpcyBvbiBleGl0IC4uLiAqLwo+ICBpbnQgcG1fc3RhdHVzX2ZkID0gLTE7 Cj4gQEAgLTU4NSw2ICs2MjYsNjEgQEAgYm9vbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSh2b2lkKQo+ ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gK2Jvb2wgaWd0X2Rpc2FibGVfcnVudGltZV9wbSh2 b2lkKQo+ICt7Cj4gKwlpbnQgZmQ7Cj4gKwlzc2l6ZV90IHNpemU7Cj4gKwljaGFyIGJ1Zls2XTsK PiArCj4gKwlpZiAocG1fc3RhdHVzX2ZkIDwgMCkgewo+ICsJCWZkID0gb3BlbihQT1dFUl9ESVIg Ii9hdXRvc3VzcGVuZF9kZWxheV9tcyIsIE9fUkRXUik7Cj4gKwkJaWYgKGZkIDwgMCkKPiArCQkJ cmV0dXJuIGZhbHNlOwo+ICsKPiArCQlzaXplID0gcmVhZChmZCwgX19pZ3RfcG1fcnVudGltZV9h dXRvc3VzcGVuZCwKPiArCQkJICAgIHNpemVvZihfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5k KSk7Cj4gKwo+ICsJCWlmIChzaXplIDw9IDApIHsKPiArCQkJY2xvc2UoZmQpOwo+ICsJCQlyZXR1 cm4gZmFsc2U7Cj4gKwkJfQo+ICsKPiArCQlzdHJjaG9tcChfX2lndF9wbV9ydW50aW1lX2F1dG9z dXNwZW5kKTsKPiArCQlpZ3RfaW5zdGFsbF9leGl0X2hhbmRsZXIoX19pZ3RfcG1fcnVudGltZV9l eGl0X2hhbmRsZXIpOwo+ICsJCWNsb3NlKGZkKTsKPiArCX0KPiArCj4gKwkvKiBXZSBrbm93IHdl IHN1cHBvcnQgcnVudGltZSBQTSwgbGV0J3MgdHJ5IHRvIGRpc2FibGUgaXQgbm93LiAqLwo+ICsJ ZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1JEV1IpOwo+ICsJaWd0X2Fzc2VydF9m KGZkID49IDAsICJDYW4ndCBvcGVuICIgUE9XRVJfRElSICIvY29udHJvbFxuIik7Cj4gKwo+ICsJ aWYgKHBtX3N0YXR1c19mZCA8IDApIHsKPiArCQlpZ3RfYXNzZXJ0KHJlYWQoZmQsIF9faWd0X3Bt X3J1bnRpbWVfY29udHJvbCwKPiArCQkJCXNpemVvZihfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wp KSA+IDApOwo+ICsJCXN0cmNob21wKF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCk7Cj4gKwo+ICsJ CWlndF9kZWJ1ZygiU2F2ZWQgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IGFzICclcycgYW5kICcl cydcbiIsCj4gKwkJCSAgX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCwKPiArCQkJICBfX2ln dF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ICsJfQo+ICsKPiArCXNpemUgPSB3cml0ZShmZCwgIm9u XG4iLCAzKTsKPiArCWlndF9hc3NlcnQoc2l6ZSA9PSAzKTsKPiArCWxzZWVrKGZkLCAwLCBTRUVL X1NFVCk7Cj4gKwlzaXplID0gcmVhZChmZCwgYnVmLCBBUlJBWV9TSVpFKGJ1ZikpOwo+ICsJaWd0 X2Fzc2VydChzaXplID09IDMpOwo+ICsJaWd0X2Fzc2VydChzdHJuY21wKGJ1ZiwgIm9uXG4iLCAz KSA9PSAwKTsKPiArCWNsb3NlKGZkKTsKPiArCj4gKwlpZiAocG1fc3RhdHVzX2ZkIDwgMCkgewo+ ICsJCXBtX3N0YXR1c19mZCA9IG9wZW4oUE9XRVJfRElSICIvcnVudGltZV9zdGF0dXMiLCBPX1JE T05MWSk7Cj4gKwkJaWd0X2Fzc2VydF9mKHBtX3N0YXR1c19mZCA+PSAwLAo+ICsJCQkgICAgICJD YW4ndCBvcGVuICIgUE9XRVJfRElSICIvcnVudGltZV9zdGF0dXNcbiIpOwo+ICsJfQo+ICsKPiAr CXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaWd0X2dldF9ydW50aW1lX3BtX3N0 YXR1czoKPiAgICoKPiBAQCAtNjI4LDMgKzcyNCwyOSBAQCBib29sIGlndF93YWl0X2Zvcl9wbV9z dGF0dXMoZW51bSBpZ3RfcnVudGltZV9wbV9zdGF0dXMgc3RhdHVzKQo+ICB7Cj4gIAlyZXR1cm4g aWd0X3dhaXQoaWd0X2dldF9ydW50aW1lX3BtX3N0YXR1cygpID09IHN0YXR1cywgMTAwMDAsIDEw MCk7Cj4gIH0KPiArCj4gKy8qKgo+ICsgKiBkbWNfbG9hZGVkOgo+ICsgKiBAZGVidWdmczogZmQg dG8gdGhlIGRlYnVnZnMgZGlyLgo+ICsKPiArICogQ2hlY2sgd2hldGhlciBETUMgRlcgaXMgbG9h ZGVkIG9yIG5vdC4gRE1DIEZXIGlzIHJlcXVpcmUgZm9yIGZldyBEaXNwbGF5IEMKPiArICogc3Rh dGVzIGxpa2UgREM1IGFuZCBEQzYuIEZXIGRvZXMgdGhlIENvbnRleHQgU2F2ZSBhbmQgUmVzdG9y ZSBkdXJpbmcgRGlzcGxheQo+ICsgKiBDIFN0YXRlcyBlbnRyeSBhbmQgZXhpdC4KPiArICoKPiAr ICogUmV0dXJuczoKPiArICogVHJ1ZSBpZiBETUMgRlcgaXMgbG9hZGVkIG90aGVyd2lzZSBmYWxz ZS4KPiArICovCj4gK2Jvb2wgaWd0X3BtX2RtY19sb2FkZWQoaW50IGRlYnVnZnMpCj4gK3sKPiAr CWNoYXIgYnVmWzE1XTsKPiArCWludCBsZW47Cj4gKwo+ICsJbGVuID0gaWd0X3N5c2ZzX3JlYWQo ZGVidWdmcywgImk5MTVfZG1jX2luZm8iLCBidWYsIHNpemVvZihidWYpIC0gMSk7Cj4gKwlpZiAo bGVuIDwgMCkKPiArCQlyZXR1cm4gdHJ1ZTsgLyogbm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1 aXJlbWVudCAqLwo+ICsKPiArCWJ1ZltsZW5dID0gJ1wwJzsKPiArCj4gKwlpZ3RfaW5mbygiRE1D OiAlc1xuIiwgYnVmKTsKPiArCXJldHVybiBzdHJzdHIoYnVmLCAiZncgbG9hZGVkOiB5ZXMiKTsK PiArfQo+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmggYi9saWIvaWd0X3BtLmgKPiBpbmRleCAx MGNjNjc5NC4uOTc5YjM0NjMgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9wbS5oCj4gKysrIGIvbGli L2lndF9wbS5oCj4gQEAgLTI1LDggKzI1LDggQEAKPiAgI2RlZmluZSBJR1RfUE1fSAo+ICAKPiAg dm9pZCBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0odm9pZCk7Cj4gLWludDhfdCAqaWd0 X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKTsKPiAtdm9pZCBpZ3Rf cG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpOwo+ ICt2b2lkIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7Cj4g K3ZvaWQgaWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCk7Cj4g IAo+ICAvKioKPiAgICogaWd0X3J1bnRpbWVfcG1fc3RhdHVzOgo+IEBAIC00Nyw4ICs0NywxMCBA QCBlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyB7Cj4gIH07Cj4gIAo+ICBib29sIGlndF9zZXR1 cF9ydW50aW1lX3BtKHZvaWQpOwo+ICtib29sIGlndF9kaXNhYmxlX3J1bnRpbWVfcG0odm9pZCk7 Cj4gIHZvaWQgaWd0X3Jlc3RvcmVfcnVudGltZV9wbSh2b2lkKTsKPiAgZW51bSBpZ3RfcnVudGlt ZV9wbV9zdGF0dXMgaWd0X2dldF9ydW50aW1lX3BtX3N0YXR1cyh2b2lkKTsKPiAgYm9vbCBpZ3Rf d2FpdF9mb3JfcG1fc3RhdHVzKGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIHN0YXR1cyk7Cj4g K2Jvb2wgaWd0X3BtX2RtY19sb2FkZWQoaW50IGRlYnVnZnMpOwo+ICAKPiAgI2VuZGlmIC8qIElH VF9QTV9IICovCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYyBi L3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+IGluZGV4IDRjMWJmZjViLi45YTVmNGMz NyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiArKysgYi90 ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiBAQCAtNDcsNyArNDcsNiBAQCBzdHJ1Y3Qg Y29udGV4dCB7Cj4gICNkZWZpbmUgRkFERVNQRUVEIDEwMCAvKiBtaWxsaXNlY29uZHMgYmV0d2Vl biBzdGVwcyAqLwo+ICAKPiAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIkJhc2ljIGJhY2tsaWdodCBz eXNmcyB0ZXN0Iik7Cj4gLXN0YXRpYyBpbnQ4X3QgKnBtX2RhdGEgPSBOVUxMOwo+ICAKPiAgc3Rh dGljIGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hhciAqZm5hbWUpCj4g IHsKPiBAQCAtMjM1LDcgKzIzNCw3IEBAIGlndF9tYWluCj4gIAkJaWd0X3BsYW5lX3NldF9mYihw cmltYXJ5LCAmZmIpOwo+ICAKPiAgCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkaXNwbGF5LCBkaXNw bGF5LmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKPiAtCQlwbV9k YXRhID0gaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICsJCWln dF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiAgCX0KPiAgCj4gIAlp Z3Rfc3VidGVzdCgiYmFzaWMtYnJpZ2h0bmVzcyIpCj4gQEAgLTI1NSw4ICsyNTQsNyBAQCBpZ3Rf bWFpbgo+ICAKPiAgCQlpZ3RfZGlzcGxheV9maW5pKCZkaXNwbGF5KTsKPiAgCQlpZ3RfcmVtb3Zl X2ZiKGRpc3BsYXkuZHJtX2ZkLCAmZmIpOwo+IC0JCWlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19w b3dlcl9tYW5hZ2VtZW50KHBtX2RhdGEpOwo+IC0JCWZyZWUocG1fZGF0YSk7Cj4gKwkJaWd0X3Bt X3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiAgCQljbG9zZShkaXNwbGF5 LmRybV9mZCk7Cj4gIAl9Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3BtX3Jw bS5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCj4gaW5kZXggYTJjOWQwZWQuLjJkMmY3N2Jl IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYwo+ICsrKyBiL3Rlc3RzL2k5 MTUvaTkxNV9wbV9ycG0uYwo+IEBAIC0xMjIsOCArMTIyLDYgQEAgc3RydWN0IG1vZGVzZXRfcGFy YW1zIGxwc3BfbW9kZV9wYXJhbXM7Cj4gIHN0cnVjdCBtb2Rlc2V0X3BhcmFtcyBub25fbHBzcF9t b2RlX3BhcmFtczsKPiAgc3RydWN0IG1vZGVzZXRfcGFyYW1zICpkZWZhdWx0X21vZGVfcGFyYW1z Owo+ICAKPiAtc3RhdGljIGludDhfdCAqcG1fZGF0YSA9IE5VTEw7Cj4gLQo+ICBzdGF0aWMgaW50 IG1vZHByb2JlKGNvbnN0IGNoYXIgKmRyaXZlcikKPiAgewo+ICAJcmV0dXJuIGlndF9rbW9kX2xv YWQoZHJpdmVyLCBOVUxMKTsKPiBAQCAtNzEwLDIxICs3MDgsNiBAQCBzdGF0aWMgdm9pZCBzZXR1 cF9wYzgodm9pZCkKPiAgCWhhc19wYzggPSB0cnVlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBk bWNfbG9hZGVkKHZvaWQpCj4gLXsKPiAtCWNoYXIgYnVmWzE1XTsKPiAtCWludCBsZW47Cj4gLQo+ IC0JbGVuID0gaWd0X3N5c2ZzX3JlYWQoZGVidWdmcywgImk5MTVfZG1jX2luZm8iLCBidWYsIHNp emVvZihidWYpIC0gMSk7Cj4gLQlpZiAobGVuIDwgMCkKPiAtCSAgICByZXR1cm4gdHJ1ZTsgLyog bm8gQ1NSIHN1cHBvcnQsIG5vIERNQyByZXF1aXJlbWVudCAqLwo+IC0KPiAtCWJ1ZltsZW5dID0g J1wwJzsKPiAtCj4gLQlpZ3RfaW5mbygiRE1DOiAlc1xuIiwgYnVmKTsKPiAtCXJldHVybiBzdHJz dHIoYnVmLCAiZncgbG9hZGVkOiB5ZXMiKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgZHVtcF9m aWxlKGludCBkaXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQo+ICB7Cj4gIAljaGFyICpjb250ZW50 czsKPiBAQCAtNzUxLDcgKzczNCw3IEBAIHN0YXRpYyBib29sIHNldHVwX2Vudmlyb25tZW50KHZv aWQpCj4gIAo+ICAJaW5pdF9tb2RlX3NldF9kYXRhKCZtc19kYXRhKTsKPiAgCj4gLQlwbV9kYXRh ID0gaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICsJaWd0X3Bt X2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICAKPiAgCWhhc19ydW50aW1l X3BtID0gaWd0X3NldHVwX3J1bnRpbWVfcG0oKTsKPiAgCXNldHVwX3BjOCgpOwo+IEBAIC03NTks NyArNzQyLDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZW52aXJvbm1lbnQodm9pZCkKPiAgCWlndF9p bmZvKCJSdW50aW1lIFBNIHN1cHBvcnQ6ICVkXG4iLCBoYXNfcnVudGltZV9wbSk7Cj4gIAlpZ3Rf aW5mbygiUEM4IHJlc2lkZW5jeSBzdXBwb3J0OiAlZFxuIiwgaGFzX3BjOCk7Cj4gIAlpZ3RfcmVx dWlyZShoYXNfcnVudGltZV9wbSk7Cj4gLQlpZ3RfcmVxdWlyZShkbWNfbG9hZGVkKCkpOwo+ICsJ aWd0X3JlcXVpcmUoaWd0X3BtX2RtY19sb2FkZWQoZGVidWdmcykpOwo+ICAKPiAgb3V0Ogo+ICAJ ZGlzYWJsZV9hbGxfc2NyZWVucygmbXNfZGF0YSk7Cj4gQEAgLTc3Niw4ICs3NTksNyBAQCBzdGF0 aWMgdm9pZCB0ZWFyZG93bl9lbnZpcm9ubWVudCh2b2lkKQo+ICAKPiAgCWlndF9yZXN0b3JlX3J1 bnRpbWVfcG0oKTsKPiAgCj4gLQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudChwbV9kYXRhKTsKPiAtCWZyZWUocG1fZGF0YSk7Cj4gKwlpZ3RfcG1fcmVzdG9yZV9zYXRh X2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICAKPiAgCWZpbmlfbW9kZV9zZXRfZGF0YSgmbXNf ZGF0YSk7Cj4gIAo+IC0tIAo+IDIuMjEuMAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=