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 148FC6E020 for ; Wed, 5 Sep 2018 00:48:13 +0000 (UTC) Message-ID: From: Dhinakaran Pandiyan Date: Tue, 04 Sep 2018 17:48:02 -0700 In-Reply-To: <20180901041806.2627-1-rodrigo.vivi@intel.com> References: <20180901041806.2627-1-rodrigo.vivi@intel.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 1/6] tools: Add a simple tool to read/write/decode dpcd registers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: dhinakaran.pandiyan@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: Rodrigo Vivi , igt-dev@lists.freedesktop.org, Tarun Vyas List-ID: T24gRnJpLCAyMDE4LTA4LTMxIGF0IDIxOjE4IC0wNzAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4g RnJvbTogVGFydW4gVnlhcyA8dGFydW4udnlhc0BpbnRlbC5jb20+Cj4gCj4gVGhpcyB0b29sIHNl cnZlcyBhcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBjb25zdHJ1Y3RzIHByb3ZpZGVkIGJ5IHRoZQo+ IGRybV9kcGNkX2F1eF9kZXYga2VybmVsIG1vZHVsZSBieSB3b3JraW5nIG9uIHRoZSAvZGV2L2Ry bV9kcF9hdXhbbl0KPiBkZXZpY2VzIGNyZWF0ZWQgYnkgdGhlIGtlcm5lbCBtb2R1bGUuCj4gSXQg c3VwcG9ydHMgcmVhZGluZyBhbmQgd3JpdGluZyBkcGNkIHJlZ2lzdGVycyBvbiB0aGUgY29ubmVj dGVkIGF1eAo+IGNoYW5uZWxzLgo+IEluIHRoZSBmb2xsb3ctdXAgcGF0Y2gsIHN1cHBvcnQgZm9y IGRlY29kaW5nIHRoZXNlIHJlZ2lzdGVycyB3aWxsIGJlCj4gYWRkZWQgdG8gZmFjaWxhdGUgZGVi dWdnaW5nIHBhbmVsIHJlbGF0ZWQgaXNzdWVzLgo+IAo+IHYyOiAoRml4ZXMgYnkgUm9kcmlnbyBi dXQgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHlldCk6Cj4gICAgIC0gSW5kZW50YXRpb25zLCBUeXBv LCBNaXNzZWQgc3BhY2VzCj4gICAgIC0gUmVtb3ZpbmcgbWVudGlvbmluZyB0byBkZWNvZGUgYW5k IHNwZWMgdGhhdCBpcyBub3QgaW1wbGVtZW50ZWQKPiB5ZXQuCj4gICAgIC0gQWRkIE1ha2VmaWxl LnNvdXJjZXMgYmFjawo+ICAgICAtIE1pc3NlZCBzL3ByaW50Zi9pZ3Rfd2Fybgo+IAo+IFN1Z2dl c3RlZC1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5j b20+Cj4gU2lnbmVkLW9mZi1ieTogVGFydW4gVnlhcyA8dGFydW4udnlhc0BpbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IC0t LQo+ICB0b29scy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPiAgdG9vbHMvZHBjZF9yZWcuYyAg ICAgICB8IDIwOQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IHRvb2xzL21lc29uLmJ1aWxkICAgICAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDIxMSBp bnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9kcGNkX3JlZy5jCj4gCj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2VmaWxlLnNvdXJjZXMgYi90b29scy9NYWtlZmlsZS5zb3Vy Y2VzCj4gaW5kZXggYWJkMjNhMGYuLjUwNzA2ZjQxIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL01ha2Vm aWxlLnNvdXJjZXMKPiArKysgYi90b29scy9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTcsNiArNyw3 IEBAIG5vaW5zdF9QUk9HUkFNUyA9CQlcCj4gIAo+ICB0b29sc19wcm9nX2xpc3RzID0JCVwKPiAg CWlndF9zdGF0cwkJXAo+ICsJZHBjZF9yZWcJCVwKPiAgCWludGVsX2F1ZGlvX2R1bXAJXAo+ICAJ aW50ZWxfcmVnCQlcCj4gIAlpbnRlbF9iYWNrbGlnaHQJCVwKPiBkaWZmIC0tZ2l0IGEvdG9vbHMv ZHBjZF9yZWcuYyBiL3Rvb2xzL2RwY2RfcmVnLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwLi4zOWRkZTJjOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi90b29scy9kcGNk X3JlZy5jCj4gQEAgLTAsMCArMSwyMDkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTgg SW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl Cj4gIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4gbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiBzdWJs aWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+IHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+IGNvbmRpdGlvbnM6Cj4gKyAqCj4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcKPiB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPiBwb3J0aW9ucyBvZiB0aGUKPiArICogU29m dHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+IEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+IE1FUkNIQU5UQUJJ TElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PCj4gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKPiBPUiBPVEhFUgo+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwKPiBBUklTSU5HIEZST00sCj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiBERUFMSU5HUyBJTiBUSEUK PiArICogU09GVFdBUkUuCj4gKyAqCj4gKyAqIERQQ0QgcmVnaXN0ZXIgcmVhZC93cml0ZSB0b29s Cj4gKyAqIFRoaXMgdG9vbCB3cmFwcyBhcm91bmQgRFJNX0RQX0FVWF9ERVYgbW9kdWxlIHRvIHBy b3ZpZGUgRFBDRAo+IHJlZ2lzdGVyIHJlYWQKPiArICogYW5kIHdyaXRlLCBzbyBDT05GSUdfRFJN X0RQX0FVWF9ERVYgbmVlZHMgdG8gYmUgc2V0Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpZ3Rf Y29yZS5oIgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4gKwo+ ICsjZGVmaW5lIElOVkFMSUQJMHhmZgo+ICsKPiArY29uc3QgY2hhciBhdXhfZGV2W10gPSAiL2Rl di9kcm1fZHBfYXV4IjsKPiArCj4gK3N0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNoYXIgKnRvb2ws IGludCBoZWxwKQo+ICt7Cj4gKwlpZ3RfaW5mbygiRFBDRCByZWdpc3RlciByZWFkIGFuZCB3cml0 ZSB0b29sXG5cbiIpOwo+ICsJaWd0X2luZm8oIlRoaXMgdG9vbCByZXF1aXJlcyBDT05GSUdfRFJN X0RQX0FVWF9DSEFSREVWXG4iCj4gKwkJICJ0byBiZSBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWcu XG5cbiIpOwo+ICsJaWd0X2luZm8oIlVzYWdlOiAlcyBbT1BUSU9OIC4uLl0gQ09NTUFORFxuXG4i LCB0b29sKTsKPiArCWlndF9pbmZvKCJDT01NQU5EIGlzIG9uZSBvZjpcbiIpOwo+ICsJaWd0X2lu Zm8oIiAgcmVhZDoJUmVhZCBbY291bnRdIGJ5dGVzIGRwY2QgcmVnIGF0IGFuCj4gb2Zmc2V0XG4i KTsKPiArCWlndF9pbmZvKCIgIHdyaXRlOglXcml0ZSBhIGRwY2QgcmVnIGF0IGFuCj4gb2Zmc2V0 XG5cbiIpOwo+ICsJaWd0X2luZm8oIk9wdGlvbnMgZm9yIHRoZSBhYm92ZSBDT01NQU5EUyBhcmVc biIpOwo+ICsJaWd0X2luZm8oIiAtLWRldmljZT1ERVZJRCAJQXV4IGRldmljZSBpZCwgYXMgbGlz dGVkCj4gaW4gL2Rldi9kcm1fZHBfYXV4X2RldltuXVxuIik7Cj4gKwlpZ3RfaW5mbygiIC0tb2Zm c2V0PVJFR19BRERSCURQQ0QgcmVnaXN0ZXIgb2Zmc2V0IGluCj4gaGV4XG4iKTsKPiArCWlndF9p bmZvKCIgLS1jb3VudD1CWVRFUwlGb3IgcmVhZHMsIHNwZWNpZnkgbnVtYmVyIG9mCj4gYnl0ZXMg dG8gYmUgcmVhZCBmcm9tIHRoZSBvZmZzZXRcbiIpOwo+ICsJaWd0X2luZm8oIiAtLXZhbD1CWVRF CQlGb3Igd3JpdGVzLCBzcGVjaWZ5IGEKPiBCWVRFIHNpemVkIHZhbHVlIHRvIGJlIHdyaXR0ZW5p XG5cbiIpOwpJIGRpZG4ndCBnZXQgdGhpcy4gSXNuJ3QgdGhlIHNpemUgYWx3YXlzIDEgYnl0ZT8K Cj4gKwo+ICsJaWd0X2luZm8oIiAtLWhlbHA6IHByaW50IHRoZSB1c2FnZVxuIik7Cj4gKwo+ICsJ ZXhpdCgoaGVscCA9PSAxKT8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKPiArfQo+ICsK PiArc3RhdGljIGludCBkcGNkX3JlYWQoY2hhciAqZGV2aWNlLCBjb25zdCB1aW50MzJfdCBvZmZz ZXQsIHNpemVfdAo+IGNvdW50KQo+ICt7Cj4gKwlpbnQgZmQsIHJldCwgaTsKPiArCXZvaWQgKmJ1 ZiA9IG1hbGxvYyhzaXplb2YodWludDhfdCkgKiBjb3VudCk7Cj4gKwo+ICsJaWYgKE5VTEwgIT0g YnVmKQo+ICsJCW1lbXNldChidWYsIDAsIHNpemVvZih1aW50OF90KSAqIGNvdW50KTsKY2FsbG9j KCkKCj4gKwllbHNlIHsKPiArCQlpZ3Rfd2FybigiQ2FuJ3QgYWxsb2NhdGUgcmVhZCBidWZmZXJc biIpOwo+ICsJCXJldHVybiBFWElUX0ZBSUxVUkU7Cj4gKwl9Cj4gKwo+ICsJZmQgPSBvcGVuKGRl dmljZSwgT19SRE9OTFkpOwo+ICsJaWYgKGZkID4gMCkgewowIGlzIHZhbGlkLCBpc24ndCBpdD8K Cj4gKwkJcmV0ID0gcHJlYWQoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7Cj4gKwkJY2xvc2UoZmQp Owo+ICsJCWlmIChyZXQgIT0gY291bnQpIHsKPiArCQkJaWd0X3dhcm4oIkZhaWxlZCB0byByZWFk IGZyb20gJXMgYXV4IGRldmljZQo+IC0gZXJyb3IgJXNcbiIsIGRldmljZSwgc3RyZXJyb3IoZXJy bm8pKTsKPiArCQkJcmV0ID0gRVhJVF9GQUlMVVJFOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9CgpD aGVjayBlcnJubyBhbmQgcmV0dXJuIHRvIHRoZSB1c2VyLgoKPiArCj4gKwkJaWd0X2luZm8oIlJl YWQgJXp1IGJ5dGUocykgc3RhcnRpbmcgYXQgb2Zmc2V0Cj4gJXhcblxuIiwgY291bnQsIG9mZnNl dCk7CmlndF9pbmZvKCkgaXNuJ3QgbmVlZGVkLCBhbnkgcmVhc29uIG5vdCB0byBwcmludCB0byBz dGRvdXQgZGlyZWN0bHk/CkFwcGxpZXMgdG8gaWd0X2ZvbygpIGZ1bmN0aW9ucyB5b3UgYXJlIHVz aW5nLgoKPiArCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKPiArCQkJaWd0X2luZm8oIiV4 XG4iLCAqKCgodWludDhfdCAqKShidWYpKSArIGkpKTsKPiArCX0KPiArCWVsc2Ugewo+ICsJCWln dF93YXJuKCJGYWlsZWQgdG8gb3BlbiAlcyBhdXggZGV2aWNlIC0gZXJyb3I6Cj4gJXNcbiIsIGRl dmljZSwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQlyZXQgPSBFWElUX0ZBSUxVUkU7Cj4gKwl9Cj4g K291dDoKPiArCWZyZWUoYnVmKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgZHBjZF93cml0ZShjaGFyICpkZXZpY2UsIGNvbnN0IHVpbnQzMl90IG9mZnNldCwgY29uc3QK PiB1aW50OF90ICp2YWwpCj4gK3sKPiArCWludCBmZCwgcmV0Owo+ICsKPiArCWZkID0gb3Blbihk ZXZpY2UsIE9fUkRXUik7Cj4gKwlpZiAoZmQgPiAwKSB7Cj4gKwkJcmV0ID0gcHdyaXRlKGZkLCAo Y29uc3Qgdm9pZCAqKXZhbCwgc2l6ZW9mKHVpbnQ4X3QpLAogCldoeSBwYXNzIHZhbCBhcyBhIHBv aW50ZXIgaWYgaXQncyBhIGp1c3QgYSAxIGJ5dGUgdmFsdWU/CgoKPiBvZmZzZXQpOwoKT2Zmc2V0 IG5lZWRzIGNoZWNrcyBmb3IgYm91bmRhcmllcy4KCj4gKwkJY2xvc2UoZmQpOwo+ICsJCWlmIChy ZXQgPCAwKSB7Cj4gKwkJCWlndF93YXJuKCJGYWlsZWQgdG8gd3JpdGUgdG8gJXMgYXV4IGRldmlj ZSAtCj4gZXJyb3IgJXNcbiIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQkJcmV0ID0g RVhJVF9GQUlMVVJFOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwkJcmV0ID0gZHBjZF9yZWFk KGRldmljZSwgb2Zmc2V0LCBzaXplb2YodWludDhfdCkpOwo+ICsJfQpXaHkgcmVhZCBiYWNrPyBM ZXQgdGhlIHVzZXIgZGVjaWRlIHRvIHJlYWQgYmFjay4KCj4gKwllbHNlIHsKPiArCQlpZ3Rfd2Fy bigiRmFpbGVkIHRvIG9wZW4gJXMgYXV4IGRldmljZSAtIGVycm9yOgo+ICVzXG4iLCBkZXZpY2Us IHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJcmV0ID0gRVhJVF9GQUlMVVJFOwo+ICsJfQo+ICtvdXQ6 Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCj4gK3sKPiArCWNoYXIgZGV2X25hbWVbMjBdOwo+ICsJaW50IHJldCwgZGV2aWQsIGhlbHBf ZmxnOwo+ICsJdWludDMyX3Qgb2Zmc2V0Owo+ICsJdWludDhfdCB2YWw7Cj4gKwlzaXplX3QgY291 bnQ7Cj4gKwo+ICsJZW51bSBjb21tYW5kIHsKPiArCQlJTlYgPSAtMSwKPiArCQlSRUFEID0gMiwK PiArCQlXUklURSwKPiArCX0gY21kID0gSU5WOwo+ICsKPiArCXN0cnVjdCBvcHRpb24gbG9uZ29w dHMgW10gPSB7Cj4gKwkJewo+ICJjb3VudCIsICAgICAgcmVxdWlyZWRfYXJndW1lbnQsICAgICAg TlVMTCwgICAgICAnYycgfSwKPiArCQl7ICJkZXZpY2UiLAlyZXF1aXJlZF9hcmd1bWVudCwJTlVM TCwgCgpNYWtlIHRoaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHQgdG8gZGV2aWNlIElEIDA/Cj4gICAg ICAnZCcgfSwKPiArCQl7ICJoZWxwIiwgCW5vX2FyZ3VtZW50LCAJCSZoZWxwCgkJCSBeCQkgICAg XiB3aGl0ZSBzcGFjZQo+IF9mbGcsICAyICB9LApXaHkgbm90ICdoJz8KCj4gKwkJeyAib2Zmc2V0 IiwJcmVxdWlyZWRfYXJndW1lbnQsCU5VTEwsCgkJICAib2Zmc2V0IGluIGhleCIgPwo+IAkgICAn bycgfSwKPiArCQl7ICJ2YWwiLAlyZXF1aXJlZF9hcmd1bWVudCwJTlVMTCwJCj4gICAgJ3YnIH0s CgkJInZhbHVlIGluIGhleCIKPiArCQl7IDAgfQo+ICsJfTsKPiArCj4gKwlvZmZzZXQgPSB2YWwg PSBjb3VudCA9IElOVkFMSUQ7Cj4gKwlkZXZpZCA9IC0xOwo+ICsKPiArCXdoaWxlICgocmV0ID0g Z2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIi06YzpkOm86czo6djoiLAo+IGxvbmdvcHRzLCBOVUxM KSkgIT0gLTEpIHsKPiArCQlzd2l0Y2ggKHJldCkgewo+ICsJCWNhc2UgJ2MnOgo+ICsJCQljb3Vu dCA9IHN0cnRvdWwob3B0YXJnLCBOVUxMLCAxMCk7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgJ2Qn Ogo+ICsJCQlkZXZpZCA9IHN0cnRvdWwob3B0YXJnLCBOVUxMLCAxMCk7Cj4gKwkJCWJyZWFrOwo+ ICsJCWNhc2UgJ28nOgo+ICsJCQlvZmZzZXQgPSBzdHJ0b3VsKG9wdGFyZywgTlVMTCwgMTYpOwo+ ICsJCQlicmVhazsKPiArCQljYXNlICd2JzoKPiArCQkJdmFsID0gc3RydG91bChvcHRhcmcsIE5V TEwsIDE2KTsKQ2hlY2sgZm9yIGVycm9yIHJldHVybnMuCgo+ICsJCQlicmVhazsKPiArCQkvKiBG YWxsIHRocm91Z2ggZm9yIC0taGVscCAqLwpUaGVyZSBpcyBubyBmYWxsIHRocm91Z2ggaGVyZSBe Cgo+ICsJCWNhc2UgMDoKPiArCQkJYnJlYWs7Cj4gKwkJLyogQ29tbWFuZCBwYXJzaW5nICovCj4g KwkJY2FzZSAxOgpXaGVuIGlzIDEgcmV0dXJuZWQ/Cgo+ICsJCQlpZiAoc3RyY21wKG9wdGFyZywg InJlYWQiKSA9PSAwKQo+ICsJCQkJY21kID0gUkVBRDsKPiArCQkJZWxzZSBpZiAoc3RyY21wKG9w dGFyZywgIndyaXRlIikgPT0gMCkKPiArCQkJCWNtZCA9IFdSSVRFOwo+ICsJCQlicmVhazsKPiAr CQljYXNlICc6JzoKPiArCQkJaWd0X3dhcm4oIlRoZSAtJWMgb3B0aW9uIG9mICVzIHJlcXVpcmVz IGFuIAoKV2h5IHVzZSBpZ3Rfd2FybigpIGluc2lkZSBhIHRvb2w/IFRoYXQgaXMgbWVhbnQgZm9y IHRlc3RzLApwcmludF91c2FnZSgpIGlzIHN1ZmZpY2llbnQgaGVyZS4KCj4gYXJndW1lbnRcbiIs Cj4gKwkJCQkgb3B0b3B0LCBhcmd2WzBdKTsKPiArCQkJcHJpbnRfdXNhZ2UoYXJndlswXSwgMCk7 CgpUaGUgc2Vjb25kIGFyZ3VtZW50IGxvb2tzIG9kZCwgcHJpbnRfdXNhZ2UoKSBiYXJlbHkgZG9l cyBhbnl0aGluZyB3aXRoCml0LiAKCgo+ICsJCWNhc2UgJz8nOgo+ICsJCWRlZmF1bHQgOgo+ICsJ CQlpZ3Rfd2FybigiJXMgLSBvcHRpb24gJWMgaXMgaW52YWxpZFxuIiwKPiBhcmd2WzBdLAo+ICsJ CQkJIG9wdG9wdCk7Cj4gKwkJCXByaW50X3VzYWdlKGFyZ3ZbMF0sIDApOwo+ICsJCX0KPiArCX0K PiArCj4gKwlpZiAoaGVscF9mbGcgPT0gMikKPiArCQlwcmludF91c2FnZShhcmd2WzBdLCAxKTsK PiArCj4gKwlpZiAoZGV2aWQgPT0gLTEgfHwgb2Zmc2V0ID09IElOVkFMSUQpIHsKPiArCQlpZ3Rf d2FybigiQXV4IGRldmljZSBpZCBhbmQvb3Igb2Zmc2V0IG1pc3NpbmdcbiIpOwpVc2luZyBhIGRl ZmF1bHQgZGV2IElEIHdpbGwgYXZvaWQgdGhpcy4KCj4gKwkJcHJpbnRfdXNhZ2UoYXJndlswXSwg MCk7Cj4gKwl9Cj4gKwo+ICsJbWVtc2V0KGRldl9uYW1lLCAnXDAnLCAyMCk7Cj4gKwlzbnByaW50 ZihkZXZfbmFtZSwgc2l6ZW9mKGF1eF9kZXYpICsgMiwgIiVzJWQiLCBhdXhfZGV2LAo+IGRldmlk KTsKClVzZSBzdHJsZW4oKSBhbmQgZG8gdGhpcyBhZnRlciB2YWxpZGF0aW5nIGFsbCBhcmd1bWVu dHMuCj4gKwo+ICsJc3dpdGNoIChjbWQpIHsKPiArCWNhc2UgUkVBRDoKPiArCQlpZiAoY291bnQg PT0gSU5WQUxJRCkgewo+ICsJCQlpZ3Rfd2FybigiUGxlYXNlIHNwZWNpZnkgdGhlIGNvdW50IGlu Cj4gYnl0ZXNcbiIpOwo+ICsJCQlwcmludF91c2FnZShhcmd2WzBdLCAwKTsKPiArCQl9Cj4gKwkJ cmV0ID0gZHBjZF9yZWFkKGRldl9uYW1lLCBvZmZzZXQsIGNvdW50KTsKPiArCQlicmVhazsKPiAr CWNhc2UgV1JJVEU6Cj4gKwkJaWYgKHZhbCA9PSBJTlZBTElEKSB7Cj4gKwkJCWlndF93YXJuKCJX cml0ZSB2YWx1ZSBpcyBtaXNzaW5nXG4iKTsKPiArCQkJcHJpbnRfdXNhZ2UoYXJndlswXSwgMCk7 Cj4gKwkJfQo+ICsJCXJldCA9IGRwY2Rfd3JpdGUoZGV2X25hbWUsIG9mZnNldCwgJnZhbCk7Cj4g KwkJYnJlYWs7Cj4gKwljYXNlIElOVjoKPiArCWRlZmF1bHQ6Cj4gKwkJaWd0X3dhcm4oIlBsZWFz ZSBzcGVjaWZ5IGEgY29tbWFuZDogcmVhZC93cml0ZS4gU2VlCj4gdXNhZ2VcbiIpOwo+ICsJCXBy aW50X3VzYWdlKGFyZ3ZbMF0sIDApOwo+ICsJfQo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiBk aWZmIC0tZ2l0IGEvdG9vbHMvbWVzb24uYnVpbGQgYi90b29scy9tZXNvbi5idWlsZAo+IGluZGV4 IGU0NTE3ZDY2Li43OWYzNmFhOSAxMDA2NDQKPiAtLS0gYS90b29scy9tZXNvbi5idWlsZAo+ICsr KyBiL3Rvb2xzL21lc29uLmJ1aWxkCj4gQEAgLTM2LDYgKzM2LDcgQEAgdG9vbHNfcHJvZ3MgPSBb Cj4gIAknaW50ZWxfd2F0ZXJtYXJrJywKPiAgCSdpbnRlbF9nZW1faW5mbycsCj4gIAknaW50ZWxf Z3Z0Z190ZXN0JywKPiArCSdkcGNkX3JlZycsCj4gIF0KPiAgdG9vbF9kZXBzID0gaWd0X2RlcHMK PiAgCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1k ZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=