From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lowry Li (Arm Technology China)" Subject: Re: [PATCH] drm/komeda: Adds error event print functionality Date: Fri, 2 Aug 2019 09:34:48 +0000 Message-ID: <44948.0981261999$1564738514@news.gmane.org> References: <1564659415-14548-1-git-send-email-lowry.li@arm.com> <3215981.n852bepVxH@e123338-lin> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02on0622.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe06::622]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFDDD6ED7F for ; Fri, 2 Aug 2019 09:35:03 +0000 (UTC) In-Reply-To: <3215981.n852bepVxH@e123338-lin> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mihail Atanassov Cc: nd , "airlied@linux.ie" , Liviu Dudau , "Jonathan Chai (Arm Technology China)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Julien Yin (Arm Technology China)" , "james qian wang (Arm Technology China)" , "seanpaul@chromium.org" , Ayan Halder List-Id: dri-devel@lists.freedesktop.org SGkgTWloYWlsLApPbiBUaHUsIEF1ZyAwMSwgMjAxOSBhdCAxMDo0ODo0NVBNICswODAwLCBNaWhh aWwgQXRhbmFzc292IHdyb3RlOgo+IEhpIExvd3J5LAo+IAo+IE9uIFRodXJzZGF5LCAxIEF1Z3Vz dCAyMDE5IDEyOjM3OjE1IEJTVCBMb3dyeSBMaSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIHdyb3Rl Ogo+ID4gRnJvbTogIkxvd3J5IExpIChBcm0gVGVjaG5vbG9neSBDaGluYSkiIDxMb3dyeS5MaUBh cm0uY29tPgo+ID4gCj4gPiBBZGRzIHRvIHByaW50IHRoZSBldmVudCBtZXNzYWdlIHdoZW4gZXJy b3IgaGFwcGVucyBhbmQgdGhlIHNhbWUgZXZlbnQKPiA+IHdpbGwgbm90IGJlIHByaW50ZWQgdW50 aWwgbmV4dCB2c3luYy4KPiA+IAo+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+IDEuIEhhbmRsaW5n IHRoZSBldmVudCBwcmludCBieSBDT05GSUdfS09NRURBX0VSUk9SX1BSSU5UOwo+ID4gMi4gQ2hh bmdpbmcgdGhlIG1heCBzdHJpbmcgc2l6ZSB0byAyNTYuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6 IExvd3J5IExpIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPGxvd3J5LmxpQGFybS5jb20+Cj4gPiAt LS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZpZyAgICAgICAgICAgICAg IHwgICA2ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxl ICAgICAgIHwgICAyICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9kZXYuaCAgIHwgIDE1ICsrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEva29tZWRhX2V2ZW50LmMgfCAxNDEKPiA+ICsrKysrKysrKysrKysrKysrKysrKysgZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMgICB8IAo+ID4gIDQg Kwo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTY4IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZXZlbnQu Ywo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tjb25m aWcKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tjb25maWcgaW5kZXggY2VjMDYz OS4uZTg3ZmY4NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9L Y29uZmlnCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZpZwo+ID4g QEAgLTEyLDMgKzEyLDkgQEAgY29uZmlnIERSTV9LT01FREEKPiA+ICAJICBQcm9jZXNzb3IgZHJp dmVyLiBJdCBzdXBwb3J0cyB0aGUgRDcxIHZhcmlhbnRzIG9mIHRoZSBoYXJkd2FyZS4KPiA+IAo+ ID4gIAkgIElmIGNvbXBpbGVkIGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGtvbWVkYS4K PiA+ICsKPiA+ICtjb25maWcgRFJNX0tPTUVEQV9FUlJPUl9QUklOVAo+ID4gKwlib29sICJFbmFi bGUga29tZWRhIGVycm9yIHByaW50Igo+ID4gKwlkZXBlbmRzIG9uIERSTV9LT01FREEKPiA+ICsJ aGVscAo+ID4gKwkgIENob29zZSB0aGlzIG9wdGlvbiB0byBlbmFibGUgZXJyb3IgcHJpbnRpbmcu Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtl ZmlsZQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlIGlu ZGV4IDVjMzkwMGMuLmYwOTVhMWMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL01ha2VmaWxlCj4gPiBAQCAtMjIsNCArMjIsNiBAQCBrb21lZGEteSArPSBc Cj4gPiAgCWQ3MS9kNzFfZGV2Lm8gXAo+ID4gIAlkNzEvZDcxX2NvbXBvbmVudC5vCj4gPiAKPiA+ ICtrb21lZGEtJChDT05GSUdfRFJNX0tPTUVEQV9FUlJPUl9QUklOVCkgKz0ga29tZWRhX2V2ZW50 Lm8KPiA+ICsKPiA+ICBvYmotJChDT05GSUdfRFJNX0tPTUVEQSkgKz0ga29tZWRhLm8KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYu aAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuaCBp bmRleCBkMWM4NmI2Li5lMjhlN2U2Cj4gPiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuaAo+ID4gQEAgLTQwLDYgKzQwLDE3IEBA Cj4gPiAgI2RlZmluZSBLT01FREFfRVJSX1RUTkcJCQlCSVRfVUxMKDMwKQo+ID4gICNkZWZpbmUg S09NRURBX0VSUl9UVEYJCQlCSVRfVUxMKDMxKQo+ID4gCj4gPiArI2RlZmluZSBLT01FREFfRVJS X0VWRU5UUwlcCj4gPiArCShLT01FREFfRVZFTlRfVVJVTgl8IEtPTUVEQV9FVkVOVF9JQlNZCXwg S09NRURBX0VWRU5UX09WUiB8Cj4gXAo+ID4gKwlLT01FREFfRVJSX1RFVE8JCXwgS09NRURBX0VS Ul9URU1SCXwgCj4gS09NRURBX0VSUl9USVRSIHxcCj4gPiArCUtPTUVEQV9FUlJfQ1BFCQl8IEtP TUVEQV9FUlJfQ0ZHRQl8IAo+IEtPTUVEQV9FUlJfQVhJRSB8XAo+ID4gKwlLT01FREFfRVJSX0FD RTAJCXwgS09NRURBX0VSUl9BQ0UxCXwgCj4gS09NRURBX0VSUl9BQ0UyIHxcCj4gPiArCUtPTUVE QV9FUlJfQUNFMwkJfCBLT01FREFfRVJSX0RSSUZUVE8JfCAKPiBLT01FREFfRVJSX0ZSQU1FVE8g fFwKPiA+ICsJS09NRURBX0VSUl9aTUUJCXwgS09NRURBX0VSUl9NRVJSCXwgCj4gS09NRURBX0VS Ul9UQ0YgfFwKPiA+ICsJS09NRURBX0VSUl9UVE5HCQl8IEtPTUVEQV9FUlJfVFRGKQo+ID4gKwo+ ID4gKyNkZWZpbmUgS09NRURBX1dBUk5fRVZFTlRTCUtPTUVEQV9FUlJfQ1NDRQo+ID4gKwo+ID4g IC8qIG1hbGlkcCBkZXZpY2UgaWQgKi8KPiA+ICBlbnVtIHsKPiA+ICAJTUFMSV9ENzEgPSAwLAo+ ID4gQEAgLTIwNyw0ICsyMTgsOCBAQCBzdHJ1Y3Qga29tZWRhX2RldiB7Cj4gPiAKPiA+ICBzdHJ1 Y3Qga29tZWRhX2RldiAqZGV2X3RvX21kZXYoc3RydWN0IGRldmljZSAqZGV2KTsKPiA+IAo+ID4g KyNpZmRlZiBDT05GSUdfRFJNX0tPTUVEQV9FUlJPUl9QUklOVAo+ID4gK3ZvaWQga29tZWRhX3By aW50X2V2ZW50cyhzdHJ1Y3Qga29tZWRhX2V2ZW50cyAqZXZ0cyk7Cj4gPiArI2VuZGlmCj4gPiAr Cj4gPiAgI2VuZGlmIC8qX0tPTUVEQV9ERVZfSF8qLwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2V2ZW50LmMKPiA+IGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZXZlbnQuYyBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+ID4gaW5kZXggMDAwMDAwMC4uNTdiNjBjZAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZXZlbnQuYwo+ID4g QEAgLTAsMCArMSwxNDEgQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MAo+ID4gKy8qCj4gPiArICogKEMpIENPUFlSSUdIVCAyMDE5IEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLgo+ID4gKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFu LndhbmdAYXJtLmNvbT4KPiA+ICsgKgo+ID4gKyAqLwo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3By aW50Lmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImtvbWVkYV9kZXYuaCIKPiA+ICsKPiA+ICtzdHJ1 Y3Qga29tZWRhX3N0ciB7Cj4gPiArCWNoYXIgKnN0cjsKPiA+ICsJdTMyIHN6Owo+ID4gKwl1MzIg bGVuOwo+ID4gK307Cj4gPiArCj4gPiArLyogcmV0dXJuIDAgb24gc3VjY2VzcywgIDwgMCBvbiBu byBzcGFjZS4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW50IGtvbWVkYV9zcHJpbnRmKHN0cnVjdCBr b21lZGFfc3RyICpzdHIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+IFRoZSBsYWNrIG9mICdcMCct dGVybWluYXRpb24gaW4gdGhlIHRydW5jYXRpb24gY2FzZSBpcyBxdWl0ZSBkaXNjb25jZXJ0aW5n LCAKPiBlc3BlY2lhbGx5IHNpbmNlIHZzbnByaW50ZiBkb2VzIGl0LiBUaGlzIHdvdWxkIGJlIHF1 aXRlIHN1cnByaXNpbmcgdG8gdGhlIAo+IGNhc3VhbCBwYXNzZXItYnkuClRoYW5rcyBhIGxvdCBm b3IgdGhlIGNvbW1lbnRzLiBXaWxsIHJlZmluZSBhY2NvcmRpbmdseSBhbmQgc2VuZCBhIG5ldwpw YXRjaC4KPiA+ICt7Cj4gPiArCXZhX2xpc3QgYXJnczsKPiA+ICsJaW50IG51bSwgZnJlZV9zejsK PiA+ICsJaW50IGVycjsKPiA+ICsKPiA+ICsJZnJlZV9zeiA9IHN0ci0+c3ogLSBzdHItPmxlbjsK PiBUaGF0J3Mgb2ZmIGJ5IDEsIHlvdSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBudWxsIGJ5dGUu Cj4gPiArCWlmIChmcmVlX3N6IDw9IDApCj4gPiArCQlyZXR1cm4gLUVOT1NQQzsKPiA+ICsKPiA+ ICsJdmFfc3RhcnQoYXJncywgZm10KTsKPiA+ICsKPiA+ICsJbnVtID0gdnNucHJpbnRmKHN0ci0+ c3RyICsgc3RyLT5sZW4sIGZyZWVfc3osIGZtdCwgYXJncyk7Cj4gPiArCj4gPiArCXZhX2VuZChh cmdzKTsKPiA+ICsKPiA+ICsJaWYgKG51bSA8PSBmcmVlX3N6KSB7Cj4gU3RyaWN0bHkgbGVzcyB0 aGFuLiBUbyBxdW90ZSBmcm9tIHRoZSBkb2Mgb2YgdnNucHJpbnRmOiAKPiAiIiIgWy4uLl0gSWYg dGhlIHJldHVybiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gQHNpemUsIHRoZSByZXN1bHRp bmcgCj4gc3RyaW5nIGlzIHRydW5jYXRlZC4gIiIiCj4gPiArCQlzdHItPmxlbiArPSBudW07Cj4g PiArCQllcnIgPSAwOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJc3RyLT5sZW4gPSBzdHItPnN6Owo+ IE9mZiBieSAxIGhlcmUsIHRvby4KPiA+ICsJCWVyciA9IC1FTk9TUEM7Cj4gVGhhdCBlcnJvciBj b2RlIGlzbid0IHVzZWQgYW55d2hlcmUsIHNvIHRoZXJlJ3Mgbm8gdmFsdWUgdG8gaGF2aW5nIGl0 IGluIHRoZSAKPiBjdXJyZW50IHZlcnNpb24gb2YgdGhpcyBwYXRjaC4gRWl0aGVyIGNoZWNrIHRo ZSBlcnJvciBjb2RlIHNvbWV3aGVyZSAKPiBkb3duc3RyZWFtIGFuZCBoYW5kbGUgaXQsIG9yIGNo YW5nZSB0aGF0IHRvIGFuIGFjdGlvbmFibGUgbWVzc2FnZSBmb3IgdGhlIAo+IHBlcnNvbiByZWFk aW5nIHRoZSBrZXJuZWwgbG9nLiBBcyBpdCBzdGFuZHMgdHJ1bmNhdGlvbiBpcyBjb21wbGV0ZWx5 IHNpbGVudC4KQmV0dGVyIGtlZXAgdGhpcyBjb2RlIGFuZCB0cmVhdCBhcyBhbiBiYXNpYyB1dGls IGZ1bmMuIEZvciB0aGlzIGNhc2UsCnRoZSBzdHJpbmcgc2l6ZSBpcyBiaWcgZW5vdWdoLiBJIHRy aWVkIHRvIHByaW50IGEgZXJyIG1zZy9sb2cgYXQKY2FsbGluZyBwbGFjZSwgYnV0IGl0IGlzIGEg ZGVhZCBjb2RlIHdoaWNoIHdpbGwgbm90IGdvIGludG8uIFNvIHN0aWxsCnN1Z2dlc3Qga2VlcCB0 aGUgY3VycmVudC4KPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gZXJyOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgdm9pZCBldnRfc3ByaW50ZihzdHJ1Y3Qga29tZWRhX3N0ciAqc3RyLCB1NjQg ZXZ0LCBjb25zdCBjaGFyICptc2cpCj4gPiArewo+ID4gKwlpZiAoZXZ0KQo+ID4gKwkJa29tZWRh X3NwcmludGYoc3RyLCBtc2cpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBldnRfc3Ry KHN0cnVjdCBrb21lZGFfc3RyICpzdHIsIHU2NCBldmVudHMpCj4gPiArewo+ID4gKwlpZiAoZXZl bnRzID09IDBVTEwpIHsKPiA+ICsJCWV2dF9zcHJpbnRmKHN0ciwgMSwgIk5vbmUiKTsKPiBbbml0 XSBDYWxsIGBrb21lZGFfc3ByaW50ZihzdHIsICJOb25lIilgIGRpcmVjdGx5PwpZZXMsIHdpbGwg Y2hhbmdlIHRvIGl0IDotKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwl9Cj4gPiArCj4gPiArCWV2dF9z cHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VWRU5UX1ZTWU5DLCAiVlNZTkN8Iik7Cj4gPiAr CWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VWRU5UX0ZMSVAsICJGTElQfCIpOwo+ ID4gKwlldnRfc3ByaW50ZihzdHIsIGV2ZW50cyAmIEtPTUVEQV9FVkVOVF9FT1csICJFT1d8Iik7 Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VWRU5UX01PREUsICJPUC1N T0RFfCIpOwo+ID4gKwo+ID4gKwlldnRfc3ByaW50ZihzdHIsIGV2ZW50cyAmIEtPTUVEQV9FVkVO VF9VUlVOLCAiVU5ERVJSVU58Iik7Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09N RURBX0VWRU5UX09WUiwgIk9WRVJSVU58Iik7Cj4gPiArCj4gPiArCS8qIEdMQiBlcnJvciAqLwo+ ID4gKwlldnRfc3ByaW50ZihzdHIsIGV2ZW50cyAmIEtPTUVEQV9FUlJfTUVSUiwgIk1FUlJ8Iik7 Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9GUkFNRVRPLCAiRlJB TUVUT3wiKTsKPiA+ICsKPiA+ICsJLyogRE9VIGVycm9yICovCj4gPiArCWV2dF9zcHJpbnRmKHN0 ciwgZXZlbnRzICYgS09NRURBX0VSUl9EUklGVFRPLCAiRFJJRlRUT3wiKTsKPiA+ICsJZXZ0X3Nw cmludGYoc3RyLCBldmVudHMgJiBLT01FREFfRVJSX0ZSQU1FVE8sICJGUkFNRVRPfCIpOwo+ID4g KwlldnRfc3ByaW50ZihzdHIsIGV2ZW50cyAmIEtPTUVEQV9FUlJfVEVUTywgIlRFVE98Iik7Cj4g PiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9DU0NFLCAiQ1NDRXwiKTsK PiA+ICsKPiA+ICsJLyogTFBVIGVycm9ycyBvciBldmVudHMgKi8KPiA+ICsJZXZ0X3NwcmludGYo c3RyLCBldmVudHMgJiBLT01FREFfRVZFTlRfSUJTWSwgIklCU1l8Iik7Cj4gPiArCWV2dF9zcHJp bnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9BWElFLCAiQVhJRXwiKTsKPiA+ICsJZXZ0X3Nw cmludGYoc3RyLCBldmVudHMgJiBLT01FREFfRVJSX0FDRTAsICJBQ0UwfCIpOwo+ID4gKwlldnRf c3ByaW50ZihzdHIsIGV2ZW50cyAmIEtPTUVEQV9FUlJfQUNFMSwgIkFDRTF8Iik7Cj4gPiArCWV2 dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9BQ0UyLCAiQUNFMnwiKTsKPiA+ICsJ ZXZ0X3NwcmludGYoc3RyLCBldmVudHMgJiBLT01FREFfRVJSX0FDRTMsICJBQ0UzfCIpOwo+ID4g Kwo+ID4gKwkvKiBMUFUgVEJVIGVycm9ycyovCj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRz ICYgS09NRURBX0VSUl9UQ0YsICJUQ0Z8Iik7Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRz ICYgS09NRURBX0VSUl9UVE5HLCAiVFROR3wiKTsKPiA+ICsJZXZ0X3NwcmludGYoc3RyLCBldmVu dHMgJiBLT01FREFfRVJSX1RJVFIsICJUSVRSfCIpOwo+ID4gKwlldnRfc3ByaW50ZihzdHIsIGV2 ZW50cyAmIEtPTUVEQV9FUlJfVEVNUiwgIlRFTVJ8Iik7Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwg ZXZlbnRzICYgS09NRURBX0VSUl9UVEYsICJUVEZ8Iik7Cj4gPiArCj4gPiArCS8qIENVIGVycm9y cyovCj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9DUEUsICJDT1BS T0N8Iik7Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9aTUUsICJa TUV8Iik7Cj4gPiArCWV2dF9zcHJpbnRmKHN0ciwgZXZlbnRzICYgS09NRURBX0VSUl9DRkdFLCAi Q0ZHRXwiKTsKPiA+ICsJZXZ0X3NwcmludGYoc3RyLCBldmVudHMgJiBLT01FREFfRVJSX1RFTVIs ICJURU1SfCIpOwo+ID4gKwo+ID4gKwlpZiAoc3RyLT5sZW4gPiAwICYmIChzdHItPnN0cltzdHIt PmxlbiAtIDFdID09ICd8JykpIHsKPiA+ICsJCXN0ci0+c3RyW3N0ci0+bGVuIC0gMV0gPSAwOwo+ ID4gKwkJc3RyLT5sZW4tLTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBp c19uZXdfZnJhbWUoc3RydWN0IGtvbWVkYV9ldmVudHMgKmEpCj4gPiArewo+ID4gKwlyZXR1cm4g KGEtPnBpcGVzWzBdIHwgYS0+cGlwZXNbMV0pICYKPiA+ICsJICAgICAgIChLT01FREFfRVZFTlRf RkxJUCB8IEtPTUVEQV9FVkVOVF9FT1cpOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIGtvbWVkYV9w cmludF9ldmVudHMoc3RydWN0IGtvbWVkYV9ldmVudHMgKmV2dHMpCj4gPiArewo+ID4gKwl1NjQg cHJpbnRfZXZ0cyA9IEtPTUVEQV9FUlJfRVZFTlRTOwo+ID4gKwlzdGF0aWMgYm9vbCBlbl9wcmlu dCA9IHRydWU7Cj4gPiArCj4gPiArCS8qIHJlZHVjZSB0aGUgc2FtZSBtc2cgcHJpbnQsIG9ubHkg cHJpbnQgdGhlIGZpcnN0IGV2dCBmb3Igb25lIAo+IGZyYW1lICovCj4gPiArCWlmIChldnRzLT5n bG9iYWwgfHwgaXNfbmV3X2ZyYW1lKGV2dHMpKQo+ID4gKwkJZW5fcHJpbnQgPSB0cnVlOwo+ID4g KwlpZiAoIWVuX3ByaW50KQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlpZiAoKGV2dHMtPmds b2JhbCB8IGV2dHMtPnBpcGVzWzBdIHwgZXZ0cy0+cGlwZXNbMV0pICYgcHJpbnRfZXZ0cykgCj4g ewo+ID4gKwkJI2RlZmluZSBTVFJfU1oJCTI1Ngo+IFtuaXRdIEknZCB1bmRlZiB0aGF0IG9uY2Ug aXQncyBubyBsb25nZXIgbmVlZGVkCldpbGwgbm90IHVzZSBtYWNybyBoZXJlLgo+ID4gKwkJY2hh ciBtc2dbU1RSX1NaXTsKPiA+ICsJCXN0cnVjdCBrb21lZGFfc3RyIHN0cjsKPiA+ICsKPiA+ICsJ CXN0ci5zdHIgPSBtc2c7Cj4gPiArCQlzdHIuc3ogID0gU1RSX1NaOwo+ID4gKwkJc3RyLmxlbiA9 IDA7Cj4gPiArCj4gPiArCQlrb21lZGFfc3ByaW50Zigmc3RyLCAiZ2N1OiAiKTsKPiA+ICsJCWV2 dF9zdHIoJnN0ciwgZXZ0cy0+Z2xvYmFsKTsKPiA+ICsJCWtvbWVkYV9zcHJpbnRmKCZzdHIsICIs IHBpcGVzWzBdOiAiKTsKPiA+ICsJCWV2dF9zdHIoJnN0ciwgZXZ0cy0+cGlwZXNbMF0pOwo+ID4g KwkJa29tZWRhX3NwcmludGYoJnN0ciwgIiwgcGlwZXNbMV06ICIpOwo+ID4gKwkJZXZ0X3N0cigm c3RyLCBldnRzLT5waXBlc1sxXSk7Cj4gPiArCj4gPiArCQlEUk1fRVJST1IoImVyciBkZXRlY3Q6 ICVzXG4iLCBtc2cpOwo+ID4gKwo+ID4gKwkJZW5fcHJpbnQgPSBmYWxzZTsKPiA+ICsJfQo+ID4g K30KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9rbXMuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9rbXMuYyBpbmRleCA0MTlhOGIwLi4wZmFmYzM2Cj4gPiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYwo+ID4gQEAgLTQ3LDYg KzQ3LDEwIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBrb21lZGFfa21zX2lycV9oYW5kbGVyKGludCBp cnEsIHZvaWQKPiA+ICpkYXRhKSBtZW1zZXQoJmV2dHMsIDAsIHNpemVvZihldnRzKSk7Cj4gPiAg CXN0YXR1cyA9IG1kZXYtPmZ1bmNzLT5pcnFfaGFuZGxlcihtZGV2LCAmZXZ0cyk7Cj4gPiAKPiA+ ICsjaWZkZWYgQ09ORklHX0RSTV9LT01FREFfRVJST1JfUFJJTlQKPiA+ICsJa29tZWRhX3ByaW50 X2V2ZW50cygmZXZ0cyk7Cj4gPiArI2VuZGlmCj4gPiArCj4gPiAgCS8qIE5vdGlmeSB0aGUgY3J0 YyB0byBoYW5kbGUgdGhlIGV2ZW50cyAqLwo+ID4gIAlmb3IgKGkgPSAwOyBpIDwga21zLT5uX2Ny dGNzOyBpKyspCj4gPiAgCQlrb21lZGFfY3J0Y19oYW5kbGVfZXZlbnQoJmttcy0+Y3J0Y3NbaV0s ICZldnRzKTsKPiAKPiBCUiwKPiBNaWhhaWwKPiAKCi0tIApSZWdhcmRzLApMb3dyeQpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=