From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH] Idleness DRRS: Date: Mon, 18 Sep 2017 12:54:33 -0700 Message-ID: <20170918195433.bowiuyjxdpjgrbai@intel.com> References: <1505724732-17529-1-git-send-email-lohith.bs@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 629EC89F6F for ; Mon, 18 Sep 2017 19:54:34 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1505724732-17529-1-git-send-email-lohith.bs@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: 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 T24gTW9uLCBTZXAgMTgsIDIwMTcgYXQgMDg6NTI6MTJBTSArMDAwMCwgIHdyb3RlOgo+IEZyb206 IExvaGl0aCBCUyA8bG9oaXRoLmJzQGludGVsLmNvbT4KPiAKPiAJQnkgZGVmYXVsdCB0aGUgRFJS UyBzdGF0ZSB3aWxsIGJlIGF0IERSUlNfSElHSF9SUi4gV2hlbiBhIERpc3BsYXkKPiAJY29udGVu dCBpcyBJZGxlIGZvciBtb3JlIHRoYW4gMVNlYyBJZGxlbmVzcyB3aWxsIGJlIGRlY2xhcmVkIGFu ZAo+IAlEUlJTX0xPV19SUiB3aWxsIGJlIGludm9rZWQsIGNoYW5naW5nIHRoZSByZWZyZXNoIHJh dGUgdG8gdGhlCj4gCWxvd2VyIG1vc3QgcmVmcmVzaCByYXRlIHN1cHBvcnRlZCBieSB0aGUgcGFu ZWwuIEFzIHNvb24gYXMgdGhlcmUKPiAJaXMgYSBkaXNwbGF5IGNvbnRlbnQgY2hhbmdlIHRoZXJl IHdpbGwgYmUgYSBEUlJTIHN0YXRlIHRyYW5zaXRpb24KPiAJYXMgRFJSU19MT1dfUlItLT4gRFJS U19ISUdIX1JSLCBjaGFuZ2luZyB0aGUgcmVmcmVzaCByYXRlIHRvIHRoZQo+IAloaWdoZXN0IHJl ZnJlc2ggcmF0ZSBzdXBwb3J0ZWQgYnkgdGhlIHBhbmVsLgo+IAo+IFRvIHRlc3QgdGhpcywgSWRs ZW5lc3MgRFJSUyBJR1Qgd2lsbCBwcm9iZSB0aGUgRFJSUyBzdGF0ZSBhdCBiZWxvdwo+IGluc3Rh bmNlcyBhbmQgY29tcGFyZSB3aXRoIHRoZSBleHBlY3RlZCBzdGF0ZS4KPiAKPiAJSW5zdGFuY2UJ CQkJCUV4cGVjdGVkIFN0YXRlCj4gMS4gSW1tZWRpYXRlbHkgYWZ0ZXIgcmVuZGVyaW5nIHRoZSBz dGlsbCBpbWFnZQkJRFJSU19ISUdIX1JSCj4gMi4gQWZ0ZXIgYSBkZWxheSBvZiAxLjJTZWMJCQkJ RFJSU19MT1dfUlIKPiAzLiBBZnRlciBjaGFuZ2luZyB0aGUgZnJhbWUgYnVmZmVyCQkJRFJSU19I SUdIX1JSCj4gNC4gQWZ0ZXIgYSBkZWxheSBvZiAxLjJTZWMJCQkJRFJSU19MT1dfUlIKPiA1LiBB ZnRlciBjaGFuZ2luZyB0aGUgZnJhbWUgYnVmZmVyCQkJRFJSU19ISUdIX1JSCj4gNi4gQWZ0ZXIg YSBkZWxheSBvZiAxLjJTZWMJCQkJRFJSU19MT1dfUlIKPiAKPiBUaGUgdGVzdCBjaGVja3MgdGhl IGRyaXZlciBEUlJTIHN0YXRlIGZyb20gdGhlIGRlYnVnZnMgZW50cnkuIFRvIGNoZWNrIHRoZQo+ IGFjdHVhbCByZWZyZXNoLXJhdGUsIHRoZSBudW1iZXIgb2YgdmJsYW5rcyByZWNlaXZlZCBwZXIg c2VjLgo+IFRoZSByZWZyZXNoLXJhdGUgY2FsY3VsYXRlZCBpcyBjaGVja2VkIGFnYWluc3QgdGhl IGV4cGVjdGVkIHJlZnJlc2gtcmF0ZQo+IHdpdGggYSB0b2xlcmFuY2UgdmFsdWUgb2YgMi4KPiAK PiBUaGlzIHBhdGNoIGlzIGEgY29udGludWF0aW9uIG9mIHRoZSBlYXJsaWVyIHdvcmsKPiBodHRw czovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNDU0NzIvIHRvd2FyZHMgaWd0IGZv ciBpZGxlbmVzcwo+IAo+IERSUlMuIFRoZSBjb2RlIGlzIHRlc3RlZCBvbiBCcm94dG9uIEJYVF9U IHBsYXRmb3JtLgo+IAo+IHYyOiBBZGRyZXNzZWQgdGhlIGNvbW1lbnRzIGFuZCBzdWdnZXN0aW9u cyBmcm9tIFZsYWQsIE1hcml1cy4KPiBUaGUgc2lnbm9mZiBkZXRhaWxzIGZyb20gdGhlIGVhcmxp ZXIgd29yayBhcmUgYWxzbyBpbmNsdWRlZC4KPiAKPiB2MzogTW9kaWZpZWQgdmJsYW5rIHJhdGUg Y2FsY3VsYXRpb24gYnkgdXNpbmcgcmVwbHktc2VxdWVuY2UsIHByb3ZpZGVkIGJ5Cj4gZHJtV2Fp dFZCbGFuaywgYXMgc3VnZ2VzdGVkIGJ5IENocmlzIFdpbHNvbi4KPiAKPiB2NDogQXMgc3VnZ2Vz dGVkIGZyb20gQ2hyaXMgV2lsc29uIGFuZCBEYW5pZWwgVmV0dGVyCj4gCTEpIEF2b2lkZWQgdXNp bmcgcHRocmVhZCBmb3IgY2FsY3VsYXRpbmcgdmJsYW5rIHJlZnJlc2ggcmF0ZSwKPiAJICAgaW5z dGVhZCB1c2VkIGRybVdhaXRWQmxhbmsgcmVwbHkgc2VxdWVuY2UuCj4gCTIpIEF2b2lkZWQgdXNp bmcga2VybmVsLXNwZWNpZmljIGluZm8gbGlrZSB0cmFuc2l0aW9uYWwgZGVsYXlzLAo+IAkgICBp bnN0ZWFkIHBvbGxpbmcgbWVjaGFuaXNtIHdpdGggdGltZW91dCBpcyB1c2VkLgo+IAkzKSBJbmNs dWRlZCBlZHAtRFJSUyBhcyBhIHN1YnRlc3QgaW4ga21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMs Cj4gCSAgIGluc3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUgdGVzdC4KPiAKPiB2NTogVGhpcyBw YXRjaCBhZGRzIERSUlMgYXMgYSBuZXcgZmVhdHVyZSBpbiB0aGUga21zX2Zyb250YnVmZmVyX3Ry YWNraW5nIElHVC4KPiAgICAgRFJSUyBzd2l0Y2ggdG8gbG93ZXIgdnJlZnJlc2ggcmF0ZSBpcyB0 ZXN0ZWQgYXQgc2xvdy1kcmF3IHN1YnRlc3QuCj4gCj4gCU5vdGU6Cj4gCTEpIEN1cnJlbnRseSBr ZXJuZWwgZG9lc24ndCBoYXZlIHN1cHBvcnQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZSBEUlJT Cj4gCSAgIGZlYXR1cmUgZHluYW1pY2FsbHkoYXMgaW4gY2FzZSBvZiBQU1IpLiBIZW5jZSBpZiB0 aGUgcGFuZWwgc3VwcG9ydHMKPiAJICAgRFJSUyBpdCB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVs dC4KPiAKPiAJVGhpcyBpcyBpbiBjb250aW51YXRpb24gb2YgbGFzdCBwYXRjaCAiaHR0cHM6Ly9w YXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE2MjcyNi8iCj4gCj4gU2lnbmVkLW9mZi1i eTogTG9oaXRoIEJTIDxsb2hpdGguYnNAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFJhbWFs aW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBWYW5kYW5h IEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IGFrbmF1 dGl5IDxhbmtpdC5rLm5hdXRpeWFsQGludGVsLmNvbT4KPiAtLS0KPiAgdGVzdHMva21zX2Zyb250 YnVmZmVyX3RyYWNraW5nLmMgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMgYi90 ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+IGluZGV4IGEwNjhjOGEuLjRmNDQxMDkg MTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiArKysgYi90 ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+IEBAIC0zNCw3ICszNCw3IEBACj4gIAo+ ICAKPiAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgdGhlIEtlcm5lbCdzIGZyb250YnVmZmVy IHRyYWNraW5nIG1lY2hhbmlzbSBhbmQgIgo+IC0JCSAgICAgIml0cyByZWxhdGVkIGZlYXR1cmVz OiBGQkMgYW5kIFBTUiIpOwo+ICsJCSAgICAgIml0cyByZWxhdGVkIGZlYXR1cmVzOiBGQkMgRFJS UyBhbmQgUFNSIik7Cj4gIAo+ICAvKgo+ICAgKiBPbmUgb2YgdGhlIGFzcGVjdHMgb2YgdGhpcyB0 ZXN0IGlzIHRoYXQsIGZvciBldmVyeSBzdWJ0ZXN0LCB3ZSB0cnkgZGlmZmVyZW50Cj4gQEAgLTEw NSw4ICsxMDUsOSBAQCBzdHJ1Y3QgdGVzdF9tb2RlIHsKPiAgCQlGRUFUVVJFX05PTkUgID0gMCwK PiAgCQlGRUFUVVJFX0ZCQyAgID0gMSwKPiAgCQlGRUFUVVJFX1BTUiAgID0gMiwKPiAtCQlGRUFU VVJFX0NPVU5UID0gNCwKPiAtCQlGRUFUVVJFX0RFRkFVTFQgPSA0LAo+ICsJCUZFQVRVUkVfRFJS UyAgPSA0LAo+ICsJCUZFQVRVUkVfQ09VTlQgPSA2LAo+ICsJCUZFQVRVUkVfREVGQVVMVCA9IDYs Cj4gIAl9IGZlYXR1cmU7Cj4gIAo+ICAJLyogUG9zc2libGUgcGl4ZWwgZm9ybWF0cy4gV2UganVz dCB1c2UgRk9STUFUX0RFRkFVTFQgZm9yIG1vc3QgdGVzdHMgYW5kCj4gQEAgLTE4MCw2ICsxODEs OSBAQCBzdHJ1Y3Qgewo+ICAJYm9vbCBjYW5fdGVzdDsKPiAgfSBwc3IgPSB7Cj4gIAkuY2FuX3Rl c3QgPSBmYWxzZSwKPiArfSwKPiArZHJycyAgPSB7Cj4gKwkuY2FuX3Rlc3QgPSBmYWxzZSwKPiAg fTsKPiAgCj4gIAo+IEBAIC04MjIsNiArODI2LDUyIEBAIHN0YXRpYyB2b2lkIHBzcl9wcmludF9z dGF0dXModm9pZCkKPiAgCWlndF9pbmZvKCJQU1Igc3RhdHVzOlxuJXNcbiIsIGJ1Zik7Cj4gIH0K PiAgCj4gK3N0YXRpYyBib29sIGlzX2RycnNfaGlnaCh2b2lkKQo+ICt7Cj4gKwljaGFyIGJ1Zlsy NTZdOwo+ICsKPiArCWRlYnVnZnNfcmVhZCgiaTkxNV9kcnJzX3N0YXR1cyIsIGJ1Zik7Cj4gKwly ZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRSUlNfSElHSF9SUiIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9v bCBpc19kcnJzX2xvdyh2b2lkKQo+ICt7Cj4gKwljaGFyIGJ1ZlsyNTZdOwo+ICsKPiArCWRlYnVn ZnNfcmVhZCgiaTkxNV9kcnJzX3N0YXR1cyIsIGJ1Zik7Cj4gKwlyZXR1cm4gc3Ryc3RyKGJ1Ziwg IkRSUlNfTE9XX1JSIik7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGlzX2RycnNfZW5hYmxlZCh2 b2lkKQo+ICt7Cj4gKwljaGFyIGJ1ZlsyNTZdOwo+ICsKPiArCWRlYnVnZnNfcmVhZCgiaTkxNV9k cnJzX3N0YXR1cyIsIGJ1Zik7Cj4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRSUlMgU3VwcG9ydGVk OiBZZXMiKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgaXNfZHJyc19pbmFjdGl2ZSh2b2lkKQo+ ICt7Cj4gKwljaGFyIGJ1ZlsyNTZdOwo+ICsKPiArCWRlYnVnZnNfcmVhZCgiaTkxNV9kcnJzX3N0 YXR1cyIsIGJ1Zik7Cj4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIk5vIGFjdGl2ZSBjcnRjIGZvdW5k Iik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRycnNfcHJpbnRfc3RhdHVzKHZvaWQpCj4gK3sK PiArCWNoYXIgYnVmWzI1Nl07Cj4gKwo+ICsJaWYgKGlzX2RycnNfaGlnaCgpKQo+ICsJCWlndF9p bmZvKCJEUlJTIFNUQVRVUyA6IERSUlMgSElHSFxuIik7Cj4gKwo+ICsJaWYgKGlzX2RycnNfbG93 KCkpCj4gKwkJaWd0X2luZm8oIkRSUlNfU1RBVFVTIDogRFJSUyBMT1dcbiIpOwo+ICsKPiArCWlm IChpc19kcnJzX2luYWN0aXZlKCkpCj4gKwkJaWd0X2luZm8oIkRSUlNfU1RBVFVTIDogRFJSUyBE SVNBQkxFRFxuIik7Cj4gK30KPiArCj4gIHN0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgZmJjX2dldF9s YXN0X2FjdGlvbih2b2lkKQo+ICB7Cj4gIAlzdHJ1Y3QgdGltZXNwZWMgcmV0ID0geyAwLCAwIH07 Cj4gQEAgLTE1NzUsNiArMTYyNSwyNSBAQCBzdGF0aWMgdm9pZCB0ZWFyZG93bl9wc3Iodm9pZCkK PiAgewo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBzZXR1cF9kcnJzKHZvaWQpCj4gK3sKPiArCWlm IChnZXRfY29ubmVjdG9yKHByaW1fbW9kZV9wYXJhbXMuY29ubmVjdG9yX2lkKS0+Y29ubmVjdG9y X3R5cGUgIT0KPiArCQkJRFJNX01PREVfQ09OTkVDVE9SX2VEUCkgewo+ICsJCWlndF9pbmZvKCJD YW4ndCB0ZXN0IERSUlM6IG5vIHVzYWJsZSBlRFAgc2NyZWVuLlxuIik7Cj4gKwkJcmV0dXJuOwo+ ICsJfQo+ICsKPiArCWlmICghaXNfZHJyc19lbmFibGVkKCkpIHsKPiArCQlpZ3RfaW5mbygiQ2Fu J3QgdGVzdCBEUlJTOiBub3Qgc3VwcG9ydGVkIGluIHRoZSBkcml2ZXIuXG4iKTsKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gKwlkcnJzLmNhbl90ZXN0ID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgdGVhcmRvd25fZHJycyh2b2lkKQo+ICt7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIHNldHVw X2Vudmlyb25tZW50KHZvaWQpCj4gIHsKPiAgCXNldHVwX2RybSgpOwo+IEBAIC0xNTgyLDcgKzE2 NTEsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQo+ICAKPiAgCXNldHVw X2ZiYygpOwo+ICAJc2V0dXBfcHNyKCk7Cj4gLQo+ICsJc2V0dXBfZHJycygpOwo+ICAJc2V0dXBf Y3JjcygpOwo+ICB9Cj4gIAo+IEBAIC0xNTkyLDYgKzE2NjEsNyBAQCBzdGF0aWMgdm9pZCB0ZWFy ZG93bl9lbnZpcm9ubWVudCh2b2lkKQo+ICAKPiAgCXRlYXJkb3duX2NyY3MoKTsKPiAgCXRlYXJk b3duX3BzcigpOwo+ICsJdGVhcmRvd25fZHJycygpOwo+ICAJdGVhcmRvd25fZmJjKCk7Cj4gIAl0 ZWFyZG93bl9tb2Rlc2V0KCk7Cj4gIAl0ZWFyZG93bl9kcm0oKTsKPiBAQCAtMTY2MCw2ICsxNzMw LDExIEBAIHN0YXRpYyB2b2lkIGRvX2ZsdXNoKGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCj4g ICNkZWZpbmUgQVNTRVJUX1BTUl9FTkFCTEVECQkoMSA8PCA2KQo+ICAjZGVmaW5lIEFTU0VSVF9Q U1JfRElTQUJMRUQJCSgxIDw8IDcpCj4gIAo+ICsjZGVmaW5lIERSUlNfQVNTRVJUX0ZMQUdTICAg ICAgICAgICAgICAgKDcgPDwgOCkKPiArI2RlZmluZSBBU1NFUlRfRFJSU19ISUdIICAgICAgICAg ICAgICAgICgxIDw8IDgpCj4gKyNkZWZpbmUgQVNTRVJUX0RSUlNfTE9XICAgICAgICAgICAgICAg ICAoMSA8PCA5KQo+ICsjZGVmaW5lIEFTU0VSVF9EUlJTX0lOQUNUSVZFICAgICAgICAgICAgKDEg PDwgMTApCj4gKwo+ICBzdGF0aWMgaW50IGFkanVzdF9hc3NlcnRpb25fZmxhZ3MoY29uc3Qgc3Ry dWN0IHRlc3RfbW9kZSAqdCwgaW50IGZsYWdzKQo+ICB7Cj4gIAlpZiAoIShmbGFncyAmIERPTlRf QVNTRVJUX0ZFQVRVUkVfU1RBVFVTKSkgewo+IEBAIC0xNjY3LDEyICsxNzQyLDE3IEBAIHN0YXRp YyBpbnQgYWRqdXN0X2Fzc2VydGlvbl9mbGFncyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0LCBp bnQgZmxhZ3MpCj4gIAkJCWZsYWdzIHw9IEFTU0VSVF9GQkNfRU5BQkxFRDsKPiAgCQlpZiAoIShm bGFncyAmIEFTU0VSVF9QU1JfRElTQUJMRUQpKQo+ICAJCQlmbGFncyB8PSBBU1NFUlRfUFNSX0VO QUJMRUQ7Cj4gKwkJaWYgKCEoKGZsYWdzICYgQVNTRVJUX0RSUlNfTE9XKSB8fCAoZmxhZ3MgJiBB U1NFUlRfRFJSU19JTkFDVElWRSkpKSB7Cj4gKwkJCWZsYWdzIHw9IEFTU0VSVF9EUlJTX0hJR0g7 Cj4gKwkJfQo+ICAJfQo+ICAKPiAgCWlmICgodC0+ZmVhdHVyZSAmIEZFQVRVUkVfRkJDKSA9PSAw KQo+ICAJCWZsYWdzICY9IH5GQkNfQVNTRVJUX0ZMQUdTOwo+ICAJaWYgKCh0LT5mZWF0dXJlICYg RkVBVFVSRV9QU1IpID09IDApCj4gIAkJZmxhZ3MgJj0gflBTUl9BU1NFUlRfRkxBR1M7Cj4gKwlp ZiAoKHQtPmZlYXR1cmUgJiBGRUFUVVJFX0RSUlMpID09IDApCj4gKwkJZmxhZ3MgJj0gfkRSUlNf QVNTRVJUX0ZMQUdTOwo+ICAKPiAgCXJldHVybiBmbGFnczsKPiAgfQo+IEBAIC0xNzA0LDYgKzE3 ODQsMjMgQEAgc3RhdGljIHZvaWQgZG9fc3RhdHVzX2Fzc2VydGlvbnMoaW50IGZsYWdzKQo+ICAJ CXJldHVybjsKPiAgCX0KPiAgCj4gKwlpZiAoZmxhZ3MgJiBBU1NFUlRfRFJSU19ISUdIKSB7Cj4g KwkJaWYgKCFpc19kcnJzX2hpZ2goKSkgewo+ICsJCQlkcnJzX3ByaW50X3N0YXR1cygpOwo+ICsJ CQlpZ3RfYXNzZXJ0X2YoZmFsc2UsICJEUlJTIEhJR0hcbiIpOwo+ICsJCX0KPiArCX0gZWxzZSBp ZiAoZmxhZ3MgJiBBU1NFUlRfRFJSU19MT1cpIHsKPiArCQlpZiAoIWlzX2RycnNfbG93KCkpIHsK PiArCQkJZHJyc19wcmludF9zdGF0dXMoKTsKPiArCQkJaWd0X2Fzc2VydF9mKGZhbHNlLCAiRFJS UyBMT1dcbiIpOwo+ICsJCX0KPiArCX0gZWxzZSBpZiAoZmxhZ3MgJiBBU1NFUlRfRFJSU19JTkFD VElWRSkgewo+ICsJCWlmICghaXNfZHJyc19pbmFjdGl2ZSgpKSB7Cj4gKwkJCWRycnNfcHJpbnRf c3RhdHVzKCk7Cj4gKwkJCWlndF9hc3NlcnRfZihmYWxzZSwgIkRSUlMgRElTQUJMRURcbiIpOwo+ ICsJCX0KPiArCX0KPiArCj4gIAlpZiAoZmxhZ3MgJiBBU1NFUlRfRkJDX0VOQUJMRUQpIHsKPiAg CQlpZ3RfcmVxdWlyZSghZmJjX25vdF9lbm91Z2hfc3RvbGVuKCkpOwo+ICAJCWlndF9yZXF1aXJl KCFmYmNfc3RyaWRlX25vdF9zdXBwb3J0ZWQoKSk7Cj4gQEAgLTE4NTAsNiArMTk0NywxMCBAQCBz dGF0aWMgdm9pZCBjaGVja190ZXN0X3JlcXVpcmVtZW50cyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2Rl ICp0KQo+ICAJCQkgICAgICAiQ2FuJ3QgdGVzdCBQU1Igd2l0aG91dCBzaW5rIENSQ3NcbiIpOwo+ ICAJfQo+ICAKPiArCWlmICh0LT5mZWF0dXJlICYgRkVBVFVSRV9EUlJTKQo+ICsJCWlndF9yZXF1 aXJlX2YoZHJycy5jYW5fdGVzdCwKPiArCQkJCSJDYW4ndCB0ZXN0IERSUlMgd2l0aCB0aGUgY3Vy cmVudCBvdXRwdXRzXG4iKTsKPiArCj4gIAlpZiAob3B0Lm9ubHlfcGlwZXMgIT0gUElQRV9DT1VO VCkKPiAgCQlpZ3RfcmVxdWlyZSh0LT5waXBlcyA9PSBvcHQub25seV9waXBlcyk7Cj4gIH0KPiBA QCAtMTk3MSw3ICsyMDcyLDcgQEAgc3RhdGljIHZvaWQgcnRlX3N1YnRlc3QoY29uc3Qgc3RydWN0 IHRlc3RfbW9kZSAqdCkKPiAgCj4gIAl1bnNldF9hbGxfY3J0Y3MoKTsKPiAgCWRvX2Fzc2VydGlv bnMoQVNTRVJUX0ZCQ19ESVNBQkxFRCB8IEFTU0VSVF9QU1JfRElTQUJMRUQgfAo+IC0JCSAgICAg IERPTlRfQVNTRVJUX0NSQyk7Cj4gKwkJICAgICAgRE9OVF9BU1NFUlRfQ1JDIHwgQVNTRVJUX0RS UlNfSU5BQ1RJVkUpOwo+ICAKPiAgCWVuYWJsZV9wcmltX3NjcmVlbl9hbmRfd2FpdCh0KTsKPiAg CXNldF9jdXJzb3JfZm9yX3Rlc3QodCwgJnByaW1fbW9kZV9wYXJhbXMpOwo+IEBAIC0yMDA4LDYg KzIxMDksMjQgQEAgc3RhdGljIGJvb2wgb3BfZGlzYWJsZXNfcHNyKGNvbnN0IHN0cnVjdCB0ZXN0 X21vZGUgKnQsCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIG9wX3Nl dHNfZHJyc19oaWdoKGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQsCj4gKwkJCQllbnVtIGlndF9k cmF3X21ldGhvZCBtZXRob2QpCj4gK3sKPiArCWlmIChtZXRob2QgIT0gSUdUX0RSQVdfTU1BUF9H VFQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJaWYgKHQtPnNjcmVlbiA9PSBTQ1JFRU5fUFJJTSkK PiArCQlyZXR1cm4gdHJ1ZTsKPiArCS8qIE9uIEZCU19TSEFSRUQsIGV2ZW4gaWYgdGhlIHRhcmdl dCBpcyBub3QgdGhlIERSUlMgc2NyZWVuCj4gKwkgKiAoU0NSRUVOX1BSSU0pLCBhbGwgcHJpbWFy eSBwbGFuZXMgc2hhcmUgdGhlIHNhbWUgZnJvbnRidWZmZXIsIHNvIGEKPiArCSAqIHdyaXRlIHRv IHRoZSBzZWNvbmQgc2NyZWVuIHByaW1hcnkgcGxhbmUgLSBvciBvZmZzY3JlZW4gcGxhbmUgLSB3 aWxsCj4gKwkgKiB0b3VjaCB0aGUgZnJhbWVidWZmZXIgdGhhdCdzIGFsc28gdXNlZCBieSB0aGUg cHJpbWFyeSBzY3JlZW4gYW5kIG1ha2luZwo+ICsJICogRFJSUyBzdGF0ZSBhcyBoaWdoCj4gKwkg Ki8KPiArCWlmICh0LT5mYnMgPT0gRkJTX1NIQVJFRCAmJiB0LT5wbGFuZSA9PSBQTEFORV9QUkkp Cj4gKwkJcmV0dXJuIHRydWU7Cj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gIC8qCj4gICAq IGRyYXcgLSBkcmF3IGEgc2V0IG9mIHJlY3RhbmdsZXMgb24gdGhlIHNjcmVlbiB1c2luZyB0aGUg cHJvdmlkZWQgbWV0aG9kCj4gICAqCj4gQEAgLTIwNjMsNiArMjE4Miw5IEBAIHN0YXRpYyB2b2lk IGRyYXdfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQo+ICAJaWYgKG9wX2Rpc2Fi bGVzX3Bzcih0LCB0LT5tZXRob2QpKQo+ICAJCWFzc2VydGlvbnMgfD0gQVNTRVJUX1BTUl9ESVNB QkxFRDsKPiAgCj4gKwlpZiAob3Bfc2V0c19kcnJzX2hpZ2godCwgdC0+bWV0aG9kKSkKPiArCQlh c3NlcnRpb25zIHw9IEFTU0VSVF9EUlJTX0hJR0g7Cj4gKwo+ICAJcHJlcGFyZV9zdWJ0ZXN0KHQs IHBhdHRlcm4pOwo+ICAJdGFyZ2V0ID0gcGlja190YXJnZXQodCwgcGFyYW1zKTsKPiAgCj4gQEAg LTIxNTIsNiArMjI3NCwxMCBAQCBzdGF0aWMgdm9pZCBtdWx0aWRyYXdfc3VidGVzdChjb25zdCBz dHJ1Y3QgdGVzdF9tb2RlICp0KQo+ICAJCQkJICAgICF3Y191c2VkKQo+ICAJCQkJCWFzc2VydGlv bnMgfD0gQVNTRVJUX1BTUl9ESVNBQkxFRDsKPiAgCj4gKwkJCQlpZiAob3Bfc2V0c19kcnJzX2hp Z2godCwgdXNlZF9tZXRob2QpICYmCj4gKwkJCQkJIXdjX3VzZWQpCj4gKwkJCQkJYXNzZXJ0aW9u cyB8PSBBU1NFUlRfRFJSU19ISUdIOwo+ICsKPiAgCQkJCWRvX2Fzc2VydGlvbnMoYXNzZXJ0aW9u cyk7Cj4gIAkJCX0KPiAgCj4gQEAgLTIyMDYsNiArMjMzMiw3IEBAIHN0YXRpYyB2b2lkIGJhZGZv cm1hdF9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCj4gIHsKPiAgCWJvb2wgZmJj X3ZhbGlkID0gZm9ybWF0X2lzX3ZhbGlkKEZFQVRVUkVfRkJDLCB0LT5mb3JtYXQpOwo+ICAJYm9v bCBwc3JfdmFsaWQgPSBmb3JtYXRfaXNfdmFsaWQoRkVBVFVSRV9QU1IsIHQtPmZvcm1hdCk7Cj4g Kwlib29sIGRycnNfdmFsaWQgPSBmb3JtYXRfaXNfdmFsaWQoRkVBVFVSRV9EUlJTLCB0LT5mb3Jt YXQpOwo+ICAJaW50IGFzc2VydGlvbnMgPSBBU1NFUlRfTk9fQUNUSU9OX0NIQU5HRTsKPiAgCj4g IAlwcmVwYXJlX3N1YnRlc3RfZGF0YSh0LCBOVUxMKTsKPiBAQCAtMjIxOSw2ICsyMzQ2LDkgQEAg c3RhdGljIHZvaWQgYmFkZm9ybWF0X3N1YnRlc3QoY29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCkK PiAgCQlhc3NlcnRpb25zIHw9IEFTU0VSVF9GQkNfRElTQUJMRUQ7Cj4gIAlpZiAoIXBzcl92YWxp ZCkKPiAgCQlhc3NlcnRpb25zIHw9IEFTU0VSVF9QU1JfRElTQUJMRUQ7Cj4gKwlpZiAoIWRycnNf dmFsaWQpCj4gKwkJYXNzZXJ0aW9ucyB8PSBBU1NFUlRfRFJSU19ISUdIOwo+ICsKPiAgCWRvX2Fz c2VydGlvbnMoYXNzZXJ0aW9ucyk7Cj4gIH0KPiAgCj4gQEAgLTIyNzcsNyArMjQwNywxNSBAQCBz dGF0aWMgdm9pZCBzbG93X2RyYXdfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQo+ ICAJCXNsZWVwKDIpOwo+ICAKPiAgCQl1cGRhdGVfd2FudGVkX2NyYyh0LCAmcGF0dGVybi0+Y3Jj c1t0LT5mb3JtYXRdW3JdKTsKPiAtCQlkb19hc3NlcnRpb25zKDApOwo+ICsJCWlmICh0LT5mZWF0 dXJlICYgRkVBVFVSRV9QU1IpIHsKPiArCQkJZG9fYXNzZXJ0aW9ucygwKTsKPiArCQl9Cj4gKwo+ ICsJCWlmICh0LT5mZWF0dXJlICYgRkVBVFVSRV9EUlJTKSB7Cj4gKwkJCXNsZWVwKDEpOwo+ICsJ CQlkb19hc3NlcnRpb25zKEFTU0VSVF9EUlJTX0xPVyk7Cj4gKwkJfQo+ICsKPiAgCX0KPiAgfQo+ ICAKPiBAQCAtMjQ2NCw2ICsyNjAyLDcgQEAgc3RhdGljIHZvaWQgZmxpcHRyYWNrX3N1YnRlc3Qo Y29uc3Qgc3RydWN0IHRlc3RfbW9kZSAqdCwgZW51bSBmbGlwX3R5cGUgdHlwZSkKPiAgCQl1cGRh dGVfd2FudGVkX2NyYyh0LCAmcGF0dGVybi0+Y3Jjc1t0LT5mb3JtYXRdW3JdKTsKPiAgCj4gIAkJ ZG9fYXNzZXJ0aW9ucyhBU1NFUlRfUFNSX0RJU0FCTEVEKTsKPiArCQlkb19hc3NlcnRpb25zKEFT U0VSVF9EUlJTX0hJR0gpOwo+ICAJfQo+ICAKPiAgCWlndF9yZW1vdmVfZmIoZHJtLmZkLCAmZmIy KTsKPiBAQCAtMjg5Miw3ICszMDMxLDcgQEAgc3RhdGljIHZvaWQgc3VzcGVuZF9zdWJ0ZXN0KGNv bnN0IHN0cnVjdCB0ZXN0X21vZGUgKnQpCj4gIAlzbGVlcCg1KTsKPiAgCWlndF9zeXN0ZW1fc3Vz cGVuZF9hdXRvcmVzdW1lKFNVU1BFTkRfU1RBVEVfTUVNLCBTVVNQRU5EX1RFU1RfTk9ORSk7Cj4g IAlzbGVlcCg1KTsKPiAtCWRvX2Fzc2VydGlvbnMoQVNTRVJUX0ZCQ19ESVNBQkxFRCB8IEFTU0VS VF9QU1JfRElTQUJMRUQgfAo+ICsJZG9fYXNzZXJ0aW9ucyhBU1NFUlRfRkJDX0RJU0FCTEVEIHwg QVNTRVJUX1BTUl9ESVNBQkxFRCB8IEFTU0VSVF9EUlJTX0hJR0ggfAo+ICAJCSAgICAgIERPTlRf QVNTRVJUX0NSQyk7Cj4gIAo+ICAJc2V0X21vZGVfZm9yX3BhcmFtcyhwYXJhbXMpOwo+IEBAIC0y OTY2LDcgKzMxMDUsNyBAQCBzdGF0aWMgdm9pZCBmYXJmcm9tZmVuY2Vfc3VidGVzdChjb25zdCBz dHJ1Y3QgdGVzdF9tb2RlICp0KQo+ICAJCXVwZGF0ZV93YW50ZWRfY3JjKHQsICZwYXR0ZXJuLT5j cmNzW3QtPmZvcm1hdF1bcl0pOwo+ICAKPiAgCQkvKiBHVFQgZHJhd3MgZGlzYWJsZSBQU1IuICov Cj4gLQkJZG9fYXNzZXJ0aW9ucyhhc3NlcnRpb25zIHwgQVNTRVJUX1BTUl9ESVNBQkxFRCk7Cj4g KwkJZG9fYXNzZXJ0aW9ucyhhc3NlcnRpb25zIHwgQVNTRVJUX1BTUl9ESVNBQkxFRCB8IEFTU0VS VF9EUlJTX0hJR0gpOwo+ICAJfQo+ICAKPiAgCWlndF9yZW1vdmVfZmIoZHJtLmZkLCAmdGFsbF9m Yik7Cj4gQEAgLTMzNzUsNiArMzUxNCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZmVhdHVyZV9z dHIoaW50IGZlYXR1cmUpCj4gIAkJcmV0dXJuICJwc3IiOwo+ICAJY2FzZSBGRUFUVVJFX0ZCQyB8 IEZFQVRVUkVfUFNSOgo+ICAJCXJldHVybiAiZmJjcHNyIjsKPiArCWNhc2UgRkVBVFVSRV9EUlJT Ogo+ICsJCXJldHVybiAiZHJycyI7Cj4gKwljYXNlIEZFQVRVUkVfRkJDIHwgRkVBVFVSRV9EUlJT Ogo+ICsJCXJldHVybiAiZmJjZHJycyI7Cj4gIAlkZWZhdWx0Ogo+ICAJCWlndF9hc3NlcnQoZmFs c2UpOwo+ICAJfQo+IEBAIC0zNjM5LDcgKzM3ODIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQo+ICAJCQkJdGlsaW5nY2hhbmdlX3N1YnRlc3QoJnQpOwo+ICAJCX0KPiAgCj4g LQkJaWYgKHQuZmVhdHVyZSAmIEZFQVRVUkVfUFNSKQo+ICsJCWlmICgodC5mZWF0dXJlICYgRkVB VFVSRV9QU1IpIHx8ICh0LmZlYXR1cmUgJiBGRUFUVVJFX0RSUlMpKQo+ICAJCQlpZ3Rfc3VidGVz dF9mKCIlcy1zbG93ZHJhdyIsIGZlYXR1cmVfc3RyKHQuZmVhdHVyZSkpCj4gIAkJCQlzbG93X2Ry YXdfc3VidGVzdCgmdCk7CgpJIGp1c3QgbWVyZ2VkIHRoZSBwYXRjaCB0aGF0IGJsb2NrcyBEUlJT IGlmIFBTUiBpcyBlbmFibGVkLgoKSSdtIG5vdCBzdXJlIGlmIHdlIG5vdyBuZWVkIHNvbWUgY2hh bmdlcyBvbiB0aGlzIGJlaGF2aXJvdSBoZXJlIGZvcmNpbmcgUFNSIGZsYWcgdG8gYmUgZGlzYWJs ZWQKd2hlbiB0ZXN0aW5nIERSUlMuCgo+ICAKPiAtLSAKPiAxLjkuMQo+IApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK