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 22:55:18 +0530 Message-ID: <1496769929-23355-4-git-send-email-bhupinder.thakur@linaro.org> References: <1496769929-23355-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIIEl-0001WS-Mf for xen-devel@lists.xenproject.org; Tue, 06 Jun 2017 17:25:47 +0000 Received: by mail-pg0-f47.google.com with SMTP id k71so4103164pgd.2 for ; Tue, 06 Jun 2017 10:25:45 -0700 (PDT) In-Reply-To: <1496769929-23355-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: 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 YWt1ckBsaW5hcm8ub3JnPgotLS0KQ0M6IGlqCkNDOiB3bApDQzogc3MKQ0M6IGpnCkNDOiBrdwoK Q2hhbmdlcyBzaW5jZSB2MzoKLSBNb3ZlZCB0aGUgY2FsbCB0byBERUZJTkVfWEVOX0ZMRVhfUklO RyBmcm9tIHZwbDAxMS5oIHRvIHB1YmxpYy9jb25zb2xlLmguIFRoaXMgbWFjcm8gZGVmaW5lcwog IHN0YW5kYXJkIGZ1bmN0aW9ucyB0byBvcGVyYXRlIG9uIHRoZSByaW5nIGJ1ZmZlci4KLSBMb2Nr IHRha2VuIHdoaWxlIHVwZGF0aW5nIHRoZSBpbnRlcnJ1cHQgbWFzayBhbmQgY2xlYXIgcmVnaXN0 ZXJzIGluIG1taW9fd3JpdGUuCi0gVXNlIGdmbl90IGluc3RlYWQgb2YgeGVuX3Bmbl90LgotIHZn aWNfZnJlZV92aXJxIGNhbGxlZCBpZiB0aGVyZSBpcyBhbnkgZXJyb3IgaW4gdnBsMDExIGluaXRp YWxpemF0aW9uLgotIG1taW8gaGFuZGxlcnMgZnJlZWQgaWYgdGhlcmUgaXMgYW55IGVycm9yIGlu IHZwbDAxMSBpbml0aWFsaXphdGlvbi4KLSBSZW1vdmVkIHZwbDAxMS0+aW5pdGlhbGl6ZWQgZmxh ZyB1c2FnZSBhcyB0aGUgc2FtZSBjaGVjayBjb3VsZCBiZSBkb25lIAogIHVzaW5nIHZwbDAxMS0+ cmluZy1yZWYuCi0gVXNlZCByZXR1cm4gaW5zdGVhZCBvZiBicmVhayBpbiB0aGUgc3dpdGNoIGhh bmRsaW5nIG9mIGVtdWxhdGlvbiBvZiBkaWZmZXJlbnQgcGwwMTEgcmVnaXN0ZXJzLgotIFJlbmFt ZWQgdnBsMDExX3VwZGF0ZV9zcGkoKSB0byB2cGwwMTFfdXBkYXRlKCkuCgpDaGFuZ2VzIHNpbmNl IHYyOgotIFVzZSBnZW5lcmljIHZyZWdfcmVnKiBmb3IgcmVhZC93cml0ZSBvZiByZWdpc3RlcnMg ZW11bGF0aW5nIHBsMDExLgotIFVzZSBnZW5lcmljIHJpbmcgYnVmZmVyIGZ1bmN0aW9ucyBkZWZp bmVkIHVzaW5nIERFRklORV9YRU5fRkxFWF9SSU5HLgotIFJlbmFtZWQgdGhlIFNQSSBpbmplY3Rp b24gZnVuY3Rpb24gdG8gdnBsMDExX3VwZGF0ZV9zcGkoKSB0byByZWZsZWN0IGxldmVsIAogIHRy aWdnZXJlZCBuYXR1cmUgb2YgcGwwMTEgaW50ZXJydXB0cy4KLSBUaGUgcGwwMTEgcmVnaXN0ZXIg YWNjZXNzIGFkZHJlc3Mgc2hvdWxkIGFsd2F5cyBiZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQog IGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIgYXMgcGVyIHNlY3Rpb24gQiBvZiB0aGUgU0JTQSBkb2N1 bWVudC4gRm9yIHRoaXMgcmVhc29uLAogIHRoZSByZWdpc3RlciByYW5nZSBhZGRyZXNzIGFjY2Vz cyBpcyBub3QgYWxsb3dlZC4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gUmVtb3ZlZCB0aGUgb3B0aW1p enRpb24gcmVsYXRlZCB0byBzZW5kaWluZyBldmVudHMgdG8geGVuY29uc29sZSAKLSBVc2UgbG9j YWwgdmFyaWFibGVzIGFzIHJpbmcgYnVmZmVyIGluZGljZXMgd2hpbGUgdXNpbmcgdGhlIHJpbmcg YnVmZmVyCgogdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYyAgICAgICAgfCAgIDIgKy0KIHhlbi9h cmNoL2FybS9LY29uZmlnICAgICAgICAgICAgIHwgICA1ICsKIHhlbi9hcmNoL2FybS9NYWtlZmls ZSAgICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL2FybS92cGwwMTEuYyAgICAgICAgICAgIHwg NDE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUv YXNtLWFybS9kb21haW4uaCAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11 YXJ0LmggfCAgIDIgKwogeGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCAgICAgfCAgNzQgKysr KysrKwogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmggICAgfCAgIDYgKwogeGVuL2luY2x1 ZGUvcHVibGljL2lvL2NvbnNvbGUuaCAgfCAgIDQgKwogOSBmaWxlcyBjaGFuZ2VkLCA1MTcgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2Fy bS92cGwwMTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDEx LmgKCmRpZmYgLS1naXQgYS90b29scy9jb25zb2xlL2RhZW1vbi9pby5jIGIvdG9vbHMvY29uc29s ZS9kYWVtb24vaW8uYwppbmRleCA3ZTZhODg2Li45NDdmMTNhIDEwMDY0NAotLS0gYS90b29scy9j b25zb2xlL2RhZW1vbi9pby5jCisrKyBiL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKQEAgLTIx LDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgInV0aWxzLmgiCiAjaW5jbHVkZSAiaW8uaCIKKyNpbmNs dWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5nbnR0 YWIuaD4KICNpbmNsdWRlIDx4ZW5zdG9yZS5oPgpAQCAtMjksNyArMzAsNiBAQAogCiAjaW5jbHVk ZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KICNp bmNsdWRlIDxwb2xsLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL0tjb25maWcK aW5kZXggZDQ2Yjk4Yy4uYzFhMGU3ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL0tjb25maWcK KysrIGIveGVuL2FyY2gvYXJtL0tjb25maWcKQEAgLTUwLDYgKzUwLDExIEBAIGNvbmZpZyBIQVNf SVRTCiAgICAgICAgIHByb21wdCAiR0lDdjMgSVRTIE1TSSBjb250cm9sbGVyIHN1cHBvcnQiIGlm IEVYUEVSVCA9ICJ5IgogICAgICAgICBkZXBlbmRzIG9uIEhBU19HSUNWMwogCitjb25maWcgVlBM MDExX0NPTlNPTEUKKwlib29sICJFbXVsYXRlZCBwbDAxMSBjb25zb2xlIHN1cHBvcnQiCisJZGVm YXVsdCB5CisJLS0taGVscC0tLQorCSAgQWxsb3dzIGEgZ3Vlc3QgdG8gdXNlIHBsMDExIFVBUlQg YXMgYSBjb25zb2xlCiBlbmRtZW51CiAKIG1lbnUgIkFSTSBlcnJhdGEgd29ya2Fyb3VuZCB2aWEg dGhlIGFsdGVybmF0aXZlIGZyYW1ld29yayIKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9NYWtl ZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQppbmRleCA0OWUxZmIyLi4xNWVmYzEzIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL01ha2VmaWxl CkBAIC01Miw2ICs1Miw3IEBAIG9iai15ICs9IHZtX2V2ZW50Lm8KIG9iai15ICs9IHZ0aW1lci5v CiBvYmoteSArPSB2cHNjaS5vCiBvYmoteSArPSB2dWFydC5vCitvYmotJChDT05GSUdfVlBMMDEx X0NPTlNPTEUpICs9IHZwbDAxMS5vCiAKICNvYmotYmluLXkgKz0gLi4uLm8KIApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL3ZwbDAxMS5jIGIveGVuL2FyY2gvYXJtL3ZwbDAxMS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMWYyN2UKLS0tIC9kZXYvbnVsbAorKysgYi94 ZW4vYXJjaC9hcm0vdnBsMDExLmMKQEAgLTAsMCArMSw0MTggQEAKKy8qCisgKiBhcmNoL2FybS92 cGwwMTEuYworICoKKyAqIFZpcnR1YWwgUEwwMTEgVUFSVAorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh bG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8 eGVuL2V2ZW50Lmg+CisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhl bi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4KKyNpbmNsdWRl IDxwdWJsaWMvaW8vY29uc29sZS5oPgorI2luY2x1ZGUgPGFzbS1hcm0vcGwwMTEtdWFydC5oPgor I2luY2x1ZGUgPGFzbS1hcm0vdmdpYy1lbXVsLmg+CisjaW5jbHVkZSA8YXNtLWFybS92cGwwMTEu aD4KKworc3RhdGljIGJvb2wgdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhzdHJ1Y3QgaHNyX2Rh YnQgZGFidCkKK3sKKyAgICByZXR1cm4gKGRhYnQuc2l6ZSAhPSBEQUJUX0RPVUJMRV9XT1JEKTsK K30KKworc3RhdGljIHZvaWQgdnBsMDExX3VwZGF0ZShzdHJ1Y3QgZG9tYWluICpkKQoreworICAg IHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKworICAgIC8qCisgICAg ICogVE9ETzogUEwwMTEgaW50ZXJydXB0cyBhcmUgbGV2ZWwgdHJpZ2dlcmVkIHdoaWNoIG1lYW5z CisgICAgICogdGhhdCBpbnRlcnJ1cHQgbmVlZHMgdG8gYmUgc2V0L2NsZWFyIGluc3RlYWQgb2Yg YmVpbmcKKyAgICAgKiBpbmplY3RlZC4gSG93ZXZlciwgY3VycmVudGx5IHZHSUMgZG9lcyBub3Qg aGFuZGxlIGxldmVsIAorICAgICAqIHRyaWdnZXJlZCBpbnRlcnJ1cHRzIHByb3Blcmx5LiBUaGlz IGZ1bmN0aW9uIG5lZWRzIHRvIGJlIAorICAgICAqIHJldmlzaXRlZCBvbmNlIHZHSUMgc3RhcnRz IGhhbmRsaW5nIGxldmVsIHRyaWdnZXJlZCAKKyAgICAgKiBpbnRlcnJ1cHRzLgorICAgICAqLwor ICAgIGlmICggdnBsMDExLT51YXJ0cmlzICYgdnBsMDExLT51YXJ0aW1zYyApCisgICAgICAgIHZn aWNfdmNwdV9pbmplY3Rfc3BpKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOworfQorCitzdGF0aWMgdWlu dDhfdCB2cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKKyAgICB1aW50OF90IGRhdGEgPSAwOworICAgIHN0cnVjdCB2cGwwMTEgKnZw bDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmlu dGYgPSB2cGwwMTEtPnJpbmdfYnVmOworICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucyA9IGlu dGYtPmluX2NvbnM7CisgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9wcm9kID0gaW50Zi0+aW5fcHJv ZDsKKworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAgICogSXQgaXMg ZXhwZWN0ZWQgdGhhdCB0aGVyZSB3aWxsIGJlIGRhdGEgaW4gdGhlIHJpbmcgYnVmZmVyIHdoZW4g dGhpcworICAgICAqIGZ1bmN0aW9uIGlzIGNhbGxlZCBzaW5jZSB0aGUgZ3Vlc3QgaXMgZXhwZWN0 ZWQgdG8gcmVhZCB0aGUgZGF0YSByZWdpc3RlcgorICAgICAqIG9ubHkgaWYgdGhlIFRYRkUgZmxh ZyBpcyBub3Qgc2V0LgorICAgICAqIElmIHRoZSBndWVzdCBzdGlsbCBkb2VzIHJlYWQgd2hlbiBU WEZFIGJpdCBpcyBzZXQgdGhlbiAwIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICovCisgICAgaWYg KCB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLCBpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKSA+IDAg KQorICAgIHsKKyAgICAgICAgZGF0YSA9IGludGYtPmluW3hlbmNvbnNfbWFzayhpbl9jb25zLCBz aXplb2YoaW50Zi0+aW4pKV07CisgICAgICAgIGluX2NvbnMgKz0gMTsKKyAgICAgICAgaW50Zi0+ aW5fY29ucyA9IGluX2NvbnM7CisgICAgICAgIHNtcF9tYigpOworICAgIH0KKyAgICBlbHNlCisg ICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVuZXhwZWN0ZWQgSU4g cmluZyBidWZmZXIgZW1wdHlcbiIpOworICAgIH0KKworICAgIGlmICggeGVuY29uc19xdWV1ZWQo aW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPT0gMCApCisgICAgeworICAgICAg ICB2cGwwMTEtPnVhcnRmciB8PSBSWEZFOworICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0gflJY STsKKyAgICB9CisgICAgdnBsMDExLT51YXJ0ZnIgJj0gflJYRkY7CisgICAgVlBMMDExX1VOTE9D SyhkLCBmbGFncyk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKworc3RhdGljIHZvaWQgdnBsMDEx X3dyaXRlX2RhdGEoc3RydWN0IGRvbWFpbiAqZCwgdWludDhfdCBkYXRhKQoreworICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBs MDExOworICAgIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IHZwbDAxMS0+cmluZ19i dWY7CisgICAgWEVOQ09OU19SSU5HX0lEWCBvdXRfY29ucyA9IGludGYtPm91dF9jb25zOworICAg IFhFTkNPTlNfUklOR19JRFggb3V0X3Byb2QgPSBpbnRmLT5vdXRfcHJvZDsKKworICAgIFZQTDAx MV9MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAgICogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0 aGUgcmluZyBpcyBub3QgZnVsbCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAgICog YXMgdGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRvIHdyaXRlIHRvIHRoZSBkYXRhIHJlZ2lzdGVyIG9u bHkgd2hlbiB0aGUKKyAgICAgKiBUWEZGIGZsYWcgaXMgbm90IHNldC4KKyAgICAgKiBJbiBjYXNl IHRoZSBndWVzdCBkb2VzIHdyaXRlIGV2ZW4gd2hlbiB0aGUgVFhGRiBmbGFnIGlzIHNldCB0aGVu IHRoZQorICAgICAqIGRhdGEgd2lsbCBiZSBzaWxlbnRseSBkcm9wcGVkLgorICAgICAqLworICAg IGlmICggeGVuY29uc19xdWV1ZWQob3V0X3Byb2QsIG91dF9jb25zLCBzaXplb2YoaW50Zi0+b3V0 KSkgIT0KKyAgICAgICAgIHNpemVvZiAoaW50Zi0+b3V0KSApCisgICAgeworICAgICAgICBpbnRm LT5vdXRbeGVuY29uc19tYXNrKG91dF9wcm9kLCBzaXplb2YoaW50Zi0+b3V0KSldID0gZGF0YTsK KyAgICAgICAgc21wX3dtYigpOworICAgICAgICBvdXRfcHJvZCArPSAxOworICAgICAgICBpbnRm LT5vdXRfcHJvZCA9IG91dF9wcm9kOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBn cHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVuZXhwZWN0ZWQgT1VUIHJpbmcgYnVmZmVyIGZ1 bGxcbiIpOworICAgIH0KKworICAgIGlmICggeGVuY29uc19xdWV1ZWQob3V0X3Byb2QsIG91dF9j b25zLCBzaXplb2YoaW50Zi0+b3V0KSkgPT0KKyAgICAgICAgIHNpemVvZiAoaW50Zi0+b3V0KSAp CisgICAgeworICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBUWEZGOworICAgICAgICB2cGwwMTEt PnVhcnRyaXMgJj0gflRYSTsKKyAgICB9CisKKyAgICB2cGwwMTEtPnVhcnRmciB8PSBCVVNZOwor CisgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRYRkU7CisKKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZs YWdzKTsKKworICAgIC8qCisgICAgICogU2VuZCBhbiBldmVudCB0byBjb25zb2xlIGJhY2tlbmQg dG8gaW5kaWNhdGUgdGhhdCB0aGVyZSBpcyAKKyAgICAgKiBkYXRhIGluIHRoZSBPVVQgcmluZyBi dWZmZXIuCisgICAgICovCisgICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGww MTEtPmV2dGNobik7Cit9CisKK3N0YXRpYyBpbnQgdnBsMDExX21taW9fcmVhZChzdHJ1Y3QgdmNw dSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWlvX2luZm9fdCAqaW5mbywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICpyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKnByaXYpCit7CisgICAgc3RydWN0IGhzcl9kYWJ0IGRhYnQgPSBp bmZvLT5kYWJ0OworICAgIHVpbnQzMl90IHZwbDAxMV9yZWcgPSAodWludDMyX3QpKGluZm8tPmdw YSAtIEdVRVNUX1BMMDExX0JBU0UpOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZ2LT5k b21haW4tPmFyY2gudnBsMDExOworCisgICAgc3dpdGNoICggdnBsMDExX3JlZyApCisgICAgewor ICAgIGNhc2UgRFI6CisgICAgICAgIC8qCisgICAgICAgICAqIFNpbmNlIHBsMDExIHJlZ2lzdGVy cyBhcmUgMzItYml0IHJlZ2lzdGVycywgYWxsIHJlZ2lzdGVycworICAgICAgICAgKiBhcmUgaGFu ZGxlZCBzaW1pbGFybHkgYWxsb3dpbmcgOC1iaXQsIDE2LWJpdCBhbmQgMzItYml0CisgICAgICAg ICAqIGFjY2Vzc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2No ZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgICpyID0gdnJlZ19y ZWczMl9leHRyYWN0KHZwbDAxMV9yZWFkX2RhdGEodi0+ZG9tYWluKSwgaW5mbyk7CisgICAgICAg IHJldHVybiAxOworCisgICAgY2FzZSBSU1I6CisgICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9j aGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICAvKiBJdCBhbHdh eXMgcmV0dXJucyAwIGFzIHRoZXJlIGFyZSBubyBwaHlzaWNhbCBlcnJvcnMuICovCisgICAgICAg ICpyID0gMDsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIEZSOgorICAgICAgICBpZiAo ICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAg ICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExLT51YXJ0ZnIsIGluZm8pOworICAg ICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgUklTOgorICAgICAgICBpZiAoICF2cGwwMTFfcmVn MzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgKnIgPSB2 cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExLT51YXJ0cmlzLCBpbmZvKTsKKyAgICAgICAgcmV0dXJu IDE7CisKKyAgICBjYXNlIE1JUzoKKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2Fj Y2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgICpyID0gdnJlZ19yZWczMl9l eHRyYWN0KHZwbDAxMS0+dWFydHJpcyAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2cGwwMTEtPnVhcnRpbXNjLCBpbmZvKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNl IElNU0M6CisgICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBn b3RvIGJhZF93aWR0aDsKKworICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEt PnVhcnRpbXNjLCBpbmZvKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIElDUjoKKyAg ICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dp ZHRoOworCisgICAgICAgIC8qIE9ubHkgd3JpdGUgaXMgdmFsaWQuICovCisgICAgICAgIHJldHVy biAwOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDEx OiB1bmhhbmRsZWQgcmVhZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgICAgIGRh YnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0 dXJuIDE7CisKK2JhZF93aWR0aDoKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IGJh ZCByZWFkIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCisgICAgICAgICAgICBkYWJ0LnNp emUsIGRhYnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMo KTsKKyAgICByZXR1cm4gMDsKKworfQorCitzdGF0aWMgaW50IHZwbDAxMV9tbWlvX3dyaXRlKHN0 cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWlvX2luZm9fdCAq aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfdCByLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwcml2KQoreworICAgIHN0cnVjdCBoc3JfZGFi dCBkYWJ0ID0gaW5mby0+ZGFidDsKKyAgICB1aW50MzJfdCB2cGwwMTFfcmVnID0gKHVpbnQzMl90 KShpbmZvLT5ncGEgLSBHVUVTVF9QTDAxMV9CQVNFKTsKKyAgICBzdHJ1Y3QgdnBsMDExICp2cGww MTEgPSAmdi0+ZG9tYWluLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ ZG9tYWluOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICBzd2l0Y2ggKCB2cGwwMTFf cmVnICkKKyAgICB7CisgICAgY2FzZSBEUjoKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGRhdGEg PSAwOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNpbmNlIHBsMDExIHJlZ2lzdGVycyBhcmUg MzItYml0IHJlZ2lzdGVycywgYWxsIHJlZ2lzdGVycworICAgICAgICAgKiBhcmUgaGFuZGxlZCBz aW1pbGFybHkgYWxsb3dpbmcgOC1iaXQsIDE2LWJpdCBhbmQgMzItYml0CisgICAgICAgICAqIGFj Y2Vzc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2Fj Y2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIHZyZWdfcmVnMzJfdXBkYXRl KCZkYXRhLCByLCBpbmZvKTsKKyAgICAgICAgZGF0YSAmPSAweEZGOworICAgICAgICB2cGwwMTFf d3JpdGVfZGF0YSh2LT5kb21haW4sIGRhdGEpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cisg ICAgY2FzZSBSU1I6IC8qIE5vdGhpbmcgdG8gY2xlYXIuICovCisgICAgICAgIGlmICggIXZwbDAx MV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICBy ZXR1cm4gMTsgCisKKyAgICBjYXNlIEZSOgorICAgIGNhc2UgUklTOgorICAgIGNhc2UgTUlTOgor ICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZTsKKworICAgIGNhc2UgSU1TQzoKKyAgICAgICAgaWYg KCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisg ICAgICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgdnJlZ19yZWczMl91cGRhdGUo JnZwbDAxMS0+dWFydGltc2MsIHIsIGluZm8pOworICAgICAgICBWUEwwMTFfVU5MT0NLKGQsIGZs YWdzKTsKKyAgICAgICAgdnBsMDExX3VwZGF0ZSh2LT5kb21haW4pOworICAgICAgICByZXR1cm4g MTsKKworICAgIGNhc2UgSUNSOgorICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNj ZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgVlBMMDExX0xPQ0soZCwgZmxh Z3MpOworICAgICAgICB2cmVnX3JlZzMyX2NsZWFyYml0cygmdnBsMDExLT51YXJ0cmlzLCByLCBp bmZvKTsKKyAgICAgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisgICAgICAgIHZwbDAxMV91 cGRhdGUoZCk7CisgICAgICAgIHJldHVybiAxOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgZ3By aW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiB1bmhhbmRsZWQgd3JpdGUgciVkIG9mZnNldCAlIzA4 eFxuIiwKKyAgICAgICAgICAgICAgICBkYWJ0LnJlZywgdnBsMDExX3JlZyk7CisgICAgICAgIHJl dHVybiAwOworICAgIH0KKword3JpdGVfaWdub3JlOgorICAgIHJldHVybiAxOworCitiYWRfd2lk dGg6CisgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiBiYWQgd3JpdGUgd2lkdGggJWQg ciVkIG9mZnNldCAlIzA4eFxuIiwKKyAgICAgICAgICAgIGRhYnQuc2l6ZSwgZGFidC5yZWcsIHZw bDAxMV9yZWcpOworICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91cygpOworICAgIHJldHVybiAw OworCit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyX29wcyB2cGwwMTFfbW1p b19oYW5kbGVyID0geworICAgIC5yZWFkID0gdnBsMDExX21taW9fcmVhZCwKKyAgICAud3JpdGUg PSB2cGwwMTFfbW1pb193cml0ZSwKK307CisKK3N0YXRpYyB2b2lkIHZwbDAxMV9kYXRhX2F2YWls KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1 Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisgICAgc3RydWN0IHhlbmNvbnNf aW50ZXJmYWNlICppbnRmID0gdnBsMDExLT5yaW5nX2J1ZjsKKyAgICBYRU5DT05TX1JJTkdfSURY IGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOworICAgIFhFTkNPTlNfUklOR19JRFggaW5fcHJvZCA9 IGludGYtPmluX3Byb2Q7CisgICAgWEVOQ09OU19SSU5HX0lEWCBvdXRfY29ucyA9IGludGYtPm91 dF9jb25zOworICAgIFhFTkNPTlNfUklOR19JRFggb3V0X3Byb2QgPSBpbnRmLT5vdXRfcHJvZDsK KyAgICBYRU5DT05TX1JJTkdfSURYIGluX3JpbmdfcXNpemUsIG91dF9yaW5nX3FzaXplOworCisg ICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworCisgICAgaW5fcmluZ19xc2l6ZSA9IHhlbmNvbnNf cXVldWVkKGluX3Byb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2Nv bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnRmLT5pbikp OworCisgICAgb3V0X3JpbmdfcXNpemUgPSB4ZW5jb25zX3F1ZXVlZChvdXRfcHJvZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9jb25zLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludGYtPm91dCkpOworCisgICAgLyogVXBkYXRl IHRoZSB1YXJ0IHJ4IHN0YXRlIGlmIHRoZSBidWZmZXIgaXMgbm90IGVtcHR5LiAqLworICAgIGlm ICggaW5fcmluZ19xc2l6ZSAhPSAwICkKKyAgICB7CisgICAgICAgIHZwbDAxMS0+dWFydGZyICY9 IH5SWEZFOworICAgICAgICBpZiAoIGluX3JpbmdfcXNpemUgPT0gc2l6ZW9mKGludGYtPmluKSAp CisgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZGOworICAgICAgICB2cGwwMTEtPnVh cnRyaXMgfD0gUlhJOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgdWFydCB0eCBzdGF0ZSBp ZiB0aGUgYnVmZmVyIGlzIG5vdCBmdWxsLiAqLworICAgIGlmICggb3V0X3JpbmdfcXNpemUgIT0g c2l6ZW9mKGludGYtPm91dCkgKQorICAgIHsKKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRY RkY7CisgICAgICAgIHZwbDAxMS0+dWFydHJpcyB8PSBUWEk7CisgICAgICAgIGlmICggb3V0X3Jp bmdfcXNpemUgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyICY9 IH5CVVNZOworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhGRTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgdnBsMDExX3VwZGF0 ZShkKTsKK30KKworCitzdGF0aWMgdm9pZCB2cGwwMTFfbm90aWZpY2F0aW9uKHN0cnVjdCB2Y3B1 ICp2LCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICB2cGwwMTFfZGF0YV9hdmFpbCh2LT5kb21h aW4pOworfQorCitpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCB2cGwwMTFfaW5pdF9pbmZvICppbmZvKQoreworICAgIGludCByYzsKKyAgICBzdHJ1Y3QgdnBs MDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisKKyAgICBpZiAoIHZwbDAxMS0+cmluZ19i dWYgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIE1hcCB0aGUgZ3Vlc3QgUEZOIHRvIFhl biBhZGRyZXNzIHNwYWNlLiAqLworICAgIHJjID0gIHByZXBhcmVfcmluZ19mb3JfaGVscGVyKGQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3goaW5mby0+Z2ZuKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nX3BhZ2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmluZ19idWYpOworICAgIGlm ICggcmMgPCAwICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHZnaWNfcmVzZXJ2ZV92 aXJxKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOworICAgIGlmICggIXJjICkKKyAgICB7CisgICAgICAg IHJjID0gLUVJTlZBTDsKKyAgICAgICAgZ290byBvdXQxOworICAgIH0KKworICAgIHJlZ2lzdGVy X21taW9faGFuZGxlcihkLCAmdnBsMDExX21taW9faGFuZGxlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgR1VFU1RfUEwwMTFfQkFTRSwgR1VFU1RfUEwwMTFfU0laRSwgTlVMTCk7CisKKyAg ICBzcGluX2xvY2tfaW5pdCgmdnBsMDExLT5sb2NrKTsKKworICAgIHJjID0gYWxsb2NfdW5ib3Vu ZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5jb25zb2xlX2RvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cGwwMTFfbm90aWZpY2F0aW9uKTsKKyAg ICBpZiAoIHJjIDwgMCApCisgICAgICAgIGdvdG8gb3V0MjsKKworICAgIHZwbDAxMS0+ZXZ0Y2hu ID0gaW5mby0+ZXZ0Y2huID0gcmM7CisKKyAgICByZXR1cm4gMDsKKworb3V0MjoKKyAgICB4ZnJl ZShkLT5hcmNoLnZtbWlvLmhhbmRsZXJzKTsKKyAgICB2Z2ljX2ZyZWVfdmlycShkLCBHVUVTVF9W UEwwMTFfU1BJKTsKKworb3V0MToKKyAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBlcigmdnBsMDEx LT5yaW5nX2J1ZiwgdnBsMDExLT5yaW5nX3BhZ2UpOworCitvdXQ6CisgICAgcmV0dXJuIHJjOwor fQorCit2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAg c3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworCisgICAgaWYgKCAhdnBs MDExLT5yaW5nX2J1ZiApCisgICAgICAgIHJldHVybjsKKworICAgIGZyZWVfeGVuX2V2ZW50X2No YW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOworICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2 cGwwMTEtPnJpbmdfYnVmLCB2cGwwMTEtPnJpbmdfcGFnZSk7CisgICAgeGZyZWUoZC0+YXJjaC52 bW1pby5oYW5kbGVycyk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCmluZGV4IDZkZTgw ODIuLjkxZDEwNjEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1 ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+CiAjaW5jbHVkZSA8eGVuL3NlcmlhbC5oPgogI2luY2x1 ZGUgPHhlbi9yYnRyZWUuaD4KKyNpbmNsdWRlIDxhc20tYXJtL3ZwbDAxMS5oPgogCiBzdHJ1Y3Qg aHZtX2RvbWFpbgogewpAQCAtMTMzLDYgKzEzNCwxMSBAQCBzdHJ1Y3QgYXJjaF9kb21haW4KICAg ICBzdHJ1Y3QgewogICAgICAgICB1aW50OF90IHByaXZpbGVnZWRfY2FsbF9lbmFibGVkIDogMTsK ICAgICB9IG1vbml0b3I7CisKKyNpZmRlZiBDT05GSUdfVlBMMDExX0NPTlNPTEUKKyAgICBzdHJ1 Y3QgdnBsMDExIHZwbDAxMTsKKyNlbmRpZgorCiB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwogCiBz dHJ1Y3QgYXJjaF92Y3B1CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVh cnQuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCmluZGV4IDEyM2Y0NzcuLjU3 ZTllYzcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCkBAIC00OSw2ICs0OSw4IEBACiAvKiBG UiBiaXRzICovCiAjZGVmaW5lIFRYRkUgICAoMTw8NykgLyogVFggRklGTyBlbXB0eSAqLwogI2Rl ZmluZSBSWEZFICAgKDE8PDQpIC8qIFJYIEZJRk8gZW1wdHkgKi8KKyNkZWZpbmUgVFhGRiAgICgx PDw1KSAvKiBUWCBGSUZPIGZ1bGwgKi8KKyNkZWZpbmUgUlhGRiAgICgxPDw2KSAvKiBSWCBGSUZP IGZ1bGwgKi8KICNkZWZpbmUgQlVTWSAgICgxPDwzKSAvKiBUcmFuc21pdCBpcyBub3QgY29tcGxl dGUgKi8KIAogLyogTENSX0ggYml0cyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFy bS92cGwwMTEuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlMzMyZAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vdnBsMDExLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIGluY2x1ZGUveGVu L3ZwbDAxMS5oCisgKgorICogVmlydHVhbCBQTDAxMSBVQVJUCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv cgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgX1ZQTDAxMV9IXworCisjZGVmaW5lIF9W UEwwMTFfSF8KKworI2luY2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4KKyNpbmNsdWRlIDxwdWJsaWMv aW8vcmluZy5oPgorI2luY2x1ZGUgPGFzbS1hcm0vdnJlZy5oPgorI2luY2x1ZGUgPHhlbi9tbS5o PgorCisvKiBoZWxwZXIgbWFjcm9zICovCisjZGVmaW5lIFZQTDAxMV9MT0NLKGQsZmxhZ3MpIHNw aW5fbG9ja19pcnFzYXZlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZsYWdzKQorI2RlZmluZSBW UEwwMTFfVU5MT0NLKGQsZmxhZ3MpIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJihkKS0+YXJjaC52 cGwwMTEubG9jaywgZmxhZ3MpCisKK3N0cnVjdCB2cGwwMTEgeworICAgIHZvaWQgKnJpbmdfYnVm OworICAgIHN0cnVjdCBwYWdlX2luZm8gKnJpbmdfcGFnZTsKKyAgICB1aW50MzJfdCAgICB1YXJ0 ZnI7ICAgICAvKiBGbGFnIHJlZ2lzdGVyICovCisgICAgdWludDMyX3QgICAgdWFydGNyOyAgICAg LyogQ29udHJvbCByZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAgIHVhcnRpbXNjOyAgIC8qIElu dGVycnVwdCBtYXNrIHJlZ2lzdGVyKi8KKyAgICB1aW50MzJfdCAgICB1YXJ0aWNyOyAgICAvKiBJ bnRlcnJ1cHQgY2xlYXIgcmVnaXN0ZXIgKi8KKyAgICB1aW50MzJfdCAgICB1YXJ0cmlzOyAgICAv KiBSYXcgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAgIHVhcnRt aXM7ICAgIC8qIE1hc2tlZCBpbnRlcnJ1cHQgcmVnaXN0ZXIgKi8KKyAgICBzcGlubG9ja190ICBs b2NrOworICAgIGV2dGNobl9wb3J0X3QgZXZ0Y2huOworfTsKKworc3RydWN0IHZwbDAxMV9pbml0 X2luZm8geworICAgIHVpbnQzMl90IGNvbnNvbGVfZG9taWQ7CisgICAgZ2ZuX3QgZ2ZuOworICAg IGV2dGNobl9wb3J0X3QgZXZ0Y2huOworfTsKKworI2lmZGVmIENPTkZJR19WUEwwMTFfQ09OU09M RQoraW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAqaW5mbyk7Cit2b2lkIGRvbWFpbl92 cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50 IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2cGwwMTFfaW5pdF9pbmZvICppbmZvKQoreworICAg IHJldHVybiAtRU5PU1lTOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZG9tYWluX3ZwbDAxMV9k ZWluaXQoc3RydWN0IGRvbWFpbiAqZCkgeyB9CisjZW5kaWYKKworI2VuZGlmCisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8K ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIveGVuL2luY2x1ZGUv cHVibGljL2FyY2gtYXJtLmgKaW5kZXggYmQ5NzRmYi4uODVhYjY2NSAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gt YXJtLmgKQEAgLTQxMCw2ICs0MTAsMTAgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tf dDsKICNkZWZpbmUgR1VFU1RfQUNQSV9CQVNFIDB4MjAwMDAwMDBVTEwKICNkZWZpbmUgR1VFU1Rf QUNQSV9TSVpFIDB4MDIwMDAwMDBVTEwKIAorLyogUEwwMTEgbWFwcGluZ3MgKi8KKyNkZWZpbmUg R1VFU1RfUEwwMTFfQkFTRSAgICAweDIyMDAwMDAwVUxMCisjZGVmaW5lIEdVRVNUX1BMMDExX1NJ WkUgICAgMHgwMDAwMTAwMFVMTAorCiAvKgogICogMTZNQiA9PSA0MDk2IHBhZ2VzIHJlc2VydmVk IGZvciBndWVzdCB0byB1c2UgYXMgYSByZWdpb24gdG8gbWFwIGl0cwogICogZ3JhbnQgdGFibGUg aW4uCkBAIC00NDQsNiArNDQ4LDggQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsK ICNkZWZpbmUgR1VFU1RfVElNRVJfUEhZU19OU19QUEkgMzAKICNkZWZpbmUgR1VFU1RfRVZUQ0hO X1BQSSAgICAgICAgMzEKIAorI2RlZmluZSBHVUVTVF9WUEwwMTFfU1BJICAgICAgICAzMgorCiAv KiBQU0NJIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBQU0NJX2NwdV9zdXNwZW5kIDAKICNkZWZpbmUg UFNDSV9jcHVfb2ZmICAgICAxCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY29u c29sZS5oIGIveGVuL2luY2x1ZGUvcHVibGljL2lvL2NvbnNvbGUuaAppbmRleCBlMmNkOTdmLi41 ZTQ1ZTFjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY29uc29sZS5oCisrKyBi L3hlbi9pbmNsdWRlL3B1YmxpYy9pby9jb25zb2xlLmgKQEAgLTI3LDYgKzI3LDggQEAKICNpZm5k ZWYgX19YRU5fUFVCTElDX0lPX0NPTlNPTEVfSF9fCiAjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19D T05TT0xFX0hfXwogCisjaW5jbHVkZSAicmluZy5oIgorCiB0eXBlZGVmIHVpbnQzMl90IFhFTkNP TlNfUklOR19JRFg7CiAKICNkZWZpbmUgTUFTS19YRU5DT05TX0lEWChpZHgsIHJpbmcpICgoaWR4 KSAmIChzaXplb2YocmluZyktMSkpCkBAIC0zOCw2ICs0MCw4IEBAIHN0cnVjdCB4ZW5jb25zX2lu dGVyZmFjZSB7CiAgICAgWEVOQ09OU19SSU5HX0lEWCBvdXRfY29ucywgb3V0X3Byb2Q7CiB9Owog CitERUZJTkVfWEVOX0ZMRVhfUklORyh4ZW5jb25zKTsKKwogI2VuZGlmIC8qIF9fWEVOX1BVQkxJ Q19JT19DT05TT0xFX0hfXyAqLwogCiAvKgotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK