From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/tinydrm: Make fb_dirty into a lower level hook Date: Fri, 23 Mar 2018 15:58:06 +0200 Message-ID: <20180323135806.GT5453@intel.com> References: <20180322202738.25817-1-ville.syrjala@linux.intel.com> <20180322202738.25817-2-ville.syrjala@linux.intel.com> <1bdf7ec9-9a21-fa7c-c76c-73e9301fcd2a@tronnes.org> <20180323113103.GO5453@intel.com> <83143711-3a30-612e-7f7d-e02e19e1c040@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <83143711-3a30-612e-7f7d-e02e19e1c040@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, David Lechner , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMjMsIDIwMTggYXQgMDI6Mzc6MjNQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAyMy4wMy4yMDE4IDEyLjMxLCBza3JldiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBGcmksIE1hciAyMywgMjAxOCBhdCAxMjo0Mzo1OEFNICswMTAwLCBOb3JhbGYgVHLD uG5uZXMgd3JvdGU6Cj4gPj4KPiA+PiBEZW4gMjIuMDMuMjAxOCAyMS4yNywgc2tyZXYgVmlsbGUg U3lyamFsYToKPiA+Pj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+Pj4KPiA+Pj4gbWlwaV9kYmlfZW5hYmxlX2ZsdXNoKCkgd2FudHMgdG8g Y2FsbCB0aGUgZmItPmRpcnR5KCkgaG9vayBmcm9tIHRoZQo+ID4+PiBib3dlbHMgb2YgdGhlIC5h dG9taWNfZW5hYmxlKCkgaG9vay4gVGhhdCBwcmV2ZW50cyB1cyBmcm9tIHRha2luZyB0aGUKPiA+ Pj4gcGxhbmUgbXV0ZXggaW4gZmItPmRpcnR5KCkgdW5sZXNzIHdlIGFsc28gcGx1bWIgZG93biB0 aGUgYWNxdWlyZQo+ID4+PiBjb250ZXh0Lgo+ID4+Pgo+ID4+PiBJbnN0ZWFkIGl0IHNlZW1zIHNp bXBsZXIgdG8gc3BsaXQgdGhlIGZiLT5kaXJ0eSgpIGludG8gYSB0aW55ZHJtCj4gPj4+IHNwZWNp ZmljIGxvd2VyIGxldmVsIGhvb2sgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20KPiA+Pj4gbWlwaV9k YmlfZW5hYmxlX2ZsdXNoKCkgYW5kIGZyb20gYSBnZW5lcmljIGhpZ2hlciBsZXZlbAo+ID4+PiB0 aW55ZHJtX2ZiX2RpcnR5KCkgaGVscGVyLiBBcyB3ZSBkb24ndCBoYXZlIGEgdGlueWRybSBzcGVj aWZpYwo+ID4+PiB2ZnVuY3MgdGFibGUgd2UnbGwganVzdCBzdGljayBpdCBpbnRvIHRpbnlkcm1f ZGV2aWNlIGRpcmVjdGx5Cj4gPj4+IGZvciBub3cuCj4gPj4gVGhlIGxvbmcgdGVybSBnb2FsIGlz IHRvIHRyeSBhbmQgZ2V0IHJpZCBvZiB0aW55ZHJtLmtvIGJ5IG1vdmluZyBzdHVmZgo+ID4+IGVs c2V3aGVyZSBhcyBpdCdzIGtpbmQgb2YgYSBtaWRkbGUgbGF5ZXIuIFNvIEknZCByZWFsbHkgbGlr ZSB0byBhdm9pZAo+ID4+IGFkZGluZyBhIGNhbGxiYWNrIGxpa2UgdGhpcy4KPiA+PiBIb3BlZnVs bHkgd2UgY2FuIHdvcmsgb3V0IGEgc29sdXRpb24gYmFzZWQgb24gbXkgc3VnZ2VzdGlvbiBpbiB0 aGUKPiA+PiAnZHJtOiBFbGltaW5hdGUgcGxhbmUtPmZiL2NydGMgdXNhZ2UgZm9yIGF0b21pYyBk cml2ZXJzJyB0aHJlYWQuCj4gPiBJIGRvbid0IHdhbnQgdG8gc3RhcnQgcmVkZXNpZ25pbmcgdGhl IGVudGlyZSBhcmNoaXRlY3R1cmUgYXQKPiA+IHRoaXMgcG9pbnQuIFRoYXQgd291bGQgYWxzbyBj YXVzZSBhIGJpZ2dlciByaXNrIG9mIHJlZ3Jlc3Npb24gYW5kCj4gPiB0aGVuIHdlJ2QgcG90ZW50 aWFsbHkgaGF2ZSB0byB0cnkgYW5kIHJldmVydCB0aGUgZW50aXJlIHBsYW5lLT5mYgo+ID4gdGhp bmcsIHdoaWNoIHdvdWxkIG5vdCBiZSBmdW4gaWYgYW55IHNpZ25pZmljYW50IGNoYW5nZXMgaGF2 ZQo+ID4gb2NjdXJyZWQgaW4gdGhlIG1lYW50aW1lLgo+ID4KPiA+PiBJZiB3ZSBkbyBuZWVkIGEg aG9vaywgSSBwcmVmZXIgdGhhdCB3ZSBhZGQgaXQgdG8KPiA+PiBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZV9mdW5jcy4KPiA+IElmIHlvdSBoYXZlIHBsYW5zIHRvIHJlZGVzaWduIHRpbnlkcm0gYW55 d2F5IGl0IHNlZW1zIHRvIG1lIHRoYXQKPiA+IGEgdGVtcG9yYXJ5IGhvb2sgaW4gdGlueWRybSBp cyBtYXkgYmUgYSBiaXQgbGVzcyBpbnRydXNpdmUgdGhhbgo+ID4gaW5mbGljdGluZyBpdCBvbiB0 aGUgc2ltcGxlX2ttc19oZWxwZXIuCj4gCj4gWWVzIHlvdSdyZSByaWdodCBvZiBjb3Vyc2UsIHdo YXQgd2FzIEkgdGhpbmtpbmcuCj4gCj4gWW91IG1pc3NlZCBvdXQgb24gb25lIGNhbGwgc2l0ZToK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLXBp cGUuYyAKPiBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1waXBlLmMKPiBp bmRleCAxMWFlOTUwYjBmYzkuLjc5MjRlYjU5YzJlMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0tcGlwZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3Rpbnlkcm0vY29yZS90aW55ZHJtLXBpcGUuYwo+IEBAIC0xMjQsMTEgKzEyNCw4IEBAIHZvaWQg dGlueWRybV9kaXNwbGF5X3BpcGVfdXBkYXRlKHN0cnVjdCAKPiBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZSAqcGlwZSwKPiAgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwaXBlLT5wbGFuZS5zdGF0ZS0+ZmI7Cj4gIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9ICZ0ZGV2LT5waXBlLmNydGM7Cj4gCj4gLcKgwqDCoMKgwqDCoCBpZiAoZmIgJiYg KGZiICE9IG9sZF9zdGF0ZS0+ZmIpKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cGlwZS0+cGxhbmUuZmIgPSBmYjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo ZmItPmZ1bmNzLT5kaXJ0eSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZmItPmZ1bmNzLT5kaXJ0eShmYiwgTlVMTCwgMCwgMCwgTlVMTCwgMCk7Cj4gLcKg wqDCoMKgwqDCoCB9Cj4gK8KgwqDCoMKgwqDCoCBpZiAoZmIgJiYgKGZiICE9IG9sZF9zdGF0ZS0+ ZmIpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRkZXYtPmZiX2RpcnR5KGZiLCBO VUxMLCAwLCAwLCBOVUxMLCAwKTsKPiAKPiAgwqDCoMKgwqDCoMKgwqAgaWYgKGNydGMtPnN0YXRl LT5ldmVudCkgewo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Bpbl9sb2NrX2ly cSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiAKPiBXaXRoIHRoYXQgZml4ZWQsIHNlcmllcyBp czoKPiAKPiBSZXZpZXdlZC1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ CgpBd2Vzb21lLiBUaGFua3MuIEFuZCB0aGFua3MgZm9yIGNhdGNoaW5nIHRoYXQgZXh0cmEgZGly dHkoKSBjYWxsLiBJJ2xsCmdvIGFuZCBmaXggaXQgdXAuCgo+IAo+IFRvIGJlIGhvbmVzdCBJIGRv bid0IHVuZGVyc3RhbmQgd2h5IGl0J3MgbmVjZXNzYXJ5IHRvIHdpcmUgdGhyb3VnaCB0aGUKPiBw bGFuZSBzdGF0ZSB0byB0aGUgZW5hYmxlIGhvb2sgaW5zdGVhZCBvZiBqdXN0IGxvb2tpbmcgaXQg dXAgb24gdGhlIHBpcGUKPiBvYmplY3QuIFlvdSBsb29rIGl0IHVwIG9uIHRoZSBwaXBlIGluIHRp bnlkcm1fZmJfZGlydHkoKSwgYW5kIEkgbG9vayB1cAo+IHRoZSBuZXcgcGxhbmUgc3RhdGUgYW5k IGNydGMgc3RhdGUgb24gdGhlIHBpcGUgaW4gdGhlIHVwZGF0ZSBob29rLgoKVGhlIHVzZSBvZiBw bGFuZS0+c3RhdGUgZXRjLiBpc24ndCByZWFsbHkgdGhlIGJlc3QgcHJhY3RpY2UuIFdoYXQKd2Ug cmVhbGx5IHNob3VsZCBiZSBkb2luZyBpcyBwbHVtYmluZyBkb3duIHRoZSBkcm1fYXRvbWljX3N0 YXRlCmluc3RlYWQsIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGxvb2sgdXAgdGhlIGNvcnJlY3Qg bmV3IHN0YXRlCmV4cGxpY2l0bHkuIFRoYXQgc2FpZCwgSSBndWVzcyB0aGVyZSBpcyBzb21ldGhp bmcgaW4gdGhlIGhlbHBlcnMKdG8gcHJldmVudCB0aGUgbmV4dCBzd2FwX3N0YXRlKCkgZnJvbSBv dmVydGFraW5nIHRoZSBwcmV2aW91cwpjb21taXQsIHNvIHN1cHBvc2VkbHkgdXNpbmcgcGxhbmUt PnN0YXRlIGV0Yy4gZG9lcyBhY3R1YWxseSByZXN1bHQKaW4gdGhlIGNvcnJlY3QgdGhpbmcgY3Vy cmVudGx5LgoKSW4gdGhpcyBjYXNlIHNpbmNlIHdlIHdlcmUgYWxyZWFkeSBwbHVtYmluZyBkb3du IHRoZSBuZXcgY3J0YwpzdGF0ZSBJIGZpZ3VyZWQgSSdkIGp1c3QgcGx1bWIgZG93biBpdHMgZnJp ZW5kIGFzIHdlbGwuCgo+IAo+IE5vcmFsZi4KPiAKPiAKPiA+IEJ1dCBpZiB5b3UgZG8gcHJlZmVy Cj4gPiBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBJIGNhbiBtb3ZlIGl0IHRoZXJlIG9m IGNvdXJzZS4KPiA+Cj4gPj4gTm9yYWxmLgo+ID4+Cj4gPj4+IENjOiAiTm9yYWxmIFRyw7hubmVz IiA8bm9yYWxmQHRyb25uZXMub3JnPgo+ID4+PiBDYzogRGF2aWQgTGVjaG5lciA8ZGF2aWRAbGVj aG5vbG9neS5jb20+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IC0tLQo+ID4+PiAgICBkcml2ZXJzL2dwdS9k cm0vdGlueWRybS9jb3JlL3Rpbnlkcm0taGVscGVycy5jIHwgMzAgKysrKysrKysrKysrKysrKysr KysrKysrKysKPiA+Pj4gICAgZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTIyNS5jICAgICAg ICAgICAgICB8IDIzICsrKysrKy0tLS0tLS0tLS0tLS0tCj4gPj4+ICAgIGRyaXZlcnMvZ3B1L2Ry bS90aW55ZHJtL21pMDI4M3F0LmMgICAgICAgICAgICAgfCAgMiArLQo+ID4+PiAgICBkcml2ZXJz L2dwdS9kcm0vdGlueWRybS9taXBpLWRiaS5jICAgICAgICAgICAgIHwgMzAgKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0KPiA+Pj4gICAgZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vcmVwYXBlci5j ICAgICAgICAgICAgICB8IDI4ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ID4+PiAgICBkcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc1ODYuYyAgICAgICAgICAgICAgIHwgMjMgKysrKysrLS0t LS0tLS0tLS0tLS0KPiA+Pj4gICAgZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vc3Q3NzM1ci5jICAg ICAgICAgICAgICB8ICAyICstCj4gPj4+ICAgIGluY2x1ZGUvZHJtL3Rpbnlkcm0vbWlwaS1kYmku aCAgICAgICAgICAgICAgICAgfCAgNCArKystCj4gPj4+ICAgIGluY2x1ZGUvZHJtL3Rpbnlkcm0v dGlueWRybS1oZWxwZXJzLmggICAgICAgICAgfCAgNSArKysrKwo+ID4+PiAgICBpbmNsdWRlL2Ry bS90aW55ZHJtL3Rpbnlkcm0uaCAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwo+ID4+PiAgICAx MCBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKPiA+Pj4K PiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1o ZWxwZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0taGVscGVycy5j Cj4gPj4+IGluZGV4IGQxYzNjZTlhYjI5NC4uZGNkMzkwMTYzYTRhIDEwMDY0NAo+ID4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0taGVscGVycy5jCj4gPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2NvcmUvdGlueWRybS1oZWxwZXJzLmMKPiA+Pj4g QEAgLTc4LDYgKzc4LDM2IEBAIGJvb2wgdGlueWRybV9tZXJnZV9jbGlwcyhzdHJ1Y3QgZHJtX2Ns aXBfcmVjdCAqZHN0LAo+ID4+PiAgICB9Cj4gPj4+ICAgIEVYUE9SVF9TWU1CT0wodGlueWRybV9t ZXJnZV9jbGlwcyk7Cj4gPj4+ICAgIAo+ID4+PiAraW50IHRpbnlkcm1fZmJfZGlydHkoc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPj4+ICsJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsCj4gPj4+ICsJCSAgICAgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgY29s b3IsCj4gPj4+ICsJCSAgICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAo+ID4+PiArCQkg ICAgIHVuc2lnbmVkIGludCBudW1fY2xpcHMpCj4gPj4+ICt7Cj4gPj4+ICsJc3RydWN0IHRpbnlk cm1fZGV2aWNlICp0ZGV2ID0gZmItPmRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4+ICsJc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUgPSAmdGRldi0+cGlwZS5wbGFuZTsKPiA+Pj4gKwlpbnQgcmV0ID0gMDsK PiA+Pj4gKwo+ID4+PiArCWRybV9tb2Rlc2V0X2xvY2soJnBsYW5lLT5tdXRleCwgTlVMTCk7Cj4g Pj4+ICsKPiA+Pj4gKwkvKiBmYmRldiBjYW4gZmx1c2ggZXZlbiB3aGVuIHdlJ3JlIG5vdCBpbnRl cmVzdGVkICovCj4gPj4+ICsJaWYgKHBsYW5lLT5zdGF0ZS0+ZmIgPT0gZmIpIHsKPiA+Pj4gKwkJ bXV0ZXhfbG9jaygmdGRldi0+ZGlydHlfbG9jayk7Cj4gPj4+ICsJCXJldCA9IHRkZXYtPmZiX2Rp cnR5KGZiLCBmaWxlX3ByaXYsIGZsYWdzLAo+ID4+PiArCQkJCSAgICAgY29sb3IsIGNsaXBzLCBu dW1fY2xpcHMpOwo+ID4+PiArCQltdXRleF91bmxvY2soJnRkZXYtPmRpcnR5X2xvY2spOwo+ID4+ PiArCX0KPiA+Pj4gKwo+ID4+PiArCWRybV9tb2Rlc2V0X3VubG9jaygmcGxhbmUtPm11dGV4KTsK PiA+Pj4gKwo+ID4+PiArCWlmIChyZXQpCj4gPj4+ICsJCWRldl9lcnJfb25jZShmYi0+ZGV2LT5k ZXYsCj4gPj4+ICsJCQkgICAgICJGYWlsZWQgdG8gdXBkYXRlIGRpc3BsYXkgJWRcbiIsIHJldCk7 Cj4gPj4+ICsKPiA+Pj4gKwlyZXR1cm4gcmV0Owo+ID4+PiArfQo+ID4+PiArRVhQT1JUX1NZTUJP TCh0aW55ZHJtX2ZiX2RpcnR5KTsKPiA+Pj4gKwo+ID4+PiAgICAvKioKPiA+Pj4gICAgICogdGlu eWRybV9tZW1jcHkgLSBDb3B5IGNsaXAgYnVmZmVyCj4gPj4+ICAgICAqIEBkc3Q6IERlc3RpbmF0 aW9uIGJ1ZmZlcgo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxp OTIyNS5jIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTIyNS5jCj4gPj4+IGluZGV4IDA4 OWQyMjc5OGM4Yi4uMDg3NGU4NzdiMTExIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdGlueWRybS9pbGk5MjI1LmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0v aWxpOTIyNS5jCj4gPj4+IEBAIC04OCwxNCArODgsOCBAQCBzdGF0aWMgaW50IGlsaTkyMjVfZmJf ZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPj4+ICAgIAlib29sIGZ1bGw7Cj4g Pj4+ICAgIAl2b2lkICp0cjsKPiA+Pj4gICAgCj4gPj4+IC0JbXV0ZXhfbG9jaygmdGRldi0+ZGly dHlfbG9jayk7Cj4gPj4+IC0KPiA+Pj4gICAgCWlmICghbWlwaS0+ZW5hYmxlZCkKPiA+Pj4gLQkJ Z290byBvdXRfdW5sb2NrOwo+ID4+PiAtCj4gPj4+IC0JLyogZmJkZXYgY2FuIGZsdXNoIGV2ZW4g d2hlbiB3ZSdyZSBub3QgaW50ZXJlc3RlZCAqLwo+ID4+PiAtCWlmICh0ZGV2LT5waXBlLnBsYW5l LmZiICE9IGZiKQo+ID4+PiAtCQlnb3RvIG91dF91bmxvY2s7Cj4gPj4+ICsJCXJldHVybiAwOwo+ ID4+PiAgICAKPiA+Pj4gICAgCWZ1bGwgPSB0aW55ZHJtX21lcmdlX2NsaXBzKCZjbGlwLCBjbGlw cywgbnVtX2NsaXBzLCBmbGFncywKPiA+Pj4gICAgCQkJCSAgIGZiLT53aWR0aCwgZmItPmhlaWdo dCk7Cj4gPj4+IEBAIC0xMDgsNyArMTAyLDcgQEAgc3RhdGljIGludCBpbGk5MjI1X2ZiX2RpcnR5 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4+PiAgICAJCXRyID0gbWlwaS0+dHhfYnVm Owo+ID4+PiAgICAJCXJldCA9IG1pcGlfZGJpX2J1Zl9jb3B5KG1pcGktPnR4X2J1ZiwgZmIsICZj bGlwLCBzd2FwKTsKPiA+Pj4gICAgCQlpZiAocmV0KQo+ID4+PiAtCQkJZ290byBvdXRfdW5sb2Nr Owo+ID4+PiArCQkJcmV0dXJuIHJldDsKPiA+Pj4gICAgCX0gZWxzZSB7Cj4gPj4+ICAgIAkJdHIg PSBjbWFfb2JqLT52YWRkcjsKPiA+Pj4gICAgCX0KPiA+Pj4gQEAgLTE1OSwyMCArMTUzLDEzIEBA IHN0YXRpYyBpbnQgaWxpOTIyNV9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK PiA+Pj4gICAgCXJldCA9IG1pcGlfZGJpX2NvbW1hbmRfYnVmKG1pcGksIElMSTkyMjVfV1JJVEVf REFUQV9UT19HUkFNLCB0ciwKPiA+Pj4gICAgCQkJCShjbGlwLngyIC0gY2xpcC54MSkgKiAoY2xp cC55MiAtIGNsaXAueTEpICogMik7Cj4gPj4+ICAgIAo+ID4+PiAtb3V0X3VubG9jazoKPiA+Pj4g LQltdXRleF91bmxvY2soJnRkZXYtPmRpcnR5X2xvY2spOwo+ID4+PiAtCj4gPj4+IC0JaWYgKHJl dCkKPiA+Pj4gLQkJZGV2X2Vycl9vbmNlKGZiLT5kZXYtPmRldiwgIkZhaWxlZCB0byB1cGRhdGUg ZGlzcGxheSAlZFxuIiwKPiA+Pj4gLQkJCSAgICAgcmV0KTsKPiA+Pj4gLQo+ID4+PiAgICAJcmV0 dXJuIHJldDsKPiA+Pj4gICAgfQo+ID4+PiAgICAKPiA+Pj4gICAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgaWxpOTIyNV9mYl9mdW5jcyA9IHsKPiA+Pj4gICAgCS5k ZXN0cm95CT0gZHJtX2dlbV9mYl9kZXN0cm95LAo+ID4+PiAgICAJLmNyZWF0ZV9oYW5kbGUJPSBk cm1fZ2VtX2ZiX2NyZWF0ZV9oYW5kbGUsCj4gPj4+IC0JLmRpcnR5CQk9IGlsaTkyMjVfZmJfZGly dHksCj4gPj4+ICsJLmRpcnR5CQk9IHRpbnlkcm1fZmJfZGlydHksCj4gPj4+ICAgIH07Cj4gPj4+ ICAgIAo+ID4+PiAgICBzdGF0aWMgdm9pZCBpbGk5MjI1X3BpcGVfZW5hYmxlKHN0cnVjdCBkcm1f c2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiA+Pj4gQEAgLTI2OSw3ICsyNTYsNyBAQCBzdGF0 aWMgdm9pZCBpbGk5MjI1X3BpcGVfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlw ZSAqcGlwZSwKPiA+Pj4gICAgCj4gPj4+ICAgIAlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIy NV9ESVNQTEFZX0NPTlRST0xfMSwgMHgxMDE3KTsKPiA+Pj4gICAgCj4gPj4+IC0JbWlwaV9kYmlf ZW5hYmxlX2ZsdXNoKG1pcGkpOwo+ID4+PiArCW1pcGlfZGJpX2VuYWJsZV9mbHVzaChtaXBpLCBj cnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gPj4+ICAgIH0KPiA+Pj4gICAgCj4gPj4+ICAgIHN0 YXRpYyB2b2lkIGlsaTkyMjVfcGlwZV9kaXNhYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZSAqcGlwZSkKPiA+Pj4gQEAgLTM0Miw2ICszMjksOCBAQCBzdGF0aWMgaW50IGlsaTkyMjVf aW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwKPiA+Pj4gICAg CWlmIChyZXQpCj4gPj4+ICAgIAkJcmV0dXJuIHJldDsKPiA+Pj4gICAgCj4gPj4+ICsJdGRldi0+ ZmJfZGlydHkgPSBpbGk5MjI1X2ZiX2RpcnR5Owo+ID4+PiArCj4gPj4+ICAgIAlyZXQgPSB0aW55 ZHJtX2Rpc3BsYXlfcGlwZV9pbml0KHRkZXYsIHBpcGVfZnVuY3MsCj4gPj4+ICAgIAkJCQkJRFJN X01PREVfQ09OTkVDVE9SX1ZJUlRVQUwsCj4gPj4+ICAgIAkJCQkJaWxpOTIyNV9mb3JtYXRzLAo+ ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vbWkwMjgzcXQuYyBiL2Ry aXZlcnMvZ3B1L2RybS90aW55ZHJtL21pMDI4M3F0LmMKPiA+Pj4gaW5kZXggODJhZDliNjE4OThl Li40ZTZkMmVlOTRlNTUgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJt L21pMDI4M3F0LmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vbWkwMjgzcXQu Ywo+ID4+PiBAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIG1pMDI4M3F0X2VuYWJsZShz dHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4gPj4+ICAgIAltc2xlZXAoMTAw KTsKPiA+Pj4gICAgCj4gPj4+ICAgIG91dF9lbmFibGU6Cj4gPj4+IC0JbWlwaV9kYmlfZW5hYmxl X2ZsdXNoKG1pcGkpOwo+ID4+PiArCW1pcGlfZGJpX2VuYWJsZV9mbHVzaChtaXBpLCBjcnRjX3N0 YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gPj4+ICAgIH0KPiA+Pj4gICAgCj4gPj4+ICAgIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgbWkwMjgzcXRfcGlwZV9m dW5jcyA9IHsKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL21pcGkt ZGJpLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taXBpLWRiaS5jCj4gPj4+IGluZGV4IDll OTAzODEyYjU3My4uNGQxZmIzMWE3ODFmIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdGlueWRybS9taXBpLWRiaS5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJt L21pcGktZGJpLmMKPiA+Pj4gQEAgLTIxOSwxNCArMjE5LDggQEAgc3RhdGljIGludCBtaXBpX2Ri aV9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+Pj4gICAgCWJvb2wgZnVs bDsKPiA+Pj4gICAgCXZvaWQgKnRyOwo+ID4+PiAgICAKPiA+Pj4gLQltdXRleF9sb2NrKCZ0ZGV2 LT5kaXJ0eV9sb2NrKTsKPiA+Pj4gLQo+ID4+PiAgICAJaWYgKCFtaXBpLT5lbmFibGVkKQo+ID4+ PiAtCQlnb3RvIG91dF91bmxvY2s7Cj4gPj4+IC0KPiA+Pj4gLQkvKiBmYmRldiBjYW4gZmx1c2gg ZXZlbiB3aGVuIHdlJ3JlIG5vdCBpbnRlcmVzdGVkICovCj4gPj4+IC0JaWYgKHRkZXYtPnBpcGUu cGxhbmUuZmIgIT0gZmIpCj4gPj4+IC0JCWdvdG8gb3V0X3VubG9jazsKPiA+Pj4gKwkJcmV0dXJu IDA7Cj4gPj4+ICAgIAo+ID4+PiAgICAJZnVsbCA9IHRpbnlkcm1fbWVyZ2VfY2xpcHMoJmNsaXAs IGNsaXBzLCBudW1fY2xpcHMsIGZsYWdzLAo+ID4+PiAgICAJCQkJICAgZmItPndpZHRoLCBmYi0+ aGVpZ2h0KTsKPiA+Pj4gQEAgLTIzOSw3ICsyMzMsNyBAQCBzdGF0aWMgaW50IG1pcGlfZGJpX2Zi X2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4+PiAgICAJCXRyID0gbWlwaS0+ dHhfYnVmOwo+ID4+PiAgICAJCXJldCA9IG1pcGlfZGJpX2J1Zl9jb3B5KG1pcGktPnR4X2J1Ziwg ZmIsICZjbGlwLCBzd2FwKTsKPiA+Pj4gICAgCQlpZiAocmV0KQo+ID4+PiAtCQkJZ290byBvdXRf dW5sb2NrOwo+ID4+PiArCQkJcmV0dXJuIHJldDsKPiA+Pj4gICAgCX0gZWxzZSB7Cj4gPj4+ICAg IAkJdHIgPSBjbWFfb2JqLT52YWRkcjsKPiA+Pj4gICAgCX0KPiA+Pj4gQEAgLTI1NCwyMCArMjQ4 LDEzIEBAIHN0YXRpYyBpbnQgbWlwaV9kYmlfZmJfZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIsCj4gPj4+ICAgIAlyZXQgPSBtaXBpX2RiaV9jb21tYW5kX2J1ZihtaXBpLCBNSVBJX0RD U19XUklURV9NRU1PUllfU1RBUlQsIHRyLAo+ID4+PiAgICAJCQkJKGNsaXAueDIgLSBjbGlwLngx KSAqIChjbGlwLnkyIC0gY2xpcC55MSkgKiAyKTsKPiA+Pj4gICAgCj4gPj4+IC1vdXRfdW5sb2Nr Ogo+ID4+PiAtCW11dGV4X3VubG9jaygmdGRldi0+ZGlydHlfbG9jayk7Cj4gPj4+IC0KPiA+Pj4g LQlpZiAocmV0KQo+ID4+PiAtCQlkZXZfZXJyX29uY2UoZmItPmRldi0+ZGV2LCAiRmFpbGVkIHRv IHVwZGF0ZSBkaXNwbGF5ICVkXG4iLAo+ID4+PiAtCQkJICAgICByZXQpOwo+ID4+PiAtCj4gPj4+ ICAgIAlyZXR1cm4gcmV0Owo+ID4+PiAgICB9Cj4gPj4+ICAgIAo+ID4+PiAgICBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBtaXBpX2RiaV9mYl9mdW5jcyA9IHsKPiA+ Pj4gICAgCS5kZXN0cm95CT0gZHJtX2dlbV9mYl9kZXN0cm95LAo+ID4+PiAgICAJLmNyZWF0ZV9o YW5kbGUJPSBkcm1fZ2VtX2ZiX2NyZWF0ZV9oYW5kbGUsCj4gPj4+IC0JLmRpcnR5CQk9IG1pcGlf ZGJpX2ZiX2RpcnR5LAo+ID4+PiArCS5kaXJ0eQkJPSB0aW55ZHJtX2ZiX2RpcnR5LAo+ID4+PiAg ICB9Owo+ID4+PiAgICAKPiA+Pj4gICAgLyoqCj4gPj4+IEBAIC0yNzgsMTMgKzI2NSwxNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBtaXBpX2RiaV9mYl9mdW5j cyA9IHsKPiA+Pj4gICAgICogZW5hYmxlcyB0aGUgYmFja2xpZ2h0LiBEcml2ZXJzIGNhbiB1c2Ug dGhpcyBpbiB0aGVpcgo+ID4+PiAgICAgKiAmZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3Mt PmVuYWJsZSBjYWxsYmFjay4KPiA+Pj4gICAgICovCj4gPj4+IC12b2lkIG1pcGlfZGJpX2VuYWJs ZV9mbHVzaChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGkpCj4gPj4+ICt2b2lkIG1pcGlfZGJpX2VuYWJs ZV9mbHVzaChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksCj4gPj4+ICsJCQkgICBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4+ICsJCQkgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiA+Pj4gICAgewo+ID4+PiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gbWlwaS0+dGlueWRybS5waXBlLnBsYW5lLmZiOwo+ID4+PiArCXN0cnVjdCB0aW55ZHJt X2RldmljZSAqdGRldiA9ICZtaXBpLT50aW55ZHJtOwo+ID4+PiArCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmZiOwo+ID4+PiAgICAKPiA+Pj4gICAgCW1pcGktPmVu YWJsZWQgPSB0cnVlOwo+ID4+PiAgICAJaWYgKGZiKQo+ID4+PiAtCQlmYi0+ZnVuY3MtPmRpcnR5 KGZiLCBOVUxMLCAwLCAwLCBOVUxMLCAwKTsKPiA+Pj4gKwkJdGRldi0+ZmJfZGlydHkoZmIsIE5V TEwsIDAsIDAsIE5VTEwsIDApOwo+ID4+PiAgICAKPiA+Pj4gICAgCWJhY2tsaWdodF9lbmFibGUo bWlwaS0+YmFja2xpZ2h0KTsKPiA+Pj4gICAgfQo+ID4+PiBAQCAtMzgxLDYgKzM3MSw4IEBAIGlu dCBtaXBpX2RiaV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1pcGlfZGJpICptaXBp LAo+ID4+PiAgICAJaWYgKHJldCkKPiA+Pj4gICAgCQlyZXR1cm4gcmV0Owo+ID4+PiAgICAKPiA+ Pj4gKwl0ZGV2LT5mYl9kaXJ0eSA9IG1pcGlfZGJpX2ZiX2RpcnR5Owo+ID4+PiArCj4gPj4+ICAg IAkvKiBUT0RPOiBNYXliZSBhZGQgRFJNX01PREVfQ09OTkVDVE9SX1NQSSAqLwo+ID4+PiAgICAJ cmV0ID0gdGlueWRybV9kaXNwbGF5X3BpcGVfaW5pdCh0ZGV2LCBwaXBlX2Z1bmNzLAo+ID4+PiAg ICAJCQkJCURSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMLAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3Rpbnlkcm0vcmVwYXBlci5jIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0v cmVwYXBlci5jCj4gPj4+IGluZGV4IDMzYjRhNzE5MTZlNC4uYmI2ZjgwYTgxODk5IDEwMDY0NAo+ ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9yZXBhcGVyLmMKPiA+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vcmVwYXBlci5jCj4gPj4+IEBAIC01NDAsMTQgKzU0MCw4 IEBAIHN0YXRpYyBpbnQgcmVwYXBlcl9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKPiA+Pj4gICAgCWNsaXAueTEgPSAwOwo+ID4+PiAgICAJY2xpcC55MiA9IGZiLT5oZWlnaHQ7 Cj4gPj4+ICAgIAo+ID4+PiAtCW11dGV4X2xvY2soJnRkZXYtPmRpcnR5X2xvY2spOwo+ID4+PiAt Cj4gPj4+ICAgIAlpZiAoIWVwZC0+ZW5hYmxlZCkKPiA+Pj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ ID4+PiAtCj4gPj4+IC0JLyogZmJkZXYgY2FuIGZsdXNoIGV2ZW4gd2hlbiB3ZSdyZSBub3QgaW50 ZXJlc3RlZCAqLwo+ID4+PiAtCWlmICh0ZGV2LT5waXBlLnBsYW5lLmZiICE9IGZiKQo+ID4+PiAt CQlnb3RvIG91dF91bmxvY2s7Cj4gPj4+ICsJCXJldHVybiAwOwo+ID4+PiAgICAKPiA+Pj4gICAg CXJlcGFwZXJfZ2V0X3RlbXBlcmF0dXJlKGVwZCk7Cj4gPj4+ICAgIAo+ID4+PiBAQCAtNTU1LDE2 ICs1NDksMTQgQEAgc3RhdGljIGludCByZXBhcGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAo+ID4+PiAgICAJCSAgZXBkLT5mYWN0b3JlZF9zdGFnZV90aW1lKTsKPiA+Pj4g ICAgCj4gPj4+ICAgIAlidWYgPSBrbWFsbG9jKGZiLT53aWR0aCAqIGZiLT5oZWlnaHQsIEdGUF9L RVJORUwpOwo+ID4+PiAtCWlmICghYnVmKSB7Cj4gPj4+IC0JCXJldCA9IC1FTk9NRU07Cj4gPj4+ IC0JCWdvdG8gb3V0X3VubG9jazsKPiA+Pj4gLQl9Cj4gPj4+ICsJaWYgKCFidWYpCj4gPj4+ICsJ CXJldHVybiAtRU5PTUVNOwo+ID4+PiAgICAKPiA+Pj4gICAgCWlmIChpbXBvcnRfYXR0YWNoKSB7 Cj4gPj4+ICAgIAkJcmV0ID0gZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKGltcG9ydF9hdHRhY2gt PmRtYWJ1ZiwKPiA+Pj4gICAgCQkJCQkgICAgICAgRE1BX0ZST01fREVWSUNFKTsKPiA+Pj4gICAg CQlpZiAocmV0KQo+ID4+PiAtCQkJZ290byBvdXRfdW5sb2NrOwo+ID4+PiArCQkJZ290byBvdXRf ZnJlZTsKPiA+Pj4gICAgCX0KPiA+Pj4gICAgCj4gPj4+ICAgIAl0aW55ZHJtX3hyZ2I4ODg4X3Rv X2dyYXk4KGJ1ZiwgY21hX29iai0+dmFkZHIsIGZiLCAmY2xpcCk7Cj4gPj4+IEBAIC01NzMsNyAr NTY1LDcgQEAgc3RhdGljIGludCByZXBhcGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLAo+ID4+PiAgICAJCXJldCA9IGRtYV9idWZfZW5kX2NwdV9hY2Nlc3MoaW1wb3J0X2F0 dGFjaC0+ZG1hYnVmLAo+ID4+PiAgICAJCQkJCSAgICAgRE1BX0ZST01fREVWSUNFKTsKPiA+Pj4g ICAgCQlpZiAocmV0KQo+ID4+PiAtCQkJZ290byBvdXRfdW5sb2NrOwo+ID4+PiArCQkJZ290byBv dXRfZnJlZTsKPiA+Pj4gICAgCX0KPiA+Pj4gICAgCj4gPj4+ICAgIAlyZXBhcGVyX2dyYXk4X3Rv X21vbm9fcmV2ZXJzZWQoYnVmLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwo+ID4+PiBAQCAtNjI1 LDExICs2MTcsNyBAQCBzdGF0aWMgaW50IHJlcGFwZXJfZmJfZGlydHkoc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCj4gPj4+ICAgIAkJCX0KPiA+Pj4gICAgCX0KPiA+Pj4gICAgCj4gPj4+IC1v dXRfdW5sb2NrOgo+ID4+PiAtCW11dGV4X3VubG9jaygmdGRldi0+ZGlydHlfbG9jayk7Cj4gPj4+ IC0KPiA+Pj4gLQlpZiAocmV0KQo+ID4+PiAtCQlEUk1fREVWX0VSUk9SKGZiLT5kZXYtPmRldiwg IkZhaWxlZCB0byB1cGRhdGUgZGlzcGxheSAoJWQpXG4iLCByZXQpOwo+ID4+PiArb3V0X2ZyZWU6 Cj4gPj4+ICAgIAlrZnJlZShidWYpOwo+ID4+PiAgICAKPiA+Pj4gICAgCXJldHVybiByZXQ7Cj4g Pj4+IEBAIC02MzgsNyArNjI2LDcgQEAgc3RhdGljIGludCByZXBhcGVyX2ZiX2RpcnR5KHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4+PiAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlcl9mdW5jcyByZXBhcGVyX2ZiX2Z1bmNzID0gewo+ID4+PiAgICAJLmRlc3Ryb3kJ PSBkcm1fZ2VtX2ZiX2Rlc3Ryb3ksCj4gPj4+ICAgIAkuY3JlYXRlX2hhbmRsZQk9IGRybV9nZW1f ZmJfY3JlYXRlX2hhbmRsZSwKPiA+Pj4gLQkuZGlydHkJCT0gcmVwYXBlcl9mYl9kaXJ0eSwKPiA+ Pj4gKwkuZGlydHkJCT0gdGlueWRybV9mYl9kaXJ0eSwKPiA+Pj4gICAgfTsKPiA+Pj4gICAgCj4g Pj4+ICAgIHN0YXRpYyB2b2lkIHBvd2VyX29mZihzdHJ1Y3QgcmVwYXBlcl9lcGQgKmVwZCkKPiA+ Pj4gQEAgLTEwNzAsNiArMTA1OCw4IEBAIHN0YXRpYyBpbnQgcmVwYXBlcl9wcm9iZShzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpKQo+ID4+PiAgICAJaWYgKHJldCkKPiA+Pj4gICAgCQlyZXR1cm4gcmV0 Owo+ID4+PiAgICAKPiA+Pj4gKwl0ZGV2LT5mYl9kaXJ0eSA9IHJlcGFwZXJfZmJfZGlydHk7Cj4g Pj4+ICsKPiA+Pj4gICAgCXJldCA9IHRpbnlkcm1fZGlzcGxheV9waXBlX2luaXQodGRldiwgJnJl cGFwZXJfcGlwZV9mdW5jcywKPiA+Pj4gICAgCQkJCQlEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVB TCwKPiA+Pj4gICAgCQkJCQlyZXBhcGVyX2Zvcm1hdHMsCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc1ODYuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0 NzU4Ni5jCj4gPj4+IGluZGV4IGJiMDhiMjkzYzhjZS4uMjI2NDRiODgxOTlhIDEwMDY0NAo+ID4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc1ODYuYwo+ID4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc1ODYuYwo+ID4+PiBAQCAtMTIwLDE0ICsxMjAsOCBAQCBz dGF0aWMgaW50IHN0NzU4Nl9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ Pj4gICAgCWludCBzdGFydCwgZW5kOwo+ID4+PiAgICAJaW50IHJldCA9IDA7Cj4gPj4+ICAgIAo+ ID4+PiAtCW11dGV4X2xvY2soJnRkZXYtPmRpcnR5X2xvY2spOwo+ID4+PiAtCj4gPj4+ICAgIAlp ZiAoIW1pcGktPmVuYWJsZWQpCj4gPj4+IC0JCWdvdG8gb3V0X3VubG9jazsKPiA+Pj4gLQo+ID4+ PiAtCS8qIGZiZGV2IGNhbiBmbHVzaCBldmVuIHdoZW4gd2UncmUgbm90IGludGVyZXN0ZWQgKi8K PiA+Pj4gLQlpZiAodGRldi0+cGlwZS5wbGFuZS5mYiAhPSBmYikKPiA+Pj4gLQkJZ290byBvdXRf dW5sb2NrOwo+ID4+PiArCQlyZXR1cm4gMDsKPiA+Pj4gICAgCj4gPj4+ICAgIAl0aW55ZHJtX21l cmdlX2NsaXBzKCZjbGlwLCBjbGlwcywgbnVtX2NsaXBzLCBmbGFncywgZmItPndpZHRoLAo+ID4+ PiAgICAJCQkgICAgZmItPmhlaWdodCk7Cj4gPj4+IEBAIC0xNDEsNyArMTM1LDcgQEAgc3RhdGlj IGludCBzdDc1ODZfZmJfZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPj4+ICAg IAo+ID4+PiAgICAJcmV0ID0gc3Q3NTg2X2J1Zl9jb3B5KG1pcGktPnR4X2J1ZiwgZmIsICZjbGlw KTsKPiA+Pj4gICAgCWlmIChyZXQpCj4gPj4+IC0JCWdvdG8gb3V0X3VubG9jazsKPiA+Pj4gKwkJ cmV0dXJuIHJldDsKPiA+Pj4gICAgCj4gPj4+ICAgIAkvKiBQaXhlbHMgYXJlIHBhY2tlZCAzIHBl ciBieXRlICovCj4gPj4+ICAgIAlzdGFydCA9IGNsaXAueDEgLyAzOwo+ID4+PiBAQCAtMTU4LDIw ICsxNTIsMTMgQEAgc3RhdGljIGludCBzdDc1ODZfZmJfZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsCj4gPj4+ICAgIAkJCQkgICAodTggKiltaXBpLT50eF9idWYsCj4gPj4+ICAgIAkJ CQkgICAoZW5kIC0gc3RhcnQpICogKGNsaXAueTIgLSBjbGlwLnkxKSk7Cj4gPj4+ICAgIAo+ID4+ PiAtb3V0X3VubG9jazoKPiA+Pj4gLQltdXRleF91bmxvY2soJnRkZXYtPmRpcnR5X2xvY2spOwo+ ID4+PiAtCj4gPj4+IC0JaWYgKHJldCkKPiA+Pj4gLQkJZGV2X2Vycl9vbmNlKGZiLT5kZXYtPmRl diwgIkZhaWxlZCB0byB1cGRhdGUgZGlzcGxheSAlZFxuIiwKPiA+Pj4gLQkJCSAgICAgcmV0KTsK PiA+Pj4gLQo+ID4+PiAgICAJcmV0dXJuIHJldDsKPiA+Pj4gICAgfQo+ID4+PiAgICAKPiA+Pj4g ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3Mgc3Q3NTg2X2ZiX2Z1 bmNzID0gewo+ID4+PiAgICAJLmRlc3Ryb3kJPSBkcm1fZ2VtX2ZiX2Rlc3Ryb3ksCj4gPj4+ICAg IAkuY3JlYXRlX2hhbmRsZQk9IGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZSwKPiA+Pj4gLQkuZGly dHkJCT0gc3Q3NTg2X2ZiX2RpcnR5LAo+ID4+PiArCS5kaXJ0eQkJPSB0aW55ZHJtX2ZiX2RpcnR5 LAo+ID4+PiAgICB9Owo+ID4+PiAgICAKPiA+Pj4gICAgc3RhdGljIHZvaWQgc3Q3NTg2X3BpcGVf ZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiA+Pj4gQEAgLTIz OCw3ICsyMjUsNyBAQCBzdGF0aWMgdm9pZCBzdDc1ODZfcGlwZV9lbmFibGUoc3RydWN0IGRybV9z aW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ID4+PiAgICAKPiA+Pj4gICAgCW1pcGlfZGJpX2Nv bW1hbmQobWlwaSwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04pOwo+ID4+PiAgICAKPiA+Pj4gLQlt aXBpX2RiaV9lbmFibGVfZmx1c2gobWlwaSk7Cj4gPj4+ICsJbWlwaV9kYmlfZW5hYmxlX2ZsdXNo KG1pcGksIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsKPiA+Pj4gICAgfQo+ID4+PiAgICAKPiA+ Pj4gICAgc3RhdGljIHZvaWQgc3Q3NTg2X3BpcGVfZGlzYWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9k aXNwbGF5X3BpcGUgKnBpcGUpCj4gPj4+IEBAIC0yNzgsNiArMjY1LDggQEAgc3RhdGljIGludCBz dDc1ODZfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwKPiA+ Pj4gICAgCWlmIChyZXQpCj4gPj4+ICAgIAkJcmV0dXJuIHJldDsKPiA+Pj4gICAgCj4gPj4+ICsJ dGRldi0+ZmJfZGlydHkgPSBzdDc1ODZfZmJfZGlydHk7Cj4gPj4+ICsKPiA+Pj4gICAgCXJldCA9 IHRpbnlkcm1fZGlzcGxheV9waXBlX2luaXQodGRldiwgcGlwZV9mdW5jcywKPiA+Pj4gICAgCQkJ CQlEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCwKPiA+Pj4gICAgCQkJCQlzdDc1ODZfZm9ybWF0 cywKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIuYyBi L2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIuYwo+ID4+PiBpbmRleCAxOWIyOGY4Yzc4 ZGIuLjE4OWEwNzg5NGQzNiAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vc3Q3NzM1ci5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIu Ywo+ID4+PiBAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgdm9pZCBqZF90MTgwMDNfdDAxX3BpcGVf ZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiA+Pj4gICAgCj4g Pj4+ICAgIAltc2xlZXAoMjApOwo+ID4+PiAgICAKPiA+Pj4gLQltaXBpX2RiaV9lbmFibGVfZmx1 c2gobWlwaSk7Cj4gPj4+ICsJbWlwaV9kYmlfZW5hYmxlX2ZsdXNoKG1pcGksIGNydGNfc3RhdGUs IHBsYW5lX3N0YXRlKTsKPiA+Pj4gICAgfQo+ID4+PiAgICAKPiA+Pj4gICAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBqZF90MTgwMDNfdDAxX3BpcGVf ZnVuY3MgPSB7Cj4gPj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS90aW55ZHJtL21pcGktZGJp LmggYi9pbmNsdWRlL2RybS90aW55ZHJtL21pcGktZGJpLmgKPiA+Pj4gaW5kZXggNDRlODI0YWYy ZWY2Li5iOGJhNTg4NjE5ODYgMTAwNjQ0Cj4gPj4+IC0tLSBhL2luY2x1ZGUvZHJtL3Rpbnlkcm0v bWlwaS1kYmkuaAo+ID4+PiArKysgYi9pbmNsdWRlL2RybS90aW55ZHJtL21pcGktZGJpLmgKPiA+ Pj4gQEAgLTY3LDcgKzY3LDkgQEAgaW50IG1pcGlfZGJpX2luaXQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksCj4gPj4+ICAgIAkJICBjb25zdCBzdHJ1Y3QgZHJtX3Np bXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgKnBpcGVfZnVuY3MsCj4gPj4+ICAgIAkJICBzdHJ1Y3Qg ZHJtX2RyaXZlciAqZHJpdmVyLAo+ID4+PiAgICAJCSAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsIHVuc2lnbmVkIGludCByb3RhdGlvbik7Cj4gPj4+IC12b2lkIG1pcGlfZGJp X2VuYWJsZV9mbHVzaChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGkpOwo+ID4+PiArdm9pZCBtaXBpX2Ri aV9lbmFibGVfZmx1c2goc3RydWN0IG1pcGlfZGJpICptaXBpLAo+ID4+PiArCQkJICAgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+PiArCQkJICAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcGxhbl9zdGF0ZSk7Cj4gPj4+ICAgIHZvaWQgbWlwaV9kYmlfcGlwZV9kaXNhYmxl KHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSk7Cj4gPj4+ICAgIHZvaWQgbWlw aV9kYmlfaHdfcmVzZXQoc3RydWN0IG1pcGlfZGJpICptaXBpKTsKPiA+Pj4gICAgYm9vbCBtaXBp X2RiaV9kaXNwbGF5X2lzX29uKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSk7Cj4gPj4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0taGVscGVycy5oIGIvaW5jbHVkZS9kcm0v dGlueWRybS90aW55ZHJtLWhlbHBlcnMuaAo+ID4+PiBpbmRleCAwYTRkZGJjMDRjNjAuLjViOTZm MGIxMmM4YyAxMDA2NDQKPiA+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vdGlueWRybS90aW55ZHJtLWhl bHBlcnMuaAo+ID4+PiArKysgYi9pbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0taGVscGVycy5o Cj4gPj4+IEBAIC0zNiw2ICszNiwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdGlueWRybV9tYWNo aW5lX2xpdHRsZV9lbmRpYW4odm9pZCkKPiA+Pj4gICAgYm9vbCB0aW55ZHJtX21lcmdlX2NsaXBz KHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpkc3QsCj4gPj4+ICAgIAkJCSBzdHJ1Y3QgZHJtX2NsaXBf cmVjdCAqc3JjLCB1bnNpZ25lZCBpbnQgbnVtX2NsaXBzLAo+ID4+PiAgICAJCQkgdW5zaWduZWQg aW50IGZsYWdzLCB1MzIgbWF4X3dpZHRoLCB1MzIgbWF4X2hlaWdodCk7Cj4gPj4+ICtpbnQgdGlu eWRybV9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+Pj4gKwkJICAgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiA+Pj4gKwkJICAgICB1bnNpZ25lZCBpbnQgZmxh Z3MsIHVuc2lnbmVkIGludCBjb2xvciwKPiA+Pj4gKwkJICAgICBzdHJ1Y3QgZHJtX2NsaXBfcmVj dCAqY2xpcHMsCj4gPj4+ICsJCSAgICAgdW5zaWduZWQgaW50IG51bV9jbGlwcyk7Cj4gPj4+ICAg IHZvaWQgdGlueWRybV9tZW1jcHkodm9pZCAqZHN0LCB2b2lkICp2YWRkciwgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsCj4gPj4+ICAgIAkJICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlw KTsKPiA+Pj4gICAgdm9pZCB0aW55ZHJtX3N3YWIxNih1MTYgKmRzdCwgdm9pZCAqdmFkZHIsIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v dGlueWRybS90aW55ZHJtLmggYi9pbmNsdWRlL2RybS90aW55ZHJtL3Rpbnlkcm0uaAo+ID4+PiBp bmRleCAwN2E5YTExZmUxOWQuLmVhMmM3MTA4MTE5MCAxMDA2NDQKPiA+Pj4gLS0tIGEvaW5jbHVk ZS9kcm0vdGlueWRybS90aW55ZHJtLmgKPiA+Pj4gKysrIGIvaW5jbHVkZS9kcm0vdGlueWRybS90 aW55ZHJtLmgKPiA+Pj4gQEAgLTI2LDYgKzI2LDEwIEBAIHN0cnVjdCB0aW55ZHJtX2RldmljZSB7 Cj4gPj4+ICAgIAlzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgcGlwZTsKPiA+Pj4gICAg CXN0cnVjdCBtdXRleCBkaXJ0eV9sb2NrOwo+ID4+PiAgICAJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlcl9mdW5jcyAqZmJfZnVuY3M7Cj4gPj4+ICsJaW50ICgqZmJfZGlydHkpKHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAo+ID4+PiArCQkJc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYsIHVuc2lnbmVkIGZsYWdzLAo+ID4+PiArCQkJdW5zaWduZWQgY29sb3IsIHN0cnVj dCBkcm1fY2xpcF9yZWN0ICpjbGlwcywKPiA+Pj4gKwkJCXVuc2lnbmVkIG51bV9jbGlwcyk7Cj4g Pj4+ICAgIH07Cj4gPj4+ICAgIAo+ID4+PiAgICBzdGF0aWMgaW5saW5lIHN0cnVjdCB0aW55ZHJt X2RldmljZSAqCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK