From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Andr=c3=a9_Przywara?= Subject: [RFC PATCH 2/2] xen/arm: Add MESON UART driver for Amlogic S905 SoC Date: Tue, 23 Oct 2018 00:31:48 +0100 Message-ID: References: <1533661673-14607-1-git-send-email-amittomer25@gmail.com> <1533661673-14607-3-git-send-email-amittomer25@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gEjg9-0001qZ-Ns for xen-devel@lists.xenproject.org; Mon, 22 Oct 2018 23:32:09 +0000 In-Reply-To: <1533661673-14607-3-git-send-email-amittomer25@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Amit Singh Tomar , xen-devel@lists.xenproject.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, konrad.wilk@oracle.com, George.Dunlap@eu.citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, andrew.cooper3@citrix.com List-Id: xen-devel@lists.xenproject.org T24gOC83LzE4IDY6MDcgUE0sIEFtaXQgU2luZ2ggVG9tYXIgd3JvdGU6CgpIaSwKCj4gVGhpcyBw YXRjaCBhZGRzIGRyaXZlciBmb3IgVUFSVCBjb250cm9sbGVyIHByZXNlbnQgb24gQW1sb2dpYyBT OTA1Cj4gU29DLgo+IGh0dHBzOi8vZG4ub2Ryb2lkLmNvbS9TOTA1L0RhdGFTaGVldC9TOTA1X1B1 YmxpY19EYXRhc2hlZXRfVjEuMS40LnBkZgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFtaXQgU2luZ2gg VG9tYXIgPGFtaXR0b21lcjI1QGdtYWlsLmNvbT4KPiAtLS0KPiAgeGVuL2RyaXZlcnMvY2hhci9L Y29uZmlnICAgICAgfCAgIDggKysKPiAgeGVuL2RyaXZlcnMvY2hhci9NYWtlZmlsZSAgICAgfCAg IDEgKwo+ICB4ZW4vZHJpdmVycy9jaGFyL21lc29uLXVhcnQuYyB8IDI5MAo+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAzIGZpbGVzIGNoYW5nZWQsIDI5OQo+IGlu c2VydGlvbnMoKykgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9kcml2ZXJzL2NoYXIvbWVzb24tdWFy dC5jCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NoYXIvS2NvbmZpZyBiL3hlbi9kcml2 ZXJzL2NoYXIvS2NvbmZpZwo+IGluZGV4IGNjNzhlYzMuLmI5ZmVlNGUgMTAwNjQ0Cj4gLS0tIGEv eGVuL2RyaXZlcnMvY2hhci9LY29uZmlnCj4gKysrIGIveGVuL2RyaXZlcnMvY2hhci9LY29uZmln Cj4gQEAgLTIwLDYgKzIwLDE0IEBAIGNvbmZpZyBIQVNfTVZFQlUKPiAgCSAgVGhpcyBzZWxlY3Rz IHRoZSBNYXJ2ZWxsIE1WRUJVIFVBUlQuIElmIHlvdSBoYXZlIGEgQVJNQURBCj4gMzcwMCBiYXNl ZCBib2FyZCwgc2F5IFkuCj4gIAo+ICtjb25maWcgSEFTX01FU09OCj4gKyAgICBib29sCj4gKyAg ICBkZWZhdWx0IHkKPiArICAgIGRlcGVuZHMgb24gQVJNXzY0Cj4gKyAgICBoZWxwCj4gKyAgICAg IFRoaXMgc2VsZWN0cyB0aGUgTWFydmVsbCBNRVNPTiBVQVJULiBJZiB5b3UgaGF2ZSBhIEFtbG9n aWMgUzkwNQo+ICsgICAgICBiYXNlZCBib2FyZCwgc2F5IFkuCgpJdCBzZWVtcyB0aGlzIFVBUlQg ZHJpdmVyIHN1cHBvcnRzIGFsbCBBbWxvZ2ljIFNvQ3MgKDkwNVgsIDgwNVgsIDkxMiwKLi4uKSwg bm90IGp1c3QgdGhlIFM5MDUuIFNvIHBsZWFzZSBlaXRoZXIgcmVtb3ZlIHRoZSBudW1iZXIgb3Ig bWFrZSBpdApjbGVhciB0aGF0IGl0J3MganVzdCBhbiBleGFtcGxlLgpBbmQgaXQncyBub3QgYSBN YXJ2ZWxsIFVBUlQgOy0pCgo+ICsKPiAgY29uZmlnIEhBU19QTDAxMQo+ICAJYm9vbAo+ICAJZGVm YXVsdCB5Cj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NoYXIvTWFrZWZpbGUgYi94ZW4vZHJp dmVycy9jaGFyL01ha2VmaWxlCj4gaW5kZXggYjY4YzMzMC4uN2M2NDZkNyAxMDA2NDQKPiAtLS0g YS94ZW4vZHJpdmVycy9jaGFyL01ha2VmaWxlCj4gKysrIGIveGVuL2RyaXZlcnMvY2hhci9NYWtl ZmlsZQo+IEBAIC0zLDYgKzMsNyBAQCBvYmotJChDT05GSUdfSEFTX05TMTY1NTApICs9IG5zMTY1 NTAubwo+ICBvYmotJChDT05GSUdfSEFTX0NBREVOQ0VfVUFSVCkgKz0gY2FkZW5jZS11YXJ0Lm8K PiAgb2JqLSQoQ09ORklHX0hBU19QTDAxMSkgKz0gcGwwMTEubwo+ICBvYmotJChDT05GSUdfSEFT X0VYWU5PUzQyMTApICs9IGV4eW5vczQyMTAtdWFydC5vCj4gK29iai0kKENPTkZJR19IQVNfTUVT T04pICs9IG1lc29uLXVhcnQubwo+ICBvYmotJChDT05GSUdfSEFTX01WRUJVKSArPSBtdmVidS11 YXJ0Lm8KPiAgb2JqLSQoQ09ORklHX0hBU19PTUFQKSArPSBvbWFwLXVhcnQubwo+ICBvYmotJChD T05GSUdfSEFTX1NDSUYpICs9IHNjaWYtdWFydC5vCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L2NoYXIvbWVzb24tdWFydC5jCj4gYi94ZW4vZHJpdmVycy9jaGFyL21lc29uLXVhcnQuYyBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjhmZTdlNjIKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIveGVuL2RyaXZlcnMvY2hhci9tZXNvbi11YXJ0LmMKPiBAQCAtMCwwICsxLDI5MCBA QAo+ICsvKgo+ICsgKiB4ZW4vZHJpdmVycy9jaGFyL21lc29uLXVhcnQuYwo+ICsgKgo+ICsgKiBE cml2ZXIgZm9yIEFtbG9naWMgTUVTT04gVUFSVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MTgsIEFtaXQgU2luZ2ggVG9tYXIgPGFtaXR0b21lcjI1QGdtYWlsLmNvbT4uCj4gKyAqCj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UsIHZlcnNpb24gMiwgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBJZiBub3QsIHNlZQo+IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K PiArICovCj4gKwo+ICsjaW5jbHVkZSA8eGVuL2lycS5oPgo+ICsjaW5jbHVkZSA8eGVuL3Nlcmlh bC5oPgo+ICsjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KPiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ICsK PiArLyogUmVnaXN0ZXIgb2Zmc2V0cyAqLwo+ICsjZGVmaW5lIFVBUlRfV0ZJRk8gICAgICAgICAg ICAgICAgICAweDAwCj4gKyNkZWZpbmUgVUFSVF9SRklGTyAgICAgICAgICAgICAgICAgIDB4MDQK PiArI2RlZmluZSBVQVJUX0NPTlRST0wgICAgICAgICAgICAgICAgMHgwOAo+ICsjZGVmaW5lIFVB UlRfU1RBVFVTICAgICAgICAgICAgICAgICAweDBjCj4gKyNkZWZpbmUgVUFSVF9NSVNDICAgICAg ICAgICAgICAgICAgIDB4MTAKPiArI2RlZmluZSBVQVJUX1JFRzUgICAgICAgICAgICAgICAgICAg MHgxNAo+ICsKPiArLyogVUFSVF9DT05UUk9MIGJpdHMgKi8KPiArI2RlZmluZSBVQVJUX1RYX0VO ICAgICAgICAgICAgICAgICAgQklUKDEyKQo+ICsjZGVmaW5lIFVBUlRfUlhfRU4gICAgICAgICAg ICAgICAgICBCSVQoMTMpCgpZb3UgZG9uJ3Qgc2VlbSB0byB1c2UgdGhlbSBpbiB0aGUgY29kZT8g VGhpcyBzZWVtcyBzb21ld2hhdCB3cm9uZywgeW91CnNob3VsZG4ndCByZWx5IG9uIHRob3NlIGJp dHMgYmVpbmcgc2V0IGJ5IHByZXZpb3VzIGJvb3Qgc3RhZ2VzLgoKPiArI2RlZmluZSBVQVJUX1RY X1JTVCAgICAgICAgICAgICAgICAgQklUKDIyKQo+ICsjZGVmaW5lIFVBUlRfUlhfUlNUICAgICAg ICAgICAgICAgICBCSVQoMjMpCj4gKyNkZWZpbmUgVUFSVF9DTEVBUl9FUlIgICAgICAgICAgICAg IEJJVCgyNCkKPiArI2RlZmluZSBVQVJUX1JYX0lOVF9FTiAgICAgICAgICAgICAgQklUKDI3KQo+ ICsjZGVmaW5lIFVBUlRfVFhfSU5UX0VOICAgICAgICAgICAgICBCSVQoMjgpCj4gKwo+ICsvKiBV QVJUX1NUQVRVUyBiaXRzICovCj4gKyNkZWZpbmUgVUFSVF9QQVJJVFlfRVJSICAgICAgICAgICAg IEJJVCgxNikKPiArI2RlZmluZSBVQVJUX0ZSQU1FX0VSUiAgICAgICAgICAgICAgQklUKDE3KQo+ ICsjZGVmaW5lIFVBUlRfVFhfRklGT19XRVJSICAgICAgICAgICBCSVQoMTgpCgpZb3UgZG9uJ3Qg dXNlIHRob3NlLCBzbyBJIGRvbid0IHNlZSBhIG5lZWQgdG8gZGVmaW5lIHRoZW0uCgo+ICsjZGVm aW5lIFVBUlRfUlhfRU1QVFkgICAgICAgICAgICAgICBCSVQoMjApCj4gKyNkZWZpbmUgVUFSVF9U WF9GVUxMICAgICAgICAgICAgICAgIEJJVCgyMSkKPiArI2RlZmluZSBVQVJUX1RYX0VNUFRZICAg ICAgICAgICAgICAgQklUKDIyKQoKTWlnaHQgYmUgd29ydGggdG8gYWRkIEZJRk9fIGluIHRob3Nl IG5hbWVzLgoKPiArI2RlZmluZSBVQVJUX1RYX0NOVF9NQVNLICAgICAgICAgICAgR0VOTUFTSygx NCwgOCkKPiArCj4gKwo+ICsjZGVmaW5lIFVBUlRfWE1JVF9JUlFfQ05UX01BU0sgICAgICBHRU5N QVNLKDE1LCA4KQo+ICsjZGVmaW5lIFVBUlRfUkVDVl9JUlFfQ05UX01BU0sgICAgICBHRU5NQVNL KDcsIDApCj4gKwo+ICsjZGVmaW5lIFRYX0ZJRk9fU0laRSAgICAgICAgICAgICAgICA2NAo+ICsK PiArc3RhdGljIHN0cnVjdCBtZXNvbl9zOTA1X3VhcnQgewo+ICsgICAgdW5zaWduZWQgaW50IGly cTsKPiArICAgIHZvaWQgX19pb21lbSAqcmVnczsKPiArICAgIHN0cnVjdCBpcnFhY3Rpb24gaXJx YWN0aW9uOwo+ICsgICAgc3RydWN0IHZ1YXJ0X2luZm8gdnVhcnQ7Cj4gK30gbWVzb25fczkwNV9j b20gPSB7MH07Cj4gKwo+ICsjZGVmaW5lIG1lc29uX3M5MDVfcmVhZCh1YXJ0LCBvZmYpICByZWFk bCgodWFydCktPnJlZ3MgKyBvZmYpCj4gKyNkZWZpbmUgbWVzb25fczkwNV93cml0ZSh1YXJ0LCBv ZmYsIHZhbCkgd3JpdGVsKHZhbCwgKHVhcnQtPnJlZ3MpICsgb2ZmKQoKSSB3YXMgd29uZGVyaW5n IHdoZXRoZXIgYSBjbHJzZXRiaXQgaGVscGVyIHdvdWxkIGJlIG1vcmUgdXNlZnVsIHRoYW4KdGhl c2UgdmVyeSB0aGluIHdyYXBwZXJzLgoKPiArc3RhdGljIHZvaWQgbWVzb25fczkwNV91YXJ0X2lu dGVycnVwdChpbnQgaXJxLCB2b2lkICpkYXRhLAo+ICsgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9y ZWdzICpyZWdzKQo+ICt7Cj4gKyAgICBzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQgPSBkYXRhOwo+ ICsgICAgc3RydWN0IG1lc29uX3M5MDVfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7Cj4gKyAgICB1 aW50MzJfdCBzdCA9IG1lc29uX3M5MDVfcmVhZCh1YXJ0LCBVQVJUX1NUQVRVUyk7Cj4gKwo+ICsg ICAgaWYgKCAhKHN0ICYgVUFSVF9SWF9FTVBUWSkgKQo+ICsgICAgewo+ICsgICAgICAgIHNlcmlh bF9yeF9pbnRlcnJ1cHQocG9ydCwgcmVncyk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCAhKHN0 ICYgVUFSVF9UWF9GVUxMKSApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCBzdCAmIFVBUlRfVFhf SU5UX0VOICkKCk5vLiBUaGlzIGJpdCBpcyBpbiB0aGUgY29udHJvbCByZWdpc3Rlciwgbm90IHRo ZSBzdGF0dXMgcmVnaXN0ZXIuCkFuZCBkbyB5b3UgYWN0dWFsbHkgbmVlZCB0byByZWFkIHRoaXMg ZnJvbSB0aGUgaGFyZHdhcmU/Cgo+ICsgICAgICAgICAgICBzZXJpYWxfdHhfaW50ZXJydXB0KHBv cnQsIHJlZ3MpOwo+ICsgICAgfQo+ICsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19pbml0IG1l c29uX3M5MDVfdWFydF9pbml0X3ByZWlycShzdHJ1Y3Qgc2VyaWFsX3BvcnQKPiAqcG9ydCkgK3sK PiArICAgIHN0cnVjdCBtZXNvbl9zOTA1X3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0Owo+ICsgICAg dWludDMyX3QgcmVnOwo+ICsKPiArICAgIHJlZyA9IG1lc29uX3M5MDVfcmVhZCh1YXJ0LCBVQVJU X0NPTlRST0wpOwo+ICsgICAgcmVnICY9IH4oVUFSVF9SWF9SU1QgfCBVQVJUX1RYX1JTVCB8IFVB UlRfQ0xFQVJfRVJSKTsKPiArICAgIG1lc29uX3M5MDVfd3JpdGUodWFydCwgVUFSVF9DT05UUk9M LCByZWcpOwo+ICsKPiArICAgIC8qIERpc2JhbGUgUngvVHggaW50ZXJydXB0cyAqLwo+ICsgICAg cmVnID0gbWVzb25fczkwNV9yZWFkKHVhcnQsIFVBUlRfQ09OVFJPTCk7Cj4gKyAgICByZWcgJj0g fihVQVJUX1JYX0lOVF9FTiB8IFVBUlRfVFhfSU5UX0VOKTsKPiArICAgIG1lc29uX3M5MDVfd3Jp dGUodWFydCwgVUFSVF9DT05UUk9MLCByZWcpOwoKV2h5IGFyZSB0aG9zZSB0d28gc2VwYXJhdGUg c2VxdWVuY2VzLCB0aGUgc2Vjb25kIGp1c3QgZm9yIGRpc2FibGluZyB0aGUKaW50ZXJydXB0cz8g VGhleSBzaG91bGQgYmUgb2ZmIGZyb20gdGhlIGJlZ2lubmluZy4KQmVzaWRlczogWW91IHNob3Vs ZCBwcm9wZXJseSByZXNldCB0aGUgVUFSVCwgYnkgZmlyc3Qgc2V0dGluZyB0aGUgUlNUCmJpdHMs IHRoZW4gY2xlYXJpbmcgdGhlbSBhZ2FpbiAoSnVsaWVuOiB0aGV5IGFyZSBub3Qgc2VsZi1yZXNl dHRpbmcpLgpTbyBJIGd1ZXNzIGl0J3Mgb25lIE1NSU8gcmVhZCwgYW5kIHR3byB3cml0ZXMuCgo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2luaXQgbWVzb25fczkwNV91YXJ0X2luaXRfcG9zdGly cShzdHJ1Y3Qgc2VyaWFsX3BvcnQKPiAqcG9ydCkgK3sKPiArICAgIHN0cnVjdCBtZXNvbl9zOTA1 X3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0Owo+ICsgICAgdWludDMyX3QgcmVnOwo+ICsKPiArICAg IHVhcnQtPmlycWFjdGlvbi5oYW5kbGVyID0gbWVzb25fczkwNV91YXJ0X2ludGVycnVwdDsKPiAr ICAgIHVhcnQtPmlycWFjdGlvbi5uYW1lICAgID0gIm1lc29uX3M5MDVfdWFydCI7Cj4gKyAgICB1 YXJ0LT5pcnFhY3Rpb24uZGV2X2lkICA9IHBvcnQ7Cj4gKwo+ICsgICAgaWYgKCBzZXR1cF9pcnEo dWFydC0+aXJxLCAwLCAmdWFydC0+aXJxYWN0aW9uKSAhPSAwICkKPiArICAgIHsKPiArICAgICAg ICBwcmludGsoIkZhaWxlZCB0byBhbGxvY2F0ZWQgbWVzb25fczkwNV91YXJ0IElSUSAlZFxuIiwK PiB1YXJ0LT5pcnEpOwo+ICsgICAgICAgIHJldHVybjsKPiArICAgIH0KPiArCj4gKyAgICAvKiBD b25maWd1cmUgUngvVHggaW50ZXJydXB0cyBiYXNlZCBvbiBieXRlcyBpbiBGSUZPICovCj4gKyAg ICByZWcgPSBtZXNvbl9zOTA1X3JlYWQodWFydCwgVUFSVF9NSVNDKTsKPiArICAgIHJlZyA9IChV QVJUX1JFQ1ZfSVJRX0NOVF9NQVNLICYgMSkgfAo+ICsgICAgICAgICAgIChVQVJUX1hNSVRfSVJR X0NOVF9NQVNLICYgKChUWF9GSUZPX1NJWkUgLyAyKSA8PCA4KSk7CgpJIHRoaW5rIEp1bGllbiBt ZW50aW9uZWQgdGhhdCBiZWZvcmU6IHRoaXMgbG9va3Mgd3JvbmcuCkV2ZW4gd2l0aCB1c2luZyB8 PSB0aGlzIGlzIHN0aWxsIGZhaWxpbmcsIGFzIHlvdSB3YW50IHRvIGNsZWFyIHRoZSBiaXRzCmJl Zm9yZSBPUmluZyBpbiBzb21lIG5ldyB2YWx1ZXMuCgo+ICsgICAgbWVzb25fczkwNV93cml0ZSh1 YXJ0LCBVQVJUX01JU0MsIHJlZyk7Cj4gKwo+ICsgICAgLyogTWFrZSBzdXJlIFJ4L1R4IGludGVy cnVwdHMgYXJlIGVuYWJsZWQgbm93ICovCj4gKyAgICByZWcgPSBtZXNvbl9zOTA1X3JlYWQodWFy dCwgVUFSVF9DT05UUk9MKTsKPiArICAgIHJlZyB8PSAoVUFSVF9SWF9JTlRfRU4gfCBVQVJUX1RY X0lOVF9FTik7Cj4gKyAgICBtZXNvbl9zOTA1X3dyaXRlKHVhcnQsIFVBUlRfQ09OVFJPTCwgcmVn KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWVzb25fczkwNV91YXJ0X3N1c3BlbmQoc3RydWN0 IHNlcmlhbF9wb3J0ICpwb3J0KQo+ICt7Cj4gKyAgICBCVUcoKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgbWVzb25fczkwNV91YXJ0X3Jlc3VtZShzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQpCj4g K3sKPiArICAgIEJVRygpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtZXNvbl9zOTA1X3VhcnRf cHV0YyhzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQsIGNoYXIgYykKPiArewo+ICsgICAgc3RydWN0 IG1lc29uX3M5MDVfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7Cj4gKwo+ICsgICAgbWVzb25fczkw NV93cml0ZSh1YXJ0LCBVQVJUX1dGSUZPLCBjKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtZXNv bl9zOTA1X3VhcnRfZ2V0YyhzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQsIGNoYXIgKmMpCj4gK3sK PiArICAgIHN0cnVjdCBtZXNvbl9zOTA1X3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0Owo+ICsKPiAr ICAgIGlmICggKG1lc29uX3M5MDVfcmVhZCh1YXJ0LCBVQVJUX1NUQVRVUykgJiBVQVJUX1JYX0VN UFRZKSApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgKmMgPSAgbWVzb25fczkwNV9y ZWFkKHVhcnQsIFVBUlRfUkZJRk8pICYgMHhmZjsKPiArCj4gKyAgICByZXR1cm4gMTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBfX2luaXQgbWVzb25fczkwNV9pcnEoc3RydWN0IHNlcmlhbF9wb3J0 ICpwb3J0KQo+ICt7Cj4gKyAgICBzdHJ1Y3QgbWVzb25fczkwNV91YXJ0ICp1YXJ0ID0gcG9ydC0+ dWFydDsKPiArCj4gKyAgICByZXR1cm4gdWFydC0+aXJxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHZ1YXJ0X2luZm8gKm1lc29uX3M5MDVfdnVhcnRfaW5mbyhzdHJ1Y3QKPiBzZXJp YWxfcG9ydCAqcG9ydCkgK3sKPiArICAgIHN0cnVjdCBtZXNvbl9zOTA1X3VhcnQgKnVhcnQgPSBw b3J0LT51YXJ0Owo+ICsKPiArICAgIHJldHVybiAmdWFydC0+dnVhcnQ7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIG1lc29uX3M5MDVfdWFydF9zdG9wX3R4KHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9y dCkKPiArewo+ICsgICAgc3RydWN0IG1lc29uX3M5MDVfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7 Cj4gKyAgICB1aW50MzJfdCByZWc7Cj4gKwo+ICsgICAgcmVnID0gbWVzb25fczkwNV9yZWFkKHVh cnQsIFVBUlRfQ09OVFJPTCk7Cj4gKyAgICByZWcgJj0gflVBUlRfVFhfSU5UX0VOOwo+ICsgICAg bWVzb25fczkwNV93cml0ZSh1YXJ0LCBVQVJUX0NPTlRST0wsIHJlZyk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIG1lc29uX3M5MDVfdWFydF9zdGFydF90eChzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBv cnQpCj4gK3sKPiArICAgIHN0cnVjdCBtZXNvbl9zOTA1X3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0 Owo+ICsgICAgdWludDMyX3QgcmVnOwo+ICsKPiArICAgIHJlZyA9IG1lc29uX3M5MDVfcmVhZCh1 YXJ0LCBVQVJUX0NPTlRST0wpOwo+ICsgICAgcmVnIHw9IFVBUlRfVFhfSU5UX0VOOwo+ICsgICAg bWVzb25fczkwNV93cml0ZSh1YXJ0LCBVQVJUX0NPTlRST0wsIHJlZyk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgbWVzb25fczkwNV91YXJ0X3R4X3JlYWR5KHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9y dCkKPiArewo+ICsgICAgc3RydWN0IG1lc29uX3M5MDVfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7 Cj4gKyAgICB1aW50MzJfdCByZWc7Cj4gKwo+ICsgICAgcmVnID0gbWVzb25fczkwNV9yZWFkKHVh cnQsIFVBUlRfU1RBVFVTKTsKPiArCj4gKyAgICBpZiAoIHJlZyAmIFVBUlRfVFhfRU1QVFkgKQo+ ICsgICAgICAgIHJldHVybiBUWF9GSUZPX1NJWkU7Cj4gKyAgICBpZiAoIHJlZyAmIFVBUlRfVFhf RlVMTCApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgcmV0dXJuIChyZWcgJiBVQVJU X1RYX0NOVF9NQVNLKSA+PiA4Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHVhcnRfZHJpdmVy IF9fcmVhZF9tb3N0bHkgbWVzb25fdWFydF9kcml2ZXIgPSB7Cj4gKyAgICAuaW5pdF9wcmVpcnEg ID0gbWVzb25fczkwNV91YXJ0X2luaXRfcHJlaXJxLAo+ICsgICAgLmluaXRfcG9zdGlycSA9IG1l c29uX3M5MDVfdWFydF9pbml0X3Bvc3RpcnEsCj4gKyAgICAuZW5kYm9vdCAgICAgID0gTlVMTCwK PiArICAgIC5zdXNwZW5kICAgICAgPSBtZXNvbl9zOTA1X3VhcnRfc3VzcGVuZCwKPiArICAgIC5y ZXN1bWUgICAgICAgPSBtZXNvbl9zOTA1X3VhcnRfcmVzdW1lLAo+ICsgICAgLnB1dGMgICAgICAg ICA9IG1lc29uX3M5MDVfdWFydF9wdXRjLAo+ICsgICAgLmdldGMgICAgICAgICA9IG1lc29uX3M5 MDVfdWFydF9nZXRjLAo+ICsgICAgLnR4X3JlYWR5ICAgID0gbWVzb25fczkwNV91YXJ0X3R4X3Jl YWR5LAoKdy9zCgo+ICsgICAgLnN0b3BfdHggICAgICA9IG1lc29uX3M5MDVfdWFydF9zdG9wX3R4 LAo+ICsgICAgLnN0YXJ0X3R4ICAgICA9IG1lc29uX3M5MDVfdWFydF9zdGFydF90eCwKPiArICAg IC5pcnEgICAgICAgICAgPSBtZXNvbl9zOTA1X2lycSwKPiArICAgIC52dWFydF9pbmZvICAgPSBt ZXNvbl9zOTA1X3Z1YXJ0X2luZm8sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBtZXNv bl91YXJ0X2luaXQoc3RydWN0IGR0X2RldmljZV9ub2RlICpkZXYsIGNvbnN0Cj4gdm9pZCAqZGF0 YSkgK3sKPiArICAgIGNvbnN0IGNoYXIgKmNvbmZpZyA9IGRhdGE7Cj4gKyAgICBzdHJ1Y3QgbWVz b25fczkwNV91YXJ0ICp1YXJ0Owo+ICsgICAgaW50IHJlczsKPiArICAgIHU2NCBhZGRyLCBzaXpl Owo+ICsKPiArICAgIGlmICggc3RyY21wKGNvbmZpZywgIiIpICkKPiArICAgICAgICBwcmludGso IldBUk5JTkc6IFVBUlQgY29uZmlndXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkXG4iKTsKPiArCj4g KyAgICB1YXJ0ID0gJm1lc29uX3M5MDVfY29tOwo+ICsKPiArICAgIHJlcyA9IGR0X2RldmljZV9n ZXRfYWRkcmVzcyhkZXYsIDAsICZhZGRyLCAmc2l6ZSk7Cj4gKyAgICBpZiAoIHJlcyApCj4gKyAg ICB7Cj4gKyAgICAgICAgcHJpbnRrKCJtZXNvbl9zOTA1OiBVbmFibGUgdG8gcmV0cmlldmUgdGhl IGJhc2UgYWRkcmVzcyBvZgo+IHRoZSBVQVJUXG4iKTsKPiArICAgICAgICByZXR1cm4gcmVzOwo+ ICsgICAgfQo+ICsKPiArICAgIHJlcyA9IHBsYXRmb3JtX2dldF9pcnEoZGV2LCAwKTsKPiArICAg IGlmICggcmVzIDwgMCApCj4gKyAgICB7Cj4gKyAgICAgICAgcHJpbnRrKCJtZXNvbl9zOTA1OiBV bmFibGUgdG8gcmV0cmlldmUgdGhlIElSUVxuIik7Cj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgdWFydC0+aXJxICA9IHJlczsKPiArCj4gKyAgICB1YXJ0LT5y ZWdzID0gaW9yZW1hcF9ub2NhY2hlKGFkZHIsIHNpemUpOwo+ICsgICAgaWYgKCAhdWFydC0+cmVn cyApCj4gKyAgICB7Cj4gKyAgICAgICAgcHJpbnRrKCJtZXNvbl9zOTA1OiBVbmFibGUgdG8gbWFw IHRoZSBVQVJUIG1lbW9yeVxuIik7CgpVQVJUIG1lbW9yeSBzb3VuZHMgd2VpcmQuIEVpdGhlciBq dXN0IFVBUlQgb3IgVUFSVCBNTUlPIGZyYW1lLgoKPiArICAgICAgICByZXR1cm4gLUVOT01FTTsK PiArICAgIH0KPiArCj4gKyAgICB1YXJ0LT52dWFydC5iYXNlX2FkZHIgPSBhZGRyOwo+ICsgICAg dWFydC0+dnVhcnQuc2l6ZSA9IHNpemU7Cj4gKyAgICB1YXJ0LT52dWFydC5kYXRhX29mZiA9IFVB UlRfQ09OVFJPTDsKClRoaXMgc2hvdWxkIGJlIFdGSUZPLgoKPiArICAgIHVhcnQtPnZ1YXJ0LnN0 YXR1c19vZmYgPSBVQVJUX1NUQVRVUzsKPiArICAgIHVhcnQtPnZ1YXJ0LnN0YXR1cyA9IFVBUlRf UlhfRU1QVFkgfCBVQVJUX1RYX0VNUFRZOwo+ICsKPiArICAgIC8qIFJlZ2lzdGVyIHdpdGggZ2Vu ZXJpYyBzZXJpYWwgZHJpdmVyLiAqLwo+ICsgICAgc2VyaWFsX3JlZ2lzdGVyX3VhcnQoU0VSSE5E X0RUVUFSVCwgJm1lc29uX3VhcnRfZHJpdmVyLCB1YXJ0KTsKPiArCj4gKyAgICBkdF9kZXZpY2Vf c2V0X3VzZWRfYnkoZGV2LCBET01JRF9YRU4pOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR0X2RldmljZV9tYXRjaCBtZXNvbl9kdF9tYXRjaFtd IF9faW5pdGNvbnN0ID0KPiArewo+ICsgICAgRFRfTUFUQ0hfQ09NUEFUSUJMRSgiYW1sb2dpYyxt ZXNvbi11YXJ0IiksCgpZb3Ugc2hvdWxkIGxpc3QgYWxsIHRoZSBVQVJUIGNvbXBhdGlibGUgbmFt ZXMgdGhlIExpbnV4IGRyaXZlciBsaXN0cy4KVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGVn YWN5IGJpbmRpbmcgYW5kIHRoZSAic3RhYmxlIiBvbmVzIHNlZW1zIHRvCmJlIG9ubHkgdGhlIGNs b2NrIHJlZmVyZW5jZXMsIHdoaWNoIHdlIGRvbid0IGNhcmUgYWJvdXQuClRoZWlyIHVzYWdlIG9m IGNvbXBhdGlibGUgaXMgYSBiaXQgd2VpcmQsIGJ1dCBhdCBsZWFzdCB5b3UgbmVlZAoiYW1sb2dp YyxtZXNvbi1neC11YXJ0IiB0byBjb3ZlciB0aGUgNjQtYml0IHBhcnRzLgoKQ2hlZXJzLApBbmRy ZS4KCj4gKyAgICB7IC8qIHNlbnRpbmVsICovIH0sCj4gK307Cj4gKwo+ICtEVF9ERVZJQ0VfU1RB UlQobWVzb24sICJBbWxvZ2ljLVM5MDUgVUFSVCIsIERFVklDRV9TRVJJQUwpCj4gKyAgICAuZHRf bWF0Y2ggPSBtZXNvbl9kdF9tYXRjaCwKPiArICAgIC5pbml0ID0gbWVzb25fdWFydF9pbml0LAo+ ICtEVF9ERVZJQ0VfRU5ECj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1v ZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiArICogRW5kOgo+ICsqLwo+IAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=