From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH 27/27 v11] xen/arm: vpl011: Correct the logic for asserting/de-asserting SBSA UART TX interrupt Date: Mon, 9 Oct 2017 18:18:03 +0100 Message-ID: <8664baa4-310c-33fd-8771-1db4f690dfa7@arm.com> References: <1506492816-25954-1-git-send-email-bhupinder.thakur@linaro.org> <1506492816-25954-28-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 1e1bgm-00012T-BH for xen-devel@lists.xenproject.org; Mon, 09 Oct 2017 17:18:00 +0000 In-Reply-To: <1506492816-25954-28-git-send-email-bhupinder.thakur@linaro.org> Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Bhupinder Thakur , xen-devel@lists.xenproject.org Cc: Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGksCgpjYW4geW91IHBsZWFzZSByZS1icmVhayB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gZml0IGlu dG8gNzIgY2hhcmFjdGVycz8KZ2l0IHNob3cgbG9va3MgcmF0aGVyIHVnbHkgYXMgaXQgaXMgbm93 LgoKT24gMjcvMDkvMTcgMDc6MTMsIEJodXBpbmRlciBUaGFrdXIgd3JvdGU6Cj4gVGhpcyBwYXRj aCBmaXhlcyB0aGUgaXNzdWUgb2JzZXJ2ZWQgd2hlbiBwbDAxMSBwYXRjaGVzIHdlcmUgdGVzdGVk IG9uCj4gdGhlIGp1bm9zIGhhcmR3YXJlIGJ5IEFuZHJlL0p1bGllbi4gSXQgd2FzIG9ic2VydmVk IHRoYXQgd2hlbiBsYXJnZSBvdXRwdXQgaXMKPiBnZW5lcmF0ZWQgc3VjaCBhcyBvbiBydW5uaW5n ICdmaW5kIC8nLCBvdXRwdXQgd2FzIGdldHRpbmcgdHJ1bmNhdGVkIGludGVybWl0dGVudGx5Cj4g ZHVlIHRvIE9VVCByaW5nIGJ1ZmZlciBnZXR0aW5nIGZ1bGwuCj4gCj4gVGhpcyBpc3N1ZSB3YXMg ZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIFNCU0EgVUFSVCBkcml2ZXIgZXhwZWN0cyB0aGF0IHdo ZW4KPiBhIFRYIGludGVycnVwdCBpcyBhc3NlcnRlZCB0aGVuIHRoZSBGSUZPIHF1ZXVlIHNob3Vs ZCBiZSBhdGxlYXN0IGhhbGYgZW1wdHkgYW5kCj4gdGhhdCBpdCBjYW4gd3JpdGUgTiBieXRlcyBp biB0aGUgRklGTywgd2hlcmUgTiBpcyBoYWxmIHRoZSBGSUZPIHF1ZXVlIHNpemUsIHdpdGhvdXQK PiB0aGUgYnl0ZXMgZ2V0dGluZyBkcm9wcGVkIGR1ZSB0byBGSUZPIGdldHRpbmcgZnVsbC4KPiAK PiBUaGUgU0JTQSBVQVJUIGVtdWxhdGlvbiBsb2dpYyB3YXMgYXNzZXJ0aW5nIHRoZSBUWCBpbnRl cnJ1cHQgYXMgc29vbiBhcwo+IGFueSBzcGFjZSBiZWNhbWUgYXZhaWxhYmxlIGluIHRoZSBGSUZP IGFuZCB0aGUgU0JTQSBVQVJUIGRyaXZlciB0cmllZCB0byB3cml0ZQo+IG1vcmUgZGF0YSAodXB0 byAxNiBieXRlcykgaW4gdGhlIEZJRk8gZXhwZWN0aW5nIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHNw YWNlCj4gYXZhaWxhYmxlIGxlYWRpbmcgdG8gZHJvcHBlZCBieXRlcy4KPiAKPiBUaGUgU0JTQSBz cGVjIFsxXSBkb2VzIG5vdCBzcGVjaWZ5IHdoZW4gdGhlIFRYIGludGVycnVwdCBzaG91bGQgYmUg YXNzZXJ0ZWQKPiBvciBkZS1hc3NlcnRlZC4gRHVlIHRvIGxhY2sgb2YgY2xhcml0eSBvbiB0aGUg ZXhwZWN0ZWQgYmVoYXZpb3IsIGl0IGlzCj4gYXNzdW1lZCBmb3Igbm93IHRoYXQgVFggaW50ZXJy dXB0IHNob3VsZCBiZSBhc3NlcnRlZCBvbmx5IHdoZW4gdGhlIEZJRk8gZ29lcwo+IGhhbGYgZW1w dHkuCj4gCj4gVEJEOiBPbmNlIHRoZSBTQlNBIHNwZWMgaXMgdXBkYXRlZCB3aXRoIHRoZSBleHBl Y3RlZCBiZWhhdmlvciwgdGhlIGltcGxlbWVudGF0aW9uCj4gd2lsbCBiZSBtb2RpZmllZCB0byBh bGlnbiB3aXRoIHRoZSBzcGVjIHJlcXVpcmVtZW50Lgo+IAo+IFsxXSBodHRwOi8vaW5mb2NlbnRl ci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuZGRpMDE4M2YvRERJMDE4My5wZGYKPiAK PiBTaWduZWQtb2ZmLWJ5OiBCaHVwaW5kZXIgVGhha3VyIDxiaHVwaW5kZXIudGhha3VyQGxpbmFy by5vcmc+CgpPbmx5IHNvbWUgbWlub3IgdGhpbmdzIGxlZnQgYmVsb3csIGJ1dCBpbiBnZW5lcmFs IHRoaXMgbG9va3MgbXVjaCBiZXR0ZXIKdG8gbWUgbm93LgoKPiAtLS0KPiBDQzogSnVsaWVuIEdy YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBDQzogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnBy enl3YXJhQGFybS5jb20+Cj4gQ0M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2Vy bmVsLm9yZz4KPiAKPiBDaGFuZ2VzIHNpbmNlIHY4Ogo+IC0gVXNlZCB2YXJpYWJsZXMgZmlmb19s ZXZlbC9maWZvX3RocmVzaG9sZCBmb3IgbW9yZSBjbGFyaXR5Cj4gLSBBZGRlZCBhIG5ldyBtYWNy byBTQlNBX1VBUlRfRklGT19TSVpFIGluc3RlYWQgb2YgdXNpbmcgYSBtYWdpYyBudW1iZXIKPiAt IFJlbmFtZWQgcmluZ19xc2l6ZSB2YXJpYWJsZXMgdG8gZmlmb19sZXZlbCBmb3IgY29uc2lzdGVu Y3kgCj4gCj4gIHhlbi9hcmNoL2FybS92cGwwMTEuYyAgICAgICAgfCA4NyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3Zw bDAxMS5oIHwgIDIgKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDI4IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4v YXJjaC9hcm0vdnBsMDExLmMKPiBpbmRleCAzNjc5NGQ4Li4xZjk3MjYxIDEwMDY0NAo+IC0tLSBh L3hlbi9hcmNoL2FybS92cGwwMTEuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwo+IEBA IC05MSwyMCArOTEsMjQgQEAgc3RhdGljIHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3Qg ZG9tYWluICpkKQo+ICAgICAgICovCj4gICAgICBpZiAoIHhlbmNvbnNfcXVldWVkKGluX3Byb2Qs IGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID4gMCApCj4gICAgICB7Cj4gKyAgICAgICAgdW5z aWduZWQgaW50IGZpZm9fbGV2ZWw7Cj4gKwo+ICAgICAgICAgIGRhdGEgPSBpbnRmLT5pblt4ZW5j b25zX21hc2soaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSldOwo+ICAgICAgICAgIGluX2NvbnMg Kz0gMTsKPiAgICAgICAgICBzbXBfbWIoKTsKPiAgICAgICAgICBpbnRmLT5pbl9jb25zID0gaW5f Y29uczsKPiArCj4gKyAgICAgICAgZmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2Qs IGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpOwo+ICsKPiArICAgICAgICBpZiAoIGZpZm9fbGV2 ZWwgPT0gMCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBS WEZFOwo+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0gflJYSTsKPiArICAgICAgICB9 Cj4gICAgICB9Cj4gICAgICBlbHNlCj4gICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBs MDExOiBVbmV4cGVjdGVkIElOIHJpbmcgYnVmZmVyIGVtcHR5XG4iKTsKPiAgCj4gLSAgICBpZiAo IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID09IDAg KQo+IC0gICAgewo+IC0gICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFJYRkU7Cj4gLSAgICAgICAg dnBsMDExLT51YXJ0cmlzICY9IH5SWEk7Cj4gLSAgICB9Cj4gLQo+ICAgICAgdnBsMDExLT51YXJ0 ZnIgJj0gflJYRkY7Cj4gIAo+ICAgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKGQp Owo+IEBAIC0xNDQsMjggKzE0OCw0MSBAQCBzdGF0aWMgdm9pZCB2cGwwMTFfd3JpdGVfZGF0YShz dHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRhdGEpCj4gICAgICBpZiAoIHhlbmNvbnNfcXVldWVk KG91dF9wcm9kLCBvdXRfY29ucywgc2l6ZW9mKGludGYtPm91dCkpICE9Cj4gICAgICAgICAgIHNp emVvZiAoaW50Zi0+b3V0KSApCj4gICAgICB7Cj4gKyAgICAgICAgdW5zaWduZWQgaW50IGZpZm9f bGV2ZWwsIGZpZm9fdGhyZXNob2xkOwo+ICsKPiAgICAgICAgICBpbnRmLT5vdXRbeGVuY29uc19t YXNrKG91dF9wcm9kLCBzaXplb2YoaW50Zi0+b3V0KSldID0gZGF0YTsKPiAgICAgICAgICBvdXRf cHJvZCArPSAxOwo+ICAgICAgICAgIHNtcF93bWIoKTsKPiAgICAgICAgICBpbnRmLT5vdXRfcHJv ZCA9IG91dF9wcm9kOwo+IC0gICAgfQo+IC0gICAgZWxzZQo+IC0gICAgICAgIGdwcmludGsoWEVO TE9HX0VSUiwgInZwbDAxMTogVW5leHBlY3RlZCBPVVQgcmluZyBidWZmZXIgZnVsbFxuIik7Cj4g IAo+IC0gICAgaWYgKCB4ZW5jb25zX3F1ZXVlZChvdXRfcHJvZCwgb3V0X2NvbnMsIHNpemVvZihp bnRmLT5vdXQpKSA9PQo+IC0gICAgICAgICBzaXplb2YgKGludGYtPm91dCkgKQo+IC0gICAgewo+ IC0gICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFRYRkY7Cj4gLSAgICAgICAgdnBsMDExLT51YXJ0 cmlzICY9IH5UWEk7Cj4gKyAgICAgICAgZmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKG91dF9w cm9kLCBvdXRfY29ucywgc2l6ZW9mKGludGYtPm91dCkpOwo+ICsKPiArICAgICAgICBpZiAoIGZp Zm9fbGV2ZWwgPT0gc2l6ZW9mIChpbnRmLT5vdXQpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAg ICAgIHZwbDAxMS0+dWFydGZyIHw9IFRYRkY7Cj4gKwo+ICsgICAgICAgICAgICAvKgo+ICsgICAg ICAgICAgICAgKiBUaGlzIGJpdCBpcyBzZXQgb25seSB3aGVuIEZJRk8gYmVjb21lcyBmdWxsLiBU aGlzIGVuc3VyZXMgdGhhdAo+ICsgICAgICAgICAgICAgKiB0aGUgU0JTQSBVQVJUIGRyaXZlciBj YW4gd3JpdGUgdGhlIGVhcmx5IGNvbnNvbGUgZGF0YSBhcyBmYXN0IGFzCj4gKyAgICAgICAgICAg ICAqIHBvc3NpYmxlLCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBCVVNZIGJpdCB0byBnZXQgY2xl YXJlZCBiZWZvcmUKPiArICAgICAgICAgICAgICogd3JpdGluZyBlYWNoIGJ5dGUuCj4gKyAgICAg ICAgICAgICAqLwo+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBCVVNZOwo+ICsgICAg ICAgIH0KPiAgCj4gICAgICAgICAgLyoKPiAtICAgICAgICAgKiBUaGlzIGJpdCBpcyBzZXQgb25s eSB3aGVuIEZJRk8gYmVjb21lcyBmdWxsLiBUaGlzIGVuc3VyZXMgdGhhdAo+IC0gICAgICAgICAq IHRoZSBTQlNBIFVBUlQgZHJpdmVyIGNhbiB3cml0ZSB0aGUgZWFybHkgY29uc29sZSBkYXRhIGFz IGZhc3QgYXMKPiAtICAgICAgICAgKiBwb3NzaWJsZSwgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUg QlVTWSBiaXQgdG8gZ2V0IGNsZWFyZWQgYmVmb3JlCj4gLSAgICAgICAgICogd3JpdGluZyBlYWNo IGJ5dGUuCj4gKyAgICAgICAgICogQ2xlYXIgdGhlIFRYSSBiaXQgaWYgdGhlIGZpZm8gbGV2ZWwg ZXhjZWVkcyBmaWZvX3NpemUvMiBtYXJrIHdoaWNoCj4gKyAgICAgICAgICogaXMgdGhlIHRyaWdn ZXIgbGV2ZWwgZm9yIGFzc2VydGluZy9kZS1hc3N0ZXJ0aW5nIHRoZSBUWCBpbnRlcnJ1cHQuCj4g ICAgICAgICAgICovCj4gLSAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gQlVTWTsKPiArICAgICAg ICBmaWZvX3RocmVzaG9sZCA9IHNpemVvZiAoaW50Zi0+b3V0KSAtIFNCU0FfVUFSVF9GSUZPX1NJ WkUvMjsKPiArCj4gKyAgICAgICAgaWYgKCBmaWZvX2xldmVsIDw9IGZpZm9fdGhyZXNob2xkICkK PiArICAgICAgICAgICAgdnBsMDExLT51YXJ0cmlzIHw9IFRYSTsKPiArICAgICAgICBlbHNlCj4g KyAgICAgICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+VFhJOwoKSSB0aGluayB3ZSBjYW4gbW92 ZSB0aGUgY2FsbCB0byB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMoKSBoZXJlLgpDdXJy ZW50bHkgaXQncyBjYWxsZWQgYmVsb3csIGJ1dCBoZXJlIGlzIHRoZSBvbmx5IHBsYWNlIGluIHRo aXMgZnVuY3Rpb24Kd2hlcmUgdGhlIGludGVycnVwdCBzdGF0dXMgY2FuIGNoYW5nZS4KVGhpcyBp c24ndCBhIHNob3dzdG9wcGVyLCBidXQgbWFrZXMgbW9yZSBzZW5zZSBhbmQgbWlnaHQgY29tZSBp biBoYW5keQpvbmNlIHdlIGdldCBsZXZlbCB0cmlnZ2VyIHZJUlEgc3VwcG9ydC4KCj4gICAgICB9 Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiBVbmV4 cGVjdGVkIE9VVCByaW5nIGJ1ZmZlciBmdWxsXG4iKTsKPiAgCj4gICAgICB2cGwwMTEtPnVhcnRm ciAmPSB+VFhGRTsKPiAgCj4gQEAgLTM0Miw3ICszNTksNyBAQCBzdGF0aWMgdm9pZCB2cGwwMTFf ZGF0YV9hdmFpbChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgc3RydWN0IHZwbDAxMSAqdnBsMDEx ID0gJmQtPmFyY2gudnBsMDExOwo+ICAgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRm ID0gdnBsMDExLT5yaW5nX2J1ZjsKPiAgICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5f cHJvZCwgb3V0X2NvbnMsIG91dF9wcm9kOwo+IC0gICAgWEVOQ09OU19SSU5HX0lEWCBpbl9yaW5n X3FzaXplLCBvdXRfcmluZ19xc2l6ZTsKPiArICAgIFhFTkNPTlNfUklOR19JRFggaW5fZmlmb19s ZXZlbCwgb3V0X2ZpZm9fbGV2ZWw7Cj4gIAo+ICAgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOwo+ ICAKPiBAQCAtMzUzLDM3ICszNzAsNTEgQEAgc3RhdGljIHZvaWQgdnBsMDExX2RhdGFfYXZhaWwo c3RydWN0IGRvbWFpbiAqZCkKPiAgCj4gICAgICBzbXBfcm1iKCk7Cj4gIAo+IC0gICAgaW5fcmlu Z19xc2l6ZSA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsCj4gKyAgICBpbl9maWZvX2xldmVsID0g eGVuY29uc19xdWV1ZWQoaW5fcHJvZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbl9jb25zLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihpbnRmLT5pbikpOwo+ICAKPiAtICAgIG91dF9yaW5nX3FzaXplID0geGVuY29uc19xdWV1ZWQo b3V0X3Byb2QsCj4gKyAgICBvdXRfZmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKG91dF9wcm9k LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfY29ucywKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludGYtPm91dCkpOwo+ICAK PiAgICAgIC8qIFVwZGF0ZSB0aGUgdWFydCByeCBzdGF0ZSBpZiB0aGUgYnVmZmVyIGlzIG5vdCBl bXB0eS4gKi8KPiAtICAgIGlmICggaW5fcmluZ19xc2l6ZSAhPSAwICkKPiArICAgIGlmICggaW5f Zmlmb19sZXZlbCAhPSAwICkKPiAgICAgIHsKPiAgICAgICAgICB2cGwwMTEtPnVhcnRmciAmPSB+ UlhGRTsKPiAtICAgICAgICBpZiAoIGluX3JpbmdfcXNpemUgPT0gc2l6ZW9mKGludGYtPmluKSAp Cj4gKwo+ICsgICAgICAgIGlmICggaW5fZmlmb19sZXZlbCA9PSBzaXplb2YoaW50Zi0+aW4pICkK PiAgICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gUlhGRjsKPiArCj4gICAgICAgICAgdnBs MDExLT51YXJ0cmlzIHw9IFJYSTsKPiAgICAgIH0KPiAgCj4gICAgICAvKiBVcGRhdGUgdGhlIHVh cnQgdHggc3RhdGUgaWYgdGhlIGJ1ZmZlciBpcyBub3QgZnVsbC4gKi8KPiAtICAgIGlmICggb3V0 X3JpbmdfcXNpemUgIT0gc2l6ZW9mKGludGYtPm91dCkgKQo+ICsgICAgaWYgKCBvdXRfZmlmb19s ZXZlbCAhPSBzaXplb2YoaW50Zi0+b3V0KSApCj4gICAgICB7Cj4gKyAgICAgICAgdW5zaWduZWQg aW50IG91dF9maWZvX3RocmVzaG9sZDsKPiArCj4gICAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0g flRYRkY7Cj4gLSAgICAgICAgdnBsMDExLT51YXJ0cmlzIHw9IFRYSTsKPiAgCj4gICAgICAgICAg LyoKPiAtICAgICAgICAgKiBDbGVhciB0aGUgQlVTWSBiaXQgYXMgc29vbiBhcyBzcGFjZSBiZWNv bWVzIGF2YWlsYWJsZQo+ICsgICAgICAgICAqIENsZWFyIHRoZSBCVVNZIGJpdCBhcyBzb29uIGFz IHNwYWNlIGJlY29tZXMgYXZhbGlhYmxlCgpMb29rcyBsaWtlIGEgbmV3bHkgaW50cm9kdWNlZCB0 eXBvIHRvIG1lLgoKPiAgICAgICAgICAgKiBzbyB0aGF0IHRoZSBTQlNBIFVBUlQgZHJpdmVyIGNh biBzdGFydCB3cml0aW5nIG1vcmUgZGF0YQo+ICAgICAgICAgICAqIHdpdGhvdXQgYW55IGZ1cnRo ZXIgZGVsYXkuCj4gICAgICAgICAgICovCj4gICAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gfkJV U1k7Cj4gIAo+IC0gICAgICAgIGlmICggb3V0X3JpbmdfcXNpemUgPT0gMCApCj4gKyAgICAgICAg LyoKPiArICAgICAgICAgKiBTZXQgdGhlIFRYSSBiaXQgb25seSB3aGVuIHRoZXJlIGlzIHNwYWNl IGZvciBmaWZvX3NpemUvMiBieXRlcyB3aGljaAo+ICsgICAgICAgICAqIGlzIHRoZSB0cmlnZ2Vy IGxldmVsIGZvciBhc3NlcnRpbmcvZGUtYXNzdGVydGluZyB0aGUgVFggaW50ZXJydXB0Lgo+ICsg ICAgICAgICAqLwo+ICsgICAgICAgIG91dF9maWZvX3RocmVzaG9sZCA9IHNpemVvZihpbnRmLT5v dXQpIC0gU0JTQV9VQVJUX0ZJRk9fU0laRS8yOwo+ICsKPiArICAgICAgICBpZiAoIG91dF9maWZv X2xldmVsIDw9IG91dF9maWZvX3RocmVzaG9sZCApCj4gKyAgICAgICAgICAgIHZwbDAxMS0+dWFy dHJpcyB8PSBUWEk7Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRy aXMgJj0gflRYSTsKClNhbWUgaGVyZSB3aXRoIG1vdmluZyB0aGUgY2FsbCB0byB2cGwwMTFfdXBk YXRlX2ludGVycnVwdF9zdGF0dXMoKS4KRXZlbnR1YWxseSB0aGlzIGNvdWxkIGJlY29tZSBhIGRp cmVjdCBjYWxsIHRvIHRoZSBmdW5jdGlvbiBzZXR0aW5nIHRoZQpsaW5lIGxldmVsIG9mIHRoZSB2 SVJRLgoKQ2hlZXJzLApBbmRyZS4KCj4gKwo+ICsgICAgICAgIGlmICggb3V0X2ZpZm9fbGV2ZWwg PT0gMCApCj4gICAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFRYRkU7Cj4gICAgICB9Cj4g IAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1 ZGUvYXNtLWFybS92cGwwMTEuaAo+IGluZGV4IDFiNTgzZGEuLmRiOTVmZjggMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1h cm0vdnBsMDExLmgKPiBAQCAtMjgsNiArMjgsOCBAQAo+ICAjZGVmaW5lIFZQTDAxMV9MT0NLKGQs ZmxhZ3MpIHNwaW5fbG9ja19pcnFzYXZlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZsYWdzKQo+ ICAjZGVmaW5lIFZQTDAxMV9VTkxPQ0soZCxmbGFncykgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm KGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKPiAgCj4gKyNkZWZpbmUgU0JTQV9VQVJUX0ZJ Rk9fU0laRSAzMgo+ICsKPiAgc3RydWN0IHZwbDAxMSB7Cj4gICAgICB2b2lkICpyaW5nX2J1ZjsK PiAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnJpbmdfcGFnZTsKPiAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=