From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 01/10] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Tue, 18 Apr 2017 17:15:44 -0700 (PDT) Message-ID: References: <1491212673-13476-1-git-send-email-bhupinder.thakur@linaro.org> <1491212673-13476-2-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 1d0dHm-0000MC-BJ for xen-devel@lists.xenproject.org; Wed, 19 Apr 2017 00:15:54 +0000 In-Reply-To: <1491212673-13476-2-git-send-email-bhupinder.thakur@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Bhupinder Thakur Cc: xen-devel@lists.xenproject.org, Julien Grall , Stefano Stabellini , Ian Jackson , Wei Liu List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAzIEFwciAyMDE3LCBCaHVwaW5kZXIgVGhha3VyIHdyb3RlOgo+IEFkZCBlbXVsYXRp b24gY29kZSB0byBlbXVsYXRlIHJlYWQvd3JpdGUgYWNjZXNzIHRvIHBsMDExIHJlZ2lzdGVycwo+ IGFuZCBwbDAxMSBpbnRlcnJ1cHRzOgo+IAo+ICAgICAtIEVtdWxhdGUgRFIgcmVhZC93cml0ZSBi eSByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20vdG8gdGhlIElOCj4gICAgICAgYW5kIE9VVCByaW5n IGJ1ZmZlcnMgYW5kIHJhaXNpbmcgYW4gZXZlbnQgdG8gdGhlIGJhY2tlbmQgd2hlbgo+ICAgICAg IHRoZXJlIGlzIGRhdGEgaW4gdGhlIE9VVCByaW5nIGJ1ZmZlciBhbmQgaW5qZWN0aW5nIGFuIGlu dGVycnVwdAo+ICAgICAgIHRvIHRoZSBndWVzdCB3aGVuIHRoZXJlIGlzIGRhdGEgaW4gdGhlIElO IHJpbmcgYnVmZmVyCj4gCj4gICAgIC0gT3RoZXIgcmVnaXN0ZXJzIGFyZSByZWxhdGVkIHRvIGlu dGVycnVwdCBtYW5hZ2VtZW50IGFuZAo+ICAgICAgIGVzc2VudGlhbGx5IGNvbnRyb2wgd2hlbiBp bnRlcnJ1cHRzIGFyZSBkZWxpdmVyZWQgdG8gdGhlIGd1ZXN0Cj4gCj4gVGhlIFNCU0EgY29tcGxp YW50IHBsMDExIHVhcnQgaXMgY292ZXJlZCBpbiBBcHBlbmRpeCBCIG9mCj4gaHR0cHM6Ly9zdGF0 aWMuZG9jcy5hcm0uY29tL2RlbjAwMjkvYS9TZXJ2ZXJfQmFzZV9TeXN0ZW1fQXJjaGl0ZWN0dXJl X3YzXzFfQVJNX0RFTl8wMDI5QS5wZGYKPiAKPiBTaWduZWQtb2ZmLWJ5OiBCaHVwaW5kZXIgVGhh a3VyIDxiaHVwaW5kZXIudGhha3VyQGxpbmFyby5vcmc+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9L Y29uZmlnICAgICAgICAgICAgIHwgICA1ICsKPiAgeGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDEgKwo+ICB4ZW4vYXJjaC9hcm0vdnBsMDExLmMgICAgICAgICAgICB8IDMzOSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2luY2x1ZGUvYXNt LWFybS9kb21haW4uaCAgICAgfCAgIDUgKwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVh cnQuaCB8ICAgMiArCj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oICAgIHwgICA4ICsK PiAgeGVuL2luY2x1ZGUveGVuL3ZwbDAxMS5oICAgICAgICAgfCAgNjcgKysrKysrKysKPiAgNyBm aWxlcyBjaGFuZ2VkLCA0MjcgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVu L2FyY2gvYXJtL3ZwbDAxMS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4v dnBsMDExLmgKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94ZW4vYXJj aC9hcm0vS2NvbmZpZwo+IGluZGV4IDJlMDIzZDEuLmJmYTg2YzcgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gvYXJtL0tjb25maWcKPiArKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwo+IEBAIC00NSw2 ICs0NSwxMSBAQCBjb25maWcgQUNQSQo+ICBjb25maWcgSEFTX0dJQ1YzCj4gIAlib29sCj4gIAo+ ICtjb25maWcgVlBMMDExX0NPTlNPTEUKPiArCWJvb2wgIkVtdWxhdGVkIHBsMDExIGNvbnNvbGUg c3VwcG9ydCIKPiArCWRlZmF1bHQgeQo+ICsJLS0taGVscC0tLQo+ICsJICBBbGxvd3MgYSBndWVz dCB0byB1c2UgcGwwMTEgVUFSVCBhcyBhIGNvbnNvbGUKPiAgZW5kbWVudQo+ICAKPiAgbWVudSAi QVJNIGVycmF0YSB3b3JrYXJvdW5kIHZpYSB0aGUgYWx0ZXJuYXRpdmUgZnJhbWV3b3JrIgo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUK PiBpbmRleCA3YWZiOGEzLi5hOTRiZGFiIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9NYWtl ZmlsZQo+ICsrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQo+IEBAIC00OSw2ICs0OSw3IEBAIG9i ai15ICs9IHZtX2V2ZW50Lm8KPiAgb2JqLXkgKz0gdnRpbWVyLm8KPiAgb2JqLXkgKz0gdnBzY2ku bwo+ICBvYmoteSArPSB2dWFydC5vCj4gK29iai0kKENPTkZJR19WUEwwMTFfQ09OU09MRSkgKz0g dnBsMDExLm8KPiAgCj4gICNvYmotYmluLXkgKz0gLi4uLm8KPiAgCj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS92cGwwMTEuYyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZWViMWNiZgo+IC0tLSAvZGV2L251bGwKPiArKysg Yi94ZW4vYXJjaC9hcm0vdnBsMDExLmMKPiBAQCAtMCwwICsxLDMzOSBAQAo+ICsvKgo+ICsgKiBh cmNoL2FybS92cGwwMTEuYwo+ICsgKgo+ICsgKiBWaXJ0dWFsIFBMMDExIFVBUlQKPiArICoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICogdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVAo+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgo+ICsgKiBt b3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKPiArICogdGhpcyBw cm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cj4gKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4g KyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KPiArI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4K PiArI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgo+ICsjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+Cj4gKyNp bmNsdWRlIDxwdWJsaWMvaW8vY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8eGVuL3ZwbDAxMS5oPgo+ ICsjaW5jbHVkZSA8YXNtLWFybS9wbDAxMS11YXJ0Lmg+Cj4gKwo+ICt1bnNpZ25lZCBpbnQgdnBs MDExX3JlZ19tYXNrW10gPSB7MHhmZiwgMHhmZmZmLCAweGZmZmZmZmZmfTsKPiArCj4gK3N0YXRp YyB2b2lkIHZnaWNfaW5qZWN0X3ZwbDAxMV9zcGkoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsg ICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTE9JmQtPmFyY2gudnBsMDExOwo+ICsKPiArICAgIGlm ICggKHZwbDAxMS0+dWFydHJpcyAmIHZwbDAxMS0+dWFydGltc2MpICkKPiArICAgICAgICB2Z2lj X3ZjcHVfaW5qZWN0X3NwaShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90ICpkYXRhKQo+ ICt7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsgICAgc3RydWN0IHZwbDAxMV9zICp2 cGwwMTE9JmQtPmFyY2gudnBsMDExOwoKVGhlIGNvZGUgc3R5bGUgaXM6CiAgICAKICAgIHZwbDAx MSA9ICZkLT5hcmNoLnZwbDAxMQoKCj4gKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmlu dGY9KHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqKXZwbDAxMS0+cmluZ19idWY7CgpTYW1lIGhl cmUuIFBsZWFzZSBmaXggaXQgZXZlcnl3aGVyZS4KCgo+ICsgICAgLyoKPiArICAgICAqIEluaXRp YWxpemUgdGhlIGRhdGEgc28gdGhhdCBldmVuIGlmIHRoZXJlIGlzIG5vIGRhdGEgaW4gcmluZyBi dWZmZXIKPiArICAgICAqIDAgaXMgcmV0dXJuZWQuCj4gKyAgICAgKi8KPiArICAgICpkYXRhID0g MDsKPiArCj4gKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7Cj4gKwo+ICsgICAgLyoKPiArICAg ICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBkYXRhIGluIHRoZSByaW5nIGJ1 ZmZlciB3aGVuIHRoaXMgCj4gKyAgICAgKiBmdW5jdGlvbiBpcyBjYWxsZWQgc2luY2UgdGhlIGd1 ZXN0IGlzIGV4cGVjdGVkIHRvIHJlYWQgdGhlIGRhdGEgcmVnaXN0ZXIKPiArICAgICAqIG9ubHkg aWYgdGhlIFRYRkUgZmxhZyBpcyBub3Qgc2V0Lgo+ICsgICAgICogSWYgdGhlIGd1ZXN0IHN0aWxs IGRvZXMgcmVhZCBldmVudCB3aGVuIFRYRkUgYml0IGlzIHNldCB0aGVuIDAgd2lsbAo+ICsgICAg ICogYmUgcmV0dXJuZWQuCj4gKyAgICAgKi8KPiArICAgIGlmICggIVZQTDAxMV9JTl9SSU5HX0VN UFRZKGludGYpICkKPiArICAgIHsKPiArICAgICAgICAqZGF0YSA9IGludGYtPmluW01BU0tfWEVO Q09OU19JRFgoaW50Zi0+aW5fY29ucysrLCBpbnRmLT5pbildOwoKRm9yIGNvcnJlY3RuZXNzLCBp dCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIHJpZ2h0IG9yZGVyaW5nIGFuZCB1c2UKYmFy cmllcnM6CgogICAgICAgIGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOwogICAgICAgICpkYXRhID0g aW50Zi0+aW5bTUFTS19YRU5DT05TX0lEWChpbl9jb25zLCBpbnRmLT5pbildOwogICAgICAgIHNt Yl9tYigpOwogICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25zICsgMTsKCgo+ICsgICAgfQo+ ICsKPiArICAgIGlmICggVlBMMDExX0lOX1JJTkdfRU1QVFkoaW50ZikgKQo+ICsgICAgewo+ICsg ICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IChSWEZFKTsKPiArICAgICAgICB2cGwwMTEtPnVhcnRy aXMgJj0gfihSWEkpOwo+ICsgICAgfQo+ICsKPiArICAgIHZwbDAxMS0+dWFydGZyICY9IH4oUlhG Rik7Cj4gKwo+ICsgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CgpJIHRoaW5rIHdlIG5lZWQg dG8gbm90aWZ5IHhlbmNvbnNvbGVkIGhlcmUsIGluIGNhc2UgdGhlIHJpbmcgd2FzCnByZXZpb3N1 bHkgZnVsbD8gTm93IHRoYXQgd2UgaGF2ZSByZWFkIHNvbWUgZGF0YSwgeGVuY29uc29sZWQgY2Fu IGdvCmJhY2sgYW5kIHdyaXRlIG1vcmUuCgoKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnBsMDEx X3dyaXRlX2RhdGEoc3RydWN0IGRvbWFpbiAqZCwgdWludDhfdCBkYXRhKQo+ICt7Cj4gKyAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTE9JmQtPmFy Y2gudnBsMDExOwo+ICsgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmPShzdHJ1Y3Qg eGVuY29uc19pbnRlcmZhY2UgKil2cGwwMTEtPnJpbmdfYnVmOwo+ICsKPiArICAgIFZQTDAxMV9M T0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogSXQgaXMgZXhwZWN0ZWQgdGhh dCB0aGUgcmluZyBpcyBub3QgZnVsbCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCj4gKyAg ICAgKiBhcyB0aGUgZ3Vlc3QgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgdG8gdGhlIGRhdGEgcmVnaXN0 ZXIgb25seSB3aGVuIHRoZQo+ICsgICAgICogVFhGRiBmbGFnIGlzIG5vdCBzZXQuCj4gKyAgICAg KiBJbiBjYXNlIHRoZSBndWVzdCBkb2VzIHdyaXRlIGV2ZW4gd2hlbiB0aGUgVFhGRiBmbGFnIGlz IHNldCB0aGVuIHRoZQo+ICsgICAgICogZGF0YSB3aWxsIGJlIHNpbGVudGx5IGRyb3BwZWQuCj4g KyAgICAgKi8KPiArICAgIGlmICggIVZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpICkKPiArICAg IHsKPiArICAgICAgICBpbnRmLT5vdXRbTUFTS19YRU5DT05TX0lEWChpbnRmLT5vdXRfcHJvZCsr LCBpbnRmLT5vdXQpXSA9IGRhdGE7Cj4gKyAgICAgICAgc21wX3dtYigpOwoKU2ltaWxhcmx5LCB0 aGUgb3JkZXIgc2hvdWxkIGJlOgoKICAgIG91dF9wcm9kID0gaW50Zi0+b3V0X3Byb2Q7CiAgICBp bnRmLT5vdXRbTUFTS19YRU5DT05TX0lEWChvdXRfcHJvZCwgaW50Zi0+b3V0KV0gPSBkYXRhOwog ICAgc21iX3dtYigpOwogICAgaW50Zi0+b3V0X3Byb2QgPSBvdXRfcHJvZCArIDE7CgoKPiArICAg IH0KPiArCj4gKyAgICBpZiAoIFZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpICkKPiArICAgIHsK PiArICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSAoVFhGRik7Cj4gKyAgICAgICAgdnBsMDExLT51 YXJ0cmlzICY9IH4oVFhJKTsKPiArICAgIH0KPiArCj4gKyAgICB2cGwwMTEtPnVhcnRmciB8PSAo QlVTWSk7Cj4gKwo+ICsgICAgdnBsMDExLT51YXJ0ZnIgJj0gfihUWEZFKTsKPiArCj4gKyAgICBW UEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICAvKiByYWlzZSBhbiBldmVudCB0byB4 ZW5jb25zb2xlZCBvbmx5IGlmIGl0IGlzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZl ciAqLwo+ICsgICAgaWYgKCBWUEwwMTFfUklOR19ERVBUSChpbnRmLCBvdXQpID09IDEgKQo+ICsg ICAgewo+ICsgICAgICAgIG5vdGlmeV92aWFfeGVuX2V2ZW50X2NoYW5uZWwoZCwgZC0+YXJjaC5o dm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVkNPTlNPTEVfRVZUQ0hOXSk7Cj4gKyAgICB9CgpX aHkgb25seSBpbiBjYXNlIGlzIHRoZSBmaXJzdCBjaGFyYWN0ZXI/IHhlbmNvbnNvbGVkIHdpbGwg bWlzcyB1cGRhdGVzCmlmIHdlIGRvbid0IHNlbmQgYSBub3RpZmljYXRpb24sIHJpZ2h0PwoKCj4g K30KPiArCj4gK3N0YXRpYyBpbnQgdnBsMDExX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1p b19pbmZvX3QgKmluZm8sIHJlZ2lzdGVyX3QgKnIsIHZvaWQgKnByaXYpCj4gK3sKPiArICAgIHVp bnQ4X3QgY2g7Cj4gKyAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7Cj4gKyAg ICBpbnQgdnBsMDExX3JlZyA9IChpbnQpKGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpOwo+ ICsgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmdi0+ZG9tYWluLT5hcmNoLnZwbDAxMTsK PiArCj4gKyAgICBzd2l0Y2ggKCB2cGwwMTFfcmVnICkKPiArICAgIHsKPiArICAgIGNhc2UgRFI6 Cj4gKyAgICAgICAgaWYgKCAhVkFMSURfV19TSVpFKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93aWR0 aDsKPiArICAgICAgICB2cGwwMTFfcmVhZF9kYXRhKHYtPmRvbWFpbiwgJmNoKTsKPiArICAgICAg ICAqciA9IGNoOwo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGNhc2UgUlNSOgo+ICsgICAg ICAgIGlmICggIVZBTElEX0JXX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOwo+ICsK PiArICAgICAgICAvKiBJdCBhbHdheXMgcmV0dXJucyAwIGFzIHRoZXJlIGFyZSBubyBwaHlzaWNh bCBlcnJvcnMuICovCj4gKyAgICAgICAgKnIgPSAwOwo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiAr ICAgIGNhc2UgRlI6Cj4gKyAgICAgICAgaWYgKCAhVkFMSURfQldfU0laRShkYWJ0LnNpemUpICkg Z290byBiYWRfd2lkdGg7Cj4gKyAgICAgICAgKnIgPSAodnBsMDExLT51YXJ0ZnIgJiB2cGwwMTFf cmVnX21hc2tbZGFidC5zaXplXSk7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgY2FzZSBS SVM6Cj4gKyAgICAgICAgaWYgKCAhVkFMSURfV19TSVpFKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93 aWR0aDsKPiArICAgICAgICAqciA9ICh2cGwwMTEtPnVhcnRyaXMgJiB2cGwwMTFfcmVnX21hc2tb ZGFidC5zaXplXSk7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgY2FzZSBNSVM6Cj4gKyAg ICAgICAgaWYgKCAhVkFMSURfV19TSVpFKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93aWR0aDsKPiAr ICAgICAgICAqciA9ICh2cGwwMTEtPnVhcnRyaXMgJgo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdnBsMDExLT51YXJ0aW1zYyAmIHZwbDAxMV9yZWdfbWFza1tkYWJ0LnNpemVdKTsKPiAr ICAgICAgICBicmVhazsKPiArCj4gKyAgICBjYXNlIElNU0M6Cj4gKyAgICAgICAgaWYgKCAhVkFM SURfV19TSVpFKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93aWR0aDsKPiArICAgICAgICAqciA9ICh2 cGwwMTEtPnVhcnRpbXNjICYgdnBsMDExX3JlZ19tYXNrW2RhYnQuc2l6ZV0pOwo+ICsgICAgICAg IGJyZWFrOwo+ICsKPiArICAgIGNhc2UgSUNSOgo+ICsgICAgICAgIGlmICggIVZBTElEX1dfU0la RShkYWJ0LnNpemUpICkgZ290byBiYWRfd2lkdGg7Cj4gKwo+ICsgICAgICAgIC8qIE9ubHkgd3Jp dGUgaXMgdmFsaWQuICovCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgZGVmYXVsdDoK PiArICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IHVuaGFuZGxlZCByZWFkIHIl ZCBvZmZzZXQgJSMwOHhcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYWJ0 LnJlZywgdnBsMDExX3JlZyk7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgcmV0dXJuIDE7Cj4gKwo+ICtiYWRfd2lkdGg6Cj4gKyAgICBncHJpbnRrKFhFTkxPR19FUlIs ICJ2cGwwMTE6IGJhZCByZWFkIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZGFidC5zaXplLCBkYWJ0LnJlZywgdnBsMDExX3JlZyk7Cj4gKyAg ICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKPiArICAgIHJldHVybiAwOwo+ICsKPiArfQo+ ICsKPiArc3RhdGljIGludCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19p bmZvX3QgKmluZm8sIHJlZ2lzdGVyX3Qgciwgdm9pZCAqcHJpdikKPiArewo+ICsgICAgdWludDhf dCBjaCA9ICgoc3RydWN0IHVhcnRkcl9yZWcgKikmciktPmRhdGE7Cj4gKyAgICBzdHJ1Y3QgaHNy X2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7Cj4gKyAgICBpbnQgdnBsMDExX3JlZyA9IChpbnQpKGlu Zm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpOwo+ICsgICAgc3RydWN0IHZwbDAxMV9zICp2cGww MTEgPSAmdi0+ZG9tYWluLT5hcmNoLnZwbDAxMTsKPiArCj4gKyAgICBzd2l0Y2ggKCB2cGwwMTFf cmVnICkKPiArICAgIHsKPiArICAgIGNhc2UgRFI6Cj4gKwo+ICsgICAgICAgIGlmICggIVZBTElE X0JXX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOwo+ICsgICAgICAgIHZwbDAxMV93 cml0ZV9kYXRhKHYtPmRvbWFpbiwgY2gpOwo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGNh c2UgUlNSOiAvKiBOb3RoaW5nIHRvIGNsZWFyLiAqLwo+ICsgICAgICAgIGlmICggIVZBTElEX0JX X1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOwo+ICsgICAgICAgIGJyZWFrOwo+ICsK PiArICAgIGNhc2UgRlI6Cj4gKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmU7Cj4gKyAgICBjYXNl IFJJUzoKPiArICAgIGNhc2UgTUlTOgo+ICsgICAgICAgIGdvdG8gd29yZF93cml0ZV9pZ25vcmU7 Cj4gKwo+ICsgICAgY2FzZSBJTVNDOgo+ICsgICAgICAgIGlmICggIVZBTElEX1dfU0laRShkYWJ0 LnNpemUpICkgZ290byBiYWRfd2lkdGg7Cj4gKyAgICAgICAgdnBsMDExLT51YXJ0aW1zYyA9IChy ICYgdnBsMDExX3JlZ19tYXNrW2RhYnQuc2l6ZV0pOwo+ICsgICAgICAgIHZnaWNfaW5qZWN0X3Zw bDAxMV9zcGkodi0+ZG9tYWluKTsKPiArICAgICAgICBicmVhazsKPiArCj4gKyAgICBjYXNlIElD UjoKPiArICAgICAgICBpZiAoICFWQUxJRF9XX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dp ZHRoOwo+ICsgICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+KHIgJiB2cGwwMTFfcmVnX21hc2tb ZGFidC5zaXplXSk7Cj4gKyAgICAgICAgdmdpY19pbmplY3RfdnBsMDExX3NwaSh2LT5kb21haW4p Owo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgZ3ByaW50 ayhYRU5MT0dfRVJSLCAidnBsMDExOiB1bmhhbmRsZWQgd3JpdGUgciVkIG9mZnNldCAlIzA4eFxu IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhYnQucmVnLCB2cGwwMTFfcmVn KTsKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMTsKPiAr Cj4gK3dyaXRlX2lnbm9yZToKPiArICAgIGlmICggIVZBTElEX0JXX1NJWkUoZGFidC5zaXplKSAp IGdvdG8gYmFkX3dpZHRoOwo+ICsgICAgcmV0dXJuIDE7Cj4gKwo+ICt3b3JkX3dyaXRlX2lnbm9y ZToKPiArICAgIGlmICggIVZBTElEX1dfU0laRShkYWJ0LnNpemUpICkgZ290byBiYWRfd2lkdGg7 Cj4gKyAgICByZXR1cm4gMTsKPiArCj4gK2JhZF93aWR0aDoKPiArICAgIGdwcmludGsoWEVOTE9H X0VSUiwgInZwbDAxMTogYmFkIHdyaXRlIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZGFidC5zaXplLCBkYWJ0LnJlZywgdnBsMDExX3JlZyk7 Cj4gKyAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKPiArICAgIHJldHVybiAwOwo+ICsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtbWlvX2hhbmRsZXJfb3BzIHZwbDAxMV9t bWlvX2hhbmRsZXIgPSB7Cj4gKyAgICAucmVhZCA9IHZwbDAxMV9tbWlvX3JlYWQsCj4gKyAgICAu d3JpdGUgPSB2cGwwMTFfbW1pb193cml0ZSwKPiArfTsKPiArCj4gK2ludCB2cGwwMTFfbWFwX2d1 ZXN0X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgc3RydWN0IHZwbDAxMV9zICp2 cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7Cj4gKwo+ICsgICAgLyogTWFwIHRoZSBndWVzdCBQRk4g dG8gWGVuIGFkZHJlc3Mgc3BhY2UuICovCj4gKyAgICByZXR1cm4gcHJlcGFyZV9yaW5nX2Zvcl9o ZWxwZXIoZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLmh2 bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WQ09OU09MRV9QRk5dLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPnJpbmdfcGFnZSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nX2J1Zik7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIHZwbDAxMV9kYXRhX2F2YWlsKHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyAgICBzdHJ1Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZk LT5hcmNoLnZwbDAxMTsKPiArICAgIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50Zj0oc3Ry dWN0IHhlbmNvbnNfaW50ZXJmYWNlICopdnBsMDExLT5yaW5nX2J1ZjsKPiArCj4gKyAgICBWUEww MTFfTE9DSyhkLCBmbGFncyk7Cj4gKwo+ICsgICAgLyogVXBkYXRlIHRoZSB1YXJ0IHJ4IHN0YXRl IGlmIHRoZSBidWZmZXIgaXMgbm90IGVtcHR5LiAqLwo+ICsgICAgaWYgKCAhVlBMMDExX0lOX1JJ TkdfRU1QVFkoaW50ZikgKQo+ICsgICAgewo+ICsgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH4o UlhGRSk7Cj4gKyAgICAgICAgaWYgKCBWUEwwMTFfSU5fUklOR19GVUxMKGludGYpICkKPiArICAg ICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gKFJYRkYpOwo+ICsgICAgICAgIHZwbDAxMS0+dWFy dHJpcyB8PSAoUlhJKTsKPiArICAgIH0KPiArCj4gKyAgICAvKiBVcGRhdGUgdGhlIHVhcnQgdHgg c3RhdGUgaWYgdGhlIGJ1ZmZlciBpcyBub3QgZnVsbC4gKi8KPiArICAgIGlmICggIVZQTDAxMV9P VVRfUklOR19GVUxMKGludGYpICkKPiArICAgIHsKPiArICAgICAgICB2cGwwMTEtPnVhcnRmciAm PSB+KFRYRkYpOwo+ICsgICAgICAgIHZwbDAxMS0+dWFydHJpcyB8PSAoVFhJKTsKPiArICAgICAg ICBpZiAoIFZQTDAxMV9PVVRfUklOR19FTVBUWShpbnRmKSApCj4gKyAgICAgICAgewo+ICsgICAg ICAgICAgICB2cGwwMTEtPnVhcnRmciAmPSB+KEJVU1kpOwo+ICsgICAgICAgICAgICB2cGwwMTEt PnVhcnRmciB8PSAoVFhGRSk7CgpJdCBpcyBub3QgYSBnb29kIGlkZWEgdG8gY2hlY2sgdGhlIGlu dGYgdmFsdWVzIHR3aWNlOiB4ZW5jb25zb2xlZCBtaWdodApiZSBtb2RpZnlpbmcgdGhlbSwgc28g d2UgY2FuIGdldCBpbnRvIHRoZSBzaXR1YXRpb24gd2hlcmUgaW50Zi0+b3V0KgpjaGFuZ2UgaW4g YmV0d2VlbiB0aGUgdHdvIGNoZWNrcy4gUGxlYXNlIHJlYWQgb3V0X2NvbnMgYW5kIG91dF9wcm9k IG9ubHkKb25jZSBpbiB0aGlzIGZ1bmN0aW9uLgoKCj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsK PiArICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOwo+ICsKPiArICAgIHZnaWNfaW5qZWN0X3Zw bDAxMV9zcGkoZCk7Cj4gKwo+ICsgICAgaWYgKCAhVlBMMDExX09VVF9SSU5HX0VNUFRZKGludGYp ICkKPiArICAgIHsKPiArICAgICAgICBBU1NFUlQoIGQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNb SFZNX1BBUkFNX1ZDT05TT0xFX0VWVENITl0gIT0gMCApOwo+ICsgICAgICAgIG5vdGlmeV92aWFf eGVuX2V2ZW50X2NoYW5uZWwoZCwgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1f VkNPTlNPTEVfRVZUQ0hOXSk7CgpXaHkgYXJlIHdlIHNlbmRpbmcgbm90aWZpY2F0aW9ucyBhdCB0 aGlzIHBvaW50PyBUaGUgb3V0IGJ1ZmZlciBoYXNuJ3QKY2hhbmdlZCBzaW5jZSB4ZW5jb25zb2xl ZCBzZW50IHRoZSBldnRjaG4gdG8gWGVuLCBzbyB4ZW5jb25zb2xlZCBhbHJlYWR5Cmtub3dzIGF0 IHRoaXMgcG9pbnQgdGhhdCB0aGUgb3V0IHJpbmcgaXMgbm90IGVtcHR5LgoKCj4gKyAgICB9Cj4g K30KPiArCj4gKwo+ICtzdGF0aWMgdm9pZCB2cGwwMTFfbm90aWZpY2F0aW9uKHN0cnVjdCB2Y3B1 ICp2LCB1bnNpZ25lZCBpbnQgcG9ydCkKPiArewo+ICsgICAgdnBsMDExX2RhdGFfYXZhaWwodi0+ ZG9tYWluKTsKPiArfQo+ICsKPiAraW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnICpjb25maWcpCj4gK3sKPiArICAgIGlu dCByYzsKPiArICAgIHN0cnVjdCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+ ICsKPiArICAgIHJjID0gYWxsb2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBjb25m aWctPmNvbnNvbGVfZG9taWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdnBsMDExX25vdGlmaWNhdGlvbik7Cj4gKyAgICBpZiAocmMgPCAwKQo+ICsgICAgewo+ ICsgICAgICAgIHJldHVybiByYzsKPiArICAgIH0KPiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5w YXJhbXNbSFZNX1BBUkFNX1ZDT05TT0xFX0VWVENITl0gPSByYzsKPiArICAgIHJjID0gdmdpY19y ZXNlcnZlX3ZpcnEoZCwgR1VFU1RfVlBMMDExX1NQSSk7Cj4gKyAgICBpZiAoICFyYyApCj4gKyAg ICAgICAgcmV0dXJuIHJjOwoKV2Ugc2hvdWxkIGZyZWUgdGhlIGFsbG9jYXRlZCBldnRjaG4gaW4g Y2FzZSBvZiBlcnJvciBoZXJlCgoKPiArICAgIHJlZ2lzdGVyX21taW9faGFuZGxlcihkLCAmdnBs MDExX21taW9faGFuZGxlciwgR1VFU1RfUEwwMTFfQkFTRSwgR1VFU1RfUEwwMTFfU0laRSwgTlVM TCk7Cj4gKyAgICBzcGluX2xvY2tfaW5pdCgmdnBsMDExLT5sb2NrKTsKPiArCj4gKyAgICB2cGww MTEtPmludGlhbGl6ZWQgPSB0cnVlOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtp bnQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgc3Ry dWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7Cj4gKwo+ICsgICAgaWYgKCB2 cGwwMTEtPmludGlhbGl6ZWQgKQo+ICsgICAgewo+ICsgICAgICAgIGZyZWVfeGVuX2V2ZW50X2No YW5uZWwoZCwgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVkNPTlNPTEVfRVZU Q0hOXSk7Cj4gKyAgICAgICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+cmluZ19i dWYsIHZwbDAxMS0+cmluZ19wYWdlKTsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiAr fQo+ICsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPiBpbmRleCAyZDZmYmIxLi5hMTIyNTA0IDEwMDY0NAo+ IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPiArKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL2RvbWFpbi5oCj4gQEAgLTExLDYgKzExLDcgQEAKPiAgI2luY2x1ZGUgPGFzbS9naWMu aD4KPiAgI2luY2x1ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+Cj4gICNpbmNsdWRlIDx4ZW4vc2Vy aWFsLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdnBsMDExLmg+Cj4gIAo+ICBzdHJ1Y3QgaHZtX2RvbWFp bgo+ICB7Cj4gQEAgLTEzMSw2ICsxMzIsMTAgQEAgc3RydWN0IGFyY2hfZG9tYWluCj4gICAgICBz dHJ1Y3Qgewo+ICAgICAgICAgIHVpbnQ4X3QgcHJpdmlsZWdlZF9jYWxsX2VuYWJsZWQgOiAxOwo+ ICAgICAgfSBtb25pdG9yOwo+ICsKPiArI2lmZGVmIENPTkZJR19WUEwwMTFfQ09OU09MRQo+ICsg ICAgc3RydWN0IHZwbDAxMV9zIHZwbDAxMTsKPiArI2VuZGlmCj4gIH0gIF9fY2FjaGVsaW5lX2Fs aWduZWQ7Cj4gIAo+ICBzdHJ1Y3QgYXJjaF92Y3B1Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vcGwwMTEtdWFydC5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmgK PiBpbmRleCAxMjNmNDc3Li41N2U5ZWM3IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vcGwwMTEtdWFydC5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmgK PiBAQCAtNDksNiArNDksOCBAQAo+ICAvKiBGUiBiaXRzICovCj4gICNkZWZpbmUgVFhGRSAgICgx PDw3KSAvKiBUWCBGSUZPIGVtcHR5ICovCj4gICNkZWZpbmUgUlhGRSAgICgxPDw0KSAvKiBSWCBG SUZPIGVtcHR5ICovCj4gKyNkZWZpbmUgVFhGRiAgICgxPDw1KSAvKiBUWCBGSUZPIGZ1bGwgKi8K PiArI2RlZmluZSBSWEZGICAgKDE8PDYpIC8qIFJYIEZJRk8gZnVsbCAqLwo+ICAjZGVmaW5lIEJV U1kgICAoMTw8MykgLyogVHJhbnNtaXQgaXMgbm90IGNvbXBsZXRlICovCj4gIAo+ICAvKiBMQ1Jf SCBiaXRzICovCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIv eGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKPiBpbmRleCBiZDk3NGZiLi41ZjkxMjA3IDEw MDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCj4gKysrIGIveGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKPiBAQCAtMzIyLDYgKzMyMiw4IEBAIHN0cnVjdCB4ZW5f YXJjaF9kb21haW5jb25maWcgewo+ICAgICAgICoKPiAgICAgICAqLwo+ICAgICAgdWludDMyX3Qg Y2xvY2tfZnJlcXVlbmN5Owo+ICsKPiArICAgIHVpbnQzMl90IGNvbnNvbGVfZG9taWQ7Cj4gIH07 Cj4gICNlbmRpZiAvKiBfX1hFTl9fIHx8IF9fWEVOX1RPT0xTX18gKi8KPiAgCj4gQEAgLTQxMCw2 ICs0MTIsMTAgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsKPiAgI2RlZmluZSBH VUVTVF9BQ1BJX0JBU0UgMHgyMDAwMDAwMFVMTAo+ICAjZGVmaW5lIEdVRVNUX0FDUElfU0laRSAw eDAyMDAwMDAwVUxMCj4gIAo+ICsvKiBQTDAxMSBtYXBwaW5ncyAqLwo+ICsjZGVmaW5lIEdVRVNU X1BMMDExX0JBU0UgICAgMHgyMjAwMDAwMFVMTAo+ICsjZGVmaW5lIEdVRVNUX1BMMDExX1NJWkUg ICAgMHgwMDAwMTAwMFVMTAo+ICsKPiAgLyoKPiAgICogMTZNQiA9PSA0MDk2IHBhZ2VzIHJlc2Vy dmVkIGZvciBndWVzdCB0byB1c2UgYXMgYSByZWdpb24gdG8gbWFwIGl0cwo+ICAgKiBncmFudCB0 YWJsZSBpbi4KPiBAQCAtNDQ0LDYgKzQ1MCw4IEBAIHR5cGVkZWYgdWludDY0X3QgeGVuX2NhbGxi YWNrX3Q7Cj4gICNkZWZpbmUgR1VFU1RfVElNRVJfUEhZU19OU19QUEkgMzAKPiAgI2RlZmluZSBH VUVTVF9FVlRDSE5fUFBJICAgICAgICAzMQo+ICAKPiArI2RlZmluZSBHVUVTVF9WUEwwMTFfU1BJ ICAgICAgICAzMgo+ICsKPiAgLyogUFNDSSBmdW5jdGlvbnMgKi8KPiAgI2RlZmluZSBQU0NJX2Nw dV9zdXNwZW5kIDAKPiAgI2RlZmluZSBQU0NJX2NwdV9vZmYgICAgIDEKPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUveGVuL3ZwbDAxMS5oIGIveGVuL2luY2x1ZGUveGVuL3ZwbDAxMS5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5mOWYyYWJhCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi92cGwwMTEuaAo+IEBAIC0wLDAgKzEsNjcgQEAKPiAr LyoKPiArICogaW5jbHVkZS94ZW4vdnBsMDExLmgKPiArICoKPiArICogVmlydHVhbCBQTDAxMSBV QVJUCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCj4gKyAqIHZlcnNp b24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAq Cj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRo Cj4gKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+Lgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX1ZQTDAxMV9IXwo+ICsKPiArI2RlZmluZSBf VlBMMDExX0hfCj4gKwo+ICsvKiBoZWxwZXIgbWFjcm9zICovCj4gKyNkZWZpbmUgVlBMMDExX1JJ TkdfREVQVEgoaW50ZixkaXIpICgoKGludGYpLT5kaXIgIyMgX3Byb2QgLSAoaW50ZiktPmRpciAj IyBfY29ucykpCj4gKwo+ICsjZGVmaW5lIFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLGRpcikg KHNpemVvZigoaW50ZiktPmRpciktMSkKPiArCj4gKyNkZWZpbmUgVlBMMDExX0lOX1JJTkdfRU1Q VFkoaW50ZikgKFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIGluKSA9PSAwKQo+ICsKPiArI2RlZmlu ZSBWUEwwMTFfT1VUX1JJTkdfRU1QVFkoaW50ZikgKFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIG91 dCkgPT0gMCkKPiArCj4gKyNkZWZpbmUgVlBMMDExX0lOX1JJTkdfRlVMTChpbnRmKSAoVlBMMDEx X1JJTkdfREVQVEgoaW50ZiwgaW4pID09IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLCBpbikp Cj4gKwo+ICsjZGVmaW5lIFZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpIChWUEwwMTFfUklOR19E RVBUSChpbnRmLCBvdXQpID09IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLG91dCkpCj4gKwo+ ICsjZGVmaW5lIFZQTDAxMV9MT0NLKGQsZmxhZ3MpIHNwaW5fbG9ja19pcnFzYXZlKCYoZCktPmFy Y2gudnBsMDExLmxvY2ssIGZsYWdzKQo+ICsjZGVmaW5lIFZQTDAxMV9VTkxPQ0soZCxmbGFncykg c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKPiAr Cj4gKyNkZWZpbmUgVkFMSURfQldfU0laRShzaXplKSAoIHNpemUgPT0gREFCVF9CWVRFIHx8IHNp emUgPT0gREFCVF9IQUxGX1dPUkQgfHwgc2l6ZSA9PSBEQUJUX1dPUkQgKQo+ICsjZGVmaW5lIFZB TElEX1dfU0laRShzaXplKSAgKCBzaXplID09IERBQlRfSEFMRl9XT1JEIHx8IHNpemUgPT0gREFC VF9XT1JEICkKPiArCj4gK3N0cnVjdCB1YXJ0ZHJfcmVnIHsKPiArICAgIHVpbnQ4X3QgZGF0YTsK PiArICAgIHVpbnQ4X3QgZXJyb3Jfc3RhdHVzOjQ7Cj4gKyAgICB1aW50OF90IHJlc2VydmVkMTo0 Owo+ICsgICAgdWludDE2X3QgcmVzZXJ2ZWQyOwo+ICsgICAgdWludDMyX3QgcmVzZXJ2ZWQzOwo+ ICt9Owo+ICsKPiArc3RydWN0IHZwbDAxMV9zIHsKPiArICAgIHZvaWQgKnJpbmdfYnVmOwo+ICsg ICAgc3RydWN0IHBhZ2VfaW5mbyAqcmluZ19wYWdlOwo+ICsgICAgdWludDMyX3QgICAgdWFydGZy OyAgICAgLyogZmxhZyByZWdpc3RlciAqLwo+ICsgICAgdWludDMyX3QgICAgdWFydGNyOyAgICAg LyogY29udHJvbCByZWdpc3RlciAqLwo+ICsgICAgdWludDMyX3QgICAgdWFydGltc2M7ICAgLyog aW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIqLwo+ICsgICAgdWludDMyX3QgICAgdWFydGljcjsgICAg LyogaW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyICovCj4gKyAgICB1aW50MzJfdCAgICB1YXJ0cmlz OyAgICAvKiByYXcgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciAqLwo+ICsgICAgdWludDMyX3Qg ICAgdWFydG1pczsgICAgLyogbWFza2VkIGludGVycnVwdCByZWdpc3RlciAqLwo+ICsgICAgc3Bp bmxvY2tfdCAgbG9jazsKPiArICAgIGJvb2wgICAgICAgIGludGlhbGl6ZWQ7IC8qIGZsYWcgd2hp Y2ggdGVsbHMgd2hldGhlciB2cGwwMTEgaXMgaW5pdGlhbGl6ZWQgKi8KPiArfTsKPiArCj4gK2lu dCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHhlbl9hcmNoX2Rv bWFpbmNvbmZpZyAqY29uZmlnKTsKPiAraW50IGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBk b21haW4gKmQpOwo+ICtpbnQgdnBsMDExX21hcF9ndWVzdF9wYWdlKHN0cnVjdCBkb21haW4gKmQp Owo+ICsKPiArI2VuZGlmCj4gLS0gCj4gMi43LjQKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=