From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 03/14 v4] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Tue, 6 Jun 2017 15:32:42 +0530 Message-ID: <1496743362-15580-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 1dIBK8-0003ZA-1a for xen-devel@lists.xenproject.org; Tue, 06 Jun 2017 10:02:52 +0000 Received: by mail-pg0-f44.google.com with SMTP id v18so23411380pgb.1 for ; Tue, 06 Jun 2017 03:02:49 -0700 (PDT) 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: Wei Liu , Julien Grall , Stefano Stabellini , Ian Jackson List-Id: xen-devel@lists.xenproject.org QWRkIGVtdWxhdGlvbiBjb2RlIHRvIGVtdWxhdGUgcmVhZC93cml0ZSBhY2Nlc3MgdG8gcGwwMTEg cmVnaXN0ZXJzCmFuZCBwbDAxMSBpbnRlcnJ1cHRzOgoKICAgIC0gRW11bGF0ZSBEUiByZWFkL3dy aXRlIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbS90byB0aGUgSU4KICAgICAgYW5kIE9VVCBy aW5nIGJ1ZmZlcnMgYW5kIHJhaXNpbmcgYW4gZXZlbnQgdG8gdGhlIGJhY2tlbmQgd2hlbgogICAg ICB0aGVyZSBpcyBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBhbiBp bnRlcnJ1cHQKICAgICAgdG8gdGhlIGd1ZXN0IHdoZW4gdGhlcmUgaXMgZGF0YSBpbiB0aGUgSU4g cmluZyBidWZmZXIKCiAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0byBpbnRlcnJ1 cHQgbWFuYWdlbWVudCBhbmQKICAgICAgZXNzZW50aWFsbHkgY29udHJvbCB3aGVuIGludGVycnVw dHMgYXJlIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QKClRoZSBTQlNBIGNvbXBsaWFudCBwbDAxMSB1 YXJ0IGlzIGNvdmVyZWQgaW4gQXBwZW5kaXggQiBvZgpodHRwczovL3N0YXRpYy5kb2NzLmFybS5j b20vZGVuMDAyOS9hL1NlcnZlcl9CYXNlX1N5c3RlbV9BcmNoaXRlY3R1cmVfdjNfMV9BUk1fREVO XzAwMjlBLnBkZgoKU2lnbmVkLW9mZi1ieTogQmh1cGluZGVyIFRoYWt1ciA8Ymh1cGluZGVyLnRo YWt1ckBsaW5hcm8ub3JnPgotLS0KCkNoYW5nZXMgc2luY2UgdjM6Ci0gTW92ZWQgdGhlIGNhbGwg dG8gREVGSU5FX1hFTl9GTEVYX1JJTkcgZnJvbSB2cGwwMTEuaCB0byBwdWJsaWMvY29uc29sZS5o LiBUaGlzIG1hY3JvIGRlZmluZXMKICBzdGFuZGFyZCBmdW5jdGlvbnMgdG8gb3BlcmF0ZSBvbiB0 aGUgcmluZyBidWZmZXIuCi0gTG9jayB0YWtlbiB3aGlsZSB1cGRhdGluZyB0aGUgaW50ZXJydXB0 IG1hc2sgYW5kIGNsZWFyIHJlZ2lzdGVycyBpbiBtbWlvX3dyaXRlLgotIFVzZSBnZm5fdCBpbnN0 ZWFkIG9mIHhlbl9wZm5fdC4KLSB2Z2ljX2ZyZWVfdmlycSBjYWxsZWQgaWYgdGhlcmUgaXMgYW55 IGVycm9yIGluIHZwbDAxMSBpbml0aWFsaXphdGlvbi4KLSBtbWlvIGhhbmRsZXJzIGZyZWVkIGlm IHRoZXJlIGlzIGFueSBlcnJvciBpbiB2cGwwMTEgaW5pdGlhbGl6YXRpb24uCi0gUmVtb3ZlZCB2 cGwwMTEtPmluaXRpYWxpemVkIGZsYWcgdXNhZ2UgYXMgdGhlIHNhbWUgY2hlY2sgY291bGQgYmUg ZG9uZSAKICB1c2luZyB2cGwwMTEtPnJpbmctcmVmLgotIFVzZWQgcmV0dXJuIGluc3RlYWQgb2Yg YnJlYWsgaW4gdGhlIHN3aXRjaCBoYW5kbGluZyBvZiBlbXVsYXRpb24gb2YgZGlmZmVyZW50IHBs MDExIHJlZ2lzdGVycy4KLSBSZW5hbWVkIHZwbDAxMV91cGRhdGVfc3BpKCkgdG8gdnBsMDExX3Vw ZGF0ZSgpLgoKQ2hhbmdlcyBzaW5jZSB2MjoKLSBVc2UgZ2VuZXJpYyB2cmVnX3JlZyogZm9yIHJl YWQvd3JpdGUgb2YgcmVnaXN0ZXJzIGVtdWxhdGluZyBwbDAxMS4KLSBVc2UgZ2VuZXJpYyByaW5n IGJ1ZmZlciBmdW5jdGlvbnMgZGVmaW5lZCB1c2luZyBERUZJTkVfWEVOX0ZMRVhfUklORy4KLSBS ZW5hbWVkIHRoZSBTUEkgaW5qZWN0aW9uIGZ1bmN0aW9uIHRvIHZwbDAxMV91cGRhdGVfc3BpKCkg dG8gcmVmbGVjdCBsZXZlbCAKICB0cmlnZ2VyZWQgbmF0dXJlIG9mIHBsMDExIGludGVycnVwdHMu Ci0gVGhlIHBsMDExIHJlZ2lzdGVyIGFjY2VzcyBhZGRyZXNzIHNob3VsZCBhbHdheXMgYmUgdGhl IGJhc2UgYWRkcmVzcyBvZiB0aGUKICBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIGFzIHBlciBzZWN0 aW9uIEIgb2YgdGhlIFNCU0EgZG9jdW1lbnQuIEZvciB0aGlzIHJlYXNvbiwKICB0aGUgcmVnaXN0 ZXIgcmFuZ2UgYWRkcmVzcyBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuCgpDaGFuZ2VzIHNpbmNlIHYx OgotIFJlbW92ZWQgdGhlIG9wdGltaXp0aW9uIHJlbGF0ZWQgdG8gc2VuZGlpbmcgZXZlbnRzIHRv IHhlbmNvbnNvbGUgCi0gVXNlIGxvY2FsIHZhcmlhYmxlcyBhcyByaW5nIGJ1ZmZlciBpbmRpY2Vz IHdoaWxlIHVzaW5nIHRoZSByaW5nIGJ1ZmZlcgoKIHRvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMg ICAgICAgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0vS2NvbmZpZyAgICAgICAgICAgICB8ICAgNSAr CiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0v dnBsMDExLmMgICAgICAgICAgICB8IDQxOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggICAgIHwgICA2ICsKIHhlbi9p bmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oIHwgICAyICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0v dnBsMDExLmggICAgIHwgIDc0ICsrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5o ICAgIHwgICA2ICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9jb25zb2xlLmggIHwgICA0ICsKIDkg ZmlsZXMgY2hhbmdlZCwgNTE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vdnBsMDExLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v aW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCgpkaWZmIC0tZ2l0IGEvdG9vbHMvY29uc29sZS9kYWVt b24vaW8uYyBiL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKaW5kZXggN2U2YTg4Ni4uOTQ3ZjEz YSAxMDA2NDQKLS0tIGEvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYworKysgYi90b29scy9jb25z b2xlL2RhZW1vbi9pby5jCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJ1dGlscy5oIgog I2luY2x1ZGUgImlvLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8eGVuZXZ0Y2hu Lmg+CiAjaW5jbHVkZSA8eGVuZ250dGFiLmg+CiAjaW5jbHVkZSA8eGVuc3RvcmUuaD4KQEAgLTI5 LDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGVycm5vLmg+Ci0j aW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8cG9sbC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+ CiAjaW5jbHVkZSA8dW5pc3RkLmg+CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vS2NvbmZpZyBi L3hlbi9hcmNoL2FybS9LY29uZmlnCmluZGV4IGQ0NmI5OGMuLmMxYTBlN2YgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL2FybS9LY29uZmlnCisrKyBiL3hlbi9hcmNoL2FybS9LY29uZmlnCkBAIC01MCw2 ICs1MCwxMSBAQCBjb25maWcgSEFTX0lUUwogICAgICAgICBwcm9tcHQgIkdJQ3YzIElUUyBNU0kg Y29udHJvbGxlciBzdXBwb3J0IiBpZiBFWFBFUlQgPSAieSIKICAgICAgICAgZGVwZW5kcyBvbiBI QVNfR0lDVjMKIAorY29uZmlnIFZQTDAxMV9DT05TT0xFCisJYm9vbCAiRW11bGF0ZWQgcGwwMTEg Y29uc29sZSBzdXBwb3J0IgorCWRlZmF1bHQgeQorCS0tLWhlbHAtLS0KKwkgIEFsbG93cyBhIGd1 ZXN0IHRvIHVzZSBwbDAxMSBVQVJUIGFzIGEgY29uc29sZQogZW5kbWVudQogCiBtZW51ICJBUk0g ZXJyYXRhIHdvcmthcm91bmQgdmlhIHRoZSBhbHRlcm5hdGl2ZSBmcmFtZXdvcmsiCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXgg NDllMWZiMi4uMTVlZmMxMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBi L3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtNTIsNiArNTIsNyBAQCBvYmoteSArPSB2bV9ldmVu dC5vCiBvYmoteSArPSB2dGltZXIubwogb2JqLXkgKz0gdnBzY2kubwogb2JqLXkgKz0gdnVhcnQu bworb2JqLSQoQ09ORklHX1ZQTDAxMV9DT05TT0xFKSArPSB2cGwwMTEubwogCiAjb2JqLWJpbi15 ICs9IC4uLi5vCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92cGwwMTEuYyBiL3hlbi9hcmNo L2FybS92cGwwMTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjFmMjdl Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gvYXJtL3ZwbDAxMS5jCkBAIC0wLDAgKzEsNDE4 IEBACisvKgorICogYXJjaC9hcm0vdnBsMDExLmMKKyAqCisgKiBWaXJ0dWFsIFBMMDExIFVBUlQK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU SE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhl bi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi9ndWVzdF9h Y2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNp bmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDxwdWJs aWMvZG9tY3RsLmg+CisjaW5jbHVkZSA8cHVibGljL2lvL2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxh c20tYXJtL3BsMDExLXVhcnQuaD4KKyNpbmNsdWRlIDxhc20tYXJtL3ZnaWMtZW11bC5oPgorI2lu Y2x1ZGUgPGFzbS1hcm0vdnBsMDExLmg+CisKK3N0YXRpYyBib29sIHZwbDAxMV9yZWczMl9jaGVj a19hY2Nlc3Moc3RydWN0IGhzcl9kYWJ0IGRhYnQpCit7CisgICAgcmV0dXJuIChkYWJ0LnNpemUg IT0gREFCVF9ET1VCTEVfV09SRCk7Cit9CisKK3N0YXRpYyB2b2lkIHZwbDAxMV91cGRhdGUoc3Ry dWN0IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52 cGwwMTE7CisKKyAgICAvKgorICAgICAqIFRPRE86IFBMMDExIGludGVycnVwdHMgYXJlIGxldmVs IHRyaWdnZXJlZCB3aGljaCBtZWFucworICAgICAqIHRoYXQgaW50ZXJydXB0IG5lZWRzIHRvIGJl IHNldC9jbGVhciBpbnN0ZWFkIG9mIGJlaW5nCisgICAgICogaW5qZWN0ZWQuIEhvd2V2ZXIsIGN1 cnJlbnRseSB2R0lDIGRvZXMgbm90IGhhbmRsZSBsZXZlbCAKKyAgICAgKiB0cmlnZ2VyZWQgaW50 ZXJydXB0cyBwcm9wZXJseS4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSAKKyAgICAgKiByZXZp c2l0ZWQgb25jZSB2R0lDIHN0YXJ0cyBoYW5kbGluZyBsZXZlbCB0cmlnZ2VyZWQgCisgICAgICog aW50ZXJydXB0cy4KKyAgICAgKi8KKyAgICBpZiAoIHZwbDAxMS0+dWFydHJpcyAmIHZwbDAxMS0+ dWFydGltc2MgKQorICAgICAgICB2Z2ljX3ZjcHVfaW5qZWN0X3NwaShkLCBHVUVTVF9WUEwwMTFf U1BJKTsKK30KKworc3RhdGljIHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWlu ICpkKQoreworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgdWludDhfdCBkYXRhID0gMDsK KyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisgICAgc3RydWN0 IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmID0gdnBsMDExLT5yaW5nX2J1ZjsKKyAgICBYRU5DT05T X1JJTkdfSURYIGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOworICAgIFhFTkNPTlNfUklOR19JRFgg aW5fcHJvZCA9IGludGYtPmluX3Byb2Q7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisK KyAgICAvKgorICAgICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBkYXRhIGlu IHRoZSByaW5nIGJ1ZmZlciB3aGVuIHRoaXMKKyAgICAgKiBmdW5jdGlvbiBpcyBjYWxsZWQgc2lu Y2UgdGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRvIHJlYWQgdGhlIGRhdGEgcmVnaXN0ZXIKKyAgICAg KiBvbmx5IGlmIHRoZSBUWEZFIGZsYWcgaXMgbm90IHNldC4KKyAgICAgKiBJZiB0aGUgZ3Vlc3Qg c3RpbGwgZG9lcyByZWFkIHdoZW4gVFhGRSBiaXQgaXMgc2V0IHRoZW4gMCB3aWxsIGJlIHJldHVy bmVkLgorICAgICAqLworICAgIGlmICggeGVuY29uc19xdWV1ZWQoaW5fcHJvZCwgaW5fY29ucywg c2l6ZW9mKGludGYtPmluKSkgPiAwICkKKyAgICB7CisgICAgICAgIGRhdGEgPSBpbnRmLT5pblt4 ZW5jb25zX21hc2soaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSldOworICAgICAgICBpbl9jb25z ICs9IDE7CisgICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25zOworICAgICAgICBzbXBfbWIo KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAi dnBsMDExOiBVbmV4cGVjdGVkIElOIHJpbmcgYnVmZmVyIGVtcHR5XG4iKTsKKyAgICB9CisKKyAg ICBpZiAoIHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikp ID09IDAgKQorICAgIHsKKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gUlhGRTsKKyAgICAgICAg dnBsMDExLT51YXJ0cmlzICY9IH5SWEk7CisgICAgfQorICAgIHZwbDAxMS0+dWFydGZyICY9IH5S WEZGOworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgcmV0dXJuIGRhdGE7Cit9 CisKK3N0YXRpYyB2b2lkIHZwbDAxMV93cml0ZV9kYXRhKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ4 X3QgZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHN0cnVjdCB2cGwwMTEg KnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2Ug KmludGYgPSB2cGwwMTEtPnJpbmdfYnVmOworICAgIFhFTkNPTlNfUklOR19JRFggb3V0X2NvbnMg PSBpbnRmLT5vdXRfY29uczsKKyAgICBYRU5DT05TX1JJTkdfSURYIG91dF9wcm9kID0gaW50Zi0+ b3V0X3Byb2Q7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisKKyAgICAvKgorICAgICAq IEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHJpbmcgaXMgbm90IGZ1bGwgd2hlbiB0aGlzIGZ1bmN0 aW9uIGlzIGNhbGxlZAorICAgICAqIGFzIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byB3cml0ZSB0 byB0aGUgZGF0YSByZWdpc3RlciBvbmx5IHdoZW4gdGhlCisgICAgICogVFhGRiBmbGFnIGlzIG5v dCBzZXQuCisgICAgICogSW4gY2FzZSB0aGUgZ3Vlc3QgZG9lcyB3cml0ZSBldmVuIHdoZW4gdGhl IFRYRkYgZmxhZyBpcyBzZXQgdGhlbiB0aGUKKyAgICAgKiBkYXRhIHdpbGwgYmUgc2lsZW50bHkg ZHJvcHBlZC4KKyAgICAgKi8KKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKG91dF9wcm9kLCBvdXRf Y29ucywgc2l6ZW9mKGludGYtPm91dCkpICE9CisgICAgICAgICBzaXplb2YgKGludGYtPm91dCkg KQorICAgIHsKKyAgICAgICAgaW50Zi0+b3V0W3hlbmNvbnNfbWFzayhvdXRfcHJvZCwgc2l6ZW9m KGludGYtPm91dCkpXSA9IGRhdGE7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgb3V0X3By b2QgKz0gMTsKKyAgICAgICAgaW50Zi0+b3V0X3Byb2QgPSBvdXRfcHJvZDsKKyAgICB9CisgICAg ZWxzZQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiBVbmV4cGVj dGVkIE9VVCByaW5nIGJ1ZmZlciBmdWxsXG4iKTsKKyAgICB9CisKKyAgICBpZiAoIHhlbmNvbnNf cXVldWVkKG91dF9wcm9kLCBvdXRfY29ucywgc2l6ZW9mKGludGYtPm91dCkpID09CisgICAgICAg ICBzaXplb2YgKGludGYtPm91dCkgKQorICAgIHsKKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0g VFhGRjsKKyAgICAgICAgdnBsMDExLT51YXJ0cmlzICY9IH5UWEk7CisgICAgfQorCisgICAgdnBs MDExLT51YXJ0ZnIgfD0gQlVTWTsKKworICAgIHZwbDAxMS0+dWFydGZyICY9IH5UWEZFOworCisg ICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisKKyAgICAvKgorICAgICAqIFNlbmQgYW4gZXZl bnQgdG8gY29uc29sZSBiYWNrZW5kIHRvIGluZGljYXRlIHRoYXQgdGhlcmUgaXMgCisgICAgICog ZGF0YSBpbiB0aGUgT1VUIHJpbmcgYnVmZmVyLgorICAgICAqLworICAgIG5vdGlmeV92aWFfeGVu X2V2ZW50X2NoYW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOworfQorCitzdGF0aWMgaW50IHZwbDAx MV9tbWlvX3JlYWQoc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg bW1pb19pbmZvX3QgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJf dCAqciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwcml2KQoreworICAgIHN0 cnVjdCBoc3JfZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKKyAgICB1aW50MzJfdCB2cGwwMTFfcmVn ID0gKHVpbnQzMl90KShpbmZvLT5ncGEgLSBHVUVTVF9QTDAxMV9CQVNFKTsKKyAgICBzdHJ1Y3Qg dnBsMDExICp2cGwwMTEgPSAmdi0+ZG9tYWluLT5hcmNoLnZwbDAxMTsKKworICAgIHN3aXRjaCAo IHZwbDAxMV9yZWcgKQorICAgIHsKKyAgICBjYXNlIERSOgorICAgICAgICAvKgorICAgICAgICAg KiBTaW5jZSBwbDAxMSByZWdpc3RlcnMgYXJlIDMyLWJpdCByZWdpc3RlcnMsIGFsbCByZWdpc3Rl cnMKKyAgICAgICAgICogYXJlIGhhbmRsZWQgc2ltaWxhcmx5IGFsbG93aW5nIDgtYml0LCAxNi1i aXQgYW5kIDMyLWJpdAorICAgICAgICAgKiBhY2Nlc3Nlcy4KKyAgICAgICAgICovCisgICAgICAg IGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsK KworICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTFfcmVhZF9kYXRhKHYtPmRv bWFpbiksIGluZm8pOworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgUlNSOgorICAgICAg ICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7 CisKKyAgICAgICAgLyogSXQgYWx3YXlzIHJldHVybnMgMCBhcyB0aGVyZSBhcmUgbm8gcGh5c2lj YWwgZXJyb3JzLiAqLworICAgICAgICAqciA9IDA7CisgICAgICAgIHJldHVybiAxOworCisgICAg Y2FzZSBGUjoKKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSAp IGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAx MS0+dWFydGZyLCBpbmZvKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIFJJUzoKKyAg ICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dp ZHRoOworCisgICAgICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydHJpcywg aW5mbyk7CisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBNSVM6CisgICAgICAgIGlmICgg IXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAg ICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRyaXMgJiAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdnBsMDExLT51YXJ0aW1zYywgaW5mbyk7CisgICAgICAg IHJldHVybiAxOworCisgICAgY2FzZSBJTVNDOgorICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJf Y2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgKnIgPSB2cmVn X3JlZzMyX2V4dHJhY3QodnBsMDExLT51YXJ0aW1zYywgaW5mbyk7CisgICAgICAgIHJldHVybiAx OworCisgICAgY2FzZSBJQ1I6CisgICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nl c3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICAvKiBPbmx5IHdyaXRlIGlzIHZh bGlkLiAqLworICAgICAgICByZXR1cm4gMDsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGdwcmlu dGsoWEVOTE9HX0VSUiwgInZwbDAxMTogdW5oYW5kbGVkIHJlYWQgciVkIG9mZnNldCAlIzA4eFxu IiwKKyAgICAgICAgICAgICAgICBkYWJ0LnJlZywgdnBsMDExX3JlZyk7CisgICAgICAgIHJldHVy biAwOworICAgIH0KKworICAgIHJldHVybiAxOworCitiYWRfd2lkdGg6CisgICAgZ3ByaW50ayhY RU5MT0dfRVJSLCAidnBsMDExOiBiYWQgcmVhZCB3aWR0aCAlZCByJWQgb2Zmc2V0ICUjMDh4XG4i LAorICAgICAgICAgICAgZGFidC5zaXplLCBkYWJ0LnJlZywgdnBsMDExX3JlZyk7CisgICAgZG9t YWluX2NyYXNoX3N5bmNocm9ub3VzKCk7CisgICAgcmV0dXJuIDA7CisKK30KKworc3RhdGljIGlu dCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbW1pb19pbmZvX3QgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlZ2lzdGVyX3QgciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHJpdikK K3sKKyAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7CisgICAgdWludDMyX3Qg dnBsMDExX3JlZyA9ICh1aW50MzJfdCkoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFfQkFTRSk7Cisg ICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJnYtPmRvbWFpbi0+YXJjaC52cGwwMTE7CisgICAg c3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwor CisgICAgc3dpdGNoICggdnBsMDExX3JlZyApCisgICAgeworICAgIGNhc2UgRFI6CisgICAgewor ICAgICAgICB1aW50MzJfdCBkYXRhID0gMDsKKworICAgICAgICAvKgorICAgICAgICAgKiBTaW5j ZSBwbDAxMSByZWdpc3RlcnMgYXJlIDMyLWJpdCByZWdpc3RlcnMsIGFsbCByZWdpc3RlcnMKKyAg ICAgICAgICogYXJlIGhhbmRsZWQgc2ltaWxhcmx5IGFsbG93aW5nIDgtYml0LCAxNi1iaXQgYW5k IDMyLWJpdAorICAgICAgICAgKiBhY2Nlc3Nlcy4KKyAgICAgICAgICovCisgICAgICAgIGlmICgg IXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAg ICAgICB2cmVnX3JlZzMyX3VwZGF0ZSgmZGF0YSwgciwgaW5mbyk7CisgICAgICAgIGRhdGEgJj0g MHhGRjsKKyAgICAgICAgdnBsMDExX3dyaXRlX2RhdGEodi0+ZG9tYWluLCBkYXRhKTsKKyAgICAg ICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgUlNSOiAvKiBOb3RoaW5nIHRvIGNsZWFyLiAq LworICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBi YWRfd2lkdGg7CisKKyAgICAgICAgcmV0dXJuIDE7IAorCisgICAgY2FzZSBGUjoKKyAgICBjYXNl IFJJUzoKKyAgICBjYXNlIE1JUzoKKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmU7CisKKyAgICBj YXNlIElNU0M6CisgICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkg KSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisgICAg ICAgIHZyZWdfcmVnMzJfdXBkYXRlKCZ2cGwwMTEtPnVhcnRpbXNjLCByLCBpbmZvKTsKKyAgICAg ICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisgICAgICAgIHZwbDAxMV91cGRhdGUodi0+ZG9t YWluKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIElDUjoKKyAgICAgICAgaWYgKCAh dnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAg ICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgdnJlZ19yZWczMl9jbGVhcmJpdHMo JnZwbDAxMS0+dWFydHJpcywgciwgaW5mbyk7CisgICAgICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxh Z3MpOworICAgICAgICB2cGwwMTFfdXBkYXRlKGQpOworICAgICAgICByZXR1cm4gMTsKKworICAg IGRlZmF1bHQ6CisgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogdW5oYW5kbGVk IHdyaXRlIHIlZCBvZmZzZXQgJSMwOHhcbiIsCisgICAgICAgICAgICAgICAgZGFidC5yZWcsIHZw bDAxMV9yZWcpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKK3dyaXRlX2lnbm9yZToKKyAg ICByZXR1cm4gMTsKKworYmFkX3dpZHRoOgorICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAx MTogYmFkIHdyaXRlIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCisgICAgICAgICAgICBk YWJ0LnNpemUsIGRhYnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICBkb21haW5fY3Jhc2hfc3luY2hy b25vdXMoKTsKKyAgICByZXR1cm4gMDsKKworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG1taW9f aGFuZGxlcl9vcHMgdnBsMDExX21taW9faGFuZGxlciA9IHsKKyAgICAucmVhZCA9IHZwbDAxMV9t bWlvX3JlYWQsCisgICAgLndyaXRlID0gdnBsMDExX21taW9fd3JpdGUsCit9OworCitzdGF0aWMg dm9pZCB2cGwwMTFfZGF0YV9hdmFpbChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHVuc2lnbmVk IGxvbmcgZmxhZ3M7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDEx OworICAgIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IHZwbDAxMS0+cmluZ19idWY7 CisgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9jb25zID0gaW50Zi0+aW5fY29uczsKKyAgICBYRU5D T05TX1JJTkdfSURYIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOworICAgIFhFTkNPTlNfUklOR19J RFggb3V0X2NvbnMgPSBpbnRmLT5vdXRfY29uczsKKyAgICBYRU5DT05TX1JJTkdfSURYIG91dF9w cm9kID0gaW50Zi0+b3V0X3Byb2Q7CisgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9yaW5nX3FzaXpl LCBvdXRfcmluZ19xc2l6ZTsKKworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIGlu X3JpbmdfcXNpemUgPSB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbl9jb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YoaW50Zi0+aW4pKTsKKworICAgIG91dF9yaW5nX3FzaXplID0geGVuY29uc19x dWV1ZWQob3V0X3Byb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRf Y29ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnRmLT5v dXQpKTsKKworICAgIC8qIFVwZGF0ZSB0aGUgdWFydCByeCBzdGF0ZSBpZiB0aGUgYnVmZmVyIGlz IG5vdCBlbXB0eS4gKi8KKyAgICBpZiAoIGluX3JpbmdfcXNpemUgIT0gMCApCisgICAgeworICAg ICAgICB2cGwwMTEtPnVhcnRmciAmPSB+UlhGRTsKKyAgICAgICAgaWYgKCBpbl9yaW5nX3FzaXpl ID09IHNpemVvZihpbnRmLT5pbikgKQorICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gUlhG RjsKKyAgICAgICAgdnBsMDExLT51YXJ0cmlzIHw9IFJYSTsKKyAgICB9CisKKyAgICAvKiBVcGRh dGUgdGhlIHVhcnQgdHggc3RhdGUgaWYgdGhlIGJ1ZmZlciBpcyBub3QgZnVsbC4gKi8KKyAgICBp ZiAoIG91dF9yaW5nX3FzaXplICE9IHNpemVvZihpbnRmLT5vdXQpICkKKyAgICB7CisgICAgICAg IHZwbDAxMS0+dWFydGZyICY9IH5UWEZGOworICAgICAgICB2cGwwMTEtPnVhcnRyaXMgfD0gVFhJ OworICAgICAgICBpZiAoIG91dF9yaW5nX3FzaXplID09IDAgKQorICAgICAgICB7CisgICAgICAg ICAgICB2cGwwMTEtPnVhcnRmciAmPSB+QlVTWTsKKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZy IHw9IFRYRkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdz KTsKKworICAgIHZwbDAxMV91cGRhdGUoZCk7Cit9CisKKworc3RhdGljIHZvaWQgdnBsMDExX25v dGlmaWNhdGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCit7CisgICAgdnBs MDExX2RhdGFfYXZhaWwodi0+ZG9tYWluKTsKK30KKworaW50IGRvbWFpbl92cGwwMTFfaW5pdChz dHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAqaW5mbykKK3sKKyAgICBp bnQgcmM7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworCisg ICAgaWYgKCB2cGwwMTEtPnJpbmdfYnVmICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBN YXAgdGhlIGd1ZXN0IFBGTiB0byBYZW4gYWRkcmVzcyBzcGFjZS4gKi8KKyAgICByYyA9ICBwcmVw YXJlX3JpbmdfZm9yX2hlbHBlcihkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdmbl94KGluZm8tPmdmbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZw bDAxMS0+cmluZ19wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGww MTEtPnJpbmdfYnVmKTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAgICAgIGdvdG8gb3V0OworCisg ICAgcmMgPSB2Z2ljX3Jlc2VydmVfdmlycShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKKyAgICBpZiAo ICFyYyApCisgICAgeworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGdvdG8gb3V0MTsK KyAgICB9CisKKyAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZwbDAxMV9tbWlvX2hhbmRs ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdVRVNUX1BMMDExX0JBU0UsIEdVRVNUX1BM MDExX1NJWkUsIE5VTEwpOworCisgICAgc3Bpbl9sb2NrX2luaXQoJnZwbDAxMS0+bG9jayk7CisK KyAgICByYyA9IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwgaW5mby0+Y29u c29sZV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnBs MDExX25vdGlmaWNhdGlvbik7CisgICAgaWYgKCByYyA8IDAgKQorICAgICAgICBnb3RvIG91dDI7 CisKKyAgICB2cGwwMTEtPmV2dGNobiA9IGluZm8tPmV2dGNobiA9IHJjOworCisgICAgcmV0dXJu IDA7CisKK291dDI6CisgICAgeGZyZWUoZC0+YXJjaC52bW1pby5oYW5kbGVycyk7CisgICAgdmdp Y19mcmVlX3ZpcnEoZCwgR1VFU1RfVlBMMDExX1NQSSk7CisKK291dDE6CisgICAgZGVzdHJveV9y aW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+cmluZ19idWYsIHZwbDAxMS0+cmluZ19wYWdlKTsKKwor b3V0OgorICAgIHJldHVybiByYzsKK30KKwordm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1 Y3QgZG9tYWluICpkKQoreworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZw bDAxMTsKKworICAgIGlmICggIXZwbDAxMS0+cmluZ19idWYgKQorICAgICAgICByZXR1cm47CisK KyAgICBmcmVlX3hlbl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKKyAgICBkZXN0 cm95X3JpbmdfZm9yX2hlbHBlcigmdnBsMDExLT5yaW5nX2J1ZiwgdnBsMDExLT5yaW5nX3BhZ2Up OworICAgIHhmcmVlKGQtPmFyY2gudm1taW8uaGFuZGxlcnMpOworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9kb21haW4uaAppbmRleCA2ZGU4MDgyLi45MWQxMDYxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20tYXJtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKQEAg LTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvaHZtL3BhcmFtcy5oPgogI2luY2x1ZGUg PHhlbi9zZXJpYWwuaD4KICNpbmNsdWRlIDx4ZW4vcmJ0cmVlLmg+CisjaW5jbHVkZSA8YXNtLWFy bS92cGwwMTEuaD4KIAogc3RydWN0IGh2bV9kb21haW4KIHsKQEAgLTEzMyw2ICsxMzQsMTEgQEAg c3RydWN0IGFyY2hfZG9tYWluCiAgICAgc3RydWN0IHsKICAgICAgICAgdWludDhfdCBwcml2aWxl Z2VkX2NhbGxfZW5hYmxlZCA6IDE7CiAgICAgfSBtb25pdG9yOworCisjaWZkZWYgQ09ORklHX1ZQ TDAxMV9DT05TT0xFCisgICAgc3RydWN0IHZwbDAxMSB2cGwwMTE7CisjZW5kaWYKKwogfSAgX19j YWNoZWxpbmVfYWxpZ25lZDsKIAogc3RydWN0IGFyY2hfdmNwdQpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVh cnQuaAppbmRleCAxMjNmNDc3Li41N2U5ZWM3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20t YXJtL3BsMDExLXVhcnQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVhcnQuaApA QCAtNDksNiArNDksOCBAQAogLyogRlIgYml0cyAqLwogI2RlZmluZSBUWEZFICAgKDE8PDcpIC8q IFRYIEZJRk8gZW1wdHkgKi8KICNkZWZpbmUgUlhGRSAgICgxPDw0KSAvKiBSWCBGSUZPIGVtcHR5 ICovCisjZGVmaW5lIFRYRkYgICAoMTw8NSkgLyogVFggRklGTyBmdWxsICovCisjZGVmaW5lIFJY RkYgICAoMTw8NikgLyogUlggRklGTyBmdWxsICovCiAjZGVmaW5lIEJVU1kgICAoMTw8MykgLyog VHJhbnNtaXQgaXMgbm90IGNvbXBsZXRlICovCiAKIC8qIExDUl9IIGJpdHMgKi8KZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3Zw bDAxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTMzMmQKLS0tIC9k ZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCkBAIC0wLDAgKzEsNzQg QEAKKy8qCisgKiBpbmNsdWRlL3hlbi92cGwwMTEuaAorICoKKyAqIFZpcnR1YWwgUEwwMTEgVUFS VAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX SVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0 YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIF9W UEwwMTFfSF8KKworI2RlZmluZSBfVlBMMDExX0hfCisKKyNpbmNsdWRlIDxwdWJsaWMvZG9tY3Rs Lmg+CisjaW5jbHVkZSA8cHVibGljL2lvL3JpbmcuaD4KKyNpbmNsdWRlIDxhc20tYXJtL3ZyZWcu aD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKworLyogaGVscGVyIG1hY3JvcyAqLworI2RlZmluZSBW UEwwMTFfTE9DSyhkLGZsYWdzKSBzcGluX2xvY2tfaXJxc2F2ZSgmKGQpLT5hcmNoLnZwbDAxMS5s b2NrLCBmbGFncykKKyNkZWZpbmUgVlBMMDExX1VOTE9DSyhkLGZsYWdzKSBzcGluX3VubG9ja19p cnFyZXN0b3JlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZsYWdzKQorCitzdHJ1Y3QgdnBsMDEx IHsKKyAgICB2b2lkICpyaW5nX2J1ZjsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyaW5nX3BhZ2U7 CisgICAgdWludDMyX3QgICAgdWFydGZyOyAgICAgLyogRmxhZyByZWdpc3RlciAqLworICAgIHVp bnQzMl90ICAgIHVhcnRjcjsgICAgIC8qIENvbnRyb2wgcmVnaXN0ZXIgKi8KKyAgICB1aW50MzJf dCAgICB1YXJ0aW1zYzsgICAvKiBJbnRlcnJ1cHQgbWFzayByZWdpc3RlciovCisgICAgdWludDMy X3QgICAgdWFydGljcjsgICAgLyogSW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyICovCisgICAgdWlu dDMyX3QgICAgdWFydHJpczsgICAgLyogUmF3IGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8K KyAgICB1aW50MzJfdCAgICB1YXJ0bWlzOyAgICAvKiBNYXNrZWQgaW50ZXJydXB0IHJlZ2lzdGVy ICovCisgICAgc3BpbmxvY2tfdCAgbG9jazsKKyAgICBldnRjaG5fcG9ydF90IGV2dGNobjsKK307 CisKK3N0cnVjdCB2cGwwMTFfaW5pdF9pbmZvIHsKKyAgICB1aW50MzJfdCBjb25zb2xlX2RvbWlk OworICAgIGdmbl90IGdmbjsKKyAgICBldnRjaG5fcG9ydF90IGV2dGNobjsKK307CisKKyNpZmRl ZiBDT05GSUdfVlBMMDExX0NPTlNPTEUKK2ludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRv bWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8g KmluZm8pOwordm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKKyNl bHNlCitzdGF0aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAq ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2lu aXRfaW5mbyAqaW5mbykKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpIHsgfQorI2VuZGlm CisKKyNlbmRpZgorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1m aWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJj aC1hcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCmluZGV4IGJkOTc0ZmIuLjg1 YWI2NjUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCisrKyBiL3hl bi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCkBAIC00MTAsNiArNDEwLDEwIEBAIHR5cGVkZWYg dWludDY0X3QgeGVuX2NhbGxiYWNrX3Q7CiAjZGVmaW5lIEdVRVNUX0FDUElfQkFTRSAweDIwMDAw MDAwVUxMCiAjZGVmaW5lIEdVRVNUX0FDUElfU0laRSAweDAyMDAwMDAwVUxMCiAKKy8qIFBMMDEx IG1hcHBpbmdzICovCisjZGVmaW5lIEdVRVNUX1BMMDExX0JBU0UgICAgMHgyMjAwMDAwMFVMTAor I2RlZmluZSBHVUVTVF9QTDAxMV9TSVpFICAgIDB4MDAwMDEwMDBVTEwKKwogLyoKICAqIDE2TUIg PT0gNDA5NiBwYWdlcyByZXNlcnZlZCBmb3IgZ3Vlc3QgdG8gdXNlIGFzIGEgcmVnaW9uIHRvIG1h cCBpdHMKICAqIGdyYW50IHRhYmxlIGluLgpAQCAtNDQ0LDYgKzQ0OCw4IEBAIHR5cGVkZWYgdWlu dDY0X3QgeGVuX2NhbGxiYWNrX3Q7CiAjZGVmaW5lIEdVRVNUX1RJTUVSX1BIWVNfTlNfUFBJIDMw CiAjZGVmaW5lIEdVRVNUX0VWVENITl9QUEkgICAgICAgIDMxCiAKKyNkZWZpbmUgR1VFU1RfVlBM MDExX1NQSSAgICAgICAgMzIKKwogLyogUFNDSSBmdW5jdGlvbnMgKi8KICNkZWZpbmUgUFNDSV9j cHVfc3VzcGVuZCAwCiAjZGVmaW5lIFBTQ0lfY3B1X29mZiAgICAgMQpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvcHVibGljL2lvL2NvbnNvbGUuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9jb25z b2xlLmgKaW5kZXggZTJjZDk3Zi4uNWU0NWUxYyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL2lvL2NvbnNvbGUuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY29uc29sZS5oCkBA IC0yNyw2ICsyNyw4IEBACiAjaWZuZGVmIF9fWEVOX1BVQkxJQ19JT19DT05TT0xFX0hfXwogI2Rl ZmluZSBfX1hFTl9QVUJMSUNfSU9fQ09OU09MRV9IX18KIAorI2luY2x1ZGUgInJpbmcuaCIKKwog dHlwZWRlZiB1aW50MzJfdCBYRU5DT05TX1JJTkdfSURYOwogCiAjZGVmaW5lIE1BU0tfWEVOQ09O U19JRFgoaWR4LCByaW5nKSAoKGlkeCkgJiAoc2l6ZW9mKHJpbmcpLTEpKQpAQCAtMzgsNiArNDAs OCBAQCBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgewogICAgIFhFTkNPTlNfUklOR19JRFggb3V0 X2NvbnMsIG91dF9wcm9kOwogfTsKIAorREVGSU5FX1hFTl9GTEVYX1JJTkcoeGVuY29ucyk7CisK ICNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSU9fQ09OU09MRV9IX18gKi8KIAogLyoKLS0gCjIuNy40 CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==