From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 970C16ECAC for ; Fri, 23 Aug 2019 14:26:42 +0000 (UTC) Date: Fri, 23 Aug 2019 17:25:40 +0300 From: Imre Deak Message-ID: <20190823142540.GF26896@ideak-desk.fi.intel.com> References: <20190814173904.4279-1-anshuman.gupta@intel.com> <20190816102734.26929-1-anshuman.gupta@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190816102734.26929-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: T24gRnJpLCBBdWcgMTYsIDIwMTkgYXQgMDM6NTc6MzRQTSArMDUzMCwgQW5zaHVtYW4gR3VwdGEg 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 ICAgICAgIHwgMjEwICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICBsaWIvaWd0 X3BtLmggICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgdGVzdHMvaTkxNS9pOTE1X3BtX2Jh Y2tsaWdodC5jIHwgICA2ICstCj4gIHRlc3RzL2k5MTUvaTkxNV9wbV9ycG0uYyAgICAgICB8ICAy NCArLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmMgYi9saWIvaWd0X3BtLmMKPiBpbmRl eCBmZDIyMjczYS4uYjkxYTBmOTYgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9wbS5jCj4gKysrIGIv bGliL2lndF9wbS5jCj4gQEAgLTM4LDYgKzM4LDcgQEAKPiAgI2luY2x1ZGUgImRybXRlc3QuaCIK PiAgI2luY2x1ZGUgImlndF9wbS5oIgo+ICAjaW5jbHVkZSAiaWd0X2F1eC5oIgo+ICsjaW5jbHVk ZSAiaWd0X3N5c2ZzLmgiCj4gIAo+ICAvKioKPiAgICogU0VDVElPTjppZ3RfcG0KPiBAQCAtNjMs MTEgKzY0LDE2IEBAIGVudW0gewo+ICAjZGVmaW5lIE1JTl9QT1dFUl9TVFIJCSJtaW5fcG93ZXJc biIKPiAgLyogUmVtZW1iZXIgdG8gZml4IHRoaXMgaWYgYWRkaW5nIGxvbmdlciBzdHJpbmdzICov Cj4gICNkZWZpbmUgTUFYX1BPTElDWV9TVFJMRU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIp Cj4gK2ludDhfdCAqX19zYXRhX3BtX3BvbGljaWVzOwo+ICtpbnQgX19zY3NpX2hvc3RfY250Owo+ ICAKPiAgc3RhdGljIGNoYXIgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9wb3dlcl9zYXZlWzY0XTsK PiAgc3RhdGljIGNoYXIgKiBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2xfcGF0aDsKPiAg c3RhdGljIGNoYXIgX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sWzY0XTsKPiAgCj4gK3N0 YXRpYyB2b2lkIF9faWd0X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIoaW50IHNpZyk7Cj4g K3N0YXRpYyB2b2lkIF9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo dm9pZCk7Cj4gKwo+ICBzdGF0aWMgaW50IF9faWd0X3BtX2F1ZGlvX3Jlc3RvcmVfcnVudGltZV9w bSh2b2lkKQo+ICB7Cj4gIAlpbnQgZmQ7Cj4gQEAgLTI4MCwzOSArMjg2LDI2IEBAIHZvaWQgaWd0 X3BtX2VuYWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpCj4gIAkJaWd0X2RlYnVnKCJGYWlsZWQg dG8gZW5hYmxlIGF1ZGlvIHJ1bnRpbWUgUE0hICglZClcbiIsIC1lcnIpOwo+ICB9Cj4gIAo+IC0v KioKPiAtICogaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudDoKPiAtICoK PiAtICogRW5hYmxlIHRoZSBtaW5fcG93ZXIgcG9saWN5IGZvciBTQVRBIGxpbmsgcG93ZXIgbWFu YWdlbWVudC4KPiAtICogV2l0aG91dCB0aGlzIHdlIGNhbm5vdCByZWFjaCBkZWVwIHJ1bnRpbWUg cG93ZXIgc3RhdGVzLgo+IC0gKgo+IC0gKiBXZSBkb24ndCBoYXZlIGFueSBhc3NlcnRpb25zIG9u IG9wZW4gc2luY2UgdGhlIHN5c3RlbSBtaWdodCBub3QgaGF2ZQo+IC0gKiBhIFNBVEEgaG9zdC4K PiAtICoKPiAtICogUmV0dXJuczoKPiAtICogQW4gb3BhcXVlIHBvaW50ZXIgdG8gdGhlIGRhdGEg bmVlZGVkIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgdmFsdWVzCj4gLSAqIGFmdGVyIHRoZSB0ZXN0 IGhhcyB0ZXJtaW5hdGVkLCBvciBOVUxMIGlmIFNBVEEgbGluayBwb3dlciBtYW5hZ2VtZW50Cj4g LSAqIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgd2hlbiBu byBsb25nZXIgdXNlZAo+IC0gKiAodHlwaWNhbGx5IGFmdGVyIGhhdmluZyBjYWxsZWQgcmVzdG9y ZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpKS4KPiAtICovCj4gLWludDhfdCAqaWd0X3Bt X2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ICtzdGF0aWMgdm9pZCBf X2lndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKPiAgewo+ICAJ aW50IGZkLCBpOwo+ICAJc3NpemVfdCBsZW47Cj4gIAljaGFyICpidWY7Cj4gIAljaGFyICpmaWxl X25hbWU7Cj4gLQlpbnQ4X3QgKmxpbmtfcG1fcG9saWNpZXMgPSBOVUxMOwo+ICsJaW50OF90IHBv bGljeTsKPiAgCj4gIAlmaWxlX25hbWUgPSBtYWxsb2MoUEFUSF9NQVgpOwo+ICAJYnVmID0gbWFs bG9jKE1BWF9QT0xJQ1lfU1RSTEVOICsgMSk7Cj4gIAo+IC0JZm9yIChpID0gMDsgOyBpKyspIHsK PiAtCQlpbnQ4X3QgcG9saWN5Owo+IC0KPiArCWZvciAoX19zY3NpX2hvc3RfY250ID0gMDsgOyBf X3Njc2lfaG9zdF9jbnQrKykgewo+ICAJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFUSF9NQVgsCj4g IAkJCSAiL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFuYWdlbWVudF9w b2xpY3kiLAo+IC0JCQkgaSk7Cj4gKwkJCSBfX3Njc2lfaG9zdF9jbnQpOwo+ICAKPiArCQkvKgo+ ICsJCSAqIFdlIGRvbid0IGhhdmUgYW55IGFzc2VydGlvbnMgb24gb3BlbiBzaW5jZSB0aGUgc3lz dGVtCj4gKwkJICogbWlnaHQgbm90IGhhdmUgYSBTQVRBIGhvc3QuCj4gKwkJICovCj4gIAkJZmQg PSBvcGVuKGZpbGVfbmFtZSwgT19SRFdSKTsKPiAgCQlpZiAoZmQgPCAwKQo+ICAJCQlicmVhazsK PiBAQCAtMzMyLDEyICszMjUsMjYgQEAgaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19w b3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gIAkJZWxzZQo+ICAJCQlwb2xpY3kgPSBQT0xJQ1lfVU5L Tk9XTjsKPiAgCj4gLQkJaWYgKCEoaSAlIDI1NikpCj4gLQkJCWxpbmtfcG1fcG9saWNpZXMgPSBy ZWFsbG9jKGxpbmtfcG1fcG9saWNpZXMsCj4gLQkJCQkJCSAgIChpIC8gMjU2ICsgMSkgKiAyNTYg KyAxKTsKPiArCQlpZiAoIShfX3Njc2lfaG9zdF9jbnQgJSAyNTYpKQo+ICsJCQlfX3NhdGFfcG1f cG9saWNpZXMgPSByZWFsbG9jKF9fc2F0YV9wbV9wb2xpY2llcywKPiArCQkJCQkJICAgICAoX19z Y3NpX2hvc3RfY250IC8gMjU2ICsgMSkKPiArCQkJCQkJICAgICAqIDI1NiArIDEpOwo+ICAKPiAt CQlsaW5rX3BtX3BvbGljaWVzW2ldID0gcG9saWN5Owo+IC0JCWxpbmtfcG1fcG9saWNpZXNbaSAr IDFdID0gMDsKPiArCQlfX3NhdGFfcG1fcG9saWNpZXNbX19zY3NpX2hvc3RfY250XSA9IHBvbGlj eTsKPiArCQljbG9zZShmZCk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVy KF9faWd0X3BtX3NhdGFfbGlua19wbV9leGl0X2hhbmRsZXIpOwo+ICsKPiArCWZvciAoaSA9IDA7 IGkgPCBfX3Njc2lfaG9zdF9jbnQ7IGkrKykgewo+ICsJCXNucHJpbnRmKGZpbGVfbmFtZSwgUEFU SF9NQVgsCj4gKwkJCSAiL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCVkL2xpbmtfcG93ZXJfbWFu YWdlbWVudF9wb2xpY3kiLAo+ICsJCQkgaSk7Cj4gKwkJZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19S RFdSKTsKPiArCQlpZiAoZmQgPCAwKQo+ICsJCQlicmVhazsKPiArCj4gKwkJcG9saWN5ID0gX19z YXRhX3BtX3BvbGljaWVzW2ldOwo+ICAKPiAgCQkvKiBJZiB0aGUgcG9saWN5IGlzIHNvbWV0aGlu ZyB3ZSBkb24ndCBrbm93IGFib3V0LAo+ICAJCSAqIGRvbid0IHRvdWNoIGl0LCBzaW5jZSB3ZSBt aWdodCBwb3RlbnRpYWxseSBicmVhayB0aGluZ3MuCj4gQEAgLTM1NSwzOSArMzYyLDI1IEBAIGlu dDhfdCAqaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCh2b2lkKQo+ICAJ fQo+ICAJZnJlZShidWYpOwo+ICAJZnJlZShmaWxlX25hbWUpOwo+IC0KPiAtCXJldHVybiBsaW5r X3BtX3BvbGljaWVzOwo+ICB9Cj4gIAo+IC0vKioKPiAtICogaWd0X3BtX3Jlc3RvcmVfc2F0YV9s aW5rX3Bvd2VyX21hbmFnZW1lbnQ6Cj4gLSAqIEBwbV9kYXRhOiBBbiBvcGFxdWUgcG9pbnRlciB3 aXRoIHNhdmVkIGxpbmsgUE0gcG9saWNpZXM7Cj4gLSAqICAgICAgICAgICBJZiBOVUxMIGlzIHBh c3NlZCB3ZSBmb3JjZSBlbmFibGUgdGhlICJtYXhfcGVyZm9ybWFuY2UiIHBvbGljeS4KPiAtICoK PiAtICogUmVzdG9yZSB0aGUgbGluayBwb3dlciBtYW5hZ2VtZW50IHBvbGljaWVzIHRvIHRoZSB2 YWx1ZXMKPiAtICogcHJpb3IgdG8gZW5hYmxpbmcgbWluX3Bvd2VyLgo+IC0gKgo+IC0gKiBDYXZl YXQ6IElmIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1Z2dpbmcgYW5kIGhvdHBsdWdnaW5nIHRh a2VzCj4gLSAqICAgICAgICAgcGxhY2UgZHVyaW5nIG91ciB0ZXN0aW5nIHNvIHRoYXQgdGhlIGhv c3RzIGNoYW5nZSBudW1iZXJzCj4gLSAqICAgICAgICAgd2UgbWlnaHQgcmVzdG9yZSB0aGUgc2V0 dGluZ3MgdG8gdGhlIHdyb25nIGhvc3RzLgo+IC0gKi8KPiAtdm9pZCBpZ3RfcG1fcmVzdG9yZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2RhdGEpCj4gLQo+ICtzdGF0aWMg dm9pZCBfX2lndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4g IHsKPiAgCWludCBmZCwgaTsKPiAgCWNoYXIgKmZpbGVfbmFtZTsKPiAgCj4gKwlpZiAoIV9fc2F0 YV9wbV9wb2xpY2llcykKPiArCQlyZXR1cm47Cj4gKwo+ICAJLyogRGlzayBydW50aW1lIFBNIHBv bGljaWVzLiAqLwo+ICAJZmlsZV9uYW1lID0gbWFsbG9jKFBBVEhfTUFYKTsKPiAtCWZvciAoaSA9 IDA7IDsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgX19zY3NpX2hvc3RfY250OyBpKyspIHsK PiAgCQlpbnQ4X3QgcG9saWN5Owo+ICAKPiAtCQlpZiAoIXBtX2RhdGEpCj4gLQkJCXBvbGljeSA9 IFBPTElDWV9NQVhfUEVSRk9STUFOQ0U7Cj4gLQkJZWxzZSBpZiAocG1fZGF0YVtpXSA9PSBQT0xJ Q1lfVU5LTk9XTikKPiArCQlpZiAoX19zYXRhX3BtX3BvbGljaWVzW2ldID09IFBPTElDWV9VTktO T1dOKQo+ICAJCQljb250aW51ZTsKPiAgCQllbHNlCj4gLQkJCXBvbGljeSA9IHBtX2RhdGFbaV07 Cj4gKwkJCXBvbGljeSA9IF9fc2F0YV9wbV9wb2xpY2llc1tpXTsKPiAgCj4gIAkJc25wcmludGYo ZmlsZV9uYW1lLCBQQVRIX01BWCwKPiAgCQkJICIvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0JWQv bGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGljeSIsCj4gQEAgLTQyMSw3ICs0MTQsNDkgQEAgdm9p ZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudChpbnQ4X3QgKnBtX2Rh dGEpCj4gIAkJY2xvc2UoZmQpOwo+ICAJfQo+ICAJZnJlZShmaWxlX25hbWUpOwo+ICsJZnJlZShf X3NhdGFfcG1fcG9saWNpZXMpOwo+ICsJX19zYXRhX3BtX3BvbGljaWVzID0gTlVMTDsKPiAgfQo+ ICsKPiArLyoqCj4gKyAqIGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQ6 Cj4gKyAqCj4gKyAqIEVuYWJsZSB0aGUgbWluX3Bvd2VyIHBvbGljeSBmb3IgU0FUQSBsaW5rIHBv d2VyIG1hbmFnZW1lbnQuCj4gKyAqIFdpdGhvdXQgdGhpcyB3ZSBjYW5ub3QgcmVhY2ggZGVlcCBy dW50aW1lIHBvd2VyIHN0YXRlcy4KPiArICogUmV0dXJuczogVm9pZAoKTm8gbmVlZCBmb3IgYSBj b21tZW50IG9uIHZvaWQgcmV0dXJucy4KCj4gKyAqLwo+ICt2b2lkIGlndF9wbV9lbmFibGVfc2F0 YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQodm9pZCkKPiArewo+ICsJLyogQ2hlY2sgaWYgaGFzIGJl ZW4gYWxyZWFkeSBzYXZlZC4gKi8KPiArCWlmIChfX3NhdGFfcG1fcG9saWNpZXMpCj4gKwkJcmV0 dXJuOwo+ICsKPiArCSBfX2lndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQo KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9t YW5hZ2VtZW50Ogo+ICsgKgo+ICsgKiBSZXN0b3JlIHRoZSBsaW5rIHBvd2VyIG1hbmFnZW1lbnQg cG9saWNpZXMgdG8gdGhlIHZhbHVlcwo+ICsgKiBwcmlvciB0byBlbmFibGluZyBtaW5fcG93ZXIu Cj4gKyAqCj4gKyAqIENhdmVhdDogSWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBob3RwbHVnZ2luZyBh bmQgaG90cGx1Z2dpbmcgdGFrZXMKPiArICogICAgICAgICBwbGFjZSBkdXJpbmcgb3VyIHRlc3Rp bmcgc28gdGhhdCB0aGUgaG9zdHMgY2hhbmdlIG51bWJlcnMKPiArICogICAgICAgICB3ZSBtaWdo dCByZXN0b3JlIHRoZSBzZXR0aW5ncyB0byB0aGUgd3JvbmcgaG9zdHMuCj4gKyAqLwo+ICt2b2lk IGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZvaWQpCj4gK3sKPiAr CWlmICghX19zYXRhX3BtX3BvbGljaWVzKQo+ICsJCXJldHVybjsKPiArCj4gKwkgX19pZ3RfcG1f cmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBfX2lndF9wbV9zYXRhX2xpbmtfcG1fZXhpdF9oYW5kbGVyKGludCBzaWcpCj4gK3sKPiAr CV9faWd0X3BtX3Jlc3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiArfQo+ICsK PiAgI2RlZmluZSBQT1dFUl9ESVIgIi9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDIu MC9wb3dlciIKPiAgLyogV2UganVzdCBsZWFrIHRoaXMgb24gZXhpdCAuLi4gKi8KPiAgaW50IHBt X3N0YXR1c19mZCA9IC0xOwo+IEBAIC01ODUsNiArNjIwLDYxIEBAIGJvb2wgaWd0X3NldHVwX3J1 bnRpbWVfcG0odm9pZCkKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ICtib29sIGlndF9kaXNh YmxlX3J1bnRpbWVfcG0odm9pZCkKPiArewo+ICsJaW50IGZkOwo+ICsJc3NpemVfdCBzaXplOwo+ ICsJY2hhciBidWZbNl07Cj4gKwo+ICsJaWYgKHBtX3N0YXR1c19mZCA8IDApIHsKPiArCQlmZCA9 IG9wZW4oUE9XRVJfRElSICIvYXV0b3N1c3BlbmRfZGVsYXlfbXMiLCBPX1JEV1IpOwo+ICsJCWlm IChmZCA8IDApCj4gKwkJCXJldHVybiBmYWxzZTsKPiArCj4gKwkJc2l6ZSA9IHJlYWQoZmQsIF9f aWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQsCj4gKwkJCSAgICBzaXplb2YoX19pZ3RfcG1fcnVu dGltZV9hdXRvc3VzcGVuZCkpOwo+ICsKPiArCQlpZiAoc2l6ZSA8PSAwKSB7Cj4gKwkJCWNsb3Nl KGZkKTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0KPiArCj4gKwkJc3RyY2hvbXAoX19pZ3Rf cG1fcnVudGltZV9hdXRvc3VzcGVuZCk7Cj4gKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9f aWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsKPiArCQljbG9zZShmZCk7Cj4gKwl9Cj4gKwo+ ICsJLyogV2Uga25vdyB3ZSBzdXBwb3J0IHJ1bnRpbWUgUE0sIGxldCdzIHRyeSB0byBkaXNhYmxl IGl0IG5vdy4gKi8KPiArCWZkID0gb3BlbihQT1dFUl9ESVIgIi9jb250cm9sIiwgT19SRFdSKTsK PiArCWlndF9hc3NlcnRfZihmZCA+PSAwLCAiQ2FuJ3Qgb3BlbiAiIFBPV0VSX0RJUiAiL2NvbnRy b2xcbiIpOwo+ICsKPiArCWlmIChwbV9zdGF0dXNfZmQgPCAwKSB7Cj4gKwkJaWd0X2Fzc2VydChy ZWFkKGZkLCBfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wsCj4gKwkJCQlzaXplb2YoX19pZ3RfcG1f cnVudGltZV9jb250cm9sKSkgPiAwKTsKPiArCQlzdHJjaG9tcChfX2lndF9wbV9ydW50aW1lX2Nv bnRyb2wpOwo+ICsKPiArCQlpZ3RfZGVidWcoIlNhdmVkIHJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVu dCBhcyAnJXMnIGFuZCAnJXMnXG4iLAo+ICsJCQkgIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3Bl bmQsCj4gKwkJCSAgX19pZ3RfcG1fcnVudGltZV9jb250cm9sKTsKPiArCX0KCldlIHJlcXVpcmUg dG8gY2FsbCBpZ3Rfc2V0dXBfcnVudGltZV9wbSgpIGJlZm9yZQppZ3RfZGlzYWJsZV9ydW50aW1l X3BtKCksIHNvIHRoZSBvcmlnaW5hbCBzdGF0ZSB3aWxsIGJlIHNhdmVkIGF3YXkKYWxyZWFkeSwg c28gaW5zdGVhZCBvZiB0aGUgYWJvdmUgZHVwbGljYXRpb24gb2Ygc2F2aW5nIHRoZSBzdGF0ZSB3 ZQpzaG91bGQganVzdCBpZ3RfYXNzZXJ0KHBtX3N0YXR1c19mZCA+PSAwKTsKCj4gKwo+ICsJc2l6 ZSA9IHdyaXRlKGZkLCAib25cbiIsIDMpOwo+ICsJaWd0X2Fzc2VydChzaXplID09IDMpOwo+ICsJ bHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKPiArCXNpemUgPSByZWFkKGZkLCBidWYsIEFSUkFZX1NJ WkUoYnVmKSk7Cj4gKwlpZ3RfYXNzZXJ0KHNpemUgPT0gMyk7Cj4gKwlpZ3RfYXNzZXJ0KHN0cm5j bXAoYnVmLCAib25cbiIsIDMpID09IDApOwo+ICsJY2xvc2UoZmQpOwo+ICsKPiArCWlmIChwbV9z dGF0dXNfZmQgPCAwKSB7Cj4gKwkJcG1fc3RhdHVzX2ZkID0gb3BlbihQT1dFUl9ESVIgIi9ydW50 aW1lX3N0YXR1cyIsIE9fUkRPTkxZKTsKPiArCQlpZ3RfYXNzZXJ0X2YocG1fc3RhdHVzX2ZkID49 IDAsCj4gKwkJCSAgICAgIkNhbid0IG9wZW4gIiBQT1dFUl9ESVIgIi9ydW50aW1lX3N0YXR1c1xu Iik7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBpZ3Rf Z2V0X3J1bnRpbWVfcG1fc3RhdHVzOgo+ICAgKgo+IEBAIC02MjgsMyArNzE4LDI5IEBAIGJvb2wg aWd0X3dhaXRfZm9yX3BtX3N0YXR1cyhlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBzdGF0dXMp Cj4gIHsKPiAgCXJldHVybiBpZ3Rfd2FpdChpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKCkgPT0g c3RhdHVzLCAxMDAwMCwgMTAwKTsKPiAgfQo+ICsKPiArLyoqCj4gKyAqIGRtY19sb2FkZWQ6Cj4g KyAqIEBkZWJ1Z2ZzOiBmZCB0byB0aGUgZGVidWdmcyBkaXIuCj4gKwo+ICsgKiBDaGVjayB3aGV0 aGVyIERNQyBGVyBpcyBsb2FkZWQgb3Igbm90LiBETUMgRlcgaXMgcmVxdWlyZSBmb3IgZmV3IERp c3BsYXkgQwo+ICsgKiBzdGF0ZXMgbGlrZSBEQzUgYW5kIERDNi4gRlcgZG9lcyB0aGUgQ29udGV4 dCBTYXZlIGFuZCBSZXN0b3JlIGR1cmluZyBEaXNwbGF5Cj4gKyAqIEMgU3RhdGVzIGVudHJ5IGFu ZCBleGl0Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUcnVlIGlmIERNQyBGVyBpcyBsb2Fk ZWQgb3RoZXJ3aXNlIGZhbHNlLgo+ICsgKi8KPiArYm9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQg ZGVidWdmcykKPiArewo+ICsJY2hhciBidWZbMTVdOwo+ICsJaW50IGxlbjsKPiArCj4gKwlsZW4g PSBpZ3Rfc3lzZnNfcmVhZChkZWJ1Z2ZzLCAiaTkxNV9kbWNfaW5mbyIsIGJ1Ziwgc2l6ZW9mKGJ1 ZikgLSAxKTsKPiArCWlmIChsZW4gPCAwKQo+ICsJCXJldHVybiB0cnVlOyAvKiBubyBDU1Igc3Vw cG9ydCwgbm8gRE1DIHJlcXVpcmVtZW50ICovCj4gKwo+ICsJYnVmW2xlbl0gPSAnXDAnOwo+ICsK PiArCWlndF9pbmZvKCJETUM6ICVzXG4iLCBidWYpOwo+ICsJcmV0dXJuIHN0cnN0cihidWYsICJm dyBsb2FkZWQ6IHllcyIpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcG0uaCBiL2xpYi9p Z3RfcG0uaAo+IGluZGV4IDEwY2M2Nzk0Li45NzliMzQ2MyAxMDA2NDQKPiAtLS0gYS9saWIvaWd0 X3BtLmgKPiArKysgYi9saWIvaWd0X3BtLmgKPiBAQCAtMjUsOCArMjUsOCBAQAo+ICAjZGVmaW5l IElHVF9QTV9ICj4gIAo+ICB2b2lkIGlndF9wbV9lbmFibGVfYXVkaW9fcnVudGltZV9wbSh2b2lk KTsKPiAtaW50OF90ICppZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KHZv aWQpOwo+IC12b2lkIGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KGlu dDhfdCAqcG1fZGF0YSk7Cj4gK3ZvaWQgaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudCh2b2lkKTsKPiArdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudCh2b2lkKTsKPiAgCj4gIC8qKgo+ICAgKiBpZ3RfcnVudGltZV9wbV9zdGF0dXM6Cj4g QEAgLTQ3LDggKzQ3LDEwIEBAIGVudW0gaWd0X3J1bnRpbWVfcG1fc3RhdHVzIHsKPiAgfTsKPiAg Cj4gIGJvb2wgaWd0X3NldHVwX3J1bnRpbWVfcG0odm9pZCk7Cj4gK2Jvb2wgaWd0X2Rpc2FibGVf cnVudGltZV9wbSh2b2lkKTsKPiAgdm9pZCBpZ3RfcmVzdG9yZV9ydW50aW1lX3BtKHZvaWQpOwo+ ICBlbnVtIGlndF9ydW50aW1lX3BtX3N0YXR1cyBpZ3RfZ2V0X3J1bnRpbWVfcG1fc3RhdHVzKHZv aWQpOwo+ICBib29sIGlndF93YWl0X2Zvcl9wbV9zdGF0dXMoZW51bSBpZ3RfcnVudGltZV9wbV9z dGF0dXMgc3RhdHVzKTsKPiArYm9vbCBpZ3RfcG1fZG1jX2xvYWRlZChpbnQgZGVidWdmcyk7Cj4g IAo+ICAjZW5kaWYgLyogSUdUX1BNX0ggKi8KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1 X3BtX2JhY2tsaWdodC5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCj4gaW5kZXgg NGMxYmZmNWIuLjlhNWY0YzM3IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNr bGlnaHQuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+IEBAIC00Nyw3 ICs0Nyw2IEBAIHN0cnVjdCBjb250ZXh0IHsKPiAgI2RlZmluZSBGQURFU1BFRUQgMTAwIC8qIG1p bGxpc2Vjb25kcyBiZXR3ZWVuIHN0ZXBzICovCj4gIAo+ICBJR1RfVEVTVF9ERVNDUklQVElPTigi QmFzaWMgYmFja2xpZ2h0IHN5c2ZzIHRlc3QiKTsKPiAtc3RhdGljIGludDhfdCAqcG1fZGF0YSA9 IE5VTEw7Cj4gIAo+ICBzdGF0aWMgaW50IGJhY2tsaWdodF9yZWFkKGludCAqcmVzdWx0LCBjb25z dCBjaGFyICpmbmFtZSkKPiAgewo+IEBAIC0yMzUsNyArMjM0LDcgQEAgaWd0X21haW4KPiAgCQlp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7Cj4gIAo+ICAJCWlndF9kaXNwbGF5X2NvbW1p dDIoJmRpc3BsYXksIGRpc3BsYXkuaXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9M RUdBQ1kpOwo+IC0JCXBtX2RhdGEgPSBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5h Z2VtZW50KCk7Cj4gKwkJaWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgp Owo+ICAJfQo+ICAKPiAgCWlndF9zdWJ0ZXN0KCJiYXNpYy1icmlnaHRuZXNzIikKPiBAQCAtMjU1 LDggKzI1NCw3IEBAIGlndF9tYWluCj4gIAo+ICAJCWlndF9kaXNwbGF5X2ZpbmkoJmRpc3BsYXkp Owo+ICAJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5kcm1fZmQsICZmYik7Cj4gLQkJaWd0X3BtX3Jl c3RvcmVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQocG1fZGF0YSk7Cj4gLQkJZnJlZShwbV9k YXRhKTsKPiArCQlpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ ICAJCWNsb3NlKGRpc3BsYXkuZHJtX2ZkKTsKPiAgCX0KPiAgfQo+IGRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2k5MTVfcG1fcnBtLmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMKPiBpbmRleCAy MTY4ZmY3Mi4uNjg3OWM1MTMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5j Cj4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCj4gQEAgLTEyMyw4ICsxMjMsNiBAQCBz dHJ1Y3QgbW9kZXNldF9wYXJhbXMgbHBzcF9tb2RlX3BhcmFtczsKPiAgc3RydWN0IG1vZGVzZXRf cGFyYW1zIG5vbl9scHNwX21vZGVfcGFyYW1zOwo+ICBzdHJ1Y3QgbW9kZXNldF9wYXJhbXMgKmRl ZmF1bHRfbW9kZV9wYXJhbXM7Cj4gIAo+IC1zdGF0aWMgaW50OF90ICpwbV9kYXRhID0gTlVMTDsK PiAtCj4gIHN0YXRpYyBpbnQgbW9kcHJvYmUoY29uc3QgY2hhciAqZHJpdmVyKQo+ICB7Cj4gIAly ZXR1cm4gaWd0X2ttb2RfbG9hZChkcml2ZXIsIE5VTEwpOwo+IEBAIC03NTUsMjEgKzc1Myw2IEBA IHN0YXRpYyB2b2lkIHNldHVwX3BjOCh2b2lkKQo+ICAJaGFzX3BjOCA9IHRydWU7Cj4gIH0KPiAg Cj4gLXN0YXRpYyBib29sIGRtY19sb2FkZWQodm9pZCkKPiAtewo+IC0JY2hhciBidWZbMTVdOwo+ IC0JaW50IGxlbjsKPiAtCj4gLQlsZW4gPSBpZ3Rfc3lzZnNfcmVhZChkZWJ1Z2ZzLCAiaTkxNV9k bWNfaW5mbyIsIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKPiAtCWlmIChsZW4gPCAwKQo+IC0JICAg IHJldHVybiB0cnVlOyAvKiBubyBDU1Igc3VwcG9ydCwgbm8gRE1DIHJlcXVpcmVtZW50ICovCj4g LQo+IC0JYnVmW2xlbl0gPSAnXDAnOwo+IC0KPiAtCWlndF9pbmZvKCJETUM6ICVzXG4iLCBidWYp Owo+IC0JcmV0dXJuIHN0cnN0cihidWYsICJmdyBsb2FkZWQ6IHllcyIpOwo+IC19Cj4gLQo+ICBz dGF0aWMgdm9pZCBkdW1wX2ZpbGUoaW50IGRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCj4gIHsK PiAgCWNoYXIgKmNvbnRlbnRzOwo+IEBAIC03OTYsNyArNzc5LDcgQEAgc3RhdGljIGJvb2wgc2V0 dXBfZW52aXJvbm1lbnQodm9pZCkKPiAgCj4gIAlpbml0X21vZGVfc2V0X2RhdGEoJm1zX2RhdGEp Owo+ICAKPiAtCXBtX2RhdGEgPSBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2Vt ZW50KCk7Cj4gKwlpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4g IAo+ICAJaGFzX3J1bnRpbWVfcG0gPSBpZ3Rfc2V0dXBfcnVudGltZV9wbSgpOwo+ICAJc2V0dXBf cGM4KCk7Cj4gQEAgLTgwNCw3ICs3ODcsNyBAQCBzdGF0aWMgYm9vbCBzZXR1cF9lbnZpcm9ubWVu dCh2b2lkKQo+ICAJaWd0X2luZm8oIlJ1bnRpbWUgUE0gc3VwcG9ydDogJWRcbiIsIGhhc19ydW50 aW1lX3BtKTsKPiAgCWlndF9pbmZvKCJQQzggcmVzaWRlbmN5IHN1cHBvcnQ6ICVkXG4iLCBoYXNf cGM4KTsKPiAgCWlndF9yZXF1aXJlKGhhc19ydW50aW1lX3BtKTsKPiAtCWlndF9yZXF1aXJlKGRt Y19sb2FkZWQoKSk7Cj4gKwlpZ3RfcmVxdWlyZShpZ3RfcG1fZG1jX2xvYWRlZChkZWJ1Z2ZzKSk7 Cj4gIAo+ICBvdXQ6Cj4gIAlkaXNhYmxlX2FsbF9zY3JlZW5zKCZtc19kYXRhKTsKPiBAQCAtODIx LDggKzgwNCw3IEBAIHN0YXRpYyB2b2lkIHRlYXJkb3duX2Vudmlyb25tZW50KHZvaWQpCj4gIAo+ ICAJaWd0X3Jlc3RvcmVfcnVudGltZV9wbSgpOwo+ICAKPiAtCWlndF9wbV9yZXN0b3JlX3NhdGFf bGlua19wb3dlcl9tYW5hZ2VtZW50KHBtX2RhdGEpOwo+IC0JZnJlZShwbV9kYXRhKTsKPiArCWln dF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gIAo+ICAJZmluaV9t b2RlX3NldF9kYXRhKCZtc19kYXRhKTsKPiAgCj4gLS0gCj4gMi4yMS4wCj4gCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==