From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 02/27 v8] xen/arm: vpl011: Add SBSA UART emulation in Xen Date: Mon, 28 Aug 2017 14:25:45 +0530 Message-ID: <1503910570-24427-3-git-send-email-bhupinder.thakur@linaro.org> References: <1503910570-24427-1-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dmFqQ-0004fW-9w for xen-devel@lists.xenproject.org; Mon, 28 Aug 2017 08:56:30 +0000 Received: by mail-pf0-f176.google.com with SMTP id c15so14532639pfm.2 for ; Mon, 28 Aug 2017 01:56:27 -0700 (PDT) In-Reply-To: <1503910570-24427-1-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: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Andre Przywara List-Id: xen-devel@lists.xenproject.org QWRkIGVtdWxhdGlvbiBjb2RlIHRvIGVtdWxhdGUgcmVhZC93cml0ZSBhY2Nlc3MgdG8gcGwwMTEg cmVnaXN0ZXJzCmFuZCBwbDAxMSBpbnRlcnJ1cHRzOgoKICAgIC0gRW11bGF0ZSBEUiByZWFkL3dy aXRlIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbS90byB0aGUgSU4KICAgICAgYW5kIE9VVCBy aW5nIGJ1ZmZlcnMgYW5kIHJhaXNpbmcgYW4gZXZlbnQgdG8gdGhlIGJhY2tlbmQgd2hlbgogICAg ICB0aGVyZSBpcyBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBhbiBp bnRlcnJ1cHQKICAgICAgdG8gdGhlIGd1ZXN0IHdoZW4gdGhlcmUgaXMgZGF0YSBpbiB0aGUgSU4g cmluZyBidWZmZXIKCiAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0byBpbnRlcnJ1 cHQgbWFuYWdlbWVudCBhbmQKICAgICAgZXNzZW50aWFsbHkgY29udHJvbCB3aGVuIGludGVycnVw dHMgYXJlIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QKClRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUg U0JTQSBHZW5lcmljIFVBUlQgd2hpY2ggaXMgYSBzdWJzZXQgb2YgQVJNClBMMDExIFVBUlQuCgpU aGUgU0JTQSBHZW5lcmljIFVBUlQgaXMgY292ZXJlZCBpbiBBcHBlbmRpeCBCIG9mCmh0dHBzOi8v c3RhdGljLmRvY3MuYXJtLmNvbS9kZW4wMDI5L2EvU2VydmVyX0Jhc2VfU3lzdGVtX0FyY2hpdGVj dHVyZV92M18xX0FSTV9ERU5fMDAyOUEucGRmCgpTaWduZWQtb2ZmLWJ5OiBCaHVwaW5kZXIgVGhh a3VyIDxiaHVwaW5kZXIudGhha3VyQGxpbmFyby5vcmc+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwg PGp1bGllbi5ncmFsbEBhcm0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgotLS0KQ0M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+CkNDOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJp eC5jb20+CkNDOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ0M6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ0M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ0M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KQ0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDQzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5j b20+CkNDOiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KCkNoYW5nZXMg c2luY2Ugdjc6Ci0gU2V0L2NsZWFyIHRoZSBUWCBpbnRlcnJ1cHQgc3RhdHVzIGJpdCBiYXNlZCBv biB3aGV0aGVyIHNwYWNlIGF2YWlsYWJsZSBmb3IgMTYgYnl0ZXMgaW4gdGhlIHJpbmcgYnVmZmVy Ci0gQ2xlYXIgdGhlIEJVU1kgc3RhdHVzIGJpdCBhcyBzb29uIGFzIHNwYWNlIGJlY2FvbWVzIGF2 YWlsYWJsZSBpbiB0aGUgcmluZyBidWZmZXIKCkNoYW5nZXMgc2luY2UgdjY6Ci0gUmVtb3ZlZCBm cmVlaW5nIG9mIG1taW9faGFuZGxlcnMgaW4gdnBsMDExX2RlaW5pdCgpIGFzIHRoZSBoYW5kbGVy cyBnZXQgZnJlZWQgd2hlbiBhIGRvbWFpbiBpcyAKICBkZXN0cm95ZWQuIFNpbmNlIHRoaXMgaXMg YSBtaW5vciBjaGFuZ2UsIEkgaGF2ZSBpbmNsdWRlZCB0aGUgcmV2aWV3ZWQtYnkgYW5kIGFja2Vk LWJ5IHRhZ3MuCgpDaGFuZ2VzIHNpbmNlIHY1OgotIHVzZSA8YXNtLz4gaW5zdGVhZCBvZiA8YXNt LWFybS8+IGZvciBpbmNsdWRpbmcgYXJtIHNwZWNpZmljIGhlYWRlciBmaWxlcy4KLSByZW5hbWVk IHNoYWRvd191YXJ0cmlzIHRvIHNoYWRvd191YXJ0bWlzIHRvIGluZGljYXRlIHRoYXQgaXQgaXMg bWFza2VkIGludGVycnVwdCBzdGF0dXMuCi0gdXNlIHNtcF9tYigpIGluc3RlYWQgb2Ygc21wX3Jt YigpIGluIHZwbDAxMV93cml0ZV9kYXRhKCkuCgpDaGFuZ2VzIHNpbmNlIHY0OgotIFJlbmFtZWQg dnBsMDExX3VwZGF0ZSgpIHRvIHZwbDAxMV91cGRhdGVfaW50ZXJydXB0X3N0YXR1cygpIGFuZCBh ZGRlZCBsb2dpYyB0byBhdm9pZAogIHJhaXNpbmcgc3B1cmlvdXMgaW50ZXJydXB0cy4KLSBVc2Vk IGJhcnJpZXIgaW5zdHJ1Y3Rpb25zIGNvcnJlY3RseSB3aGlsZSByZWFkaW5nL3dyaXRpbmcgZGF0 YSB0byB0aGUgcmluZyBidWZmZXIuCi0gUHJvcGVyIGxvY2sgdGFrZW4gYmVmb3JlIHJlYWRpbmcg cmluZyBidWZmZXIgaW5kaWNlcy4KCkNoYW5nZXMgc2luY2UgdjM6Ci0gTW92ZWQgdGhlIGNhbGwg dG8gREVGSU5FX1hFTl9GTEVYX1JJTkcgZnJvbSB2cGwwMTEuaCB0byBwdWJsaWMvY29uc29sZS5o LiBUaGlzIG1hY3JvIGRlZmluZXMKICBzdGFuZGFyZCBmdW5jdGlvbnMgdG8gb3BlcmF0ZSBvbiB0 aGUgcmluZyBidWZmZXIuCi0gTG9jayB0YWtlbiB3aGlsZSB1cGRhdGluZyB0aGUgaW50ZXJydXB0 IG1hc2sgYW5kIGNsZWFyIHJlZ2lzdGVycyBpbiBtbWlvX3dyaXRlLgotIFVzZSBnZm5fdCBpbnN0 ZWFkIG9mIHhlbl9wZm5fdC4KLSB2Z2ljX2ZyZWVfdmlycSBjYWxsZWQgaWYgdGhlcmUgaXMgYW55 IGVycm9yIGluIHZwbDAxMSBpbml0aWFsaXphdGlvbi4KLSBtbWlvIGhhbmRsZXJzIGZyZWVkIGlm IHRoZXJlIGlzIGFueSBlcnJvciBpbiB2cGwwMTEgaW5pdGlhbGl6YXRpb24uCi0gUmVtb3ZlZCB2 cGwwMTEtPmluaXRpYWxpemVkIGZsYWcgdXNhZ2UgYXMgdGhlIHNhbWUgY2hlY2sgY291bGQgYmUg ZG9uZSAKICB1c2luZyB2cGwwMTEtPnJpbmctcmVmLgotIFVzZWQgcmV0dXJuIGluc3RlYWQgb2Yg YnJlYWsgaW4gdGhlIHN3aXRjaCBoYW5kbGluZyBvZiBlbXVsYXRpb24gb2YgZGlmZmVyZW50IHBs MDExIHJlZ2lzdGVycy4KLSBSZW5hbWVkIHZwbDAxMV91cGRhdGVfc3BpKCkgdG8gdnBsMDExX3Vw ZGF0ZSgpLgoKQ2hhbmdlcyBzaW5jZSB2MjoKLSBVc2UgZ2VuZXJpYyB2cmVnX3JlZyogZm9yIHJl YWQvd3JpdGUgb2YgcmVnaXN0ZXJzIGVtdWxhdGluZyBwbDAxMS4KLSBVc2UgZ2VuZXJpYyByaW5n IGJ1ZmZlciBmdW5jdGlvbnMgZGVmaW5lZCB1c2luZyBERUZJTkVfWEVOX0ZMRVhfUklORy4KLSBS ZW5hbWVkIHRoZSBTUEkgaW5qZWN0aW9uIGZ1bmN0aW9uIHRvIHZwbDAxMV91cGRhdGVfc3BpKCkg dG8gcmVmbGVjdCBsZXZlbCAKICB0cmlnZ2VyZWQgbmF0dXJlIG9mIHBsMDExIGludGVycnVwdHMu Ci0gVGhlIHBsMDExIHJlZ2lzdGVyIGFjY2VzcyBhZGRyZXNzIHNob3VsZCBhbHdheXMgYmUgdGhl IGJhc2UgYWRkcmVzcyBvZiB0aGUKICBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIGFzIHBlciBzZWN0 aW9uIEIgb2YgdGhlIFNCU0EgZG9jdW1lbnQuIEZvciB0aGlzIHJlYXNvbiwKICB0aGUgcmVnaXN0 ZXIgcmFuZ2UgYWRkcmVzcyBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuCgpDaGFuZ2VzIHNpbmNlIHYx OgotIFJlbW92ZWQgdGhlIG9wdGltaXp0aW9uIHJlbGF0ZWQgdG8gc2VuZGlpbmcgZXZlbnRzIHRv IHhlbmNvbnNvbGUgCi0gVXNlIGxvY2FsIHZhcmlhYmxlcyBhcyByaW5nIGJ1ZmZlciBpbmRpY2Vz IHdoaWxlIHVzaW5nIHRoZSByaW5nIGJ1ZmZlcgoKIHhlbi9hcmNoL2FybS9LY29uZmlnICAgICAg ICAgICAgIHwgICA3ICsKIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAxICsK IHhlbi9hcmNoL2FybS92cGwwMTEuYyAgICAgICAgICAgIHwgNDU0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCAgICAg fCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmggfCAgIDIgKwogeGVuL2lu Y2x1ZGUvYXNtLWFybS92cGwwMTEuaCAgICAgfCAgNzIgKysrKysrKwogeGVuL2luY2x1ZGUvcHVi bGljL2FyY2gtYXJtLmggICAgfCAgIDYgKwogNyBmaWxlcyBjaGFuZ2VkLCA1NDggaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS92cGwwMTEuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vS2NvbmZpZyBiL3hlbi9hcmNoL2FybS9LY29uZmlnCmluZGV4IGQ0NmI5OGMuLmY1 ODAxOWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9LY29uZmlnCisrKyBiL3hlbi9hcmNoL2Fy bS9LY29uZmlnCkBAIC01MCw2ICs1MCwxMyBAQCBjb25maWcgSEFTX0lUUwogICAgICAgICBwcm9t cHQgIkdJQ3YzIElUUyBNU0kgY29udHJvbGxlciBzdXBwb3J0IiBpZiBFWFBFUlQgPSAieSIKICAg ICAgICAgZGVwZW5kcyBvbiBIQVNfR0lDVjMKIAorY29uZmlnIFNCU0FfVlVBUlRfQ09OU09MRQor CWJvb2wgIkVtdWxhdGVkIFNCU0EgVUFSVCBjb25zb2xlIHN1cHBvcnQiCisJZGVmYXVsdCB5CisJ LS0taGVscC0tLQorCSAgQWxsb3dzIGEgZ3Vlc3QgdG8gdXNlIFNCU0EgR2VuZXJpYyBVQVJUIGFz IGEgY29uc29sZS4gVGhlCisJICBTQlNBIEdlbmVyaWMgVUFSVCBpbXBsZW1lbnRzIGEgc3Vic2V0 IG9mIEFSTSBQTDAxMSBVQVJULgorCiBlbmRtZW51CiAKIG1lbnUgIkFSTSBlcnJhdGEgd29ya2Fy b3VuZCB2aWEgdGhlIGFsdGVybmF0aXZlIGZyYW1ld29yayIKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCAyODJkMmMyLi4zYTM4 MWVlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJt L01ha2VmaWxlCkBAIC01MSw2ICs1MSw3IEBAIG9iai0kKENPTkZJR19IQVNfR0lDVjMpICs9IHZn aWMtdjMubwogb2JqLSQoQ09ORklHX0hBU19JVFMpICs9IHZnaWMtdjMtaXRzLm8KIG9iai15ICs9 IHZtX2V2ZW50Lm8KIG9iai15ICs9IHZ0aW1lci5vCitvYmotJChDT05GSUdfU0JTQV9WVUFSVF9D T05TT0xFKSArPSB2cGwwMTEubwogb2JqLXkgKz0gdnBzY2kubwogb2JqLXkgKz0gdnVhcnQubwog CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBsMDEx LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZkOWNiZQotLS0gL2Rldi9u dWxsCisrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwpAQCAtMCwwICsxLDQ1NCBAQAorLyoKKyAq IGFyY2gvYXJtL3ZwbDAxMS5jCisgKgorICogVmlydHVhbCBQTDAxMSBVQVJUCisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4K KyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+Cisj aW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVu L21tLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8cHVibGljL2RvbWN0bC5o PgorI2luY2x1ZGUgPHB1YmxpYy9pby9jb25zb2xlLmg+CisjaW5jbHVkZSA8YXNtL3BsMDExLXVh cnQuaD4KKyNpbmNsdWRlIDxhc20vdmdpYy1lbXVsLmg+CisjaW5jbHVkZSA8YXNtL3ZwbDAxMS5o PgorCisvKgorICogU2luY2UgcGwwMTEgcmVnaXN0ZXJzIGFyZSAzMi1iaXQgcmVnaXN0ZXJzLCBh bGwgcmVnaXN0ZXJzCisgKiBhcmUgaGFuZGxlZCBzaW1pbGFybHkgYWxsb3dpbmcgOC1iaXQsIDE2 LWJpdCBhbmQgMzItYml0CisgKiBhY2Nlc3NlcyBleGNlcHQgNjQtYml0IGFjY2Vzcy4KKyAqLwor c3RhdGljIGJvb2wgdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhzdHJ1Y3QgaHNyX2RhYnQgZGFi dCkKK3sKKyAgICByZXR1cm4gKGRhYnQuc2l6ZSAhPSBEQUJUX0RPVUJMRV9XT1JEKTsKK30KKwor c3RhdGljIHZvaWQgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKHN0cnVjdCBkb21haW4g KmQpCit7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworICAg IHVpbnQzMl90IHVhcnRtaXMgPSB2cGwwMTEtPnVhcnRyaXMgJiB2cGwwMTEtPnVhcnRpbXNjOwor CisgICAgLyoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCB3 aXRoIHRoZSBsb2NrIHRha2VuLgorICAgICAqLworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgm dnBsMDExLT5sb2NrKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86IFBMMDExIGludGVycnVwdHMg YXJlIGxldmVsIHRyaWdnZXJlZCB3aGljaCBtZWFucworICAgICAqIHRoYXQgaW50ZXJydXB0IG5l ZWRzIHRvIGJlIHNldC9jbGVhciBpbnN0ZWFkIG9mIGJlaW5nCisgICAgICogaW5qZWN0ZWQuIEhv d2V2ZXIsIGN1cnJlbnRseSB2R0lDIGRvZXMgbm90IGhhbmRsZSBsZXZlbAorICAgICAqIHRyaWdn ZXJlZCBpbnRlcnJ1cHRzIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlCisgICAg ICogcmV2aXNpdGVkIG9uY2UgdkdJQyBzdGFydHMgaGFuZGxpbmcgbGV2ZWwgdHJpZ2dlcmVkCisg ICAgICogaW50ZXJydXB0cy4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogUmFpc2UgYW4gaW50 ZXJydXB0IG9ubHkgaWYgYW55IGFkZGl0aW9uYWwgaW50ZXJydXB0CisgICAgICogc3RhdHVzIGJp dCBoYXMgYmVlbiBzZXQgc2luY2UgdGhlIGxhc3QgdGltZS4KKyAgICAgKi8KKyAgICBpZiAoIHVh cnRtaXMgJiB+dnBsMDExLT5zaGFkb3dfdWFydG1pcyApCisgICAgICAgIHZnaWNfdmNwdV9pbmpl Y3Rfc3BpKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOworCisgICAgdnBsMDExLT5zaGFkb3dfdWFydG1p cyA9IHVhcnRtaXM7Cit9CisKK3N0YXRpYyB1aW50OF90IHZwbDAxMV9yZWFkX2RhdGEoc3RydWN0 IGRvbWFpbiAqZCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHVpbnQ4X3QgZGF0 YSA9IDA7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworICAg IHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IHZwbDAxMS0+cmluZ19idWY7CisgICAg WEVOQ09OU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kOworCisgICAgVlBMMDExX0xPQ0soZCwg ZmxhZ3MpOworCisgICAgaW5fY29ucyA9IGludGYtPmluX2NvbnM7CisgICAgaW5fcHJvZCA9IGlu dGYtPmluX3Byb2Q7CisKKyAgICBzbXBfcm1iKCk7CisKKyAgICAvKgorICAgICAqIEl0IGlzIGV4 cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlciB3aGVuIHRo aXMKKyAgICAgKiBmdW5jdGlvbiBpcyBjYWxsZWQgc2luY2UgdGhlIGd1ZXN0IGlzIGV4cGVjdGVk IHRvIHJlYWQgdGhlIGRhdGEgcmVnaXN0ZXIKKyAgICAgKiBvbmx5IGlmIHRoZSBUWEZFIGZsYWcg aXMgbm90IHNldC4KKyAgICAgKiBJZiB0aGUgZ3Vlc3Qgc3RpbGwgZG9lcyByZWFkIHdoZW4gVFhG RSBiaXQgaXMgc2V0IHRoZW4gMCB3aWxsIGJlIHJldHVybmVkLgorICAgICAqLworICAgIGlmICgg eGVuY29uc19xdWV1ZWQoaW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPiAwICkK KyAgICB7CisgICAgICAgIGRhdGEgPSBpbnRmLT5pblt4ZW5jb25zX21hc2soaW5fY29ucywgc2l6 ZW9mKGludGYtPmluKSldOworICAgICAgICBpbl9jb25zICs9IDE7CisgICAgICAgIHNtcF9tYigp OworICAgICAgICBpbnRmLT5pbl9jb25zID0gaW5fY29uczsKKyAgICB9CisgICAgZWxzZQorICAg ICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVuZXhwZWN0ZWQgSU4gcmluZyBidWZm ZXIgZW1wdHlcbiIpOworCisgICAgaWYgKCB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLCBpbl9jb25z LCBzaXplb2YoaW50Zi0+aW4pKSA9PSAwICkKKyAgICB7CisgICAgICAgIHZwbDAxMS0+dWFydGZy IHw9IFJYRkU7CisgICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+UlhJOworICAgIH0KKworICAg IHZwbDAxMS0+dWFydGZyICY9IH5SWEZGOworCisgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRf c3RhdHVzKGQpOworCisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisKKyAgICAvKgorICAg ICAqIFNlbmQgYW4gZXZlbnQgdG8gY29uc29sZSBiYWNrZW5kIHRvIGluZGljYXRlIHRoYXQgZGF0 YSBoYXMgYmVlbgorICAgICAqIHJlYWQgZnJvbSB0aGUgSU4gcmluZyBidWZmZXIuCisgICAgICov CisgICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7CisK KyAgICByZXR1cm4gZGF0YTsKK30KKworc3RhdGljIHZvaWQgdnBsMDExX3dyaXRlX2RhdGEoc3Ry dWN0IGRvbWFpbiAqZCwgdWludDhfdCBkYXRhKQoreworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7 CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworICAgIHN0cnVj dCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IHZwbDAxMS0+cmluZ19idWY7CisgICAgWEVOQ09O U19SSU5HX0lEWCBvdXRfY29ucywgb3V0X3Byb2Q7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFn cyk7CisKKyAgICBvdXRfY29ucyA9IGludGYtPm91dF9jb25zOworICAgIG91dF9wcm9kID0gaW50 Zi0+b3V0X3Byb2Q7CisKKyAgICBzbXBfbWIoKTsKKworICAgIC8qCisgICAgICogSXQgaXMgZXhw ZWN0ZWQgdGhhdCB0aGUgcmluZyBpcyBub3QgZnVsbCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkCisgICAgICogYXMgdGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRvIHdyaXRlIHRvIHRoZSBkYXRh IHJlZ2lzdGVyIG9ubHkgd2hlbiB0aGUKKyAgICAgKiBUWEZGIGZsYWcgaXMgbm90IHNldC4KKyAg ICAgKiBJbiBjYXNlIHRoZSBndWVzdCBkb2VzIHdyaXRlIGV2ZW4gd2hlbiB0aGUgVFhGRiBmbGFn IGlzIHNldCB0aGVuIHRoZQorICAgICAqIGRhdGEgd2lsbCBiZSBzaWxlbnRseSBkcm9wcGVkLgor ICAgICAqLworICAgIGlmICggeGVuY29uc19xdWV1ZWQob3V0X3Byb2QsIG91dF9jb25zLCBzaXpl b2YoaW50Zi0+b3V0KSkgIT0KKyAgICAgICAgIHNpemVvZiAoaW50Zi0+b3V0KSApCisgICAgewor ICAgICAgICBpbnRmLT5vdXRbeGVuY29uc19tYXNrKG91dF9wcm9kLCBzaXplb2YoaW50Zi0+b3V0 KSldID0gZGF0YTsKKyAgICAgICAgb3V0X3Byb2QgKz0gMTsKKyAgICAgICAgc21wX3dtYigpOwor ICAgICAgICBpbnRmLT5vdXRfcHJvZCA9IG91dF9wcm9kOworICAgIH0KKyAgICBlbHNlCisgICAg ICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogVW5leHBlY3RlZCBPVVQgcmluZyBidWZm ZXIgZnVsbFxuIik7CisKKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKG91dF9wcm9kLCBvdXRfY29u cywgc2l6ZW9mKGludGYtPm91dCkpID09CisgICAgICAgICBzaXplb2YgKGludGYtPm91dCkgKQor ICAgIHsKKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhGRjsKKyAgICAgICAgdnBsMDExLT51 YXJ0cmlzICY9IH5UWEk7CisgICAgfQorCisgICAgdnBsMDExLT51YXJ0ZnIgfD0gQlVTWTsKKwor ICAgIHZwbDAxMS0+dWFydGZyICY9IH5UWEZFOworCisgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1 cHRfc3RhdHVzKGQpOworCisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisKKyAgICAvKgor ICAgICAqIFNlbmQgYW4gZXZlbnQgdG8gY29uc29sZSBiYWNrZW5kIHRvIGluZGljYXRlIHRoYXQg dGhlcmUgaXMKKyAgICAgKiBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIuCisgICAgICovCisg ICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7Cit9CisK K3N0YXRpYyBpbnQgdnBsMDExX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtbWlvX2luZm9fdCAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZWdpc3Rlcl90ICpyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KnByaXYpCit7CisgICAgc3RydWN0IGhzcl9kYWJ0IGRhYnQgPSBpbmZvLT5kYWJ0OworICAgIHVp bnQzMl90IHZwbDAxMV9yZWcgPSAodWludDMyX3QpKGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JB U0UpOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZ2LT5kb21haW4tPmFyY2gudnBsMDEx OworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKKworICAgIHN3aXRjaCAoIHZwbDAxMV9yZWcgKQorICAgIHsKKyAgICBjYXNlIERSOgor ICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRf d2lkdGg7CisKKyAgICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0 YShkKSwgaW5mbyk7CisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBSU1I6CisgICAgICAg IGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsK KworICAgICAgICAvKiBJdCBhbHdheXMgcmV0dXJucyAwIGFzIHRoZXJlIGFyZSBubyBwaHlzaWNh bCBlcnJvcnMuICovCisgICAgICAgICpyID0gMDsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBj YXNlIEZSOgorICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkg Z290byBiYWRfd2lkdGg7CisKKyAgICAgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworICAgICAg ICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRmciwgaW5mbyk7CisgICAgICAg IFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2Ug UklTOgorICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290 byBiYWRfd2lkdGg7CisKKyAgICAgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworICAgICAgICAq ciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRyaXMsIGluZm8pOworICAgICAgICBW UEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIE1J UzoKKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8g YmFkX3dpZHRoOworCisgICAgICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgKnIg PSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExLT51YXJ0cmlzICYgdnBsMDExLT51YXJ0aW1zYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyk7CisgICAgICAgIFZQTDAxMV9V TkxPQ0soZCwgZmxhZ3MpOworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgSU1TQzoKKyAg ICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dp ZHRoOworCisgICAgICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgKnIgPSB2cmVn X3JlZzMyX2V4dHJhY3QodnBsMDExLT51YXJ0aW1zYywgaW5mbyk7CisgICAgICAgIFZQTDAxMV9V TkxPQ0soZCwgZmxhZ3MpOworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgSUNSOgorICAg ICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lk dGg7CisKKyAgICAgICAgLyogT25seSB3cml0ZSBpcyB2YWxpZC4gKi8KKyAgICAgICAgcmV0dXJu IDA7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6 IHVuaGFuZGxlZCByZWFkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCisgICAgICAgICAgICAgICAgZGFi dC5yZWcsIHZwbDAxMV9yZWcpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1 cm4gMTsKKworYmFkX3dpZHRoOgorICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogYmFk IHJlYWQgd2lkdGggJWQgciVkIG9mZnNldCAlIzA4eFxuIiwKKyAgICAgICAgICAgIGRhYnQuc2l6 ZSwgZGFidC5yZWcsIHZwbDAxMV9yZWcpOworICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91cygp OworICAgIHJldHVybiAwOworCit9CisKK3N0YXRpYyBpbnQgdnBsMDExX21taW9fd3JpdGUoc3Ry dWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1taW9faW5mb190ICpp bmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90IHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnByaXYpCit7CisgICAgc3RydWN0IGhzcl9kYWJ0 IGRhYnQgPSBpbmZvLT5kYWJ0OworICAgIHVpbnQzMl90IHZwbDAxMV9yZWcgPSAodWludDMyX3Qp KGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAx MSA9ICZ2LT5kb21haW4tPmFyY2gudnBsMDExOworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5k b21haW47CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIHN3aXRjaCAoIHZwbDAxMV9y ZWcgKQorICAgIHsKKyAgICBjYXNlIERSOgorICAgIHsKKyAgICAgICAgdWludDMyX3QgZGF0YSA9 IDA7CisKKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdv dG8gYmFkX3dpZHRoOworCisgICAgICAgIHZyZWdfcmVnMzJfdXBkYXRlKCZkYXRhLCByLCBpbmZv KTsKKyAgICAgICAgZGF0YSAmPSAweEZGOworICAgICAgICB2cGwwMTFfd3JpdGVfZGF0YSh2LT5k b21haW4sIGRhdGEpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBjYXNlIFJTUjog LyogTm90aGluZyB0byBjbGVhci4gKi8KKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNr X2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIHJldHVybiAxOworCisg ICAgY2FzZSBGUjoKKyAgICBjYXNlIFJJUzoKKyAgICBjYXNlIE1JUzoKKyAgICAgICAgZ290byB3 cml0ZV9pZ25vcmU7CisKKyAgICBjYXNlIElNU0M6CisgICAgICAgIGlmICggIXZwbDAxMV9yZWcz Ml9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICBWUEwwMTFf TE9DSyhkLCBmbGFncyk7CisgICAgICAgIHZyZWdfcmVnMzJfdXBkYXRlKCZ2cGwwMTEtPnVhcnRp bXNjLCByLCBpbmZvKTsKKyAgICAgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKHYt PmRvbWFpbik7CisgICAgICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworICAgICAgICByZXR1 cm4gMTsKKworICAgIGNhc2UgSUNSOgorICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tf YWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgVlBMMDExX0xPQ0soZCwg ZmxhZ3MpOworICAgICAgICB2cmVnX3JlZzMyX2NsZWFyYml0cygmdnBsMDExLT51YXJ0cmlzLCBy LCBpbmZvKTsKKyAgICAgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKGQpOworICAg ICAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBk ZWZhdWx0OgorICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IHVuaGFuZGxlZCB3 cml0ZSByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgICAgIGRhYnQucmVnLCB2cGww MTFfcmVnKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCit3cml0ZV9pZ25vcmU6CisgICAg cmV0dXJuIDE7CisKK2JhZF93aWR0aDoKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6 IGJhZCB3cml0ZSB3aWR0aCAlZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgZGFi dC5zaXplLCBkYWJ0LnJlZywgdnBsMDExX3JlZyk7CisgICAgZG9tYWluX2NyYXNoX3N5bmNocm9u b3VzKCk7CisgICAgcmV0dXJuIDA7CisKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtbWlvX2hh bmRsZXJfb3BzIHZwbDAxMV9tbWlvX2hhbmRsZXIgPSB7CisgICAgLnJlYWQgPSB2cGwwMTFfbW1p b19yZWFkLAorICAgIC53cml0ZSA9IHZwbDAxMV9tbWlvX3dyaXRlLAorfTsKKworc3RhdGljIHZv aWQgdnBsMDExX2RhdGFfYXZhaWwoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICB1bnNpZ25lZCBs b25nIGZsYWdzOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsK KyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSB2cGwwMTEtPnJpbmdfYnVmOwor ICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZCwgb3V0X2NvbnMsIG91dF9wcm9k OworICAgIFhFTkNPTlNfUklOR19JRFggaW5fcmluZ19xc2l6ZSwgb3V0X3JpbmdfcXNpemU7CisK KyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisKKyAgICBpbl9jb25zID0gaW50Zi0+aW5fY29u czsKKyAgICBpbl9wcm9kID0gaW50Zi0+aW5fcHJvZDsKKyAgICBvdXRfY29ucyA9IGludGYtPm91 dF9jb25zOworICAgIG91dF9wcm9kID0gaW50Zi0+b3V0X3Byb2Q7CisKKyAgICBzbXBfcm1iKCk7 CisKKyAgICBpbl9yaW5nX3FzaXplID0geGVuY29uc19xdWV1ZWQoaW5fcHJvZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29ucywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKGludGYtPmluKSk7CisKKyAgICBvdXRfcmluZ19xc2l6ZSA9 IHhlbmNvbnNfcXVldWVkKG91dF9wcm9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0X2NvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YoaW50Zi0+b3V0KSk7CisKKyAgICAvKiBVcGRhdGUgdGhlIHVhcnQgcnggc3RhdGUgaWYgdGhl IGJ1ZmZlciBpcyBub3QgZW1wdHkuICovCisgICAgaWYgKCBpbl9yaW5nX3FzaXplICE9IDAgKQor ICAgIHsKKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gflJYRkU7CisgICAgICAgIGlmICggaW5f cmluZ19xc2l6ZSA9PSBzaXplb2YoaW50Zi0+aW4pICkKKyAgICAgICAgICAgIHZwbDAxMS0+dWFy dGZyIHw9IFJYRkY7CisgICAgICAgIHZwbDAxMS0+dWFydHJpcyB8PSBSWEk7CisgICAgfQorCisg ICAgLyogVXBkYXRlIHRoZSB1YXJ0IHR4IHN0YXRlIGlmIHRoZSBidWZmZXIgaXMgbm90IGZ1bGwu ICovCisgICAgaWYgKCBvdXRfcmluZ19xc2l6ZSAhPSBzaXplb2YoaW50Zi0+b3V0KSApCisgICAg eworICAgICAgICB2cGwwMTEtPnVhcnRmciAmPSB+VFhGRjsKKyAgICAgICAgdnBsMDExLT51YXJ0 cmlzIHw9IFRYSTsKKyAgICAgICAgaWYgKCBvdXRfcmluZ19xc2l6ZSA9PSAwICkKKyAgICAgICAg eworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gfkJVU1k7CisgICAgICAgICAgICB2cGww MTEtPnVhcnRmciB8PSBUWEZFOworICAgICAgICB9CisgICAgfQorCisgICAgdnBsMDExX3VwZGF0 ZV9pbnRlcnJ1cHRfc3RhdHVzKGQpOworCisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7Cit9 CisKK3N0YXRpYyB2b2lkIHZwbDAxMV9ub3RpZmljYXRpb24oc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGludCBwb3J0KQoreworICAgIHZwbDAxMV9kYXRhX2F2YWlsKHYtPmRvbWFpbik7Cit9CisK K2ludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZwbDAxMV9p bml0X2luZm8gKmluZm8pCit7CisgICAgaW50IHJjOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAx MSA9ICZkLT5hcmNoLnZwbDAxMTsKKworICAgIGlmICggdnBsMDExLT5yaW5nX2J1ZiApCisgICAg ICAgIHJldHVybiAtRUlOVkFMOworCisgICAgLyogTWFwIHRoZSBndWVzdCBQRk4gdG8gWGVuIGFk ZHJlc3Mgc3BhY2UuICovCisgICAgcmMgPSAgcHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChpbmZvLT5nZm4pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPnJpbmdfcGFnZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nX2J1Zik7CisgICAgaWYgKCBy YyA8IDAgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gdmdpY19yZXNlcnZlX3ZpcnEo ZCwgR1VFU1RfVlBMMDExX1NQSSk7CisgICAgaWYgKCAhcmMgKQorICAgIHsKKyAgICAgICAgcmMg PSAtRUlOVkFMOworICAgICAgICBnb3RvIG91dDE7CisgICAgfQorCisgICAgcmMgPSBhbGxvY191 bmJvdW5kX3hlbl9ldmVudF9jaGFubmVsKGQsIDAsIGluZm8tPmNvbnNvbGVfZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAxMV9ub3RpZmljYXRpb24p OworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgZ290byBvdXQyOworCisgICAgdnBsMDExLT5l dnRjaG4gPSBpbmZvLT5ldnRjaG4gPSByYzsKKworICAgIHNwaW5fbG9ja19pbml0KCZ2cGwwMTEt PmxvY2spOworCisgICAgcmVnaXN0ZXJfbW1pb19oYW5kbGVyKGQsICZ2cGwwMTFfbW1pb19oYW5k bGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHVUVTVF9QTDAxMV9CQVNFLCBHVUVTVF9Q TDAxMV9TSVpFLCBOVUxMKTsKKworICAgIHJldHVybiAwOworCitvdXQyOgorICAgIHZnaWNfZnJl ZV92aXJxKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOworCitvdXQxOgorICAgIGRlc3Ryb3lfcmluZ19m b3JfaGVscGVyKCZ2cGwwMTEtPnJpbmdfYnVmLCB2cGwwMTEtPnJpbmdfcGFnZSk7CisKK291dDoK KyAgICByZXR1cm4gcmM7Cit9CisKK3ZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRv bWFpbiAqZCkKK3sKKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7 CisKKyAgICBpZiAoICF2cGwwMTEtPnJpbmdfYnVmICkKKyAgICAgICAgcmV0dXJuOworCisgICAg ZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7CisgICAgZGVzdHJveV9y aW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+cmluZ19idWYsIHZwbDAxMS0+cmluZ19wYWdlKTsKK30K KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAq IEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKaW5kZXggOGRmYzFkMS4uMWExMTQ1ZCAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20t YXJtL2RvbWFpbi5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8cHVibGljL2h2bS9wYXJh bXMuaD4KICNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+CiAjaW5jbHVkZSA8eGVuL3JidHJlZS5oPgor I2luY2x1ZGUgPGFzbS1hcm0vdnBsMDExLmg+CiAKIHN0cnVjdCBodm1fZG9tYWluCiB7CkBAIC0x NDUsNiArMTQ2LDExIEBAIHN0cnVjdCBhcmNoX2RvbWFpbgogICAgIHN0cnVjdCB7CiAgICAgICAg IHVpbnQ4X3QgcHJpdmlsZWdlZF9jYWxsX2VuYWJsZWQgOiAxOwogICAgIH0gbW9uaXRvcjsKKwor I2lmZGVmIENPTkZJR19TQlNBX1ZVQVJUX0NPTlNPTEUKKyAgICBzdHJ1Y3QgdnBsMDExIHZwbDAx MTsKKyNlbmRpZgorCiB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwogCiBzdHJ1Y3QgYXJjaF92Y3B1 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVhcnQuaCBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCmluZGV4IDEyM2Y0NzcuLjU3ZTllYzcgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vcGwwMTEtdWFydC5oCkBAIC00OSw2ICs0OSw4IEBACiAvKiBGUiBiaXRzICovCiAjZGVm aW5lIFRYRkUgICAoMTw8NykgLyogVFggRklGTyBlbXB0eSAqLwogI2RlZmluZSBSWEZFICAgKDE8 PDQpIC8qIFJYIEZJRk8gZW1wdHkgKi8KKyNkZWZpbmUgVFhGRiAgICgxPDw1KSAvKiBUWCBGSUZP IGZ1bGwgKi8KKyNkZWZpbmUgUlhGRiAgICgxPDw2KSAvKiBSWCBGSUZPIGZ1bGwgKi8KICNkZWZp bmUgQlVTWSAgICgxPDwzKSAvKiBUcmFuc21pdCBpcyBub3QgY29tcGxldGUgKi8KIAogLyogTENS X0ggYml0cyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMWI1ODNkYQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBs MDExLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIGluY2x1ZGUveGVuL3ZwbDAxMS5oCisgKgor ICogVmlydHVhbCBQTDAxMSBVQVJUCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Us CisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAq IHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorICovCisKKyNpZm5kZWYgX1ZQTDAxMV9IXworI2RlZmluZSBfVlBMMDExX0hfCisKKyNpbmNs dWRlIDxwdWJsaWMvZG9tY3RsLmg+CisjaW5jbHVkZSA8cHVibGljL2lvL3JpbmcuaD4KKyNpbmNs dWRlIDxhc20vdnJlZy5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorCisvKiBoZWxwZXIgbWFjcm9z ICovCisjZGVmaW5lIFZQTDAxMV9MT0NLKGQsZmxhZ3MpIHNwaW5fbG9ja19pcnFzYXZlKCYoZCkt PmFyY2gudnBsMDExLmxvY2ssIGZsYWdzKQorI2RlZmluZSBWUEwwMTFfVU5MT0NLKGQsZmxhZ3Mp IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJihkKS0+YXJjaC52cGwwMTEubG9jaywgZmxhZ3MpCisK K3N0cnVjdCB2cGwwMTEgeworICAgIHZvaWQgKnJpbmdfYnVmOworICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnJpbmdfcGFnZTsKKyAgICB1aW50MzJfdCAgICB1YXJ0ZnI7ICAgICAgICAgLyogRmxhZyBy ZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAgIHVhcnRjcjsgICAgICAgICAvKiBDb250cm9sIHJl Z2lzdGVyICovCisgICAgdWludDMyX3QgICAgdWFydGltc2M7ICAgICAgIC8qIEludGVycnVwdCBt YXNrIHJlZ2lzdGVyKi8KKyAgICB1aW50MzJfdCAgICB1YXJ0aWNyOyAgICAgICAgLyogSW50ZXJy dXB0IGNsZWFyIHJlZ2lzdGVyICovCisgICAgdWludDMyX3QgICAgdWFydHJpczsgICAgICAgIC8q IFJhdyBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovCisgICAgdWludDMyX3QgICAgc2hhZG93 X3VhcnRtaXM7IC8qIHNoYWRvdyBtYXNrZWQgaW50ZXJydXB0IHJlZ2lzdGVyICovCisgICAgc3Bp bmxvY2tfdCAgbG9jazsKKyAgICBldnRjaG5fcG9ydF90IGV2dGNobjsKK307CisKK3N0cnVjdCB2 cGwwMTFfaW5pdF9pbmZvIHsKKyAgICBkb21pZF90IGNvbnNvbGVfZG9taWQ7CisgICAgZ2ZuX3Qg Z2ZuOworICAgIGV2dGNobl9wb3J0X3QgZXZ0Y2huOworfTsKKworI2lmZGVmIENPTkZJR19TQlNB X1ZVQVJUX0NPTlNPTEUKK2ludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwK KyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pOwor dm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKKyNlbHNlCitzdGF0 aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAq aW5mbykKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRv bWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpIHsgfQorI2VuZGlmCisjZW5kaWYg IC8qIF9WUEwwMTFfSF8gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQt dGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVi bGljL2FyY2gtYXJtLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaAppbmRleCBiZDk3 NGZiLi44NWFiNjY1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaAor KysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaApAQCAtNDEwLDYgKzQxMCwxMCBAQCB0 eXBlZGVmIHVpbnQ2NF90IHhlbl9jYWxsYmFja190OwogI2RlZmluZSBHVUVTVF9BQ1BJX0JBU0Ug MHgyMDAwMDAwMFVMTAogI2RlZmluZSBHVUVTVF9BQ1BJX1NJWkUgMHgwMjAwMDAwMFVMTAogCisv KiBQTDAxMSBtYXBwaW5ncyAqLworI2RlZmluZSBHVUVTVF9QTDAxMV9CQVNFICAgIDB4MjIwMDAw MDBVTEwKKyNkZWZpbmUgR1VFU1RfUEwwMTFfU0laRSAgICAweDAwMDAxMDAwVUxMCisKIC8qCiAg KiAxNk1CID09IDQwOTYgcGFnZXMgcmVzZXJ2ZWQgZm9yIGd1ZXN0IHRvIHVzZSBhcyBhIHJlZ2lv biB0byBtYXAgaXRzCiAgKiBncmFudCB0YWJsZSBpbi4KQEAgLTQ0NCw2ICs0NDgsOCBAQCB0eXBl ZGVmIHVpbnQ2NF90IHhlbl9jYWxsYmFja190OwogI2RlZmluZSBHVUVTVF9USU1FUl9QSFlTX05T X1BQSSAzMAogI2RlZmluZSBHVUVTVF9FVlRDSE5fUFBJICAgICAgICAzMQogCisjZGVmaW5lIEdV RVNUX1ZQTDAxMV9TUEkgICAgICAgIDMyCisKIC8qIFBTQ0kgZnVuY3Rpb25zICovCiAjZGVmaW5l IFBTQ0lfY3B1X3N1c3BlbmQgMAogI2RlZmluZSBQU0NJX2NwdV9vZmYgICAgIDEKLS0gCjIuNy40 CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==