From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: Re: [PATCH 03/12 v3] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Fri, 26 May 2017 19:12:31 +0530 Message-ID: References: <1494426293-32481-1-git-send-email-bhupinder.thakur@linaro.org> <1494426293-32481-3-git-send-email-bhupinder.thakur@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dEFVj-0001Hk-1z for xen-devel@lists.xenproject.org; Fri, 26 May 2017 13:42:35 +0000 Received: by mail-ua0-f182.google.com with SMTP id j17so6237315uag.3 for ; Fri, 26 May 2017 06:42:33 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: xen-devel@lists.xenproject.org, Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGkgSnVsaWVuLAoKVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLgoKPgo+Cj4+ICtzdGF0aWMgYm9v bCB2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGludCBzaXplKQo+Cj4KPiBQbGVhc2UgcGFzcyBo c3JfZGFidCBpbiBwYXJhbWV0ZXIgcmF0aGVyIHRoYW4gdGhlIHNpemUgZGlyZWN0bHkuIFdoaWNo IEJUVwo+IHNob3VsZCBoYXZlIHJlYWxseSBiZSB1bnNpZ25lZCBpbnQuCj4Kb2suCgo+PiArewo+ PiArICAgIHJldHVybiAoc2l6ZSA9PSBEQUJUX0RPVUJMRV9XT1JEKT8gZmFsc2UgOiB0cnVlOwo+ Cj4KPiBUaGlzIGNvdWxkIGJlIHNpbXBsaWZpZWQgd2l0aCAoc2l6ZSAhPSBEQUJUX0RPVUJMRV9X T1JEKS4gQWxzbyBwbGVhc2UgYWRkIGEKPiBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHdlIGFsbG93 IGFsbCB0aGUgc2l6ZXMgYnV0IDY0LWJpdC4KPgpvay4KCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkIHZwbDAxMV91cGRhdGVfc3BpKHN0cnVjdCBkb21haW4gKmQpCj4KPgo+IFBsZWFzZSByZW5h bWUgdGhpcyBmdW5jdGlvbiB0byB2cGwwMTFfdXBkYXRlLgo+Cm9rLgo+PiArewo+PiArICAgIHN0 cnVjdCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+PiArCj4+ICsgICAgaWYg KCB2cGwwMTEtPnVhcnRyaXMgJiB2cGwwMTEtPnVhcnRpbXNjICkKPgo+Cj4gTGlrZWx5IHlvdSB3 YW50IGEgdG9kbyB0byBzYXkgd2UgbmVlZCB0byByZXZpc2l0IHRoYXQgd2hlbiB0aGUgdkdJQyBp cwo+IGhhbmRsaW5nIHByb3Blcmx5IGxldmVsIGludGVycnVwdC4KPgpvay4KCj4+ICsgICAgICAg IHZnaWNfdmNwdV9pbmplY3Rfc3BpKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgdm9pZCB2cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ4X3Qg KmRhdGEpCj4KPgo+IElmIGEgcG9pbnRlciBpcyBwYXNzZWQgdG8gYmUgZmlsbGVkLCB0aGVuIEkg d291bGQgZXhwZWN0IGFuIGVycm9yIHZhbHVlIHRvCj4gYmUgcmV0dXJuZWQuCj4KPiBJIHdvdWxk IHVzdWFsbHkgcG9pbnRlciBpZiB0aGUgZnVuY3Rpb24gaGFzIHRvIGZpbGwgYSBzdHJ1Y3R1cmUg b3IgaXQgaXMgbm90Cj4gcG9zc2libGUgdG8gdXNlIHRoZSByZXR1cm4uCj4KPiBJbiB0aGlzIGNh c2UsIHRoZSB2YWx1ZSBpcyA4LWJpdCBhbmQgeW91IGRvbid0IGhhdmUgcmV0dXJuIHZhbHVlLiBT byByZXR1cm4KPiB0aGUgdmFsdWUgcmF0aGVyIHRoYW4gcGFzc2luZyBhIHBvaW50ZXIuCj4KSSB3 aWxsIHJldHVybiB0aGUgZGF0YS4KCgo+Cj4+ICsgICAgICAgICpkYXRhID0gaW50Zi0+aW5bVlBM MDExX1JJTkdfSURYX01BU0soaW5fY29ucywgaW50Zi0+aW4pXTsKPj4gKyAgICAgICAgc21wX21i KCk7Cj4+ICsgICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25zICsgMTsKPj4gKyAgICB9Cj4K Pgo+IEZvciBkZWJ1Z2dpbmcgcHVycG9zZSwgaXQgd291bGQgYmUgZ29vZCB0byBoYXZlIGEgbWVz c2FnZSBpZiB0aGUgcmluZyBpcwo+IGVtcHR5Lgpvay4KCj4KPj4gKwo+PiArICAgIGlmICggVlBM MDExX0lOX1JJTkdfRU1QVFkoaW50ZikgKQo+PiArICAgIHsKPj4gKyAgICAgICAgdnBsMDExLT51 YXJ0ZnIgfD0gUlhGRTsKPj4gKyAgICAgICAgdnBsMDExLT51YXJ0cmlzICY9IH5SWEk7Cj4+ICsg ICAgfQo+PiArICAgIHZwbDAxMS0+dWFydGZyICY9IH5SWEZGOwo+PiArICAgIFZQTDAxMV9VTkxP Q0soZCwgZmxhZ3MpOwo+PiArCj4+ICsgICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChk LCB2cGwwMTEtPmV2dGNobik7Cj4KPgo+IEl0IHdvdWxkIGJlIGdvb2QgdG8gZXhwbGFpbiB3aHkg eW91IG5lZWQgdG8gbm90aWZpY2F0aW9uIGhlcmUuCj4KT24gc2Vjb25kIHRob3VnaHRzLCBub3Rp ZmljYXRpb24gaXMgbm90IHJlcXVpcmVkIGhlcmUuCgoKPgo+PiArICAgICAgICBpbnRmLT5vdXRb VlBMMDExX1JJTkdfSURYX01BU0sob3V0X3Byb2QsIGludGYtPm91dCldID0gZGF0YTsKPj4gKyAg ICAgICAgc21wX3dtYigpOwo+PiArICAgICAgICBpbnRmLT5vdXRfcHJvZCA9IG91dF9wcm9kICsg MTsKPj4gKyAgICB9Cj4KPgo+IEZvciBkZWJ1Z2dpbmcgcHVycG9zZSwgaXQgd291bGQgYmUgdXNl ZnVsIHRvIGdldCBhIG1lc3NhZ2UgaWYgdGhlIHJpbmcgaXMKPiBmdWxsLgo+Cm9rLgo+PiArCj4+ ICsgICAgaWYgKCBWUEwwMTFfT1VUX1JJTkdfRlVMTChpbnRmKSApCj4+ICsgICAgewo+PiArICAg ICAgICB2cGwwMTEtPnVhcnRmciB8PSBUWEZGOwo+PiArICAgICAgICB2cGwwMTEtPnVhcnRyaXMg Jj0gflRYSTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICB2cGwwMTEtPnVhcnRmciB8PSBCVVNZOwo+ Cj4KPiBJIGFtIG5vdCBzdXJlIHRvIHVuZGVyc3RhbmQgd2h5IHlvdSBzZXQgdGhlIGJpdCBCVVNZ IGhlcmUuCgpTaW5jZSB0aGUgT1VUIHJpbmcgYnVmZmVyIGlzIG5vbi1lbXB0eSBoZXJlLCB0aGlz IGJpdCBpcyBzZXQgdG8KaW5kaWNhdGUgdGhhdCB0aGVyZSBpcyBkYXRhIGluIHRoZSByaW5nIGJ1 ZmZlciAod2hpY2ggaXMgZW11bGF0aW5nIGEKVUFSVCB0cmFuc21pdCBGSUZPKS4gQXMgcGVyIHBs MDExIFRSTSwgdGhpcyBiaXQgc2hvdWxkIGJlIHNldCBpZiB0aGVyZQppcyBkYXRhIGluIHRoZSB0 cmFuc21pdCBmaWZvLgoKPgo+PiArCj4+ICsgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRYRkU7Cj4+ ICsKPj4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPj4gKwo+PiArICAgIG5vdGlmeV92 aWFfeGVuX2V2ZW50X2NoYW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOwo+Cj4KPiBTYW1lIGFzIHRo ZSBwcmV2aW91cyBub3RpZnlfKi4KPgpvay4gSSB3aWxsIGFkZCBhIGNvbW1lbnQgb24gd2h5IHdl IGFyZSBzZW5kaW5nIGFuIGV2ZW50IGhlcmUuCgo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHZw bDAxMV9tbWlvX3JlYWQoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLCByZWdpc3Rl cl90Cj4+ICpyLCB2b2lkICpwcml2KQo+PiArewo+PiArICAgIHVpbnQ4X3QgY2g7Cj4KPgo+IFRo aXMgY291bGQgYmUgcmVzdHJpY3RlZCB0byB0aGUgY2FzZSBEUi4KPgpvay4KCj4+ICsgICAgc3Ry dWN0IGhzcl9kYWJ0IGRhYnQgPSBpbmZvLT5kYWJ0Owo+PiArICAgIGludCB2cGwwMTFfcmVnID0g KGludCkoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFfQkFTRSk7Cj4KPgo+IFBsZWFzZSB1c2UgZWl0 aGVyIHVuc2lnbmVkIGludCBvciB1aW50MzJfdC4gU29tZXRoaW5nIHdvdWxkIGJlIHJlYWxseSB3 cm9uZwo+IGlmIHRoZSBvZmZzZXQgaXMgbmVnYXRpdmUgaGVyZS4Kb2suCj4KPj4gKyAgICBzdHJ1 Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZ2LT5kb21haW4tPmFyY2gudnBsMDExOwo+PiArCj4+ICsg ICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0LnNpemUpICkgZ290byBiYWRf d2lkdGg7Cj4KPgo+IFBsZWFzZSBhZGQgYSBjb21tZW50IHdoeSB0aGUgY2hlY2sgaXMgdGhlIHNh bWUgZm9yIGFsbCByZWdpc3RlcnMuCj4Kb2suCgo+PiArCj4+ICsgICAgc3dpdGNoICggdnBsMDEx X3JlZyApCj4+ICsgICAgewo+PiArICAgIGNhc2UgRFI6Cj4KPgo+IEFzIG1lbnRpb25lZCBhYm92 ZSwgeW91IGNvdWxkIGRvOgo+Cj4gewo+ICAgICAgdWludDhfdCBjaDsKPiAgICAgIC4uLi4KPiB9 Cj4KPj4gKyAgICAgICAgdnBsMDExX3JlYWRfZGF0YSh2LT5kb21haW4sICZjaCk7Cj4+ICsgICAg ICAgICpyID0gY2g7Cj4KPgo+IFBsZWFzZSB1c2UgdnJlZ19yZWczMl9leHRyYWN0KC4uLikuCj4K b2suCgo+PiArICAgICAgICBicmVhazsKPgo+Cj4gSSBhZG1pdCBJIHdvdWxkIHByZWZlciB0aGUg InJldHVybiAxOyIgaGVyZSByYXRoZXIgdGhhbiAiYnJlYWs7Ii4gVGhpcyBtYWtlcwo+IGVhc2ll ciB0byBmb2xsb3cgdGhlIGVtdWxhdGlvbiBmb3IgYSBnaXZlbiByZWdpc3Rlci4KPgo+IEkgd291 bGQgZXZlbiBiZSBpbiBmYXZvciBvZiBkdXBsaWNhdGluZyB0aGUgImlmICggIXZwbDAxMS4uLiAp IiBpbiBlYWNoIGNhc2UKPiBmb3IgdGhlIHNhbWUgcmVhc29uLgpEbyB5b3UgbWVhbiB0aGF0IEkg c2hvdWxkIHJlcGVhdCB0aGUgdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcygpIGFuZApyZXR1cm4g Zm9yIGVhY2ggc3dpdGNoIGNhc2U/Cgo+Cj4+ICsKPj4gKyAgICBjYXNlIFJTUjoKPj4gKyAgICAg ICAgLyogSXQgYWx3YXlzIHJldHVybnMgMCBhcyB0aGVyZSBhcmUgbm8gcGh5c2ljYWwgZXJyb3Jz LiAqLwo+PiArICAgICAgICAqciA9IDA7Cj4KPgo+IE5vdGUgdGhhdCBJIGFtIG9rIHRvIGtlZXAg dGhlIDAgbGlrZSB0aGF0IGhlcmUuCj4KPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsKPj4gKyAgICBj YXNlIEZSOgo+PiArICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRm ciwgaW5mbyk7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgY2FzZSBSSVM6Cj4+ICsg ICAgICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydHJpcywgaW5mbyk7Cj4+ ICsgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgY2FzZSBNSVM6Cj4+ICsgICAgICAgICpyID0g dnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydHJpcwo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmIHZwbDAxMS0+dWFydGltc2MsIGluZm8pOwo+Cj4KPiBUaGUgY29kaW5n IHN0eWxlIGluIFhlbiBpcyB0byBzcGxpdCBhZnRlciB0aGUgJi4gRS5nCj4KPiB2cGwwMTEtPnVh cnRyaXMgJgo+IHZwbDAxMS0+dWFydGltc2MKPgpvay4KCj4gQWxzbywgbm9uZSBvZiB0aGUgcGww MTEgcmVnaXN0ZXIgZW11bGF0aW9uIGlzIHVzaW5nIGFueSBsb2NraW5nLiBUaGlzIGlzCj4gcXVp dGUgc3VycHJpc2luZyB0byBtZS4gU28gY2FuIHlvdSBleHBsYWluIHdoeT8KCkluIHZwbDAxMV9t bWlvX3JlYWQoKSwgc2luY2UgcGwwMTEgcmVnaXN0ZXJzIGFyZSBvbmx5IHJlYWQsIGl0IHNob3Vs ZApiZSBvayB0byBsZXQKdGhlbSBiZSByZWFkIHdpdGhvdXQgYW55IGxvY2tpbmcuCj4KPgo+PiAr c3RhdGljIGludCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3Qg KmluZm8sCj4+IHJlZ2lzdGVyX3Qgciwgdm9pZCAqcHJpdikKPj4gK3sKPj4gKyAgICB1aW50OF90 IGNoID0gKChzdHJ1Y3QgdWFydGRyX3JlZyAqKSZyKS0+ZGF0YTsKPgo+Cj4gVGhpcyBzaG91bGQg YmUgcmVzdHJpY3RlZCB0byB0aGUgRFIgY2FzZSBiZWxvdy4gQnV0IEkgYW0gbm90IHN1cmUgdG8K PiB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIHRoZSBzdHJ1Y3R1cmUgaGVyZS4gSXQgbWFrZXMgbGVz cyByZWFkYWJsZSBhbmQgYWxzbwo+IHlvdSBvbmx5IHVzZSBpdCBmb3IgdGhlIHdyaXRlIGNhc2Uu ClRoZXJlIHdhcyBhIHJldmlldyBjb21tZW50IGVhcmxpZXIgdG8gbWFrZSB0aGUgdHlwZWNhc3Rp bmcgbW9yZQpyZWFkYWJsZSBiZWNhdXNlIGVhcmxpZXIgSSB3YXMgZG9pbmcgciAmIDB4ZmYgdG8g cmV0cmlldmUgdGhlIGRhdGEuIFNvCkkgYWRkZWQgYSBzdHJ1Y3R1cmUgd2hpY2ggdGVsbHMgdGhl IGxheW91dCBvZiB0aGUgRFIuIEkgZ3Vlc3MgSSBjYW4KdXNlIHZyZWdfcmVnMzJfZXh0cmFjdCgp IHRvIGV4dHJhY3QgdWludDhfdCB2YWx1ZSBmcm9tIHJlZ2lzdGVyX3Qgci4KCj4KPj4gKyAgICBz dHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7Cj4+ICsgICAgaW50IHZwbDAxMV9yZWcg PSAoaW50KShpbmZvLT5ncGEgLSBHVUVTVF9QTDAxMV9CQVNFKTsKPgo+Cj4gU2FtZSBhcyBhYm92 ZSBmb3IgdnBsMDExX3JlZy4Kb2suCj4KPj4gKyAgICBzdHJ1Y3QgdnBsMDExX3MgKnZwbDAxMSA9 ICZ2LT5kb21haW4tPmFyY2gudnBsMDExOwo+PiArCj4+ICsgICAgaWYgKCAhdnBsMDExX3JlZzMy X2NoZWNrX2FjY2VzcyhkYWJ0LnNpemUpICkgZ290byBiYWRfd2lkdGg7Cj4KPgo+IFNhbWUgYXMg dGhlIHByZXZpb3VzIHZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MuLi4gYW5kIGFsbCBvZiBteSBy ZW1hcmtzIGluCj4gdGhlIHJlYWQgZW11bGF0aW9uIHN0YW5kIGZvciB0aGUgd3JpdGUgb25lLgo+ Cj4+ICsKPj4gKyAgICBzd2l0Y2ggKCB2cGwwMTFfcmVnICkKPj4gKyAgICB7Cj4+ICsgICAgY2Fz ZSBEUjoKPj4gKyAgICAgICAgdnBsMDExX3dyaXRlX2RhdGEodi0+ZG9tYWluLCBjaCk7Cj4+ICsg ICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgY2FzZSBSU1I6IC8qIE5vdGhpbmcgdG8gY2xlYXIu ICovCj4+ICsgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgY2FzZSBGUjoKPj4gKyAgICBjYXNl IFJJUzoKPj4gKyAgICBjYXNlIE1JUzoKPj4gKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmU7Cj4+ ICsKPj4gKyAgICBjYXNlIElNU0M6Cj4+ICsgICAgICAgIHZyZWdfcmVnMzJfdXBkYXRlKCZ2cGww MTEtPnVhcnRpbXNjLCByLCBpbmZvKTsKPj4gKyAgICAgICAgdnBsMDExX3VwZGF0ZV9zcGkodi0+ ZG9tYWluKTsKPgo+Cj4gSSB3b3VsZCBoYXZlIGV4cGVjdGVkIHNvbWUgbG9ja2luZyBoZXJlLgpZ ZXMgaGVyZSBsb2NrIHNob3VsZCBiZSB0YWtlbi4KCj4KPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsK Pj4gKyAgICBjYXNlIElDUjoKPj4gKyAgICAgICAgdnJlZ19yZWczMl9jbGVhcmJpdHMoJnZwbDAx MS0+dWFydHJpcywgciwgaW5mbyk7Cj4+ICsgICAgICAgIHZwbDAxMV91cGRhdGVfc3BpKHYtPmRv bWFpbik7Cj4KPgo+IFNhbWUgaGVyZS4KWWVzIGhlcmUgbG9jayBzaG91bGQgYmUgdGFrZW4uCj4K Pgo+PiArICAgICAgICBicmVhazsKPj4gKwo+PiArICAgIGRlZmF1bHQ6Cj4+ICsgICAgICAgIGdw cmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogdW5oYW5kbGVkIHdyaXRlIHIlZCBvZmZzZXQgJSMw OHhcbiIsCj4+ICsgICAgICAgICAgICAgICAgZGFidC5yZWcsIHZwbDAxMV9yZWcpOwo+PiArICAg ICAgICByZXR1cm4gMDsKPj4gKyAgICB9Cj4+ICsKPj4gK3dyaXRlX2lnbm9yZToKPj4gKyAgICBy ZXR1cm4gMTsKPj4gKwo+PiArYmFkX3dpZHRoOgo+PiArICAgIGdwcmludGsoWEVOTE9HX0VSUiwg InZwbDAxMTogYmFkIHdyaXRlIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCj4+ICsgICAg ICAgICAgICBkYWJ0LnNpemUsIGRhYnQucmVnLCB2cGwwMTFfcmVnKTsKPj4gKyAgICBkb21haW5f Y3Jhc2hfc3luY2hyb25vdXMoKTsKPj4gKyAgICByZXR1cm4gMDsKPj4gKwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1taW9faGFuZGxlcl9vcHMgdnBsMDExX21taW9faGFuZGxl ciA9IHsKPj4gKyAgICAucmVhZCA9IHZwbDAxMV9tbWlvX3JlYWQsCj4+ICsgICAgLndyaXRlID0g dnBsMDExX21taW9fd3JpdGUsCj4+ICt9Owo+PiArCj4+ICtpbnQgdnBsMDExX21hcF9ndWVzdF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIHhlbl9wZm5fdCBnZm4pCj4KPgo+IFRoaXMgZnVuY3Rpb24g c2hvdWxkIGVpdGhlciBoYXZlIHRoZSBwcm90b3R5cGUgZGVmaW5lZCBpbiBhbiBoZWFkZXIgaWYg dXNlZAo+IG91dHNpZGUgb3Igc3RhdGljLgo+Cj4gQWxzbywgSSBoYXZlIGFza2VkIHRvIHVzZSBn Zm5fdCBhbmQgbm90IHhlbl9wZm5fdC4gVGhlIGZvcm1lciBpcyBhIHR5cGVzYWZlCj4gYXZvaWRp bmcgbWl4IGJldHdlZW4gTUZOIGFuZCBHRk4uCj4KPj4gK3sKPj4gKyAgICBzdHJ1Y3QgdnBsMDEx X3MgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKPj4gKwo+PiArICAgIC8qIE1hcCB0aGUgZ3Vl c3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAqLwo+PiArICAgIHJldHVybiBwcmVwYXJlX3Jp bmdfZm9yX2hlbHBlcihkLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Zm4sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPnJpbmdf cGFnZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmlu Z19idWYpOwo+Cj4KPiBMb29raW5nIGF0IHRoZSB1c2FnZSBpdCBpcyBvbmx5IHVzZWQgaW4gZG9t YWluX3ZwbDAxMV9pbml0LiBTbyBJIGFtIG5vdAo+IGNvbnZpbmNlZCBvZiB0aGUgb2YgdXNlZnVs bmVzcyBvZiB0aGlzIHdyYXBwZXIuCj4KWWVzLiBJIHdpbGwgcmVtb3ZlIHRoZSB3cmFwcGVyIGZ1 bmN0aW9uLgoKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdnBsMDExX2RhdGFfYXZhaWwoc3Ry dWN0IGRvbWFpbiAqZCkKPj4gK3sKPj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArICAg IHN0cnVjdCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+PiArICAgIHN0cnVj dCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IHZwbDAxMS0+cmluZ19idWY7Cj4+ICsgICAgUklO R19JRFggaW5fcmluZ19kZXB0aCwgb3V0X3JpbmdfZGVwdGg7Cj4KPgo+IEkgYW0gYSBiaXQgY29u ZnVzZWQgd2l0aCB0aGUgdGVybSAiZGVwdGgiLiBJdCBkb2VzIG5vdCBzZWVtIHRvIGZpdCBmb3Ig YQo+IHJpbmcuCkkgd2lsbCB1c2UgaW5fcmluZ19xc2l6ZSBhbmQgb3V0X3JpbmdfcXNpemUgaW5z dGVhZC4KCj4KPj4gKwo+PiArICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKPj4gKwo+PiArICAg IGluX3JpbmdfZGVwdGggPSB2cGwwMTFfcXVldWVkKGludGYtPmluX3Byb2QsIGludGYtPmluX2Nv bnMsCj4+IHNpemVvZihpbnRmLT5pbikpOwo+Cj4KPiBZb3UgaW50cm9kdWNlZCBhIG1hY3JvIFZQ TDAxMV9SSU5HX0RFUFRIIGZvciBoaWRpbmcgdnBsMDExX3F1ZXVlZCwgYnV0IGRvbid0Cj4gdXNl IGl0LgpJIGhhdmUgcmVtb3ZlZCB0aGlzIG1hY3JvIGFzIG11Y2ggb2YgcmluZyBidWZmZXIgbWFu aXB1bHRhdGlvbiBpcwpoYW5kbGVkIHRocm91Z2ggdnBsMDExX3F1ZXVlZCgpCmFuZCB2cGwwMTFf bWFzaygpLgoKPgo+PiArICAgIG91dF9yaW5nX2RlcHRoID0gdnBsMDExX3F1ZXVlZChpbnRmLT5v dXRfcHJvZCwgaW50Zi0+b3V0X2NvbnMsCj4+IHNpemVvZihpbnRmLT5vdXQpKTsKPgo+Cj4gRGl0 dG8uCj4KPgo+PiArCj4+ICsgICAgLyogVXBkYXRlIHRoZSB1YXJ0IHJ4IHN0YXRlIGlmIHRoZSBi dWZmZXIgaXMgbm90IGVtcHR5LiAqLwo+PiArICAgIGlmICggaW5fcmluZ19kZXB0aCAhPSAwICkK Pj4gKyAgICB7Cj4+ICsgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH5SWEZFOwo+PiArICAgICAg ICBpZiAoIGluX3JpbmdfZGVwdGggPT0gVlBMMDExX1JJTkdfTUFYX0RFUFRIKGludGYsIGluKSAp Cj4+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZGOwo+PiArICAgICAgICB2cGww MTEtPnVhcnRyaXMgfD0gUlhJOwo+PiArICAgIH0KPj4gKwo+PiArICAgIC8qIFVwZGF0ZSB0aGUg dWFydCB0eCBzdGF0ZSBpZiB0aGUgYnVmZmVyIGlzIG5vdCBmdWxsLiAqLwo+PiArICAgIGlmICgg b3V0X3JpbmdfZGVwdGggIT0gVlBMMDExX1JJTkdfTUFYX0RFUFRIKGludGYsIG91dCkgKQo+PiAr ICAgIHsKPj4gKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRYRkY7Cj4+ICsgICAgICAgIHZw bDAxMS0+dWFydHJpcyB8PSBUWEk7Cj4+ICsgICAgICAgIGlmICggb3V0X3JpbmdfZGVwdGggPT0g MCApCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH5CVVNZ Owo+PiArICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhGRTsKPj4gKyAgICAgICAgfQo+ PiArICAgIH0KPj4gKwo+PiArICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOwo+PiArCj4+ICsg ICAgdnBsMDExX3VwZGF0ZV9zcGkoZCk7Cj4+ICt9Cj4+ICsKPj4gKwo+PiArc3RhdGljIHZvaWQg dnBsMDExX25vdGlmaWNhdGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCj4+ ICt7Cj4+ICsgICAgdnBsMDExX2RhdGFfYXZhaWwodi0+ZG9tYWluKTsKPj4gK30KPj4gKwo+PiAr aW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCBjb25zb2xlX2RvbWlkLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICB4ZW5fcGZuX3QgZ2ZuLAo+Cj4KPiBUaGlzIHNob3VsZCBiZSBnZm5fdCBhbmQgbm90IHhl bl9wZm5fdC4KPgo+PiArICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90ICpldnRj aG4pCj4+ICt7Cj4+ICsgICAgaW50IHJjOwo+PiArICAgIHN0cnVjdCB2cGwwMTFfcyAqdnBsMDEx ID0gJmQtPmFyY2gudnBsMDExOwo+PiArCj4KPgo+IFdoYXQgaWYgZG9tYWluX3ZwbDAxMV9pbml0 IGlzIGNhbGxlZCB0d2ljZT8gQWZ0ZXIgbm90aGluZyBzZWVtIHRvIHByZXZlbnQKPiB0aGUgbmV3 IERPTUNUTCB0byBiZSBjYWxsZWQgdHdpY2UuCj4KSSB3aWxsIGFkZCBhIGNoZWNrIGluIHRoZSBp bml0IGZ1bmN0aW9uIHRvIHJldHVybiB3aXRob3V0IGRvaW5nCmFueXRoaW5nIGlmIHZwbDAxMSBp cyBhbHJlYWR5IGluaXRpYWxpemVkLgoKPj4gKyAgICByYyA9IHZwbDAxMV9tYXBfZ3Vlc3RfcGFn ZShkLCBnZm4pOwo+PiArICAgIGlmICggcmMgPCAwICkKPj4gKyAgICAgICAgZ290byBvdXQ7Cj4+ ICsKPj4gKyAgICByYyA9IHZnaWNfcmVzZXJ2ZV92aXJxKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOwo+ PiArICAgIGlmICggIXJjICkKPj4gKyAgICB7Cj4+ICsgICAgICAgIHJjID0gLUVJTlZBTDsKPj4g KyAgICAgICAgZ290byBvdXQxOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHJlZ2lzdGVyX21taW9f aGFuZGxlcihkLCAmdnBsMDExX21taW9faGFuZGxlciwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgR1VFU1RfUEwwMTFfQkFTRSwgR1VFU1RfUEwwMTFfU0laRSwgTlVMTCk7Cj4KPgo+IFlv dSByZWdpc3RlciBNTUlPIGhhbmRsZXIgYnV0IG5ldmVyIHJlbW92ZSB0aGVtLiBTbyBpZiB0aGlz IGNhbGwgZmFpbCwgeW91Cj4gd2lsbCBlbmQgdXAgd2l0aCB0aGUgaGFuZGxlcnMgZXhpc3Rpbmcg YnV0IHRoZSByZXN0IGhhbGYtaW5pdGlhbGl6ZWQgd2hpY2gKPiBsaWtlbHkgbGVhZCB0byBhIHNl Z2ZhdWx0LCBvciB3b3JzdCBsZWFraW5nIGRhdGEuCj4KSSB3aWxsIGZyZWUgdGhlIG1taW8gaGFu ZGxlcnMgaW4gdGhlIHZwbDAxMSBkZWluaXQgZnVuY3Rpb24uCgo+PiArCj4+ICsgICAgc3Bpbl9s b2NrX2luaXQoJnZwbDAxMS0+bG9jayk7Cj4+ICsKPj4gKyAgICByYyA9IGFsbG9jX3VuYm91bmRf eGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwgY29uc29sZV9kb21pZCwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdnBsMDExX25vdGlmaWNhdGlvbik7Cj4+ICsgICAg aWYgKHJjIDwgMCkKPgo+Cj4gQ29kaW5nIHN0eWxlOgo+Cj4gaWYgKCAgLi4uICkKPgpvay4KPj4g KyAgICAgICAgZ290byBvdXQyOwo+PiArCj4+ICsgICAgdnBsMDExLT5ldnRjaG4gPSAqZXZ0Y2hu ID0gcmM7Cj4+ICsKPj4gKyAgICB2cGwwMTEtPmluaXRpYWxpemVkID0gdHJ1ZTsKPgo+Cj4gSSBh bSBub3Qgc3VyZSB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgdmFyaWFibGUuIFlv dSBvbmx5IHVzZSBpdCBpbgo+IGRvbWFpbl92cGwwMTFfZGVpbml0LiBCdXQgeW91IGNhbiBlYXNp bHkga25vdyBpZiB5b3UgbmVlZCB0byBmcmVlIGJ5IGxvb2tpbmcKPiBhdCB0aGUgc3RhdGUgb2Yg cmluZ19idWYuCkl0IGlzIGFuIGV4dHJhbmVvdXMgdmFyaWFibGUuIEkgd2lsbCByZW1vdmUgaXQu Cgo+Cj4+ICsKPj4gKyAgICByZXR1cm4gMDsKPj4gKwo+PiArb3V0MjoKPj4gKyAgICB4ZnJlZShk LT5hcmNoLnZtbWlvLmhhbmRsZXJzKTsKPj4gK291dDE6Cj4KPgo+IEkgd291bGQgaGF2ZSBleHBl Y3RlZCB2Z2ljX2ZyZWVfdmlycSB0byBiZSBjYWxsZWQgaW4gY2FzZSBvZiBlcnJvci4KPgpvay4K Cj4+ICsgICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+cmluZ19idWYsIHZwbDAx MS0+cmluZ19wYWdlKTsKPj4gK291dDoKPj4gKyAgICByZXR1cm4gcmM7Cj4+ICt9Cj4+ICsKPj4g K3ZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkKPj4gK3sKPj4gKyAg ICBzdHJ1Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKPj4gKwo+PiArICAg IGlmICggdnBsMDExLT5pbml0aWFsaXplZCApCj4KPgo+IFNlZSBteSByZW1hcmsgYWJvdXQgdnBs MDExLT5pbml0aWFsaXplZCBhYm92ZS4KWWVzLCBJIHdpbGwgdXNlIHRoZSBpZiAoIHZwbDAxMS0+ cmluZ19idWYgKSBjaGVjayBpbnN0ZWFkLgo+Cj4gSW4gYW55IGNhc2UsIEkgd291bGQgcHJlZmVy IHRoZSBjb25kaXRpb24gdG8gYmUgaW52ZXJ0ZWQgdG8gYXZvaWQgYW4gZXh0cmEKPiBsYXllciBv ZiB0YWIuIEkuZQo+Cj4gaWYgKCAhdnBsMDExLT5pbml0aWFsaXplZCApCj4gICAgcmV0dXJuOwo+ Cm9rLgo+Cj4+ICsjaWZuZGVmIF9WUEwwMTFfSF8KPj4gKwo+PiArI2RlZmluZSBfVlBMMDExX0hf Cj4+ICsKPj4gKyNpbmNsdWRlIDxwdWJsaWMvaW8vcmluZy5oPgo+PiArI2luY2x1ZGUgPGFzbS1h cm0vdnJlZy5oPgo+PiArCj4+ICtERUZJTkVfWEVOX0ZMRVhfUklORyh2cGwwMTEpOwo+Cj4KPiBJ IGFtIHN1cmUgc29tZW9uZSBhbHJlYWR5IHNhaWQgaXQgaW4gYSBwcmV2aW91cyB2ZXJzaW9uLiBU aGUgdnBsMDExIGlzIHRoZQo+IGNvbnNvbGUgcmluZy4gU28gd2h5IGFyZSB3ZSBkZWZpbmluZyBv dXIgb3duIGludGVybmFsbHk/Cj4KPiBBdCBsZWFzdCB0aGlzIHNob3VsZCBoYXZlIGJlZW4gdXNl ZCBieSB4ZW5jb25zb2xlLCBidXQgdGhpcyBpcyBub3QgdGhlCj4gY2FzZS4uLiBTbyB3ZSBzaG91 bGQgcmVhbGx5IGF2b2lkIGRlZmluaW5nIG91ciBvd24gcmluZyBoZXJlIGFuZCByZS11c2UKPiBw dWJsaWMvaW8vY29uc29sZS5oLgo+Cj4KPj4gKwo+PiArc3RydWN0IHVhcnRkcl9yZWcgewo+PiAr ICAgIHVpbnQ4X3QgZGF0YTsKPj4gKyAgICB1aW50OF90IGVycm9yX3N0YXR1czo0Owo+PiArICAg IHVpbnQ4X3QgcmVzZXJ2ZWQxOjQ7Cj4+ICsgICAgdWludDE2X3QgcmVzZXJ2ZWQyOwo+PiArICAg IHVpbnQzMl90IHJlc2VydmVkMzsKPj4gK307Cj4KPgo+IEkgZG9uJ3Qgc2VlIGFueSBiZW5lZml0 cyBvZiB0aGlzIHN0cnVjdHVyZS4KSSB3aWxsIHJlbW92ZSB0aGlzIHN0cnVjdHVyZSBhbmQgdXNl IHRoZSByZWdpc3RlciB2YWx1ZSBkaXJlY3RseSBhZnRlcgptYXNraW5nIGl0Lgo+Cj4+ICsKPj4g K3N0cnVjdCB2cGwwMTFfcyB7Cj4KPgo+IFBsZWFzZSByZW1vdmUgdGhlIF9zIGluIHRoZSBuYW1l Lgpvay4KPgo+PiArICAgIHZvaWQgKnJpbmdfYnVmOwo+PiArICAgIHN0cnVjdCBwYWdlX2luZm8g KnJpbmdfcGFnZTsKPj4gKyAgICB1aW50MzJfdCAgICB1YXJ0ZnI7ICAgICAvKiBGbGFnIHJlZ2lz dGVyICovCj4+ICsgICAgdWludDMyX3QgICAgdWFydGNyOyAgICAgLyogQ29udHJvbCByZWdpc3Rl ciAqLwo+PiArICAgIHVpbnQzMl90ICAgIHVhcnRpbXNjOyAgIC8qIEludGVycnVwdCBtYXNrIHJl Z2lzdGVyKi8KPj4gKyAgICB1aW50MzJfdCAgICB1YXJ0aWNyOyAgICAvKiBJbnRlcnJ1cHQgY2xl YXIgcmVnaXN0ZXIgKi8KPj4gKyAgICB1aW50MzJfdCAgICB1YXJ0cmlzOyAgICAvKiBSYXcgaW50 ZXJydXB0IHN0YXR1cyByZWdpc3RlciAqLwo+PiArICAgIHVpbnQzMl90ICAgIHVhcnRtaXM7ICAg IC8qIE1hc2tlZCBpbnRlcnJ1cHQgcmVnaXN0ZXIgKi8KPj4gKyAgICBzcGlubG9ja190ICBsb2Nr Owo+PiArICAgIGV2dGNobl9wb3J0X3QgZXZ0Y2huOwo+PiArICAgIGJvb2wgICAgICAgIGluaXRp YWxpemVkOyAvKiBGbGFnIHdoaWNoIHRlbGxzIHdoZXRoZXIgdnBsMDExIGlzCj4+IGluaXRpYWxp emVkICovCj4+ICt9Owo+PiArCj4+ICsjaWZkZWYgQ09ORklHX1ZQTDAxMV9DT05TT0xFCj4+ICtp bnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGNvbnNvbGVfZG9taWQsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIHhlbl9wZm5fdCBnZm4sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0 X3QgKmV2dGNobik7Cj4+ICt2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4g KmQpOwo+PiArI2Vsc2UKPj4gK2ludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAq ZCwKPgo+Cj4gc3RhdGljIGlubGluZSBoZXJlLgpvay4KPgo+PiArICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCBjb25zb2xlX2RvbWlkLAo+PiArICAgICAgICAgICAgICAgICAgICAgICB4 ZW5fcGZuX3QgZ2ZuLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90ICpl dnRjaG4pIHsgcmV0dXJuIC1FTk9TWVM7IH0KPgo+Cj4gUGxlYXNlIGluZGVudCBjb3JyZWN0bHkg eyByZXR1cm4gLUVOT1NZUyB9Owo+Cm9rLgo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgZG9t YWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkgeyB9Cj4KPgo+IE5vdGUgdGhhdCBJ IGFtIG9rIHdpdGggdGhlIHsgfSBvbiB0aGUgc2FtZSBsaW5lIGhlcmUuCj4KPj4gZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIveGVuL2luY2x1ZGUvcHVibGljL2Fy Y2gtYXJtLmgKPj4gaW5kZXggYmQ5NzRmYi4uNWY5MTIwNyAxMDA2NDQKPj4gLS0tIGEveGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gt YXJtLmgKPj4gQEAgLTMyMiw2ICszMjIsOCBAQCBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmln IHsKPj4gICAgICAgKgo+PiAgICAgICAqLwo+PiAgICAgIHVpbnQzMl90IGNsb2NrX2ZyZXF1ZW5j eTsKPj4gKwo+PiArICAgIHVpbnQzMl90IGNvbnNvbGVfZG9taWQ7Cj4KPgo+IFdoeSB0aGlzIGlz IGhlcmU/Ckkgd2lsbCBtb3ZlIGl0IG91dCBvZiBoZXJlLgoKUmVnYXJkcywKQmh1cGluZGVyCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK