From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 21/22] drm/atomic: Introduce drm_atomic_helper_duplicate_commited_state() Date: Fri, 7 Jul 2017 16:21:57 +0300 Message-ID: <20170707132157.GD12629@intel.com> References: <20170706202442.5394-1-ville.syrjala@linux.intel.com> <20170706202442.5394-22-ville.syrjala@linux.intel.com> <20170707120338.tahioabaifi7gpi7@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170707120338.tahioabaifi7gpi7@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdWwgMDcsIDIwMTcgYXQgMDI6MDM6MzhQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIEp1bCAwNiwgMjAxNyBhdCAxMToyNDo0MVBNICswMzAwLCB2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAKPiA+IEZvciBpOTE1IEdQVSByZXNl dCBoYW5kbGluZyB3ZSdsbCB3YW50IHRvIGJlIGFibGUgdG8gZHVwbGljYXRlIHRoZSBzdGF0ZQo+ ID4gdGhhdCB3YXMgbGFzdCBjb21taXRlZCB0byB0aGUgaGFyZHdhcmUuIEZvciB0aGF0IHB1cnBv c2UgbGV0J3Mgc3RhcnQgdG8KPiA+IHRyYWNrIHRoZSBjb21taXRlZCBzdGF0ZSBmb3IgZWFjaCBv YmplY3QgYW5kIHByb3ZpZGUgYSB3YXkgdG8gZHVwbGljYXRlCj4gPiB0aGUgY29tbW1pdGVkIHN0 YXRlIGludG8gYSBuZXcgZHJtX2F0b21pY19zdGF0ZS4gVGhlIGxvY2tpbmcgZm9yCj4gPiAuY29t bWl0ZWRfc3RhdGUgbXVzdCB0byBiZSBwcm92aWRlZCBieSB0aGUgZHJpdmVyLgo+ID4gCj4gPiBk cm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfY29tbWl0ZWRfc3RhdGUoKSBkdXBsaWNhdGVzIHRo ZSBzdGF0ZQo+ID4gdG8gYm90aCBvbGRfc3RhdGUgYW5kIG5ld19zdGF0ZS4gRm9yIHRoZSBwdXJw b3NlcyBvZiBpOTE1IEdQVSByZXNldCB3ZQo+ID4gd291bGQgb25seSBuZWVkIG9uZSBvZiB0aGVt LCBidXQgd2UgYWN0dWFsbHkgbmVlZCB0d28gdG9wIGxldmVsIHN0YXRlczsKPiA+IG9uZSBmb3Ig ZGlzYWJsaW5nIGV2ZXJ5dGhpbmcgKHdoaWNoIHdvdWxkIG5lZWQgdGhlIGR1cGxpY2F0ZWQgc3Rh dGUgdG8KPiA+IGJlIG9sZF9zdGF0ZSksIGFuZCBhbm90aGVyIHRvIHJlZW5hYmxlIGV2ZXJ5dGhp bmcgKHdoaWNoIHdvdWxkIG5lZWQgdGhlCj4gPiBkdXBsaWNhdGVkIHN0YXRlIHRvIGJlIG5ld19z dGF0ZSkuIFNvIHRvIG1ha2UgaXQgbGVzcyBjb21wbGVzIEkgZmlndXJlZAo+ID4gSSdkIGp1c3Qg YWx3YXlzIGR1cGxpY2F0ZSBib3RoLiBNaWdodCB3YW50IHRvIHJldGhpbmsgdGhpcyBpZiBmb3Ig bm8KPiA+IG90aGVyIHJlYXNvbiB0aGF0IHJlZHVjaW5nIHRoZSBjaGFuY2VzIG9mIG1lbW9yeSBh bGxvY2F0aW9uIGZhaWx1cmUuCj4gPiBEdWUgdG8gdGhlIGRvdWJsZSBzdGF0ZSBkdXBsaWNhdGlv biB3ZSBuZWVkCj4gPiBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbl9jb21taXRlZF9zdGF0ZSgpIHRv IGNsZWFuIHVwIHRoZSBkdXBsaWNhdGVkCj4gPiBvbGRfc3RhdGUgc2luY2UgdGhhdCdzIG5vdCBo YW5kbGVkIGJ5IHRoZSBub3JtYWwgZHJtX2F0b21pY19zdGF0ZQo+ID4gY2xlYW51cCBjb2RlLgo+ ID4gCj4gPiBUT0RPOiBkbyB3ZSB3YW50IHRoaXMgaW4gdGhlIGhlbHBlciwgb3IgbWF5YmUgaXQg c2hvdWxkIGJlIGp1c3QgaW4gaTkxNT8KPiA+IAo+ID4gdjI6IHMvY29tbWl0ZWQvY29tbWl0dGVk LyBldmVyeXdoZXJlIChjaGVja3BhdGNoKQo+ID4gICAgIEhhbmRsZSBzdGF0ZSBkdXBsaWNhdGlv biBlcnJvcnMgYmV0dGVyCj4gPiB2MzogRXZlbiBtb3JlIGNhcmUgaW4gZGVhbGluZyB3aXRoIG1l bW9yeSBhbGxvY2F0aW9uIGVycm9ycwo+ID4gICAgIEhhbmRsZSBwcml2YXRlIG9ianMgdG9vCj4g PiAgICAgRGVhbCB3aXRoIHRoZSBwb3RlbnRpYWwgb3JkZXJpbmcgaXNzdWVzIGJldHdlZW4gc3dh cF9zdGF0ZSgpCj4gPiAgICAgYW5kIGh3X2RvbmUoKSBieSBrZWVwaW5nIHRyYWNrIG9mIHdoaWNo IHN0YXRlIHdhcyBzd2FwcGVkIGluCj4gPiAgICAgbGFzdAo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5 OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IAo+IEkg c3RpbGwgZG9uJ3QgZ2V0IHdoeSB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSB0aGUgY29tbWl0dGVkIHN0 YXRlIGZvciBncHUKPiByZXNldC4gV2hlbiBJIHNhaWQgSSdtIG5vdCBhZ2FpbnN0IGFkZGluZyBh bGwgdGhhdCBjb21wbGV4aXR5IGxvbmctdGVybSBJCj4gbWVhbnQgd2hlbiB3ZSBhY3R1YWxseSBy ZWFsbHkgbmVlZCBpdC4gSW1vIGc0eCBncHUgcmVzZXQgaXNuJ3QgYSBnb29kCj4ganVzdGlmaWNh dGlvbiBmb3IgdGhhdCwgcmV3b3JraW5nIHRoZSBhdG9taWMgd29ybGQgZm9yIHRoYXQgc2VlbXMK PiBtYXNzaXZlbHkgb3V0IG9mIHByb3BvcnRpb24uCgpXZWxsLCBJIHN0aWxsIGRvbid0IHNlZSB3 aGF0J3Mgc28gIm1hc3NpdmUiIGFib3V0IGEgY291cGxlIG9mIGV4dHJhIHN0YXRlCnBvaW50ZXJz IGhhbmdpbmcgYXJvdW5kLgoKQWxzbyB3aGlsZSBkb2luZyB0aGF0IHN0YXRlIGR1cGxpY2F0aW9u IHN0dWZmLCBteSBvbGQgaWRlYSBvZgpzcGxpdHRpbmcgdGhlIGNydGMgZGlzYWJsZSBhbmQgZW5h YmxlIHBoYXNlcyBpbnRvIHNlcGFyYXRlIGF0b21pYwpjb21taXRzIHBvcHBlZCB1cCBhZ2FpbiBp biBteSBoZWFkLiBGb3IgdGhhdCBiZWluZyBhYmxlIHRvIGR1cGxpY2F0ZQphcmJpdHJhcnkgc3Rh dGVzIHdvdWxkIHNlZW0gbGlrZSBhIG5pY2UgdGhpbmcgdG8gaGF2ZS4gU28gdGhlCnJlZmFjdG9y aW5nIEkgaGFkIHRvIGRvIGNhbiBoYXZlIG90aGVyIHVzZXMuCgo+IFdoeSBleGFjdGx5IGNhbid0 IHdlIGRvIHRoaXMgc2ltcGxlcj8gSSBzdGlsbCBkb24ndCBnZXQgdGhhdCBwYXJ0LiBJcwo+IHRo ZXJlIHJlYWxseSBubyBzb2x1dGlvbiB0aGF0IGRvZXNuJ3QgYnJlYWsgYXRvbWljJ3MgY3VycmVu dCBhc3N1bXB0aW9uCj4gdGhhdCBjb21taXRzIGFyZSBmdWxseSBvcmRlcmVkIG9uIGEgZ2l2ZW4g Y3J0Yz8KCkZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIG9sZCBhbmQgbmV3IHN0YXRlcyBp dCBkb2Vzbid0IGFjdHVhbGx5CmJyZWFrIHRoYXQuIFRoZSBjb21taXRzIGRvbmUgZnJvbSB0aGUg cmVzZXQgcGF0aCBhcmUgZXNzZW50aWFsbHkKaW52aXNpYmxlIHRvIHRoZSBub3JtYWwgbW9kZXNl dCBvcGVyYXRpb24uCgpUaGUgb25lIGFsdGVybmF0aXZlIHByb3Bvc2VkIGlkZWEgb2YgYWxsb3dp bmcgZ2VtIGFuZCBrbXMgc2lkZXMgZ28Kb3V0IG9mIHdoYWNrIHNjYXJlcyBtZSBhIGJpdC4gSSB0 aGluayB0aGF0IG1pZ2h0IGxhbmQgdXMgaW4gbW9yZQp0cm91YmxlIHdoZW4gSSBmaW5hbGx5IGdl dCBhcm91bmQgdG8gbWFraW5nIHRoZSB2aWRlbyBvdmVybGF5IGEKZHJtX3BsYW5lLgoKQW5kIEkg dGhpbmsgdHJ5aW5nIHRvIGtlZXAgdGhlIEdQVSByZXNldCBwYXRocyBhcyBzaW1pbGFyIGFzIHBv c3NpYmxlCmJldHdlZW4gYWxsIHRoZSBwbGF0Zm9ybXMgd291bGQgYmUgYSBuaWNlIHRoaW5nLiBK dXN0IHdoYWNraW5nCmV2ZXJ5dGhpbmcgb24gdGhlIGhlYWQgd2l0aCBhIGhhbW1lciBvbiBvbmUg cGxhdGZvcm0gYnV0IG5vdCBvbgphbm90aGVyIG9uZSBzZWVtcyB0byBtZSBsaWtlIGV4dHJhIHZh cmlhdGlvbiBpbiBiZWhhdmlvdXIgdGhhdCB3ZQpkb24ndCBuZWNlc3NhcmlseSB3YW50LgoKQnV0 IGxpa2UgSSBzYWlkLCBpZiBzb21lb25lIGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRp b24gSQpwcm9iYWJseSB3b3VsZG4ndCBvYmplY3QgdG9vIG11Y2guIEl0J3Mgbm90IGdvaW5nIHRv IGJlIGNvbWluZyBmcm9tIG1lCnRob3VnaCBzaW5jZSBJIGhhdmUgcGxlbnR5IG9mIG90aGVyIHRo aW5ncyB0byBkbyBhbmQgdmFjYXRpb24gdGltZSBpcwpjb21pbmcgdXAgdmVyeSBzb29uLiBTbyB1 bmxlc3Mgc29tZW9uZSBlbHNlIGNvbWVzIHVwIHdpdGggc29tZXRoaW5nIG5pY2UKc29vbiBJIHRo aW5rIHdlIHNob3VsZCBqdXN0IGdvIHdpdGggbXkgc29sdXRpb24gYmVjYXVzZSBhKSBpdCdzIGFs cmVhZHkKYXZhaWxhYmxlLCBhbmQgYikgd29ya3MgcXVpdGUgZGVjZW50bHkgZnJvbSB3aGF0IEkg Y2FuIHNlZS4KCj4gLURhbmllbAo+IAo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYyAgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jIHwgMjMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGlu Y2x1ZGUvZHJtL2RybV9hdG9taWMuaCAgICAgICAgICAgIHwgICA0ICsKPiA+ICBpbmNsdWRlL2Ry bS9kcm1fYXRvbWljX2hlbHBlci5oICAgICB8ICAgOCArKwo+ID4gIGluY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaCAgICAgICAgIHwgIDExICsrCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2NydGMuaCAg ICAgICAgICAgICAgfCAgMTEgKysKPiA+ICBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAg ICAgICB8ICAxMSArKwo+ID4gIDcgZmlsZXMgY2hhbmdlZCwgMjc3IGluc2VydGlvbnMoKykKPiA+ IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiBpbmRleCA1NjkyNWI5M2Y1OTguLmUxNTc4ZDUwZDY2 ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+IEBAIC0xMDIwLDYgKzEwMjAsNyBAQCBk cm1fYXRvbWljX3ByaXZhdGVfb2JqX2luaXQoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqLAo+ ID4gIAltZW1zZXQob2JqLCAwLCBzaXplb2YoKm9iaikpOwo+ID4gIAo+ID4gIAlvYmotPnN0YXRl ID0gc3RhdGU7Cj4gPiArCW9iai0+Y29tbWl0dGVkX3N0YXRlID0gc3RhdGU7Cj4gPiAgCW9iai0+ ZnVuY3MgPSBmdW5jczsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX3ByaXZh dGVfb2JqX2luaXQpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+IGluZGV4 IGYwODg3ZjIzMWZiOC4uYzNkMDJmMTJjZDVkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gPiBAQCAtMTgxNSw2ICsxODE1LDExIEBAIHZvaWQgZHJtX2F0b21pY19o ZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpCj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfd2FpdF9m b3JfZGVwZW5kZW5jaWVzKTsKPiA+ICAKPiA+ICtzdGF0aWMgYm9vbCBzdGF0ZV9zZXFub19hZnRl cih1bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IGIpCj4gPiArewo+ID4gKwlyZXR1cm4gKGlu dCkoYiAtIGEpIDwgMDsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4gPiAgICogZHJtX2F0b21pY19o ZWxwZXJfY29tbWl0X2h3X2RvbmUgLSBzZXR1cCBwb3NzaWJsZSBub25ibG9ja2luZyBjb21taXQK PiA+ICAgKiBAb2xkX3N0YXRlOiBhdG9taWMgc3RhdGUgb2JqZWN0IHdpdGggb2xkIHN0YXRlIHN0 cnVjdHVyZXMKPiA+IEBAIC0xODMzLDExICsxODM4LDM5IEBAIEVYUE9SVF9TWU1CT0woZHJtX2F0 b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKTsKPiA+ICB2b2lkIGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9od19kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp Cj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiArCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4gKwlz dHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmo7Cj4gPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9z dGF0ZTsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uZWN0b3Jfc3Rh dGU7Cj4gPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqbmV3X29ial9zdGF0ZTsKPiA+ICAJ c3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+ID4gIAlpbnQgaTsKPiA+ICsJc3RhdGlj IERFRklORV9TUElOTE9DSyhjb21taXR0ZWRfc3RhdGVfbG9jayk7Cj4gPiArCj4gPiArCXNwaW5f bG9jaygmY29tbWl0dGVkX3N0YXRlX2xvY2spOwo+ID4gKwo+ID4gKwlmb3JfZWFjaF9uZXdfcGxh bmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4gPiAr CQlpZiAocGxhbmUtPmNvbW1pdHRlZF9zdGF0ZSAmJgo+ID4gKwkJICAgIHN0YXRlX3NlcW5vX2Fm dGVyKG5ld19wbGFuZV9zdGF0ZS0+c2Vxbm8sCj4gPiArCQkJCSAgICAgIHBsYW5lLT5jb21taXR0 ZWRfc3RhdGUtPnNlcW5vKSkKPiA+ICsJCQlwbGFuZS0+Y29tbWl0dGVkX3N0YXRlID0gbmV3X3Bs YW5lX3N0YXRlOwo+ID4gKwl9Cj4gPiArCj4gPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5f c3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiA+ ICsJCWlmIChjb25uZWN0b3ItPmNvbW1pdHRlZF9zdGF0ZSAmJgo+ID4gKwkJICAgIHN0YXRlX3Nl cW5vX2FmdGVyKG5ld19jb25uZWN0b3Jfc3RhdGUtPnNlcW5vLAo+ID4gKwkJCQkgICAgICBjb25u ZWN0b3ItPmNvbW1pdHRlZF9zdGF0ZS0+c2Vxbm8pKQo+ID4gKwkJCWNvbm5lY3Rvci0+Y29tbWl0 dGVkX3N0YXRlID0gbmV3X2Nvbm5lY3Rvcl9zdGF0ZTsKPiA+ICsJfQo+ID4gIAo+ID4gIAlmb3Jf ZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBp KSB7Cj4gPiArCQlpZiAoY3J0Yy0+Y29tbWl0dGVkX3N0YXRlICYmCj4gPiArCQkgICAgc3RhdGVf c2Vxbm9fYWZ0ZXIobmV3X2NydGNfc3RhdGUtPnNlcW5vLAo+ID4gKwkJCQkgICAgICBjcnRjLT5j b21taXR0ZWRfc3RhdGUtPnNlcW5vKSkKPiA+ICsJCQljcnRjLT5jb21taXR0ZWRfc3RhdGUgPSBu ZXdfY3J0Y19zdGF0ZTsKPiA+ICsKPiA+ICAJCWNvbW1pdCA9IG9sZF9zdGF0ZS0+Y3J0Y3NbaV0u Y29tbWl0Owo+ID4gIAkJaWYgKCFjb21taXQpCj4gPiAgCQkJY29udGludWU7Cj4gPiBAQCAtMTg0 Niw2ICsxODc5LDE1IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ICAJCVdBUk5fT04obmV3X2NydGNf c3RhdGUtPmV2ZW50KTsKPiA+ICAJCWNvbXBsZXRlX2FsbCgmY29tbWl0LT5od19kb25lKTsKPiA+ ICAJfQo+ID4gKwo+ID4gKwlmb3JfZWFjaF9uZXdfcHJpdmF0ZV9vYmpfaW5fc3RhdGUob2xkX3N0 YXRlLCBvYmosIG5ld19vYmpfc3RhdGUsIGkpIHsKPiA+ICsJCWlmIChvYmotPmNvbW1pdHRlZF9z dGF0ZSAmJgo+ID4gKwkJICAgIHN0YXRlX3NlcW5vX2FmdGVyKG5ld19vYmpfc3RhdGUtPnNlcW5v LAo+ID4gKwkJCQkgICAgICBvYmotPmNvbW1pdHRlZF9zdGF0ZS0+c2Vxbm8pKQo+ID4gKwkJCW9i ai0+Y29tbWl0dGVkX3N0YXRlID0gbmV3X29ial9zdGF0ZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlz cGluX3VubG9jaygmY29tbWl0dGVkX3N0YXRlX2xvY2spOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lN Qk9MKGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKTsKPiA+ICAKPiA+IEBAIC0yMjk2 LDYgKzIzMzgsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gIAo+ID4gIAkJb2xkX2Nvbm5fc3RhdGUtPnN0YXRl ID0gc3RhdGU7Cj4gPiAgCQluZXdfY29ubl9zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+ID4gKwkJbmV3 X2Nvbm5fc3RhdGUtPnNlcW5vID0gKytjb25uZWN0b3ItPnN0YXRlX3NlcW5vOwo+ID4gIAo+ID4g IAkJX19kcm1fYXRvbWljX3N0YXRlX2Nvbm5lY3RvcihzdGF0ZSwgaSktPnN0YXRlID0gb2xkX2Nv bm5fc3RhdGU7Cj4gPiAgCQljb25uZWN0b3ItPnN0YXRlID0gbmV3X2Nvbm5fc3RhdGU7Cj4gPiBA QCAtMjMwOSw2ICsyMzUyLDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICAKPiA+ICAJCXN0YXRlLT5jcnRjc1tp XS5zdGF0ZSA9IG9sZF9jcnRjX3N0YXRlOwo+ID4gIAkJY3J0Yy0+c3RhdGUgPSBuZXdfY3J0Y19z dGF0ZTsKPiA+ICsJCW5ld19jcnRjX3N0YXRlLT5zZXFubyA9ICsrY3J0Yy0+c3RhdGVfc2Vxbm87 Cj4gPiAgCj4gPiAgCQlpZiAoc3RhdGUtPmNydGNzW2ldLmNvbW1pdCkgewo+ID4gIAkJCXNwaW5f bG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ID4gQEAgLTIzMjUsNiArMjM2OSw3IEBAIHZvaWQg ZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gPiAgCj4gPiAgCQlvbGRfcGxhbmVfc3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4gPiAgCQlu ZXdfcGxhbmVfc3RhdGUtPnN0YXRlID0gTlVMTDsKPiA+ICsJCW5ld19wbGFuZV9zdGF0ZS0+c2Vx bm8gPSArK3BsYW5lLT5zdGF0ZV9zZXFubzsKPiA+ICAKPiA+ICAJCXN0YXRlLT5wbGFuZXNbaV0u c3RhdGUgPSBvbGRfcGxhbmVfc3RhdGU7Cj4gPiAgCQlwbGFuZS0+c3RhdGUgPSBuZXdfcGxhbmVf c3RhdGU7Cj4gPiBAQCAtMjMzNSw2ICsyMzgwLDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9z d2FwX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICAKPiA+ICAJCW9s ZF9vYmpfc3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4gPiAgCQluZXdfb2JqX3N0YXRlLT5zdGF0ZSA9 IE5VTEw7Cj4gPiArCQluZXdfb2JqX3N0YXRlLT5zZXFubyA9ICsrb2JqLT5zdGF0ZV9zZXFubzsK PiA+ICAKPiA+ICAJCV9fZHJtX2F0b21pY19zdGF0ZV9wcml2YXRlX29iaihzdGF0ZSwgaSktPnN0 YXRlID0gb2xkX29ial9zdGF0ZTsKPiA+ICAJCW9iai0+c3RhdGUgPSBuZXdfb2JqX3N0YXRlOwo+ ID4gQEAgLTM1ODIsNiArMzYyOCw3IEBAIF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jl c2V0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiAgCQljb25uX3N0YXRlLT5j b25uZWN0b3IgPSBjb25uZWN0b3I7Cj4gPiAgCj4gPiAgCWNvbm5lY3Rvci0+c3RhdGUgPSBjb25u X3N0YXRlOwo+ID4gKwljb25uZWN0b3ItPmNvbW1pdHRlZF9zdGF0ZSA9IGNvbm5fc3RhdGU7Cj4g PiAgfQo+ID4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVz ZXQpOwo+ID4gIAo+ID4gQEAgLTM3NDAsNiArMzc4NywxODkgQEAgZHJtX2F0b21pY19oZWxwZXJf ZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgfQo+ID4gIEVYUE9S VF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRlX3N0YXRlKTsKPiA+ICAKPiA+ICtz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqCj4gPiArZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRl X2NvbW1pdHRlZF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXIgY29ubl9pdGVyOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPiA+ ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK PiA+ICsJaW50IGVyciA9IDA7Cj4gPiArCj4gPiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9h bGxvYyhkZXYpOwo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gPiArCj4gPiArCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgZGV2KSB7Cj4gPiArCQlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUsICpuZXdfc3RhdGU7Cj4gPiArCQlpbnQg aSA9IGRybV9wbGFuZV9pbmRleChwbGFuZSk7Cj4gPiArCj4gPiArCQlvbGRfc3RhdGUgPSBwbGFu ZS0+ZnVuY3MtPmF0b21pY19kdXBsaWNhdGVfc3RhdGUocGxhbmUsIHBsYW5lLT5jb21taXR0ZWRf c3RhdGUpOwo+ID4gKwkJaWYgKCFvbGRfc3RhdGUpIHsKPiA+ICsJCQllcnIgPSAtRU5PTUVNOwo+ ID4gKwkJCWdvdG8gZnJlZTsKPiA+ICsJCX0KPiA+ICsJCW5ld19zdGF0ZSA9IHBsYW5lLT5mdW5j cy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSwgcGxhbmUtPmNvbW1pdHRlZF9zdGF0ZSk7 Cj4gPiArCQlpZiAoIW5ld19zdGF0ZSkgewo+ID4gKwkJCXBsYW5lLT5mdW5jcy0+YXRvbWljX2Rl c3Ryb3lfc3RhdGUocGxhbmUsIG9sZF9zdGF0ZSk7Cj4gPiArCQkJZXJyID0gLUVOT01FTTsKPiA+ ICsJCQlnb3RvIGZyZWU7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlzdGF0ZS0+cGxhbmVzW2ldLnN0 YXRlID0gbmV3X3N0YXRlOwo+ID4gKwkJc3RhdGUtPnBsYW5lc1tpXS5vbGRfc3RhdGUgPSBvbGRf c3RhdGU7Cj4gPiArCQlzdGF0ZS0+cGxhbmVzW2ldLm5ld19zdGF0ZSA9IG5ld19zdGF0ZTsKPiA+ ICsJCXN0YXRlLT5wbGFuZXNbaV0ucHRyID0gcGxhbmU7Cj4gPiArCj4gPiArCQlvbGRfc3RhdGUt PnN0YXRlID0gc3RhdGU7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZHJtX2Zvcl9lYWNoX2NydGMoY3J0 YywgZGV2KSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSwgKm5ld19z dGF0ZTsKPiA+ICsJCWludCBpID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gPiArCj4gPiArCQlv bGRfc3RhdGUgPSBjcnRjLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShjcnRjLCBjcnRj LT5jb21taXR0ZWRfc3RhdGUpOwo+ID4gKwkJaWYgKCFvbGRfc3RhdGUpIHsKPiA+ICsJCQllcnIg PSAtRU5PTUVNOwo+ID4gKwkJCWdvdG8gZnJlZTsKPiA+ICsJCX0KPiA+ICsJCW5ld19zdGF0ZSA9 IGNydGMtPmZ1bmNzLT5hdG9taWNfZHVwbGljYXRlX3N0YXRlKGNydGMsIGNydGMtPmNvbW1pdHRl ZF9zdGF0ZSk7Cj4gPiArCQlpZiAoIW5ld19zdGF0ZSkgewo+ID4gKwkJCWNydGMtPmZ1bmNzLT5h dG9taWNfZGVzdHJveV9zdGF0ZShjcnRjLCBvbGRfc3RhdGUpOwo+ID4gKwkJCWVyciA9IC1FTk9N RU07Cj4gPiArCQkJZ290byBmcmVlOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJc3RhdGUtPmNydGNz W2ldLnN0YXRlID0gbmV3X3N0YXRlOwo+ID4gKwkJc3RhdGUtPmNydGNzW2ldLm9sZF9zdGF0ZSA9 IG9sZF9zdGF0ZTsKPiA+ICsJCXN0YXRlLT5jcnRjc1tpXS5uZXdfc3RhdGUgPSBuZXdfc3RhdGU7 Cj4gPiArCQlzdGF0ZS0+Y3J0Y3NbaV0ucHRyID0gY3J0YzsKPiA+ICsKPiA+ICsJCW9sZF9zdGF0 ZS0+c3RhdGUgPSBzdGF0ZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlkcm1fY29ubmVjdG9yX2xpc3Rf aXRlcl9iZWdpbihkZXYsICZjb25uX2l0ZXIpOwo+ID4gKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9y X2l0ZXIoY29ubiwgJmNvbm5faXRlcikgewo+ID4gKwkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9zdGF0ZSwgKm5ld19zdGF0ZTsKPiA+ICsJCXN0cnVjdCBfX2RybV9jb25uZWN0b3Jz X3N0YXRlICpjOwo+ID4gKwkJaW50IGkgPSBkcm1fY29ubmVjdG9yX2luZGV4KGNvbm4pOwo+ID4g Kwo+ID4gKwkJZXJyID0gZHJtX2R5bmFycmF5X3Jlc2VydmUoJnN0YXRlLT5jb25uZWN0b3JzLCBp KTsKPiA+ICsJCWlmIChlcnIpCj4gPiArCQkJYnJlYWs7Cj4gPiArCj4gPiArCQlvbGRfc3RhdGUg PSBjb25uLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShjb25uLCBjb25uLT5jb21taXR0 ZWRfc3RhdGUpOwo+ID4gKwkJaWYgKCFvbGRfc3RhdGUpIHsKPiA+ICsJCQllcnIgPSAtRU5PTUVN Owo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJfQo+ID4gKwkJbmV3X3N0YXRlID0gY29ubi0+ZnVuY3Mt PmF0b21pY19kdXBsaWNhdGVfc3RhdGUoY29ubiwgY29ubi0+Y29tbWl0dGVkX3N0YXRlKTsKPiA+ ICsJCWlmICghbmV3X3N0YXRlKSB7Cj4gPiArCQkJY29ubi0+ZnVuY3MtPmF0b21pY19kZXN0cm95 X3N0YXRlKGNvbm4sIG9sZF9zdGF0ZSk7Cj4gPiArCQkJZXJyID0gLUVOT01FTTsKPiA+ICsJCQli cmVhazsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCXN0YXRlLT5udW1fY29ubmVjdG9yID0gc3RhdGUt PmNvbm5lY3RvcnMubnVtX2VsZW1zOwo+ID4gKwo+ID4gKwkJYyA9IF9fZHJtX2F0b21pY19zdGF0 ZV9jb25uZWN0b3Ioc3RhdGUsIGkpOwo+ID4gKwo+ID4gKwkJYy0+c3RhdGUgPSBuZXdfc3RhdGU7 Cj4gPiArCQljLT5vbGRfc3RhdGUgPSBvbGRfc3RhdGU7Cj4gPiArCQljLT5uZXdfc3RhdGUgPSBu ZXdfc3RhdGU7Cj4gPiArCQljLT5wdHIgPSBkcm1fY29ubmVjdG9yX2dldChjb25uKTsKPiA+ICsK PiA+ICsJCW9sZF9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiA+ICsJfQo+ID4gKwlkcm1fY29ubmVj dG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4gPiArCj4gPiArZnJlZToKPiA+ICsJaWYg KGVyciA8IDApIHsKPiA+ICsJCWRybV9hdG9taWNfaGVscGVyX2NsZWFuX2NvbW1pdHRlZF9zdGF0 ZShzdGF0ZSk7Cj4gPiArCQlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gPiArCQlzdGF0 ZSA9IEVSUl9QVFIoZXJyKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gc3RhdGU7Cj4gPiAr fQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRlX2NvbW1pdHRl ZF9zdGF0ZSk7Cj4gPiArCj4gPiAraW50IGRybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9wcml2 YXRlX29ial9jb21taXR0ZWRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ ID4gKwkJCQkJCQkgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmopCj4gPiArewo+ID4gKwlz dHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKm9sZF9zdGF0ZSwgKm5ld19zdGF0ZTsKPiA+ICsJc3Ry dWN0IF9fZHJtX3ByaXZhdGVfb2Jqc19zdGF0ZSAqcDsKPiA+ICsJaW50IHJldCwgaSA9IHN0YXRl LT5udW1fcHJpdmF0ZV9vYmpzOwo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fZHluYXJyYXlfcmVzZXJ2 ZSgmc3RhdGUtPnByaXZhdGVfb2JqcywgaSk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlyZXR1cm4g cmV0Owo+ID4gKwo+ID4gKwlvbGRfc3RhdGUgPSBvYmotPmZ1bmNzLT5hdG9taWNfZHVwbGljYXRl X3N0YXRlKG9iaiwgb2JqLT5jb21taXR0ZWRfc3RhdGUpOwo+ID4gKwlpZiAoIW9sZF9zdGF0ZSkK PiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKwluZXdfc3RhdGUgPSBvYmotPmZ1bmNz LT5hdG9taWNfZHVwbGljYXRlX3N0YXRlKG9iaiwgb2JqLT5jb21taXR0ZWRfc3RhdGUpOwo+ID4g KwlpZiAoIW5ld19zdGF0ZSkgewo+ID4gKwkJb2JqLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3Rh dGUob2JqLCBvYmotPmNvbW1pdHRlZF9zdGF0ZSk7Cj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ ICsJfQo+ID4gKwo+ID4gKwlzdGF0ZS0+bnVtX3ByaXZhdGVfb2JqcyA9IHN0YXRlLT5wcml2YXRl X29ianMubnVtX2VsZW1zOwo+ID4gKwo+ID4gKwlwID0gX19kcm1fYXRvbWljX3N0YXRlX3ByaXZh dGVfb2JqKHN0YXRlLCBpKTsKPiA+ICsKPiA+ICsJcC0+c3RhdGUgPSBuZXdfc3RhdGU7Cj4gPiAr CXAtPm9sZF9zdGF0ZSA9IG9sZF9zdGF0ZTsKPiA+ICsJcC0+bmV3X3N0YXRlID0gbmV3X3N0YXRl Owo+ID4gKwlwLT5wdHIgPSBvYmo7Cj4gPiArCj4gPiArCW9sZF9zdGF0ZS0+c3RhdGUgPSBzdGF0 ZTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2F0 b21pY19oZWxwZXJfZHVwbGljYXRlX3ByaXZhdGVfb2JqX2NvbW1pdHRlZF9zdGF0ZSk7Cj4gPiAr Cj4gPiArdm9pZAo+ID4gK2RybV9hdG9taWNfaGVscGVyX2NsZWFuX2NvbW1pdHRlZF9zdGF0ZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKPiA+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gKwlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubjsKPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGU7Cj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ICsJc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fcHJpdmF0 ZV9vYmogKm9iajsKPiA+ICsJc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpvYmpfc3RhdGU7Cj4g PiArCWludCBpOwo+ID4gKwo+ID4gKwkvKiByZXN0b3JlIHRoZSBjb3JyZWN0IHN0YXRlLT5zdGF0 ZSAqLwo+ID4gKwlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFu ZV9zdGF0ZSwgaSkgewo+ID4gKwkJcGxhbmUtPmZ1bmNzLT5hdG9taWNfZGVzdHJveV9zdGF0ZShw bGFuZSwgc3RhdGUtPnBsYW5lc1tpXS5vbGRfc3RhdGUpOwo+ID4gKwkJc3RhdGUtPnBsYW5lc1tp XS5vbGRfc3RhdGUgPSBOVUxMOwo+ID4gKwl9Cj4gPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPiArCQljcnRjLT5mdW5jcy0+YXRv bWljX2Rlc3Ryb3lfc3RhdGUoY3J0Yywgc3RhdGUtPmNydGNzW2ldLm9sZF9zdGF0ZSk7Cj4gPiAr CQlzdGF0ZS0+Y3J0Y3NbaV0ub2xkX3N0YXRlID0gTlVMTDsKPiA+ICsJfQo+ID4gKwlmb3JfZWFj aF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uLCBjb25uX3N0YXRlLCBpKSB7Cj4g PiArCQlzdHJ1Y3QgX19kcm1fY29ubmVjdG9yc19zdGF0ZSAqYyA9Cj4gPiArCQkJX19kcm1fYXRv bWljX3N0YXRlX2Nvbm5lY3RvcihzdGF0ZSwgaSk7Cj4gPiArCj4gPiArCQljb25uLT5mdW5jcy0+ YXRvbWljX2Rlc3Ryb3lfc3RhdGUoY29ubiwgYy0+b2xkX3N0YXRlKTsKPiA+ICsJCWMtPm9sZF9z dGF0ZSA9IE5VTEw7Cj4gPiArCX0KPiA+ICsJZm9yX2VhY2hfbmV3X3ByaXZhdGVfb2JqX2luX3N0 YXRlKHN0YXRlLCBvYmosIG9ial9zdGF0ZSwgaSkgewo+ID4gKwkJc3RydWN0IF9fZHJtX3ByaXZh dGVfb2Jqc19zdGF0ZSAqcCA9Cj4gPiArCQkJX19kcm1fYXRvbWljX3N0YXRlX3ByaXZhdGVfb2Jq KHN0YXRlLCBpKTsKPiA+ICsKPiA+ICsJCW9iai0+ZnVuY3MtPmF0b21pY19kZXN0cm95X3N0YXRl KG9iaiwgcC0+b2xkX3N0YXRlKTsKPiA+ICsJCXAtPm9sZF9zdGF0ZSA9IE5VTEw7Cj4gPiArCX0K PiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jbGVhbl9jb21taXR0 ZWRfc3RhdGUpOwo+ID4gKwo+ID4gIC8qKgo+ID4gICAqIF9fZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX2Rlc3Ryb3lfc3RhdGUgLSByZWxlYXNlIGNvbm5lY3RvciBzdGF0ZQo+ID4gICAqIEBz dGF0ZTogY29ubmVjdG9yIHN0YXRlIG9iamVjdCB0byByZWxlYXNlCj4gPiBAQCAtMzg1Niw2ICs0 MDg2LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9sZWdhY3lfZ2FtbWFfc2V0 KTsKPiA+ICAgKiBfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVfZHVwbGljYXRlX3N0YXRlIC0g Y29weSBhdG9taWMgcHJpdmF0ZSBzdGF0ZQo+ID4gICAqIEBvYmo6IENSVEMgb2JqZWN0Cj4gPiAg ICogQHN0YXRlOiBuZXcgcHJpdmF0ZSBvYmplY3Qgc3RhdGUKPiA+ICsgKiBAb2xkX3N0YXRlOiBv bGQgcHJpdmF0ZSBvYmplY3Qgc3RhdGUKPiA+ICAgKgo+ID4gICAqIENvcGllcyBhdG9taWMgc3Rh dGUgZnJvbSBhIHByaXZhdGUgb2JqZWN0cydzIGN1cnJlbnQgc3RhdGUgYW5kIHJlc2V0cyBpbmZl cnJlZCB2YWx1ZXMuCj4gPiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGRyaXZlcnMgdGhhdCBzdWJj bGFzcyB0aGUgcHJpdmF0ZSBzdGF0ZS4KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f YXRvbWljLmggYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiA+IGluZGV4IDBlNmM1NGIzZTBh Zi4uOWZmNGZiNDZkNTAwIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5o Cj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiA+IEBAIC0xOTQsMTIgKzE5NCwx NiBAQCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3Mgewo+ID4gIAo+ID4gIHN0cnVjdCBk cm1fcHJpdmF0ZV9vYmogewo+ID4gIAlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnN0YXRlOwo+ ID4gKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKmNvbW1pdHRlZF9zdGF0ZTsKPiA+ICAKPiA+ ICAJY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1bmNzICpmdW5jczsKPiA+ICsKPiA+ ICsJdW5zaWduZWQgaW50IHN0YXRlX3NlcW5vOwo+ID4gIH07Cj4gPiAgCj4gPiAgc3RydWN0IGRy bV9wcml2YXRlX3N0YXRlIHsKPiA+ICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ ID4gKwl1bnNpZ25lZCBpbnQgc2Vxbm87Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdHJ1Y3QgX19kcm1f cHJpdmF0ZV9vYmpzX3N0YXRlIHsKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRv bWljX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAo+ID4gaW5kZXgg Yjc5OTY4N2E0YjA5Li4zYTYwOWJiYjU4MTggMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljX2hlbHBlci5oCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBl ci5oCj4gPiBAQCAtMTg1LDYgKzE4NSwxNCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKgo+ID4gIGRybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIAkJCQkgIHN0cnVjdCBkcm1fbW9kZXNl dF9hY3F1aXJlX2N0eCAqY3R4KTsKPiA+ICtzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqCj4gPiAr ZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRlX2NvbW1pdHRlZF9zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiA+ICtzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqOwo+ID4gK2ludAo+ID4gK2Ry bV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9wcml2YXRlX29ial9jb21taXR0ZWRfc3RhdGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gKwkJCQkJCQlzdHJ1Y3QgZHJtX3ByaXZh dGVfb2JqICpvYmopOwo+ID4gK3ZvaWQKPiA+ICtkcm1fYXRvbWljX2hlbHBlcl9jbGVhbl9jb21t aXR0ZWRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ICB2b2lkCj4g PiAgX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUpOwo+ID4gIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9k cm1fY29ubmVjdG9yLmgKPiA+IGluZGV4IDhmMjYxNjZmNzhiNC4uYTM4YmEwNWRiNGZhIDEwMDY0 NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiArKysgYi9pbmNsdWRl L2RybS9kcm1fY29ubmVjdG9yLmgKPiA+IEBAIC0zMDYsNiArMzA2LDggQEAgc3RydWN0IGRybV90 dl9jb25uZWN0b3Jfc3RhdGUgewo+ID4gIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPiA+ ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ICAKPiA+ICsJdW5zaWduZWQg aW50IHNlcW5vOwo+ID4gKwo+ID4gIAkvKioKPiA+ICAJICogQGNydGM6IENSVEMgdG8gY29ubmVj dCBjb25uZWN0b3IgdG8sIE5VTEwgaWYgZGlzYWJsZWQuCj4gPiAgCSAqCj4gPiBAQCAtNzA3LDYg KzcwOSw4IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiA+ICAKPiA+ICAJY2hhciAqbmFtZTsK PiA+ICAKPiA+ICsJdW5zaWduZWQgaW50IHN0YXRlX3NlcW5vOwo+ID4gKwo+ID4gIAkvKioKPiA+ ICAJICogQG11dGV4OiBMb2NrIGZvciBnZW5lcmFsIGNvbm5lY3RvciBzdGF0ZSwgYnV0IGN1cnJl bnRseSBvbmx5IHByb3RlY3RzCj4gPiAgCSAqIEByZWdpc3RlcmVkLiBNb3N0IG9mIHRoZSBjb25u ZWN0b3Igc3RhdGUgaXMgc3RpbGwgcHJvdGVjdGVkIGJ5Cj4gPiBAQCAtODY4LDYgKzg3MiwxMyBA QCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciB7Cj4gPiAgCSAqLwo+ID4gIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqc3RhdGU7Cj4gPiAgCj4gPiArCS8qKgo+ID4gKwkgKiBAY29tbWl0dGVkX3N0 YXRlOgo+ID4gKwkgKgo+ID4gKwkgKiBDdXJyZW50IGNvbW1pdHRlZCBhdG9taWMgc3RhdGUgZm9y IHRoaXMgY29ubmVjdG9yLgo+ID4gKwkgKi8KPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbW1pdHRlZF9zdGF0ZTsKPiA+ICsKPiA+ICAJLyogRGlzcGxheUlEIGJpdHMgKi8KPiA+ ICAJYm9vbCBoYXNfdGlsZTsKPiA+ICAJc3RydWN0IGRybV90aWxlX2dyb3VwICp0aWxlX2dyb3Vw Owo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9k cm1fY3J0Yy5oCj4gPiBpbmRleCA4YmZiYzU0NjYwYWIuLjJhMTg5N2Q3NmM3MSAxMDA2NDQKPiA+ IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9j cnRjLmgKPiA+IEBAIC0xMDgsNiArMTA4LDggQEAgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVu Y3M7Cj4gPiAgc3RydWN0IGRybV9jcnRjX3N0YXRlIHsKPiA+ICAJc3RydWN0IGRybV9jcnRjICpj cnRjOwo+ID4gIAo+ID4gKwl1bnNpZ25lZCBpbnQgc2Vxbm87Cj4gPiArCj4gPiAgCWJvb2wgZW5h YmxlOwo+ID4gIAlib29sIGFjdGl2ZTsKPiA+ICAKPiA+IEBAIC03NTAsNiArNzUyLDggQEAgc3Ry dWN0IGRybV9jcnRjIHsKPiA+ICAKPiA+ICAJY2hhciAqbmFtZTsKPiA+ICAKPiA+ICsJdW5zaWdu ZWQgaW50IHN0YXRlX3NlcW5vOwo+ID4gKwo+ID4gIAkvKioKPiA+ICAJICogQG11dGV4Ogo+ID4g IAkgKgo+ID4gQEAgLTgxNiw2ICs4MjAsMTMgQEAgc3RydWN0IGRybV9jcnRjIHsKPiA+ICAJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZTsKPiA+ICAKPiA+ICAJLyoqCj4gPiArCSAqIEBjb21t aXR0ZWRfc3RhdGU6Cj4gPiArCSAqCj4gPiArCSAqIEN1cnJlbnQgY29tbWl0dGVkIGF0b21pYyBz dGF0ZSBmb3IgdGhpcyBDUlRDLgo+ID4gKwkgKi8KPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjb21taXR0ZWRfc3RhdGU7Cj4gPiArCj4gPiArCS8qKgo+ID4gIAkgKiBAY29tbWl0X2xpc3Q6 Cj4gPiAgCSAqCj4gPiAgCSAqIExpc3Qgb2YgJmRybV9jcnRjX2NvbW1pdCBzdHJ1Y3R1cmVzIHRy YWNraW5nIHBlbmRpbmcgY29tbWl0cy4KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f cGxhbmUuaCBiL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPiBpbmRleCAwOGFkNGI1OGFkYmUu LmZmMzQ5NTcwNWU2MyAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4g PiArKysgYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+ID4gQEAgLTU5LDYgKzU5LDggQEAgc3Ry dWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4Owo+ID4gIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg ewo+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ICAKPiA+ICsJdW5zaWduZWQgaW50 IHNlcW5vOwo+ID4gKwo+ID4gIAkvKioKPiA+ICAJICogQGNydGM6Cj4gPiAgCSAqCj4gPiBAQCAt NDcwLDYgKzQ3Miw4IEBAIHN0cnVjdCBkcm1fcGxhbmUgewo+ID4gIAo+ID4gIAljaGFyICpuYW1l Owo+ID4gIAo+ID4gKwl1bnNpZ25lZCBpbnQgc3RhdGVfc2Vxbm87Cj4gPiArCj4gPiAgCS8qKgo+ ID4gIAkgKiBAbXV0ZXg6Cj4gPiAgCSAqCj4gPiBAQCAtNTIyLDYgKzUyNiwxMyBAQCBzdHJ1Y3Qg ZHJtX3BsYW5lIHsKPiA+ICAJICovCj4gPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl Owo+ID4gIAo+ID4gKwkvKioKPiA+ICsJICogQGNvbW1pdHRlZF9zdGF0ZToKPiA+ICsJICoKPiA+ ICsJICogQ3VycmVudCBjb21taXR0ZWQgYXRvbWljIHN0YXRlIGZvciB0aGlzIHBsYW5lLgo+ID4g KwkgKi8KPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqY29tbWl0dGVkX3N0YXRlOwo+ID4g Kwo+ID4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp6cG9zX3Byb3BlcnR5Owo+ID4gIAlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpyb3RhdGlvbl9wcm9wZXJ0eTsKPiA+ICB9Owo+ID4gLS0gCj4gPiAyLjEz LjAKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cj4gCj4gLS0gCj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK