From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC PATCH] xen/arm: Add MVEBU UART driver for Armada 3700 SoC Date: Sun, 11 Mar 2018 19:13:09 +0000 Message-ID: <00ed1948-9c91-0216-6113-d8482e018ed7@arm.com> References: <1520700252-19385-1-git-send-email-amittomer25@gmail.com> <1520700252-19385-2-git-send-email-amittomer25@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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.84_2) (envelope-from ) id 1ev6PJ-00058Z-LP for xen-devel@lists.xenproject.org; Sun, 11 Mar 2018 19:13:21 +0000 In-Reply-To: <1520700252-19385-2-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: andre.przywara@arm.com, sstabellini@kernel.org List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAwMy8xMC8yMDE4IDA0OjQ0IFBNLCBBbWl0IFNpbmdoIFRvbWFyIHdyb3RlOgo+IFRo aXMgcGF0Y2ggYWRkcyBkcml2ZXIgZm9yIFVBUlQgY29udHJvbGxlciBmb3VuZCBvbiBBcm1hZGEg MzcwMCBTb0MuCgpPT0ksIGRvIHlvdSBoYXZlIGFueSBwbGFuIGZvciBhZGRpbmcgZWFybHlwcmlu dGsgc3VwcG9ydCBmb3IgdGhhdCBwbGF0Zm9ybT8KCj4gCj4gVGhlcmUgaXMgbm8gcmVmZXJlbmNl IG1hbnVhbHMgYXZhaWxhYmxlIGZvciAzNzAwIFNvQyBpbiBwdWJsaWMgYW5kIHRoaXMKPiBkcml2 ZXIgaXMgZGVyaXZlZCBieSBsb29raW5nIGF0IExpbnV4IGRyaXZlci4KClBsZWFzZSBnaXZlIGEg bGluayB0byB0aGUgTGludXggZHJpdmVyLiBUaGlzIHdvdWxkIGhlbHAgbWUgZm9yIHJldmlld2lu ZyAKYW5kIGFsc28gZm9yIGZ1dHVyZSByZWZlcmVuY2UuCgpGb3Igbm93LCBzZWUgYmVsb3cgZm9y IHNvbWUgZ2VuZXJpYyBjb21tZW50cyByZWdhcmRpbmcgdGhlIGNvZGUuCgo+IAo+IFNpZ25lZC1v ZmYtYnk6IEFtaXQgU2luZ2ggVG9tYXIgPGFtaXR0b21lcjI1QGdtYWlsLmNvbT4KPiAtLS0KPiAg IHhlbi9kcml2ZXJzL2NoYXIvS2NvbmZpZyAgICAgIHwgICA4ICsrCj4gICB4ZW4vZHJpdmVycy9j aGFyL01ha2VmaWxlICAgICB8ICAgMSArCj4gICB4ZW4vZHJpdmVycy9jaGFyL212ZWJ1LXVhcnQu YyB8IDMxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKClRoaXMg aXMgcGFydCBvZiB4ZW4vZHJpdmVycy9jaGFyLyogc28gZXZlbiBpZiB0aGUgZHJpdmVyIGlmIG9u bHkgZm9yIEFSTSAKaGFyZHdhcmUsIHlvdSBsaWtlbHkgd2FudCB0byBDQyAiVEhFIFJFU1QiIG1h aW50YWluZXJzIGFzIHRoaXMgaXMgdW5kZXIgCmRyaXZlcnMvY2hhci4gc2NyaXB0cy9nZXRfbWFp bnRhaW5lcnMucGwgY2FuIGhlbHAgeW91IHRvIGZpbmQgcmVsZXZhbnQgCm1haW50YWluZXJzIHRv IENDIG9uIGVhY2ggcGF0Y2guCgpSZWdhcmRpbmcgdGhlIG1haW50ZW5hbmNlIGFmdGVyIGl0IGlz IG1lcmdlZCwgSSB0aGluayBpdCBzaG91bGQgZm9sZCAKdW5kZXIgIkFSTSIgYXMgZm9yIGFsbCB0 aGUgb3RoZXIgYXJjaCBzcGVjaWZpYyBVQVJUIGRyaXZlciAoUEwwMTEgJiBjbykuCgo+ICAgMyBm aWxlcyBjaGFuZ2VkLCAzMjQgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhl bi9kcml2ZXJzL2NoYXIvbXZlYnUtdWFydC5jCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L2NoYXIvS2NvbmZpZyBiL3hlbi9kcml2ZXJzL2NoYXIvS2NvbmZpZwo+IGluZGV4IGZiNTNkZDgu LjY5MGVkYTYgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvY2hhci9LY29uZmlnCj4gKysrIGIv eGVuL2RyaXZlcnMvY2hhci9LY29uZmlnCj4gQEAgLTEyLDYgKzEyLDE0IEBAIGNvbmZpZyBIQVNf Q0FERU5DRV9VQVJUCj4gICAJICBUaGlzIHNlbGVjdHMgdGhlIFhpbGlueCBaeW5xIENhZGVuY2Ug VUFSVC4gSWYgeW91IGhhdmUgYSBYaWxpbnggWnlucQo+ICAgCSAgYmFzZWQgYm9hcmQsIHNheSBZ Lgo+ICAgCj4gK2NvbmZpZyBIQVNfTVZFQlUKPiArICAgICAgICBib29sCj4gKyAgICAgICAgZGVm YXVsdCB5Cj4gKyAgICAgICAgZGVwZW5kcyBvbiBBUk1fNjQKPiArICAgICAgICBoZWxwCj4gKyAg ICAgICAgICBUaGlzIHNlbGVjdHMgdGhlIE1hcnZlbGwgTVZFQlUgVUFSVC4gaWYgeW91IGhhdmUg YW4gQVJNQURBIDM3MDAKPiArICAgICAgICAgIGJhc2VkIGJvYXJkLCBzYXkgWS4KPiArCj4gICBj b25maWcgSEFTX1BMMDExCj4gICAJYm9vbAo+ICAgCWRlZmF1bHQgeQo+IGRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9jaGFyL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvY2hhci9NYWtlZmlsZQo+IGlu ZGV4IDBkNDhiMTYuLmI2OGMzMzAgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvY2hhci9NYWtl ZmlsZQo+ICsrKyBiL3hlbi9kcml2ZXJzL2NoYXIvTWFrZWZpbGUKPiBAQCAtMyw2ICszLDcgQEAg b2JqLSQoQ09ORklHX0hBU19OUzE2NTUwKSArPSBuczE2NTUwLm8KPiAgIG9iai0kKENPTkZJR19I QVNfQ0FERU5DRV9VQVJUKSArPSBjYWRlbmNlLXVhcnQubwo+ICAgb2JqLSQoQ09ORklHX0hBU19Q TDAxMSkgKz0gcGwwMTEubwo+ICAgb2JqLSQoQ09ORklHX0hBU19FWFlOT1M0MjEwKSArPSBleHlu b3M0MjEwLXVhcnQubwo+ICtvYmotJChDT05GSUdfSEFTX01WRUJVKSArPSBtdmVidS11YXJ0Lm8K PiAgIG9iai0kKENPTkZJR19IQVNfT01BUCkgKz0gb21hcC11YXJ0Lm8KPiAgIG9iai0kKENPTkZJ R19IQVNfU0NJRikgKz0gc2NpZi11YXJ0Lm8KPiAgIG9iai0kKENPTkZJR19IQVNfRUhDSSkgKz0g ZWhjaS1kYmdwLm8KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hhci9tdmVidS11YXJ0LmMg Yi94ZW4vZHJpdmVycy9jaGFyL212ZWJ1LXVhcnQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uZmRjYzE1Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vZHJpdmVy cy9jaGFyL212ZWJ1LXVhcnQuYwo+IEBAIC0wLDAgKzEsMzE1IEBACj4gKy8qCj4gKyAqIHhlbi9k cml2ZXJzL2NoYXIvbXZlYnUzNzAwLXVhcnQuYwo+ICsgKgo+ICsgKiBEcml2ZXIgZm9yIE1hcnZl bGwgTVZFQlUgVUFSVC4KPiArICoKPiArICogQW1pdCBTaW5naCBUb21hcjxhbWl0dG9tZXIyNUBn bWFpbC5jb20+CgpOSVQ6IHNwYWNlIGJlZm9yZSA8LgoKPiArICogQ29weXJpZ2h0IChjKSAyMDE4 Lgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc20vZGV2aWNl Lmg+Cj4gKyNpbmNsdWRlIDxhc20vaW8uaD4KCjx4ZW4vKj4gaW5jbHVkZSBzaG91bGQgYmUgZmly c3QsIHRoZW4gPGFzbS8qPi4KCj4gKyNpbmNsdWRlIDx4ZW4vY29uc29sZS5oPgo+ICsjaW5jbHVk ZSA8eGVuL2Vycm5vLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgo+ICsjaW5jbHVkZSA8eGVu L2lycS5oPgo+ICsjaW5jbHVkZSA8eGVuL21tLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+ Cj4gKyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+Cgp4ZW4vc2VyaWFsLmggaXMgbWVudGlvbmVkIHR3 aWNlLgoKPiArI2luY2x1ZGUgPHhlbi92bWFwLmg+Cj4gKwo+ICsjZGVmaW5lIFVBUlRfUlhfUkVH ICAgICAgICAgICAgIDB4MDAKPiArI2RlZmluZSBSQlJfQlJLX0RFVCAgICAgICAgICAgICBCSVQo MTUpCj4gKyNkZWZpbmUgUkJSX0ZSTV9FUlJfREVUICAgICAgICAgQklUKDE0KQo+ICsjZGVmaW5l IFJCUl9QQVJfRVJSX0RFVCAgICAgICAgIEJJVCgxMykKPiArI2RlZmluZSBSQlJfT1ZSX0VSUl9E RVQgICAgICAgICBCSVQoMTIpCj4gKwo+ICsjZGVmaW5lIFVBUlRfVFhfUkVHICAgICAgICAgICAg IDB4MDQKPiArCj4gKyNkZWZpbmUgVUFSVF9DVFJMX1JFRyAgICAgICAgICAgMHgwOAo+ICsjZGVm aW5lIENUUkxfU09GVF9SU1QgICAgICAgICAgIEJJVCgzMSkKPiArI2RlZmluZSBDVFJMX1RYRklG T19SU1QgICAgICAgICBCSVQoMTUpCj4gKyNkZWZpbmUgQ1RSTF9SWEZJRk9fUlNUICAgICAgICAg QklUKDE0KQo+ICsjZGVmaW5lIENUUkxfU1RfTUlSUl9FTiAgICAgICAgIEJJVCgxMykKPiArI2Rl ZmluZSBDVFJMX0xQQktfRU4gICAgICAgICAgICBCSVQoMTIpCj4gKyNkZWZpbmUgQ1RSTF9TTkRf QlJLX1NFUSAgICAgICAgQklUKDExKQo+ICsjZGVmaW5lIENUUkxfUEFSX0VOICAgICAgICAgICAg IEJJVCgxMCkKPiArI2RlZmluZSBDVFJMX1RXT19TVE9QICAgICAgICAgICBCSVQoOSkKPiArI2Rl ZmluZSBDVFJMX1RYX0hGTF9JTlQgICAgICAgICBCSVQoOCkKPiArI2RlZmluZSBDVFJMX1JYX0hG TF9JTlQgICAgICAgICBCSVQoNykKPiArI2RlZmluZSBDVFJMX1RYX0VNUF9JTlQgICAgICAgICBC SVQoNikKPiArI2RlZmluZSBDVFJMX1RYX1JEWV9JTlQgICAgICAgICBCSVQoNSkKPiArI2RlZmlu ZSBDVFJMX1JYX1JEWV9JTlQgICAgICAgICBCSVQoNCkKPiArI2RlZmluZSBDVFJMX0JSS19ERVRf SU5UICAgICAgICBCSVQoMykKPiArI2RlZmluZSBDVFJMX0ZSTV9FUlJfSU5UICAgICAgICBCSVQo MikKPiArI2RlZmluZSBDVFJMX1BBUl9FUlJfSU5UICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBD VFJMX09WUl9FUlJfSU5UICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBDVFJMX1JYX0lOVCAgICAg ICAgICAgICAoQ1RSTF9CUktfREVUX0lOVCB8IENUUkxfRlJNX0VSUl9JTlQgfCBcCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENUUkxfUEFSX0VSUl9JTlQgfCBDVFJMX09WUl9F UlJfSU5UKQo+ICsKPiArI2RlZmluZSBVQVJUX1NUQVRVU19SRUcgICAgICAgICAweDBjCj4gKyNk ZWZpbmUgU1RBVFVTX1RYRklGT19FTVAgICAgICAgQklUKDEzKQo+ICsjZGVmaW5lIFNUQVRVU19S WEZJRk9fRU1QICAgICAgIEJJVCgxMikKPiArI2RlZmluZSBTVEFUVVNfVFhGSUZPX0ZVTCAgICAg ICBCSVQoMTEpCj4gKyNkZWZpbmUgU1RBVFVTX1RYRklGT19IRkwgICAgICAgQklUKDEwKQo+ICsj ZGVmaW5lIFNUQVRVU19SWF9UT0dMICAgICAgICAgIEJJVCg5KQo+ICsjZGVmaW5lIFNUQVRVU19S WEZJRk9fRlVMICAgICAgIEJJVCg4KQo+ICsjZGVmaW5lIFNUQVRVU19SWEZJRk9fSEZMICAgICAg IEJJVCg3KQo+ICsjZGVmaW5lIFNUQVRVU19UWF9FTVAgICAgICAgICAgIEJJVCg2KQo+ICsjZGVm aW5lIFNUQVRVU19UWF9SRFkgICAgICAgICAgIEJJVCg1KQo+ICsjZGVmaW5lIFNUQVRVU19SWF9S RFkgICAgICAgICAgIEJJVCg0KQo+ICsjZGVmaW5lIFNUQVRVU19CUktfREVUICAgICAgICAgIEJJ VCgzKQo+ICsjZGVmaW5lIFNUQVRVU19GUk1fRVJSICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5l IFNUQVRVU19QQVJfRVJSICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lIFNUQVRVU19PVlJfRVJS ICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIFNUQVRVU19CUktfRVJSICAgICAgICAgIChTVEFU VVNfQlJLX0RFVCB8IFNUQVRVU19GUk1fRVJSIHwgXAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNUQVRVU19QQVJfRVJSIHwgU1RBVFVTX09WUl9FUlIpCj4gKwo+ICsjZGVmaW5l IFVBUlRfQkFVRF9SRUcgICAgICAgICAgIDB4MTAKPiArI2RlZmluZSBVQVJUX1BPU1NSX1JFRyAg ICAgICAgICAweDE0CgpDYW4geW91IHBsZWFzZSBvbmx5IGRlZmluZSBvbmx5IHJlZ2lzdGVycy9i aXRzIHVzZWQgaW4gdGhlIGNvZGU/Cgo+ICsKPiArI2RlZmluZSBUWF9GSUZPX1NJWkUgICAgICAg ICAgICAzMgo+ICsjZGVmaW5lIFJYX0ZJRk9fU0laRSAgICAgICAgICAgIDY0Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IG12ZWJ1MzcwMF91YXJ0IHsKPiArICAgIHVuc2lnbmVkIGludCBiYXVkLCBkYXRh X2JpdHMsIHBhcml0eSwgc3RvcF9iaXRzOwoKQXJlIGFsbCB0aG9zZSBmaWVsZHMgbmVjZXNzYXJ5 PyBGb3IgaW5zdGFuY2UsIHlvdSBhbHdheXMgc2V0IGJhdWQgYnV0IApuZXZlciByZWFkIGl0LgoK PiArICAgIHVuc2lnbmVkIGludCBpcnE7Cj4gKyAgICB2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gKyAg ICBzdHJ1Y3QgaXJxYWN0aW9uIGlycWFjdGlvbjsKPiArICAgIHN0cnVjdCB2dWFydF9pbmZvIHZ1 YXJ0Owo+ICt9IG12ZWJ1MzcwMF9jb20gPSB7MH07Cj4gKwo+ICsjZGVmaW5lIFBBUklUWV9OT05F ICAoMCkKPiArCj4gKyNkZWZpbmUgbXZlYnUzNzAwX3JlYWQodWFydCwgb2ZmKSAgICAgICAgICAg cmVhZGwoKHVhcnQpLT5yZWdzICsgb2ZmKQo+ICsjZGVmaW5lIG12ZWJ1MzcwMF93cml0ZSh1YXJ0 LCBvZmYsIHZhbCkgICAgIHdyaXRlbCh2YWwsICh1YXJ0LT5yZWdzKSArIG9mZikKPiArCj4gK3N0 YXRpYyB2b2lkIG12ZWJ1MzcwMF91YXJ0X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkYXRhLCBz dHJ1Y3QKPiArY3B1X3VzZXJfcmVncyAqcmVncykKClRoZSBpbmRlbnRhdGlvbiBsb29rcyB3cm9u ZyBoZXJlLgoKPiArewo+ICsgICAgc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0ID0gZGF0YTsKPiAr ICAgIHN0cnVjdCBtdmVidTM3MDBfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7Cj4gKyAgICB1bnNp Z25lZCBpbnQgc3QgPSBtdmVidTM3MDBfcmVhZCh1YXJ0LCBVQVJUX1NUQVRVU19SRUcpOwo+ICsK PiArICAgIGlmICggc3QgJiBTVEFUVVNfVFhfUkRZICkKPiArICAgICAgICBzZXJpYWxfdHhfaW50 ZXJydXB0KHBvcnQsIHJlZ3MpOwo+ICsKPiArICAgIGlmICggc3QgJiAoU1RBVFVTX1JYX1JEWSB8 IFNUQVRVU19PVlJfRVJSIHwgU1RBVFVTX0ZSTV9FUlIgfCBTVEFUVVNfQlJLX0RFVCkgKQo+ICsg ICAgICAgIHNlcmlhbF9yeF9pbnRlcnJ1cHQocG9ydCwgcmVncyk7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIF9faW5pdCBtdmVidTM3MDBfdWFydF9pbml0X3ByZWlycShzdHJ1Y3Qgc2VyaWFsX3Bv cnQgKnBvcnQpCj4gK3sKPiArICAgIHN0cnVjdCBtdmVidTM3MDBfdWFydCAqdWFydCA9IHBvcnQt PnVhcnQ7Cj4gKyAgICB1bnNpZ25lZCByZXQ7CgoncmV0JyBpcyBhIGJpdCBjb25mdXNpb24uIEkg d291bGQgZXhwZWN0IHRvIGJlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIApmdW5jdGlvbiBidXQg aXQgaXMgdXNlZCBhIHRlbXBvcmFyeSB2YXJpYWJsZSBmb3IgcmVhZGluZy93cml0ZSByZWcuIFlv dSAKbWlnaHQgd2FudCB0byByZW5hbWUgdG8gJ3JlZycgZm9yIG1vcmUgY2xhcml0eS4KCkJ1dCBh cyB0aGlzIGlzIGEgcmVnaXN0ZXIgdmFsdWUgKGkuZSBzcGVjaWZpYyBzaXplKSwgcGxlYXNlIHVz ZSB1aW50MzJfdC4KCj4gKwo+ICsgICAgcmV0ID0gbXZlYnUzNzAwX3JlYWQodWFydCwgVUFSVF9D VFJMX1JFRyk7Cj4gKyAgICByZXQgfD0gKENUUkxfVFhGSUZPX1JTVCB8IENUUkxfUlhGSUZPX1JT VCk7Cj4gKyAgICBtdmVidTM3MDBfd3JpdGUodWFydCwgVUFSVF9DVFJMX1JFRywgcmV0KTsKPiAr Cj4gKyAgICAvKiBCZWZvcmUgd2UgbWFrZSBJUlEgcmVxdWVzdCwgQ2xlYXIgdGhlIGVycm9yIGJp dHMgb2Ygc3RhdGUgcmVnaXN0ZXIgKi8KCnMvQ2xlYXIvY2xlYXIvIGFuZCBtaXNzaW5nIGZ1bGwg c3RvcC4KCj4gKyAgICByZXQgPSBtdmVidTM3MDBfcmVhZCh1YXJ0LCBVQVJUX1NUQVRVU19SRUcp Owo+ICsgICAgcmV0IHw9IFNUQVRVU19CUktfRVJSOwo+ICsgICAgbXZlYnUzNzAwX3dyaXRlKHVh cnQsIFVBUlRfU1RBVFVTX1JFRywgcmV0KTsKPiArCj4gKyAgICAvKiBDbGVhciBlcnJvciBpbnRl cnJ1cHRzICovCj4gKyAgICBtdmVidTM3MDBfd3JpdGUodWFydCwgVUFSVF9DVFJMX1JFRywgQ1RS TF9SWF9JTlQpOwo+ICsKPiArICAgIC8qIERpc2FibGUgUngvVHggaW50ZXJydXB0cyAqLwo+ICsg ICAgcmV0ID0gbXZlYnUzNzAwX3JlYWQodWFydCwgVUFSVF9DVFJMX1JFRyk7Cj4gKyAgICByZXQg Jj0gfihDVFJMX1JYX1JEWV9JTlQgfCBDVFJMX1RYX1JEWV9JTlQpOwo+ICsgICAgbXZlYnUzNzAw X3dyaXRlKHVhcnQsIFVBUlRfQ1RSTF9SRUcsIHJldCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IF9faW5pdCBtdmVidTM3MDBfdWFydF9pbml0X3Bvc3RpcnEoc3RydWN0IHNlcmlhbF9wb3J0ICpw b3J0KQo+ICt7Cj4gKyAgICBzdHJ1Y3QgbXZlYnUzNzAwX3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0 Owo+ICsgICAgaW50IHJldDsKPiArCj4gKyAgICBpZiAoIHVhcnQtPmlycSA+IDAgKQo+ICsgICAg ewo+ICsgICAgICAgIHVhcnQtPmlycWFjdGlvbi5oYW5kbGVyID0gbXZlYnUzNzAwX3VhcnRfaW50 ZXJydXB0Owo+ICsgICAgICAgIHVhcnQtPmlycWFjdGlvbi5uYW1lICAgID0gIm12ZWJ1MzcwMF91 YXJ0IjsKPiArICAgICAgICB1YXJ0LT5pcnFhY3Rpb24uZGV2X2lkICA9IHBvcnQ7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgaWYgKCAocmV0ID0gc2V0dXBfaXJxKHVhcnQtPmlycSwgMCwgJnVhcnQtPmly cWFjdGlvbikpICE9IDAgKQoKV2h5IGRvIHlvdSBzZXQgJ3JldCcgaGVyZT8KCj4gKyAgICAgICAg ZHByaW50ayhYRU5MT0dfRVJSLCAiRmFpbGVkIHRvIGFsbG9jYXRlZCBtdmVidTM3MDBfdWFydCBJ UlEgJWRcbiIsCj4gKyAgICAgICAgICAgICAgICB1YXJ0LT5pcnEpOwoKZHByaW50ayB3aWxsIG9u bHkgYmUgdXNlZCBpbiBkZWJ1ZyBidWlsZC4gSSB0aGluayB0aGlzIHNob3VsZCBiZSBwcmludGsg CmhlcmUuCgo+ICsKPiArICAgIC8qIE1ha2Ugc3VyZSBSeC9UeCBpbnRlcnJ1cHRzIGFyZSBlbmFi bGVkIG5vdyAqLwo+ICsgICAgcmV0ID0gbXZlYnUzNzAwX3JlYWQodWFydCwgVUFSVF9DVFJMX1JF Ryk7CgpyZXQgaXMgYW4gaW50LiBUaGlzIGlzIHVzdWFsbHkgYSBwcmV0dHkgYmFkIGlkZWEgdG8g dXNlIHNpZ25lZCB2YWx1ZSBmb3IgCnJlZ2lzdGVyLiBGdXJ0aGVybW9yZSwgSSB3b3VsZCBoaWdo bHkgcmVjb21tZW5kIHRvIHNwZWNpZmljIHRoZSBzaXplIGluIAp0aGUgdmFyaWFibGUgdHlwZSAo ZS5nIHVpbnQzMl90KS4KCj4gKyAgICByZXQgfD0gKENUUkxfUlhfUkRZX0lOVCB8IENUUkxfVFhf UkRZX0lOVCk7Cj4gKyAgICBtdmVidTM3MDBfd3JpdGUodWFydCwgVUFSVF9DVFJMX1JFRywgcmV0 KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXZlYnUzNzAwX3VhcnRfc3VzcGVuZChzdHJ1Y3Qg c2VyaWFsX3BvcnQgKnBvcnQpCj4gK3sKPiArICAgIEJVRygpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBtdmVidTM3MDBfdWFydF9yZXN1bWUoc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0KQo+ICt7 Cj4gKyAgICBCVUcoKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXZlYnUzNzAwX3VhcnRfcHV0 YyhzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQsIGNoYXIgYykKPiArewo+ICsgICAgc3RydWN0IG12 ZWJ1MzcwMF91YXJ0ICp1YXJ0ID0gcG9ydC0+dWFydDsKPiArCj4gKyAgICBtdmVidTM3MDBfd3Jp dGUodWFydCwgVUFSVF9UWF9SRUcsIGMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG12ZWJ1Mzcw MF91YXJ0X2dldGMoc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0LCBjaGFyICpjKQo+ICt7Cj4gKyAg ICBzdHJ1Y3QgbXZlYnUzNzAwX3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0Owo+ICsKPiArICAgIGlm ICggIShtdmVidTM3MDBfcmVhZCh1YXJ0LCBVQVJUX1NUQVRVU19SRUcpICYgU1RBVFVTX1JYX1JE WSkgKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICpjID0gbXZlYnUzNzAwX3JlYWQo dWFydCwgVUFSVF9SWF9SRUcpICYgMHhmZjsKPiArCj4gKyAgICByZXR1cm4gMTsKPiArfQo+ICsK PiArc3RhdGljIGludCBfX2luaXQgbXZlYnUzNzAwX2lycShzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBv cnQpCj4gK3sKPiArICAgIHN0cnVjdCBtdmVidTM3MDBfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7 Cj4gKwo+ICsgICAgcmV0dXJuICggKHVhcnQtPmlycSA+IDApID8gdWFydC0+aXJxIDogLTEgKTsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2dWFydF9pbmZvICptdmVidTM3MDBfdnVh cnRfaW5mbyhzdHJ1Y3Qgc2VyaWFsX3BvcnQgKnBvcnQpCj4gK3sKPiArICAgIHN0cnVjdCBtdmVi dTM3MDBfdWFydCAqdWFydCA9IHBvcnQtPnVhcnQ7Cj4gKwo+ICsgICAgcmV0dXJuICZ1YXJ0LT52 dWFydDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXZlYnUzNzAwX3VhcnRfc3RvcF90eChzdHJ1 Y3Qgc2VyaWFsX3BvcnQgKnBvcnQpCj4gK3sKPiArICAgIHN0cnVjdCBtdmVidTM3MDBfdWFydCAq dWFydCA9IHBvcnQtPnVhcnQ7Cj4gKyAgICB1bnNpZ25lZCBpbnQgY3RsOwoKcy91bnNpZ25lZCBp bnQvdWludDMyX3QvLgoKPiArCj4gKyAgICBjdGwgPSBtdmVidTM3MDBfcmVhZCh1YXJ0LCBVQVJU X0NUUkxfUkVHKTsKPiArICAgIGN0bCAmPSB+Q1RSTF9UWF9SRFlfSU5UOwo+ICsgICAgbXZlYnUz NzAwX3dyaXRlKHVhcnQsIFVBUlRfQ1RSTF9SRUcsIGN0bCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIG12ZWJ1MzcwMF91YXJ0X3N0YXJ0X3R4KHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydCkKPiAr ewo+ICsgICAgc3RydWN0IG12ZWJ1MzcwMF91YXJ0ICp1YXJ0ID0gcG9ydC0+dWFydDsKPiArICAg IHVuc2lnbmVkIGludCBjdGw7Cj4gKwo+ICsgICAgY3RsID0gbXZlYnUzNzAwX3JlYWQodWFydCwg VUFSVF9DVFJMX1JFRyk7Cj4gKyAgICBjdGwgfD0gQ1RSTF9UWF9SRFlfSU5UOwo+ICsgICAgbXZl YnUzNzAwX3dyaXRlKHVhcnQsIFVBUlRfQ1RSTF9SRUcsIGN0bCk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgbXZlYnUzNzAwX3VhcnRfdHhfcmVhZHkoc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0KQo+ ICt7Cj4gKyAgICBzdHJ1Y3QgbXZlYnUzNzAwX3VhcnQgKnVhcnQgPSBwb3J0LT51YXJ0Owo+ICsK PiArICAgIHJldHVybiAoIG12ZWJ1MzcwMF9yZWFkKHVhcnQsIFVBUlRfU1RBVFVTX1JFRykgJiBT VEFUVVNfVFhGSUZPX0VNUCA/Cj4gKyAgICAgICAgICAgICBUWF9GSUZPX1NJWkUgOiAwICk7CgpU aGlzIGlzIG5vdCBzbyBuaWNlIHRvIHJlYWQuIENhbiB5b3UgaW50cm9kdWNlIGEgdGVtcG9yYXJ5 IHZhcmlhYmxlIHRvIApyZWFkIHRoZSByZWdpc3Rlcj8KCj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgdWFydF9kcml2ZXIgX19yZWFkX21vc3RseSBtdmVidTM3MDBfdWFydF9kcml2ZXIgPSB7Cj4g KyAgICAuaW5pdF9wcmVpcnEgID0gbXZlYnUzNzAwX3VhcnRfaW5pdF9wcmVpcnEsCj4gKyAgICAu aW5pdF9wb3N0aXJxID0gbXZlYnUzNzAwX3VhcnRfaW5pdF9wb3N0aXJxLAo+ICsgICAgLmVuZGJv b3QgICAgICA9IE5VTEwsCj4gKyAgICAuc3VzcGVuZCAgICAgID0gbXZlYnUzNzAwX3VhcnRfc3Vz cGVuZCwKPiArICAgIC5yZXN1bWUgICAgICAgPSBtdmVidTM3MDBfdWFydF9yZXN1bWUsCj4gKyAg ICAucHV0YyAgICAgICAgID0gbXZlYnUzNzAwX3VhcnRfcHV0YywKPiArICAgIC5nZXRjICAgICAg ICAgPSBtdmVidTM3MDBfdWFydF9nZXRjLAo+ICsgICAgLnR4X3JlYWR5ICAgICA9IG12ZWJ1Mzcw MF91YXJ0X3R4X3JlYWR5LAo+ICsgICAgLnN0b3BfdHggICAgICA9IG12ZWJ1MzcwMF91YXJ0X3N0 b3BfdHgsCj4gKyAgICAuc3RhcnRfdHggICAgID0gbXZlYnUzNzAwX3VhcnRfc3RhcnRfdHgsCj4g KyAgICAuaXJxICAgICAgICAgID0gbXZlYnUzNzAwX2lycSwKPiArICAgIC52dWFydF9pbmZvICAg PSBtdmVidTM3MDBfdnVhcnRfaW5mbywKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgX19pbml0IG12 ZWJ1X3VhcnRfaW5pdChzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKmRldiwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSkKPiArewo+ICsgICAg Y29uc3QgY2hhciAqY29uZmlnID0gZGF0YTsKPiArICAgIHN0cnVjdCBtdmVidTM3MDBfdWFydCAq dWFydDsKPiArICAgIGludCByZXM7Cj4gKyAgICB1NjQgYWRkciwgc2l6ZTsKPiArCj4gKyAgICBp ZiAoIHN0cmNtcChjb25maWcsICIiKSApCj4gKyAgICAgICAgcHJpbnRrKCJXQVJOSU5HOiBVQVJU IGNvbmZpZ3VyYXRpb24gaXMgbm90IHN1cHBvcnRlZFxuIik7Cj4gKwo+ICsgICAgdWFydCA9ICZt dmVidTM3MDBfY29tOwo+ICsKPiArICAgIHJlcyA9IGR0X2RldmljZV9nZXRfYWRkcmVzcyhkZXYs IDAsICZhZGRyLCAmc2l6ZSk7Cj4gKyAgICBpZiAoIHJlcyApCj4gKyAgICB7Cj4gKyAgICAgICAg cHJpbnRrKCJtdmVidTM3MDA6IFVuYWJsZSB0byByZXRyaWV2ZSB0aGUgYmFzZSIKPiArICAgICAg ICAgICAgICAgIiBhZGRyZXNzIG9mIHRoZSBVQVJUXG4iKTsKClBsZWFzZSBkb24ndCBzcGxpdCBt ZXNzYWdlICh1bmxlc3MgdGhlcmUgYXJlIGEgbmV3bGluZSBpbiBpdCkuIFRoaXMgaXMgCm1vcmUg ZGlmZmljdWx0IHRvIGdyZXAgaW4gdGhlIGNvZGUuIFRoaXMgaXMgb25lIHBsYWNlIHdoZXJlIHdl IGFjY2VwdCAKbGluZSBncmVhdGVyIHRoYW4gODAgY2hhcmFjdGVycy4KCj4gKyAgICAgICAgcmV0 dXJuIHJlczsKPiArICAgIH0KPiArCj4gKyAgICByZXMgPSBwbGF0Zm9ybV9nZXRfaXJxKGRldiwg MCk7Cj4gKyAgICBpZiAoIHJlcyA8IDAgKQo+ICsgICAgewo+ICsgICAgICAgIHByaW50aygibXZl YnUzNzAwOiBVbmFibGUgdG8gcmV0cmlldmUgdGhlIElSUVxuIik7Cj4gKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgdWFydC0+aXJxICA9IHJlczsKPiArICAgIHVh cnQtPmJhdWQgPSBCQVVEX0FVVE87Cj4gKyAgICB1YXJ0LT5kYXRhX2JpdHMgPSA4Owo+ICsgICAg dWFydC0+cGFyaXR5ID0gUEFSSVRZX05PTkU7Cj4gKyAgICB1YXJ0LT5zdG9wX2JpdHMgPSAxOwo+ ICsKPiArICAgIHVhcnQtPnJlZ3MgPSBpb3JlbWFwX25vY2FjaGUoYWRkciwgc2l6ZSk7Cj4gKyAg ICBpZiAoICF1YXJ0LT5yZWdzICkKPiArICAgIHsKPiArICAgICAgICBwcmludGsoIm12ZWJ1Mzcw MDogVW5hYmxlIHRvIG1hcCB0aGUgVUFSVCBtZW1vcnlcbiIpOwo+ICsgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ICsgICAgfQo+ICsKPiArICAgIHVhcnQtPnZ1YXJ0LmJhc2VfYWRkciA9IGFkZHI7 Cj4gKyAgICB1YXJ0LT52dWFydC5zaXplID0gc2l6ZTsKPiArICAgIHVhcnQtPnZ1YXJ0LmRhdGFf b2ZmID0gVUFSVF9DVFJMX1JFRzsKPiArICAgIHVhcnQtPnZ1YXJ0LnN0YXR1c19vZmYgPSBVQVJU X1NUQVRVU19SRUc7Cj4gKyAgICB1YXJ0LT52dWFydC5zdGF0dXMgPSBTVEFUVVNfVFhfUkRZIHwg U1RBVFVTX1JYX1JEWTsKPiArCj4gKyAgICAvKiBSZWdpc3RlciB3aXRoIGdlbmVyaWMgc2VyaWFs IGRyaXZlci4gKi8KPiArICAgIHNlcmlhbF9yZWdpc3Rlcl91YXJ0KFNFUkhORF9EVFVBUlQsICZt dmVidTM3MDBfdWFydF9kcml2ZXIsIHVhcnQpOwo+ICsKPiArICAgIGR0X2RldmljZV9zZXRfdXNl ZF9ieShkZXYsIERPTUlEX1hFTik7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX21hdGNoIG12ZWJ1X2R0X21hdGNoW10gX19pbml0 Y29uc3QgPQo+ICt7Cj4gKyAgICBEVF9NQVRDSF9DT01QQVRJQkxFKCJtYXJ2ZWxsLGFybWFkYS0z NzAwLXVhcnQiKSwKPiArICAgIHsgLyogc2VudGluZWwgKi8gfSwKPiArfTsKPiArCj4gK0RUX0RF VklDRV9TVEFSVChtdmVidSwgIk1hcnZlbGwgQXJtYWRhLTM3MDAgVUFSVCIsIERFVklDRV9TRVJJ QUwpCj4gKyAgICAuZHRfbWF0Y2ggPSBtdmVidV9kdF9tYXRjaCwKPiArICAgIC5pbml0ID0gbXZl YnVfdWFydF9pbml0LAo+ICtEVF9ERVZJQ0VfRU5ECj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJp YWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJh c2ljLW9mZnNldDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiArICogRW5kOgo+ICsg Ki8KPiAKCkNoZWVycywKCi0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=