From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH igt] tools: Stop opening the driver just to find the debugfs Date: Mon, 20 Nov 2017 19:13:37 +0200 Message-ID: <20171120171337.GY10981@intel.com> References: <20171120160124.7749-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 431436E143 for ; Mon, 20 Nov 2017 17:13:41 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20171120160124.7749-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBOb3YgMjAsIDIwMTcgYXQgMDQ6MDE6MjRQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFNpbmNlIHRoZSB0b29scyB3YW50IHRvIHdvcmsgd2l0aG91dCB0aGUgbW9kdWxlIGxv YWRlZCwgcmVtb3ZlIHRoZQo+IGFzc3VtcHRpb24gdGhhdCB3ZSB3YW50IHRvIGxvYWQgdGhlIGRy aXZlciB0byBmaW5kIGRlYnVnZnMuCgpTbyBsb29raW5nIGF0IHRoZSBoaXN0b3J5IGl0IHdhcyBh Y3R1YWxseSBUb21ldSB0aGF0IGNhdXNlZCB0aGlzCnByb2JsZW0gb3JpZ2luYWxseS4gVGhhdCBh ZGRlZCB0aGUgYm9ndXMgbWFzdGVyIHJlcXVpcmVtZW50CmFzIHdlbGwuIFNvIG5vdyBJIGNhbiBm b3JnZXQgbXkgcGF0Y2ggdG8gZHJvcCB0aGUgbWFzdGVyIHJlcXVpcmVtZW50CmZyb20gaW50ZWxf d2F0ZXJtYXJrIGFzIHdlbGwuIFRoYW5rcyBmb3IgZml4aW5nLgoKUmV2aWV3ZWQtYnk6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+IAo+IFNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBs aWIvaWd0X2RlYnVnZnMuYyAgICAgICAgICAgIHwgMTUgKysrKysrLS0tLS0tLS0tCj4gIHRvb2xz L2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgfCAgOCArLS0tLS0tLQo+ICB0b29scy9pbnRlbF9mb3Jj ZXdha2VkLmMgICAgIHwgIDkgKystLS0tLS0tCj4gIHRvb2xzL2ludGVsX2dwdV90b3AuYyAgICAg ICAgfCAgNyArLS0tLS0tCj4gIHRvb2xzL2ludGVsX2d1Y19sb2dnZXIuYyAgICAgfCAxMCArKyst LS0tLS0tCj4gIHRvb2xzL2ludGVsX2luZm9mcmFtZXMuYyAgICAgfCAgNyArLS0tLS0tCj4gIHRv b2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jICAgfCAgOCArKy0tLS0tLQo+ICB0b29scy9pbnRlbF9y ZWcuYyAgICAgICAgICAgIHwgMTAgKysrLS0tLS0tLQo+ICB0b29scy9pbnRlbF93YXRlcm1hcmsu YyAgICAgIHwgMjAgKysrKysrKy0tLS0tLS0tLS0tLS0KPiAgOSBmaWxlcyBjaGFuZ2VkLCAyNiBp bnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9k ZWJ1Z2ZzLmMgYi9saWIvaWd0X2RlYnVnZnMuYwo+IGluZGV4IDQwY2ZkODdhLi42NTgxMjZlMyAx MDA2NDQKPiAtLS0gYS9saWIvaWd0X2RlYnVnZnMuYwo+ICsrKyBiL2xpYi9pZ3RfZGVidWdmcy5j Cj4gQEAgLTE1MCwxOCArMTUwLDE1IEBAIGNoYXIgKmlndF9kZWJ1Z2ZzX3BhdGgoaW50IGRldmlj ZSwgY2hhciAqcGF0aCwgaW50IHBhdGhsZW4pCj4gIAljb25zdCBjaGFyICpkZWJ1Z2ZzX3Jvb3Q7 Cj4gIAlpbnQgaWR4Owo+ICAKPiAtCWlmIChmc3RhdChkZXZpY2UsICZzdCkpIHsKPiAtCQlpZ3Rf ZGVidWcoIkNvdWxkbid0IHN0YXQgRkQgZm9yIERSTSBkZXZpY2U6ICVzXG4iLCBzdHJlcnJvcihl cnJubykpOwo+IC0JCXJldHVybiBOVUxMOwo+IC0JfQo+ICsJZGVidWdmc19yb290ID0gaWd0X2Rl YnVnZnNfbW91bnQoKTsKPiArCWlndF9hc3NlcnQoZGVidWdmc19yb290KTsKPiAgCj4gLQlpZiAo IVNfSVNDSFIoc3Quc3RfbW9kZSkpIHsKPiArCW1lbXNldCgmc3QsIDAsIHNpemVvZihzdCkpOwo+ ICsJaWYgKGZzdGF0KGRldmljZSwgJnN0KSkKPiArCQlpZ3RfZGVidWcoIkNvdWxkbid0IHN0YXQg RkQgZm9yIERSTSBkZXZpY2U6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwo+ICsJZWxzZSBpZiAo IVNfSVNDSFIoc3Quc3RfbW9kZSkpCj4gIAkJaWd0X2RlYnVnKCJGRCBmb3IgRFJNIGRldmljZSBu b3QgYSBjaGFyIGRldmljZSFcbiIpOwo+IC0JCXJldHVybiBOVUxMOwo+IC0JfQo+ICAKPiAtCWRl YnVnZnNfcm9vdCA9IGlndF9kZWJ1Z2ZzX21vdW50KCk7Cj4gLQlpZ3RfYXNzZXJ0KGRlYnVnZnNf cm9vdCk7Cj4gIAo+ICAJaWR4ID0gbWlub3Ioc3Quc3RfcmRldik7Cj4gIAlzbnByaW50ZihwYXRo LCBwYXRobGVuLCAiJXMvZHJpLyVkL25hbWUiLCBkZWJ1Z2ZzX3Jvb3QsIGlkeCk7Cj4gZGlmZiAt LWdpdCBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgYi90b29scy9pbnRlbF9kaXNwbGF5 X3BvbGxlci5jCj4gaW5kZXggODI4Y2E1MmIuLmEyNmUyZWNmIDEwMDY0NAo+IC0tLSBhL3Rvb2xz L2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKPiArKysgYi90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxl ci5jCj4gQEAgLTk2NSw3ICs5NjUsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQo+ICAJaW50IHBpcGUgPSAwLCBiaXQgPSAwLCB0YXJnZXRfc2NhbmxpbmUgPSAwLCB0YXJnZXRf ZnV6eiA9IDE7Cj4gIAlib29sIHRlc3RfcGl4ZWxjb3VudCA9IGZhbHNlOwo+ICAJdWludDMyX3Qg ZGV2aWQ7Cj4gLQlpbnQgZHJtX2ZkOwo+ICAJdWludDMyX3QgbWluWzIqMTI4XSA9IHt9Owo+ICAJ dWludDMyX3QgbWF4WzIqMTI4XSA9IHt9Owo+ICAJdWludDMyX3QgYSwgYjsKPiBAQCAtMTE4Nywx MCArMTE4Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJYnJlYWs7 Cj4gIAl9Cj4gIAo+IC0JLyogSnVzdCB0byBtYWtlIHN1cmUgd2Ugb3BlbiB0aGUgcmlnaHQgZGVi dWdmcyBmaWxlcyAqLwo+IC0JZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJf SU5URUwpOwo+IC0KPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDAsIGRybV9mZCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRl bF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gIAo+ICAJcHJpbnRmKCIlcz9cbiIsIHRlc3Rf bmFtZSh0ZXN0LCBwaXBlLCBiaXQsIHRlc3RfcGl4ZWxjb3VudCkpOwo+ICAKPiBAQCAtMTI2Nyw4 ICsxMjYzLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCj4gIAlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICAKPiAtCWNsb3NlKGRybV9mZCk7Cj4gLQo+ICAJ aWYgKHF1aXQpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9m b3JjZXdha2VkLmMgYi90b29scy9pbnRlbF9mb3JjZXdha2VkLmMKPiBpbmRleCBhYThlM2Y4Yi4u MDJmYmY4ODggMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCj4gKysrIGIv dG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCj4gQEAgLTY0LDcgKzY0LDYgQEAgaXNfYWxpdmUodm9p ZCkgewo+ICAKPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgewo+IC0JaW50 IGRybV9mZDsKPiAgCWludCByZXQ7Cj4gIAo+ICAJaWYgKGFyZ2MgPiAyIHx8IChhcmdjID09IDIg JiYgIXN0cm5jbXAoYXJndlsxXSwgIi1oIiwgMikpKSB7Cj4gQEAgLTgxLDEwICs4MCw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJSU5GT19QUklOVCgic3RhcnRlZCBk YWVtb24iKTsKPiAgCX0KPiAgCj4gLQkvKiBKdXN0IHRvIG1ha2Ugc3VyZSB3ZSBvcGVuIHRoZSBy aWdodCBkZWJ1Z2ZzIGZpbGVzICovCj4gLQlkcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVy KERSSVZFUl9JTlRFTCk7Cj4gLQo+IC0JcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgZHJtX2ZkKTsKPiArCXJldCA9IGludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKPiAgCWlmIChy ZXQpIHsKPiAgCQlJTkZPX1BSSU5UKCJDb3VsZG4ndCBpbml0IHJlZ2lzdGVyIGFjY2Vzc1xuIik7 Cj4gIAkJZXhpdCgxKTsKPiBAQCAtOTUsMTQgKzkxLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCj4gIAkJaWYgKCFpc19hbGl2ZSgpKSB7Cj4gIAkJCUlORk9fUFJJTlQoImdw dSByZXNldD8gcmVzdGFydGluZyBkYWVtb25cbiIpOwo+ICAJCQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgpOwo+IC0JCQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9n ZXRfcGNpX2RldmljZSgpLCAxLCBkcm1fZmQpOwo+ICsJCQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAxLCAtMSk7Cj4gIAkJCWlmIChyZXQp Cj4gIAkJCQlJTkZPX1BSSU5UKCJSZWcgYWNjZXNzIGluaXQgZmFpbFxuIik7Cj4gIAkJfQo+ICAJ CXNsZWVwKDEpOwo+ICAJfQo+ICAJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKPiAtCWNs b3NlKGRybV9mZCk7Cj4gIAlJTkZPX1BSSU5UKCJGb3JjZXdha2UgdW5sb2NrXG4iKTsKPiAgCj4g IAlpZiAoZGFlbW9uaXplZCkgewo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9ncHVfdG9wLmMg Yi90b29scy9pbnRlbF9ncHVfdG9wLmMKPiBpbmRleCA3NDU0ZGU4Ny4uODNjZjUzZWEgMTAwNjQ0 Cj4gLS0tIGEvdG9vbHMvaW50ZWxfZ3B1X3RvcC5jCj4gKysrIGIvdG9vbHMvaW50ZWxfZ3B1X3Rv cC5jCj4gQEAgLTQwOSw3ICs0MDksNiBAQCB1c2FnZShjb25zdCBjaGFyICphcHBuYW1lKQo+ICBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIHsKPiAgCXVpbnQzMl90IGRldmlkOwo+ IC0JaW50IGRybV9mZDsKPiAgCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2Owo+ICAJc3RydWN0 IHJpbmcgcmVuZGVyX3JpbmcgPSB7Cj4gIAkJLm5hbWUgPSAicmVuZGVyIiwKPiBAQCAtNTEwLDEx ICs1MDksOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIAkJdG9wX2JpdHNf c29ydGVkW2ldID0gJnRvcF9iaXRzW2ldOwo+ICAJfQo+ICAKPiAtCS8qIEp1c3QgdG8gbWFrZSBz dXJlIHdlIG9wZW4gdGhlIHJpZ2h0IGRlYnVnZnMgZmlsZXMgKi8KPiAtCWRybV9mZCA9IGRybV9v cGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+IC0KPiAgCS8qIEdyYWIgYWNjZXNzIHRvIHRoZSBy ZWdpc3RlcnMgKi8KPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIGRy bV9mZCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lfZGV2LCAwLCAtMSk7Cj4g IAo+ICAJcmluZ19pbml0KCZyZW5kZXJfcmluZyk7Cj4gIAlpZiAoSVNfR0VONChkZXZpZCkgfHwg SVNfR0VONShkZXZpZCkpCj4gQEAgLTcxNyw2ICs3MTMsNSBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCj4gIAlmY2xvc2Uob3V0cHV0KTsKPiAgCj4gIAlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfZmluaSgpOwo+IC0JY2xvc2UoZHJtX2ZkKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2d1Y19sb2dnZXIuYyBiL3Rvb2xzL2ludGVsX2d1Y19sb2dn ZXIuYwo+IGluZGV4IDdjNjExNWE2Li4wMzFmZDg0ZCAxMDA2NDQKPiAtLS0gYS90b29scy9pbnRl bF9ndWNfbG9nZ2VyLmMKPiArKysgYi90b29scy9pbnRlbF9ndWNfbG9nZ2VyLmMKPiBAQCAtNDYs NyArNDYsNyBAQCBpbnQgdmVyYm9zaXR5X2xldmVsID0gMzsgLyogYnkgZGVmYXVsdCBjYXB0dXJl IGxvZ3MgYXQgbWF4IHZlcmJvc2l0eSAqLwo+ICB1aW50MzJfdCBwcm9kdWNlZCwgY29uc3VtZWQ7 Cj4gIHVpbnQ2NF90IHRvdGFsX2J5dGVzX3dyaXR0ZW47Cj4gIGludCBudW1fYnVmZmVycyA9IE5V TV9TVUJCVUZTOwo+IC1pbnQgcmVsYXlfZmQsIGRybV9mZCwgb3V0ZmlsZV9mZCA9IC0xOwo+ICtp bnQgcmVsYXlfZmQsIG91dGZpbGVfZmQgPSAtMTsKPiAgdWludDMyX3QgdGVzdF9kdXJhdGlvbiwg bWF4X2ZpbGVzaXplOwo+ICBwdGhyZWFkX2NvbmRfdCB1bmRlcmZsb3dfY29uZCwgb3ZlcmZsb3df Y29uZDsKPiAgYm9vbCBzdG9wX2xvZ2dpbmcsIGRpc2NhcmRfb2xkbG9ncywgY2FwdHVyaW5nX3N0 b3BwZWQ7Cj4gQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2xvZ19jb250cm9sKGJv b2wgZW5hYmxlX2xvZ2dpbmcpCj4gIAl1aW50NjRfdCB2YWw7Cj4gIAlpbnQgcmV0Owo+ICAKPiAt CWNvbnRyb2xfZmQgPSBpZ3RfZGVidWdmc19vcGVuKGRybV9mZCwgQ09OVFJPTF9GSUxFX05BTUUs IE9fV1JPTkxZKTsKPiArCWNvbnRyb2xfZmQgPSBpZ3RfZGVidWdmc19vcGVuKC0xLCBDT05UUk9M X0ZJTEVfTkFNRSwgT19XUk9OTFkpOwo+ICAJaWd0X2Fzc2VydF9mKGNvbnRyb2xfZmQgPj0gMCwg ImNvdWxkbid0IG9wZW4gdGhlIGd1YyBsb2cgY29udHJvbCBmaWxlXG4iKTsKPiAgCj4gIAl2YWwg PSBlbmFibGVfbG9nZ2luZyA/ICgodmVyYm9zaXR5X2xldmVsIDw8IDQpIHwgMHgxKSA6IDA7Cj4g QEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2ZsdXNoZXJfdGhyZWFkKHZvaWQp Cj4gIAo+ICBzdGF0aWMgdm9pZCBvcGVuX3JlbGF5X2ZpbGUodm9pZCkKPiAgewo+IC0JcmVsYXlf ZmQgPSBpZ3RfZGVidWdmc19vcGVuKGRybV9mZCwgUkVMQVlfRklMRV9OQU1FLCBPX1JET05MWSk7 Cj4gKwlyZWxheV9mZCA9IGlndF9kZWJ1Z2ZzX29wZW4oLTEsIFJFTEFZX0ZJTEVfTkFNRSwgT19S RE9OTFkpOwo+ICAJaWd0X2Fzc2VydF9mKHJlbGF5X2ZkID49IDAsICJjb3VsZG4ndCBvcGVuIHRo ZSBndWMgbG9nIGZpbGVcbiIpOwo+ICAKPiAgCS8qIFB1cmdlIHRoZSBvbGQvYm9vdC10aW1lIGxv Z3MgZnJvbSB0aGUgcmVsYXkgYnVmZmVyLgo+IEBAIC0zNzMsOSArMzczLDYgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAKPiAgCXByb2Nlc3NfY29tbWFuZF9saW5lKGFyZ2Ms IGFyZ3YpOwo+ICAKPiAtCS8qIEp1c3QgdG8gbWFrZSBzdXJlIHdlIG9wZW4gdGhlIHJpZ2h0IGRl YnVnZnMgZmlsZXMgKi8KPiAtCWRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVS X0lOVEVMKTsKPiAtCj4gIAlpbml0X21haW5fdGhyZWFkKCk7Cj4gIAo+ICAJLyogVXNlIGEgc2Vw YXJhdGUgdGhyZWFkIGZvciBmbHVzaGluZyB0aGUgbG9ncyB0byBhIGZpbGUgb24gZGlzay4KPiBA QCAtNDM2LDYgKzQzMyw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgCWZy ZWUocmVhZF9idWZmZXIpOwo+ICAJY2xvc2UocmVsYXlfZmQpOwo+ICAJY2xvc2Uob3V0ZmlsZV9m ZCk7Cj4gLQljbG9zZShkcm1fZmQpOwo+ICAJaWd0X2V4aXQoKTsKPiAgfQo+IGRpZmYgLS1naXQg YS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgYi90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKPiBp bmRleCA4MTM0MzBjOS4uMmVmNWQ0ZmQgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvaW50ZWxfaW5mb2Zy YW1lcy5jCj4gKysrIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCj4gQEAgLTEwODEsNyArMTA4 MSw2IEBAIHByaW50ZigiT3B0aW9uczpcbiIKPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKPiAgewo+ICAJaW50IG9wdDsKPiAtCWludCBkcm1fZmQ7Cj4gIAlpbnQgcmV0ID0gMDsK PiAgCVRyYW5zY29kZXIgdHJhbnNjb2RlciA9IFRSQU5TQ19JTlZBTElEOwo+ICAJRGlwVHlwZSBk aXAgPSBESVBfSU5WQUxJRDsKPiBAQCAtMTEwOCwxMSArMTEwNyw4IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCj4gIAlwcmludGYoIldBUk5JTkc6IFRoaXMgaXMganVzdCBhIGRl YnVnZ2luZyB0b29sISBEb24ndCBleHBlY3QgaXQgdG8gd29yayIKPiAgCSAgICAgICAiIHBlcmZl Y3RseTogdGhlIEtlcm5lbCBtaWdodCB1bmRvIG91ciBjaGFuZ2VzLlxuIik7Cj4gIAo+IC0JLyog SnVzdCB0byBtYWtlIHN1cmUgd2Ugb3BlbiB0aGUgcmlnaHQgZGVidWdmcyBmaWxlcyAqLwo+IC0J ZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfSU5URUwpOwo+IC0KPiAgCXBj aV9kZXYgPSBpbnRlbF9nZXRfcGNpX2RldmljZSgpOwo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQocGNpX2RldiwgMCwgZHJtX2ZkKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KHBjaV9kZXYsIDAsIC0xKTsKPiAgCWludGVsX2NoZWNrX3BjaCgpOwo+ICAKPiAgCWlmIChJU19H RU40KHBjaV9kZXYtPmRldmljZV9pZCkpCj4gQEAgLTEyNjEsNiArMTI1Nyw1IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAo+ICBvdXQ6Cj4gIAlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfZmluaSgpOwo+IC0JY2xvc2UoZHJtX2ZkKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBk aWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMgYi90b29scy9pbnRlbF9wYW5l bF9maXR0ZXIuYwo+IGluZGV4IDQ4YjJmZDg5Li4xMzdlZjYxYSAxMDA2NDQKPiAtLS0gYS90b29s cy9pbnRlbF9wYW5lbF9maXR0ZXIuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5j Cj4gQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF91c2FnZSh2b2lkKQo+ICAK PiAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIHsKPiAtCWludCBvcHQsIGRy bV9mZDsKPiArCWludCBvcHQ7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCWNoYXIgaW50ZWxfcGlwZSA9 ICdcMCc7Cj4gIAlpbnQgeCA9IDAsIHkgPSAwOwo+IEBAIC0yNzksMTEgKzI3OSw4IEBAIGludCBt YWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJICAgICAgICJ3aXRoIG92ZXJzY2FuIGNv bXBlbnNhdGlvbiBwcm9wZXJ0aWVzOiBpdCBpcyBqdXN0IGEgdGVtcG9yYXJ5ICIKPiAgCSAgICAg ICAic29sdXRpb24gdGhhdCBtYXkgb3IgbWF5IG5vdCB3b3JrLiBVc2UgaXQgYXQgeW91ciBvd24g cmlzay5cbiIpOwo+ICAKPiAtCS8qIEp1c3QgdG8gbWFrZSBzdXJlIHdlIG9wZW4gdGhlIHJpZ2h0 IGRlYnVnZnMgZmlsZXMgKi8KPiAtCWRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJ VkVSX0lOVEVMKTsKPiAtCj4gIAlwY2lfZGV2ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKPiAt CWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIGRybV9mZCk7Cj4gKwlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lfZGV2LCAwLCAtMSk7Cj4gIAlkZXZpZCA9IHBjaV9k ZXYtPmRldmljZV9pZDsKPiAgCj4gIAlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2aWQpKSB7Cj4gQEAg LTM0Niw2ICszNDMsNSBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCj4g IG91dDoKPiAgCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gLQljbG9zZShkcm1fZmQp Owo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWcuYyBi L3Rvb2xzL2ludGVsX3JlZy5jCj4gaW5kZXggZDZmODE4NDAuLjAwZDJhNGExIDEwMDY0NAo+IC0t LSBhL3Rvb2xzL2ludGVsX3JlZy5jCj4gKysrIGIvdG9vbHMvaW50ZWxfcmVnLmMKPiBAQCAtNTgs NyArNTgsNiBAQCBzdHJ1Y3QgY29uZmlnIHsKPiAgCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2 Owo+ICAJY2hhciAqbW1pb2ZpbGU7Cj4gIAl1aW50MzJfdCBkZXZpZDsKPiAtCWludCBkcm1fZmQ7 Cj4gIAo+ICAJLyogcmVhZDogbnVtYmVyIG9mIHJlZ2lzdGVycyB0byByZWFkICovCj4gIAl1aW50 MzJfdCBjb3VudDsKPiBAQCAtNDExLDcgKzQxMCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX3Jl YWQoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJaWYg KGNvbmZpZy0+bW1pb2ZpbGUpCj4gIAkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+ bW1pb2ZpbGUpOwo+ICAJZWxzZQo+IC0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZp Zy0+cGNpX2RldiwgMCwgY29uZmlnLT5kcm1fZmQpOwo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vz c19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwo+ICAKPiAgCWZvciAoaSA9IDE7IGkgPCBh cmdjOyBpKyspIHsKPiAgCQlzdHJ1Y3QgcmVnIHJlZzsKPiBAQCAtNDQxLDcgKzQ0MCw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfcmVnX3dyaXRlKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKPiAgCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwo+ICAJfQo+ICAKPiAtCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwgY29uZmlnLT5kcm1f ZmQpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5wY2lfZGV2LCAwLCAt MSk7Cj4gIAo+ICAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkgKz0gMikgewo+ICAJCXN0cnVjdCBy ZWcgcmVnOwo+IEBAIC00NzksNyArNDc4LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChz dHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAlpZiAoY29u ZmlnLT5tbWlvZmlsZSkKPiAgCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY29uZmlnLT5tbWlv ZmlsZSk7Cj4gIAllbHNlCj4gLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5w Y2lfZGV2LCAwLCBjb25maWctPmRybV9mZCk7Cj4gKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IGNvbmZp Zy0+cmVnY291bnQ7IGkrKykgewo+ICAJCXJlZyA9ICZjb25maWctPnJlZ3NbaV07Cj4gQEAgLTg3 OSw5ICs4NzgsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCWNvbmZp Zy5kZXZpZCA9IGNvbmZpZy5wY2lfZGV2LT5kZXZpY2VfaWQ7Cj4gIAl9Cj4gIAo+IC0JLyogSnVz dCB0byBtYWtlIHN1cmUgd2Ugb3BlbiB0aGUgcmlnaHQgZGVidWdmcyBmaWxlcyAqLwo+IC0JY29u ZmlnLmRybV9mZCA9IF9fZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gLQo+ICAJaWYg KHJlYWRfcmVnX3NwZWMoJmNvbmZpZykgPCAwKSB7Cj4gIAkJcmV0dXJuIEVYSVRfRkFJTFVSRTsK PiAgCX0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgYi90b29scy9pbnRl bF93YXRlcm1hcmsuYwo+IGluZGV4IGQ4Yzc4NDgwLi5kZTBiMDgzMSAxMDA2NDQKPiAtLS0gYS90 b29scy9pbnRlbF93YXRlcm1hcmsuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCj4g QEAgLTM0LDcgKzM0LDYgQEAKPiAgCj4gIHN0YXRpYyB1aW50MzJfdCBkaXNwbGF5X2Jhc2U7Cj4g IHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKPiAtc3RhdGljIGludCBkcm1fZmQ7Cj4gIAo+ICBzdGF0 aWMgdWludDMyX3QgcmVhZF9yZWcodWludDMyX3QgYWRkcikKPiAgewo+IEBAIC0xNDMsNyArMTQy LDcgQEAgc3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKPiAgCWludCBudW1fcGlwZXMgPSBp c19nZW43X3BsdXMoZGV2aWQpID8gMyA6IDI7Cj4gIAlzdHJ1Y3QgaWxrX3dtIHdtID0ge307Cj4g IAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg MCwgZHJtX2ZkKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDAsIC0xKTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVzOyBpKysp IHsKPiAgCQlkc3BjbnRyW2ldID0gcmVhZF9yZWcoMHg3MDE4MCArIGkgKiAweDEwMDApOwo+IEBA IC0yOTEsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgdmx2X3dtX2R1bXAodm9pZCkKPiAgCXVpbnQz Ml90IGRzcF9zc19wbSwgZGRyX3NldHVwMjsKPiAgCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExB TkVdID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSwgMCwgZHJtX2ZkKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiAgCj4gIAlkc3BhcmIgPSByZWFkX3JlZygw eDcwMDMwKTsKPiAgCWRzcGFyYjIgPSByZWFkX3JlZygweDcwMDYwKTsKPiBAQCAtNTA3LDcgKzUw Niw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCj4gIAl1aW50MzJfdCBtaV9hcmJf c3RhdGU7Cj4gIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9Owo+ICAKPiAtCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9m ZCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7Cj4gIAo+ICAJZHNwYWNudHIgPSByZWFkX3JlZygweDcwMTgwKTsKPiAgCWRzcGJj bnRyID0gcmVhZF9yZWcoMHg3MTE4MCk7Cj4gQEAgLTU5Myw3ICs1OTIsNyBAQCBzdGF0aWMgdm9p ZCBnZW40X3dtX2R1bXAodm9pZCkKPiAgCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsKPiAgCXN0cnVj dCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZHJtX2ZkKTsKPiArCWludGVsX3Jl Z2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiAgCj4g IAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKPiAgCWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQp Owo+IEBAIC02NjQsNyArNjYzLDcgQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKPiAg CXVpbnQzMl90IGNicjsKPiAgCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307Cj4g IAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg MCwgZHJtX2ZkKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lf ZGV2aWNlKCksIDAsIC0xKTsKPiAgCj4gIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKPiAg CWZ3MSA9IHJlYWRfcmVnKDB4NzAwMzQpOwo+IEBAIC03NTQsNyArNzUzLDcgQEAgc3RhdGljIHZv aWQgZ2VuM193bV9kdW1wKHZvaWQpCj4gIAl1aW50MzJfdCBtaV9hcmJfc3RhdGU7Cj4gIAlzdHJ1 Y3QgZ21jaF93bSB3bXNbTUFYX1BMQU5FXSA9IHt9Owo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7Cj4gKwlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gIAo+ ICAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7Cj4gIAlpbnN0cG0gPSByZWFkX3JlZygweDIw YzApOwo+IEBAIC04MjMsNyArODIyLDcgQEAgc3RhdGljIHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQp Cj4gIAl1aW50MzJfdCBtaV9zdGF0ZTsKPiAgCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVd ID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgMCwgZHJtX2ZkKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVs X2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiAgCj4gIAlkc3BhcmIgPSByZWFkX3JlZygweDcw MDMwKTsKPiAgCW1lbV9tb2RlID0gcmVhZF9yZWcoMHgyMGNjKTsKPiBAQCAtOTAwLDkgKzg5OSw2 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIHsKPiAgCWRldmlkID0gaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKS0+ZGV2aWNlX2lkOwo+ICAKPiAtCS8qIEp1c3QgdG8gbWFrZSBz dXJlIHdlIG9wZW4gdGhlIHJpZ2h0IGRlYnVnZnMgZmlsZXMgKi8KPiAtCWRybV9mZCA9IGRybV9v cGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsKPiAtCj4gIAlpZiAoSVNfVkFMTEVZVklF VyhkZXZpZCkgfHwgSVNfQ0hFUlJZVklFVyhkZXZpZCkpIHsKPiAgCQlkaXNwbGF5X2Jhc2UgPSAw eDE4MDAwMDsKPiAgCQl2bHZfd21fZHVtcCgpOwo+IEBAIC05MjMsNyArOTE5LDUgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCQlyZXR1cm4gMTsKPiAgCX0KPiAgCj4gLQlj bG9zZShkcm1fZmQpOwo+IC0KPiAgCXJldHVybiAwOwo+ICB9Cj4gLS0gCj4gMi4xNS4wCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK