From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH] Idleness DRRS: Date: Tue, 19 Sep 2017 16:16:49 +0530 Message-ID: <56148561-ac0b-02a9-797d-ab60469aeece@intel.com> References: <1505724732-17529-1-git-send-email-lohith.bs@intel.com> <20170918195433.bowiuyjxdpjgrbai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5C9C36E0FD for ; Tue, 19 Sep 2017 10:48:35 +0000 (UTC) In-Reply-To: <20170918195433.bowiuyjxdpjgrbai@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi , intel-gfx@lists.freedesktop.org, daniel.vetter@ffwll.ch, chris@chris-wilson.co.uk Cc: ankit.k.nautiyal@intel.com, paulo.r.zanoni@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiBUdWVzZGF5IDE5IFNlcHRlbWJlciAyMDE3IDAxOjI0IEFNLCBSb2RyaWdvIFZpdmkgd3Jv dGU6Cj4gT24gTW9uLCBTZXAgMTgsIDIwMTcgYXQgMDg6NTI6MTJBTSArMDAwMCwgIHdyb3RlOgo+ PiBGcm9tOiBMb2hpdGggQlMgPGxvaGl0aC5ic0BpbnRlbC5jb20+Cj4+Cj4+IAlCeSBkZWZhdWx0 IHRoZSBEUlJTIHN0YXRlIHdpbGwgYmUgYXQgRFJSU19ISUdIX1JSLiBXaGVuIGEgRGlzcGxheQo+ PiAJY29udGVudCBpcyBJZGxlIGZvciBtb3JlIHRoYW4gMVNlYyBJZGxlbmVzcyB3aWxsIGJlIGRl Y2xhcmVkIGFuZAo+PiAJRFJSU19MT1dfUlIgd2lsbCBiZSBpbnZva2VkLCBjaGFuZ2luZyB0aGUg cmVmcmVzaCByYXRlIHRvIHRoZQo+PiAJbG93ZXIgbW9zdCByZWZyZXNoIHJhdGUgc3VwcG9ydGVk IGJ5IHRoZSBwYW5lbC4gQXMgc29vbiBhcyB0aGVyZQo+PiAJaXMgYSBkaXNwbGF5IGNvbnRlbnQg Y2hhbmdlIHRoZXJlIHdpbGwgYmUgYSBEUlJTIHN0YXRlIHRyYW5zaXRpb24KPj4gCWFzIERSUlNf TE9XX1JSLS0+IERSUlNfSElHSF9SUiwgY2hhbmdpbmcgdGhlIHJlZnJlc2ggcmF0ZSB0byB0aGUK Pj4gCWhpZ2hlc3QgcmVmcmVzaCByYXRlIHN1cHBvcnRlZCBieSB0aGUgcGFuZWwuCj4+Cj4+IFRv IHRlc3QgdGhpcywgSWRsZW5lc3MgRFJSUyBJR1Qgd2lsbCBwcm9iZSB0aGUgRFJSUyBzdGF0ZSBh dCBiZWxvdwo+PiBpbnN0YW5jZXMgYW5kIGNvbXBhcmUgd2l0aCB0aGUgZXhwZWN0ZWQgc3RhdGUu Cj4+Cj4+IAlJbnN0YW5jZQkJCQkJRXhwZWN0ZWQgU3RhdGUKPj4gMS4gSW1tZWRpYXRlbHkgYWZ0 ZXIgcmVuZGVyaW5nIHRoZSBzdGlsbCBpbWFnZQkJRFJSU19ISUdIX1JSCj4+IDIuIEFmdGVyIGEg ZGVsYXkgb2YgMS4yU2VjCQkJCURSUlNfTE9XX1JSCj4+IDMuIEFmdGVyIGNoYW5naW5nIHRoZSBm cmFtZSBidWZmZXIJCQlEUlJTX0hJR0hfUlIKPj4gNC4gQWZ0ZXIgYSBkZWxheSBvZiAxLjJTZWMJ CQkJRFJSU19MT1dfUlIKPj4gNS4gQWZ0ZXIgY2hhbmdpbmcgdGhlIGZyYW1lIGJ1ZmZlcgkJCURS UlNfSElHSF9SUgo+PiA2LiBBZnRlciBhIGRlbGF5IG9mIDEuMlNlYwkJCQlEUlJTX0xPV19SUgo+ Pgo+PiBUaGUgdGVzdCBjaGVja3MgdGhlIGRyaXZlciBEUlJTIHN0YXRlIGZyb20gdGhlIGRlYnVn ZnMgZW50cnkuIFRvIGNoZWNrIHRoZQo+PiBhY3R1YWwgcmVmcmVzaC1yYXRlLCB0aGUgbnVtYmVy IG9mIHZibGFua3MgcmVjZWl2ZWQgcGVyIHNlYy4KPj4gVGhlIHJlZnJlc2gtcmF0ZSBjYWxjdWxh dGVkIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgZXhwZWN0ZWQgcmVmcmVzaC1yYXRlCj4+IHdpdGgg YSB0b2xlcmFuY2UgdmFsdWUgb2YgMi4KPj4KPj4gVGhpcyBwYXRjaCBpcyBhIGNvbnRpbnVhdGlv biBvZiB0aGUgZWFybGllciB3b3JrCj4+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9y Zy9wYXRjaC80NTQ3Mi8gdG93YXJkcyBpZ3QgZm9yIGlkbGVuZXNzCj4+Cj4+IERSUlMuIFRoZSBj b2RlIGlzIHRlc3RlZCBvbiBCcm94dG9uIEJYVF9UIHBsYXRmb3JtLgo+Pgo+PiB2MjogQWRkcmVz c2VkIHRoZSBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgZnJvbSBWbGFkLCBNYXJpdXMuCj4+IFRo ZSBzaWdub2ZmIGRldGFpbHMgZnJvbSB0aGUgZWFybGllciB3b3JrIGFyZSBhbHNvIGluY2x1ZGVk Lgo+Pgo+PiB2MzogTW9kaWZpZWQgdmJsYW5rIHJhdGUgY2FsY3VsYXRpb24gYnkgdXNpbmcgcmVw bHktc2VxdWVuY2UsIHByb3ZpZGVkIGJ5Cj4+IGRybVdhaXRWQmxhbmssIGFzIHN1Z2dlc3RlZCBi eSBDaHJpcyBXaWxzb24uCj4+Cj4+IHY0OiBBcyBzdWdnZXN0ZWQgZnJvbSBDaHJpcyBXaWxzb24g YW5kIERhbmllbCBWZXR0ZXIKPj4gCTEpIEF2b2lkZWQgdXNpbmcgcHRocmVhZCBmb3IgY2FsY3Vs YXRpbmcgdmJsYW5rIHJlZnJlc2ggcmF0ZSwKPj4gCSAgIGluc3RlYWQgdXNlZCBkcm1XYWl0VkJs YW5rIHJlcGx5IHNlcXVlbmNlLgo+PiAJMikgQXZvaWRlZCB1c2luZyBrZXJuZWwtc3BlY2lmaWMg aW5mbyBsaWtlIHRyYW5zaXRpb25hbCBkZWxheXMsCj4+IAkgICBpbnN0ZWFkIHBvbGxpbmcgbWVj aGFuaXNtIHdpdGggdGltZW91dCBpcyB1c2VkLgo+PiAJMykgSW5jbHVkZWQgZWRwLURSUlMgYXMg YSBzdWJ0ZXN0IGluIGttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jLAo+PiAJICAgaW5zdGVhZCBv ZiBoYXZpbmcgYSBzZXBhcmF0ZSB0ZXN0Lgo+Pgo+PiB2NTogVGhpcyBwYXRjaCBhZGRzIERSUlMg YXMgYSBuZXcgZmVhdHVyZSBpbiB0aGUga21zX2Zyb250YnVmZmVyX3RyYWNraW5nIElHVC4KPj4g ICAgICBEUlJTIHN3aXRjaCB0byBsb3dlciB2cmVmcmVzaCByYXRlIGlzIHRlc3RlZCBhdCBzbG93 LWRyYXcgc3VidGVzdC4KPj4KPj4gCU5vdGU6Cj4+IAkxKSBDdXJyZW50bHkga2VybmVsIGRvZXNu J3QgaGF2ZSBzdXBwb3J0IHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGUgRFJSUwo+PiAJICAgZmVh dHVyZSBkeW5hbWljYWxseShhcyBpbiBjYXNlIG9mIFBTUikuIEhlbmNlIGlmIHRoZSBwYW5lbCBz dXBwb3J0cwo+PiAJICAgRFJSUyBpdCB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KPj4KPj4g CVRoaXMgaXMgaW4gY29udGludWF0aW9uIG9mIGxhc3QgcGF0Y2ggImh0dHBzOi8vcGF0Y2h3b3Jr LmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xNjI3MjYvIgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBMb2hp dGggQlMgPGxvaGl0aC5ic0BpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0g QyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogVmFuZGFuYSBLYW5u YW4gPHZhbmRhbmEua2FubmFuQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogYWtuYXV0aXkg PGFua2l0LmsubmF1dGl5YWxAaW50ZWwuY29tPgo+PiAtLS0KPj4gICB0ZXN0cy9rbXNfZnJvbnRi dWZmZXJfdHJhY2tpbmcuYyB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0KPj4gICAxIGZpbGUgY2hhbmdlZCwgMTUyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pCj4+Cj4+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYyBi L3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4+IGluZGV4IGEwNjhjOGEuLjRmNDQx MDkgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4+ICsr KyBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4+IEBAIC0zNCw3ICszNCw3IEBA Cj4+ICAgCj4+ICAgCj4+ICAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgdGhlIEtlcm5lbCdz IGZyb250YnVmZmVyIHRyYWNraW5nIG1lY2hhbmlzbSBhbmQgIgo+PiAtCQkgICAgICJpdHMgcmVs YXRlZCBmZWF0dXJlczogRkJDIGFuZCBQU1IiKTsKPj4gKwkJICAgICAiaXRzIHJlbGF0ZWQgZmVh dHVyZXM6IEZCQyBEUlJTIGFuZCBQU1IiKTsKPj4gICAKPj4gICAvKgo+PiAgICAqIE9uZSBvZiB0 aGUgYXNwZWN0cyBvZiB0aGlzIHRlc3QgaXMgdGhhdCwgZm9yIGV2ZXJ5IHN1YnRlc3QsIHdlIHRy eSBkaWZmZXJlbnQKPj4gQEAgLTEwNSw4ICsxMDUsOSBAQCBzdHJ1Y3QgdGVzdF9tb2RlIHsKPj4g ICAJCUZFQVRVUkVfTk9ORSAgPSAwLAo+PiAgIAkJRkVBVFVSRV9GQkMgICA9IDEsCj4+ICAgCQlG RUFUVVJFX1BTUiAgID0gMiwKPj4gLQkJRkVBVFVSRV9DT1VOVCA9IDQsCj4+IC0JCUZFQVRVUkVf REVGQVVMVCA9IDQsCj4+ICsJCUZFQVRVUkVfRFJSUyAgPSA0LAo+PiArCQlGRUFUVVJFX0NPVU5U ID0gNiwKPj4gKwkJRkVBVFVSRV9ERUZBVUxUID0gNiwKPj4gICAJfSBmZWF0dXJlOwo+PiAgIAo+ PiAgIAkvKiBQb3NzaWJsZSBwaXhlbCBmb3JtYXRzLiBXZSBqdXN0IHVzZSBGT1JNQVRfREVGQVVM VCBmb3IgbW9zdCB0ZXN0cyBhbmQKPj4gQEAgLTE4MCw2ICsxODEsOSBAQCBzdHJ1Y3Qgewo+PiAg IAlib29sIGNhbl90ZXN0Owo+PiAgIH0gcHNyID0gewo+PiAgIAkuY2FuX3Rlc3QgPSBmYWxzZSwK Pj4gK30sCj4+ICtkcnJzICA9IHsKPj4gKwkuY2FuX3Rlc3QgPSBmYWxzZSwKPj4gICB9Owo+PiAg IAo+PiAgIAo+PiBAQCAtODIyLDYgKzgyNiw1MiBAQCBzdGF0aWMgdm9pZCBwc3JfcHJpbnRfc3Rh dHVzKHZvaWQpCj4+ICAgCWlndF9pbmZvKCJQU1Igc3RhdHVzOlxuJXNcbiIsIGJ1Zik7Cj4+ICAg fQo+PiAgIAo+PiArc3RhdGljIGJvb2wgaXNfZHJyc19oaWdoKHZvaWQpCj4+ICt7Cj4+ICsJY2hh ciBidWZbMjU2XTsKPj4gKwo+PiArCWRlYnVnZnNfcmVhZCgiaTkxNV9kcnJzX3N0YXR1cyIsIGJ1 Zik7Cj4+ICsJcmV0dXJuIHN0cnN0cihidWYsICJEUlJTX0hJR0hfUlIiKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGJvb2wgaXNfZHJyc19sb3codm9pZCkKPj4gK3sKPj4gKwljaGFyIGJ1ZlsyNTZd Owo+PiArCj4+ICsJZGVidWdmc19yZWFkKCJpOTE1X2RycnNfc3RhdHVzIiwgYnVmKTsKPj4gKwly ZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRSUlNfTE9XX1JSIik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBi b29sIGlzX2RycnNfZW5hYmxlZCh2b2lkKQo+PiArewo+PiArCWNoYXIgYnVmWzI1Nl07Cj4+ICsK Pj4gKwlkZWJ1Z2ZzX3JlYWQoImk5MTVfZHJyc19zdGF0dXMiLCBidWYpOwo+PiArCXJldHVybiBz dHJzdHIoYnVmLCAiRFJSUyBTdXBwb3J0ZWQ6IFllcyIpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg Ym9vbCBpc19kcnJzX2luYWN0aXZlKHZvaWQpCj4+ICt7Cj4+ICsJY2hhciBidWZbMjU2XTsKPj4g Kwo+PiArCWRlYnVnZnNfcmVhZCgiaTkxNV9kcnJzX3N0YXR1cyIsIGJ1Zik7Cj4+ICsJcmV0dXJu IHN0cnN0cihidWYsICJObyBhY3RpdmUgY3J0YyBmb3VuZCIpOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBkcnJzX3ByaW50X3N0YXR1cyh2b2lkKQo+PiArewo+PiArCWNoYXIgYnVmWzI1Nl07 Cj4+ICsKPj4gKwlpZiAoaXNfZHJyc19oaWdoKCkpCj4+ICsJCWlndF9pbmZvKCJEUlJTIFNUQVRV UyA6IERSUlMgSElHSFxuIik7Cj4+ICsKPj4gKwlpZiAoaXNfZHJyc19sb3coKSkKPj4gKwkJaWd0 X2luZm8oIkRSUlNfU1RBVFVTIDogRFJSUyBMT1dcbiIpOwo+PiArCj4+ICsJaWYgKGlzX2RycnNf aW5hY3RpdmUoKSkKPj4gKwkJaWd0X2luZm8oIkRSUlNfU1RBVFVTIDogRFJSUyBESVNBQkxFRFxu Iik7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgc3RydWN0IHRpbWVzcGVjIGZiY19nZXRfbGFzdF9h Y3Rpb24odm9pZCkKPj4gICB7Cj4+ICAgCXN0cnVjdCB0aW1lc3BlYyByZXQgPSB7IDAsIDAgfTsK Pj4gQEAgLTE1NzUsNiArMTYyNSwyNSBAQCBzdGF0aWMgdm9pZCB0ZWFyZG93bl9wc3Iodm9pZCkK Pj4gICB7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIHZvaWQgc2V0dXBfZHJycyh2b2lkKQo+PiAr ewo+PiArCWlmIChnZXRfY29ubmVjdG9yKHByaW1fbW9kZV9wYXJhbXMuY29ubmVjdG9yX2lkKS0+ Y29ubmVjdG9yX3R5cGUgIT0KPj4gKwkJCURSTV9NT0RFX0NPTk5FQ1RPUl9lRFApIHsKPj4gKwkJ aWd0X2luZm8oIkNhbid0IHRlc3QgRFJSUzogbm8gdXNhYmxlIGVEUCBzY3JlZW4uXG4iKTsKPj4g KwkJcmV0dXJuOwo+PiArCX0KPj4gKwo+PiArCWlmICghaXNfZHJyc19lbmFibGVkKCkpIHsKPj4g KwkJaWd0X2luZm8oIkNhbid0IHRlc3QgRFJSUzogbm90IHN1cHBvcnRlZCBpbiB0aGUgZHJpdmVy LlxuIik7Cj4+ICsJCXJldHVybjsKPj4gKwl9Cj4+ICsJZHJycy5jYW5fdGVzdCA9IHRydWU7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHRlYXJkb3duX2RycnModm9pZCkKPj4gK3sKPj4gK30K Pj4gKwo+PiAgIHN0YXRpYyB2b2lkIHNldHVwX2Vudmlyb25tZW50KHZvaWQpCj4+ICAgewo+PiAg IAlzZXR1cF9kcm0oKTsKPj4gQEAgLTE1ODIsNyArMTY1MSw3IEBAIHN0YXRpYyB2b2lkIHNldHVw X2Vudmlyb25tZW50KHZvaWQpCj4+ICAgCj4+ICAgCXNldHVwX2ZiYygpOwo+PiAgIAlzZXR1cF9w c3IoKTsKPj4gLQo+PiArCXNldHVwX2RycnMoKTsKPj4gICAJc2V0dXBfY3JjcygpOwo+PiAgIH0K Pj4gICAKPj4gQEAgLTE1OTIsNiArMTY2MSw3IEBAIHN0YXRpYyB2b2lkIHRlYXJkb3duX2Vudmly b25tZW50KHZvaWQpCj4+ICAgCj4+ICAgCXRlYXJkb3duX2NyY3MoKTsKPj4gICAJdGVhcmRvd25f cHNyKCk7Cj4+ICsJdGVhcmRvd25fZHJycygpOwo+PiAgIAl0ZWFyZG93bl9mYmMoKTsKPj4gICAJ dGVhcmRvd25fbW9kZXNldCgpOwo+PiAgIAl0ZWFyZG93bl9kcm0oKTsKPj4gQEAgLTE2NjAsNiAr MTczMCwxMSBAQCBzdGF0aWMgdm9pZCBkb19mbHVzaChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0 KQo+PiAgICNkZWZpbmUgQVNTRVJUX1BTUl9FTkFCTEVECQkoMSA8PCA2KQo+PiAgICNkZWZpbmUg QVNTRVJUX1BTUl9ESVNBQkxFRAkJKDEgPDwgNykKPj4gICAKPj4gKyNkZWZpbmUgRFJSU19BU1NF UlRfRkxBR1MgICAgICAgICAgICAgICAoNyA8PCA4KQo+PiArI2RlZmluZSBBU1NFUlRfRFJSU19I SUdIICAgICAgICAgICAgICAgICgxIDw8IDgpCj4+ICsjZGVmaW5lIEFTU0VSVF9EUlJTX0xPVyAg ICAgICAgICAgICAgICAgKDEgPDwgOSkKPj4gKyNkZWZpbmUgQVNTRVJUX0RSUlNfSU5BQ1RJVkUg ICAgICAgICAgICAoMSA8PCAxMCkKPj4gKwo+PiAgIHN0YXRpYyBpbnQgYWRqdXN0X2Fzc2VydGlv bl9mbGFncyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0LCBpbnQgZmxhZ3MpCj4+ICAgewo+PiAg IAlpZiAoIShmbGFncyAmIERPTlRfQVNTRVJUX0ZFQVRVUkVfU1RBVFVTKSkgewo+PiBAQCAtMTY2 NywxMiArMTc0MiwxNyBAQCBzdGF0aWMgaW50IGFkanVzdF9hc3NlcnRpb25fZmxhZ3MoY29uc3Qg c3RydWN0IHRlc3RfbW9kZSAqdCwgaW50IGZsYWdzKQo+PiAgIAkJCWZsYWdzIHw9IEFTU0VSVF9G QkNfRU5BQkxFRDsKPj4gICAJCWlmICghKGZsYWdzICYgQVNTRVJUX1BTUl9ESVNBQkxFRCkpCj4+ ICAgCQkJZmxhZ3MgfD0gQVNTRVJUX1BTUl9FTkFCTEVEOwo+PiArCQlpZiAoISgoZmxhZ3MgJiBB U1NFUlRfRFJSU19MT1cpIHx8IChmbGFncyAmIEFTU0VSVF9EUlJTX0lOQUNUSVZFKSkpIHsKPj4g KwkJCWZsYWdzIHw9IEFTU0VSVF9EUlJTX0hJR0g7Cj4+ICsJCX0KPj4gICAJfQo+PiAgIAo+PiAg IAlpZiAoKHQtPmZlYXR1cmUgJiBGRUFUVVJFX0ZCQykgPT0gMCkKPj4gICAJCWZsYWdzICY9IH5G QkNfQVNTRVJUX0ZMQUdTOwo+PiAgIAlpZiAoKHQtPmZlYXR1cmUgJiBGRUFUVVJFX1BTUikgPT0g MCkKPj4gICAJCWZsYWdzICY9IH5QU1JfQVNTRVJUX0ZMQUdTOwo+PiArCWlmICgodC0+ZmVhdHVy ZSAmIEZFQVRVUkVfRFJSUykgPT0gMCkKPj4gKwkJZmxhZ3MgJj0gfkRSUlNfQVNTRVJUX0ZMQUdT Owo+PiAgIAo+PiAgIAlyZXR1cm4gZmxhZ3M7Cj4+ICAgfQo+PiBAQCAtMTcwNCw2ICsxNzg0LDIz IEBAIHN0YXRpYyB2b2lkIGRvX3N0YXR1c19hc3NlcnRpb25zKGludCBmbGFncykKPj4gICAJCXJl dHVybjsKPj4gICAJfQo+PiAgIAo+PiArCWlmIChmbGFncyAmIEFTU0VSVF9EUlJTX0hJR0gpIHsK Pj4gKwkJaWYgKCFpc19kcnJzX2hpZ2goKSkgewo+PiArCQkJZHJyc19wcmludF9zdGF0dXMoKTsK Pj4gKwkJCWlndF9hc3NlcnRfZihmYWxzZSwgIkRSUlMgSElHSFxuIik7Cj4+ICsJCX0KPj4gKwl9 IGVsc2UgaWYgKGZsYWdzICYgQVNTRVJUX0RSUlNfTE9XKSB7Cj4+ICsJCWlmICghaXNfZHJyc19s b3coKSkgewo+PiArCQkJZHJyc19wcmludF9zdGF0dXMoKTsKPj4gKwkJCWlndF9hc3NlcnRfZihm YWxzZSwgIkRSUlMgTE9XXG4iKTsKPj4gKwkJfQo+PiArCX0gZWxzZSBpZiAoZmxhZ3MgJiBBU1NF UlRfRFJSU19JTkFDVElWRSkgewo+PiArCQlpZiAoIWlzX2RycnNfaW5hY3RpdmUoKSkgewo+PiAr CQkJZHJyc19wcmludF9zdGF0dXMoKTsKPj4gKwkJCWlndF9hc3NlcnRfZihmYWxzZSwgIkRSUlMg RElTQUJMRURcbiIpOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICAgCWlmIChmbGFncyAmIEFTU0VS VF9GQkNfRU5BQkxFRCkgewo+PiAgIAkJaWd0X3JlcXVpcmUoIWZiY19ub3RfZW5vdWdoX3N0b2xl bigpKTsKPj4gICAJCWlndF9yZXF1aXJlKCFmYmNfc3RyaWRlX25vdF9zdXBwb3J0ZWQoKSk7Cj4+ IEBAIC0xODUwLDYgKzE5NDcsMTAgQEAgc3RhdGljIHZvaWQgY2hlY2tfdGVzdF9yZXF1aXJlbWVu dHMoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKPj4gICAJCQkgICAgICAiQ2FuJ3QgdGVzdCBQ U1Igd2l0aG91dCBzaW5rIENSQ3NcbiIpOwo+PiAgIAl9Cj4+ICAgCj4+ICsJaWYgKHQtPmZlYXR1 cmUgJiBGRUFUVVJFX0RSUlMpCj4+ICsJCWlndF9yZXF1aXJlX2YoZHJycy5jYW5fdGVzdCwKPj4g KwkJCQkiQ2FuJ3QgdGVzdCBEUlJTIHdpdGggdGhlIGN1cnJlbnQgb3V0cHV0c1xuIik7Cj4+ICsK Pj4gICAJaWYgKG9wdC5vbmx5X3BpcGVzICE9IFBJUEVfQ09VTlQpCj4+ICAgCQlpZ3RfcmVxdWly ZSh0LT5waXBlcyA9PSBvcHQub25seV9waXBlcyk7Cj4+ICAgfQo+PiBAQCAtMTk3MSw3ICsyMDcy LDcgQEAgc3RhdGljIHZvaWQgcnRlX3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkK Pj4gICAKPj4gICAJdW5zZXRfYWxsX2NydGNzKCk7Cj4+ICAgCWRvX2Fzc2VydGlvbnMoQVNTRVJU X0ZCQ19ESVNBQkxFRCB8IEFTU0VSVF9QU1JfRElTQUJMRUQgfAo+PiAtCQkgICAgICBET05UX0FT U0VSVF9DUkMpOwo+PiArCQkgICAgICBET05UX0FTU0VSVF9DUkMgfCBBU1NFUlRfRFJSU19JTkFD VElWRSk7Cj4+ICAgCj4+ICAgCWVuYWJsZV9wcmltX3NjcmVlbl9hbmRfd2FpdCh0KTsKPj4gICAJ c2V0X2N1cnNvcl9mb3JfdGVzdCh0LCAmcHJpbV9tb2RlX3BhcmFtcyk7Cj4+IEBAIC0yMDA4LDYg KzIxMDksMjQgQEAgc3RhdGljIGJvb2wgb3BfZGlzYWJsZXNfcHNyKGNvbnN0IHN0cnVjdCB0ZXN0 X21vZGUgKnQsCj4+ICAgCXJldHVybiBmYWxzZTsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgYm9v bCBvcF9zZXRzX2RycnNfaGlnaChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0LAo+PiArCQkJCWVu dW0gaWd0X2RyYXdfbWV0aG9kIG1ldGhvZCkKPj4gK3sKPj4gKwlpZiAobWV0aG9kICE9IElHVF9E UkFXX01NQVBfR1RUKQo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsJaWYgKHQtPnNjcmVlbiA9PSBT Q1JFRU5fUFJJTSkKPj4gKwkJcmV0dXJuIHRydWU7Cj4+ICsJLyogT24gRkJTX1NIQVJFRCwgZXZl biBpZiB0aGUgdGFyZ2V0IGlzIG5vdCB0aGUgRFJSUyBzY3JlZW4KPj4gKwkgKiAoU0NSRUVOX1BS SU0pLCBhbGwgcHJpbWFyeSBwbGFuZXMgc2hhcmUgdGhlIHNhbWUgZnJvbnRidWZmZXIsIHNvIGEK Pj4gKwkgKiB3cml0ZSB0byB0aGUgc2Vjb25kIHNjcmVlbiBwcmltYXJ5IHBsYW5lIC0gb3Igb2Zm c2NyZWVuIHBsYW5lIC0gd2lsbAo+PiArCSAqIHRvdWNoIHRoZSBmcmFtZWJ1ZmZlciB0aGF0J3Mg YWxzbyB1c2VkIGJ5IHRoZSBwcmltYXJ5IHNjcmVlbiBhbmQgbWFraW5nCj4+ICsJICogRFJSUyBz dGF0ZSBhcyBoaWdoCj4+ICsJICovCj4+ICsJaWYgKHQtPmZicyA9PSBGQlNfU0hBUkVEICYmIHQt PnBsYW5lID09IFBMQU5FX1BSSSkKPj4gKwkJcmV0dXJuIHRydWU7Cj4+ICsJcmV0dXJuIGZhbHNl Owo+PiArfQo+PiArCj4+ICAgLyoKPj4gICAgKiBkcmF3IC0gZHJhdyBhIHNldCBvZiByZWN0YW5n bGVzIG9uIHRoZSBzY3JlZW4gdXNpbmcgdGhlIHByb3ZpZGVkIG1ldGhvZAo+PiAgICAqCj4+IEBA IC0yMDYzLDYgKzIxODIsOSBAQCBzdGF0aWMgdm9pZCBkcmF3X3N1YnRlc3QoY29uc3Qgc3RydWN0 IHRlc3RfbW9kZSAqdCkKPj4gICAJaWYgKG9wX2Rpc2FibGVzX3Bzcih0LCB0LT5tZXRob2QpKQo+ PiAgIAkJYXNzZXJ0aW9ucyB8PSBBU1NFUlRfUFNSX0RJU0FCTEVEOwo+PiAgIAo+PiArCWlmIChv cF9zZXRzX2RycnNfaGlnaCh0LCB0LT5tZXRob2QpKQo+PiArCQlhc3NlcnRpb25zIHw9IEFTU0VS VF9EUlJTX0hJR0g7Cj4+ICsKPj4gICAJcHJlcGFyZV9zdWJ0ZXN0KHQsIHBhdHRlcm4pOwo+PiAg IAl0YXJnZXQgPSBwaWNrX3RhcmdldCh0LCBwYXJhbXMpOwo+PiAgIAo+PiBAQCAtMjE1Miw2ICsy Mjc0LDEwIEBAIHN0YXRpYyB2b2lkIG11bHRpZHJhd19zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0 X21vZGUgKnQpCj4+ICAgCQkJCSAgICAhd2NfdXNlZCkKPj4gICAJCQkJCWFzc2VydGlvbnMgfD0g QVNTRVJUX1BTUl9ESVNBQkxFRDsKPj4gICAKPj4gKwkJCQlpZiAob3Bfc2V0c19kcnJzX2hpZ2go dCwgdXNlZF9tZXRob2QpICYmCj4+ICsJCQkJCSF3Y191c2VkKQo+PiArCQkJCQlhc3NlcnRpb25z IHw9IEFTU0VSVF9EUlJTX0hJR0g7Cj4+ICsKPj4gICAJCQkJZG9fYXNzZXJ0aW9ucyhhc3NlcnRp b25zKTsKPj4gICAJCQl9Cj4+ICAgCj4+IEBAIC0yMjA2LDYgKzIzMzIsNyBAQCBzdGF0aWMgdm9p ZCBiYWRmb3JtYXRfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQo+PiAgIHsKPj4g ICAJYm9vbCBmYmNfdmFsaWQgPSBmb3JtYXRfaXNfdmFsaWQoRkVBVFVSRV9GQkMsIHQtPmZvcm1h dCk7Cj4+ICAgCWJvb2wgcHNyX3ZhbGlkID0gZm9ybWF0X2lzX3ZhbGlkKEZFQVRVUkVfUFNSLCB0 LT5mb3JtYXQpOwo+PiArCWJvb2wgZHJyc192YWxpZCA9IGZvcm1hdF9pc192YWxpZChGRUFUVVJF X0RSUlMsIHQtPmZvcm1hdCk7Cj4+ICAgCWludCBhc3NlcnRpb25zID0gQVNTRVJUX05PX0FDVElP Tl9DSEFOR0U7Cj4+ICAgCj4+ICAgCXByZXBhcmVfc3VidGVzdF9kYXRhKHQsIE5VTEwpOwo+PiBA QCAtMjIxOSw2ICsyMzQ2LDkgQEAgc3RhdGljIHZvaWQgYmFkZm9ybWF0X3N1YnRlc3QoY29uc3Qg c3RydWN0IHRlc3RfbW9kZSAqdCkKPj4gICAJCWFzc2VydGlvbnMgfD0gQVNTRVJUX0ZCQ19ESVNB QkxFRDsKPj4gICAJaWYgKCFwc3JfdmFsaWQpCj4+ICAgCQlhc3NlcnRpb25zIHw9IEFTU0VSVF9Q U1JfRElTQUJMRUQ7Cj4+ICsJaWYgKCFkcnJzX3ZhbGlkKQo+PiArCQlhc3NlcnRpb25zIHw9IEFT U0VSVF9EUlJTX0hJR0g7Cj4+ICsKPj4gICAJZG9fYXNzZXJ0aW9ucyhhc3NlcnRpb25zKTsKPj4g ICB9Cj4+ICAgCj4+IEBAIC0yMjc3LDcgKzI0MDcsMTUgQEAgc3RhdGljIHZvaWQgc2xvd19kcmF3 X3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKPj4gICAJCXNsZWVwKDIpOwo+PiAg IAo+PiAgIAkJdXBkYXRlX3dhbnRlZF9jcmModCwgJnBhdHRlcm4tPmNyY3NbdC0+Zm9ybWF0XVty XSk7Cj4+IC0JCWRvX2Fzc2VydGlvbnMoMCk7Cj4+ICsJCWlmICh0LT5mZWF0dXJlICYgRkVBVFVS RV9QU1IpIHsKPj4gKwkJCWRvX2Fzc2VydGlvbnMoMCk7Cj4+ICsJCX0KPj4gKwo+PiArCQlpZiAo dC0+ZmVhdHVyZSAmIEZFQVRVUkVfRFJSUykgewo+PiArCQkJc2xlZXAoMSk7Cj4+ICsJCQlkb19h c3NlcnRpb25zKEFTU0VSVF9EUlJTX0xPVyk7Cj4+ICsJCX0KPj4gKwo+PiAgIAl9Cj4+ICAgfQo+ PiAgIAo+PiBAQCAtMjQ2NCw2ICsyNjAyLDcgQEAgc3RhdGljIHZvaWQgZmxpcHRyYWNrX3N1YnRl c3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCwgZW51bSBmbGlwX3R5cGUgdHlwZSkKPj4gICAJ CXVwZGF0ZV93YW50ZWRfY3JjKHQsICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bcl0pOwo+PiAg IAo+PiAgIAkJZG9fYXNzZXJ0aW9ucyhBU1NFUlRfUFNSX0RJU0FCTEVEKTsKPj4gKwkJZG9fYXNz ZXJ0aW9ucyhBU1NFUlRfRFJSU19ISUdIKTsKPj4gICAJfQo+PiAgIAo+PiAgIAlpZ3RfcmVtb3Zl X2ZiKGRybS5mZCwgJmZiMik7Cj4+IEBAIC0yODkyLDcgKzMwMzEsNyBAQCBzdGF0aWMgdm9pZCBz dXNwZW5kX3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkKPj4gICAJc2xlZXAoNSk7 Cj4+ICAgCWlndF9zeXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKFNVU1BFTkRfU1RBVEVfTUVNLCBT VVNQRU5EX1RFU1RfTk9ORSk7Cj4+ICAgCXNsZWVwKDUpOwo+PiAtCWRvX2Fzc2VydGlvbnMoQVNT RVJUX0ZCQ19ESVNBQkxFRCB8IEFTU0VSVF9QU1JfRElTQUJMRUQgfAo+PiArCWRvX2Fzc2VydGlv bnMoQVNTRVJUX0ZCQ19ESVNBQkxFRCB8IEFTU0VSVF9QU1JfRElTQUJMRUQgfCBBU1NFUlRfRFJS U19ISUdIIHwKPj4gICAJCSAgICAgIERPTlRfQVNTRVJUX0NSQyk7Cj4+ICAgCj4+ICAgCXNldF9t b2RlX2Zvcl9wYXJhbXMocGFyYW1zKTsKPj4gQEAgLTI5NjYsNyArMzEwNSw3IEBAIHN0YXRpYyB2 b2lkIGZhcmZyb21mZW5jZV9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCj4+ICAg CQl1cGRhdGVfd2FudGVkX2NyYyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdW3JdKTsKPj4g ICAKPj4gICAJCS8qIEdUVCBkcmF3cyBkaXNhYmxlIFBTUi4gKi8KPj4gLQkJZG9fYXNzZXJ0aW9u cyhhc3NlcnRpb25zIHwgQVNTRVJUX1BTUl9ESVNBQkxFRCk7Cj4+ICsJCWRvX2Fzc2VydGlvbnMo YXNzZXJ0aW9ucyB8IEFTU0VSVF9QU1JfRElTQUJMRUQgfCBBU1NFUlRfRFJSU19ISUdIKTsKPj4g ICAJfQo+PiAgIAo+PiAgIAlpZ3RfcmVtb3ZlX2ZiKGRybS5mZCwgJnRhbGxfZmIpOwo+PiBAQCAt MzM3NSw2ICszNTE0LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpmZWF0dXJlX3N0cihpbnQgZmVh dHVyZSkKPj4gICAJCXJldHVybiAicHNyIjsKPj4gICAJY2FzZSBGRUFUVVJFX0ZCQyB8IEZFQVRV UkVfUFNSOgo+PiAgIAkJcmV0dXJuICJmYmNwc3IiOwo+PiArCWNhc2UgRkVBVFVSRV9EUlJTOgo+ PiArCQlyZXR1cm4gImRycnMiOwo+PiArCWNhc2UgRkVBVFVSRV9GQkMgfCBGRUFUVVJFX0RSUlM6 Cj4+ICsJCXJldHVybiAiZmJjZHJycyI7Cj4+ICAgCWRlZmF1bHQ6Cj4+ICAgCQlpZ3RfYXNzZXJ0 KGZhbHNlKTsKPj4gICAJfQo+PiBAQCAtMzYzOSw3ICszNzgyLDcgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKPj4gICAJCQkJdGlsaW5nY2hhbmdlX3N1YnRlc3QoJnQpOwo+PiAg IAkJfQo+PiAgIAo+PiAtCQlpZiAodC5mZWF0dXJlICYgRkVBVFVSRV9QU1IpCj4+ICsJCWlmICgo dC5mZWF0dXJlICYgRkVBVFVSRV9QU1IpIHx8ICh0LmZlYXR1cmUgJiBGRUFUVVJFX0RSUlMpKQo+ PiAgIAkJCWlndF9zdWJ0ZXN0X2YoIiVzLXNsb3dkcmF3IiwgZmVhdHVyZV9zdHIodC5mZWF0dXJl KSkKPj4gICAJCQkJc2xvd19kcmF3X3N1YnRlc3QoJnQpOwo+IEkganVzdCBtZXJnZWQgdGhlIHBh dGNoIHRoYXQgYmxvY2tzIERSUlMgaWYgUFNSIGlzIGVuYWJsZWQuCj4KPiBJJ20gbm90IHN1cmUg aWYgd2Ugbm93IG5lZWQgc29tZSBjaGFuZ2VzIG9uIHRoaXMgYmVoYXZpcm91IGhlcmUgZm9yY2lu ZyBQU1IgZmxhZyB0byBiZSBkaXNhYmxlZAo+IHdoZW4gdGVzdGluZyBEUlJTLgpIaSwKCldoZW4g UFNSIGlzIGNhcGFibGUgb24gc2luayBhbmQgc3JjLCB0aGlzIElHVCBzaG91bGRuJ3QgdGVzdCB0 aGUgRFJSUy4KVGhpcyB3aWxsIGJlIG1hZGUgc3VyZSB1c2luZyB0aGUgZHJycy5jYXRfdGVzdCBm bGFnIChzZXQgdG8gRmFsc2UgaWYgClBTUi5jYW5fdGVzdCBpcyBUcnVlKQoKQW5kIGhhZCBhIG9m ZmxpbmUgZGlzY3Vzc2lvbiB3aXRoIFBhdWxvIG9uIGFkZGluZyB0aGUgRFJSUyBpbiB0aGUgCmZy b250YnVmZmVyIHRyYWNraW5nIHRlc3QuCkF0IHByZXNlbnQgb24gYSBzZXR1cCwgSWYgUFNSIGlz IG5vdCBjYXBhYmxlIGFuZCBEUlJTIGlzIGNhcGFibGUsIERSUlMgCmlzIGFsd2F5IGVuYWJsZWQu CklkbGVuZXNzIGRldGVjdGlvbiBhbmQgY29ycmVzcG9uZGluZyBWcmVmcmVzaCBjaGFuZ2Ugd2ls bCBiZSBvbmdvaW5nIApwYXJhbGxlbCB0byBGQkMgdGVzdGluZy4gSXQgaXMgYWx3YXlzIEZCQ3x8 RFJSUy4KCmluIFBhdWxvJ3Mgb3BpbmlvbiBoYXZpbmcgYSBtZWFucyBvZiBkeW5hbWljYWxseSBk aXNhYmxpbmcgdGhlIERSUlMgaXMgCmNvbXB1bHNvcnkgdG8gZmluZCBvdXQgdGhlIHJlZ3Jlc3Np b24gY2F1c2VkIGJ5IERSUlMuCmkuZSB3ZSBjYW4gdGVzdCB0aGUgY29tYmluYXRpb24gb2YgZmVh dHVyZXMoRkJDLCBGQkN8fChEUlJTL1BTUikgYW5kIApEUlJTL1BTUikgYmFzZWQgb24gdGhlIGZy b250IGJ1ZmZlciB0cmFja2luZywKYWdhaW5zdCB0aGUgY29tYmluYXRpb24gb2YgZmVhdHVyZXMo RkJDLCBGQkN8fFBTUiwgUFNSKSBleGNsdWRpbmcgdGhlIERSUlMuCkRpZmZlcmVuY2UgaW4gdGhl IHJlc3VsdHMgd2lsbCBjYWxsIG91dCB3aGV0aGVyIGEgcmVncmVzc2lvbiBpcyBjYXVzZWQgCmR1 ZSB0byBEUlJTIG9yIG5vdC4KClVudGlsbCB3ZSBhZGQgYSBydW4gdGltZSBkaXNhYmxlIG9wdGlv biBmb3IgRFJSUyBpbiBrZXJuZWwsIGNvdWxkIHdlIApoYXZlIHRoZSBmdW5jdGlvbmFsIHRlc3Qg Zm9yIERSUlMgbWVyZ2VkIGluIHRoZSBmcm9udCBidWZmZXIgdHJhY2tpbmcgSUdUPwpUaGlzIHdv bnQgY2hhbmdlIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGZvciB0ZXN0aW5nIGlmIG90aGVyIGZl YXR1cmVzIApsaWtlIEZCQywgdGhhdCBpcyBkb25lIGluIHRoaXMgSUdULgoKQW5kIHRoaXMgY2Fu J3QgYmUgZmluYWwgc2hhcGUgb2YgdGhlIElHVCBidXQgYSBpbnRlcm1lZGlhdGUgb25lLgpPbmNl IHRoZSBkaXNhYmxlIGludGVyZmFjZSBmb3IgRFJSUyBpcyBhZGRlZCBjb3JyZXNwb25kaW5nIAp0 ZWFyX2Rvd25fZHJycyBvcHRpb24gY2FuIGJlIGFkZGVkIHRvIHRoaXMgSUdULgoKCi0tUmFtCj4K Pj4gICAKPj4gLS0gCj4+IDEuOS4xCj4+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK