From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 6/9] drm/xen-front: Introduce DRM/KMS virtual display driver Date: Mon, 5 Mar 2018 11:19:44 +0200 Message-ID: <680aadca-7cad-0110-df98-46df3c1c9c69@gmail.com> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-7-git-send-email-andr2000@gmail.com> <20180305091335.GH22212@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E1FA6E3E6 for ; Mon, 5 Mar 2018 09:19:50 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id y19so22048379lfd.4 for ; Mon, 05 Mar 2018 01:19:50 -0800 (PST) In-Reply-To: <20180305091335.GH22212@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMDMvMDUvMjAxOCAxMToxMyBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBXZWQsIEZl YiAyMSwgMjAxOCBhdCAxMDowMzozOUFNICswMjAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3 cm90ZToKPj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNo Y2hlbmtvQGVwYW0uY29tPgo+Pgo+PiBJbXBsZW1lbnQgZXNzZW50aWFsIGluaXRpYWxpemF0aW9u IG9mIHRoZSBkaXNwbGF5IGRyaXZlcjoKPj4gICAgLSBpbnRyb2R1Y2UgcmVxdWlyZWQgZGF0YSBz dHJ1Y3R1cmVzCj4+ICAgIC0gaGFuZGxlIERSTS9LTVMgZHJpdmVyIHJlZ2lzdHJhdGlvbgo+PiAg ICAtIHBlcmZvcm0gYmFzaWMgRFJNIGRyaXZlciBpbml0aWFsaXphdGlvbgo+PiAgICAtIHJlZ2lz dGVyIGRyaXZlciBvbiBiYWNrZW5kIGNvbm5lY3Rpb24KPj4gICAgLSByZW1vdmUgZHJpdmVyIG9u IGJhY2tlbmQgZGlzY29ubmVjdAo+PiAgICAtIGludHJvZHVjZSBlc3NlbnRpYWwgY2FsbGJhY2tz IHJlcXVpcmVkIGJ5IERSTS9LTVMgY29yZQo+PiAgICAtIGludHJvZHVjZSBlc3NlbnRpYWwgY2Fs bGJhY2tzIHJlcXVpcmVkIGZvciBmcm9udGVuZCBvcGVyYXRpb25zCj4+Cj4+IFNpZ25lZC1vZmYt Ynk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFt LmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZSAgICAgICAgICAg IHwgICAxICsKPj4gICBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYyAgICAgfCAx NjkgKysrKysrKysrKysrKysrKysrKysrKysrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udC5oICAgICB8ICAyNCArKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2Rydi5jIHwgMjExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ ICAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oIHwgIDYwICsrKysrKysr Kwo+PiAgIDUgZmlsZXMgY2hhbmdlZCwgNDYyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p Cj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dF9kcnYuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnRfZHJ2LmgKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlCj4+IGluZGV4IGYxODIzY2I1OTZj NS4uZDMwNjgyMDI1OTBmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2Vm aWxlCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUKPj4gQEAgLTEsNiArMSw3 IEBACj4+ICAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+PiAgIAo+PiAgIGRy bV94ZW5fZnJvbnQtb2JqcyA6PSB4ZW5fZHJtX2Zyb250Lm8gXAo+PiArCQkgICAgICB4ZW5fZHJt X2Zyb250X2Rydi5vIFwKPj4gICAJCSAgICAgIHhlbl9kcm1fZnJvbnRfZXZ0Y2hubC5vIFwKPj4g ICAJCSAgICAgIHhlbl9kcm1fZnJvbnRfc2hidWYubyBcCj4+ICAgCQkgICAgICB4ZW5fZHJtX2Zy b250X2NmZy5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJv bnQuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5jCj4+IGluZGV4IDBkOTRm ZjI3MmRhMy4uOGRlODhlMzU5ZDVlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVu L3hlbl9kcm1fZnJvbnQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJv bnQuYwo+PiBAQCAtMTgsNiArMTgsOCBAQAo+PiAgIAo+PiAgICNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+PiAgIAo+PiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+PiArCj4+ICAgI2luY2x1 ZGUgPHhlbi9wbGF0Zm9ybV9wY2kuaD4KPj4gICAjaW5jbHVkZSA8eGVuL3hlbi5oPgo+PiAgICNp bmNsdWRlIDx4ZW4veGVuYnVzLmg+Cj4+IEBAIC0yNSwxNSArMjcsMTYxIEBACj4+ICAgI2luY2x1 ZGUgPHhlbi9pbnRlcmZhY2UvaW8vZGlzcGxpZi5oPgo+PiAgIAo+PiAgICNpbmNsdWRlICJ4ZW5f ZHJtX2Zyb250LmgiCj4+ICsjaW5jbHVkZSAieGVuX2RybV9mcm9udF9kcnYuaCIKPj4gICAjaW5j bHVkZSAieGVuX2RybV9mcm9udF9ldnRjaG5sLmgiCj4+ICAgI2luY2x1ZGUgInhlbl9kcm1fZnJv bnRfc2hidWYuaCIKPj4gICAKPj4gK3N0YXRpYyBpbnQgYmVfbW9kZV9zZXQoc3RydWN0IHhlbl9k cm1fZnJvbnRfZHJtX3BpcGVsaW5lICpwaXBlbGluZSwgdWludDMyX3QgeCwKPj4gKwkJdWludDMy X3QgeSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgYnBwLAo+PiAr CQl1aW50NjRfdCBmYl9jb29raWUpCj4+ICsKPj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCBiZV9kYnVmX2NyZWF0ZV9pbnQoc3RydWN0IHhlbl9kcm1fZnJvbnRf aW5mbyAqZnJvbnRfaW5mbywKPj4gKwkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVpbnQzMl90IHdp ZHRoLCB1aW50MzJfdCBoZWlnaHQsCj4+ICsJCXVpbnQzMl90IGJwcCwgdWludDY0X3Qgc2l6ZSwg c3RydWN0IHBhZ2UgKipwYWdlcywKPj4gKwkJc3RydWN0IHNnX3RhYmxlICpzZ3QpCj4+ICt7Cj4+ ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYmVfZGJ1Zl9jcmVhdGVfZnJv bV9zZ3Qoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKPj4gKwkJdWludDY0 X3QgZGJ1Zl9jb29raWUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCj4+ICsJCXVp bnQzMl90IGJwcCwgdWludDY0X3Qgc2l6ZSwgc3RydWN0IHNnX3RhYmxlICpzZ3QpCj4+ICt7Cj4+ ICsJcmV0dXJuIGJlX2RidWZfY3JlYXRlX2ludChmcm9udF9pbmZvLCBkYnVmX2Nvb2tpZSwgd2lk dGgsIGhlaWdodCwKPj4gKwkJCWJwcCwgc2l6ZSwgTlVMTCwgc2d0KTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBiZV9kYnVmX2NyZWF0ZV9mcm9tX3BhZ2VzKHN0cnVjdCB4ZW5fZHJtX2Zyb250 X2luZm8gKmZyb250X2luZm8sCj4+ICsJCXVpbnQ2NF90IGRidWZfY29va2llLCB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0LAo+PiArCQl1aW50MzJfdCBicHAsIHVpbnQ2NF90IHNpemUs IHN0cnVjdCBwYWdlICoqcGFnZXMpCj4+ICt7Cj4+ICsJcmV0dXJuIGJlX2RidWZfY3JlYXRlX2lu dChmcm9udF9pbmZvLCBkYnVmX2Nvb2tpZSwgd2lkdGgsIGhlaWdodCwKPj4gKwkJCWJwcCwgc2l6 ZSwgcGFnZXMsIE5VTEwpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGJlX2RidWZfZGVzdHJv eShzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQl1aW50NjRfdCBk YnVmX2Nvb2tpZSkKPj4gK3sKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCBiZV9mYl9hdHRhY2goc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKPj4g KwkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVpbnQ2NF90IGZiX2Nvb2tpZSwgdWludDMyX3Qgd2lk dGgsCj4+ICsJCXVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgcGl4ZWxfZm9ybWF0KQo+PiArewo+ PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGJlX2ZiX2RldGFjaChzdHJ1 Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQl1aW50NjRfdCBmYl9jb29r aWUpCj4+ICt7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYmVfcGFn ZV9mbGlwKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sIGludCBjb25uX2lk eCwKPj4gKwkJdWludDY0X3QgZmJfY29va2llKQo+PiArewo+PiArCXJldHVybiAwOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgdm9pZCB4ZW5fZHJtX2Rydl91bmxvYWQoc3RydWN0IHhlbl9kcm1fZnJv bnRfaW5mbyAqZnJvbnRfaW5mbykKPj4gK3sKPj4gKwlpZiAoZnJvbnRfaW5mby0+eGJfZGV2LT5z dGF0ZSAhPSBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcpCj4+ICsJCXJldHVybjsKPj4gKwo+PiAr CURSTV9ERUJVRygiQ2FuIHRyeSByZW1vdmluZyBkcml2ZXIgbm93XG4iKTsKPj4gKwl4ZW5idXNf c3dpdGNoX3N0YXRlKGZyb250X2luZm8tPnhiX2RldiwgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcp Owo+PiArfQo+PiArCj4+ICAgc3RhdGljIHN0cnVjdCB4ZW5fZHJtX2Zyb250X29wcyBmcm9udF9v cHMgPSB7Cj4+IC0JLyogcGxhY2Vob2xkZXIgZm9yIG5vdyAqLwo+PiArCS5tb2RlX3NldCA9IGJl X21vZGVfc2V0LAo+PiArCS5kYnVmX2NyZWF0ZV9mcm9tX3BhZ2VzID0gYmVfZGJ1Zl9jcmVhdGVf ZnJvbV9wYWdlcywKPj4gKwkuZGJ1Zl9jcmVhdGVfZnJvbV9zZ3QgPSBiZV9kYnVmX2NyZWF0ZV9m cm9tX3NndCwKPj4gKwkuZGJ1Zl9kZXN0cm95ID0gYmVfZGJ1Zl9kZXN0cm95LAo+PiArCS5mYl9h dHRhY2ggPSBiZV9mYl9hdHRhY2gsCj4+ICsJLmZiX2RldGFjaCA9IGJlX2ZiX2RldGFjaCwKPj4g KwkucGFnZV9mbGlwID0gYmVfcGFnZV9mbGlwLAo+PiArCS5kcm1fbGFzdF9jbG9zZSA9IHhlbl9k cm1fZHJ2X3VubG9hZCwKPj4gK307Cj4gVGhpcyBsb29rcyBsaWtlIGEgbWlkbGF5ZXIvRFJNLWFi c3RyYWN0aW9uIGluIHlvdXIgZHJpdmVyLiBQbGVhc2UgcmVtb3ZlLAo+IGFuZCBpbnN0ZWFkIGRp cmVjdGx5IGhvb2sgeW91ciB4ZW4tZnJvbnQgY29kZSBpbnRvIHRoZSByZWxldmFudCBkcm0KPiBj YWxsYmFja3MuCm9rLCB3aWxsIGRvCj4KPiBJbiBnZW5lcmFsIGFsc28gcGxzIG1ha2Ugc3VyZSB5 b3UgZG9uJ3QgaW1wbGVtZW50IGR1bW15IGNhbGxiYWNrcyB0aGF0IGRvCj4gbm90aGluZywgd2Un dmUgdHJpZWQgcmVhbGx5IGhhcmQgdG8gbWFrZSB0aGVtIGFsbCBvcHRpb25hbCBpbiB0aGUgZHJt Cj4gaW5mcmFzdHJ1Y3R1cmUuCnN1cmUKPiAtRGFuaWVsCj4KPj4gKwo+PiArc3RhdGljIGludCB4 ZW5fZHJtX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiAr CS8qCj4+ICsJICogVGhlIGRldmljZSBpcyBub3Qgc3Bhd24gZnJvbSBhIGRldmljZSB0cmVlLCBz byBhcmNoX3NldHVwX2RtYV9vcHMKPj4gKwkgKiBpcyBub3QgY2FsbGVkLCB0aHVzIGxlYXZpbmcg dGhlIGRldmljZSB3aXRoIGR1bW15IERNQSBvcHMuCj4+ICsJICogVGhpcyBtYWtlcyB0aGUgZGV2 aWNlIHJldHVybiBlcnJvciBvbiBQUklNRSBidWZmZXIgaW1wb3J0LCB3aGljaAo+PiArCSAqIGlz IG5vdCBjb3JyZWN0OiB0byBmaXggdGhpcyBjYWxsIG9mX2RtYV9jb25maWd1cmUoKSB3aXRoIGEg TlVMTAo+PiArCSAqIG5vZGUgdG8gc2V0IGRlZmF1bHQgRE1BIG9wcy4KPj4gKwkgKi8KPj4gKwlv Zl9kbWFfY29uZmlndXJlKCZwZGV2LT5kZXYsIE5VTEwpOwo+PiArCXJldHVybiB4ZW5fZHJtX2Zy b250X2Rydl9wcm9iZShwZGV2LCAmZnJvbnRfb3BzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCB4ZW5fZHJtX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sK Pj4gKwlyZXR1cm4geGVuX2RybV9mcm9udF9kcnZfcmVtb3ZlKHBkZXYpOwo+PiArfQo+PiArCj4+ ICtzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2luZm8geGVuX2RybV9mcm9udF9wbGF0Zm9ybV9pbmZv ID0gewo+PiArCS5uYW1lID0gWEVORElTUExfRFJJVkVSX05BTUUsCj4+ICsJLmlkID0gMCwKPj4g KwkubnVtX3JlcyA9IDAsCj4+ICsJLmRtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKSwKPj4gICB9 Owo+PiAgIAo+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgeGVuX2RybV9mcm9udF9m cm9udF9pbmZvID0gewo+PiArCS5wcm9iZQkJPSB4ZW5fZHJtX2Rydl9wcm9iZSwKPj4gKwkucmVt b3ZlCQk9IHhlbl9kcm1fZHJ2X3JlbW92ZSwKPj4gKwkuZHJpdmVyCQk9IHsKPj4gKwkJLm5hbWUJ PSBYRU5ESVNQTF9EUklWRVJfTkFNRSwKPj4gKwl9LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHZv aWQgeGVuX2RybV9kcnZfZGVpbml0KHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2lu Zm8pCj4+ICt7Cj4+ICsJaWYgKCFmcm9udF9pbmZvLT5kcm1fcGRydl9yZWdpc3RlcmVkKQo+PiAr CQlyZXR1cm47Cj4+ICsKPj4gKwlpZiAoZnJvbnRfaW5mby0+ZHJtX3BkZXYpCj4+ICsJCXBsYXRm b3JtX2RldmljZV91bnJlZ2lzdGVyKGZyb250X2luZm8tPmRybV9wZGV2KTsKPj4gKwo+PiArCXBs YXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZ4ZW5fZHJtX2Zyb250X2Zyb250X2luZm8pOwo+PiAr CWZyb250X2luZm8tPmRybV9wZHJ2X3JlZ2lzdGVyZWQgPSBmYWxzZTsKPj4gKwlmcm9udF9pbmZv LT5kcm1fcGRldiA9IE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgeGVuX2RybV9kcnZf aW5pdChzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvKQo+PiArewo+PiArCWlu dCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnhlbl9kcm1f ZnJvbnRfZnJvbnRfaW5mbyk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ ICsKPj4gKwlmcm9udF9pbmZvLT5kcm1fcGRydl9yZWdpc3RlcmVkID0gdHJ1ZTsKPj4gKwkvKiBw YXNzIGNhcmQgY29uZmlndXJhdGlvbiB2aWEgcGxhdGZvcm0gZGF0YSAqLwo+PiArCXhlbl9kcm1f ZnJvbnRfcGxhdGZvcm1faW5mby5kYXRhID0gJmZyb250X2luZm8tPmNmZzsKPj4gKwl4ZW5fZHJt X2Zyb250X3BsYXRmb3JtX2luZm8uc2l6ZV9kYXRhID0gc2l6ZW9mKGZyb250X2luZm8tPmNmZyk7 Cj4+ICsKPj4gKwlmcm9udF9pbmZvLT5kcm1fcGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cl9mdWxsKAo+PiArCQkJJnhlbl9kcm1fZnJvbnRfcGxhdGZvcm1faW5mbyk7Cj4+ICsJaWYgKElT X0VSUl9PUl9OVUxMKGZyb250X2luZm8tPmRybV9wZGV2KSkgewo+PiArCQlEUk1fRVJST1IoIkZh aWxlZCB0byByZWdpc3RlciAiIFhFTkRJU1BMX0RSSVZFUl9OQU1FICIgUFYgRFJNIGRyaXZlclxu Iik7Cj4+ICsJCWZyb250X2luZm8tPmRybV9wZGV2ID0gTlVMTDsKPj4gKwkJeGVuX2RybV9kcnZf ZGVpbml0KGZyb250X2luZm8pOwo+PiArCQlyZXR1cm4gLUVOT0RFVjsKPj4gKwl9Cj4+ICsKPj4g KwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyB2b2lkIHhlbl9kcnZfcmVtb3ZlX2lu dGVybmFsKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8pCj4+ICAgewo+PiAr CXhlbl9kcm1fZHJ2X2RlaW5pdChmcm9udF9pbmZvKTsKPj4gICAJeGVuX2RybV9mcm9udF9ldnRj aG5sX2ZyZWVfYWxsKGZyb250X2luZm8pOwo+PiAgIH0KPj4gICAKPj4gQEAgLTU5LDEzICsyMDcs MjcgQEAgc3RhdGljIGludCBiYWNrZW5kX29uX2luaXR3YWl0KHN0cnVjdCB4ZW5fZHJtX2Zyb250 X2luZm8gKmZyb250X2luZm8pCj4+ICAgc3RhdGljIGludCBiYWNrZW5kX29uX2Nvbm5lY3RlZChz dHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvKQo+PiAgIHsKPj4gICAJeGVuX2Ry bV9mcm9udF9ldnRjaG5sX3NldF9zdGF0ZShmcm9udF9pbmZvLCBFVlRDSE5MX1NUQVRFX0NPTk5F Q1RFRCk7Cj4+IC0JcmV0dXJuIDA7Cj4+ICsJcmV0dXJuIHhlbl9kcm1fZHJ2X2luaXQoZnJvbnRf aW5mbyk7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyB2b2lkIGJhY2tlbmRfb25fZGlzY29ubmVj dGVkKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8pCj4+ICAgewo+PiArCWJv b2wgcmVtb3ZlZCA9IHRydWU7Cj4+ICsKPj4gKwlpZiAoZnJvbnRfaW5mby0+ZHJtX3BkZXYpIHsK Pj4gKwkJaWYgKHhlbl9kcm1fZnJvbnRfZHJ2X2lzX3VzZWQoZnJvbnRfaW5mby0+ZHJtX3BkZXYp KSB7Cj4+ICsJCQlEUk1fV0FSTigiRFJNIGRyaXZlciBzdGlsbCBpbiB1c2UsIGRlZmVycmluZyBy ZW1vdmFsXG4iKTsKPj4gKwkJCXJlbW92ZWQgPSBmYWxzZTsKPj4gKwkJfSBlbHNlCj4+ICsJCQl4 ZW5fZHJ2X3JlbW92ZV9pbnRlcm5hbChmcm9udF9pbmZvKTsKPj4gKwl9Cj4+ICsKPj4gICAJeGVu X2RybV9mcm9udF9ldnRjaG5sX3NldF9zdGF0ZShmcm9udF9pbmZvLCBFVlRDSE5MX1NUQVRFX0RJ U0NPTk5FQ1RFRCk7Cj4+IC0JeGVuYnVzX3N3aXRjaF9zdGF0ZShmcm9udF9pbmZvLT54Yl9kZXYs IFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKTsKPj4gKwo+PiArCWlmIChyZW1vdmVkKQo+PiArCQl4 ZW5idXNfc3dpdGNoX3N0YXRlKGZyb250X2luZm8tPnhiX2RldiwgWGVuYnVzU3RhdGVJbml0aWFs aXNpbmcpOwo+PiArCWVsc2UKPj4gKwkJeGVuYnVzX3N3aXRjaF9zdGF0ZShmcm9udF9pbmZvLT54 Yl9kZXYsIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyk7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRp YyB2b2lkIGJhY2tlbmRfb25fY2hhbmdlZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJfZGV2LAo+ PiBAQCAtMTQ4LDYgKzMxMCw3IEBAIHN0YXRpYyBpbnQgeGVuX2Rydl9wcm9iZShzdHJ1Y3QgeGVu YnVzX2RldmljZSAqeGJfZGV2LAo+PiAgIAo+PiAgIAlmcm9udF9pbmZvLT54Yl9kZXYgPSB4Yl9k ZXY7Cj4+ICAgCXNwaW5fbG9ja19pbml0KCZmcm9udF9pbmZvLT5pb19sb2NrKTsKPj4gKwlmcm9u dF9pbmZvLT5kcm1fcGRydl9yZWdpc3RlcmVkID0gZmFsc2U7Cj4+ICAgCWRldl9zZXRfZHJ2ZGF0 YSgmeGJfZGV2LT5kZXYsIGZyb250X2luZm8pOwo+PiAgIAlyZXR1cm4geGVuYnVzX3N3aXRjaF9z dGF0ZSh4Yl9kZXYsIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKTsKPj4gICB9Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS94ZW4veGVuX2RybV9mcm9udC5oCj4+IGluZGV4IDEzZjIyNzM2YWUwMi4uOWVkNWJmYjI0OGQw IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaAo+PiBAQCAtMTksNiArMTks OCBAQAo+PiAgICNpZm5kZWYgX19YRU5fRFJNX0ZST05UX0hfCj4+ICAgI2RlZmluZSBfX1hFTl9E Uk1fRlJPTlRfSF8KPj4gICAKPj4gKyNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgo+PiAr Cj4+ICAgI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfY2ZnLmgiCj4+ICAgCj4+ICAgI2lmbmRlZiBH UkFOVF9JTlZBTElEX1JFRgo+PiBAQCAtMzAsMTYgKzMyLDM4IEBACj4+ICAgI2RlZmluZSBHUkFO VF9JTlZBTElEX1JFRgkwCj4+ICAgI2VuZGlmCj4+ICAgCj4+ICtzdHJ1Y3QgeGVuX2RybV9mcm9u dF9kcm1fcGlwZWxpbmU7Cj4+ICsKPj4gICBzdHJ1Y3QgeGVuX2RybV9mcm9udF9vcHMgewo+PiAr CWludCAoKm1vZGVfc2V0KShzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1fcGlwZWxpbmUgKnBpcGVs aW5lLAo+PiArCQkJdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qgd2lkdGgsIHVpbnQz Ml90IGhlaWdodCwKPj4gKwkJCXVpbnQzMl90IGJwcCwgdWludDY0X3QgZmJfY29va2llKTsKPj4g KwlpbnQgKCpkYnVmX2NyZWF0ZV9mcm9tX3BhZ2VzKShzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZv ICpmcm9udF9pbmZvLAo+PiArCQkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVpbnQzMl90IHdpZHRo LCB1aW50MzJfdCBoZWlnaHQsCj4+ICsJCQl1aW50MzJfdCBicHAsIHVpbnQ2NF90IHNpemUsIHN0 cnVjdCBwYWdlICoqcGFnZXMpOwo+PiArCWludCAoKmRidWZfY3JlYXRlX2Zyb21fc2d0KShzdHJ1 Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQkJdWludDY0X3QgZGJ1Zl9j b29raWUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCj4+ICsJCQl1aW50MzJfdCBi cHAsIHVpbnQ2NF90IHNpemUsIHN0cnVjdCBzZ190YWJsZSAqc2d0KTsKPj4gKwlpbnQgKCpkYnVm X2Rlc3Ryb3kpKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sCj4+ICsJCQl1 aW50NjRfdCBkYnVmX2Nvb2tpZSk7Cj4+ICsJaW50ICgqZmJfYXR0YWNoKShzdHJ1Y3QgeGVuX2Ry bV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQkJdWludDY0X3QgZGJ1Zl9jb29raWUsIHVp bnQ2NF90IGZiX2Nvb2tpZSwKPj4gKwkJCXVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQs IHVpbnQzMl90IHBpeGVsX2Zvcm1hdCk7Cj4+ICsJaW50ICgqZmJfZGV0YWNoKShzdHJ1Y3QgeGVu X2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQkJdWludDY0X3QgZmJfY29va2llKTsK Pj4gKwlpbnQgKCpwYWdlX2ZsaXApKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2lu Zm8sCj4+ICsJCQlpbnQgY29ubl9pZHgsIHVpbnQ2NF90IGZiX2Nvb2tpZSk7Cj4+ICAgCS8qIENB VVRJT04hIHRoaXMgaXMgY2FsbGVkIHdpdGggYSBzcGluX2xvY2sgaGVsZCEgKi8KPj4gICAJdm9p ZCAoKm9uX2ZyYW1lX2RvbmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICAgCQkJ aW50IGNvbm5faWR4LCB1aW50NjRfdCBmYl9jb29raWUpOwo+PiArCXZvaWQgKCpkcm1fbGFzdF9j bG9zZSkoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbyk7Cj4+ICAgfTsKPj4g ICAKPj4gICBzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvIHsKPj4gICAJc3RydWN0IHhlbmJ1c19k ZXZpY2UgKnhiX2RldjsKPj4gICAJLyogdG8gcHJvdGVjdCBkYXRhIGJldHdlZW4gYmFja2VuZCBJ TyBjb2RlIGFuZCBpbnRlcnJ1cHQgaGFuZGxlciAqLwo+PiAgIAlzcGlubG9ja190IGlvX2xvY2s7 Cj4+ICsJYm9vbCBkcm1fcGRydl9yZWdpc3RlcmVkOwo+PiAgIAkvKiB2aXJ0dWFsIERSTSBwbGF0 Zm9ybSBkZXZpY2UgKi8KPj4gICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZHJtX3BkZXY7Cj4+ ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZHJ2LmMKPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iMzc2NGQ1ZWQwZjYKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZHJ2LmMK Pj4gQEAgLTAsMCArMSwyMTEgQEAKPj4gKy8qCj4+ICsgKiAgWGVuIHBhcmEtdmlydHVhbCBEUk0g ZGV2aWNlCj4+ICsgKgo+PiArICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+PiArICogICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ PiArICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgo+PiArICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgo+PiArICoKPj4gKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ICsgKiAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Pj4gKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4g KyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5jLgo+PiAr ICoKPj4gKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRy dXNoY2hlbmtvQGVwYW0uY29tPgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+PiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9t aWNfaGVscGVyLmg+Cj4+ICsKPj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250LmgiCj4+ICsjaW5j bHVkZSAieGVuX2RybV9mcm9udF9jZmcuaCIKPj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Ry di5oIgo+PiArCj4+ICtzdGF0aWMgaW50IGR1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmls cCwKPj4gKwkJc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9k dW1iICphcmdzKQo+PiArewo+PiArCXJldHVybiAtRUlOVkFMOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBmcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPj4gK3sKPj4g KwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8gPSBvYmotPmRldi0+ZGV2 X3ByaXZhdGU7Cj4+ICsKPj4gKwlkcm1faW5mby0+ZnJvbnRfb3BzLT5kYnVmX2Rlc3Ryb3koZHJt X2luZm8tPmZyb250X2luZm8sCj4+ICsJCQl4ZW5fZHJtX2Zyb250X2RidWZfdG9fY29va2llKG9i aikpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBvbl9mcmFtZV9kb25lKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICsJCWludCBjb25uX2lkeCwgdWludDY0X3QgZmJfY29va2ll KQo+PiArewo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBsYXN0Y2xvc2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJt X2luZm8gPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCj4+ICsJZHJtX2luZm8tPmZyb250X29wcy0+ ZHJtX2xhc3RfY2xvc2UoZHJtX2luZm8tPmZyb250X2luZm8pOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IGdlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKPj4gK3sKPj4gKwlyZXR1cm4gLUVJTlZBTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0 cnVjdCBzZ190YWJsZSAqcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKQo+PiArewo+PiArCXJldHVybiBOVUxMOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpwcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4gKwkJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLCBzdHJ1Y3Qgc2df dGFibGUgKnNndCkKPj4gK3sKPj4gKwlyZXR1cm4gTlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGlj IHZvaWQgKnByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4+ICt7Cj4+ICsJ cmV0dXJuIE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHByaW1lX3Z1bm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpCj4+ICt7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbnQgcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4+ICt7Cj4+ICsJcmV0dXJuIC1FSU5WQUw7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHhlbmRybV9mb3BzID0g ewo+PiArCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLAo+PiArCS5vcGVuICAgICAgICAg ICA9IGRybV9vcGVuLAo+PiArCS5yZWxlYXNlICAgICAgICA9IGRybV9yZWxlYXNlLAo+PiArCS51 bmxvY2tlZF9pb2N0bCA9IGRybV9pb2N0bCwKPj4gKyNpZmRlZiBDT05GSUdfQ09NUEFUCj4+ICsJ LmNvbXBhdF9pb2N0bCAgID0gZHJtX2NvbXBhdF9pb2N0bCwKPj4gKyNlbmRpZgo+PiArCS5wb2xs ICAgICAgICAgICA9IGRybV9wb2xsLAo+PiArCS5yZWFkICAgICAgICAgICA9IGRybV9yZWFkLAo+ PiArCS5sbHNlZWsgICAgICAgICA9IG5vX2xsc2VlaywKPj4gKwkubW1hcCAgICAgICAgICAgPSBn ZW1fbW1hcCwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9u c19zdHJ1Y3QgeGVuX2RybV92bV9vcHMgPSB7Cj4+ICsJLm9wZW4gICAgICAgICAgID0gZHJtX2dl bV92bV9vcGVuLAo+PiArCS5jbG9zZSAgICAgICAgICA9IGRybV9nZW1fdm1fY2xvc2UsCj4+ICt9 Owo+PiArCj4+ICtzdHJ1Y3QgZHJtX2RyaXZlciB4ZW5fZHJtX2RyaXZlciA9IHsKPj4gKwkuZHJp dmVyX2ZlYXR1cmVzICAgICAgICAgICA9IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVCB8Cj4+ ICsJCQkJICAgICBEUklWRVJfUFJJTUUgfCBEUklWRVJfQVRPTUlDLAo+PiArCS5sYXN0Y2xvc2Ug ICAgICAgICAgICAgICAgID0gbGFzdGNsb3NlLAo+PiArCS5nZW1fZnJlZV9vYmplY3RfdW5sb2Nr ZWQgID0gZnJlZV9vYmplY3QsCj4+ICsJLmdlbV92bV9vcHMgICAgICAgICAgICAgICAgPSAmeGVu X2RybV92bV9vcHMsCj4+ICsJLnByaW1lX2hhbmRsZV90b19mZCAgICAgICAgPSBkcm1fZ2VtX3By aW1lX2hhbmRsZV90b19mZCwKPj4gKwkucHJpbWVfZmRfdG9faGFuZGxlICAgICAgICA9IGRybV9n ZW1fcHJpbWVfZmRfdG9faGFuZGxlLAo+PiArCS5nZW1fcHJpbWVfaW1wb3J0ICAgICAgICAgID0g ZHJtX2dlbV9wcmltZV9pbXBvcnQsCj4+ICsJLmdlbV9wcmltZV9leHBvcnQgICAgICAgICAgPSBk cm1fZ2VtX3ByaW1lX2V4cG9ydCwKPj4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZSAgICA9IHBy aW1lX2dldF9zZ190YWJsZSwKPj4gKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IHByaW1l X2ltcG9ydF9zZ190YWJsZSwKPj4gKwkuZ2VtX3ByaW1lX3ZtYXAgICAgICAgICAgICA9IHByaW1l X3ZtYXAsCj4+ICsJLmdlbV9wcmltZV92dW5tYXAgICAgICAgICAgPSBwcmltZV92dW5tYXAsCj4+ ICsJLmdlbV9wcmltZV9tbWFwICAgICAgICAgICAgPSBwcmltZV9tbWFwLAo+PiArCS5kdW1iX2Ny ZWF0ZSAgICAgICAgICAgICAgID0gZHVtYl9jcmVhdGUsCj4+ICsJLmZvcHMgICAgICAgICAgICAg ICAgICAgICAgPSAmeGVuZHJtX2ZvcHMsCj4+ICsJLm5hbWUgICAgICAgICAgICAgICAgICAgICAg PSAieGVuZHJtLWR1IiwKPj4gKwkuZGVzYyAgICAgICAgICAgICAgICAgICAgICA9ICJYZW4gUFYg RFJNIERpc3BsYXkgVW5pdCIsCj4+ICsJLmRhdGUgICAgICAgICAgICAgICAgICAgICAgPSAiMjAx NjExMDkiLAo+PiArCS5tYWpvciAgICAgICAgICAgICAgICAgICAgID0gMSwKPj4gKwkubWlub3Ig ICAgICAgICAgICAgICAgICAgICA9IDAsCj4+ICt9Owo+PiArCj4+ICtpbnQgeGVuX2RybV9mcm9u dF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPj4gKwkJc3RydWN0IHhl bl9kcm1fZnJvbnRfb3BzICpmcm9udF9vcHMpCj4+ICt7Cj4+ICsJc3RydWN0IHhlbl9kcm1fZnJv bnRfY2ZnICpjZmcgPSBkZXZfZ2V0X3BsYXRkYXRhKCZwZGV2LT5kZXYpOwo+PiArCXN0cnVjdCB4 ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbzsKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlEUk1fSU5GTygiQ3JlYXRpbmcgJXNcbiIsIHhl bl9kcm1fZHJpdmVyLmRlc2MpOwo+PiArCj4+ICsJZHJtX2luZm8gPSBkZXZtX2t6YWxsb2MoJnBk ZXYtPmRldiwgc2l6ZW9mKCpkcm1faW5mbyksIEdGUF9LRVJORUwpOwo+PiArCWlmICghZHJtX2lu Zm8pCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJZHJtX2luZm8tPmZyb250X29wcyA9 IGZyb250X29wczsKPj4gKwlkcm1faW5mby0+ZnJvbnRfb3BzLT5vbl9mcmFtZV9kb25lID0gb25f ZnJhbWVfZG9uZTsKPj4gKwlkcm1faW5mby0+ZnJvbnRfaW5mbyA9IGNmZy0+ZnJvbnRfaW5mbzsK Pj4gKwo+PiArCWRldiA9IGRybV9kZXZfYWxsb2MoJnhlbl9kcm1fZHJpdmVyLCAmcGRldi0+ZGV2 KTsKPj4gKwlpZiAoIWRldikKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlkcm1faW5m by0+ZHJtX2RldiA9IGRldjsKPj4gKwo+PiArCWRybV9pbmZvLT5jZmcgPSBjZmc7Cj4+ICsJZGV2 LT5kZXZfcHJpdmF0ZSA9IGRybV9pbmZvOwo+PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGRybV9pbmZvKTsKPj4gKwo+PiArCXJldCA9IGRybV92YmxhbmtfaW5pdChkZXYsIGNmZy0+bnVt X2Nvbm5lY3RvcnMpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g aW5pdGlhbGl6ZSB2YmxhbmssIHJldCAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4g Kwl9Cj4+ICsKPj4gKwlkZXYtPmlycV9lbmFibGVkID0gMTsKPj4gKwo+PiArCXJldCA9IGRybV9k ZXZfcmVnaXN0ZXIoZGV2LCAwKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIGZhaWxfcmVnaXN0 ZXI7Cj4+ICsKPj4gKwlEUk1fSU5GTygiSW5pdGlhbGl6ZWQgJXMgJWQuJWQuJWQgJXMgb24gbWlu b3IgJWRcbiIsCj4+ICsJCQl4ZW5fZHJtX2RyaXZlci5uYW1lLCB4ZW5fZHJtX2RyaXZlci5tYWpv ciwKPj4gKwkJCXhlbl9kcm1fZHJpdmVyLm1pbm9yLCB4ZW5fZHJtX2RyaXZlci5wYXRjaGxldmVs LAo+PiArCQkJeGVuX2RybV9kcml2ZXIuZGF0ZSwgZGV2LT5wcmltYXJ5LT5pbmRleCk7Cj4+ICsK Pj4gKwlyZXR1cm4gMDsKPj4gKwo+PiArZmFpbF9yZWdpc3RlcjoKPj4gKwlkcm1fZGV2X3VucmVn aXN0ZXIoZGV2KTsKPj4gKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkZXYpOwo+PiArCXJldHVy biByZXQ7Cj4+ICt9Cj4+ICsKPj4gK2ludCB4ZW5fZHJtX2Zyb250X2Rydl9yZW1vdmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9k cm1faW5mbyAqZHJtX2luZm8gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZHJtX2luZm8tPmRybV9kZXY7Cj4+ICsKPj4gKwlpZiAoZGV2 KSB7Cj4+ICsJCWRybV9kZXZfdW5yZWdpc3RlcihkZXYpOwo+PiArCQlkcm1fYXRvbWljX2hlbHBl cl9zaHV0ZG93bihkZXYpOwo+PiArCQlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkZXYpOwo+PiAr CQlkcm1fZGV2X3VucmVmKGRldik7Cj4+ICsJfQo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtib29sIHhlbl9kcm1fZnJvbnRfZHJ2X2lzX3VzZWQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8g PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 Owo+PiArCj4+ICsJaWYgKCFkcm1faW5mbykKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsJ ZGV2ID0gZHJtX2luZm8tPmRybV9kZXY7Cj4+ICsJaWYgKCFkZXYpCj4+ICsJCXJldHVybiBmYWxz ZTsKPj4gKwo+PiArCS8qCj4+ICsJICogRklYTUU6IHRoZSBjb2RlIGJlbG93IG11c3QgYmUgcHJv dGVjdGVkIGJ5IGRybV9nbG9iYWxfbXV0ZXgsCj4+ICsJICogYnV0IGl0IGlzIG5vdCBhY2Nlc3Np YmxlIHRvIHVzLiBBbnl3YXlzIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24sCj4+ICsJICogYnV0 IHdlIHdpbGwgcmUtdHJ5Lgo+PiArCSAqLwo+PiArCXJldHVybiBkZXYtPm9wZW5fY291bnQgIT0g MDsKPj4gK30KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuaAo+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmFhYTQ3NjUzNWMxMwo+PiAt LS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9k cnYuaAo+PiBAQCAtMCwwICsxLDYwIEBACj4+ICsvKgo+PiArICogIFhlbiBwYXJhLXZpcnR1YWwg RFJNIGRldmljZQo+PiArICoKPj4gKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPj4gKyAqICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKPj4gKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKPj4gKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KPj4gKyAqCj4+ICsgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+PiArICogICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiArICogICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCj4+ICsgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Cj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggRVBBTSBTeXN0ZW1zIEluYy4K Pj4gKyAqCj4+ICsgKiBBdXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJf YW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9fWEVOX0RS TV9GUk9OVF9EUlZfSF8KPj4gKyNkZWZpbmUgX19YRU5fRFJNX0ZST05UX0RSVl9IXwo+PiArCj4+ ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4gKwo+PiArI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQu aCIKPj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2NmZy5oIgo+PiArCj4+ICtzdHJ1Y3QgeGVu X2RybV9mcm9udF9kcm1fcGlwZWxpbmUgewo+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9p bmZvICpkcm1faW5mbzsKPj4gKwo+PiArCWludCBpbmRleDsKPj4gK307Cj4+ICsKPj4gK3N0cnVj dCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvIHsKPj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZv ICpmcm9udF9pbmZvOwo+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X29wcyAqZnJvbnRfb3BzOwo+ PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2Owo+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250 X2NmZyAqY2ZnOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIGlubGluZSB1aW50NjRfdCB4ZW5fZHJt X2Zyb250X2ZiX3RvX2Nvb2tpZSgKPj4gKwkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4+ ICt7Cj4+ICsJcmV0dXJuICh1aW50NjRfdClmYjsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGlu ZSB1aW50NjRfdCB4ZW5fZHJtX2Zyb250X2RidWZfdG9fY29va2llKAo+PiArCQlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbV9vYmopCj4+ICt7Cj4+ICsJcmV0dXJuICh1aW50NjRfdClnZW1fb2Jq Owo+PiArfQo+PiArCj4+ICtpbnQgeGVuX2RybV9mcm9udF9kcnZfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiwKPj4gKwkJc3RydWN0IHhlbl9kcm1fZnJvbnRfb3BzICpmcm9udF9v cHMpOwo+PiArCj4+ICtpbnQgeGVuX2RybV9mcm9udF9kcnZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpOwo+PiArCj4+ICtib29sIHhlbl9kcm1fZnJvbnRfZHJ2X2lzX3VzZWQo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7Cj4+ICsKPj4gKyNlbmRpZiAvKiBfX1hFTl9E Uk1fRlJPTlRfRFJWX0hfICovCj4+ICsKPj4gLS0gCj4+IDIuNy40Cj4+Cj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==