From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 8/9] drm/xen-front: Implement GEM operations Date: Mon, 5 Mar 2018 10:32:25 +0100 Message-ID: <20180305093225.GK22212__41392.1768930324$1520242294$gmane$org@phenom.ffwll.local> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-9-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1esmTw-0004kB-HU for xen-devel@lists.xenproject.org; Mon, 05 Mar 2018 09:32:32 +0000 Received: by mail-wm0-x243.google.com with SMTP id x7so14026035wmc.0 for ; Mon, 05 Mar 2018 01:32:30 -0800 (PST) Content-Disposition: inline In-Reply-To: <1519200222-20623-9-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: jgross@suse.com, airlied@linux.ie, gustavo@padovan.org, Oleksandr Andrushchenko , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, daniel.vetter@intel.com, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBGZWIgMjEsIDIwMTggYXQgMTA6MDM6NDFBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5k cl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+IAo+IEltcGxlbWVudCBHRU0gaGFuZGxpbmcgZGVw ZW5kaW5nIG9uIGRyaXZlciBtb2RlIG9mIG9wZXJhdGlvbjoKPiBkZXBlbmRpbmcgb24gdGhlIHJl cXVpcmVtZW50cyBmb3IgdGhlIHBhcmEtdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG5hbWVseQo+ IHJlcXVpcmVtZW50cyBkaWN0YXRlZCBieSB0aGUgYWNjb21wYW55aW5nIERSTS8odilHUFUgZHJp dmVycyBydW5uaW5nIGluIGJvdGgKPiBob3N0IGFuZCBndWVzdCBlbnZpcm9ubWVudHMsIG51bWJl ciBvZiBvcGVyYXRpbmcgbW9kZXMgb2YgcGFyYS12aXJ0dWFsaXplZAo+IGRpc3BsYXkgZHJpdmVy IGFyZSBzdXBwb3J0ZWQ6Cj4gIC0gZGlzcGxheSBidWZmZXJzIGNhbiBiZSBhbGxvY2F0ZWQgYnkg ZWl0aGVyIGZyb250ZW5kIGRyaXZlciBvciBiYWNrZW5kCj4gIC0gZGlzcGxheSBidWZmZXJzIGNh biBiZSBhbGxvY2F0ZWQgdG8gYmUgY29udGlndW91cyBpbiBtZW1vcnkgb3Igbm90Cj4gCj4gTm90 ZSEgRnJvbnRlbmQgZHJpdmVyIGl0c2VsZiBoYXMgbm8gZGVwZW5kZW5jeSBvbiBjb250aWd1b3Vz IG1lbW9yeSBmb3IKPiBpdHMgb3BlcmF0aW9uLgo+IAo+IDEuIEJ1ZmZlcnMgYWxsb2NhdGVkIGJ5 IHRoZSBmcm9udGVuZCBkcml2ZXIuCj4gCj4gVGhlIGJlbG93IG1vZGVzIG9mIG9wZXJhdGlvbiBh cmUgY29uZmlndXJlZCBhdCBjb21waWxlLXRpbWUgdmlhCj4gZnJvbnRlbmQgZHJpdmVyJ3Mga2Vy bmVsIGNvbmZpZ3VyYXRpb24uCj4gCj4gMS4xLiBGcm9udCBkcml2ZXIgY29uZmlndXJlZCB0byB1 c2UgR0VNIENNQSBoZWxwZXJzCj4gICAgICBUaGlzIHVzZS1jYXNlIGlzIHVzZWZ1bCB3aGVuIHVz ZWQgd2l0aCBhY2NvbXBhbnlpbmcgRFJNL3ZHUFUgZHJpdmVyIGluCj4gICAgICBndWVzdCBkb21h aW4gd2hpY2ggd2FzIGRlc2lnbmVkIHRvIG9ubHkgd29yayB3aXRoIGNvbnRpZ3VvdXMgYnVmZmVy cywKPiAgICAgIGUuZy4gRFJNIGRyaXZlciBiYXNlZCBvbiBHRU0gQ01BIGhlbHBlcnM6IHN1Y2gg ZHJpdmVycyBjYW4gb25seSBpbXBvcnQKPiAgICAgIGNvbnRpZ3VvdXMgUFJJTUUgYnVmZmVycywg dGh1cyByZXF1aXJpbmcgZnJvbnRlbmQgZHJpdmVyIHRvIHByb3ZpZGUKPiAgICAgIHN1Y2guIElu IG9yZGVyIHRvIGltcGxlbWVudCB0aGlzIG1vZGUgb2Ygb3BlcmF0aW9uIHBhcmEtdmlydHVhbGl6 ZWQKPiAgICAgIGZyb250ZW5kIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCB0byB1c2UgR0VNIENN QSBoZWxwZXJzLgo+IAo+IDEuMi4gRnJvbnQgZHJpdmVyIGRvZXNuJ3QgdXNlIEdFTSBDTUEKPiAg ICAgIElmIGFjY29tcGFueWluZyBkcml2ZXJzIGNhbiBjb3BlIHdpdGggbm9uLWNvbnRpZ3VvdXMg bWVtb3J5IHRoZW4sIHRvCj4gICAgICBsb3dlciBwcmVzc3VyZSBvbiBDTUEgc3Vic3lzdGVtIG9m IHRoZSBrZXJuZWwsIGRyaXZlciBjYW4gYWxsb2NhdGUKPiAgICAgIGJ1ZmZlcnMgZnJvbSBzeXN0 ZW0gbWVtb3J5Lgo+IAo+IE5vdGUhIElmIHVzZWQgd2l0aCBhY2NvbXBhbnlpbmcgRFJNLyh2KUdQ VSBkcml2ZXJzIHRoaXMgbW9kZSBvZiBvcGVyYXRpb24KPiBtYXkgcmVxdWlyZSBJT01NVSBzdXBw b3J0IG9uIHRoZSBwbGF0Zm9ybSwgc28gYWNjb21wYW55aW5nIERSTS92R1BVCj4gaGFyZHdhcmUg Y2FuIHN0aWxsIHJlYWNoIGRpc3BsYXkgYnVmZmVyIG1lbW9yeSB3aGlsZSBpbXBvcnRpbmcgUFJJ TUUKPiBidWZmZXJzIGZyb20gdGhlIGZyb250ZW5kIGRyaXZlci4KPiAKPiAyLiBCdWZmZXJzIGFs bG9jYXRlZCBieSB0aGUgYmFja2VuZAo+IAo+IFRoaXMgbW9kZSBvZiBvcGVyYXRpb24gaXMgcnVu LXRpbWUgY29uZmlndXJlZCB2aWEgZ3Vlc3QgZG9tYWluIGNvbmZpZ3VyYXRpb24KPiB0aHJvdWdo IFhlblN0b3JlIGVudHJpZXMuCj4gCj4gRm9yIHN5c3RlbXMgd2hpY2ggZG8gbm90IHByb3ZpZGUg SU9NTVUgc3VwcG9ydCwgYnV0IGhhdmluZyBzcGVjaWZpYwo+IHJlcXVpcmVtZW50cyBmb3IgZGlz cGxheSBidWZmZXJzIGl0IGlzIHBvc3NpYmxlIHRvIGFsbG9jYXRlIHN1Y2ggYnVmZmVycwo+IGF0 IGJhY2tlbmQgc2lkZSBhbmQgc2hhcmUgdGhvc2Ugd2l0aCB0aGUgZnJvbnRlbmQuCj4gRm9yIGV4 YW1wbGUsIGlmIGhvc3QgZG9tYWluIGlzIDE6MSBtYXBwZWQgYW5kIGhhcyBEUk0vR1BVIGhhcmR3 YXJlIGV4cGVjdGluZwo+IHBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnksIHRoaXMgYWxsb3dz IGltcGxlbWVudGluZyB6ZXJvLWNvcHlpbmcKPiB1c2UtY2FzZXMuCj4gCj4gTm90ZSEgQ29uZmln dXJhdGlvbiBvcHRpb25zIDEuMSAoY29udGlndW91cyBkaXNwbGF5IGJ1ZmZlcnMpIGFuZCAyIChi YWNrZW5kCj4gYWxsb2NhdGVkIGJ1ZmZlcnMpIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoZSBzYW1l IHRpbWUuCj4gCj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtz YW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgoKU29tZSBzdWdnZXN0aW9ucyBiZWxvdyBmb3Ig c29tZSBsYXJnZXIgY2xlYW51cCB3b3JrLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0veGVuL0tjb25maWcgICAgICAgICAgICAgICAgIHwgIDEzICsKPiAgZHJpdmVycy9ncHUvZHJt L3hlbi9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgNiArCj4gIGRyaXZlcnMvZ3B1L2RybS94 ZW4veGVuX2RybV9mcm9udC5oICAgICAgICAgfCAgNzQgKysrKysrCj4gIGRyaXZlcnMvZ3B1L2Ry bS94ZW4veGVuX2RybV9mcm9udF9kcnYuYyAgICAgfCAgODAgKysrKysrLQo+ICBkcml2ZXJzL2dw dS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZHJ2LmggICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUv ZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5jICAgICB8IDM2MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uaCAgICAg fCAgNDYgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtX2NtYS5j IHwgIDkzICsrKysrKysKPiAgOCBmaWxlcyBjaGFuZ2VkLCA2NjcgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udF9nZW0uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hl bi94ZW5fZHJtX2Zyb250X2dlbS5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtX2NtYS5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS94ZW4vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZwo+IGluZGV4 IDRjY2ExNjA3ODJhYi4uNGY0YWJjOTFmM2I2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS94ZW4vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZwo+IEBAIC0x NSwzICsxNSwxNiBAQCBjb25maWcgRFJNX1hFTl9GUk9OVEVORAo+ICAJaGVscAo+ICAJICBDaG9v c2UgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gZW5hYmxlIGEgcGFyYS12aXJ0dWFsaXplZAo+ ICAJICBmcm9udGVuZCBEUk0vS01TIGRyaXZlciBmb3IgWGVuIGd1ZXN0IE9TZXMuCj4gKwo+ICtj b25maWcgRFJNX1hFTl9GUk9OVEVORF9DTUEKPiArCWJvb2wgIlVzZSBEUk0gQ01BIHRvIGFsbG9j YXRlIGR1bWIgYnVmZmVycyIKPiArCWRlcGVuZHMgb24gRFJNX1hFTl9GUk9OVEVORAo+ICsJc2Vs ZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ICsJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUgo+ICsJ aGVscAo+ICsJICBVc2UgRFJNIENNQSBoZWxwZXJzIHRvIGFsbG9jYXRlIGRpc3BsYXkgYnVmZmVy cy4KPiArCSAgVGhpcyBpcyB1c2VmdWwgZm9yIHRoZSB1c2UtY2FzZXMgd2hlbiBndWVzdCBkcml2 ZXIgbmVlZHMgdG8KPiArCSAgc2hhcmUgb3IgZXhwb3J0IGJ1ZmZlcnMgdG8gb3RoZXIgZHJpdmVy cyB3aGljaCBvbmx5IGV4cGVjdAo+ICsJICBjb250aWd1b3VzIGJ1ZmZlcnMuCj4gKwkgIE5vdGU6 IGluIHRoaXMgbW9kZSBkcml2ZXIgY2Fubm90IHVzZSBidWZmZXJzIGFsbG9jYXRlZAo+ICsJICBi eSB0aGUgYmFja2VuZC4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUKPiBpbmRleCA0ZmNiMGRhMWE5YzUuLjEy Mzc2ZWM3OGZiYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZQo+IEBAIC04LDQgKzgsMTAgQEAgZHJt X3hlbl9mcm9udC1vYmpzIDo9IHhlbl9kcm1fZnJvbnQubyBcCj4gIAkJICAgICAgeGVuX2RybV9m cm9udF9zaGJ1Zi5vIFwKPiAgCQkgICAgICB4ZW5fZHJtX2Zyb250X2NmZy5vCj4gIAo+ICtpZmVx ICgkKENPTkZJR19EUk1fWEVOX0ZST05URU5EX0NNQSkseSkKPiArCWRybV94ZW5fZnJvbnQtb2Jq cyArPSB4ZW5fZHJtX2Zyb250X2dlbV9jbWEubwo+ICtlbHNlCj4gKwlkcm1feGVuX2Zyb250LW9i anMgKz0geGVuX2RybV9mcm9udF9nZW0ubwo+ICtlbmRpZgo+ICsKPiAgb2JqLSQoQ09ORklHX0RS TV9YRU5fRlJPTlRFTkQpICs9IGRybV94ZW5fZnJvbnQubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udC5oCj4gaW5kZXggOWVkNWJmYjI0OGQwLi5jNmY1MmM4OTI0MzQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaAo+IEBAIC0zNCw2ICszNCw4MCBAQAo+ICAKPiAgc3Ry dWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lOwo+ICAKPiArLyoKPiArICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPiArICogUGFyYS12aXJ0dWFsaXplZCBEUk0vS01TIGZyb250ZW5kIGRyaXZl cgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiBUaGlzIGZyb250ZW5kIGRyaXZlciBp bXBsZW1lbnRzIFhlbiBwYXJhLXZpcnR1YWxpemVkIGRpc3BsYXkKPiArICogYWNjb3JkaW5nIHRv IHRoZSBkaXNwbGF5IHByb3RvY29sIGRlc2NyaWJlZCBhdAo+ICsgKiBpbmNsdWRlL3hlbi9pbnRl cmZhY2UvaW8vZGlzcGxpZi5oCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAq IERyaXZlciBtb2RlcyBvZiBvcGVyYXRpb24gaW4gdGVybXMgb2YgZGlzcGxheSBidWZmZXJzIHVz ZWQKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogRGVwZW5kaW5nIG9uIHRoZSByZXF1 aXJlbWVudHMgZm9yIHRoZSBwYXJhLXZpcnR1YWxpemVkIGVudmlyb25tZW50LCBuYW1lbHkKPiAr ICogcmVxdWlyZW1lbnRzIGRpY3RhdGVkIGJ5IHRoZSBhY2NvbXBhbnlpbmcgRFJNLyh2KUdQVSBk cml2ZXJzIHJ1bm5pbmcgaW4gYm90aAo+ICsgKiBob3N0IGFuZCBndWVzdCBlbnZpcm9ubWVudHMs IG51bWJlciBvZiBvcGVyYXRpbmcgbW9kZXMgb2YgcGFyYS12aXJ0dWFsaXplZAo+ICsgKiBkaXNw bGF5IGRyaXZlciBhcmUgc3VwcG9ydGVkOgo+ICsgKiAgLSBkaXNwbGF5IGJ1ZmZlcnMgY2FuIGJl IGFsbG9jYXRlZCBieSBlaXRoZXIgZnJvbnRlbmQgZHJpdmVyIG9yIGJhY2tlbmQKPiArICogIC0g ZGlzcGxheSBidWZmZXJzIGNhbiBiZSBhbGxvY2F0ZWQgdG8gYmUgY29udGlndW91cyBpbiBtZW1v cnkgb3Igbm90Cj4gKyAqCj4gKyAqIE5vdGUhIEZyb250ZW5kIGRyaXZlciBpdHNlbGYgaGFzIG5v IGRlcGVuZGVuY3kgb24gY29udGlndW91cyBtZW1vcnkgZm9yCj4gKyAqICAgICAgIGl0cyBvcGVy YXRpb24uCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIDEuIEJ1ZmZlcnMg YWxsb2NhdGVkIGJ5IHRoZSBmcm9udGVuZCBkcml2ZXIuCj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCj4gKyAqCj4gKyAqIFRoZSBiZWxvdyBtb2RlcyBvZiBvcGVyYXRpb24gYXJlIGNvbmZpZ3Vy ZWQgYXQgY29tcGlsZS10aW1lIHZpYQo+ICsgKiBmcm9udGVuZCBkcml2ZXIncyBrZXJuZWwgY29u ZmlndXJhdGlvbi4KPiArICoKPiArICogMS4xLiBGcm9udCBkcml2ZXIgY29uZmlndXJlZCB0byB1 c2UgR0VNIENNQSBoZWxwZXJzCj4gKyAqICAgICAgVGhpcyB1c2UtY2FzZSBpcyB1c2VmdWwgd2hl biB1c2VkIHdpdGggYWNjb21wYW55aW5nIERSTS92R1BVIGRyaXZlciBpbgo+ICsgKiAgICAgIGd1 ZXN0IGRvbWFpbiB3aGljaCB3YXMgZGVzaWduZWQgdG8gb25seSB3b3JrIHdpdGggY29udGlndW91 cyBidWZmZXJzLAo+ICsgKiAgICAgIGUuZy4gRFJNIGRyaXZlciBiYXNlZCBvbiBHRU0gQ01BIGhl bHBlcnM6IHN1Y2ggZHJpdmVycyBjYW4gb25seSBpbXBvcnQKPiArICogICAgICBjb250aWd1b3Vz IFBSSU1FIGJ1ZmZlcnMsIHRodXMgcmVxdWlyaW5nIGZyb250ZW5kIGRyaXZlciB0byBwcm92aWRl Cj4gKyAqICAgICAgc3VjaC4gSW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoaXMgbW9kZSBvZiBvcGVy YXRpb24gcGFyYS12aXJ0dWFsaXplZAo+ICsgKiAgICAgIGZyb250ZW5kIGRyaXZlciBjYW4gYmUg Y29uZmlndXJlZCB0byB1c2UgR0VNIENNQSBoZWxwZXJzLgo+ICsgKgo+ICsgKiAxLjIuIEZyb250 IGRyaXZlciBkb2Vzbid0IHVzZSBHRU0gQ01BCj4gKyAqICAgICAgSWYgYWNjb21wYW55aW5nIGRy aXZlcnMgY2FuIGNvcGUgd2l0aCBub24tY29udGlndW91cyBtZW1vcnkgdGhlbiwgdG8KPiArICog ICAgICBsb3dlciBwcmVzc3VyZSBvbiBDTUEgc3Vic3lzdGVtIG9mIHRoZSBrZXJuZWwsIGRyaXZl ciBjYW4gYWxsb2NhdGUKPiArICogICAgICBidWZmZXJzIGZyb20gc3lzdGVtIG1lbW9yeS4KPiAr ICoKPiArICogTm90ZSEgSWYgdXNlZCB3aXRoIGFjY29tcGFueWluZyBEUk0vKHYpR1BVIGRyaXZl cnMgdGhpcyBtb2RlIG9mIG9wZXJhdGlvbgo+ICsgKiAgIG1heSByZXF1aXJlIElPTU1VIHN1cHBv cnQgb24gdGhlIHBsYXRmb3JtLCBzbyBhY2NvbXBhbnlpbmcgRFJNL3ZHUFUKPiArICogICBoYXJk d2FyZSBjYW4gc3RpbGwgcmVhY2ggZGlzcGxheSBidWZmZXIgbWVtb3J5IHdoaWxlIGltcG9ydGlu ZyBQUklNRQo+ICsgKiAgIGJ1ZmZlcnMgZnJvbSB0aGUgZnJvbnRlbmQgZHJpdmVyLgo+ICsgKgo+ ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAyLiBCdWZmZXJzIGFsbG9jYXRlZCBieSB0 aGUgYmFja2VuZAo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKiBUaGlzIG1v ZGUgb2Ygb3BlcmF0aW9uIGlzIHJ1bi10aW1lIGNvbmZpZ3VyZWQgdmlhIGd1ZXN0IGRvbWFpbiBj b25maWd1cmF0aW9uCj4gKyAqIHRocm91Z2ggWGVuU3RvcmUgZW50cmllcy4KPiArICoKPiArICog Rm9yIHN5c3RlbXMgd2hpY2ggZG8gbm90IHByb3ZpZGUgSU9NTVUgc3VwcG9ydCwgYnV0IGhhdmlu ZyBzcGVjaWZpYwo+ICsgKiByZXF1aXJlbWVudHMgZm9yIGRpc3BsYXkgYnVmZmVycyBpdCBpcyBw b3NzaWJsZSB0byBhbGxvY2F0ZSBzdWNoIGJ1ZmZlcnMKPiArICogYXQgYmFja2VuZCBzaWRlIGFu ZCBzaGFyZSB0aG9zZSB3aXRoIHRoZSBmcm9udGVuZC4KPiArICogRm9yIGV4YW1wbGUsIGlmIGhv c3QgZG9tYWluIGlzIDE6MSBtYXBwZWQgYW5kIGhhcyBEUk0vR1BVIGhhcmR3YXJlIGV4cGVjdGlu Zwo+ICsgKiBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5LCB0aGlzIGFsbG93cyBpbXBsZW1l bnRpbmcgemVyby1jb3B5aW5nCj4gKyAqIHVzZS1jYXNlcy4KPiArICoKPiArICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPiArICogRHJpdmVyIGxpbWl0YXRpb25zCj4gKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCj4gKyAqIDEuIENvbmZpZ3VyYXRpb24gb3B0aW9ucyAxLjEgKGNvbnRpZ3VvdXMgZGlz cGxheSBidWZmZXJzKSBhbmQgMiAoYmFja2VuZAo+ICsgKiAgICBhbGxvY2F0ZWQgYnVmZmVycykg YXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhlIHNhbWUgdGltZS4KPiArICoKPiArICogMi4gT25seSBw cmltYXJ5IHBsYW5lIHdpdGhvdXQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGlzIHN1cHBvcnRlZC4K PiArICoKPiArICogMy4gT25seSBvbmUgdmlkZW8gbW9kZSBzdXBwb3J0ZWQgd2hpY2ggaXMgY29u ZmlndXJlZCB2aWEgWGVuU3RvcmUuCj4gKyAqCj4gKyAqIDQuIEFsbCBDUlRDcyBvcGVyYXRlIGF0 IGZpeGVkIGZyZXF1ZW5jeSBvZiA2MEh6Lgo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwoKU2luY2UgeW91J3ZlIHR5cGVkIHRoaXMgYWxsIHVwLCBwbHMgY29udmVydCBpdCB0byBrZXJu ZWwtZG9jIGFuZCBwdWxsIGl0CmludG8gYSB4ZW4tZnJvbnQucnN0IGRyaXZlciBzZWN0aW9uIGlu IERvY3VtZW50YXRpb24vZ3B1LyBUaGVyZSdzIGEgZmV3CmV4YW1wbGVzIGZvciBpOTE1IGFuZCB2 YzQgYWxyZWFkeS4KCj4gKwo+ICBzdHJ1Y3QgeGVuX2RybV9mcm9udF9vcHMgewo+ICAJaW50ICgq bW9kZV9zZXQpKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqcGlwZWxpbmUsCj4g IAkJCXVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln aHQsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYwo+IGluZGV4IGU4ODYy ZDI2YmEyNy4uMzVlN2U5Y2RhOWQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udF9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9kcnYuYwo+IEBAIC0yMywxMiArMjMsNTggQEAKPiAgI2luY2x1ZGUgInhlbl9kcm1fZnJv bnQuaCIKPiAgI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfY2ZnLmgiCj4gICNpbmNsdWRlICJ4ZW5f ZHJtX2Zyb250X2Rydi5oIgo+ICsjaW5jbHVkZSAieGVuX2RybV9mcm9udF9nZW0uaCIKPiAgI2lu Y2x1ZGUgInhlbl9kcm1fZnJvbnRfa21zLmgiCj4gIAo+ICBzdGF0aWMgaW50IGR1bWJfY3JlYXRl KHN0cnVjdCBkcm1fZmlsZSAqZmlscCwKPiAgCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpCj4gIHsKPiAtCXJldHVybiAtRUlOVkFMOwo+ ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwo+ICsJaW50IHJldDsKPiArCj4g KwlyZXQgPSBkcm1faW5mby0+Z2VtX29wcy0+ZHVtYl9jcmVhdGUoZmlscCwgZGV2LCBhcmdzKTsK PiArCWlmIChyZXQpCj4gKwkJZ290byBmYWlsOwo+ICsKPiArCW9iaiA9IGRybV9nZW1fb2JqZWN0 X2xvb2t1cChmaWxwLCBhcmdzLT5oYW5kbGUpOwo+ICsJaWYgKCFvYmopIHsKPiArCQlyZXQgPSAt RU5PRU5UOwo+ICsJCWdvdG8gZmFpbF9kZXN0cm95Owo+ICsJfQo+ICsKPiArCWRybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gKwo+ICsJLyoKPiArCSAqIEluIGNhc2Ug b2YgQ09ORklHX0RSTV9YRU5fRlJPTlRFTkRfQ01BIGdlbV9vYmogaXMgY29uc3RydWN0ZWQKPiAr CSAqIHZpYSBEUk0gQ01BIGhlbHBlcnMgYW5kIGRvZXNuJ3QgaGF2ZSAtPnBhZ2VzIGFsbG9jYXRl ZAo+ICsJICogKHhlbmRybV9nZW1fZ2V0X3BhZ2VzIHdpbGwgcmV0dXJuIE5VTEwpLCBidXQgaW5z dGVhZCBjYW4gcHJvdmlkZQo+ICsJICogc2cgdGFibGUKPiArCSAqLwoKTXkgcmVjb21tZW5kYXRp b24gaXMgdG8gdXNlIGFuIHNnIHRhYmxlIGZvciBldmVyeXRoaW5nIGlmIHlvdSBkZWFsIHdpdGgK bWl4ZWQgb2JqZWN0cyAoQ01BLCBzcGVjaWFsIGJsb2NrcyAxOjEgbWFwcGVkIGZyb20gaG9zdCwg bm9ybWFsIHBhZ2VzKS4KVGhhdCBhdm9pZHMgdGhlIGNvbnN0YW50IGdldF9wYWdlcyB2cy4gZ2V0 X3NndCBkaWZmZXJlbmNlcy4gRm9yIGV4YW1wbGVzCnNlZSBob3cgZS5nLiBpOTE1IGhhbmRsZXMg dGhlIHZhcmlvdXMgZ2VtIG9iamVjdCBiYWNrZW5kcy4KCj4gKwlpZiAoZHJtX2luZm8tPmdlbV9v cHMtPmdldF9wYWdlcyhvYmopKQo+ICsJCXJldCA9IGRybV9pbmZvLT5mcm9udF9vcHMtPmRidWZf Y3JlYXRlX2Zyb21fcGFnZXMoCj4gKwkJCQlkcm1faW5mby0+ZnJvbnRfaW5mbywKPiArCQkJCXhl bl9kcm1fZnJvbnRfZGJ1Zl90b19jb29raWUob2JqKSwKPiArCQkJCWFyZ3MtPndpZHRoLCBhcmdz LT5oZWlnaHQsIGFyZ3MtPmJwcCwKPiArCQkJCWFyZ3MtPnNpemUsCj4gKwkJCQlkcm1faW5mby0+ Z2VtX29wcy0+Z2V0X3BhZ2VzKG9iaikpOwo+ICsJZWxzZQo+ICsJCXJldCA9IGRybV9pbmZvLT5m cm9udF9vcHMtPmRidWZfY3JlYXRlX2Zyb21fc2d0KAo+ICsJCQkJZHJtX2luZm8tPmZyb250X2lu Zm8sCj4gKwkJCQl4ZW5fZHJtX2Zyb250X2RidWZfdG9fY29va2llKG9iaiksCj4gKwkJCQlhcmdz LT53aWR0aCwgYXJncy0+aGVpZ2h0LCBhcmdzLT5icHAsCj4gKwkJCQlhcmdzLT5zaXplLAo+ICsJ CQkJZHJtX2luZm8tPmdlbV9vcHMtPnByaW1lX2dldF9zZ190YWJsZShvYmopKTsKPiArCWlmIChy ZXQpCj4gKwkJZ290byBmYWlsX2Rlc3Ryb3k7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtmYWls X2Rlc3Ryb3k6Cj4gKwlkcm1fZ2VtX2R1bWJfZGVzdHJveShmaWxwLCBkZXYsIGFyZ3MtPmhhbmRs ZSk7Cj4gK2ZhaWw6Cj4gKwlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZHVtYiBidWZmZXI6 ICVkXG4iLCByZXQpOwo+ICsJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZnJl ZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gQEAgLTM3LDYgKzgzLDcgQEAg c3RhdGljIHZvaWQgZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gIAo+ ICAJZHJtX2luZm8tPmZyb250X29wcy0+ZGJ1Zl9kZXN0cm95KGRybV9pbmZvLT5mcm9udF9pbmZv LAo+ICAJCQl4ZW5fZHJtX2Zyb250X2RidWZfdG9fY29va2llKG9iaikpOwo+ICsJZHJtX2luZm8t PmdlbV9vcHMtPmZyZWVfb2JqZWN0X3VubG9ja2VkKG9iaik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2 b2lkIG9uX2ZyYW1lX2RvbmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiBAQCAtNjAs MzIgKzEwNyw1MiBAQCBzdGF0aWMgdm9pZCBsYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCj4gIHN0YXRpYyBpbnQgZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICB7Cj4gLQlyZXR1cm4gLUVJTlZBTDsKPiArCXN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2ID0gZmlscC0+cHJpdmF0ZV9kYXRhOwo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGZpbGVfcHJpdi0+bWlub3ItPmRldjsKPiArCXN0cnVjdCB4ZW5fZHJtX2Zy b250X2RybV9pbmZvICpkcm1faW5mbyA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwo+ICsJcmV0dXJu IGRybV9pbmZvLT5nZW1fb3BzLT5tbWFwKGZpbHAsIHZtYSk7CgpVaCwgc28gMSBtaWRsYXllciBm b3IgdGhlIGttcyBzdHVmZiBhbmQgYW5vdGhlciBtaWRsYXllciBmb3IgdGhlIGdlbQpzdHVmZi4g VGhhdCdzIHdheSB0b28gbXVjaCBpbmRpcmVjdGlvbi4KCj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1 Y3Qgc2dfdGFibGUgKnByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aikKPiAgewo+IC0JcmV0dXJuIE5VTEw7Cj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5m byAqZHJtX2luZm87Cj4gKwo+ICsJZHJtX2luZm8gPSBvYmotPmRldi0+ZGV2X3ByaXZhdGU7Cj4g KwlyZXR1cm4gZHJtX2luZm8tPmdlbV9vcHMtPnByaW1lX2dldF9zZ190YWJsZShvYmopOwo+ICB9 Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpwcmltZV9pbXBvcnRfc2dfdGFi bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICphdHRhY2gsIHN0cnVjdCBzZ190YWJsZSAqc2d0KQo+ICB7Cj4gLQlyZXR1cm4gTlVMTDsKPiAr CXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbzsKPiArCj4gKwlkcm1faW5m byA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlyZXR1cm4gZHJtX2luZm8tPmdlbV9vcHMtPnByaW1l X2ltcG9ydF9zZ190YWJsZShkZXYsIGF0dGFjaCwgc2d0KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgKnByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAtCXJldHVy biBOVUxMOwo+ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvOwo+ICsK PiArCWRybV9pbmZvID0gb2JqLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJcmV0dXJuIGRybV9pbmZv LT5nZW1fb3BzLT5wcmltZV92bWFwKG9iaik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHByaW1l X3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpCj4gIHsKPiAr CXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbzsKPiArCj4gKwlkcm1faW5m byA9IG9iai0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCWRybV9pbmZvLT5nZW1fb3BzLT5wcmltZV92 dW5tYXAob2JqLCB2YWRkcik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgcHJpbWVfbW1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIHsK PiAtCXJldHVybiAtRUlOVkFMOwo+ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRy bV9pbmZvOwo+ICsKPiArCWRybV9pbmZvID0gb2JqLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJcmV0 dXJuIGRybV9pbmZvLT5nZW1fb3BzLT5wcmltZV9tbWFwKG9iaiwgdm1hKTsKPiAgfQo+ICAKPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgeGVuZHJtX2ZvcHMgPSB7Cj4gQEAg LTE0Nyw2ICsyMTQsNyBAQCBpbnQgeGVuX2RybV9mcm9udF9kcnZfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiwKPiAgCj4gIAlkcm1faW5mby0+ZnJvbnRfb3BzID0gZnJvbnRfb3Bz Owo+ICAJZHJtX2luZm8tPmZyb250X29wcy0+b25fZnJhbWVfZG9uZSA9IG9uX2ZyYW1lX2RvbmU7 Cj4gKwlkcm1faW5mby0+Z2VtX29wcyA9IHhlbl9kcm1fZnJvbnRfZ2VtX2dldF9vcHMoKTsKPiAg CWRybV9pbmZvLT5mcm9udF9pbmZvID0gY2ZnLT5mcm9udF9pbmZvOwo+ICAKPiAgCWRldiA9IGRy bV9kZXZfYWxsb2MoJnhlbl9kcm1fZHJpdmVyLCAmcGRldi0+ZGV2KTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oCj4gaW5kZXggNTYzMzE4YjE5ZjM0Li4zNDIyOGViODYy NTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oCj4gQEAgLTQz LDYgKzQzLDcgQEAgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lIHsKPiAgc3RydWN0 IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gewo+ICAJc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAq ZnJvbnRfaW5mbzsKPiAgCXN0cnVjdCB4ZW5fZHJtX2Zyb250X29wcyAqZnJvbnRfb3BzOwo+ICsJ Y29uc3Qgc3RydWN0IHhlbl9kcm1fZnJvbnRfZ2VtX29wcyAqZ2VtX29wczsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkcm1fZGV2Owo+ICAJc3RydWN0IHhlbl9kcm1fZnJvbnRfY2ZnICpjZmc7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzY3ZTA4ZjZhOWVmCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwo+IEBAIC0w LDAgKzEsMzYwIEBACj4gKy8qCj4gKyAqICBYZW4gcGFyYS12aXJ0dWFsIERSTSBkZXZpY2UKPiAr ICoKPiArICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKPiArICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsg KiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAo+ICsgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIENvcHlyaWdodCAo QykgMjAxNi0yMDE4IEVQQU0gU3lzdGVtcyBJbmMuCj4gKyAqCj4gKyAqIEF1dGhvcjogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+ICsg Ki8KPiArCj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2dlbS5oIgo+ICsKPiArI2luY2x1ZGUg PGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zY2F0dGVy bGlzdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4KPiArCj4gKyNpbmNsdWRlIDx4 ZW4vYmFsbG9vbi5oPgo+ICsKPiArI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQuaCIKPiArI2luY2x1 ZGUgInhlbl9kcm1fZnJvbnRfZHJ2LmgiCj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X3NoYnVm LmgiCj4gKwo+ICtzdHJ1Y3QgeGVuX2dlbV9vYmplY3Qgewo+ICsJc3RydWN0IGRybV9nZW1fb2Jq ZWN0IGJhc2U7Cj4gKwo+ICsJc2l6ZV90IG51bV9wYWdlczsKPiArCXN0cnVjdCBwYWdlICoqcGFn ZXM7Cj4gKwo+ICsJLyogc2V0IGZvciBidWZmZXJzIGFsbG9jYXRlZCBieSB0aGUgYmFja2VuZCAq Lwo+ICsJYm9vbCBiZV9hbGxvYzsKPiArCj4gKwkvKiB0aGlzIGlzIGZvciBpbXBvcnRlZCBQUklN RSBidWZmZXIgKi8KPiArCXN0cnVjdCBzZ190YWJsZSAqc2d0X2ltcG9ydGVkOwo+ICt9Owo+ICsK PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnRvX3hlbl9nZW1fb2JqKAo+ ICsJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikKPiArewo+ICsJcmV0dXJuIGNvbnRh aW5lcl9vZihnZW1fb2JqLCBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QsIGJhc2UpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGdlbV9hbGxvY19wYWdlc19hcnJheShzdHJ1Y3QgeGVuX2dlbV9vYmplY3Qg Knhlbl9vYmosCj4gKwkJc2l6ZV90IGJ1Zl9zaXplKQo+ICt7Cj4gKwl4ZW5fb2JqLT5udW1fcGFn ZXMgPSBESVZfUk9VTkRfVVAoYnVmX3NpemUsIFBBR0VfU0laRSk7Cj4gKwl4ZW5fb2JqLT5wYWdl cyA9IGt2bWFsbG9jX2FycmF5KHhlbl9vYmotPm51bV9wYWdlcywKPiArCQkJc2l6ZW9mKHN0cnVj dCBwYWdlICopLCBHRlBfS0VSTkVMKTsKPiArCXJldHVybiB4ZW5fb2JqLT5wYWdlcyA9PSBOVUxM ID8gLUVOT01FTSA6IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGdlbV9mcmVlX3BhZ2VzX2Fy cmF5KHN0cnVjdCB4ZW5fZ2VtX29iamVjdCAqeGVuX29iaikKPiArewo+ICsJa3ZmcmVlKHhlbl9v YmotPnBhZ2VzKTsKPiArCXhlbl9vYmotPnBhZ2VzID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCB4ZW5fZ2VtX29iamVjdCAqZ2VtX2NyZWF0ZV9vYmooc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiArCXNpemVfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnhl bl9vYmo7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXhlbl9vYmogPSBremFsbG9jKHNpemVvZigqeGVu X29iaiksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCF4ZW5fb2JqKQo+ICsJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+ICsKPiArCXJldCA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmeGVuX29i ai0+YmFzZSwgc2l6ZSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWtmcmVlKHhlbl9vYmopOwo+ ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHhlbl9vYmo7Cj4g K30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKmdlbV9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpCj4gK3sKPiArCXN0cnVjdCB4ZW5fZHJtX2Zy b250X2RybV9pbmZvICpkcm1faW5mbyA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgeGVu X2dlbV9vYmplY3QgKnhlbl9vYmo7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXNpemUgPSByb3VuZF91 cChzaXplLCBQQUdFX1NJWkUpOwo+ICsJeGVuX29iaiA9IGdlbV9jcmVhdGVfb2JqKGRldiwgc2l6 ZSk7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoeGVuX29iaikpCj4gKwkJcmV0dXJuIHhlbl9vYmo7 Cj4gKwo+ICsJaWYgKGRybV9pbmZvLT5jZmctPmJlX2FsbG9jKSB7Cj4gKwkJLyoKPiArCQkgKiBi YWNrZW5kIHdpbGwgYWxsb2NhdGUgc3BhY2UgZm9yIHRoaXMgYnVmZmVyLCBzbwo+ICsJCSAqIG9u bHkgYWxsb2NhdGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gcGFnZXMKPiArCQkgKi8KPiArCQl4ZW5f b2JqLT5iZV9hbGxvYyA9IHRydWU7Cj4gKwkJcmV0ID0gZ2VtX2FsbG9jX3BhZ2VzX2FycmF5KHhl bl9vYmosIHNpemUpOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCWdlbV9mcmVlX3BhZ2VzX2Fy cmF5KHhlbl9vYmopOwo+ICsJCQlnb3RvIGZhaWw7Cj4gKwkJfQo+ICsKPiArCQlyZXQgPSBhbGxv Y194ZW5iYWxsb29uZWRfcGFnZXMoeGVuX29iai0+bnVtX3BhZ2VzLAo+ICsJCQkJeGVuX29iai0+ cGFnZXMpOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCURSTV9FUlJPUigiQ2Fubm90IGFsbG9j YXRlICV6dSBiYWxsb29uZWQgcGFnZXM6ICVkXG4iLAo+ICsJCQkJCXhlbl9vYmotPm51bV9wYWdl cywgcmV0KTsKPiArCQkJZ290byBmYWlsOwo+ICsJCX0KPiArCj4gKwkJcmV0dXJuIHhlbl9vYmo7 Cj4gKwl9Cj4gKwkvKgo+ICsJICogbmVlZCB0byBhbGxvY2F0ZSBiYWNraW5nIHBhZ2VzIG5vdywg c28gd2UgY2FuIHNoYXJlIHRob3NlCj4gKwkgKiB3aXRoIHRoZSBiYWNrZW5kCj4gKwkgKi8KPiAr CXhlbl9vYmotPm51bV9wYWdlcyA9IERJVl9ST1VORF9VUChzaXplLCBQQUdFX1NJWkUpOwo+ICsJ eGVuX29iai0+cGFnZXMgPSBkcm1fZ2VtX2dldF9wYWdlcygmeGVuX29iai0+YmFzZSk7Cj4gKwlp ZiAoSVNfRVJSX09SX05VTEwoeGVuX29iai0+cGFnZXMpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih4 ZW5fb2JqLT5wYWdlcyk7Cj4gKwkJeGVuX29iai0+cGFnZXMgPSBOVUxMOwo+ICsJCWdvdG8gZmFp bDsKPiArCX0KPiArCj4gKwlyZXR1cm4geGVuX29iajsKPiArCj4gK2ZhaWw6Cj4gKwlEUk1fRVJS T1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgd2l0aCBzaXplICV6dVxuIiwgc2l6ZSk7Cj4g KwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHhlbl9nZW1f b2JqZWN0ICpnZW1fY3JlYXRlX3dpdGhfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlscCwKPiAr CQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgdWludDMyX3QgKmhhbmRsZSkK PiArewo+ICsJc3RydWN0IHhlbl9nZW1fb2JqZWN0ICp4ZW5fb2JqOwo+ICsJc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpnZW1fb2JqOwo+ICsJaW50IHJldDsKPiArCj4gKwl4ZW5fb2JqID0gZ2VtX2Ny ZWF0ZShkZXYsIHNpemUpOwo+ICsJaWYgKElTX0VSUl9PUl9OVUxMKHhlbl9vYmopKQo+ICsJCXJl dHVybiB4ZW5fb2JqOwo+ICsKPiArCWdlbV9vYmogPSAmeGVuX29iai0+YmFzZTsKPiArCXJldCA9 IGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxwLCBnZW1fb2JqLCBoYW5kbGUpOwo+ICsJLyogaGFu ZGxlIGhvbGRzIHRoZSByZWZlcmVuY2UgKi8KPiArCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNl X3VubG9ja2VkKGdlbV9vYmopOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiArCj4gKwlyZXR1cm4geGVuX29iajsKPiArfQo+ICsKPiArc3RhdGljIGludCBnZW1f ZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxwLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICsJCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykKPiArewo+ICsJc3RydWN0 IHhlbl9nZW1fb2JqZWN0ICp4ZW5fb2JqOwo+ICsKPiArCWFyZ3MtPnBpdGNoID0gRElWX1JPVU5E X1VQKGFyZ3MtPndpZHRoICogYXJncy0+YnBwLCA4KTsKPiArCWFyZ3MtPnNpemUgPSBhcmdzLT5w aXRjaCAqIGFyZ3MtPmhlaWdodDsKPiArCj4gKwl4ZW5fb2JqID0gZ2VtX2NyZWF0ZV93aXRoX2hh bmRsZShmaWxwLCBkZXYsIGFyZ3MtPnNpemUsICZhcmdzLT5oYW5kbGUpOwo+ICsJaWYgKElTX0VS Ul9PUl9OVUxMKHhlbl9vYmopKQo+ICsJCXJldHVybiB4ZW5fb2JqID09IE5VTEwgPyAtRU5PTUVN IDogUFRSX0VSUih4ZW5fb2JqKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikKPiAr ewo+ICsJc3RydWN0IHhlbl9nZW1fb2JqZWN0ICp4ZW5fb2JqID0gdG9feGVuX2dlbV9vYmooZ2Vt X29iaik7Cj4gKwo+ICsJaWYgKHhlbl9vYmotPmJhc2UuaW1wb3J0X2F0dGFjaCkgewo+ICsJCWRy bV9wcmltZV9nZW1fZGVzdHJveSgmeGVuX29iai0+YmFzZSwgeGVuX29iai0+c2d0X2ltcG9ydGVk KTsKPiArCQlnZW1fZnJlZV9wYWdlc19hcnJheSh4ZW5fb2JqKTsKPiArCX0gZWxzZSB7Cj4gKwkJ aWYgKHhlbl9vYmotPnBhZ2VzKSB7Cj4gKwkJCWlmICh4ZW5fb2JqLT5iZV9hbGxvYykgewo+ICsJ CQkJZnJlZV94ZW5iYWxsb29uZWRfcGFnZXMoeGVuX29iai0+bnVtX3BhZ2VzLAo+ICsJCQkJCQl4 ZW5fb2JqLT5wYWdlcyk7Cj4gKwkJCQlnZW1fZnJlZV9wYWdlc19hcnJheSh4ZW5fb2JqKTsKPiAr CQkJfSBlbHNlCj4gKwkJCQlkcm1fZ2VtX3B1dF9wYWdlcygmeGVuX29iai0+YmFzZSwKPiArCQkJ CQkJeGVuX29iai0+cGFnZXMsIHRydWUsIGZhbHNlKTsKPiArCQl9Cj4gKwl9Cj4gKwlkcm1fZ2Vt X29iamVjdF9yZWxlYXNlKGdlbV9vYmopOwo+ICsJa2ZyZWUoeGVuX29iaik7Cj4gK30KPiArCj4g K3N0YXRpYyBzdHJ1Y3QgcGFnZSAqKmdlbV9nZXRfcGFnZXMoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpnZW1fb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnhlbl9vYmogPSB0b194 ZW5fZ2VtX29iaihnZW1fb2JqKTsKPiArCj4gKwlyZXR1cm4geGVuX29iai0+cGFnZXM7Cj4gK30K PiArCj4gK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmdlbV9nZXRfc2dfdGFibGUoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnhl bl9vYmogPSB0b194ZW5fZ2VtX29iaihnZW1fb2JqKTsKPiArCj4gKwlpZiAoIXhlbl9vYmotPnBh Z2VzKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9f c2coeGVuX29iai0+cGFnZXMsIHhlbl9vYmotPm51bV9wYWdlcyk7Cj4gK30KPiArCj4gK3N0YXRp YyBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiArCQlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsIHN0cnVj dCBzZ190YWJsZSAqc2d0KQo+ICt7Cj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAq ZHJtX2luZm8gPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IHhlbl9nZW1fb2JqZWN0ICp4 ZW5fb2JqOwo+ICsJc2l6ZV90IHNpemU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXNpemUgPSBhdHRh Y2gtPmRtYWJ1Zi0+c2l6ZTsKPiArCXhlbl9vYmogPSBnZW1fY3JlYXRlX29iaihkZXYsIHNpemUp Owo+ICsJaWYgKElTX0VSUl9PUl9OVUxMKHhlbl9vYmopKQo+ICsJCXJldHVybiBFUlJfQ0FTVCh4 ZW5fb2JqKTsKPiArCj4gKwlyZXQgPSBnZW1fYWxsb2NfcGFnZXNfYXJyYXkoeGVuX29iaiwgc2l6 ZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICsKPiArCXhl bl9vYmotPnNndF9pbXBvcnRlZCA9IHNndDsKPiArCj4gKwlyZXQgPSBkcm1fcHJpbWVfc2dfdG9f cGFnZV9hZGRyX2FycmF5cyhzZ3QsIHhlbl9vYmotPnBhZ2VzLAo+ICsJCQlOVUxMLCB4ZW5fb2Jq LT5udW1fcGFnZXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsK PiArCj4gKwkvKgo+ICsJICogTi5CLiBBbHRob3VnaCB3ZSBoYXZlIGFuIEFQSSB0byBjcmVhdGUg ZGlzcGxheSBidWZmZXIgZnJvbSBzZ3QKPiArCSAqIHdlIHVzZSBwYWdlcyBBUEksIGJlY2F1c2Ug d2Ugc3RpbGwgbmVlZCB0aG9zZSBmb3IgR0VNIGhhbmRsaW5nLAo+ICsJICogZS5nLiBmb3IgbWFw cGluZyBldGMuCj4gKwkgKi8KPiArCXJldCA9IGRybV9pbmZvLT5mcm9udF9vcHMtPmRidWZfY3Jl YXRlX2Zyb21fcGFnZXMoCj4gKwkJCWRybV9pbmZvLT5mcm9udF9pbmZvLAo+ICsJCQl4ZW5fZHJt X2Zyb250X2RidWZfdG9fY29va2llKCZ4ZW5fb2JqLT5iYXNlKSwKPiArCQkJMCwgMCwgMCwgc2l6 ZSwgeGVuX29iai0+cGFnZXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiArCj4gKwlEUk1fREVCVUcoIkltcG9ydGVkIGJ1ZmZlciBvZiBzaXplICV6dSB3aXRo IG5lbnRzICV1XG4iLAo+ICsJCXNpemUsIHNndC0+bmVudHMpOwo+ICsKPiArCXJldHVybiAmeGVu X29iai0+YmFzZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBnZW1fbW1hcF9vYmooc3RydWN0IHhl bl9nZW1fb2JqZWN0ICp4ZW5fb2JqLAo+ICsJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ ICt7Cj4gKwl1bnNpZ25lZCBsb25nIGFkZHIgPSB2bWEtPnZtX3N0YXJ0Owo+ICsJaW50IGk7Cj4g Kwo+ICsJLyoKPiArCSAqIGNsZWFyIHRoZSBWTV9QRk5NQVAgZmxhZyB0aGF0IHdhcyBzZXQgYnkg ZHJtX2dlbV9tbWFwKCksIGFuZCBzZXQgdGhlCj4gKwkgKiB2bV9wZ29mZiAodXNlZCBhcyBhIGZh a2UgYnVmZmVyIG9mZnNldCBieSBEUk0pIHRvIDAgYXMgd2Ugd2FudCB0byBtYXAKPiArCSAqIHRo ZSB3aG9sZSBidWZmZXIuCj4gKwkgKi8KPiArCXZtYS0+dm1fZmxhZ3MgJj0gflZNX1BGTk1BUDsK PiArCXZtYS0+dm1fZmxhZ3MgfD0gVk1fTUlYRURNQVA7Cj4gKwl2bWEtPnZtX3Bnb2ZmID0gMDsK PiArCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bV9nZXRfcGFnZV9w cm90KHZtYS0+dm1fZmxhZ3MpKTsKPiArCj4gKwkvKgo+ICsJICogdm1fb3BlcmF0aW9uc19zdHJ1 Y3QuZmF1bHQgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBpZiBDUFUgYWNjZXNzCj4gKwkgKiB0byBW TSBpcyBoZXJlLiBGb3IgR1BVcyB0aGlzIGlzbid0IHRoZSBjYXNlLCBiZWNhdXNlIENQVQo+ICsJ ICogZG9lc24ndCB0b3VjaCB0aGUgbWVtb3J5LiBJbnNlcnQgcGFnZXMgbm93LCBzbyBib3RoIENQ VSBhbmQgR1BVIGFyZQo+ICsJICogaGFwcHkuCj4gKwkgKiBGSVhNRTogYXMgd2UgaW5zZXJ0IGFs bCB0aGUgcGFnZXMgbm93IHRoZW4gbm8gLmZhdWx0IGhhbmRsZXIgbXVzdAo+ICsJICogYmUgY2Fs bGVkLCBzbyBkb24ndCBwcm92aWRlIG9uZQo+ICsJICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgeGVu X29iai0+bnVtX3BhZ2VzOyBpKyspIHsKPiArCQlpbnQgcmV0Owo+ICsKPiArCQlyZXQgPSB2bV9p bnNlcnRfcGFnZSh2bWEsIGFkZHIsIHhlbl9vYmotPnBhZ2VzW2ldKTsKPiArCQlpZiAocmV0IDwg MCkgewo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbnNlcnQgcGFnZXMgaW50byB2bWE6ICVk XG4iLCByZXQpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJYWRkciArPSBQQUdF X1NJWkU7Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBnZW1fbW1h cChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gK3sKPiAr CXN0cnVjdCB4ZW5fZ2VtX29iamVjdCAqeGVuX29iajsKPiArCXN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZ2VtX29iajsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX2dlbV9tbWFwKGZpbHAs IHZtYSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWdlbV9vYmog PSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKPiArCXhlbl9vYmogPSB0b194ZW5fZ2VtX29iaihnZW1f b2JqKTsKPiArCXJldHVybiBnZW1fbW1hcF9vYmooeGVuX29iaiwgdm1hKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgKmdlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29i aikKPiArewo+ICsJc3RydWN0IHhlbl9nZW1fb2JqZWN0ICp4ZW5fb2JqID0gdG9feGVuX2dlbV9v YmooZ2VtX29iaik7Cj4gKwo+ICsJaWYgKCF4ZW5fb2JqLT5wYWdlcykKPiArCQlyZXR1cm4gTlVM TDsKPiArCj4gKwlyZXR1cm4gdm1hcCh4ZW5fb2JqLT5wYWdlcywgeGVuX29iai0+bnVtX3BhZ2Vz LAo+ICsJCQlWTV9NQVAsIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdlbV9vYmosIHZvaWQgKnZhZGRyKQo+ICt7Cj4gKwl2dW5tYXAodmFkZHIpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGdlbV9wcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29i aiwKPiArCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICt7Cj4gKwlzdHJ1Y3QgeGVuX2dl bV9vYmplY3QgKnhlbl9vYmo7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGRybV9nZW1fbW1h cF9vYmooZ2VtX29iaiwgZ2VtX29iai0+c2l6ZSwgdm1hKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJeGVuX29iaiA9IHRvX3hlbl9nZW1fb2JqKGdlbV9vYmopOwo+ ICsJcmV0dXJuIGdlbV9tbWFwX29iaih4ZW5fb2JqLCB2bWEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHhlbl9kcm1fZnJvbnRfZ2VtX29wcyB4ZW5fZHJtX2dlbV9vcHMgPSB7Cj4g KwkuZnJlZV9vYmplY3RfdW5sb2NrZWQgID0gZ2VtX2ZyZWVfb2JqZWN0LAo+ICsJLnByaW1lX2dl dF9zZ190YWJsZSAgICA9IGdlbV9nZXRfc2dfdGFibGUsCj4gKwkucHJpbWVfaW1wb3J0X3NnX3Rh YmxlID0gZ2VtX2ltcG9ydF9zZ190YWJsZSwKPiArCj4gKwkucHJpbWVfdm1hcCAgICAgICAgICAg ID0gZ2VtX3ByaW1lX3ZtYXAsCj4gKwkucHJpbWVfdnVubWFwICAgICAgICAgID0gZ2VtX3ByaW1l X3Z1bm1hcCwKPiArCS5wcmltZV9tbWFwICAgICAgICAgICAgPSBnZW1fcHJpbWVfbW1hcCwKPiAr Cj4gKwkuZHVtYl9jcmVhdGUgICAgICAgICAgID0gZ2VtX2R1bWJfY3JlYXRlLAo+ICsKPiArCS5t bWFwICAgICAgICAgICAgICAgICAgPSBnZW1fbW1hcCwKPiArCj4gKwkuZ2V0X3BhZ2VzICAgICAg ICAgICAgID0gZ2VtX2dldF9wYWdlcywKPiArfTsKPiArCj4gK2NvbnN0IHN0cnVjdCB4ZW5fZHJt X2Zyb250X2dlbV9vcHMgKnhlbl9kcm1fZnJvbnRfZ2VtX2dldF9vcHModm9pZCkKPiArewo+ICsJ cmV0dXJuICZ4ZW5fZHJtX2dlbV9vcHM7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJt X2Zyb250X2dlbS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAu LmQxZTE3MTFjYzNmYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGVu L3hlbl9kcm1fZnJvbnRfZ2VtLmgKPiBAQCAtMCwwICsxLDQ2IEBACj4gKy8qCj4gKyAqICBYZW4g cGFyYS12aXJ0dWFsIERSTSBkZXZpY2UKPiArICoKPiArICogICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Cj4gKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAq ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQo+ICsgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEVQQU0gU3lzdGVtcyBJbmMu Cj4gKyAqCj4gKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9h bmRydXNoY2hlbmtvQGVwYW0uY29tPgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fRFJNX0ZS T05UX0dFTV9ICj4gKyNkZWZpbmUgX19YRU5fRFJNX0ZST05UX0dFTV9ICj4gKwo+ICsjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPiArCj4gK3N0cnVjdCB4ZW5fZHJtX2Zyb250X2dlbV9vcHMgewo+ICsJ dm9pZCAoKmZyZWVfb2JqZWN0X3VubG9ja2VkKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7 Cj4gKwo+ICsJc3RydWN0IHNnX3RhYmxlICooKnByaW1lX2dldF9zZ190YWJsZSkoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopOwo+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICooKnByaW1lX2lt cG9ydF9zZ190YWJsZSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ICsJCQlzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7Cj4gKwl2 b2lkICooKnByaW1lX3ZtYXApKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiArCXZvaWQg KCpwcmltZV92dW5tYXApKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7 Cj4gKwlpbnQgKCpwcmltZV9tbWFwKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPiArCQkJ c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ICsKPiArCWludCAoKmR1bWJfY3JlYXRlKShz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJ c3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKTsKPiArCj4gKwlpbnQgKCptbWFwKShz dHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ICsKPiArCXN0 cnVjdCBwYWdlICoqKCpnZXRfcGFnZXMpKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiAr fTsKPiArCj4gK2NvbnN0IHN0cnVjdCB4ZW5fZHJtX2Zyb250X2dlbV9vcHMgKnhlbl9kcm1fZnJv bnRfZ2VtX2dldF9vcHModm9pZCk7Cj4gKwo+ICsjZW5kaWYgLyogX19YRU5fRFJNX0ZST05UX0dF TV9IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9n ZW1fY21hLmMgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtX2NtYS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjVmZmNiZmE2NTJkNQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRf Z2VtX2NtYS5jCj4gQEAgLTAsMCArMSw5MyBAQAo+ICsvKgo+ICsgKiAgWGVuIHBhcmEtdmlydHVh bCBEUk0gZGV2aWNlCj4gKyAqCj4gKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQo+ICsgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KPiArICoKPiArICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAr ICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5jLgo+ICsgKgo+ICsg KiBBdXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5r b0BlcGFtLmNvbT4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4K PiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlICJ4 ZW5fZHJtX2Zyb250LmgiCj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Rydi5oIgo+ICsjaW5j bHVkZSAieGVuX2RybV9mcm9udF9nZW0uaCIKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdlbV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQlz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsIHN0cnVjdCBzZ190YWJsZSAqc2d0KQo+ ICt7Cj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8gPSBkZXYtPmRl dl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwo+ICsJc3RydWN0 IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iajsKPiArCWludCByZXQ7Cj4gKwo+ICsJZ2VtX29i aiA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZShkZXYsIGF0dGFjaCwgc2d0KTsK PiArCWlmIChJU19FUlJfT1JfTlVMTChnZW1fb2JqKSkKPiArCQlyZXR1cm4gZ2VtX29iajsKPiAr Cj4gKwljbWFfb2JqID0gdG9fZHJtX2dlbV9jbWFfb2JqKGdlbV9vYmopOwo+ICsKPiArCXJldCA9 IGRybV9pbmZvLT5mcm9udF9vcHMtPmRidWZfY3JlYXRlX2Zyb21fc2d0KAo+ICsJCQlkcm1faW5m by0+ZnJvbnRfaW5mbywKPiArCQkJeGVuX2RybV9mcm9udF9kYnVmX3RvX2Nvb2tpZShnZW1fb2Jq KSwKPiArCQkJMCwgMCwgMCwgZ2VtX29iai0+c2l6ZSwKPiArCQkJZHJtX2dlbV9jbWFfcHJpbWVf Z2V0X3NnX3RhYmxlKGdlbV9vYmopKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiBFUlJf UFRSKHJldCk7Cj4gKwo+ICsJRFJNX0RFQlVHKCJJbXBvcnRlZCBDTUEgYnVmZmVyIG9mIHNpemUg JXp1XG4iLCBnZW1fb2JqLT5zaXplKTsKPiArCj4gKwlyZXR1cm4gZ2VtX29iajsKPiArfQo+ICsK PiArc3RhdGljIGludCBnZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxwLCBzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdz KQo+ICt7Cj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8gPSBkZXYt PmRldl9wcml2YXRlOwo+ICsKPiArCWlmIChkcm1faW5mby0+Y2ZnLT5iZV9hbGxvYykgewo+ICsJ CS8qIFRoaXMgdXNlLWNhc2UgaXMgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHByb2JhYmx5IHdvbid0 IGJlICovCj4gKwkJRFJNX0VSUk9SKCJCYWNrZW5kIGFsbG9jYXRlZCBidWZmZXJzIGFuZCBDTUEg aGVscGVycyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGUgc2FtZSB0aW1lXG4iKTsKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXR1cm4gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUo ZmlscCwgZGV2LCBhcmdzKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBwYWdlICoqZ2VtX2dl dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCj4gK3sKPiArCXJldHVybiBO VUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHhlbl9kcm1fZnJvbnRfZ2VtX29w cyB4ZW5fZHJtX2Zyb250X2dlbV9jbWFfb3BzID0gewo+ICsJLmZyZWVfb2JqZWN0X3VubG9ja2Vk ICA9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LAo+ICsJLnByaW1lX2dldF9zZ190YWJsZSAgICA9 IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKPiArCS5wcmltZV9pbXBvcnRfc2dfdGFi bGUgPSBnZW1faW1wb3J0X3NnX3RhYmxlLAo+ICsKPiArCS5wcmltZV92bWFwICAgICAgICAgICAg PSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+ICsJLnByaW1lX3Z1bm1hcCAgICAgICAgICA9IGRy bV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwKPiArCS5wcmltZV9tbWFwICAgICAgICAgICAgPSBkcm1f Z2VtX2NtYV9wcmltZV9tbWFwLAo+ICsKPiArCS5kdW1iX2NyZWF0ZSAgICAgICAgICAgPSBnZW1f ZHVtYl9jcmVhdGUsCj4gKwo+ICsJLm1tYXAgICAgICAgICAgICAgICAgICA9IGRybV9nZW1fY21h X21tYXAsCj4gKwo+ICsJLmdldF9wYWdlcyAgICAgICAgICAgICA9IGdlbV9nZXRfcGFnZXMsCj4g K307CgpBZ2FpbiBxdWl0ZSBhIG1pZGxheWVyIHlvdSBoYXZlIGhlcmUuIFBsZWFzZSBpbmxpbmUg dGhpcyB0byBhdm9pZApjb25mdXNpb24gZm9yIG90aGVyIHBlb3BsZSAoc2luY2UgaXQgbG9va3Mg bGlrZSB5b3Ugb25seSBoYXZlIDEKaW1wbGVtZW50YXRpb24pLgoKPiArCj4gK2NvbnN0IHN0cnVj dCB4ZW5fZHJtX2Zyb250X2dlbV9vcHMgKnhlbl9kcm1fZnJvbnRfZ2VtX2dldF9vcHModm9pZCkK PiArewo+ICsJcmV0dXJuICZ4ZW5fZHJtX2Zyb250X2dlbV9jbWFfb3BzOwo+ICt9Cj4gLS0gCj4g Mi43LjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3hlbi1kZXZlbA==