From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH v2] drm/exynos: consider deferred probe case Date: Thu, 05 Jun 2014 09:36:29 +0200 Message-ID: <53901DFD.7040006@samsung.com> References: <1401355682-6939-1-git-send-email-inki.dae@samsung.com> <538F01EC.5050008@samsung.com> <538FE70D.9090004@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <538FE70D.9090004@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Inki Dae Cc: linux-samsung-soc@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-samsung-soc@vger.kernel.org T24gMDYvMDUvMjAxNCAwNTo0MiBBTSwgSW5raSBEYWUgd3JvdGU6Cj4gT24gMjAxNOuFhCAwNuyb lCAwNOydvCAyMDoyNCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPj4gT24gMDUvMjkvMjAxNCAxMToy OCBBTSwgSW5raSBEYWUgd3JvdGU6Cj4+PiBUaGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBleHlu b3MgZHJtIGZyYW1ld29yayBoYW5kbGVzIGRlZmVycmVkCj4+PiBwcm9iZSBjYXNlIGNvcnJlY3Rs eS4KPj4+Cj4+PiBTdWIgZHJpdmVycyBjb3VsZCBiZSBwcm9iZWQgYmVmb3JlIHJlc291cmNlcywg Y2xvY2ssIHJlZ3VsYXRvciwKPj4+IHBoeSBvciBwYW5lbCwgYXJlIHJlYWR5IGZvciB0aGVtIHNv IHdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBleHlub3MKPj4+IGRybSBjb3JlIHdhaXRzIHVudGls IGFsbCByZXNvdXJjZXMgYXJlIHJlYWR5IGFuZCBzdWIgZHJpdmVycyBhcmUKPj4+IHByb2JlZCBj b3JyZWN0bHkuCj4+Pgo+Pj4gQ2hhZ2Vsb2cgdjI6Cj4+PiAtIE1ha2Ugc3VyZSB0aGF0IGV4eW5v cyBkcm0gY29yZSB0cmllcyB0byBiaW5kIHN1YiBkcml2ZXJzIG9ubHkgaW4gY2FzZSB0aGF0Cj4+ PiAgIHRoZXkgaGF2ZSBhIHBhaXI6IGNydGMgYW5kIGVuY29kZXIvY29ubmVjdG9yIGNvbXBvbmVu dHMgc2hvdWxkIGJlIGEgcGFpci4KPj4gRG8gd2UgcmVhbGx5IG5lZWQgaXQ/IEl0IGFkZHMgbG90 IG9mIGNvZGUgd2hpY2ggaW4gZmFjdCBkb2VzIG5vdCBpbXByb3ZlCj4+IGV4eW5vc19kcm0gLSBp ZiBzb21lIGRyaXZlciBvciBkZXZpY2UgaXMgbWlzc2luZyBkcm0gd2lsbCBmYWlsIGF0IGxvYWQK Pj4gb3IgaXQgd2lsbCBzdGFydCB3aXRoIHVudXNhYmxlIHBpcGVsaW5lIGFueXdheSwgdGhlIGxh dHRlciBjYW4gYmUKPj4gY2hhbmdlZCB0byBlcnJvciBhcyB3ZWxsLgo+IFByZXZpb3VzIHZlcnNp b24gYWxzbyBpbmN1cnJlZCB1bnVzYWJsZSBwaXBlbGluZTogY3J0YyBkcml2ZXIgaXMgYm91bmQK PiBldmVuIHRob3VnaCBwcm9iZSBvZiBjb25uZWN0b3IvZW5jb2RlciBkcml2ZXIgcmV0dXJuZWQg ZXJyb3IuIEluIHRoaXMKPiBjYXNlLCB0aGUgY3J0YyBkcml2ZXIgd291bGQgaGF2ZSBub3RoaW5n IHRvIGRvIGFsb25lIHdpdGhvdXQKPiBjb25uZWN0b3IvZW5jb2RlciBwYXJ0LgoKVGhhdCB3YXMg YmVjYXVzZSBleHlub3NfZHJtX2NvbXBvbmVudF9kZWwgd2VyZSB1c2VkIG9uIHByb2JlIGZhaWwg YW5kCnJlbW92ZSBjYWxsYmFja3MuCkkgaGF2ZSBjb21tZW50ZWQgaXQgaW4gWzFdLCBJIGZvcmdv dCB0byBhZGQgdGhhdCBleHlub3NfZHJtX2FkZF9jb21wb25lbnRzCnNob3VsZCByZXR1cm4gc3Vj Y2VzcyBvbmx5IGlmIGFsbCBjb21wb25lbnRzIGZyb20gdGhlIGxpc3QgYXJlIHByZXNlbnQKYW5k IGFkZGVkIHN1Y2Nlc3NmdWxseS4KClsxXTogaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21h bmUubGludXgua2VybmVsLnNhbXN1bmctc29jLzMyNDYzCgo+Cj4+PiAtIFJlbW92ZSB1bm5lY2Vz c2FyeSBwYXRjaDoKPj4+ICAgZHJtL2V4eW5vczogbWlwaS1kc2k6IGNvbnNpZGVyIHBhbmVsIGRy aXZlci1kZWZlcnJlZCBwcm9iZQo+Pj4gLSBSZXR1cm4gZXJyb3IgdHlwZSBjb3JyZWN0bHkuCj4+ Pgo+Pj4gU2lnbmVkLW9mZi1ieTogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgo+Pj4g QWNrZWQtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cj4+PiAt LS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcF9jb3JlLmMgIHwgICAxOCAr KystCj4+PiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RwaS5jICB8ICAgMjIg KysrKy0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMgIHwgIDEz OSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZHJ2LmggIHwgICAxMyArKy0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZHNpLmMgIHwgICA0MSArKysrKystLS0KPj4+ICBkcml2ZXJzL2dwdS9k cm0vZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jIHwgICA1MSArKysrKysrKy0tLQo+Pj4gIGRyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2hkbWkuYyAgICAgfCAgIDc4ICsrKysrKysrKysrKy0t LS0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfbWl4ZXIuYyAgICB8ICAgMTcg KysrLQo+Pj4gIDggZmlsZXMgY2hhbmdlZCwgMzA0IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cF9jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcF9jb3JlLmMKPj4+IGlu ZGV4IGZmNjM5MDEuLmE4OTI1ODYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcF9jb3JlLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX2RwX2NvcmUuYwo+Pj4gQEAgLTEzMjgsMTIgKzEzMjgsMjYgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBjb21wb25lbnRfb3BzIGV4eW5vc19kcF9vcHMgPSB7Cj4+PiAgCj4+PiAgc3RhdGljIGlu dCBleHlub3NfZHBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICB7Cj4+ PiAtCXJldHVybiBleHlub3NfZHJtX2NvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJmV4eW5vc19k cF9vcHMpOwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlyZXQgPSBleHlub3NfZHJtX2NvbXBv bmVudF9hZGQoJnBkZXYtPmRldiwgRVhZTk9TX0RFVklDRV9UWVBFX0NPTk5FQ1RPUiwKPj4+ICsJ CQkJCWV4eW5vc19kcF9kaXNwbGF5LnR5cGUpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJcmV0dXJu IHJldDsKPj4+ICsKPj4+ICsJcmV0ID0gY29tcG9uZW50X2FkZCgmcGRldi0+ZGV2LCAmZXh5bm9z X2RwX29wcyk7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlleHlub3NfZHJtX2NvbXBvbmVudF9kZWwo JnBkZXYtPmRldiwKPj4+ICsJCQkJCQlFWFlOT1NfREVWSUNFX1RZUEVfQ09OTkVDVE9SKTsKPj4+ ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICB9Cj4+PiAgCj4+PiAgc3RhdGljIGludCBleHlub3Nf ZHBfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiAgewo+Pj4gLQlleHlu b3NfZHJtX2NvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmV4eW5vc19kcF9vcHMpOwo+Pj4gKwlj b21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZleHlub3NfZHBfb3BzKTsKPj4+ICsJZXh5bm9zX2Ry bV9jb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsIEVYWU5PU19ERVZJQ0VfVFlQRV9DT05ORUNUT1Ip Owo+PiBBcyBJIHdyb3RlIGluIHRoZSBwcmV2aW91cyBjb21tZW50IGNhbGxpbmcgZXh5bm9zX2Ry bV9jb21wb25lbnRfZGVsIGhlcmUKPj4gd2lsbCBjYXVzZSBleHlub3NfZHJ2IHRvIHN0b3Agd2Fp dGluZyBmb3IgZXh5bm9zX2RwIHRvIGJyaW5nIHVwIGRybQo+PiBhZ2Fpbiwgd2hpY2ggaXMgd3Jv bmcuIFRoZSBzYW1lIGNvbW1lbnQgaXMgdmFsaWQgZm9yIGFsbCBvdGhlciBjYWxscyBvZgo+PiBl eHlub3NfZHJtX2NvbXBvbmVudF9kZWwgaW4gKl9yZW1vdmUgYW5kICpfcHJvYmUuCj4+IE9yIG1h eWJlIEkgbWlzcyBzb21ldGhpbmc/Pz8KPj4KPiBJZiB3ZSByZW1vdmUgZXh5bm9zX2RybV9jb21w b25lbnRfZGVsIGNhbGxzLCB0aGUgZGVmZXJyZWQgcHJvYmUgY2FzZQo+IGRvZXNuJ3Qgd29yayBj b3JyZWN0bHkuIEFzc3VtZSB0aGF0IGNvbm5lY3Rvci9lbmNvZGVyIGRyaXZlciByZXR1cm5lZAo+ IC1FUFJPQkVfREVGRVIgYnV0IGl0cyBjb3JyZXNwb25kaW5nIGNydGMgZHJpdmVyIHdvcmtlZCBj b3JyZWN0bHkuIEluCj4gdGhpcyBjYXNlLCBpZiB3ZSBkb24ndCBjYWxsIGV4eW5vc19kcm1fY29t cG9uZW50X2RlbCBmdW5jdGlvbiBhdCBmYWlsCj4gY2FzZSwgZXh5bm9zIGRybSBjb3JlIHdpbGwg dHJ5IHRvIGJpbmQgdGhlIHN1YiBkcml2ZXIgd2hpY2ggcmV0dXJuZWQKPiAtRVBST0JFX0RFRkVS LiBIb3dldmVyLCB0aGUgc3ViIGRyaXZlciB3aWxsIGJlIHByb2JlZCBieSBkZWZlcnJlZCBwcm9i ZQo+IGFnYWluLCBhbmQgd2lsbCBjYWxsIGV4eW5vc19kcm1fY29tcG9uZW50X2FkZCBhZ2Fpbi4g VGhhdCB3b3VsZCBiZSB5b3VyCj4gbWlzc2luZyBwb2ludC4KClllcywgSSBmb3Jnb3QgYWdhaW4g dG8gZXhhbWluZSBleHlub3NfZHJtX2FkZF9jb21wb25lbnRzLgpJIHdvdWxkIGNoYW5nZSBpdHMg YmVoYXZpb3IgYXMgZGVzY3JpYmVkIGluIG15IHByZXZpb3VzIGNvbW1pdC4KClJlZ2FyZHMKQW5k cnplagoKPgo+Cj4+PiArCj4+PiAgCXJldHVybiAwOwo+Pj4gIH0KPj4+ICAKPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHBpLmMgYi9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHBpLmMKPj4+IGluZGV4IGE4MzIzNjQuLmYxYjg1ODcg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHBpLmMK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcGkuYwo+Pj4gQEAg LTI5NSw5ICsyOTUsMTUgQEAgc3RydWN0IGV4eW5vc19kcm1fZGlzcGxheSAqZXh5bm9zX2RwaV9w cm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+PiAgCXN0cnVjdCBleHlub3NfZHBpICpjdHg7Cj4+ PiAgCWludCByZXQ7Cj4+PiAgCj4+PiArCXJldCA9IGV4eW5vc19kcm1fY29tcG9uZW50X2FkZChk ZXYsCj4+PiArCQkJCQlFWFlOT1NfREVWSUNFX1RZUEVfQ09OTkVDVE9SLAo+Pj4gKwkJCQkJZXh5 bm9zX2RwaV9kaXNwbGF5LnR5cGUpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPj4+ICsKPj4+ICAJY3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgp LCBHRlBfS0VSTkVMKTsKPj4+ICAJaWYgKCFjdHgpCj4+PiAtCQlyZXR1cm4gTlVMTDsKPj4+ICsJ CWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+PiAgCj4+PiAgCWN0eC0+ZGV2ID0gZGV2Owo+Pj4g IAlleHlub3NfZHBpX2Rpc3BsYXkuY3R4ID0gY3R4Owo+Pj4gQEAgLTMwNiwxNiArMzEyLDI0IEBA IHN0cnVjdCBleHlub3NfZHJtX2Rpc3BsYXkgKmV4eW5vc19kcGlfcHJvYmUoc3RydWN0IGRldmlj ZSAqZGV2KQo+Pj4gIAlyZXQgPSBleHlub3NfZHBpX3BhcnNlX2R0KGN0eCk7Cj4+PiAgCWlmIChy ZXQgPCAwKSB7Cj4+PiAgCQlkZXZtX2tmcmVlKGRldiwgY3R4KTsKPj4+IC0JCXJldHVybiBOVUxM Owo+Pj4gKwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPj4+ICAJfQo+Pj4gIAo+Pj4gIAlpZiAo Y3R4LT5wYW5lbF9ub2RlKSB7Cj4+PiAgCQljdHgtPnBhbmVsID0gb2ZfZHJtX2ZpbmRfcGFuZWwo Y3R4LT5wYW5lbF9ub2RlKTsKPj4+IC0JCWlmICghY3R4LT5wYW5lbCkKPj4+ICsJCWlmICghY3R4 LT5wYW5lbCkgewo+Pj4gKwkJCWV4eW5vc19kcm1fY29tcG9uZW50X2RlbChkZXYsCj4+PiArCQkJ CQkJRVhZTk9TX0RFVklDRV9UWVBFX0NPTk5FQ1RPUik7Cj4+PiAgCQkJcmV0dXJuIEVSUl9QVFIo LUVQUk9CRV9ERUZFUik7Cj4+PiArCQl9Cj4+PiAgCX0KPj4+ICAKPj4+ICAJcmV0dXJuICZleHlu b3NfZHBpX2Rpc3BsYXk7Cj4+PiArCj4+PiArZXJyX2RlbF9jb21wb25lbnQ6Cj4+PiArCWV4eW5v c19kcm1fY29tcG9uZW50X2RlbChkZXYsIEVYWU5PU19ERVZJQ0VfVFlQRV9DT05ORUNUT1IpOwo+ Pj4gKwo+Pj4gKwlyZXR1cm4gTlVMTDsKPj4+ICB9Cj4+PiAgCj4+PiAgaW50IGV4eW5vc19kcGlf cmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4+IEBAIC0zMjcsNSArMzQxLDcgQEAgaW50IGV4 eW5vc19kcGlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4+ICAJZW5jb2Rlci0+ZnVuY3Mt PmRlc3Ryb3koZW5jb2Rlcik7Cj4+PiAgCWRybV9jb25uZWN0b3JfY2xlYW51cCgmY3R4LT5jb25u ZWN0b3IpOwo+Pj4gIAo+Pj4gKwlleHlub3NfZHJtX2NvbXBvbmVudF9kZWwoZGV2LCBFWFlOT1Nf REVWSUNFX1RZUEVfQ09OTkVDVE9SKTsKPj4+ICsKPj4+ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwo+Pj4gaW5kZXggYzVhNDAxYWUu LjcyYTVkZTEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZHJ2LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYu Ywo+Pj4gQEAgLTQ4LDcgKzQ4LDEwIEBAIHN0YXRpYyBMSVNUX0hFQUQoZHJtX2NvbXBvbmVudF9s aXN0KTsKPj4+ICAKPj4+ICBzdHJ1Y3QgY29tcG9uZW50X2RldiB7Cj4+PiAgCXN0cnVjdCBsaXN0 X2hlYWQgbGlzdDsKPj4+IC0Jc3RydWN0IGRldmljZSAqZGV2Owo+Pj4gKwlzdHJ1Y3QgZGV2aWNl ICpjcnRjX2RldjsKPj4+ICsJc3RydWN0IGRldmljZSAqY29ubl9kZXY7Cj4+PiArCWVudW0gZXh5 bm9zX2RybV9vdXRwdXRfdHlwZSBvdXRfdHlwZTsKPj4+ICsJdW5zaWduZWQgaW50IGRldl90eXBl X2ZsYWc7Cj4+PiAgfTsKPj4+ICAKPj4+ICBzdGF0aWMgaW50IGV4eW5vc19kcm1fbG9hZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+Pj4gQEAgLTM4MiwyMiAr Mzg1LDY1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBleHlub3NfZHJtX3BtX29w cyA9IHsKPj4+ICB9Owo+Pj4gIAo+Pj4gIGludCBleHlub3NfZHJtX2NvbXBvbmVudF9hZGQoc3Ry dWN0IGRldmljZSAqZGV2LAo+Pj4gLQkJCQljb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyAqb3Bz KQo+Pj4gKwkJCQllbnVtIGV4eW5vc19kcm1fZGV2aWNlX3R5cGUgZGV2X3R5cGUsCj4+PiArCQkJ CWVudW0gZXh5bm9zX2RybV9vdXRwdXRfdHlwZSBvdXRfdHlwZSkKPj4+ICB7Cj4+PiAgCXN0cnVj dCBjb21wb25lbnRfZGV2ICpjZGV2Owo+Pj4gLQlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlpZiAoZGV2 X3R5cGUgIT0gRVhZTk9TX0RFVklDRV9UWVBFX0NSVEMgJiYKPj4+ICsJCQlkZXZfdHlwZSAhPSBF WFlOT1NfREVWSUNFX1RZUEVfQ09OTkVDVE9SKSB7Cj4+PiArCQlEUk1fRVJST1IoImludmFsaWQg ZGV2aWNlIHR5cGUuXG4iKTsKPj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4gKwl9Cj4+PiArCj4+ PiArCW11dGV4X2xvY2soJmRybV9jb21wb25lbnRfbG9jayk7Cj4+PiArCj4+PiArCS8qCj4+PiAr CSAqIE1ha2Ugc3VyZSB0byBjaGVjayBpZiB0aGVyZSBpcyBhIGNvbXBvbmVudCB3aGljaCBoYXMg dHdvIGRldmljZQo+Pj4gKwkgKiBvYmplY3RzLCBmb3IgY29ubmVjdG9yIGFuZCBmb3IgZW5jb2Rl ci9jb25uZWN0b3IuCj4+PiArCSAqIEl0IHNob3VsZCBtYWtlIHN1cmUgdGhhdCBjcnRjIGFuZCBl bmNvZGVyL2Nvbm5lY3RvciBkcml2ZXJzIGFyZQo+Pj4gKwkgKiByZWFkeSBiZWZvcmUgZXh5bm9z IGRybSBjb3JlIGJpbmRzIHRoZW0uCj4+PiArCSAqLwo+Pj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGNkZXYsICZkcm1fY29tcG9uZW50X2xpc3QsIGxpc3QpIHsKPj4+ICsJCWlmIChjZGV2LT5vdXRf dHlwZSA9PSBvdXRfdHlwZSkgewo+Pj4gKwkJCS8qCj4+PiArCQkJICogSWYgY3J0YyBhbmQgZW5j b2Rlci9jb25uZWN0b3IgZGV2aWNlIG9iamVjdHMgYXJlCj4+PiArCQkJICogYWRkZWQgYWxyZWFk eSBqdXN0IHJldHVybi4KPj4+ICsJCQkgKi8KPj4+ICsJCQlpZiAoY2Rldi0+ZGV2X3R5cGVfZmxh ZyA9PSAoRVhZTk9TX0RFVklDRV9UWVBFX0NSVEMgfAo+Pj4gKwkJCQkJCUVYWU5PU19ERVZJQ0Vf VFlQRV9DT05ORUNUT1IpKSB7Cj4+PiArCQkJCW11dGV4X3VubG9jaygmZHJtX2NvbXBvbmVudF9s b2NrKTsKPj4+ICsJCQkJcmV0dXJuIDA7Cj4+PiArCQkJfQo+Pj4gKwo+Pj4gKwkJCWlmIChkZXZf dHlwZSA9PSBFWFlOT1NfREVWSUNFX1RZUEVfQ1JUQykgewo+Pj4gKwkJCQljZGV2LT5jcnRjX2Rl diA9IGRldjsKPj4+ICsJCQkJY2Rldi0+ZGV2X3R5cGVfZmxhZyB8PSBkZXZfdHlwZTsKPj4+ICsJ CQl9Cj4+PiArCj4+PiArCQkJaWYgKGRldl90eXBlID09IEVYWU5PU19ERVZJQ0VfVFlQRV9DT05O RUNUT1IpIHsKPj4+ICsJCQkJY2Rldi0+Y29ubl9kZXYgPSBkZXY7Cj4+PiArCQkJCWNkZXYtPmRl dl90eXBlX2ZsYWcgfD0gZGV2X3R5cGU7Cj4+PiArCQkJfQo+Pj4gKwo+Pj4gKwkJCW11dGV4X3Vu bG9jaygmZHJtX2NvbXBvbmVudF9sb2NrKTsKPj4+ICsJCQlyZXR1cm4gMDsKPj4+ICsJCX0KPj4+ ICsJfQo+Pj4gKwo+Pj4gKwltdXRleF91bmxvY2soJmRybV9jb21wb25lbnRfbG9jayk7Cj4+PiAg Cj4+PiAgCWNkZXYgPSBremFsbG9jKHNpemVvZigqY2RldiksIEdGUF9LRVJORUwpOwo+Pj4gIAlp ZiAoIWNkZXYpCj4+PiAgCQlyZXR1cm4gLUVOT01FTTsKPj4+ICAKPj4+IC0JcmV0ID0gY29tcG9u ZW50X2FkZChkZXYsIG9wcyk7Cj4+PiAtCWlmIChyZXQpIHsKPj4+IC0JCWtmcmVlKGNkZXYpOwo+ Pj4gLQkJcmV0dXJuIHJldDsKPj4+IC0JfQo+Pj4gKwlpZiAoZGV2X3R5cGUgPT0gRVhZTk9TX0RF VklDRV9UWVBFX0NSVEMpCj4+PiArCQljZGV2LT5jcnRjX2RldiA9IGRldjsKPj4+ICsJaWYgKGRl dl90eXBlID09IEVYWU5PU19ERVZJQ0VfVFlQRV9DT05ORUNUT1IpCj4+PiArCQljZGV2LT5jb25u X2RldiA9IGRldjsKPj4+ICAKPj4+IC0JY2Rldi0+ZGV2ID0gZGV2Owo+Pj4gKwljZGV2LT5vdXRf dHlwZSA9IG91dF90eXBlOwo+Pj4gKwljZGV2LT5kZXZfdHlwZV9mbGFnID0gZGV2X3R5cGU7Cj4+ PiAgCj4+PiAgCW11dGV4X2xvY2soJmRybV9jb21wb25lbnRfbG9jayk7Cj4+PiAgCWxpc3RfYWRk X3RhaWwoJmNkZXYtPmxpc3QsICZkcm1fY29tcG9uZW50X2xpc3QpOwo+Pj4gQEAgLTQwNywyMyAr NDUzLDQwIEBAIGludCBleHlub3NfZHJtX2NvbXBvbmVudF9hZGQoc3RydWN0IGRldmljZSAqZGV2 LAo+Pj4gIH0KPj4+ICAKPj4+ICB2b2lkIGV4eW5vc19kcm1fY29tcG9uZW50X2RlbChzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4+PiAtCQkJCWNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzICpvcHMpCj4+ PiArCQkJCWVudW0gZXh5bm9zX2RybV9kZXZpY2VfdHlwZSBkZXZfdHlwZSkKPj4+ICB7Cj4+PiAg CXN0cnVjdCBjb21wb25lbnRfZGV2ICpjZGV2LCAqbmV4dDsKPj4+ICAKPj4+ICAJbXV0ZXhfbG9j aygmZHJtX2NvbXBvbmVudF9sb2NrKTsKPj4+ICAKPj4+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGNkZXYsIG5leHQsICZkcm1fY29tcG9uZW50X2xpc3QsIGxpc3QpIHsKPj4+IC0JCWlmIChk ZXYgPT0gY2Rldi0+ZGV2KSB7Cj4+PiArCQlpZiAoZGV2X3R5cGUgPT0gRVhZTk9TX0RFVklDRV9U WVBFX0NSVEMpIHsKPj4+ICsJCQlpZiAoY2Rldi0+Y3J0Y19kZXYgPT0gZGV2KSB7Cj4+PiArCQkJ CWNkZXYtPmNydGNfZGV2ID0gTlVMTDsKPj4+ICsJCQkJY2Rldi0+ZGV2X3R5cGVfZmxhZyAmPSB+ ZGV2X3R5cGU7Cj4+PiArCQkJfQo+Pj4gKwkJfQo+Pj4gKwo+Pj4gKwkJaWYgKGRldl90eXBlID09 IEVYWU5PU19ERVZJQ0VfVFlQRV9DT05ORUNUT1IpIHsKPj4+ICsJCQlpZiAoY2Rldi0+Y29ubl9k ZXYgPT0gZGV2KSB7Cj4+PiArCQkJCWNkZXYtPmNvbm5fZGV2ID0gTlVMTDsKPj4+ICsJCQkJY2Rl di0+ZGV2X3R5cGVfZmxhZyAmPSB+ZGV2X3R5cGU7Cj4+PiArCQkJfQo+Pj4gKwkJfQo+Pj4gKwo+ Pj4gKwkJLyoKPj4+ICsJCSAqIFJlbGVhc2UgY2RldiBvYmplY3Qgb25seSBpbiBjYXNlIHRoYXQg Ym90aCBvZiBjcnRjIGFuZAo+Pj4gKwkJICogZW5jb2Rlci9jb25uZWN0b3IgZGV2aWNlIG9iamVj dHMgYXJlIE5VTEwuCj4+PiArCQkgKi8KPj4+ICsJCWlmICghY2Rldi0+Y3J0Y19kZXYgJiYgIWNk ZXYtPmNvbm5fZGV2KSB7Cj4+PiAgCQkJbGlzdF9kZWwoJmNkZXYtPmxpc3QpOwo+Pj4gIAkJCWtm cmVlKGNkZXYpOwo+Pj4gLQkJCWJyZWFrOwo+Pj4gIAkJfQo+Pj4gKwo+Pj4gKwkJYnJlYWs7Cj4+ PiAgCX0KPj4+ICAKPj4+ICAJbXV0ZXhfdW5sb2NrKCZkcm1fY29tcG9uZW50X2xvY2spOwo+Pj4g LQo+Pj4gLQljb21wb25lbnRfZGVsKGRldiwgb3BzKTsKPj4+ICB9Cj4+PiAgCj4+PiAgc3RhdGlj IGludCBjb21wYXJlX29mKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKPj4+IEBAIC00 MzMsMjkgKzQ5Niw2MSBAQCBzdGF0aWMgaW50IGNvbXBhcmVfb2Yoc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICpkYXRhKQo+Pj4gIAo+Pj4gIHN0YXRpYyBpbnQgZXh5bm9zX2RybV9hZGRfY29tcG9u ZW50cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYXN0ZXIgKm0pCj4+PiAgewo+Pj4gLQl1 bnNpZ25lZCBpbnQgYXR0YWNoZWRfY250ID0gMDsKPj4+ICAJc3RydWN0IGNvbXBvbmVudF9kZXYg KmNkZXY7Cj4+PiArCXVuc2lnbmVkIGludCBhdHRhY2hfY250ID0gMDsKPj4+ICAKPj4+ICAJbXV0 ZXhfbG9jaygmZHJtX2NvbXBvbmVudF9sb2NrKTsKPj4+ICAKPj4+ICAJbGlzdF9mb3JfZWFjaF9l bnRyeShjZGV2LCAmZHJtX2NvbXBvbmVudF9saXN0LCBsaXN0KSB7Cj4+PiAgCQlpbnQgcmV0Owo+ Pj4gIAo+Pj4gKwkJLyoKPj4+ICsJCSAqIEFkZCBjb21wb25lbnRzIHRvIG1hc3RlciBvbmx5IGlu IGNhc2UgdGhhdCBjcnRjIGFuZAo+Pj4gKwkJICogZW5jb2Rlci9jb25uZWN0b3IgZGV2aWNlIG9i amVjdHMgZXhpc3QuCj4+PiArCQkgKi8KPj4+ICsJCWlmICghY2Rldi0+Y3J0Y19kZXYgfHwgIWNk ZXYtPmNvbm5fZGV2KQo+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4gKwo+Pj4gKwkJYXR0YWNoX2NudCsr Owo+Pj4gKwo+Pj4gIAkJbXV0ZXhfdW5sb2NrKCZkcm1fY29tcG9uZW50X2xvY2spOwo+Pj4gIAo+ Pj4gLQkJcmV0ID0gY29tcG9uZW50X21hc3Rlcl9hZGRfY2hpbGQobSwgY29tcGFyZV9vZiwgY2Rl di0+ZGV2KTsKPj4+IC0JCWlmICghcmV0KQo+Pj4gLQkJCWF0dGFjaGVkX2NudCsrOwo+Pj4gKwkJ LyoKPj4+ICsJCSAqIGZpbWQgYW5kIGRwaSBtb2R1bGVzIGhhdmUgc2FtZSBkZXZpY2Ugb2JqZWN0 IHNvIGFkZAo+Pj4gKwkJICogb25seSBjcnRjIGRldmljZSBvYmplY3QgaW4gdGhpcyBjYXNlLgo+ Pj4gKwkJICoKPj4+ICsJCSAqIFRPRE8uIGlmIGRwaSBtb2R1bGUgZm9sbG93cyBkcml2ZXItbW9k ZWwgZHJpdmVyIHRoZW4KPj4+ICsJCSAqIGJlbG93IGNvZGVzIGNhbiBiZSByZW1vdmVkLgo+PiBJ dCBzaG91bGQgbm90IGhhcHBlbiBhcyBEUEkgaXMgbm90IGEgc2VwYXJhdGUgaXAgYmxvY2ssIGl0 IGlzIGp1c3QKPj4gaW50ZWdlcmFsIHBhcnQgb2YgZmltZC4KPj4KPiBIbS4uIGFncmVlLiBpdCBz ZWVtcyB0aGF0IHdlIG1heSBuZWVkIG1vcmUgY2xlYXIgd2F5Lgo+Cj4+PiArCQkgKi8KPj4+ICsJ CWlmIChjZGV2LT5jcnRjX2RldiA9PSBjZGV2LT5jb25uX2Rldikgewo+Pj4gKwkJCXJldCA9IGNv bXBvbmVudF9tYXN0ZXJfYWRkX2NoaWxkKG0sIGNvbXBhcmVfb2YsCj4+PiArCQkJCQljZGV2LT5j cnRjX2Rldik7Cj4+PiArCQkJaWYgKHJldCA8IDApCj4+PiArCQkJCXJldHVybiByZXQ7Cj4+PiAr Cj4+PiArCQkJZ290byBvdXRfbG9jazsKPj4+ICsJCX0KPj4+ICsKPj4+ICAKPj4+ICsJCS8qCj4+ PiArCQkgKiBEbyBub3QgY2hhZ2UgYmVsb3cgY2FsbCBvcmRlci4KPj4+ICsJCSAqIGNydGMgZGV2 aWNlIGZpcnN0IHNob3VsZCBiZSBhZGRlZCB0byBtYXN0ZXIgYmVjYXVzZQo+Pj4gKwkJICogY29u bmVjdG9yL2VuY29kZXIgbmVlZCBwaXBlIG51bWJlciBvZiBjcnRjIHdoZW4gdGhleQo+Pj4gKwkJ ICogYXJlIGNyZWF0ZWQuCj4+PiArCQkgKi8KPj4+ICsJCXJldCA9IGNvbXBvbmVudF9tYXN0ZXJf YWRkX2NoaWxkKG0sIGNvbXBhcmVfb2YsIGNkZXYtPmNydGNfZGV2KTsKPj4+ICsJCXJldCB8PSBj b21wb25lbnRfbWFzdGVyX2FkZF9jaGlsZChtLCBjb21wYXJlX29mLAo+Pj4gKwkJCQkJCQljZGV2 LT5jb25uX2Rldik7Cj4+Cj4+IFRoZSBzZXF1ZW5jZSBhYm92ZSAodXAgdG8gbXkgcHJldmlvdXMg Y29tbWVudCkgY291bGQgYmUgc2ltcGxpZmllZCwgdG8KPj4gc3RoIGxpa2UgdGhpczoKPj4KPj4g CQlyZXQgPSBjb21wb25lbnRfbWFzdGVyX2FkZF9jaGlsZChtLCBjb21wYXJlX29mLAo+PiAJCQkJ CQljZGV2LT5jcnRjX2Rldik7Cj4+IAkJaWYgKCFyZXQgJiYgY2Rldi0+Y3J0Y19kZXYgIT0gY2Rl di0+Y29ubl9kZXYpCj4+IAkJCXJldCA9IGNvbXBvbmVudF9tYXN0ZXJfYWRkX2NoaWxkKG0sIGNv bXBhcmVfb2YsCj4+IAkJCQkJCWNkZXYtPmNvbm5fZGV2KTsKPj4KPj4gUmVnYXJkcwo+PiBBbmRy emVqCj4+Cj4+Cj4+PiArCQlpZiAocmV0IDwgMCkKPj4+ICsJCQlyZXR1cm4gcmV0Owo+Pj4gKwo+ Pj4gK291dF9sb2NrOgo+Pj4gIAkJbXV0ZXhfbG9jaygmZHJtX2NvbXBvbmVudF9sb2NrKTsKPj4+ ICAJfQo+Pj4gIAo+Pj4gIAltdXRleF91bmxvY2soJmRybV9jb21wb25lbnRfbG9jayk7Cj4+PiAg Cj4+PiAtCWlmICghYXR0YWNoZWRfY250KQo+Pj4gLQkJcmV0dXJuIC1FTlhJTzsKPj4+IC0KPj4+ IC0JcmV0dXJuIDA7Cj4+PiArCXJldHVybiBhdHRhY2hfY250ID8gMCA6IC1FTk9ERVY7Cj4+PiAg fQo+Pj4gIAo+Pj4gIHN0YXRpYyBpbnQgZXh5bm9zX2RybV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRl dikKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKPj4+IGluZGV4IGU4 MmU2MjAuLjM2NTM1ZjMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV9kcnYuaAo+Pj4gQEAgLTQyLDYgKzQyLDEzIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yOwo+Pj4g IAo+Pj4gIGV4dGVybiB1bnNpZ25lZCBpbnQgZHJtX3ZibGFua19vZmZkZWxheTsKPj4+ICAKPj4+ ICsvKiBUaGlzIGVudW1lcmF0ZXMgZGV2aWNlIHR5cGUuICovCj4+PiArZW51bSBleHlub3NfZHJt X2RldmljZV90eXBlIHsKPj4+ICsJRVhZTk9TX0RFVklDRV9UWVBFX05PTkUsCj4+PiArCUVYWU5P U19ERVZJQ0VfVFlQRV9DUlRDLAo+Pj4gKwlFWFlOT1NfREVWSUNFX1RZUEVfQ09OTkVDVE9SLAo+ Pj4gK307Cj4+PiArCj4+PiAgLyogdGhpcyBlbnVtZXJhdGVzIGRpc3BsYXkgdHlwZS4gKi8KPj4+ ICBlbnVtIGV4eW5vc19kcm1fb3V0cHV0X3R5cGUgewo+Pj4gIAlFWFlOT1NfRElTUExBWV9UWVBF X05PTkUsCj4+PiBAQCAtMzU0LDEyICszNjEsMTIgQEAgdm9pZCBleHlub3NfZHJtX3JlbW92ZV92 aWRpKHZvaWQpOwo+Pj4gIGludCBleHlub3NfZHJtX2NyZWF0ZV9lbmNfY29ubihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+Pj4gIAkJCQlzdHJ1Y3QgZXh5bm9zX2RybV9kaXNwbGF5ICpkaXNwbGF5 KTsKPj4+ICAKPj4+IC1zdHJ1Y3QgY29tcG9uZW50X29wczsKPj4+ICBpbnQgZXh5bm9zX2RybV9j b21wb25lbnRfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwKPj4+IC0JCQkJY29uc3Qgc3RydWN0IGNv bXBvbmVudF9vcHMgKm9wcyk7Cj4+PiArCQkJCWVudW0gZXh5bm9zX2RybV9kZXZpY2VfdHlwZSBk ZXZfdHlwZSwKPj4+ICsJCQkJZW51bSBleHlub3NfZHJtX291dHB1dF90eXBlIG91dF90eXBlKTsK Pj4+ICAKPj4+ICB2b2lkIGV4eW5vc19kcm1fY29tcG9uZW50X2RlbChzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4+PiAtCQkJCWNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzICpvcHMpOwo+Pj4gKwkJCQll bnVtIGV4eW5vc19kcm1fZGV2aWNlX3R5cGUgZGV2X3R5cGUpOwo+Pj4gIAo+Pj4gIGV4dGVybiBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZpbWRfZHJpdmVyOwo+Pj4gIGV4dGVybiBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIGRwX2RyaXZlcjsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZHNpLmMKPj4+IGluZGV4IDg0NjYxZmUuLjYzMDJhYTYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9leHlub3MvZXh5bm9zX2RybV9kc2kuYwo+Pj4gQEAgLTE0MjMsMTAgKzE0MjMsMTYgQEAg c3RhdGljIGludCBleHlub3NfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4+PiAgCXN0cnVjdCBleHlub3NfZHNpICpkc2k7Cj4+PiAgCWludCByZXQ7Cj4+PiAgCj4+PiAr CXJldCA9IGV4eW5vc19kcm1fY29tcG9uZW50X2FkZCgmcGRldi0+ZGV2LCBFWFlOT1NfREVWSUNF X1RZUEVfQ09OTkVDVE9SLAo+Pj4gKwkJCQkJZXh5bm9zX2RzaV9kaXNwbGF5LnR5cGUpOwo+Pj4g KwlpZiAocmV0KQo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ICsKPj4+ICAJZHNpID0gZGV2bV9remFs bG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZHNpKSwgR0ZQX0tFUk5FTCk7Cj4+PiAgCWlmICghZHNp KSB7Cj4+PiAgCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgZHNpIG9i amVjdC5cbiIpOwo+Pj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4+PiArCQlyZXQgPSAtRU5PTUVNOwo+ Pj4gKwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPj4+ICAJfQo+Pj4gIAo+Pj4gIAlpbml0X2Nv bXBsZXRpb24oJmRzaS0+Y29tcGxldGVkKTsKPj4+IEBAIC0xNDQwLDcgKzE0NDYsNyBAQCBzdGF0 aWMgaW50IGV4eW5vc19kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ ICAKPj4+ICAJcmV0ID0gZXh5bm9zX2RzaV9wYXJzZV9kdChkc2kpOwo+Pj4gIAlpZiAocmV0KQo+ Pj4gLQkJcmV0dXJuIHJldDsKPj4+ICsJCWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+PiAgCj4+ PiAgCWRzaS0+c3VwcGxpZXNbMF0uc3VwcGx5ID0gInZkZGNvcmUiOwo+Pj4gIAlkc2ktPnN1cHBs aWVzWzFdLnN1cHBseSA9ICJ2ZGRpbyI7Cj4+PiBAQCAtMTQ1NCwzMiArMTQ2MCwzNyBAQCBzdGF0 aWMgaW50IGV4eW5vc19kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ ICAJZHNpLT5wbGxfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwbGxfY2xrIik7Cj4+ PiAgCWlmIChJU19FUlIoZHNpLT5wbGxfY2xrKSkgewo+Pj4gIAkJZGV2X2luZm8oJnBkZXYtPmRl diwgImZhaWxlZCB0byBnZXQgZHNpIHBsbCBpbnB1dCBjbG9ja1xuIik7Cj4+PiAtCQlyZXR1cm4g LUVQUk9CRV9ERUZFUjsKPj4+ICsJCXJldCA9IFBUUl9FUlIoZHNpLT5wbGxfY2xrKTsKPj4+ICsJ CWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJZHNpLT5idXNfY2xr ID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJidXNfY2xrIik7Cj4+PiAgCWlmIChJU19FUlIo ZHNpLT5idXNfY2xrKSkgewo+Pj4gIAkJZGV2X2luZm8oJnBkZXYtPmRldiwgImZhaWxlZCB0byBn ZXQgZHNpIGJ1cyBjbG9ja1xuIik7Cj4+PiAtCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPj4+ICsJ CXJldCA9IFBUUl9FUlIoZHNpLT5idXNfY2xrKTsKPj4+ICsJCWdvdG8gZXJyX2RlbF9jb21wb25l bnQ7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYs IElPUkVTT1VSQ0VfTUVNLCAwKTsKPj4+ICAJZHNpLT5yZWdfYmFzZSA9IGRldm1faW9yZW1hcF9y ZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+Pj4gIAlpZiAoSVNfRVJSKGRzaS0+cmVnX2Jhc2Up KSB7Cj4+PiAgCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVtYXAgaW8gcmVnaW9u XG4iKTsKPj4+IC0JCXJldHVybiBQVFJfRVJSKGRzaS0+cmVnX2Jhc2UpOwo+Pj4gKwkJcmV0ID0g UFRSX0VSUihkc2ktPnJlZ19iYXNlKTsKPj4+ICsJCWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+ PiAgCX0KPj4+ICAKPj4+ICAJZHNpLT5waHkgPSBkZXZtX3BoeV9nZXQoJnBkZXYtPmRldiwgImRz aW0iKTsKPj4+ICAJaWYgKElTX0VSUihkc2ktPnBoeSkpIHsKPj4+ICAJCWRldl9pbmZvKCZwZGV2 LT5kZXYsICJmYWlsZWQgdG8gZ2V0IGRzaW0gcGh5XG4iKTsKPj4+IC0JCXJldHVybiAtRVBST0JF X0RFRkVSOwo+Pj4gKwkJcmV0ID0gUFRSX0VSUihkc2ktPnBoeSk7Cj4+PiArCQlnb3RvIGVycl9k ZWxfY29tcG9uZW50Owo+Pj4gIAl9Cj4+PiAgCj4+PiAgCWRzaS0+aXJxID0gcGxhdGZvcm1fZ2V0 X2lycShwZGV2LCAwKTsKPj4+ICAJaWYgKGRzaS0+aXJxIDwgMCkgewo+Pj4gIAkJZGV2X2Vycigm cGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlcXVlc3QgZHNpIGlycSByZXNvdXJjZVxuIik7Cj4+PiAt CQlyZXR1cm4gZHNpLT5pcnE7Cj4+PiArCQlyZXQgPSBkc2ktPmlycTsKPj4+ICsJCWdvdG8gZXJy X2RlbF9jb21wb25lbnQ7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJaXJxX3NldF9zdGF0dXNfZmxhZ3Mo ZHNpLT5pcnEsIElSUV9OT0FVVE9FTik7Cj4+PiBAQCAtMTQ4OCwxOSArMTQ5OSwyOSBAQCBzdGF0 aWMgaW50IGV4eW5vc19kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ ICAJCQkJCWRldl9uYW1lKCZwZGV2LT5kZXYpLCBkc2kpOwo+Pj4gIAlpZiAocmV0KSB7Cj4+PiAg CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVxdWVzdCBkc2kgaXJxXG4iKTsKPj4+ IC0JCXJldHVybiByZXQ7Cj4+PiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+Pj4gIAl9Cj4+ PiAgCj4+PiAgCWV4eW5vc19kc2lfZGlzcGxheS5jdHggPSBkc2k7Cj4+PiAgCj4+PiAgCXBsYXRm b3JtX3NldF9kcnZkYXRhKHBkZXYsICZleHlub3NfZHNpX2Rpc3BsYXkpOwo+Pj4gIAo+Pj4gLQly ZXR1cm4gZXh5bm9zX2RybV9jb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZleHlub3NfZHNpX2Nv bXBvbmVudF9vcHMpOwo+Pj4gKwlyZXQgPSBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZleHlu b3NfZHNpX2NvbXBvbmVudF9vcHMpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZ290byBlcnJfZGVs X2NvbXBvbmVudDsKPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICsKPj4+ICtlcnJfZGVsX2Nv bXBvbmVudDoKPj4+ICsJZXh5bm9zX2RybV9jb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsIEVYWU5P U19ERVZJQ0VfVFlQRV9DT05ORUNUT1IpOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gIH0KPj4+ICAK Pj4+ICBzdGF0aWMgaW50IGV4eW5vc19kc2lfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4+PiAgewo+Pj4gLQlleHlub3NfZHJtX2NvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwg JmV4eW5vc19kc2lfY29tcG9uZW50X29wcyk7Cj4+PiArCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRl diwgJmV4eW5vc19kc2lfY29tcG9uZW50X29wcyk7Cj4+PiArCWV4eW5vc19kcm1fY29tcG9uZW50 X2RlbCgmcGRldi0+ZGV2LCBFWFlOT1NfREVWSUNFX1RZUEVfQ09OTkVDVE9SKTsKPj4+ICsKPj4+ ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19kcm1fZmltZC5jCj4+PiBpbmRleCBiZDMwZDBjLi40N2E3NzJkIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwo+Pj4gQEAgLTk0MSwxMiArOTQxLDIx IEBAIHN0YXRpYyBpbnQgZmltZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ Pj4gIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPj4+ICAJaW50IHJldCA9IC1FSU5WQUw7Cj4+PiAg Cj4+PiAtCWlmICghZGV2LT5vZl9ub2RlKQo+Pj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4+PiArCXJl dCA9IGV4eW5vc19kcm1fY29tcG9uZW50X2FkZCgmcGRldi0+ZGV2LCBFWFlOT1NfREVWSUNFX1RZ UEVfQ1JUQywKPj4+ICsJCQkJCWZpbWRfbWFuYWdlci50eXBlKTsKPj4+ICsJaWYgKHJldCkKPj4+ ICsJCXJldHVybiByZXQ7Cj4+PiArCj4+PiArCWlmICghZGV2LT5vZl9ub2RlKSB7Cj4+PiArCQly ZXQgPSAtRU5PREVWOwo+Pj4gKwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPj4+ICsJfQo+Pj4g IAo+Pj4gIAljdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwp Owo+Pj4gLQlpZiAoIWN0eCkKPj4+IC0JCXJldHVybiAtRU5PTUVNOwo+Pj4gKwlpZiAoIWN0eCkg ewo+Pj4gKwkJcmV0ID0gLUVOT01FTTsKPj4+ICsJCWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+ PiArCX0KPj4+ICAKPj4+ICAJY3R4LT5kZXYgPSBkZXY7Cj4+PiAgCWN0eC0+c3VzcGVuZGVkID0g dHJ1ZTsKPj4+IEBAIC05NTksMzIgKzk2OCwzNyBAQCBzdGF0aWMgaW50IGZpbWRfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICAJY3R4LT5idXNfY2xrID0gZGV2bV9jbGtf Z2V0KGRldiwgImZpbWQiKTsKPj4+ICAJaWYgKElTX0VSUihjdHgtPmJ1c19jbGspKSB7Cj4+PiAg CQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgYnVzIGNsb2NrXG4iKTsKPj4+IC0JCXJldHVy biBQVFJfRVJSKGN0eC0+YnVzX2Nsayk7Cj4+PiArCQlyZXQgPSBQVFJfRVJSKGN0eC0+YnVzX2Ns ayk7Cj4+PiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+Pj4gIAl9Cj4+PiAgCj4+PiAgCWN0 eC0+bGNkX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJzY2xrX2ZpbWQiKTsKPj4+ICAJaWYgKElT X0VSUihjdHgtPmxjZF9jbGspKSB7Cj4+PiAgCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQg bGNkIGNsb2NrXG4iKTsKPj4+IC0JCXJldHVybiBQVFJfRVJSKGN0eC0+bGNkX2Nsayk7Cj4+PiAr CQlyZXQgPSBQVFJfRVJSKGN0eC0+bGNkX2Nsayk7Cj4+PiArCQlnb3RvIGVycl9kZWxfY29tcG9u ZW50Owo+Pj4gIAl9Cj4+PiAgCj4+PiAgCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4+PiAgCj4+PiAgCWN0eC0+cmVncyA9IGRldm1faW9yZW1h cF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4+PiAtCWlmIChJU19FUlIoY3R4LT5yZWdzKSkKPj4+IC0J CXJldHVybiBQVFJfRVJSKGN0eC0+cmVncyk7Cj4+PiArCWlmIChJU19FUlIoY3R4LT5yZWdzKSkg ewo+Pj4gKwkJcmV0ID0gUFRSX0VSUihjdHgtPnJlZ3MpOwo+Pj4gKwkJZ290byBlcnJfZGVsX2Nv bXBvbmVudDsKPj4+ICsJfQo+Pj4gIAo+Pj4gIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Vf YnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfSVJRLCAidnN5bmMiKTsKPj4+ICAJaWYgKCFyZXMpIHsK Pj4+ICAJCWRldl9lcnIoZGV2LCAiaXJxIHJlcXVlc3QgZmFpbGVkLlxuIik7Cj4+PiAtCQlyZXR1 cm4gLUVOWElPOwo+Pj4gKwkJcmV0ID0gLUVOWElPOwo+Pj4gKwkJZ290byBlcnJfZGVsX2NvbXBv bmVudDsKPj4+ICAJfQo+Pj4gIAo+Pj4gIAlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgcmVz LT5zdGFydCwgZmltZF9pcnFfaGFuZGxlciwKPj4+ICAJCQkJCQkJMCwgImRybV9maW1kIiwgY3R4 KTsKPj4+ICAJaWYgKHJldCkgewo+Pj4gIAkJZGV2X2VycihkZXYsICJpcnEgcmVxdWVzdCBmYWls ZWQuXG4iKTsKPj4+IC0JCXJldHVybiByZXQ7Cj4+PiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50 Owo+Pj4gIAl9Cj4+PiAgCj4+PiAgCWN0eC0+ZHJpdmVyX2RhdGEgPSBkcm1fZmltZF9nZXRfZHJp dmVyX2RhdGEocGRldik7Cj4+PiBAQCAtMTAwMSwxNCArMTAxNSwyNyBAQCBzdGF0aWMgaW50IGZp bWRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICAKPj4+ICAJcG1fcnVu dGltZV9lbmFibGUoJnBkZXYtPmRldik7Cj4+PiAgCj4+PiAtCXJldHVybiBleHlub3NfZHJtX2Nv bXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJmZpbWRfY29tcG9uZW50X29wcyk7Cj4+PiArCXJldCA9 IGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJmZpbWRfY29tcG9uZW50X29wcyk7Cj4+PiArCWlm IChyZXQpCj4+PiArCQlnb3RvIGVycl9kaXNhYmxlX3BtX3J1bnRpbWU7Cj4+PiArCj4+PiArCXJl dHVybiByZXQ7Cj4+PiArCj4+PiArZXJyX2Rpc2FibGVfcG1fcnVudGltZToKPj4+ICsJcG1fcnVu dGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwo+Pj4gKwo+Pj4gK2Vycl9kZWxfY29tcG9uZW50Ogo+ Pj4gKwlleHlub3NfZHJtX2NvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgRVhZTk9TX0RFVklDRV9U WVBFX0NSVEMpOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0aWMgaW50 IGZpbWRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiAgewo+Pj4gIAlw bV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7Cj4+PiAgCj4+PiAtCWV4eW5vc19kcm1fY29t cG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmZmltZF9jb21wb25lbnRfb3BzKTsKPj4+ICsJY29tcG9u ZW50X2RlbCgmcGRldi0+ZGV2LCAmZmltZF9jb21wb25lbnRfb3BzKTsKPj4+ICsJZXh5bm9zX2Ry bV9jb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsIEVYWU5PU19ERVZJQ0VfVFlQRV9DUlRDKTsKPj4+ ICsKPj4+ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX2hkbWkuYwo+Pj4gaW5kZXggZTA1Yzg2YS4uMGMzYmNlZSAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2hkbWkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfaGRtaS5jCj4+PiBAQCAtMjEzNCwyNiArMjEzNCwzMSBAQCBzdGF0 aWMgaW50IGhkbWlfcmVzb3VyY2VzX2luaXQoc3RydWN0IGhkbWlfY29udGV4dCAqaGRhdGEpCj4+ PiAgCXJlcy0+aGRtaSA9IGRldm1fY2xrX2dldChkZXYsICJoZG1pIik7Cj4+PiAgCWlmIChJU19F UlIocmVzLT5oZG1pKSkgewo+Pj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGNsb2NrICdo ZG1pJ1xuIik7Cj4+PiArCQlyZXQgPSBQVFJfRVJSKHJlcy0+aGRtaSk7Cj4+PiAgCQlnb3RvIGZh aWw7Cj4+PiAgCX0KPj4+ICAJcmVzLT5zY2xrX2hkbWkgPSBkZXZtX2Nsa19nZXQoZGV2LCAic2Ns a19oZG1pIik7Cj4+PiAgCWlmIChJU19FUlIocmVzLT5zY2xrX2hkbWkpKSB7Cj4+PiAgCQlEUk1f RVJST1IoImZhaWxlZCB0byBnZXQgY2xvY2sgJ3NjbGtfaGRtaSdcbiIpOwo+Pj4gKwkJcmV0ID0g UFRSX0VSUihyZXMtPnNjbGtfaGRtaSk7Cj4+PiAgCQlnb3RvIGZhaWw7Cj4+PiAgCX0KPj4+ICAJ cmVzLT5zY2xrX3BpeGVsID0gZGV2bV9jbGtfZ2V0KGRldiwgInNjbGtfcGl4ZWwiKTsKPj4+ICAJ aWYgKElTX0VSUihyZXMtPnNjbGtfcGl4ZWwpKSB7Cj4+PiAgCQlEUk1fRVJST1IoImZhaWxlZCB0 byBnZXQgY2xvY2sgJ3NjbGtfcGl4ZWwnXG4iKTsKPj4+ICsJCXJldCA9IFBUUl9FUlIocmVzLT5z Y2xrX3BpeGVsKTsKPj4+ICAJCWdvdG8gZmFpbDsKPj4+ICAJfQo+Pj4gIAlyZXMtPnNjbGtfaGRt aXBoeSA9IGRldm1fY2xrX2dldChkZXYsICJzY2xrX2hkbWlwaHkiKTsKPj4+ICAJaWYgKElTX0VS UihyZXMtPnNjbGtfaGRtaXBoeSkpIHsKPj4+ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBj bG9jayAnc2Nsa19oZG1pcGh5J1xuIik7Cj4+PiArCQlyZXQgPSBQVFJfRVJSKHJlcy0+c2Nsa19o ZG1pcGh5KTsKPj4+ICAJCWdvdG8gZmFpbDsKPj4+ICAJfQo+Pj4gIAlyZXMtPm1vdXRfaGRtaSA9 IGRldm1fY2xrX2dldChkZXYsICJtb3V0X2hkbWkiKTsKPj4+ICAJaWYgKElTX0VSUihyZXMtPm1v dXRfaGRtaSkpIHsKPj4+ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBjbG9jayAnbW91dF9o ZG1pJ1xuIik7Cj4+PiArCQlyZXQgPSBQVFJfRVJSKHJlcy0+bW91dF9oZG1pKTsKPj4+ICAJCWdv dG8gZmFpbDsKPj4+ICAJfQo+Pj4gIAo+Pj4gQEAgLTIxNjEsOCArMjE2NiwxMCBAQCBzdGF0aWMg aW50IGhkbWlfcmVzb3VyY2VzX2luaXQoc3RydWN0IGhkbWlfY29udGV4dCAqaGRhdGEpCj4+PiAg Cj4+PiAgCXJlcy0+cmVndWxfYnVsayA9IGRldm1fa3phbGxvYyhkZXYsIEFSUkFZX1NJWkUoc3Vw cGx5KSAqCj4+PiAgCQlzaXplb2YocmVzLT5yZWd1bF9idWxrWzBdKSwgR0ZQX0tFUk5FTCk7Cj4+ PiAtCWlmICghcmVzLT5yZWd1bF9idWxrKQo+Pj4gKwlpZiAoIXJlcy0+cmVndWxfYnVsaykgewo+ Pj4gKwkJcmV0ID0gLUVOT01FTTsKPj4+ICAJCWdvdG8gZmFpbDsKPj4+ICsJfQo+Pj4gIAlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShzdXBwbHkpOyArK2kpIHsKPj4+ICAJCXJlcy0+cmVndWxf YnVsa1tpXS5zdXBwbHkgPSBzdXBwbHlbaV07Cj4+PiAgCQlyZXMtPnJlZ3VsX2J1bGtbaV0uY29u c3VtZXIgPSBOVUxMOwo+Pj4gQEAgLTIxNzAsMTQgKzIxNzcsMTQgQEAgc3RhdGljIGludCBoZG1p X3Jlc291cmNlc19pbml0KHN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhKQo+Pj4gIAlyZXQgPSBk ZXZtX3JlZ3VsYXRvcl9idWxrX2dldChkZXYsIEFSUkFZX1NJWkUoc3VwcGx5KSwgcmVzLT5yZWd1 bF9idWxrKTsKPj4+ICAJaWYgKHJldCkgewo+Pj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0 IHJlZ3VsYXRvcnNcbiIpOwo+Pj4gLQkJZ290byBmYWlsOwo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ ICAJfQo+Pj4gIAlyZXMtPnJlZ3VsX2NvdW50ID0gQVJSQVlfU0laRShzdXBwbHkpOwo+Pj4gIAo+ Pj4gLQlyZXR1cm4gMDsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICBmYWlsOgo+Pj4gIAlEUk1fRVJS T1IoIkhETUkgcmVzb3VyY2UgaW5pdCAtIGZhaWxlZFxuIik7Cj4+PiAtCXJldHVybiAtRU5PREVW Owo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0aWMgc3RydWN0IHM1cF9o ZG1pX3BsYXRmb3JtX2RhdGEgKmRybV9oZG1pX2R0X3BhcnNlX3BkYXRhCj4+PiBAQCAtMjI3NSwy NCArMjI4MiwzNyBAQCBzdGF0aWMgaW50IGhkbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPj4+ICAJc3RydWN0IHJlc291cmNlICpyZXM7Cj4+PiAgCWludCByZXQ7Cj4+PiAg Cj4+PiAtCWlmICghZGV2LT5vZl9ub2RlKQo+Pj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4+PiArCXJl dCA9IGV4eW5vc19kcm1fY29tcG9uZW50X2FkZCgmcGRldi0+ZGV2LCBFWFlOT1NfREVWSUNFX1RZ UEVfQ09OTkVDVE9SLAo+Pj4gKwkJCQkJaGRtaV9kaXNwbGF5LnR5cGUpOwo+Pj4gKwlpZiAocmV0 KQo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ICsKPj4+ICsJaWYgKCFkZXYtPm9mX25vZGUpIHsKPj4+ ICsJCXJldCA9IC1FTk9ERVY7Cj4+PiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+Pj4gKwl9 Cj4+PiAgCj4+PiAgCXBkYXRhID0gZHJtX2hkbWlfZHRfcGFyc2VfcGRhdGEoZGV2KTsKPj4+IC0J aWYgKCFwZGF0YSkKPj4+IC0JCXJldHVybiAtRUlOVkFMOwo+Pj4gKwlpZiAoIXBkYXRhKSB7Cj4+ PiArCQlyZXQgPSAtRUlOVkFMOwo+Pj4gKwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPj4+ICsJ fQo+Pj4gIAo+Pj4gIAloZGF0YSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihzdHJ1Y3QgaGRt aV9jb250ZXh0KSwgR0ZQX0tFUk5FTCk7Cj4+PiAtCWlmICghaGRhdGEpCj4+PiAtCQlyZXR1cm4g LUVOT01FTTsKPj4+ICsJaWYgKCFoZGF0YSkgewo+Pj4gKwkJcmV0ID0gLUVOT01FTTsKPj4+ICsJ CWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+PiArCX0KPj4+ICAKPj4+ICAJbXV0ZXhfaW5pdCgm aGRhdGEtPmhkbWlfbXV0ZXgpOwo+Pj4gIAo+Pj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2 LCAmaGRtaV9kaXNwbGF5KTsKPj4+ICAKPj4+ICAJbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKGhkbWlf bWF0Y2hfdHlwZXMsIGRldi0+b2Zfbm9kZSk7Cj4+PiAtCWlmICghbWF0Y2gpCj4+PiAtCQlyZXR1 cm4gLUVOT0RFVjsKPj4+ICsJaWYgKCFtYXRjaCkgewo+Pj4gKwkJcmV0ID0gLUVOT0RFVjsKPj4+ ICsJCWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Cj4+PiArCX0KPj4+ICAKPj4+ICAJZHJ2X2RhdGEg PSAoc3RydWN0IGhkbWlfZHJpdmVyX2RhdGEgKiltYXRjaC0+ZGF0YTsKPj4+ICAJaGRhdGEtPnR5 cGUgPSBkcnZfZGF0YS0+dHlwZTsKPj4+IEBAIC0yMzA1LDE4ICsyMzI1LDIwIEBAIHN0YXRpYyBp bnQgaGRtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gIAlyZXQgPSBo ZG1pX3Jlc291cmNlc19pbml0KGhkYXRhKTsKPj4+ICAJaWYgKHJldCkgewo+Pj4gIAkJRFJNX0VS Uk9SKCJoZG1pX3Jlc291cmNlc19pbml0IGZhaWxlZFxuIik7Cj4+PiAtCQlyZXR1cm4gLUVJTlZB TDsKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJcmVzID0gcGxhdGZvcm1f Z2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPj4+ICAJaGRhdGEtPnJlZ3Mg PSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+Pj4gLQlpZiAoSVNfRVJSKGhkYXRh LT5yZWdzKSkKPj4+IC0JCXJldHVybiBQVFJfRVJSKGhkYXRhLT5yZWdzKTsKPj4+ICsJaWYgKElT X0VSUihoZGF0YS0+cmVncykpIHsKPj4+ICsJCXJldCA9IFBUUl9FUlIoaGRhdGEtPnJlZ3MpOwo+ Pj4gKwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPj4+ICsJfQo+Pj4gIAo+Pj4gIAlyZXQgPSBk ZXZtX2dwaW9fcmVxdWVzdChkZXYsIGhkYXRhLT5ocGRfZ3BpbywgIkhQRCIpOwo+Pj4gIAlpZiAo cmV0KSB7Cj4+PiAgCQlEUk1fRVJST1IoImZhaWxlZCB0byByZXF1ZXN0IEhQRCBncGlvXG4iKTsK Pj4+IC0JCXJldHVybiByZXQ7Cj4+PiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+Pj4gIAl9 Cj4+PiAgCj4+PiAgCWRkY19ub2RlID0gaGRtaV9sZWdhY3lfZGRjX2R0X2JpbmRpbmcoZGV2KTsK Pj4+IEBAIC0yMzI3LDE0ICsyMzQ5LDE1IEBAIHN0YXRpYyBpbnQgaGRtaV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gIAlkZGNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUo ZGV2LT5vZl9ub2RlLCAiZGRjIiwgMCk7Cj4+PiAgCWlmICghZGRjX25vZGUpIHsKPj4+ICAJCURS TV9FUlJPUigiRmFpbGVkIHRvIGZpbmQgZGRjIG5vZGUgaW4gZGV2aWNlIHRyZWVcbiIpOwo+Pj4g LQkJcmV0dXJuIC1FTk9ERVY7Cj4+PiArCQlyZXQgPSAtRU5PREVWOwo+Pj4gKwkJZ290byBlcnJf ZGVsX2NvbXBvbmVudDsKPj4+ICAJfQo+Pj4gIAo+Pj4gIG91dF9nZXRfZGRjX2FkcHQ6Cj4+PiAg CWhkYXRhLT5kZGNfYWRwdCA9IG9mX2ZpbmRfaTJjX2FkYXB0ZXJfYnlfbm9kZShkZGNfbm9kZSk7 Cj4+PiAgCWlmICghaGRhdGEtPmRkY19hZHB0KSB7Cj4+PiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBnZXQgZGRjIGkyYyBhZGFwdGVyIGJ5IG5vZGVcbiIpOwo+Pj4gLQkJcmV0dXJuIC1FTk9ERVY7 Cj4+PiArCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPj4+ICAJfQo+Pj4gIAo+Pj4gIAlwaHlfbm9k ZSA9IGhkbWlfbGVnYWN5X3BoeV9kdF9iaW5kaW5nKGRldik7Cj4+PiBAQCAtMjM2MSw3ICsyMzg0 LDcgQEAgb3V0X2dldF9waHlfcG9ydDoKPj4+ICAJCWhkYXRhLT5oZG1pcGh5X3BvcnQgPSBvZl9m aW5kX2kyY19kZXZpY2VfYnlfbm9kZShwaHlfbm9kZSk7Cj4+PiAgCQlpZiAoIWhkYXRhLT5oZG1p cGh5X3BvcnQpIHsKPj4+ICAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgaGRtaSBwaHkgaTJj IGNsaWVudFxuIik7Cj4+PiAtCQkJcmV0ID0gLUVOT0RFVjsKPj4+ICsJCQlyZXQgPSAtRVBST0JF X0RFRkVSOwo+Pj4gIAkJCWdvdG8gZXJyX2RkYzsKPj4+ICAJCX0KPj4+ICAJfQo+Pj4gQEAgLTIz OTAsMTkgKzI0MTMsMzEgQEAgb3V0X2dldF9waHlfcG9ydDoKPj4+ICAJCQkic2Ftc3VuZyxzeXNj b24tcGhhbmRsZSIpOwo+Pj4gIAlpZiAoSVNfRVJSKGhkYXRhLT5wbXVyZWcpKSB7Cj4+PiAgCQlE Uk1fRVJST1IoInN5c2NvbiByZWdtYXAgbG9va3VwIGZhaWxlZC5cbiIpOwo+Pj4gKwkJcmV0ID0g LUVQUk9CRV9ERUZFUjsKPj4+ICAJCWdvdG8gZXJyX2hkbWlwaHk7Cj4+PiAgCX0KPj4+ICAKPj4+ ICAJcG1fcnVudGltZV9lbmFibGUoZGV2KTsKPj4+ICAJaGRtaV9kaXNwbGF5LmN0eCA9IGhkYXRh Owo+Pj4gIAo+Pj4gLQlyZXR1cm4gZXh5bm9zX2RybV9jb21wb25lbnRfYWRkKCZwZGV2LT5kZXYs ICZoZG1pX2NvbXBvbmVudF9vcHMpOwo+Pj4gKwlyZXQgPSBjb21wb25lbnRfYWRkKCZwZGV2LT5k ZXYsICZoZG1pX2NvbXBvbmVudF9vcHMpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZ290byBlcnJf ZGlzYWJsZV9wbV9ydW50aW1lOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gKwo+Pj4gK2Vy cl9kaXNhYmxlX3BtX3J1bnRpbWU6Cj4+PiArCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+Pj4g IAo+Pj4gIGVycl9oZG1pcGh5Ogo+Pj4gIAlpZiAoaGRhdGEtPmhkbWlwaHlfcG9ydCkKPj4+ICAJ CXB1dF9kZXZpY2UoJmhkYXRhLT5oZG1pcGh5X3BvcnQtPmRldik7Cj4+PiAgZXJyX2RkYzoKPj4+ ICAJcHV0X2RldmljZSgmaGRhdGEtPmRkY19hZHB0LT5kZXYpOwo+Pj4gKwo+Pj4gK2Vycl9kZWxf Y29tcG9uZW50Ogo+Pj4gKwlleHlub3NfZHJtX2NvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgRVhZ Tk9TX0RFVklDRV9UWVBFX0NPTk5FQ1RPUik7Cj4+PiArCj4+PiAgCXJldHVybiByZXQ7Cj4+PiAg fQo+Pj4gIAo+Pj4gQEAgLTI0MTYsOCArMjQ1MSw5IEBAIHN0YXRpYyBpbnQgaGRtaV9yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICAJcHV0X2RldmljZSgmaGRhdGEtPmRk Y19hZHB0LT5kZXYpOwo+Pj4gIAo+Pj4gIAlwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7 Cj4+PiArCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmhkbWlfY29tcG9uZW50X29wcyk7Cj4+ PiAgCj4+PiAtCWV4eW5vc19kcm1fY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmaGRtaV9jb21w b25lbnRfb3BzKTsKPj4+ICsJZXh5bm9zX2RybV9jb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsIEVY WU5PU19ERVZJQ0VfVFlQRV9DT05ORUNUT1IpOwo+Pj4gIAlyZXR1cm4gMDsKPj4+ICB9Cj4+PiAg Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfbWl4ZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMKPj4+IGluZGV4IDQ4M2Q3YzAu LjRjNWFlZDcgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19t aXhlci5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jCj4+ PiBAQCAtMTI3MywxMiArMTI3MywyNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9v cHMgbWl4ZXJfY29tcG9uZW50X29wcyA9IHsKPj4+ICAKPj4+ICBzdGF0aWMgaW50IG1peGVyX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiAgewo+Pj4gLQlyZXR1cm4gZXh5 bm9zX2RybV9jb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZtaXhlcl9jb21wb25lbnRfb3BzKTsK Pj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJcmV0ID0gZXh5bm9zX2RybV9jb21wb25lbnRfYWRk KCZwZGV2LT5kZXYsIEVYWU5PU19ERVZJQ0VfVFlQRV9DUlRDLAo+Pj4gKwkJCQkJbWl4ZXJfbWFu YWdlci50eXBlKTsKPj4+ICsJaWYgKHJldCkKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCj4+PiAr CXJldCA9IGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJm1peGVyX2NvbXBvbmVudF9vcHMpOwo+ Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZXh5bm9zX2RybV9jb21wb25lbnRfZGVsKCZwZGV2LT5kZXYs IEVYWU5PU19ERVZJQ0VfVFlQRV9DUlRDKTsKPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICB9 Cj4+PiAgCj4+PiAgc3RhdGljIGludCBtaXhlcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPj4+ICB7Cj4+PiAtCWV4eW5vc19kcm1fY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2 LCAmbWl4ZXJfY29tcG9uZW50X29wcyk7Cj4+PiArCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwg Jm1peGVyX2NvbXBvbmVudF9vcHMpOwo+Pj4gKwlleHlub3NfZHJtX2NvbXBvbmVudF9kZWwoJnBk ZXYtPmRldiwgRVhZTk9TX0RFVklDRV9UWVBFX0NSVEMpOwo+Pj4gKwo+Pj4gIAlyZXR1cm4gMDsK Pj4+ICB9Cj4+PiAgCj4+Pgo+Pgo+PiAtLQo+PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtc2Ftc3VuZy1zb2MiIGluCj4+IHRo ZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4+IE1vcmUg bWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8u aHRtbAo+Pgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=