From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id B0AA36E197 for ; Tue, 21 Aug 2018 14:58:21 +0000 (UTC) Date: Tue, 21 Aug 2018 07:58:20 -0700 From: Rodrigo Vivi Message-ID: <20180821145820.GA2159@intel.com> References: <20180821001204.3385-1-rodrigo.vivi@intel.com> <877ekkb1xw.fsf@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <877ekkb1xw.fsf@intel.com> Subject: Re: [igt-dev] [RFC] tools/dpcd_dump: Introduce DPCD dump on IGT. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Jani Nikula Cc: igt-dev@lists.freedesktop.org, Rafael Antognolli , Dhinakaran Pandiyan List-ID: T24gVHVlLCBBdWcgMjEsIDIwMTggYXQgMTA6NDI6MzVBTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gTW9uLCAyMCBBdWcgMjAxOCwgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPiB3cm90ZToKPiA+IFRoZSBpZGVhIGlzIHRvIHJlbW92ZSB0aGUgZHVtcCBmcm9tIGk5 MTUncyBkZWJ1Z2ZzLCBidXQKPiA+IGJlZm9yZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8ga2VlcCB0 aGUgY3VycmVudCBkZWJ1ZyBkcGNkIGxpc3QKPiA+IGFuZCBJR1Qgc2VlbXMgYSBnb29kIHBsYWNl IHRvIGhhdmUgc29tZSBmbGV4aWJpbGl0eS4KPiAKPiBTZWUgYWxzbyBbMV0uIEknbSBub3Qgc3Vy ZSB3aGF0IHRoZSBzdGF0dXMgaXMgbm93LiBUYXJ1bj8KCm9oLCBJIGhhZCBtaXNzZWQgdGhhdCwg c29ycnkuCkkgbm93IHJlbWVtYmVyIFRhcnVuIGFuZCBESyB0YWxraW5nIGFib3V0IHRoYXQgYnV0 IEkgaGFkIGZvcmdvdHRlbi4uLgoKPiAKPiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBoYXZlIGJv dGggYXMgc2VwYXJhdGUgYmluYXJpZXMuCgpJIGFncmVlISBUYXJ1biwgZmVlbCBmcmVlIHRvIGdl dCBteSBkdW1wIGZ1bmN0aW9ucyBhbmQgbWVyZ2UgdG8geW91cgp3b3JrLgoKbWF5YmUgbXkgb25l IGNvdWxkIGJlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHlvdXJzIHdoZW4gbm8gY29uZGl0aW9uCmlz IGdpdmluZy4KCk15IGlkZWEgaXMgdG8gc3RhcnQgd2l0aCB0aGUgY3VycmVudCBkdW1wIHRoYXQg d2UgaGF2ZSBpbiBkZWJ1Z2ZzCmFuZCBsYXRlciB0byBleHBhbmQgdGhhdCB0byBiZSBtb3JlIGdl bmVyaWMgbGlrZSBpbiBhIHR4dCBsaXN0IGxpa2UKd2UgaGF2ZSBmb3IgaW50ZWxfcmVnLgoKVGhh bmtzLApSb2RyaWdvLgoKPiAKPiBCUiwKPiBKYW5pLgo+IAo+IAo+IFsxXSBodHRwOi8vcGF0Y2h3 b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9tc2dpZC8yMDE4MDYxNDA3MTE0MS4xNDQyNzUtMS10 YXJ1bi52eWFzQGludGVsLmNvbQo+IAo+IAo+ID4KPiA+IEZJWE1FOiBmZmZmZiB0cmFzaC4uLgo+ ID4KPiA+IEN1cnJlbnQgZGVidWdmczoKPiA+Cj4gPiAkIHN1ZG8gY2F0IC9zeXMva2VybmVsL2Rl YnVnL2RyaS8wL0RQLTEvaTkxNV9kcGNkCj4gPiAwMDAwOiAxMiAxNCBjNCAwMSAwMSAwMCAwMSAw MCAwMiAwMiAwNiAwMCAwMCAwMCAwMgo+ID4gMDA3MDogMDAgMDAKPiA+IDAwODA6IDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPiAwMTAwOiAxNCA4NCAw MCAwNiAwNiAwNiAwNiAwMCAwMSAwNCAwMAo+ID4gMDIwMDogNDEgMDAgNzcgNzcgMDEgMDMgMjIg MjIKPiA+IDA2MDA6IDAxCj4gPiAwNzAwOiAwMQo+ID4gMDcwMTogMDAgMDAgMDAgMDAKPiA+IDA3 MjA6IDAwIDAxIDAwIDAwIDAwIDAxIDAxIDAwIDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAxCj4gPiAw NzMyOiAwMCAwMAo+ID4KPiA+ICQgc3VkbyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvZHJpLzAvZURQ LTEvaTkxNV9kcGNkCj4gPiAwMDAwOiAxMiAxNCA4NCA0MCAwMCAwMCAwMSAwMSAwMiAwMCAwMCAw MCAwMCAwYiAwMAo+ID4gMDA3MDogMDEgMDAKPiA+IDAwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPiAwMTAwOiAxNCAwNCAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMAo+ID4gMDIwMDogNDEgMDAgMDAgMDAgODAgMDAgNjYgNjYKPiA+IDA2MDA6 IDAxCj4gPiAwNzAwOiAwMgo+ID4gMDcwMTogOWYgNDAgMDAgMDAKPiA+IDA3MjA6IDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPiAwNzMyOiAwMCAwMAo+ ID4KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ID4KPiA+IEN1cnJlbnQgZHBjZF9kdW1wIHByb3Bvc2VkIGhlcmU6Cj4gPiAkIHN1 ZG8gLi9idWlsZC90b29scy9kcGNkX2R1bXAKPiA+Cj4gPiBEdW1waW5nIERQRERDLUIKPiA+IDoK PiA+IDAwMDA6ICAxMiAxNCBmZmZmZmZjNCAwMSAwMSAwMCAwMSAwMCAwMiAwMiAwNiAwMCAwMCAw MCAwMgo+ID4gMDA3MDogIDAwIDAwCj4gPiAwMDgwOiAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPiA+IDAxMDA6ICAxNCBmZmZmZmY4NCAwMCAwNiAwNiAw NiAwNiAwMCAwMSAwNCAwMAo+ID4gMDIwMDogIDQxIDAwIDc3IDc3IDAxIDAzIDIyIDIyCj4gPiAw NjAwOiAgMDEKPiA+IDA3MDA6ICAwMQo+ID4gMDcwMTogIDAwIDAwIDAwIDAwCj4gPiAwNzIwOiAg MDAgMDEgMDAgMDAgMDAgMDEgMDEgMDAgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDEKPiA+IDA3MzI6 ICAwMCAwMAo+ID4KPiA+IERQQ0QgRFBEREMtQwo+ID4gIHNlZW1zIG5vdCBhdmFpbGFibGUuIHNr aXBwaW5nLi4uCj4gPiBEdW1waW5nIERQRERDLUEKPiA+IDoKPiA+IDAwMDA6ICAxMiAxNCBmZmZm ZmY4NCA0MCAwMCAwMCAwMSAwMSAwMiAwMCAwMCAwMCAwMCAwYiAwMAo+ID4gMDA3MDogIDAxIDAw Cj4gPiAwMDgwOiAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAKPiA+IDAxMDA6ICAxNCAwNCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMAo+ID4gMDIwMDog IDQxIDAwIDAwIDAwIGZmZmZmZjgwIDAwIDY2IDY2Cj4gPiAwNjAwOiAgMDEKPiA+IDA3MDA6ICAw Mgo+ID4gMDcwMTogIGZmZmZmZjlmIDQwIDAwIDAwCj4gPiAwNzIwOiAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPiA+IDA3MzI6ICAwMCAwMAo+ID4KPiA+ IENjOiBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFudG9nbm9sbGlAaW50ZWwuY29tPgo+ID4g Q2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPiBDYzogRGhpbmFrYXJh biBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2Zm LWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICB0 b29scy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPiA+ICB0b29scy9kcGNkX2R1bXAuYyAgICAg IHwgMTUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgdG9v bHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5z ZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9kcGNkX2R1bXAuYwo+ID4K PiA+IGRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5zb3VyY2VzIGIvdG9vbHMvTWFrZWZpbGUu c291cmNlcwo+ID4gaW5kZXggYWJkMjNhMGYuLmY0OTIxZjgzIDEwMDY0NAo+ID4gLS0tIGEvdG9v bHMvTWFrZWZpbGUuc291cmNlcwo+ID4gKysrIGIvdG9vbHMvTWFrZWZpbGUuc291cmNlcwo+ID4g QEAgLTYsNiArNiw3IEBAIG5vaW5zdF9QUk9HUkFNUyA9CQlcCj4gPiAgCSQoTlVMTCkKPiA+ICAK PiA+ICB0b29sc19wcm9nX2xpc3RzID0JCVwKPiA+ICsJZHBjZF9kdW1wCQlcCj4gPiAgCWlndF9z dGF0cwkJXAo+ID4gIAlpbnRlbF9hdWRpb19kdW1wCVwKPiA+ICAJaW50ZWxfcmVnCQlcCj4gPiBk aWZmIC0tZ2l0IGEvdG9vbHMvZHBjZF9kdW1wLmMgYi90b29scy9kcGNkX2R1bXAuYwo+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwLi4xYjk4OWU1Mwo+ID4gLS0tIC9k ZXYvbnVsbAo+ID4gKysrIGIvdG9vbHMvZHBjZF9kdW1wLmMKPiA+IEBAIC0wLDAgKzEsMTUyIEBA Cj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4g KyAqCj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ID4g KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ICsgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAo+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ICsgKgo+ ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiArICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ICsgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiA+ICsgKiBJTiBUSEUgU09GVFdB UkUuCj4gPiArICoKPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiA+ICsj aW5jbHVkZSA8c3RkbGliLmg+Cj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4gKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KPiA+ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiA+ICsjaW5jbHVkZSA8 ZmNudGwuaD4KPiA+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4gPiArI2luY2x1ZGUgPHN0cmluZy5o Pgo+ID4gKwo+ID4gK3N0cnVjdCBkcGNkX2Jsb2NrIHsKPiA+ICsJLyogRFBDRCBkdW1wIHN0YXJ0 IGFkZHJlc3MuICovCj4gPiArCXVuc2lnbmVkIGludCBvZmZzZXQ7Cj4gPiArCS8qIERQQ0QgZHVt cCBzaXplLiBJZiB1bnNldCwgZGVmYXVsdHMgdG8gMS4gKi8KPiA+ICsJc2l6ZV90IHNpemU7Cj4g PiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRwY2RfYmxvY2sgZHBjZF9kdW1w W10gPSB7Cj4gPiArCS8qIERQX0RQQ0RfUkVWICovCj4gPiArCXsgLm9mZnNldCA9IDAsIC5zaXpl ID0gMTUgfSwKPiA+ICsJLyogRFBfUFNSX1NVUFBPUlQgdG8gRFBfUFNSX0NBUFMqLwo+ID4gKwl7 IC5vZmZzZXQgPSAgMHg3MCwgLnNpemUgPSAyIH0sCj4gPiArCS8qIERQX0RPV05TVFJFQU1fUE9S VF8wICovCj4gPiArCXsgLm9mZnNldCA9ICAweDgwLCAuc2l6ZSA9IDE2IH0sCj4gPiArCS8qIERQ X0xJTktfQldfU0VUIHRvIERQX0VEUF9DT05GSUdVUkFUSU9OX1NFVCAqLwo+ID4gKwl7IC5vZmZz ZXQgPSAweDEwMCwgLnNpemUgPSAxMSB9LAo+ID4gKwkvKiBEUF9TSU5LX0NPVU5UIHRvIERQX0FE SlVTVF9SRVFVRVNUX0xBTkUyXzMgKi8KPiA+ICsJeyAub2Zmc2V0ID0gMHgyMDAsIC5zaXplID0g OCB9LAo+ID4gKwkvKiBEUF9TRVRfUE9XRVIgKi8KPiA+ICsJeyAub2Zmc2V0ID0gMHg2MDAgfSwK PiA+ICsJLyogRFBfRURQX0RQQ0RfUkVWICovCj4gPiArCXsgLm9mZnNldCA9ICAweDcwMCB9LAo+ ID4gKwkvKiBEUF9FRFBfR0VORVJBTF9DQVBfMSB0byBEUF9FRFBfR0VORVJBTF9DQVBfMyAqLwo+ ID4gKwl7IC5vZmZzZXQgPSAweDcwMSwgLnNpemUgPSA0IH0sCj4gPiArCS8qIERQX0VEUF9ESVNQ TEFZX0NPTlRST0xfUkVHSVNURVIgdG8gRFBfRURQX0JBQ0tMSUdIVF9GUkVRX0NBUF9NQVhfTFNC ICovCj4gPiArCXsgLm9mZnNldCA9IDB4NzIwLCAuc2l6ZSA9IDE2fSwKPiA+ICsJLyogRFBfRURQ X0RCQ19NSU5JTVVNX0JSSUdIVE5FU1NfU0VUIHRvIERQX0VEUF9EQkNfTUFYSU1VTV9CUklHSFRO RVNTX1NFVCAqLwo+ID4gKwl7IC5vZmZzZXQgPSAgMHg3MzIsIC5zaXplID0gMiB9LAo+ID4gK307 Cj4gPiArCj4gPiArdm9pZCBkdW1wX2FsbChpbnQgZmQpCj4gPiArewo+ID4gKwlpbnQgcmV0LCBp LCBqLCBzaXplOwo+ID4gKyAgICAgICAgY2hhciBidWZbMzJdOwo+ID4gKwo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgc2l6ZW9mKGRwY2RfZHVtcCkgLyBzaXplb2YoZHBjZF9kdW1wWzBdKTsgaSsrKSB7 Cj4gPiArCQlyZXQgPSBsc2VlayhmZCwgZHBjZF9kdW1wW2ldLm9mZnNldCwgU0VFS19TRVQpOwo+ ID4gKwkJaWYgKHJldCA8IDApIHsKPiA+ICsJCQlmcHJpbnRmKHN0ZGVyciwgImxzZWVrIHRvICUw NHggZmFpbGVkIVxuIiwgZHBjZF9kdW1wW2ldLm9mZnNldCk7Cj4gPiArCQkJcmV0dXJuOwo+ID4g KwkJfQo+ID4gKwo+ID4gKwkJc2l6ZSA9IGRwY2RfZHVtcFtpXS5zaXplID8gZHBjZF9kdW1wW2ld LnNpemU6IDE7Cj4gPiArCQlwcmludGYoIiUwNHg6ICIsIGRwY2RfZHVtcFtpXS5vZmZzZXQpOwo+ ID4gKwkJcmV0ID0gcmVhZChmZCwgJmJ1Ziwgc2l6ZSk7Cj4gPiArCQlpZiAocmV0IDwgMCkgewo+ ID4gKwkJCWZwcmludGYoc3RkZXJyLCAicmVhZCBvZiAlZCBieXRlcyB0byAlMDR4IGZhaWxlZCFc biIsIHNpemUsIGRwY2RfZHVtcFtpXS5vZmZzZXQpOwo+ID4gKwkJCXJldHVybjsKPiA+ICsJCX0K PiA+ICsKPiA+ICsJCWZvciAoaiA9IDA7IGogPCBzaXplOyBqKyspCj4gPiArCQkJcHJpbnRmKCIg JTAyeCIsIGJ1ZltqXSk7Cj4gPiArCQlwcmludGYoIlxuIik7Cj4gPiArCX0KPiA+ICt9Cj4gPiAr Cj4gPiAraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ID4gK3sKPiA+ICsJc3RydWN0 IGRpcmVudCAqZGlyZW50Owo+ID4gKwlESVIgKmRpcjsKPiA+ICsJY2hhciBkZXZfcGF0aFtQQVRI X01BWF07Cj4gPiArCWNoYXIgc3lzZnNfcGF0aFtQQVRIX01BWF07Cj4gPiArCWludCBkZXZfZmQs IHN5c2ZzX2ZkLCByZXQgPSAwOwo+ID4gKwljaGFyIGRwY2RfbmFtZVs4XTsKPiA+ICsJY2hhciBk aXNjYXJkOwo+ID4gKwo+ID4gKwlkaXIgPSBvcGVuZGlyKCIvc3lzL2NsYXNzL2RybV9kcF9hdXhf ZGV2LyIpOwo+ID4gKwlpZiAoIWRpcikgewo+ID4gKwkJZnByaW50ZihzdGRlcnIsICJmYWlsIHRv IHJlYWQgL2RldlxuIik7Cj4gPiArCQlyZXR1cm4gLTE7Cj4gPiArCX0KPiA+ICsKPiA+ICsJd2hp bGUgKChkaXJlbnQgPSByZWFkZGlyKGRpcikpKSB7Cj4gPiArCQlpZiAoc3RybmNtcChkaXJlbnQt PmRfbmFtZSwgImRybV9kcF9hdXgiLCAxMCkgPT0gMCkgewo+ID4gKwkJCXNwcmludGYoZGV2X3Bh dGgsICIvZGV2LyVzIiwgZGlyZW50LT5kX25hbWUpOwo+ID4gKwkJCXNwcmludGYoc3lzZnNfcGF0 aCwgIi9zeXMvY2xhc3MvZHJtX2RwX2F1eF9kZXYvJXMvbmFtZSIsCj4gPiArCQkJCWRpcmVudC0+ ZF9uYW1lKTsKPiA+ICsKPiA+ICsJCQlzeXNmc19mZCA9IG9wZW4oc3lzZnNfcGF0aCwgT19SRE9O TFkpOwo+ID4gKwkJCWlmIChzeXNmc19mZCA8IDApIHsKPiA+ICsJCQkJZnByaW50ZihzdGRlcnIs ImZhaWwgdG8gb3BlbiAlc1xuIiwgc3lzZnNfcGF0aCk7Cj4gPiArCQkJCWNvbnRpbnVlOwo+ID4g KwkJCX0KPiA+ICsKPiA+ICsJCQlkZXZfZmQgPSBvcGVuKGRldl9wYXRoLCBPX1JET05MWSk7Cj4g PiArCQkJaWYgKGRldl9mZCA8IDApIHsKPiA+ICsJCQkJZnByaW50ZihzdGRlcnIsImZhaWwgdG8g b3BlbiAlc1xuIiwgZGV2X3BhdGgpOwo+ID4gKwkJCQljb250aW51ZTsKPiA+ICsJCQl9Cj4gPiAr Cj4gPiArCQkJcmV0ID0gcmVhZChzeXNmc19mZCwgJmRwY2RfbmFtZSwgc2l6ZW9mKGRwY2RfbmFt ZSkpOwo+ID4gKwkJCWlmIChyZXQgPCAwKSB7Cj4gPiArCQkJCWZwcmludGYoc3RkZXJyLCAiZmFp bCB0byByZWFkIGRwY2QgbmFtZSBmcm9tICVzXG5cbiIsIHN5c2ZzX3BhdGgpOwo+ID4gKwkJCQlj b250aW51ZTsKPiA+ICsJCQl9Cj4gPiArCQkJZHBjZF9uYW1lW3JldF0gPSAnXDAnOwo+ID4gKwo+ ID4gKwkJCS8qIER1bW15IHJlYWQgdG8gY2hlY2sgaWYgZHBjZCBpcyBhdmFpbGFibGUgKi8KPiA+ ICsJCQlyZXQgPSByZWFkKGRldl9mZCwgJmRpc2NhcmQsIDEpOwo+ID4gKwkJCWlmIChyZXQgIT0g MSkgewo+ID4gKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkRQQ0QgJXMgc2VlbXMgbm90IGF2YWlsYWJs ZS4gc2tpcHBpbmcuLi5cbiIsIGRwY2RfbmFtZSk7Cj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwkJ CX0KPiA+ICsKPiA+ICsJCQlwcmludGYoIkR1bXBpbmcgJXM6XG4iLCBkcGNkX25hbWUpOwo+ID4g KwkJCWR1bXBfYWxsKGRldl9mZCk7Cj4gPiArCQkJcHJpbnRmKCJcbiIpOwo+ID4gKwo+ID4gKwo+ ID4gKwo+ID4gKwkJCWNsb3NlKHN5c2ZzX2ZkKTsKPiA+ICsJCQljbG9zZShkZXZfZmQpOwo+ID4g KwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCWNsb3NlZGlyKGRpcik7Cj4gPiArCj4gPiArCXJldHVy biAwOwo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS90b29scy9tZXNvbi5idWlsZCBiL3Rvb2xzL21l c29uLmJ1aWxkCj4gPiBpbmRleCBlNDUxN2Q2Ni4uMzMyNmE1YTcgMTAwNjQ0Cj4gPiAtLS0gYS90 b29scy9tZXNvbi5idWlsZAo+ID4gKysrIGIvdG9vbHMvbWVzb24uYnVpbGQKPiA+IEBAIC0xNCw2 ICsxNCw3IEBAIGVuZGZvcmVhY2gKPiA+ICB0b29sc19wcm9ncyA9IFsKPiA+ICAJIyBGSVhNRSB3 ZSBhbHJlYWR5IGhhdmUgYSBsaWJ0ZXN0Y2FzZSB3aXRoIHRoaXMgbmFtZSBhcyB0YXJnZXQKPiA+ ICAJIydpZ3Rfc3RhdHMnLAo+ID4gKwknZHBjZF9kdW1wJywKPiA+ICAJJ2ludGVsX2F1ZGlvX2R1 bXAnLAo+ID4gIAknaW50ZWxfYmFja2xpZ2h0JywKPiA+ICAJJ2ludGVsX2Jpb3NfZHVtcGVyJywK PiAKPiAtLSAKPiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVy Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYg bWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=