From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH 4/5] drm/tidss: New driver for TI Keystone platform Display SubSystem Date: Tue, 26 Nov 2019 22:26:34 +0100 Message-ID: <20191126212634.GA3807@ravnborg.org> References: <22b946bd3ad7617f44b3705f785adb21c8593c80.1574760777.git.jsarha@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asavdk3.altibox.net (asavdk3.altibox.net [109.247.116.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC55C89498 for ; Tue, 26 Nov 2019 21:26:39 +0000 (UTC) Content-Disposition: inline In-Reply-To: <22b946bd3ad7617f44b3705f785adb21c8593c80.1574760777.git.jsarha@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha Cc: yamonkar@cadence.com, praneeth@ti.com, subhajit_paul@ti.com, dri-devel@lists.freedesktop.org, peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, sjakhade@cadence.com List-Id: dri-devel@lists.freedesktop.org SGkgSnlyaS4KClRvb2sgYSBxdWljayBsb29rIC0gbG9va3MgbGlrZSBhIHZlcnkgbmljZSBkcml2 ZXIuClNvbWUgZHJpdmUgYnkgY29tbWVudHMgYmVsb3cuCgpJIHdhcyBsZWZ0IHdpdGggdGhlIGlt cHJlc3Npb24gdGhhdCB0aGVyZSBpcyBhIGxvdCBvZiBjb2RlIHRvIHN1cHBvcnQKdmJsYW5rIC0g YW5kIEkgd29uZGVyIGlmIHRoZXJlIGlzIHNvbWUgZ2VuZXJhbCBjb2RlIHRoYXQgY2FuIGhlbHAg eW91CmhlcmUgdGhhdCB5b3UgaGF2ZSBtaXNzZWQuCgoJU2FtCgoKT24gVHVlLCBOb3YgMjYsIDIw MTkgYXQgMTE6NTM6MDZBTSArMDIwMCwgSnlyaSBTYXJoYSB3cm90ZToKPiBUaGlzIHBhdGNoIGFk ZHMgYSBuZXcgRFJNIGRyaXZlciBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgRFNTIElQcyB1c2VkIG9u Cj4gVGV4YXMgSW5zdHJ1bWVudHMgS2V5c3RvbmUgSzJHLCBBTTY1eCwgYW5kIEo3MjFlIFNvQ3Mu IFRoZSBuZXcgRFNTIElQIGlzCj4gYSBtYWpvciBjaGFuZ2UgdG8gdGhlIG9sZGVyIERTUyBJUCB2 ZXJzaW9ucywgd2hpY2ggYXJlIHN1cHBvcnRlZCBieQo+IHRoZSBvbWFwZHJtIGRyaXZlci4gV2hp bGUgb24gaGlnaGVyIGxldmVsIHRoZSBLZXlzdG9uZSBEU1MgcmVzZW1ibGVzCj4gdGhlIG9sZGVy IERTUyB2ZXJzaW9ucywgdGhlIHJlZ2lzdGVycyBhcmUgY29tcGxldGVseSBkaWZmZXJlbnQgYW5k IHRoZQo+IGludGVybmFsIHBpcGVsaW5lcyBkaWZmZXIgYSBsb3QuCj4gCj4gRFNTIElQIGZvdW5k IG9uIEsyRyBpcyBhbiAidWx0cmEtbGlnaHQiIHZlcnNpb24sIGFuZCBoYXMgb25seSBhIHNpbmds ZQo+IHBsYW5lIGFuZCBhIHNpbmdsZSBvdXRwdXQuIFRoZSBLZXlzdG9uZSAzIERTUyBJUHMgYXJl IGZvdW5kIG9uIEFNNjV4Cj4gYW5kIEo3MjFFIFNvQ3MuIEFNNjV4IERTUyBoYXMgdHdvIHZpZGVv IHBvcnRzLCBvbmUgZnVsbCB2aWRlbyBwbGFuZSwKPiBhbmQgYW5vdGhlciAibGl0ZSIgcGxhbmUg d2l0aG91dCBzY2FsaW5nIHN1cHBvcnQuIEo3MjFFIGhhcyA0IHZpZGVvCj4gcG9ydHMsIDIgdmlk ZW8gcGxhbmVzIGFuZCAyIGxpdGUgcGxhbmVzLiBBTTY1eCBEU1MgaGFzIGFsc28gaW50ZWdyYXRl ZAo+IE9MREkgKExWRFMpIG91dHB1dC4KPiAKPiBDby1kZXZlbG9wZWQtYnk6IFRvbWkgVmFsa2Vp bmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8 anNhcmhhQHRpLmNvbT4KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlkc3MvS2NvbmZpZwo+IEBA IC0wLDAgKzEsMTUgQEAKPiArY29uZmlnIERSTV9USURTUwo+ICsJdHJpc3RhdGUgIkRSTSBTdXBw b3J0IGZvciBUSSBLZXlzdG9uZSIKPiArCWRlcGVuZHMgb24gRFJNICYmIE9GCj4gKwlkZXBlbmRz IG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1QKPiArCXNlbGVjdCBEUk1fS01TX0hFTFBF Ugo+ICsJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ICsJc2VsZWN0IERSTV9HRU1fQ01BX0hF TFBFUgo+ICsJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTClZJREVPTU9ERV9IRUxQRVJTIHNlZW1z IHVudXNlZC4KCj4gKwloZWxwCj4gKwkgIFRoZSBUSSBLZXlzdG9uZSBmYW1pbHkgU29DcyBpbnRy b2R1Y2VkIGEgbmV3IGdlbmVyYXRpb24gb2YKPiArCSAgRGlzcGxheSBTdWJTeXN0ZW0uIFRoZXJl IGlzIGN1cnJlbnRseSB0aHJlZSBLZXlzdG9uZSBmYW1pbHkKPiArCSAgU29DcyByZWxlYXNlZCB3 aXRoIERTUy4gRWFjaCB3aXRoIHNvbWV3aGF0IGRpZmZlcmVudCB2ZXJzaW9uCj4gKwkgIG9mIGl0 LiBUaGUgU29DcyBhcmUgNjZBSzJHeCwgQU02NXgsIGFuZCBKNzIxRS4gU2V0IHRoaXMgdG8gWQo+ ICsJICBvciBNIHRvIGFkZCBkaXNwbGF5IHN1cHBvcnQgZm9yIFRJIEtleXN0b25lIGZhbWlseQo+ ICsJICBwbGF0Zm9ybXMuCgoKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlkc3NfY3J0 Yy5jCj4gQEAgLTAsMCArMSwzNzMgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IFRleGFzIEluc3RydW1lbnRzIElu Y29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLwo+ICsgKiBBdXRob3I6IFRvbWkgVmFsa2Vp bmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGRybS9k cm1QLmg+ClRoaXMgZmlsZSBpcyBubyBsb25nZXIgcHJlc2VudCBpbiB0aGUgdHJlZS4KCj4gKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f Y3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9w bGFuZV9oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlICJ0aWRzc19jcnRjLmgiCj4gKyNpbmNsdWRl ICJ0aWRzc19kaXNwYy5oIgo+ICsjaW5jbHVkZSAidGlkc3NfZHJ2LmgiCj4gKyNpbmNsdWRlICJ0 aWRzc19pcnEuaCIKPiArCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90 aWRzcy90aWRzc19jcnRjLmgKPiBAQCAtMCwwICsxLDQ1IEBACj4gKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBUZXhh cyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KPiArICogQXV0 aG9yOiBUb21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5AdGkuY29tPgo+ICsgKi8KPiArCj4g KyNpZm5kZWYgX19USURTU19DUlRDX0hfXwo+ICsjZGVmaW5lIF9fVElEU1NfQ1JUQ19IX18KPiAr Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBsZXRp b24uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KClRoZSBub3JtYWwgd2F5IHRvIHN0cnVj dHVyZSBoZWFkZXIgZmlsZXMgYXJlOgoKI2luY2x1ZGUgPGxpbnV4LyouaD4KCiNpbmNsdWRlIDxk cm0vKi5oPgoKd2l0aCBlYWNoIGJsb2NrIHNvcnRlZCBhbHBoYWJldGljYWxseS4KCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19kaXNwYy5jCj4gQEAg LTAsMCArMSwyNjQ1IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4g Ky8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IFRleGFzIEluc3RydW1lbnRzIEluY29y cG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLwo+ICsgKiBBdXRob3I6IEp5cmkgU2FyaGEgPGpz YXJoYUB0aS5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4K PiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CkJsb2NrcyBhcmUg ZmluZSwgYnV0IHNvcnQgdGhlIGluY2x1ZGUgZmlsZXMuCj4gKwo+ICsjaW5jbHVkZSAidGlkc3Nf ZHJ2LmgiCj4gKyNpbmNsdWRlICJ0aWRzc19jcnRjLmgiCj4gKyNpbmNsdWRlICJ0aWRzc19wbGFu ZS5oIgo+ICsjaW5jbHVkZSAidGlkc3NfaXJxLmgiCj4gKwo+ICsjaW5jbHVkZSAidGlkc3Nfc2Nh bGVfY29lZnMuaCIKPiArI2luY2x1ZGUgInRpZHNzX2Rpc3BjX3JlZ3MuaCIKPiArCj4gKyNpbmNs dWRlICJ0aWRzc19kaXNwYy5oIgo+ICsKCj4gKwo+ICtlbnVtIGM4X3RvX2MxMl9tb2RlIHsgQzhf VE9fQzEyX1JFUExJQ0FURSwgQzhfVE9fQzEyX01BWCwgQzhfVE9fQzEyX01JTiB9Owo+ICsKPiAr c3RhdGljIHUxNiBjOF90b19jMTIodTggYzgsIGVudW0gYzhfdG9fYzEyX21vZGUgbW9kZSkKPiAr ewo+ICsJdTE2IGMxMjsKPiArCj4gKwljMTIgPSBjOCA8PCA0Owo+ICsKPiArCXN3aXRjaCAobW9k ZSkgewo+ICsJY2FzZSBDOF9UT19DMTJfUkVQTElDQVRFOgo+ICsJCS8qIENvcHkgYzggNCBNU0Ig dG8gNCBMU0IgZm9yIGZ1bGwgc2NhbGUgYzEyICovCj4gKwkJYzEyIHw9IGM4ID4+IDQ7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIEM4X1RPX0MxMl9NQVg6Cj4gKwkJYzEyIHw9IDB4RjsKPiArCQlicmVh azsKPiArCWRlZmF1bHQ6Cj4gKwljYXNlIEM4X1RPX0MxMl9NSU46Cj4gKwkJYnJlYWs7Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIGMxMjsKPiArfQo+ICsKPiArc3RhdGljIHU2NCBhcmdiODg4OF90b19h cmdiMTIxMjEyMTIodTMyIGFyZ2I4ODg4LCBlbnVtIGM4X3RvX2MxMl9tb2RlIG0pCj4gK3sKPiAr CXU4IGEsIHIsIGcsIGI7Cj4gKwl1NjQgdjsKPiArCj4gKwlhID0gKGFyZ2I4ODg4ID4+IDI0KSAm IDB4ZmY7Cj4gKwlyID0gKGFyZ2I4ODg4ID4+IDE2KSAmIDB4ZmY7Cj4gKwlnID0gKGFyZ2I4ODg4 ID4+IDgpICYgMHhmZjsKPiArCWIgPSAoYXJnYjg4ODggPj4gMCkgJiAweGZmOwo+ICsKPiArCXYg PSAoKHU2NCljOF90b19jMTIoYSwgbSkgPDwgMzYpIHwgKCh1NjQpYzhfdG9fYzEyKHIsIG0pIDw8 IDI0KSB8Cj4gKwkJKCh1NjQpYzhfdG9fYzEyKGcsIG0pIDw8IDEyKSB8ICh1NjQpYzhfdG9fYzEy KGIsIG0pOwo+ICsKPiArCXJldHVybiB2Owo+ICt9ClRoaXMgbG9va3MgbGlrZSBhIGhlbHBlciB0 aGF0IGNvdWxkIGJlIHVzZWZ1bCBmb3Igb3RoZXJzLgpNYXliZSBtb3ZlIHVwIG9uZSBsZXZlbD8K Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS90aWRzcy90aWRzc19kcnYuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5iYTEzYjUzMDIxNGYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3RpZHNzL3RpZHNzX2Rydi5jCj4gQEAgLTAsMCArMSwyOTIgQEAKPiArLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChD KSAyMDE4IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29t Lwo+ICsgKiBBdXRob3I6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4g KyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L29mX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+ICsKPiArI2lu Y2x1ZGUgPGRybS9kcm1QLmg+ClRoaXMgZmlsZSBpcyBubyBsb25nZXIgcHJlc2VudC4KCj4gKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f Y3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Byb2Jl X2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgInRpZHNzX2Rpc3BjLmgiCj4gKyNpbmNsdWRlICJ0 aWRzc19kcnYuaCIKPiArI2luY2x1ZGUgInRpZHNzX2ttcy5oIgo+ICsjaW5jbHVkZSAidGlkc3Nf aXJxLmgiCj4gKwo+ICsvKiBQb3dlciBtYW5hZ2VtZW50ICovCj4gKwo+ICtpbnQgdGlkc3NfcnVu dGltZV9nZXQoc3RydWN0IHRpZHNzX2RldmljZSAqdGlkc3MpCj4gK3sKPiArCWludCByOwo+ICsK PiArCWRldl9kYmcodGlkc3MtPmRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKwo+ICsJciA9IHBt X3J1bnRpbWVfZ2V0X3N5bmModGlkc3MtPmRldik7Cj4gKwlXQVJOX09OKHIgPCAwKTsKPiArCXJl dHVybiByIDwgMCA/IHIgOiAwOwo+ICt9Cj4gKwo+ICt2b2lkIHRpZHNzX3J1bnRpbWVfcHV0KHN0 cnVjdCB0aWRzc19kZXZpY2UgKnRpZHNzKQo+ICt7Cj4gKwlpbnQgcjsKPiArCj4gKwlkZXZfZGJn KHRpZHNzLT5kZXYsICIlc1xuIiwgX19mdW5jX18pOwo+ICsKPiArCXIgPSBwbV9ydW50aW1lX3B1 dF9zeW5jKHRpZHNzLT5kZXYpOwo+ICsJV0FSTl9PTihyIDwgMCk7Cj4gK30KPiArCj4gKyNpZmRl ZiBDT05GSUdfUE0KClVzZSBfX21heWJlX3VudXNlZCBoZXJlIC0gdGhlbiB5b3UgY2FuIGRyb3Ag dGhlICNpZmRlZgo+ICsKPiArc3RhdGljIGludCB0aWRzc19wbV9ydW50aW1lX3N1c3BlbmQoc3Ry dWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgdGlkc3NfZGV2aWNlICp0aWRzcyA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCWRldl9kYmcoZGV2LCAiJXNcbiIsIF9fZnVuY19f KTsKPiArCj4gKwlyZXR1cm4gZGlzcGNfcnVudGltZV9zdXNwZW5kKHRpZHNzLT5kaXNwYyk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgdGlkc3NfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgdGlkc3NfZGV2aWNlICp0aWRzcyA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOwo+ICsJaW50IHI7Cj4gKwo+ICsJZGV2X2RiZyhkZXYsICIlc1xuIiwgX19mdW5j X18pOwo+ICsKPiArCXIgPSBkaXNwY19ydW50aW1lX3Jlc3VtZSh0aWRzcy0+ZGlzcGMpOwo+ICsJ aWYgKHIpCj4gKwkJcmV0dXJuIHI7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKyNpZmRl ZiBDT05GSUdfUE1fU0xFRVAKPiArc3RhdGljIGludCB0aWRzc19zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmRldikKPiArewo+ICsJc3RydWN0IHRpZHNzX2RldmljZSAqdGlkc3MgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKPiArCj4gKwlkZXZfZGJnKGRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKwo+ ICsJcmV0dXJuIGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfc3VzcGVuZCh0aWRzcy0+ZGRldik7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgdGlkc3NfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiAr ewo+ICsJc3RydWN0IHRpZHNzX2RldmljZSAqdGlkc3MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK PiArCj4gKwlkZXZfZGJnKGRldiwgIiVzXG4iLCBfX2Z1bmNfXyk7Cj4gKwo+ICsJcmV0dXJuIGRy bV9tb2RlX2NvbmZpZ19oZWxwZXJfcmVzdW1lKHRpZHNzLT5kZGV2KTsKPiArfQo+ICsjZW5kaWYg LyogQ09ORklHX1BNX1NMRUVQICovCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9v cHMgdGlkc3NfcG1fb3BzID0gewo+ICsJLnJ1bnRpbWVfc3VzcGVuZCA9IHRpZHNzX3BtX3J1bnRp bWVfc3VzcGVuZCwKPiArCS5ydW50aW1lX3Jlc3VtZSA9IHRpZHNzX3BtX3J1bnRpbWVfcmVzdW1l LAo+ICsJU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFModGlkc3Nfc3VzcGVuZCwgdGlkc3NfcmVzdW1l KQo+ICt9Owo+ICsKPiArI2VuZGlmIC8qIENPTkZJR19QTSAqLwo+ICsKPiArLyogUGxhdGZvcm0g ZHJpdmVyICovCj4gKwo+ICsvKiBEUk0gZGV2aWNlIEluZm9ybWF0aW9uICovCj4gK0RFRklORV9E Uk1fR0VNX0NNQV9GT1BTKHRpZHNzX2ZvcHMpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fZHJp dmVyIHRpZHNzX2RyaXZlciA9IHsKPiArCS5kcml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfR0VNIHwg RFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwKPiArCQkJCQlEUklWRVJfSEFWRV9JUlEs CkRSSVZFUl9IQVZFX0lSUSBpcyBvbmx5IGZvciBsZWdhY3kgZHJpdmVycy4KCkluIGdlbmVyYWwg LSBsb29rIHRocm91Z2ggdGhlIGNvbW1lbnRzIGluIGRybV9kcnYuaCAtIGFuZCByZW1vdmUgdXNl IG9mCmFsbCBvYnNvbGV0ZWQgY2FsbGJhY2tzLgpJIGNoZWNrZWQgLmdlbV9mcmVlX29iamVjdF91 bmxvY2tlZCAtIGl0IGlzIGRlcHJlY2F0ZWQuIEkgZ3Vlc3MgdGhlcmUgaXMKbW9yZS4KCj4gKwku Z2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCj4gKwku Z2VtX3ZtX29wcwkJPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAo+ICsJLnByaW1lX2hhbmRsZV90b19m ZAk9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAo+ICsJLnByaW1lX2ZkX3RvX2hhbmRsZQk9 IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAo+ICsJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1f Z2VtX3ByaW1lX2ltcG9ydCwKPiArCS5nZW1fcHJpbWVfZXhwb3J0CT0gZHJtX2dlbV9wcmltZV9l eHBvcnQsCj4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3ByaW1lX2dl dF9zZ190YWJsZSwKPiArCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFf cHJpbWVfaW1wb3J0X3NnX3RhYmxlLAo+ICsJLmdlbV9wcmltZV92bWFwCQk9IGRybV9nZW1fY21h X3ByaW1lX3ZtYXAsCj4gKwkuZ2VtX3ByaW1lX3Z1bm1hcAk9IGRybV9nZW1fY21hX3ByaW1lX3Z1 bm1hcCwKPiArCS5nZW1fcHJpbWVfbW1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAo+ICsJ LmR1bWJfY3JlYXRlCQk9IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlLAo+ICsJLmZvcHMJCQk9ICZ0 aWRzc19mb3BzLAo+ICsJLm5hbWUJCQk9ICJ0aWRzcyIsCj4gKwkuZGVzYwkJCT0gIlRJIEtleXN0 b25lIERTUyIsCj4gKwkuZGF0ZQkJCT0gIjIwMTgwMjE1IiwKPiArCS5tYWpvcgkJCT0gMSwKPiAr CS5taW5vcgkJCT0gMCwKPiArCj4gKwkuaXJxX3ByZWluc3RhbGwJCT0gdGlkc3NfaXJxX3ByZWlu c3RhbGwsCj4gKwkuaXJxX3Bvc3RpbnN0YWxsCT0gdGlkc3NfaXJxX3Bvc3RpbnN0YWxsLAo+ICsJ LmlycV9oYW5kbGVyCQk9IHRpZHNzX2lycV9oYW5kbGVyLAo+ICsJLmlycV91bmluc3RhbGwJCT0g dGlkc3NfaXJxX3VuaW5zdGFsbCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdGlkc3NfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsKPiArCXN0cnVjdCB0aWRzc19kZXZpY2UgKnRpZHNzOwo+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRkZXY7ClNlZSBjb2RlIGV4YW1wbGUgaW4gZHJtX2Rydi5jIGhvdyB0byBl bWJlZCBkcm1fZGV2aWNlLgpUaGlzIGlzIHRoZSBwcmVmZXJyZWQgYXBwcm9hY2ggdGhlc2UgZGF5 cy4KCgo+ICsJaW50IHJldDsKPiArCWludCBpcnE7Cj4gKwo+ICsJZGV2X2RiZyhkZXYsICIlc1xu IiwgX19mdW5jX18pOwo+ICsKPiArCXRpZHNzID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0 aWRzcyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKHRpZHNzID09IE5VTEwpCj4gKwkJcmV0dXJuIC1F Tk9NRU07Cj4gKwo+ICsJdGlkc3MtPmRldiA9IGRldjsKPiArCXRpZHNzLT5mZWF0ID0gb2ZfZGV2 aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Cj4gKwo+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl diwgdGlkc3MpOwo+ICsKPiArCWRkZXYgPSBkcm1fZGV2X2FsbG9jKCZ0aWRzc19kcml2ZXIsIGRl dik7Cj4gKwlpZiAoSVNfRVJSKGRkZXYpKQo+ICsJCXJldHVybiBQVFJfRVJSKGRkZXYpOwo+ICsK PiArCXRpZHNzLT5kZGV2ID0gZGRldjsKPiArCWRkZXYtPmRldl9wcml2YXRlID0gdGlkc3M7Cj4g Kwo+ICsJcG1fcnVudGltZV9lbmFibGUoZGV2KTsKPiArCj4gKwlyZXQgPSBkaXNwY19pbml0KHRp ZHNzKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFs aXplIGRpc3BjOiAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIGVycl9kaXNhYmxlX3BtOwo+ICsJfQo+ ICsKPiArI2lmbmRlZiBDT05GSUdfUE0KPiArCS8qIElmIHdlIGRvbid0IGhhdmUgUE0sIHdlIG5l ZWQgdG8gY2FsbCByZXN1bWUgbWFudWFsbHkgKi8KPiArCWRpc3BjX3J1bnRpbWVfcmVzdW1lKHRp ZHNzLT5kaXNwYyk7Cj4gKyNlbmRpZgo+ICsKPiArCXJldCA9IHRpZHNzX21vZGVzZXRfaW5pdCh0 aWRzcyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWlmIChyZXQgIT0gLUVQUk9CRV9ERUZFUikK PiArCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdCBEUk0vS01TICglZClcbiIsIHJldCk7 Cj4gKwkJZ290byBlcnJfcnVudGltZV9zdXNwZW5kOwo+ICsJfQo+ICsKPiArCWlycSA9IHBsYXRm b3JtX2dldF9pcnEocGRldiwgMCk7Cj4gKwlpZiAoaXJxIDwgMCkgewo+ICsJCXJldCA9IGlycTsK PiArCQlnb3RvIGVycl9tb2Rlc2V0X2NsZWFudXA7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJtX2ly cV9pbnN0YWxsKGRkZXYsIGlycSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJk cm1faXJxX2luc3RhbGwgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIGVycl9tb2Rlc2V0 X2NsZWFudXA7Cj4gKwl9Cj4gKwo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRkZXYpOwo+ ICsKPiArCXJldCA9IGRybV9kZXZfcmVnaXN0ZXIoZGRldiwgMCk7Cj4gKwlpZiAocmV0KSB7Cj4g KwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgRFJNIGRldmljZVxuIik7Cj4gKwkJ Z290byBlcnJfcG9sbF9maW5pOwo+ICsJfQo+ICsKPiArCWRybV9mYmRldl9nZW5lcmljX3NldHVw KGRkZXYsIDMyKTsKPiArCj4gKwlkZXZfZGJnKGRldiwgIiVzIGRvbmVcbiIsIF9fZnVuY19fKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9wb2xsX2Zpbmk6Cj4gKwlkcm1fa21zX2hlbHBl cl9wb2xsX2ZpbmkoZGRldik7Cj4gKwo+ICsJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZGRl dik7Cj4gKwo+ICsJZHJtX2lycV91bmluc3RhbGwoZGRldik7Cj4gKwo+ICtlcnJfbW9kZXNldF9j bGVhbnVwOgo+ICsJdGlkc3NfbW9kZXNldF9jbGVhbnVwKHRpZHNzKTsKPiArCj4gK2Vycl9ydW50 aW1lX3N1c3BlbmQ6Cj4gKyNpZm5kZWYgQ09ORklHX1BNCj4gKwkvKiBJZiB3ZSBkb24ndCBoYXZl IFBNLCB3ZSBuZWVkIHRvIGNhbGwgc3VzcGVuZCBtYW51YWxseSAqLwo+ICsJZGlzcGNfcnVudGlt ZV9zdXNwZW5kKHRpZHNzLT5kaXNwYyk7Cj4gKyNlbmRpZgo+ICsKPiArCWRpc3BjX3JlbW92ZSh0 aWRzcyk7Cj4gKwo+ICtlcnJfZGlzYWJsZV9wbToKPiArCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYp Owo+ICsKPiArCWRybV9kZXZfcHV0KGRkZXYpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgdGlkc3NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgdGlk c3NfZGV2aWNlICp0aWRzcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRkZXYgPSB0aWRzcy0+ZGRldjsKPiArCj4gKwlkZXZfZGJnKGRldiwgIiVz XG4iLCBfX2Z1bmNfXyk7Cj4gKwo+ICsJZHJtX2Rldl91bnJlZ2lzdGVyKGRkZXYpOwo+ICsKPiAr CWRybV9rbXNfaGVscGVyX3BvbGxfZmluaShkZGV2KTsKPiArCj4gKwlkcm1fYXRvbWljX2hlbHBl cl9zaHV0ZG93bihkZGV2KTsKPiArCj4gKwlkcm1faXJxX3VuaW5zdGFsbChkZGV2KTsKPiArCj4g Kwl0aWRzc19tb2Rlc2V0X2NsZWFudXAodGlkc3MpOwo+ICsKPiArI2lmbmRlZiBDT05GSUdfUE0K PiArCS8qIElmIHdlIGRvbid0IGhhdmUgUE0sIHdlIG5lZWQgdG8gY2FsbCBzdXNwZW5kIG1hbnVh bGx5ICovCj4gKwlkaXNwY19ydW50aW1lX3N1c3BlbmQodGlkc3MtPmRpc3BjKTsKPiArI2VuZGlm Cj4gKwo+ICsJZGlzcGNfcmVtb3ZlKHRpZHNzKTsKPiArCj4gKwlwbV9ydW50aW1lX2Rpc2FibGUo ZGV2KTsKPiArCj4gKwlkcm1fZGV2X3B1dChkZGV2KTsKPiArCj4gKwlkZXZfZGJnKGRldiwgIiVz IGRvbmVcbiIsIF9fZnVuY19fKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGlkc3Nfb2ZfdGFibGVbXSA9IHsKPiArCXsgLmNv bXBhdGlibGUgPSAidGksazJnLWRzcyIsIC5kYXRhID0gJmRpc3BjX2syZ19mZWF0cywgfSwKPiAr CXsgLmNvbXBhdGlibGUgPSAidGksYW02NXgtZHNzIiwgLmRhdGEgPSAmZGlzcGNfYW02NXhfZmVh dHMsIH0sCj4gKwl7IC5jb21wYXRpYmxlID0gInRpLGo3MjFlLWRzcyIsIC5kYXRhID0gJmRpc3Bj X2o3MjFlX2ZlYXRzLCB9LAo+ICsJeyB9Cj4gK307Cj4gKwo+ICtNT0RVTEVfREVWSUNFX1RBQkxF KG9mLCB0aWRzc19vZl90YWJsZSk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZl ciB0aWRzc19wbGF0Zm9ybV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJCT0gdGlkc3NfcHJvYmUsCj4g KwkucmVtb3ZlCQk9IHRpZHNzX3JlbW92ZSwKPiArCS5kcml2ZXIJCT0gewo+ICsJCS5uYW1lCT0g InRpZHNzIiwKPiArI2lmZGVmIENPTkZJR19QTQo+ICsJCS5wbQk9ICZ0aWRzc19wbV9vcHMsCj4g KyNlbmRpZgo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHRpZHNzX29mX3RhYmxlLAo+ICsJCS5zdXBw cmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwKPiArCX0sCj4gK307Cj4gKwo+ICttb2R1bGVfcGxhdGZv cm1fZHJpdmVyKHRpZHNzX3BsYXRmb3JtX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJU b21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5AdGkuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJ UFRJT04oIlRJIEtleXN0b25lIERTUyBEcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlkc3NfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vdGlkc3MvdGlkc3NfZHJ2LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZWY4MTVjODQwYjQ0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRzc19kcnYuaAo+IEBAIC0wLDAgKzEsNDIgQEAKPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiArLyoKPiArICogQ29weXJp Z2h0IChDKSAyMDE4IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cu dGkuY29tLwo+ICsgKiBBdXRob3I6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5j b20+Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1RJRFNTX0RSVl9IX18KPiArI2RlZmluZSBfX1RJ RFNTX0RSVl9IX18KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+ICsKPiArI2Rl ZmluZSBUSURTU19NQVhfUE9SVFMgNAo+ICsjZGVmaW5lIFRJRFNTX01BWF9QTEFORVMgNAo+ICsK PiArdHlwZWRlZiB1MzIgZGlzcGNfaXJxX3Q7Cj4gKwo+ICtzdHJ1Y3QgdGlkc3NfZGV2aWNlIHsK PiArCXN0cnVjdCBkZXZpY2UgKmRldjsJCS8qIFVuZGVybHlpbmcgRFNTIGRldmljZSAqLwo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRkZXY7CS8qIERSTSBkZXZpY2UgZm9yIERTUyAqLwo+ICsKPiAr CXN0cnVjdCBkcm1fZmJkZXZfY21hICpmYmRldjsKVW51c2VkLCBjYW4gYmUgcmVtb3ZlZC4KCj4g Kwo+ICsJY29uc3Qgc3RydWN0IGRpc3BjX2ZlYXR1cmVzICpmZWF0Owo+ICsJc3RydWN0IGRpc3Bj X2RldmljZSAqZGlzcGM7Cj4gKwo+ICsJdW5zaWduZWQgaW50IG51bV9jcnRjczsKPiArCXN0cnVj dCBkcm1fY3J0YyAqY3J0Y3NbVElEU1NfTUFYX1BPUlRTXTsKPiArCj4gKwl1bnNpZ25lZCBpbnQg bnVtX3BsYW5lczsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lc1tUSURTU19NQVhfUExBTkVT XTsKPiArCj4gKwlzcGlubG9ja190IHdhaXRfbG9jazsJLyogcHJvdGVjdHMgdGhlIGlycSBtYXNr cyAqLwo+ICsJZGlzcGNfaXJxX3QgaXJxX21hc2s7CS8qIGVuYWJsZWQgaXJxcyBpbiBhZGRpdGlv biB0byB3YWl0X2xpc3QgKi8KPiArCWRpc3BjX2lycV90IGlycV91Zl9tYXNrOyAvKiB1bmRlcmZs b3cgaXJxIGJpdHMgZm9yIGFsbCBwbGFuZXMgKi8KPiArCj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc2F2ZWRfc3RhdGU7Cj4gK307Cj4gKwo+ICtpbnQgdGlkc3NfcnVudGltZV9nZXQoc3Ry dWN0IHRpZHNzX2RldmljZSAqdGlkc3MpOwo+ICt2b2lkIHRpZHNzX3J1bnRpbWVfcHV0KHN0cnVj dCB0aWRzc19kZXZpY2UgKnRpZHNzKTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdGlkc3MvdGlkc3NfZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL3RpZHNz L3RpZHNzX2VuY29kZXIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MDAwLi43MzkwYzA1NmIyNTcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3RpZHNzL3RpZHNzX2VuY29kZXIuYwo+IEBAIC0wLDAgKzEsODkgQEAKPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IFRl eGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLwo+ICsgKiBB dXRob3I6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+ CkZpbGUgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhlIHRyZWUuCgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+ClNvcnQgaW5jbHVk ZSBmaWxlcy4KCj4gKwo+ICsjaW5jbHVkZSAidGlkc3NfZHJ2LmgiCj4gKyNpbmNsdWRlICJ0aWRz c19lbmNvZGVyLmgiCj4gKyNpbmNsdWRlICJ0aWRzc19jcnRjLmgiCj4gKwo+ICtzdGF0aWMgaW50 IHRpZHNzX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwK PiArCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJCSAg ICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGRldiA9IGVuY29kZXItPmRldjsKPiArCXN0cnVjdCB0aWRzc19jcnRj X3N0YXRlICp0Y3J0Y19zdGF0ZSA9IHRvX3RpZHNzX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4g KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGkgPSAmY29ubl9zdGF0ZS0+Y29ubmVjdG9yLT5k aXNwbGF5X2luZm87Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+ICsJYm9vbCBidXNf ZmxhZ3Nfc2V0ID0gZmFsc2U7Cj4gKwo+ICsJZGV2X2RiZyhkZGV2LT5kZXYsICIlc1xuIiwgX19m dW5jX18pOwo+ICsKPiArCS8qCj4gKwkgKiBUYWtlIHRoZSBidXNfZmxhZ3MgZnJvbSB0aGUgZmly c3QgYnJpZGdlIHRoYXQgZGVmaW5lcwo+ICsJICogYnJpZGdlIHRpbWluZ3MsIG9yIGZyb20gdGhl IGNvbm5lY3RvcidzIGRpc3BsYXlfaW5mbyBpZiBubwo+ICsJICogYnJpZGdlIGRlZmluZXMgdGhl IHRpbWluZ3MuCj4gKwkgKi8KPiArCWZvciAoYnJpZGdlID0gZW5jb2Rlci0+YnJpZGdlOyBicmlk Z2U7IGJyaWRnZSA9IGJyaWRnZS0+bmV4dCkgewo+ICsJCWlmICghYnJpZGdlLT50aW1pbmdzKQo+ ICsJCQljb250aW51ZTsKPiArCj4gKwkJdGNydGNfc3RhdGUtPmJ1c19mbGFncyA9IGJyaWRnZS0+ dGltaW5ncy0+aW5wdXRfYnVzX2ZsYWdzOwo+ICsJCWJ1c19mbGFnc19zZXQgPSB0cnVlOwo+ICsJ CWJyZWFrOwo+ICsJfQo+ICsKPiArCWlmICghZGktPmJ1c19mb3JtYXRzIHx8IGRpLT5udW1fYnVz X2Zvcm1hdHMgPT0gMCkgIHsKPiArCQlkZXZfZXJyKGRkZXYtPmRldiwgIiVzOiBObyBidXNfZm9y bWF0cyBpbiBjb25uZWN0ZWQgZGlzcGxheVxuIiwKPiArCQkJX19mdW5jX18pOwo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCS8vIFhYWCBhbnkgY2xlYW5lciB3YXkgdG8gc2V0IGJ1 cyBmb3JtYXQgYW5kIGZsYWdzPwo+ICsJdGNydGNfc3RhdGUtPmJ1c19mb3JtYXQgPSBkaS0+YnVz X2Zvcm1hdHNbMF07Cj4gKwlpZiAoIWJ1c19mbGFnc19zZXQpCj4gKwkJdGNydGNfc3RhdGUtPmJ1 c19mbGFncyA9IGRpLT5idXNfZmxhZ3M7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGVuY29kZXJfaGVscGVy X2Z1bmNzID0gewo+ICsJLmF0b21pY19jaGVjayA9IHRpZHNzX2VuY29kZXJfYXRvbWljX2NoZWNr LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBlbmNv ZGVyX2Z1bmNzID0gewo+ICsJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLAo+ICt9Owo+ ICsKPiArc3RydWN0IGRybV9lbmNvZGVyICp0aWRzc19lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgdGlk c3NfZGV2aWNlICp0aWRzcywKPiArCQkJCQkgdTMyIGVuY29kZXJfdHlwZSwgdTMyIHBvc3NpYmxl X2NydGNzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYzsKPiArCWludCByZXQ7Cj4g Kwo+ICsJZW5jID0gZGV2bV9remFsbG9jKHRpZHNzLT5kZXYsIHNpemVvZigqZW5jKSwgR0ZQX0tF Uk5FTCk7Cj4gKwlpZiAoIWVuYykKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4g KwllbmMtPnBvc3NpYmxlX2NydGNzID0gcG9zc2libGVfY3J0Y3M7Cj4gKwo+ICsJcmV0ID0gZHJt X2VuY29kZXJfaW5pdCh0aWRzcy0+ZGRldiwgZW5jLCAmZW5jb2Rlcl9mdW5jcywKPiArCQkJICAg ICAgIGVuY29kZXJfdHlwZSwgTlVMTCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ICsKPiArCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jLCAmZW5jb2Rlcl9o ZWxwZXJfZnVuY3MpOwo+ICsKPiArCWRldl9kYmcodGlkc3MtPmRldiwgIkVuY29kZXIgY3JlYXRl IGRvbmVcbiIpOwo+ICsKPiArCXJldHVybiBlbmM7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3RpZHNzL3RpZHNzX2VuY29kZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90 aWRzc19lbmNvZGVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAw MC4uMDY4NTRkNjZlN2U2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90 aWRzcy90aWRzc19lbmNvZGVyLmgKPiBAQCAtMCwwICsxLDE3IEBACj4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBU ZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KPiArICog QXV0aG9yOiBUb21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5AdGkuY29tPgo+ICsgKi8KPiAr Cj4gKyNpZm5kZWYgX19USURTU19FTkNPREVSX0hfXwo+ICsjZGVmaW5lIF9fVElEU1NfRU5DT0RF Ul9IX18KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPiArCj4gK3N0cnVjdCB0 aWRzc19kZXZpY2U7Cj4gKwo+ICtzdHJ1Y3QgZHJtX2VuY29kZXIgKnRpZHNzX2VuY29kZXJfY3Jl YXRlKHN0cnVjdCB0aWRzc19kZXZpY2UgKnRpZHNzLAo+ICsJCQkJCSB1MzIgZW5jb2Rlcl90eXBl LCB1MzIgcG9zc2libGVfY3J0Y3MpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS90aWRzcy90aWRzc19pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS90aWRzcy90aWRz c19pcnEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wMDFj YWM3YzEzNTUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpZHNzL3Rp ZHNzX2lycS5jCj4gQEAgLTAsMCArMSwxODUgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IFRleGFzIEluc3RydW1l bnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLwo+ICsgKiBBdXRob3I6IFRvbWkg VmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg PGRybS9kcm1QLmg+Ck5vIGxvbmdlciBwcmVzZW50IGluIHRoZSB0cmVlLgoKPiArCj4gKyNpbmNs dWRlICJ0aWRzc19pcnEuaCIKPiArI2luY2x1ZGUgInRpZHNzX2Rydi5oIgo+ICsjaW5jbHVkZSAi dGlkc3NfZGlzcGMuaCIKPiArI2luY2x1ZGUgInRpZHNzX2NydGMuaCIKPiArI2luY2x1ZGUgInRp ZHNzX3BsYW5lLmgiCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==