From mboxrd@z Thu Jan 1 00:00:00 1970 From: Enric Balletbo Serra Subject: Re: [PATCH v7 5/5] drm/rockchip: support dp training outside dp firmware Date: Wed, 23 May 2018 10:50:48 +0200 Message-ID: References: <1527061353-16902-1-git-send-email-hl@rock-chips.com> <1527061353-16902-5-git-send-email-hl@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527061353-16902-5-git-send-email-hl@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lin Huang Cc: "devicetree@vger.kernel.org" , David Airlie , linux-kernel , Brian Norris , Doug Anderson , dri-devel , Kishon Vijay Abraham I , "open list:ARM/Rockchip SoC..." , Rob Herring , Chris Zhong , daniel.vetter@intel.com, Linux ARM List-Id: devicetree@vger.kernel.org MjAxOC0wNS0yMyA5OjQyIEdNVCswMjowMCBMaW4gSHVhbmcgPGhsQHJvY2stY2hpcHMuY29tPjoK PiBEUCBmaXJtd2FyZSB1c2VzIGZpeGVkIHBoeSBjb25maWcgdmFsdWVzIHRvIGRvIHRyYWluaW5n LCBidXQgc29tZQo+IGJvYXJkcyBuZWVkIHRvIGFkanVzdCB0aGVzZSB2YWx1ZXMgdG8gZml0IGZv ciB0aGVpciB1bmlxdWUgaGFyZHdhcmUKPiBkZXNpZ24uIFNvIGdldCBwaHkgY29uZmlnIHZhbHVl cyBmcm9tIGR0cyBhbmQgdXNlIHNvZnR3YXJlIGxpbmsgdHJhaW5pbmcKPiBpbnN0ZWFkIG9mIHJl bHlpbmcgb24gZmlybXdhcmUsIGlmIHNvZnR3YXJlIHRyYWluaW5nIGZhaWwsIGtlZXAgZmlybXdh cmUKPiB0cmFpbmluZyBhcyBhIGZhbGxiYWNrIGlmIHN3IHRyYWluaW5nIGZhaWxzLgo+Cj4gU2ln bmVkLW9mZi1ieTogQ2hyaXMgWmhvbmcgPHp5d0Byb2NrLWNoaXBzLmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBMaW4gSHVhbmcgPGhsQHJvY2stY2hpcHMuY29tPgo+IFJldmlld2VkLWJ5OiBTZWFuIFBh dWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiAtLS0KPiBDaGFuZ2VzIGluIHYyOgo+IC0gdXBk YXRlIHBhdGNoIGZvbGxvd2luZyBFbnJpYyBzdWdnZXN0Cj4gQ2hhbmdlcyBpbiB2MzoKPiAtIHVz ZSB2YXJpYWJsZSBmd190cmFpbmluZyBpbnN0ZWFkIHN3X3RyYWluaW5nX3N1Y2Nlc3MKPiAtIGJh c2Ugb24gRFAgU1BDRSwgaWYgdHJhaW5pbmcgZmFpbCB1c2UgbG93ZXIgbGluayByYXRlIHRvIHJl dHJ5IHRyYWluaW5nCj4gQ2hhbmdlcyBpbiB2NDoKPiAtIGltcHJvdmUgY2RuX2RwX2dldF9sb3dl cl9saW5rX3JhdGUoKSBhbmQgY2RuX2RwX3NvZnR3YXJlX3RyYWluX2xpbmsoKSBmb2xsb3cgU2Vh biBzdWdnZXN0Cj4gQ2hhbmdlcyBpbiB2NToKPiAtIGZpeCBzb21lIHdoaXRlc3BjYWUgaXNzdWUK PiBDaGFuZ2VzIGluIHY2Ogo+IC0gTm9uZQo+IENoYW5nZXMgaW4gdjc6Cj4gLSBOb25lCj4KPiAg ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDMgKy0K PiAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3JlLmMgICAgICAgICAgfCAgMjQg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3JlLmggICAgICAgICAgfCAg IDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWxpbmstdHJhaW5pbmcuYyB8 IDQyMCArKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L2Nkbi1kcC1yZWcuYyAgICAgICAgICAgfCAgMzEgKy0KPiAgZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL2Nkbi1kcC1yZWcuaCAgICAgICAgICAgfCAgMzggKystCj4gIDYgZmlsZXMgY2hhbmdlZCwg NTA1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1saW5rLXRyYWluaW5nLmMKPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvTWFrZWZpbGUKPiBpbmRleCBhMzE0ZTIxLi5iOTMyZjYyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9NYWtlZmlsZQo+IEBAIC05LDcgKzksOCBAQCByb2NrY2hpcGRybS15IDo9 IHJvY2tjaGlwX2RybV9kcnYubyByb2NrY2hpcF9kcm1fZmIubyBcCj4gIHJvY2tjaGlwZHJtLSQo Q09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IHJvY2tjaGlwX2RybV9mYmRldi5vCj4KPiAg cm9ja2NoaXBkcm0tJChDT05GSUdfUk9DS0NISVBfQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4X2Rw LXJvY2tjaGlwLm8KPiAtcm9ja2NoaXBkcm0tJChDT05GSUdfUk9DS0NISVBfQ0ROX0RQKSArPSBj ZG4tZHAtY29yZS5vIGNkbi1kcC1yZWcubwo+ICtyb2NrY2hpcGRybS0kKENPTkZJR19ST0NLQ0hJ UF9DRE5fRFApICs9IGNkbi1kcC1jb3JlLm8gY2RuLWRwLXJlZy5vIFwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RuLWRwLWxpbmstdHJhaW5pbmcubwo+ICByb2Nr Y2hpcGRybS0kKENPTkZJR19ST0NLQ0hJUF9EV19IRE1JKSArPSBkd19oZG1pLXJvY2tjaGlwLm8K PiAgcm9ja2NoaXBkcm0tJChDT05GSUdfUk9DS0NISVBfRFdfTUlQSV9EU0kpICs9IGR3LW1pcGkt ZHNpLm8KPiAgcm9ja2NoaXBkcm0tJChDT05GSUdfUk9DS0NISVBfSU5OT19IRE1JKSArPSBpbm5v X2hkbWkubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNv cmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jCj4gaW5kZXggY2Nl NjRjMS4uNzgzZDU3YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2Ru LWRwLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5j Cj4gQEAgLTYyOSwxMSArNjI5LDEzIEBAIHN0YXRpYyB2b2lkIGNkbl9kcF9lbmNvZGVyX2VuYWJs ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gICAgICAgICAgICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAgICAgIH0KPiAtCj4gLSAgICAgICBy ZXQgPSBjZG5fZHBfc2V0X3ZpZGVvX3N0YXR1cyhkcCwgQ09OVFJPTF9WSURFT19JRExFKTsKPiAt ICAgICAgIGlmIChyZXQpIHsKPiAtICAgICAgICAgICAgICAgRFJNX0RFVl9FUlJPUihkcC0+ZGV2 LCAiRmFpbGVkIHRvIGlkbGUgdmlkZW8gJWRcbiIsIHJldCk7Cj4gLSAgICAgICAgICAgICAgIGdv dG8gb3V0Owo+ICsgICAgICAgaWYgKGRwLT51c2VfZndfdHJhaW5pbmcpIHsKPiArICAgICAgICAg ICAgICAgcmV0ID0gY2RuX2RwX3NldF92aWRlb19zdGF0dXMoZHAsIENPTlRST0xfVklERU9fSURM RSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAg ICBEUk1fREVWX0VSUk9SKGRwLT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiRmFpbGVkIHRvIGlkbGUgdmlkZW8gJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgICAgICAgIH0KPiAgICAgICAgIH0KPgo+ ICAgICAgICAgcmV0ID0gY2RuX2RwX2NvbmZpZ192aWRlbyhkcCk7Cj4gQEAgLTY0MiwxMSArNjQ0 LDE1IEBAIHN0YXRpYyB2b2lkIGNkbl9kcF9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCj4gICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ICAgICAgICAgfQo+Cj4g LSAgICAgICByZXQgPSBjZG5fZHBfc2V0X3ZpZGVvX3N0YXR1cyhkcCwgQ09OVFJPTF9WSURFT19W QUxJRCk7Cj4gLSAgICAgICBpZiAocmV0KSB7Cj4gLSAgICAgICAgICAgICAgIERSTV9ERVZfRVJS T1IoZHAtPmRldiwgIkZhaWxlZCB0byB2YWxpZCB2aWRlbyAlZFxuIiwgcmV0KTsKPiAtICAgICAg ICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICBpZiAoZHAtPnVzZV9md190cmFpbmluZykgewo+ ICsgICAgICAgICAgICAgICByZXQgPSBjZG5fZHBfc2V0X3ZpZGVvX3N0YXR1cyhkcCwgQ09OVFJP TF9WSURFT19WQUxJRCk7Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAg ICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGRwLT5kZXYsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiRmFpbGVkIHRvIHZhbGlkIHZpZGVvICVkXG4iLCByZXQpOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgICAgICAgICB9Cj4gICAgICAg ICB9Cj4gKwo+ICBvdXQ6Cj4gICAgICAgICBtdXRleF91bmxvY2soJmRwLT5sb2NrKTsKPiAgfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuaCBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5oCj4gaW5kZXggNDYxNTliMi4uNzdh OTc5MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5oCj4gQEAgLTg0 LDYgKzg0LDcgQEAgc3RydWN0IGNkbl9kcF9kZXZpY2Ugewo+ICAgICAgICAgYm9vbCBjb25uZWN0 ZWQ7Cj4gICAgICAgICBib29sIGFjdGl2ZTsKPiAgICAgICAgIGJvb2wgc3VzcGVuZGVkOwo+ICsg ICAgICAgYm9vbCB1c2VfZndfdHJhaW5pbmc7Cj4KPiAgICAgICAgIGNvbnN0IHN0cnVjdCBmaXJt d2FyZSAqZnc7ICAgICAgLyogY2RuIGRwIGZpcm13YXJlICovCj4gICAgICAgICB1bnNpZ25lZCBp bnQgZndfdmVyc2lvbjsgICAgICAgIC8qIGNkbiBmdyB2ZXJzaW9uICovCj4gQEAgLTEwNiw2ICsx MDcsNyBAQCBzdHJ1Y3QgY2RuX2RwX2RldmljZSB7Cj4gICAgICAgICB1OCBwb3J0czsKPiAgICAg ICAgIHU4IGxhbmVzOwo+ICAgICAgICAgaW50IGFjdGl2ZV9wb3J0Owo+ICsgICAgICAgdTggdHJh aW5fc2V0WzRdOwo+Cj4gICAgICAgICB1OCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiAg ICAgICAgIGJvb2wgc2lua19oYXNfYXVkaW87Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9jZG4tZHAtbGluay10cmFpbmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL2Nkbi1kcC1saW5rLXRyYWluaW5nLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAuLjczYzMyOTAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL2Nkbi1kcC1saW5rLXRyYWluaW5nLmMKPiBAQCAtMCwwICsxLDQyMCBAQAo+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg KEMpIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby5MdGQKPiArICogQXV0aG9yOiBDaHJp cyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9waHkvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxzb2Mvcm9ja2NoaXAvcm9ja2NoaXBfcGh5X3R5cGVj Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiY2RuLWRwLWNvcmUuaCIKPiArI2luY2x1ZGUgImNkbi1kcC1y ZWcuaCIKPiArCj4gK3N0YXRpYyB2b2lkIGNkbl9kcF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3Qg Y2RuX2RwX2RldmljZSAqZHApCj4gK3sKPiArICAgICAgIHN0cnVjdCBjZG5fZHBfcG9ydCAqcG9y dCA9IGRwLT5wb3J0W2RwLT5hY3RpdmVfcG9ydF07Cj4gKyAgICAgICBzdHJ1Y3Qgcm9ja2NoaXBf dHlwZWNfcGh5ICp0Y3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwb3J0LT5waHkpOwo+ICsKPiArICAg ICAgIGludCByYXRlID0gZHJtX2RwX2J3X2NvZGVfdG9fbGlua19yYXRlKGRwLT5saW5rLnJhdGUp Owo+ICsgICAgICAgdTggc3dpbmcgPSAoZHAtPnRyYWluX3NldFswXSAmIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTUFTSykgPj4KPiArICAgICAgICAgICAgICAgICAgRFBfVFJBSU5fVk9MVEFHRV9T V0lOR19TSElGVDsKPiArICAgICAgIHU4IHByZV9lbXBoYXNpcyA9IChkcC0+dHJhaW5fc2V0WzBd ICYgRFBfVFJBSU5fUFJFX0VNUEhBU0lTX01BU0spCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICA+PiBEUF9UUkFJTl9QUkVfRU1QSEFTSVNfU0hJRlQ7Cj4gKwo+ICsgICAgICAgdGNwaHktPnR5 cGVjX3BoeV9jb25maWcocG9ydC0+cGh5LCByYXRlLCBkcC0+bGluay5udW1fbGFuZXMsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2luZywgcHJlX2VtcGhhc2lzKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBjZG5fZHBfc2V0X3BhdHRlcm4oc3RydWN0IGNkbl9kcF9kZXZpY2Ug KmRwLCB1aW50OF90IGRwX3RyYWluX3BhdCkKPiArewo+ICsgICAgICAgdTMyIHBoeV9jb25maWcs IGdsb2JhbF9jb25maWc7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgdWludDhfdCBwYXR0 ZXJuID0gZHBfdHJhaW5fcGF0ICYgRFBfVFJBSU5JTkdfUEFUVEVSTl9NQVNLOwo+ICsKPiArICAg ICAgIGdsb2JhbF9jb25maWcgPSBOVU1fTEFORVMoZHAtPmxpbmsubnVtX2xhbmVzIC0gMSkgfCBT U1RfTU9ERSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0VOIHwgUkdfRU4gfCBF TkNfUlNUX0RJUyB8IFdSX1ZIU1lOQ19GQUxMOwo+ICsKPiArICAgICAgIHBoeV9jb25maWcgPSBE UF9UWF9QSFlfRU5DT0RFUl9CWVBBU1MoMCkgfAo+ICsgICAgICAgICAgICAgICAgICAgIERQX1RY X1BIWV9TS0VXX0JZUEFTUygwKSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgRFBfVFhfUEhZX0RJ U1BBUklUWV9SU1QoMCkgfAo+ICsgICAgICAgICAgICAgICAgICAgIERQX1RYX1BIWV9MQU5FMF9T S0VXKDApIHwKPiArICAgICAgICAgICAgICAgICAgICBEUF9UWF9QSFlfTEFORTFfU0tFVygxKSB8 Cj4gKyAgICAgICAgICAgICAgICAgICAgRFBfVFhfUEhZX0xBTkUyX1NLRVcoMikgfAo+ICsgICAg ICAgICAgICAgICAgICAgIERQX1RYX1BIWV9MQU5FM19TS0VXKDMpIHwKPiArICAgICAgICAgICAg ICAgICAgICBEUF9UWF9QSFlfMTBCSVRfRU5BQkxFKDApOwo+ICsKPiArICAgICAgIGlmIChwYXR0 ZXJuICE9IERQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSkgewo+ICsgICAgICAgICAgICAgICBn bG9iYWxfY29uZmlnIHw9IE5PX1ZJREVPOwo+ICsgICAgICAgICAgICAgICBwaHlfY29uZmlnIHw9 IERQX1RYX1BIWV9UUkFJTklOR19FTkFCTEUoMSkgfAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERQX1RYX1BIWV9TQ1JBTUJMRVJfQllQQVNTKDEpIHwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEUF9UWF9QSFlfVFJBSU5JTkdfUEFUVEVSTihwYXR0ZXJuKTsKPiArICAg ICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBjZG5fZHBfcmVnX3dyaXRlKGRwLCBEUF9GUkFNRVJf R0xPQkFMX0NPTkZJRywgZ2xvYmFsX2NvbmZpZyk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAg ICAgICAgICAgICAgIERSTV9FUlJPUigiZmFpbCB0byBzZXQgRFBfRlJBTUVSX0dMT0JBTF9DT05G SUcsIGVycm9yOiAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIHJldCk7Cj4gKyAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0ID0g Y2RuX2RwX3JlZ193cml0ZShkcCwgRFBfVFhfUEhZX0NPTkZJR19SRUcsIHBoeV9jb25maWcpOwo+ ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoImZhaWwgdG8g c2V0IERQX1RYX1BIWV9DT05GSUdfUkVHLCBlcnJvcjogJWRcbiIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICByZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIHJldCA9IGNkbl9kcF9yZWdfd3JpdGUoZHAsIERQVFhfTEFORV9FTiwg QklUKGRwLT5saW5rLm51bV9sYW5lcykgLSAxKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiArICAg ICAgICAgICAgICAgRFJNX0VSUk9SKCJmYWlsIHRvIHNldCBEUFRYX0xBTkVfRU4sIGVycm9yOiAl ZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiAr Cj4gKyAgICAgICBpZiAoZHJtX2RwX2VuaGFuY2VkX2ZyYW1lX2NhcChkcC0+ZHBjZCkpCj4gKyAg ICAgICAgICAgICAgIHJldCA9IGNkbl9kcF9yZWdfd3JpdGUoZHAsIERQVFhfRU5ITkNELCAxKTsK PiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgcmV0ID0gY2RuX2RwX3JlZ193cml0ZShk cCwgRFBUWF9FTkhOQ0QsIDApOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAg RFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0IERQVFhfRU5ITkNELCBlcnJvcjogJXhcbiIsIHJldCk7 Cj4gKwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHU4IGNkbl9kcF9w cmVfZW1waGFzaXNfbWF4KHU4IHZvbHRhZ2Vfc3dpbmcpCj4gK3sKPiArICAgICAgIHN3aXRjaCAo dm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgewo+ICsgICAgICAg Y2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzA6Cj4gKyAgICAgICAgICAgICAgIHJl dHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+ICsgICAgICAgY2FzZSBEUF9UUkFJTl9W T0xUQUdFX1NXSU5HX0xFVkVMXzE6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBEUF9UUkFJTl9Q UkVfRU1QSF9MRVZFTF8yOwo+ICsgICAgICAgY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xF VkVMXzI6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8x Owo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIERQX1RSQUlOX1BS RV9FTVBIX0xFVkVMXzA7Cj4gKyAgICAgICB9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNkbl9k cF9nZXRfYWRqdXN0X3RyYWluKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RB VFVTX1NJWkVdKQo+ICt7Cj4gKyAgICAgICBpbnQgaTsKPiArICAgICAgIHVpbnQ4X3QgdiA9IDAs IHAgPSAwOwo+ICsgICAgICAgdWludDhfdCBwcmVlbXBoX21heDsKPiArCj4gKyAgICAgICBmb3Ig KGkgPSAwOyBpIDwgZHAtPmxpbmsubnVtX2xhbmVzOyBpKyspIHsKPiArICAgICAgICAgICAgICAg diA9IG1heCh2LCBkcm1fZHBfZ2V0X2FkanVzdF9yZXF1ZXN0X3ZvbHRhZ2UobGlua19zdGF0dXMs IGkpKTsKPiArICAgICAgICAgICAgICAgcCA9IG1heChwLCBkcm1fZHBfZ2V0X2FkanVzdF9yZXF1 ZXN0X3ByZV9lbXBoYXNpcyhsaW5rX3N0YXR1cywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKSk7Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgaWYgKHYgPj0gVk9MVEFHRV9MRVZFTF8yKQo+ICsgICAgICAgICAgICAg ICB2ID0gVk9MVEFHRV9MRVZFTF8yIHwgRFBfVFJBSU5fTUFYX1NXSU5HX1JFQUNIRUQ7Cj4gKwo+ ICsgICAgICAgcHJlZW1waF9tYXggPSBjZG5fZHBfcHJlX2VtcGhhc2lzX21heCh2KTsKPiArICAg ICAgIGlmIChwID49IHByZWVtcGhfbWF4KQo+ICsgICAgICAgICAgICAgICBwID0gcHJlZW1waF9t YXggfCBEUF9UUkFJTl9NQVhfUFJFX0VNUEhBU0lTX1JFQUNIRUQ7Cj4gKwo+ICsgICAgICAgZm9y IChpID0gMDsgaSA8IGRwLT5saW5rLm51bV9sYW5lczsgaSsrKQo+ICsgICAgICAgICAgICAgICBk cC0+dHJhaW5fc2V0W2ldID0gdiB8IHA7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFBpY2sgdHJhaW5p bmcgcGF0dGVybiBmb3IgY2hhbm5lbCBlcXVhbGl6YXRpb24uIFRyYWluaW5nIFBhdHRlcm4gMyBm b3IgSEJSMgo+ICsgKiBvciAxLjIgZGV2aWNlcyB0aGF0IHN1cHBvcnQgaXQsIFRyYWluaW5nIFBh dHRlcm4gMiBvdGhlcndpc2UuCj4gKyAqLwo+ICtzdGF0aWMgdTMyIGNkbl9kcF9zZWxlY3RfY2hh bmVxX3BhdHRlcm4oc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQo+ICt7Cj4gKyAgICAgICB1MzIg dHJhaW5pbmdfcGF0dGVybiA9IERQX1RSQUlOSU5HX1BBVFRFUk5fMjsKPiArCj4gKyAgICAgICAv Kgo+ICsgICAgICAgICogY2RuIGRwIHN1cHBvcnQgSEJSMiBhbHNvIHN1cHBvcnQgVFBTMy4gVFBT MyBzdXBwb3J0IGlzIGFsc28gbWFuZGF0b3J5Cj4gKyAgICAgICAgKiBmb3IgZG93bnN0cmVhbSBk ZXZpY2VzIHRoYXQgc3VwcG9ydCBIQlIyLiBIb3dldmVyLCBub3QgYWxsIHNpbmtzCj4gKyAgICAg ICAgKiBmb2xsb3cgdGhlIHNwZWMuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmIChkcm1fZHBf dHBzM19zdXBwb3J0ZWQoZHAtPmRwY2QpKQo+ICsgICAgICAgICAgICAgICB0cmFpbmluZ19wYXR0 ZXJuID0gRFBfVFJBSU5JTkdfUEFUVEVSTl8zOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAg ICAgICBEUk1fREVCVUdfS01TKCI1LjQgR2JwcyBsaW5rIHJhdGUgd2l0aG91dCBzaW5rIFRQUzMg c3VwcG9ydFxuIik7Cj4gKwo+ICsgICAgICAgcmV0dXJuIHRyYWluaW5nX3BhdHRlcm47Cj4gK30K PiArCj4gKwo+ICtzdGF0aWMgYm9vbCBjZG5fZHBfbGlua19tYXhfdnN3aW5nX3JlYWNoZWQoc3Ry dWN0IGNkbl9kcF9kZXZpY2UgKmRwKQo+ICt7Cj4gKyAgICAgICBpbnQgbGFuZTsKPiArCj4gKyAg ICAgICBmb3IgKGxhbmUgPSAwOyBsYW5lIDwgZHAtPmxpbmsubnVtX2xhbmVzOyBsYW5lKyspCj4g KyAgICAgICAgICAgICAgIGlmICgoZHAtPnRyYWluX3NldFtsYW5lXSAmIERQX1RSQUlOX01BWF9T V0lOR19SRUFDSEVEKSA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKPiArCj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5f ZHBfdXBkYXRlX2xpbmtfdHJhaW4oc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQo+ICt7Cj4gKyAg ICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGNkbl9kcF9zZXRfc2lnbmFsX2xldmVscyhkcCk7 Cj4gKwo+ICsgICAgICAgcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmRwLT5hdXgsIERQX1RSQUlO SU5HX0xBTkUwX1NFVCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwLT50cmFp bl9zZXQsIGRwLT5saW5rLm51bV9sYW5lcyk7Cj4gKyAgICAgICBpZiAocmV0ICE9IGRwLT5saW5r Lm51bV9sYW5lcykKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsgICAg ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2RuX2RwX3NldF9saW5rX3RyYWlu KHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDhfdCBkcF90cmFpbl9wYXQpCj4gK3sKPiArICAgICAgIHVpbnQ4X3QgYnVmW3Np emVvZihkcC0+dHJhaW5fc2V0KSArIDFdOwo+ICsgICAgICAgaW50IHJldCwgbGVuOwo+ICsKPiAr ICAgICAgIGJ1ZlswXSA9IGRwX3RyYWluX3BhdDsKPiArICAgICAgIGlmICgoZHBfdHJhaW5fcGF0 ICYgRFBfVFJBSU5JTkdfUEFUVEVSTl9NQVNLKSA9PQo+ICsgICAgICAgICAgIERQX1RSQUlOSU5H X1BBVFRFUk5fRElTQUJMRSkgewo+ICsgICAgICAgICAgICAgICAvKiBkb24ndCB3cml0ZSBEUF9U UkFJTklOR19MQU5FeF9TRVQgb24gZGlzYWJsZSAqLwo+ICsgICAgICAgICAgICAgICBsZW4gPSAx Owo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgLyogRFBfVFJBSU5JTkdfTEFO RXhfU0VUIGZvbGxvdyBEUF9UUkFJTklOR19QQVRURVJOX1NFVCAqLwo+ICsgICAgICAgICAgICAg ICBtZW1jcHkoYnVmICsgMSwgZHAtPnRyYWluX3NldCwgZHAtPmxpbmsubnVtX2xhbmVzKTsKPiAr ICAgICAgICAgICAgICAgbGVuID0gZHAtPmxpbmsubnVtX2xhbmVzICsgMTsKPiArICAgICAgIH0K PiArCj4gKyAgICAgICByZXQgPSBkcm1fZHBfZHBjZF93cml0ZSgmZHAtPmF1eCwgRFBfVFJBSU5J TkdfUEFUVEVSTl9TRVQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGxl bik7Cj4gKyAgICAgICBpZiAocmV0ICE9IGxlbikKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2Ru X2RwX3Jlc2V0X2xpbmtfdHJhaW4oc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZHBfdHJhaW5fcGF0KQo+ICt7Cj4g KyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIG1lbXNldChkcC0+dHJhaW5fc2V0LCAwLCBz aXplb2YoZHAtPnRyYWluX3NldCkpOwo+ICsKPiArICAgICAgIGNkbl9kcF9zZXRfc2lnbmFsX2xl dmVscyhkcCk7Cj4gKwo+ICsgICAgICAgcmV0ID0gY2RuX2RwX3NldF9wYXR0ZXJuKGRwLCBkcF90 cmFpbl9wYXQpOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPiArCj4gKyAgICAgICByZXR1cm4gY2RuX2RwX3NldF9saW5rX3RyYWluKGRwLCBkcF90cmFp bl9wYXQpOwo+ICt9Cj4gKwo+ICsvKiBFbmFibGUgY29ycmVzcG9uZGluZyBwb3J0IGFuZCBzdGFy dCB0cmFpbmluZyBwYXR0ZXJuIDEgKi8KPiArc3RhdGljIGludCBjZG5fZHBfbGlua190cmFpbmlu Z19jbG9ja19yZWNvdmVyeShzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHApCj4gK3sKPiArICAgICAg IHU4IHZvbHRhZ2U7Cj4gKyAgICAgICB1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpF XTsKPiArICAgICAgIHUzMiB2b2x0YWdlX3RyaWVzLCBtYXhfdnN3aW5nX3RyaWVzOwo+ICsgICAg ICAgaW50IHJldDsKPiArCj4gKyAgICAgICAvKiBjbG9jayByZWNvdmVyeSAqLwo+ICsgICAgICAg cmV0ID0gY2RuX2RwX3Jlc2V0X2xpbmtfdHJhaW4oZHAsIERQX1RSQUlOSU5HX1BBVFRFUk5fMSB8 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFBfTElOS19TQ1JB TUJMSU5HX0RJU0FCTEUpOwo+ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBE Uk1fRVJST1IoImZhaWxlZCB0byBzdGFydCBsaW5rIHRyYWluXG4iKTsKPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICB2b2x0YWdlX3RyaWVzID0g MTsKPiArICAgICAgIG1heF92c3dpbmdfdHJpZXMgPSAwOwo+ICsgICAgICAgZm9yICg7Oykgewo+ ICsgICAgICAgICAgICAgICBkcm1fZHBfbGlua190cmFpbl9jbG9ja19yZWNvdmVyeV9kZWxheShk cC0+ZHBjZCk7Cj4gKyAgICAgICAgICAgICAgIGlmIChkcm1fZHBfZHBjZF9yZWFkX2xpbmtfc3Rh dHVzKCZkcC0+YXV4LCBsaW5rX3N0YXR1cykgIT0KPiArICAgICAgICAgICAgICAgICAgIERQX0xJ TktfU1RBVFVTX1NJWkUpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fRVJST1IoImZh aWxlZCB0byBnZXQgbGluayBzdGF0dXNcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBp ZiAoZHJtX2RwX2Nsb2NrX3JlY292ZXJ5X29rKGxpbmtfc3RhdHVzLCBkcC0+bGluay5udW1fbGFu ZXMpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiY2xvY2sgcmVj b3ZlcnkgT0tcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAg ICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAodm9sdGFnZV90cmllcyA+PSA1 KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiU2FtZSB2b2x0YWdl IHRyaWVkIDUgdGltZXNcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAobWF4X3Zz d2luZ190cmllcyA+PSAxKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tN UygiTWF4IFZvbHRhZ2UgU3dpbmcgcmVhY2hlZFxuIik7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAg ICAgIHZvbHRhZ2UgPSBkcC0+dHJhaW5fc2V0WzBdICYgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19N QVNLOwo+ICsKPiArICAgICAgICAgICAgICAgLyogVXBkYXRlIHRyYWluaW5nIHNldCBhcyByZXF1 ZXN0ZWQgYnkgdGFyZ2V0ICovCj4gKyAgICAgICAgICAgICAgIGNkbl9kcF9nZXRfYWRqdXN0X3Ry YWluKGRwLCBsaW5rX3N0YXR1cyk7Cj4gKyAgICAgICAgICAgICAgIGlmIChjZG5fZHBfdXBkYXRl X2xpbmtfdHJhaW4oZHApKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJm YWlsZWQgdG8gdXBkYXRlIGxpbmsgdHJhaW5pbmdcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAg ICAgICBpZiAoKGRwLT50cmFpbl9zZXRbMF0gJiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0sp ID09Cj4gKyAgICAgICAgICAgICAgICAgICB2b2x0YWdlKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICsrdm9sdGFnZV90cmllczsKPiArICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIHZvbHRhZ2VfdHJpZXMgPSAxOwo+ICsKPiArICAgICAgICAgICAgICAgaWYg KGNkbl9kcF9saW5rX21heF92c3dpbmdfcmVhY2hlZChkcCkpCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgKyttYXhfdnN3aW5nX3RyaWVzOwo+ICsgICAgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGNkbl9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBjZG5f ZHBfZGV2aWNlICpkcCkKPiArewo+ICsgICAgICAgaW50IHRyaWVzLCByZXQ7Cj4gKyAgICAgICB1 MzIgdHJhaW5pbmdfcGF0dGVybjsKPiArICAgICAgIHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElO S19TVEFUVVNfU0laRV07Cj4gKwo+ICsgICAgICAgdHJhaW5pbmdfcGF0dGVybiA9IGNkbl9kcF9z ZWxlY3RfY2hhbmVxX3BhdHRlcm4oZHApOwo+ICsgICAgICAgdHJhaW5pbmdfcGF0dGVybiB8PSBE UF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRTsKPiArCj4gKyAgICAgICByZXQgPSBjZG5fZHBfc2V0 X3BhdHRlcm4oZHAsIHRyYWluaW5nX3BhdHRlcm4pOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICByZXQgPSBjZG5fZHBfc2V0X2xp bmtfdHJhaW4oZHAsIHRyYWluaW5nX3BhdHRlcm4pOwo+ICsgICAgICAgaWYgKHJldCkgewo+ICsg ICAgICAgICAgICAgICBEUk1fRVJST1IoImZhaWxlZCB0byBzdGFydCBjaGFubmVsIGVxdWFsaXph dGlvblxuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgZm9yICh0cmllcyA9IDA7IHRyaWVzIDwgNTsgdHJpZXMrKykgewo+ICsgICAgICAg ICAgICAgICBkcm1fZHBfbGlua190cmFpbl9jaGFubmVsX2VxX2RlbGF5KGRwLT5kcGNkKTsKPiAr ICAgICAgICAgICAgICAgaWYgKGRybV9kcF9kcGNkX3JlYWRfbGlua19zdGF0dXMoJmRwLT5hdXgs IGxpbmtfc3RhdHVzKSAhPQo+ICsgICAgICAgICAgICAgICAgICAgRFBfTElOS19TVEFUVVNfU0la RSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBs aW5rIHN0YXR1c1xuIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAg ICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSBjbG9jayBpcyBz dGlsbCBvayAqLwo+ICsgICAgICAgICAgICAgICBpZiAoIWRybV9kcF9jbG9ja19yZWNvdmVyeV9v ayhsaW5rX3N0YXR1cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHAtPmxpbmsubnVtX2xhbmVzKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIERS TV9ERUJVR19LTVMoIkNsb2NrIHJlY292ZXJ5IGNoZWNrIGZhaWxlZFxuIik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg ICAgICAgIGlmIChkcm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1cywgIGRwLT5saW5rLm51 bV9sYW5lcykpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJDaGFu bmVsIEVRIGRvbmVcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsg ICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBVcGRhdGUgdHJhaW5pbmcg c2V0IGFzIHJlcXVlc3RlZCBieSB0YXJnZXQgKi8KPiArICAgICAgICAgICAgICAgY2RuX2RwX2dl dF9hZGp1c3RfdHJhaW4oZHAsIGxpbmtfc3RhdHVzKTsKPiArICAgICAgICAgICAgICAgaWYgKGNk bl9kcF91cGRhdGVfbGlua190cmFpbihkcCkpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBE Uk1fRVJST1IoImZhaWxlZCB0byB1cGRhdGUgbGluayB0cmFpbmluZ1xuIik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiAr Cj4gKyAgICAgICAvKiBUcnkgNSB0aW1lcywgZWxzZSBmYWlsIGFuZCB0cnkgYXQgbG93ZXIgQlcg Ki8KPiArICAgICAgIGlmICh0cmllcyA9PSA1KQo+ICsgICAgICAgICAgICAgICBEUk1fREVCVUdf S01TKCJDaGFubmVsIGVxdWFsaXphdGlvbiBmYWlsZWQgNSB0aW1lc1xuIik7Cj4gKwo+ICsgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2RuX2RwX3N0b3BfbGlu a190cmFpbihzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHApCj4gK3sKPiArICAgICAgIGludCByZXQg PSBjZG5fZHBfc2V0X3BhdHRlcm4oZHAsIERQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cj4g Kwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArCj4g KyAgICAgICByZXR1cm4gY2RuX2RwX3NldF9saW5rX3RyYWluKGRwLCBEUF9UUkFJTklOR19QQVRU RVJOX0RJU0FCTEUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNkbl9kcF9nZXRfbG93ZXJfbGlu a19yYXRlKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKPiArewo+ICsgICAgICAgc3dpdGNoIChk cC0+bGluay5yYXRlKSB7Cj4gKyAgICAgICBjYXNlIERQX0xJTktfQldfMV82MjoKPiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICBjYXNlIERQX0xJTktfQldfMl83Ogo+ ICsgICAgICAgICAgICAgICBkcC0+bGluay5yYXRlID0gRFBfTElOS19CV18xXzYyOwo+ICsgICAg ICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgRFBfTElOS19CV181XzQ6Cj4gKyAgICAg ICAgICAgICAgIGRwLT5saW5rLnJhdGUgPSBEUF9MSU5LX0JXXzJfNzsKPiArICAgICAgICAgICAg ICAgYnJlYWs7Cj4gKyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICBkcC0+bGluay5y YXRlID0gRFBfTElOS19CV181XzQ7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgY2RuX2RwX3NvZnR3YXJl X3RyYWluX2xpbmsoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQo+ICt7Cj4gKyAgICAgICBpbnQg cmV0LCBzdG9wX2VycjsKPiArICAgICAgIHU4IGxpbmtfY29uZmlnWzJdOwo+ICsgICAgICAgdTMy IHJhdGUsIHNpbmtfbWF4LCBzb3VyY2VfbWF4Owo+ICsKPiArICAgICAgIHJldCA9IGRybV9kcF9k cGNkX3JlYWQoJmRwLT5hdXgsIERQX0RQQ0RfUkVWLCBkcC0+ZHBjZCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRwLT5kcGNkKSk7Cj4gKyAgICAgICBpZiAocmV0IDwg MCkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJGYWlsZWQgdG8g Z2V0IGNhcHMgJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAg ICAgICB9Cj4gKwo+ICsgICAgICAgc291cmNlX21heCA9IGRwLT5sYW5lczsKPiArICAgICAgIHNp bmtfbWF4ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGRwLT5kcGNkKTsKPiArICAgICAgIGRwLT5s aW5rLm51bV9sYW5lcyA9IG1pbihzb3VyY2VfbWF4LCBzaW5rX21heCk7Cj4gKwo+ICsgICAgICAg c291cmNlX21heCA9IGRybV9kcF9id19jb2RlX3RvX2xpbmtfcmF0ZShDRE5fRFBfTUFYX0xJTktf UkFURSk7Cj4gKyAgICAgICBzaW5rX21heCA9IGRybV9kcF9tYXhfbGlua19yYXRlKGRwLT5kcGNk KTsKPiArICAgICAgIHJhdGUgPSBtaW4oc291cmNlX21heCwgc2lua19tYXgpOwo+ICsgICAgICAg ZHAtPmxpbmsucmF0ZSA9IGRybV9kcF9saW5rX3JhdGVfdG9fYndfY29kZShyYXRlKTsKPiArCj4g KyAgICAgICBsaW5rX2NvbmZpZ1swXSA9IDA7Cj4gKyAgICAgICBsaW5rX2NvbmZpZ1sxXSA9IDA7 Cj4gKyAgICAgICBpZiAoZHAtPmRwY2RbRFBfTUFJTl9MSU5LX0NIQU5ORUxfQ09ESU5HXSAmIDB4 MDEpCj4gKyAgICAgICAgICAgICAgIGxpbmtfY29uZmlnWzFdID0gRFBfU0VUX0FOU0lfOEIxMEI7 Cj4gKyAgICAgICBkcm1fZHBfZHBjZF93cml0ZSgmZHAtPmF1eCwgRFBfRE9XTlNQUkVBRF9DVFJM LCBsaW5rX2NvbmZpZywgMik7Cj4gKwo+ICsgICAgICAgd2hpbGUgKHRydWUpIHsKPiArCj4gKyAg ICAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBsaW5rIGNvbmZpZ3VyYXRpb24gZGF0YSAqLwo+ICsg ICAgICAgICAgICAgICBsaW5rX2NvbmZpZ1swXSA9IGRwLT5saW5rLnJhdGU7Cj4gKyAgICAgICAg ICAgICAgIGxpbmtfY29uZmlnWzFdID0gZHAtPmxpbmsubnVtX2xhbmVzOwo+ICsgICAgICAgICAg ICAgICBpZiAoZHJtX2RwX2VuaGFuY2VkX2ZyYW1lX2NhcChkcC0+ZHBjZCkpCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgbGlua19jb25maWdbMV0gfD0gRFBfTEFORV9DT1VOVF9FTkhBTkNFRF9G UkFNRV9FTjsKPiArICAgICAgICAgICAgICAgZHJtX2RwX2RwY2Rfd3JpdGUoJmRwLT5hdXgsIERQ X0xJTktfQldfU0VULCBsaW5rX2NvbmZpZywgMik7Cj4gKwo+ICsgICAgICAgICAgICAgICByZXQg PSBjZG5fZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShkcCk7Cj4gKyAgICAgICAgICAg ICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNkbl9kcF9nZXRf bG93ZXJfbGlua19yYXRlKGRwKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fRVJST1IoInRyYWluaW5n IGNsb2NrIHJlY292ZXJ5IGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIHJl dCA9IGNkbl9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGRwKTsKPiArICAg ICAgICAgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2Ru X2RwX2dldF9sb3dlcl9saW5rX3JhdGUoZHApKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigi dHJhaW5pbmcgY2hhbm5lbCBlcSBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAg ICBicmVhazsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBzdG9wX2VyciA9IGNkbl9kcF9zdG9w X2xpbmtfdHJhaW4oZHApOwo+ICsgICAgICAgaWYgKHN0b3BfZXJyKSB7Cj4gKyAgICAgICAgICAg ICAgIERSTV9FUlJPUigic3RvcCB0cmFpbmluZyBmYWlsLCBlcnJvcjogJWRcbiIsIHN0b3BfZXJy KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHN0b3BfZXJyOwo+ICsgICAgICAgfQo+ICsKPiAr ICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL2Nkbi1kcC1yZWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVn LmMKPiBpbmRleCA5NzkzNTVkLi5lMTI3M2U2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv Y2RuLWRwLXJlZy5jCj4gQEAgLTE3LDcgKzE3LDkgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICAjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yZXNldC5o Pgo+ICsjaW5jbHVkZSA8c29jL3JvY2tjaGlwL3JvY2tjaGlwX3BoeV90eXBlYy5oPgo+Cj4gICNp bmNsdWRlICJjZG4tZHAtY29yZS5oIgo+ICAjaW5jbHVkZSAiY2RuLWRwLXJlZy5oIgo+IEBAIC0x ODksNyArMTkxLDcgQEAgc3RhdGljIGludCBjZG5fZHBfbWFpbGJveF9zZW5kKHN0cnVjdCBjZG5f ZHBfZGV2aWNlICpkcCwgdTggbW9kdWxlX2lkLAo+ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ IC1zdGF0aWMgaW50IGNkbl9kcF9yZWdfd3JpdGUoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCB1 MTYgYWRkciwgdTMyIHZhbCkKPiAraW50IGNkbl9kcF9yZWdfd3JpdGUoc3RydWN0IGNkbl9kcF9k ZXZpY2UgKmRwLCB1MTYgYWRkciwgdTMyIHZhbCkKPiAgewo+ICAgICAgICAgdTggbXNnWzZdOwo+ Cj4gQEAgLTYwOSw2ICs2MTEsMzEgQEAgaW50IGNkbl9kcF90cmFpbl9saW5rKHN0cnVjdCBjZG5f ZHBfZGV2aWNlICpkcCkKPiAgewo+ICAgICAgICAgaW50IHJldDsKPgo+ICsgICAgICAgLyoKPiAr ICAgICAgICAqIERQIGZpcm13YXJlIHVzZXMgZml4ZWQgcGh5IGNvbmZpZyB2YWx1ZXMgdG8gZG8g dHJhaW5pbmcsIGJ1dCBzb21lCj4gKyAgICAgICAgKiBib2FyZHMgbmVlZCB0byBhZGp1c3QgdGhl c2UgdmFsdWVzIHRvIGZpdCBmb3IgdGhlaXIgdW5pcXVlIGhhcmR3YXJlCj4gKyAgICAgICAgKiBk ZXNpZ24uIFNvIGlmIHRoZSBwaHkgaXMgdXNpbmcgY3VzdG9tIGNvbmZpZyB2YWx1ZXMsIGRvIHNv ZnR3YXJlCj4gKyAgICAgICAgKiBsaW5rIHRyYWluaW5nIGluc3RlYWQgb2YgcmVseWluZyBvbiBm aXJtd2FyZSwgaWYgc29mdHdhcmUgdHJhaW5pbmcKPiArICAgICAgICAqIGZhaWwsIGtlZXAgZmly bXdhcmUgdHJhaW5pbmcgYXMgYSBmYWxsYmFjayBpZiBzdyB0cmFpbmluZyBmYWlscy4KPiArICAg ICAgICAqLwo+ICsgICAgICAgcmV0ID0gY2RuX2RwX3NvZnR3YXJlX3RyYWluX2xpbmsoZHApOwo+ ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBEUk1fREVWX0VSUk9SKGRwLT5k ZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBkbyBzb2Z0d2FyZSB0cmFp bmluZyAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgZ290byBkb19md190cmFpbmluZzsK PiArICAgICAgIH0KPiArICAgICAgIHJldCA9IGNkbl9kcF9yZWdfd3JpdGUoZHAsIFNPVVJDRV9I RFRYX0NBUiwgMHhmKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgRFJN X0RFVl9FUlJPUihkcC0+ZGV2LAo+ICsgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHdyaXRlIFNP VVJDRV9IRFRYX0NBUiByZWdpc3RlciAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgZ290 byBkb19md190cmFpbmluZzsKPiArICAgICAgIH0KPiArICAgICAgIGRwLT51c2VfZndfdHJhaW5p bmcgPSBmYWxzZTsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZG9fZndfdHJhaW5pbmc6Cj4g KyAgICAgICBkcC0+dXNlX2Z3X3RyYWluaW5nID0gdHJ1ZTsKPiArICAgICAgIERSTV9ERVZfREVC VUdfS01TKGRwLT5kZXYsICJ1c2UgZncgdHJhaW5pbmdcbiIpOwo+ICAgICAgICAgcmV0ID0gY2Ru X2RwX3RyYWluaW5nX3N0YXJ0KGRwKTsKPiAgICAgICAgIGlmIChyZXQpIHsKPiAgICAgICAgICAg ICAgICAgRFJNX0RFVl9FUlJPUihkcC0+ZGV2LCAiRmFpbGVkIHRvIHN0YXJ0IHRyYWluaW5nICVk XG4iLCByZXQpOwo+IEBAIC02MjMsNyArNjUwLDcgQEAgaW50IGNkbl9kcF90cmFpbl9saW5rKHN0 cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKPgo+ICAgICAgICAgRFJNX0RFVl9ERUJVR19LTVMoZHAt PmRldiwgInJhdGU6MHgleCwgbGFuZXM6JWRcbiIsIGRwLT5saW5rLnJhdGUsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICBkcC0+bGluay5udW1fbGFuZXMpOwo+IC0gICAgICAgcmV0dXJuIHJl dDsKPiArICAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAgaW50IGNkbl9kcF9zZXRfdmlkZW9fc3Rh dHVzKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgaW50IGFjdGl2ZSkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9jZG4tZHAtcmVnLmgKPiBpbmRleCA2NTgwYjExLi4zNDIwNzcxIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVnLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLXJlZy5oCj4gQEAgLTEzNyw3ICsxMzcsNyBAQAo+ICAj ZGVmaW5lIEhQRF9FVkVOVF9NQVNLICAgICAgICAgICAgICAgICAweDIxMWMKPiAgI2RlZmluZSBI UERfRVZFTlRfREVUICAgICAgICAgICAgICAgICAgMHgyMTIwCj4KPiAtLyogZHB5eCBmcmFtZXIg YWRkciAqLwo+ICsvKiBkcHR4IGZyYW1lciBhZGRyICovCj4gICNkZWZpbmUgRFBfRlJBTUVSX0dM T0JBTF9DT05GSUcgICAgICAgICAgICAgICAgMHgyMjAwCj4gICNkZWZpbmUgRFBfU1dfUkVTRVQg ICAgICAgICAgICAgICAgICAgIDB4MjIwNAo+ICAjZGVmaW5lIERQX0ZSQU1FUl9UVSAgICAgICAg ICAgICAgICAgICAweDIyMDgKPiBAQCAtNDMxLDYgKzQzMSw0MCBAQAo+ICAvKiBSZWZlcmVuY2Ug Y3ljbGVzIHdoZW4gdXNpbmcgbGFuZSBjbG9jayBhcyByZWZlcmVuY2UgKi8KPiAgI2RlZmluZSBM QU5FX1JFRl9DWUMgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAKPgo+ICsvKiByZWdp c3RlciBDTV9WSURfQ1RSTCAqLwo+ICsjZGVmaW5lIExBTkVfVklEX1JFRl9DWUMoeCkgICAgICAg ICAgICAgICAgICAgICgoKHgpICYgKEJJVCgyNCkgLSAxKSkgPDwgMCkKPiArI2RlZmluZSBOTVZJ RF9NRUFTX1RPTEVSQU5DRSh4KSAgICAgICAgICAgICAgICAgICAgICAgICgoKHgpICYgMHhmKSA8 PCAyNCkKPiArCj4gKy8qIHJlZ2lzdGVyIERQX1RYX1BIWV9DT05GSUdfUkVHICovCj4gKyNkZWZp bmUgRFBfVFhfUEhZX1RSQUlOSU5HX0VOQUJMRSh4KSAgICAgICAgICAgKCh4KSAmIDEpCj4gKyNk ZWZpbmUgRFBfVFhfUEhZX1RSQUlOSU5HX1RZUEVfUFJCUzcgICAgICAgICAgKDAgPDwgMSkKPiAr I2RlZmluZSBEUF9UWF9QSFlfVFJBSU5JTkdfVFlQRV9UUFMxICAgICAgICAgICAoMSA8PCAxKQo+ ICsjZGVmaW5lIERQX1RYX1BIWV9UUkFJTklOR19UWVBFX1RQUzIgICAgICAgICAgICgyIDw8IDEp Cj4gKyNkZWZpbmUgRFBfVFhfUEhZX1RSQUlOSU5HX1RZUEVfVFBTMyAgICAgICAgICAgKDMgPDwg MSkKPiArI2RlZmluZSBEUF9UWF9QSFlfVFJBSU5JTkdfVFlQRV9UUFM0ICAgICAgICAgICAoNCA8 PCAxKQo+ICsjZGVmaW5lIERQX1RYX1BIWV9UUkFJTklOR19UWVBFX1BMVFBBVCAgICAgICAgICg1 IDw8IDEpCj4gKyNkZWZpbmUgRFBfVFhfUEhZX1RSQUlOSU5HX1RZUEVfRDEwXzIgICAgICAgICAg KDYgPDwgMSkKPiArI2RlZmluZSBEUF9UWF9QSFlfVFJBSU5JTkdfVFlQRV9IQlIyQ1BBVCAgICAg ICAoOCA8PCAxKQo+ICsjZGVmaW5lIERQX1RYX1BIWV9UUkFJTklOR19QQVRURVJOKHgpICAgICAg ICAgICgoeCkgPDwgMSkKPiArI2RlZmluZSBEUF9UWF9QSFlfU0NSQU1CTEVSX0JZUEFTUyh4KSAg ICAgICAgICAoKCh4KSAmIDEpIDw8IDUpCj4gKyNkZWZpbmUgRFBfVFhfUEhZX0VOQ09ERVJfQllQ QVNTKHgpICAgICAgICAgICAgKCgoeCkgJiAxKSA8PCA2KQo+ICsjZGVmaW5lIERQX1RYX1BIWV9T S0VXX0JZUEFTUyh4KSAgICAgICAgICAgICAgICgoKHgpICYgMSkgPDwgNykKPiArI2RlZmluZSBE UF9UWF9QSFlfRElTUEFSSVRZX1JTVCh4KSAgICAgICAgICAgICAoKCh4KSAmIDEpIDw8IDgpCj4g KyNkZWZpbmUgRFBfVFhfUEhZX0xBTkUwX1NLRVcoeCkgICAgICAgICAgICAgICAgKCgoeCkgJiA3 KSA8PCA5KQo+ICsjZGVmaW5lIERQX1RYX1BIWV9MQU5FMV9TS0VXKHgpICAgICAgICAgICAgICAg ICgoKHgpICYgNykgPDwgMTIpCj4gKyNkZWZpbmUgRFBfVFhfUEhZX0xBTkUyX1NLRVcoeCkgICAg ICAgICAgICAgICAgKCgoeCkgJiA3KSA8PCAxNSkKPiArI2RlZmluZSBEUF9UWF9QSFlfTEFORTNf U0tFVyh4KSAgICAgICAgICAgICAgICAoKCh4KSAmIDcpIDw8IDE4KQo+ICsjZGVmaW5lIERQX1RY X1BIWV8xMEJJVF9FTkFCTEUoeCkgICAgICAgICAgICAgICgoKHgpICYgMSkgPDwgMjEpCj4gKwo+ ICsvKiByZWdpc3RlciBEUF9GUkFNRVJfR0xPQkFMX0NPTkZJRyAqLwo+ICsjZGVmaW5lIE5VTV9M QU5FUyh4KSAgICAgICAgICAgKCh4KSAmIDMpCj4gKyNkZWZpbmUgU1NUX01PREUgICAgICAgICAg ICAgICAoMCA8PCAyKQo+ICsjZGVmaW5lIFJHX0VOICAgICAgICAgICAgICAgICAgKDAgPDwgNCkK PiArI2RlZmluZSBHTE9CQUxfRU4gICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIE5PX1ZJ REVPICAgICAgICAgICAgICAgQklUKDUpCj4gKyNkZWZpbmUgRU5DX1JTVF9ESVMgICAgICAgICAg ICBCSVQoNikKPiArI2RlZmluZSBXUl9WSFNZTkNfRkFMTCAgICAgICAgIEJJVCg3KQo+ICsKPiAg ZW51bSB2b2x0YWdlX3N3aW5nX2xldmVsIHsKPiAgICAgICAgIFZPTFRBR0VfTEVWRUxfMCwKPiAg ICAgICAgIFZPTFRBR0VfTEVWRUxfMSwKPiBAQCAtNDc2LDYgKzUxMCw3IEBAIGludCBjZG5fZHBf c2V0X2hvc3RfY2FwKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgdTggbGFuZXMsIGJvb2wgZmxp cCk7Cj4gIGludCBjZG5fZHBfZXZlbnRfY29uZmlnKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCk7 Cj4gIHUzMiBjZG5fZHBfZ2V0X2V2ZW50KHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCk7Cj4gIGlu dCBjZG5fZHBfZ2V0X2hwZF9zdGF0dXMoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKTsKPiAraW50 IGNkbl9kcF9yZWdfd3JpdGUoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCB1MTYgYWRkciwgdTMy IHZhbCk7Cj4gIHNzaXplX3QgY2RuX2RwX2RwY2Rfd3JpdGUoc3RydWN0IGNkbl9kcF9kZXZpY2Ug KmRwLCB1MzIgYWRkciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4ICpkYXRhLCB1MTYg bGVuKTsKPiAgc3NpemVfdCBjZG5fZHBfZHBjZF9yZWFkKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpk cCwgdTMyIGFkZHIsCj4gQEAgLTQ4OSw0ICs1MjQsNSBAQCBpbnQgY2RuX2RwX2NvbmZpZ192aWRl byhzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHApOwo+ICBpbnQgY2RuX2RwX2F1ZGlvX3N0b3Aoc3Ry dWN0IGNkbl9kcF9kZXZpY2UgKmRwLCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW8pOwo+ICBpbnQg Y2RuX2RwX2F1ZGlvX211dGUoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCBib29sIGVuYWJsZSk7 Cj4gIGludCBjZG5fZHBfYXVkaW9fY29uZmlnKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgc3Ry dWN0IGF1ZGlvX2luZm8gKmF1ZGlvKTsKPiAraW50IGNkbl9kcF9zb2Z0d2FyZV90cmFpbl9saW5r KHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCk7Cj4gICNlbmRpZiAvKiBfQ0ROX0RQX1JFR19IICov Cj4gLS0KPiAyLjcuNAo+CgpUZXN0ZWQtYnk6IEVucmljIEJhbGxldGJvIGkgU2VycmEgPGVucmlj LmJhbGxldGJvQGNvbGxhYm9yYS5jb20+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=