From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 04/17 v5] xen/arm: vpl011: Add SBSA UART emulation in Xen Date: Thu, 22 Jun 2017 13:08:39 +0530 Message-ID: <1498117132-27139-5-git-send-email-bhupinder.thakur@linaro.org> References: <1498117132-27139-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 1dNwhu-0005OP-EH for xen-devel@lists.xenproject.org; Thu, 22 Jun 2017 07:39:14 +0000 Received: by mail-pf0-f181.google.com with SMTP id c73so5127495pfk.2 for ; Thu, 22 Jun 2017 00:39:12 -0700 (PDT) In-Reply-To: <1498117132-27139-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: Andre Przywara , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org QWRkIGVtdWxhdGlvbiBjb2RlIHRvIGVtdWxhdGUgcmVhZC93cml0ZSBhY2Nlc3MgdG8gcGwwMTEg cmVnaXN0ZXJzCmFuZCBwbDAxMSBpbnRlcnJ1cHRzOgoKICAgIC0gRW11bGF0ZSBEUiByZWFkL3dy aXRlIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbS90byB0aGUgSU4KICAgICAgYW5kIE9VVCBy aW5nIGJ1ZmZlcnMgYW5kIHJhaXNpbmcgYW4gZXZlbnQgdG8gdGhlIGJhY2tlbmQgd2hlbgogICAg ICB0aGVyZSBpcyBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBhbiBp bnRlcnJ1cHQKICAgICAgdG8gdGhlIGd1ZXN0IHdoZW4gdGhlcmUgaXMgZGF0YSBpbiB0aGUgSU4g cmluZyBidWZmZXIKCiAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0byBpbnRlcnJ1 cHQgbWFuYWdlbWVudCBhbmQKICAgICAgZXNzZW50aWFsbHkgY29udHJvbCB3aGVuIGludGVycnVw dHMgYXJlIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QKClRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUg U0JTQSBHZW5lcmljIFVBUlQgd2hpY2ggaXMgYSBzdWJzZXQgb2YgQVJNClBMMDExIFVBUlQuCgpU aGUgU0JTQSBHZW5lcmljIFVBUlQgaXMgY292ZXJlZCBpbiBBcHBlbmRpeCBCIG9mCmh0dHBzOi8v c3RhdGljLmRvY3MuYXJtLmNvbS9kZW4wMDI5L2EvU2VydmVyX0Jhc2VfU3lzdGVtX0FyY2hpdGVj dHVyZV92M18xX0FSTV9ERU5fMDAyOUEucGRmCgpTaWduZWQtb2ZmLWJ5OiBCaHVwaW5kZXIgVGhh a3VyIDxiaHVwaW5kZXIudGhha3VyQGxpbmFyby5vcmc+Ci0tLQpDQzogU3RlZmFubyBTdGFiZWxs aW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3Jh bGxAYXJtLmNvbT4KQ0M6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgoK Q2hhbmdlcyBzaW5jZSB2NDoKLSBSZW5hbWVkIHZwbDAxMV91cGRhdGUoKSB0byB2cGwwMTFfdXBk YXRlX2ludGVycnVwdF9zdGF0dXMoKSBhbmQgYWRkZWQgbG9naWMgdG8gYXZvaWQKICByYWlzaW5n IHNwdXJpb3VzIGludGVycnVwdHMuCi0gVXNlZCBiYXJyaWVyIGluc3RydWN0aW9ucyBjb3JyZWN0 bHkgd2hpbGUgcmVhZGluZy93cml0aW5nIGRhdGEgdG8gdGhlIHJpbmcgYnVmZmVyLgotIFByb3Bl ciBsb2NrIHRha2VuIGJlZm9yZSByZWFkaW5nIHJpbmcgYnVmZmVyIGluZGljZXMuCgpDaGFuZ2Vz IHNpbmNlIHYzOgotIE1vdmVkIHRoZSBjYWxsIHRvIERFRklORV9YRU5fRkxFWF9SSU5HIGZyb20g dnBsMDExLmggdG8gcHVibGljL2NvbnNvbGUuaC4gVGhpcyBtYWNybyBkZWZpbmVzCiAgc3RhbmRh cmQgZnVuY3Rpb25zIHRvIG9wZXJhdGUgb24gdGhlIHJpbmcgYnVmZmVyLgotIExvY2sgdGFrZW4g d2hpbGUgdXBkYXRpbmcgdGhlIGludGVycnVwdCBtYXNrIGFuZCBjbGVhciByZWdpc3RlcnMgaW4g bW1pb193cml0ZS4KLSBVc2UgZ2ZuX3QgaW5zdGVhZCBvZiB4ZW5fcGZuX3QuCi0gdmdpY19mcmVl X3ZpcnEgY2FsbGVkIGlmIHRoZXJlIGlzIGFueSBlcnJvciBpbiB2cGwwMTEgaW5pdGlhbGl6YXRp b24uCi0gbW1pbyBoYW5kbGVycyBmcmVlZCBpZiB0aGVyZSBpcyBhbnkgZXJyb3IgaW4gdnBsMDEx IGluaXRpYWxpemF0aW9uLgotIFJlbW92ZWQgdnBsMDExLT5pbml0aWFsaXplZCBmbGFnIHVzYWdl IGFzIHRoZSBzYW1lIGNoZWNrIGNvdWxkIGJlIGRvbmUgCiAgdXNpbmcgdnBsMDExLT5yaW5nLXJl Zi4KLSBVc2VkIHJldHVybiBpbnN0ZWFkIG9mIGJyZWFrIGluIHRoZSBzd2l0Y2ggaGFuZGxpbmcg b2YgZW11bGF0aW9uIG9mIGRpZmZlcmVudCBwbDAxMSByZWdpc3RlcnMuCi0gUmVuYW1lZCB2cGww MTFfdXBkYXRlX3NwaSgpIHRvIHZwbDAxMV91cGRhdGUoKS4KCkNoYW5nZXMgc2luY2UgdjI6Ci0g VXNlIGdlbmVyaWMgdnJlZ19yZWcqIGZvciByZWFkL3dyaXRlIG9mIHJlZ2lzdGVycyBlbXVsYXRp bmcgcGwwMTEuCi0gVXNlIGdlbmVyaWMgcmluZyBidWZmZXIgZnVuY3Rpb25zIGRlZmluZWQgdXNp bmcgREVGSU5FX1hFTl9GTEVYX1JJTkcuCi0gUmVuYW1lZCB0aGUgU1BJIGluamVjdGlvbiBmdW5j dGlvbiB0byB2cGwwMTFfdXBkYXRlX3NwaSgpIHRvIHJlZmxlY3QgbGV2ZWwgCiAgdHJpZ2dlcmVk IG5hdHVyZSBvZiBwbDAxMSBpbnRlcnJ1cHRzLgotIFRoZSBwbDAxMSByZWdpc3RlciBhY2Nlc3Mg YWRkcmVzcyBzaG91bGQgYWx3YXlzIGJlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlCiAgY29ycmVz cG9uZGluZyByZWdpc3RlciBhcyBwZXIgc2VjdGlvbiBCIG9mIHRoZSBTQlNBIGRvY3VtZW50LiBG b3IgdGhpcyByZWFzb24sCiAgdGhlIHJlZ2lzdGVyIHJhbmdlIGFkZHJlc3MgYWNjZXNzIGlzIG5v dCBhbGxvd2VkLgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBSZW1vdmVkIHRoZSBvcHRpbWl6dGlvbiBy ZWxhdGVkIHRvIHNlbmRpaW5nIGV2ZW50cyB0byB4ZW5jb25zb2xlIAotIFVzZSBsb2NhbCB2YXJp YWJsZXMgYXMgcmluZyBidWZmZXIgaW5kaWNlcyB3aGlsZSB1c2luZyB0aGUgcmluZyBidWZmZXIK CiB4ZW4vYXJjaC9hcm0vS2NvbmZpZyAgICAgICAgICAgICB8ICAgNyArCiB4ZW4vYXJjaC9hcm0v TWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0vdnBsMDExLmMgICAgICAg ICAgICB8IDQ0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9p bmNsdWRlL2FzbS1hcm0vZG9tYWluLmggICAgIHwgICA2ICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0v cGwwMTEtdWFydC5oIHwgICAyICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmggICAgIHwg IDczICsrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oICAgIHwgICA2ICsKIDcg ZmlsZXMgY2hhbmdlZCwgNTQ0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v YXJjaC9hcm0vdnBsMDExLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20tYXJt L3ZwbDAxMS5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94ZW4vYXJjaC9h cm0vS2NvbmZpZwppbmRleCBkNDZiOThjLi5mNTgwMTlkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h cm0vS2NvbmZpZworKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwpAQCAtNTAsNiArNTAsMTMgQEAg Y29uZmlnIEhBU19JVFMKICAgICAgICAgcHJvbXB0ICJHSUN2MyBJVFMgTVNJIGNvbnRyb2xsZXIg c3VwcG9ydCIgaWYgRVhQRVJUID0gInkiCiAgICAgICAgIGRlcGVuZHMgb24gSEFTX0dJQ1YzCiAK K2NvbmZpZyBTQlNBX1ZVQVJUX0NPTlNPTEUKKwlib29sICJFbXVsYXRlZCBTQlNBIFVBUlQgY29u c29sZSBzdXBwb3J0IgorCWRlZmF1bHQgeQorCS0tLWhlbHAtLS0KKwkgIEFsbG93cyBhIGd1ZXN0 IHRvIHVzZSBTQlNBIEdlbmVyaWMgVUFSVCBhcyBhIGNvbnNvbGUuIFRoZQorCSAgU0JTQSBHZW5l cmljIFVBUlQgaW1wbGVtZW50cyBhIHN1YnNldCBvZiBBUk0gUEwwMTEgVUFSVC4KKwogZW5kbWVu dQogCiBtZW51ICJBUk0gZXJyYXRhIHdvcmthcm91bmQgdmlhIHRoZSBhbHRlcm5hdGl2ZSBmcmFt ZXdvcmsiCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0v TWFrZWZpbGUKaW5kZXggNDllMWZiMi4uZDljNmViZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtNTAsNiArNTAsNyBAQCBv YmotJChDT05GSUdfSEFTX0dJQ1YzKSArPSB2Z2ljLXYzLm8KIG9iai0kKENPTkZJR19IQVNfSVRT KSArPSB2Z2ljLXYzLWl0cy5vCiBvYmoteSArPSB2bV9ldmVudC5vCiBvYmoteSArPSB2dGltZXIu bworb2JqLSQoQ09ORklHX1NCU0FfVlVBUlRfQ09OU09MRSkgKz0gdnBsMDExLm8KIG9iai15ICs9 IHZwc2NpLm8KIG9iai15ICs9IHZ1YXJ0Lm8KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Zw bDAxMS5jIGIveGVuL2FyY2gvYXJtL3ZwbDAxMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmRiODY1MWMKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vdnBsMDEx LmMKQEAgLTAsMCArMSw0NDkgQEAKKy8qCisgKiBhcmNoL2FybS92cGwwMTEuYworICoKKyAqIFZp cnR1YWwgUEwwMTEgVUFSVAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICog dmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBi ZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlz IHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq LworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5j bHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVk ZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5o PgorI2luY2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaW8vY29uc29s ZS5oPgorI2luY2x1ZGUgPGFzbS1hcm0vcGwwMTEtdWFydC5oPgorI2luY2x1ZGUgPGFzbS1hcm0v dmdpYy1lbXVsLmg+CisjaW5jbHVkZSA8YXNtL3ZwbDAxMS5oPgorCisvKgorICogU2luY2UgcGww MTEgcmVnaXN0ZXJzIGFyZSAzMi1iaXQgcmVnaXN0ZXJzLCBhbGwgcmVnaXN0ZXJzCisgKiBhcmUg aGFuZGxlZCBzaW1pbGFybHkgYWxsb3dpbmcgOC1iaXQsIDE2LWJpdCBhbmQgMzItYml0CisgKiBh Y2Nlc3NlcyBleGNlcHQgNjQtYml0IGFjY2Vzcy4KKyAqLworc3RhdGljIGJvb2wgdnBsMDExX3Jl ZzMyX2NoZWNrX2FjY2VzcyhzdHJ1Y3QgaHNyX2RhYnQgZGFidCkKK3sKKyAgICByZXR1cm4gKGRh YnQuc2l6ZSAhPSBEQUJUX0RPVUJMRV9XT1JEKTsKK30KKworc3RhdGljIHZvaWQgdnBsMDExX3Vw ZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgc3RydWN0IHZw bDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworICAgIHVpbnQzMl90IGludGVycnVwdF9z dGF0dXMgPSB2cGwwMTEtPnVhcnRyaXMgJiB2cGwwMTEtPnVhcnRpbXNjOworCisgICAgLyoKKyAg ICAgKiBUT0RPOiBQTDAxMSBpbnRlcnJ1cHRzIGFyZSBsZXZlbCB0cmlnZ2VyZWQgd2hpY2ggbWVh bnMKKyAgICAgKiB0aGF0IGludGVycnVwdCBuZWVkcyB0byBiZSBzZXQvY2xlYXIgaW5zdGVhZCBv ZiBiZWluZworICAgICAqIGluamVjdGVkLiBIb3dldmVyLCBjdXJyZW50bHkgdkdJQyBkb2VzIG5v dCBoYW5kbGUgbGV2ZWwKKyAgICAgKiB0cmlnZ2VyZWQgaW50ZXJydXB0cyBwcm9wZXJseS4gVGhp cyBmdW5jdGlvbiBuZWVkcyB0byBiZQorICAgICAqIHJldmlzaXRlZCBvbmNlIHZHSUMgc3RhcnRz IGhhbmRsaW5nIGxldmVsIHRyaWdnZXJlZAorICAgICAqIGludGVycnVwdHMuCisgICAgICovCisK KyAgICAvKgorICAgICAqIFJhaXNlIGFuIGludGVycnVwdCBvbmx5IGlmIGFueSBhZGRpdGlvbmFs IGludGVycnVwdAorICAgICAqIHN0YXR1cyBiaXQgaGFzIGJlZW4gc2V0IHNpbmNlIHRoZSBsYXN0 IHRpbWUuCisgICAgICovCisgICAgaWYgKCBpbnRlcnJ1cHRfc3RhdHVzICYgfnZwbDAxMS0+c2hh ZG93X3VhcnRyaXMgKQorICAgICAgICB2Z2ljX3ZjcHVfaW5qZWN0X3NwaShkLCBHVUVTVF9WUEww MTFfU1BJKTsKKworICAgIHZwbDAxMS0+c2hhZG93X3VhcnRyaXMgPSBpbnRlcnJ1cHRfc3RhdHVz OworfQorCitzdGF0aWMgdWludDhfdCB2cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21haW4gKmQp Cit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICB1aW50OF90IGRhdGEgPSAwOworICAg IHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgeGVu Y29uc19pbnRlcmZhY2UgKmludGYgPSB2cGwwMTEtPnJpbmdfYnVmOworICAgIFhFTkNPTlNfUklO R19JRFggaW5fY29ucywgaW5fcHJvZDsKKworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKwor ICAgIGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOworICAgIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9k OworCisgICAgc21wX3JtYigpOworCisgICAgLyoKKyAgICAgKiBJdCBpcyBleHBlY3RlZCB0aGF0 IHRoZXJlIHdpbGwgYmUgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIgd2hlbiB0aGlzCisgICAgICog ZnVuY3Rpb24gaXMgY2FsbGVkIHNpbmNlIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byByZWFkIHRo ZSBkYXRhIHJlZ2lzdGVyCisgICAgICogb25seSBpZiB0aGUgVFhGRSBmbGFnIGlzIG5vdCBzZXQu CisgICAgICogSWYgdGhlIGd1ZXN0IHN0aWxsIGRvZXMgcmVhZCB3aGVuIFRYRkUgYml0IGlzIHNl dCB0aGVuIDAgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBpZiAoIHhlbmNvbnNfcXVl dWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID4gMCApCisgICAgeworICAg ICAgICBkYXRhID0gaW50Zi0+aW5beGVuY29uc19tYXNrKGluX2NvbnMsIHNpemVvZihpbnRmLT5p bikpXTsKKyAgICAgICAgaW5fY29ucyArPSAxOworICAgICAgICBzbXBfbWIoKTsKKyAgICAgICAg aW50Zi0+aW5fY29ucyA9IGluX2NvbnM7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZ3ByaW50 ayhYRU5MT0dfRVJSLCAidnBsMDExOiBVbmV4cGVjdGVkIElOIHJpbmcgYnVmZmVyIGVtcHR5XG4i KTsKKworICAgIGlmICggeGVuY29uc19xdWV1ZWQoaW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGlu dGYtPmluKSkgPT0gMCApCisgICAgeworICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZFOwor ICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0gflJYSTsKKyAgICB9CisKKyAgICB2cGwwMTEtPnVh cnRmciAmPSB+UlhGRjsKKworICAgIHZwbDAxMV91cGRhdGVfaW50ZXJydXB0X3N0YXR1cyhkKTsK KworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgLyoKKyAgICAgKiBTZW5kIGFu IGV2ZW50IHRvIGNvbnNvbGUgYmFja2VuZCB0byBpbmRpY2F0ZSB0aGF0IGRhdGEgaGFzIGJlZW4K KyAgICAgKiByZWFkIGZyb20gdGhlIElOIHJpbmcgYnVmZmVyLgorICAgICAqLworICAgIG5vdGlm eV92aWFfeGVuX2V2ZW50X2NoYW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOworCisgICAgcmV0dXJu IGRhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHZwbDAxMV93cml0ZV9kYXRhKHN0cnVjdCBkb21haW4g KmQsIHVpbnQ4X3QgZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHN0cnVj dCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgeGVuY29uc19p bnRlcmZhY2UgKmludGYgPSB2cGwwMTEtPnJpbmdfYnVmOworICAgIFhFTkNPTlNfUklOR19JRFgg b3V0X2NvbnMsIG91dF9wcm9kOworCisgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworCisgICAg b3V0X2NvbnMgPSBpbnRmLT5vdXRfY29uczsKKyAgICBvdXRfcHJvZCA9IGludGYtPm91dF9wcm9k OworCisgICAgc21wX3JtYigpOworCisgICAgLyoKKyAgICAgKiBJdCBpcyBleHBlY3RlZCB0aGF0 IHRoZSByaW5nIGlzIG5vdCBmdWxsIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAg KiBhcyB0aGUgZ3Vlc3QgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgdG8gdGhlIGRhdGEgcmVnaXN0ZXIg b25seSB3aGVuIHRoZQorICAgICAqIFRYRkYgZmxhZyBpcyBub3Qgc2V0LgorICAgICAqIEluIGNh c2UgdGhlIGd1ZXN0IGRvZXMgd3JpdGUgZXZlbiB3aGVuIHRoZSBUWEZGIGZsYWcgaXMgc2V0IHRo ZW4gdGhlCisgICAgICogZGF0YSB3aWxsIGJlIHNpbGVudGx5IGRyb3BwZWQuCisgICAgICovCisg ICAgaWYgKCB4ZW5jb25zX3F1ZXVlZChvdXRfcHJvZCwgb3V0X2NvbnMsIHNpemVvZihpbnRmLT5v dXQpKSAhPQorICAgICAgICAgc2l6ZW9mIChpbnRmLT5vdXQpICkKKyAgICB7CisgICAgICAgIGlu dGYtPm91dFt4ZW5jb25zX21hc2sob3V0X3Byb2QsIHNpemVvZihpbnRmLT5vdXQpKV0gPSBkYXRh OworICAgICAgICBvdXRfcHJvZCArPSAxOworICAgICAgICBzbXBfd21iKCk7CisgICAgICAgIGlu dGYtPm91dF9wcm9kID0gb3V0X3Byb2Q7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZ3ByaW50 ayhYRU5MT0dfRVJSLCAidnBsMDExOiBVbmV4cGVjdGVkIE9VVCByaW5nIGJ1ZmZlciBmdWxsXG4i KTsKKworICAgIGlmICggeGVuY29uc19xdWV1ZWQob3V0X3Byb2QsIG91dF9jb25zLCBzaXplb2Yo aW50Zi0+b3V0KSkgPT0KKyAgICAgICAgIHNpemVvZiAoaW50Zi0+b3V0KSApCisgICAgeworICAg ICAgICB2cGwwMTEtPnVhcnRmciB8PSBUWEZGOworICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0g flRYSTsKKyAgICB9CisKKyAgICB2cGwwMTEtPnVhcnRmciB8PSBCVVNZOworCisgICAgdnBsMDEx LT51YXJ0ZnIgJj0gflRYRkU7CisKKyAgICB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMo ZCk7CisKKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAgICogU2Vu ZCBhbiBldmVudCB0byBjb25zb2xlIGJhY2tlbmQgdG8gaW5kaWNhdGUgdGhhdCB0aGVyZSBpcwor ICAgICAqIGRhdGEgaW4gdGhlIE9VVCByaW5nIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBub3RpZnlf dmlhX3hlbl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKK30KKworc3RhdGljIGlu dCB2cGwwMTFfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1taW9faW5mb190ICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl Z2lzdGVyX3QgKnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHJpdikKK3sK KyAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7CisgICAgdWludDMyX3QgdnBs MDExX3JlZyA9ICh1aW50MzJfdCkoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFfQkFTRSk7CisgICAg c3RydWN0IHZwbDAxMSAqdnBsMDExID0gJnYtPmRvbWFpbi0+YXJjaC52cGwwMTE7CisgICAgc3Ry dWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisg ICAgc3dpdGNoICggdnBsMDExX3JlZyApCisgICAgeworICAgIGNhc2UgRFI6CisgICAgICAgIGlm ICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKwor ICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTFfcmVhZF9kYXRhKGQpLCBpbmZv KTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIFJTUjoKKyAgICAgICAgaWYgKCAhdnBs MDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAg IC8qIEl0IGFsd2F5cyByZXR1cm5zIDAgYXMgdGhlcmUgYXJlIG5vIHBoeXNpY2FsIGVycm9ycy4g Ki8KKyAgICAgICAgKnIgPSAwOworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRlI6Cisg ICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93 aWR0aDsKKworICAgICAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisgICAgICAgICpyID0gdnJl Z19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydGZyLCBpbmZvKTsKKyAgICAgICAgVlBMMDExX1VO TE9DSyhkLCBmbGFncyk7CisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBSSVM6CisgICAg ICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0 aDsKKworICAgICAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisgICAgICAgICpyID0gdnJlZ19y ZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydHJpcywgaW5mbyk7CisgICAgICAgIFZQTDAxMV9VTkxP Q0soZCwgZmxhZ3MpOworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgTUlTOgorICAgICAg ICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7 CisKKyAgICAgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworICAgICAgICAqciA9IHZyZWdfcmVn MzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRyaXMgJiB2cGwwMTEtPnVhcnRpbXNjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmZvKTsKKyAgICAgICAgVlBMMDExX1VOTE9DSyhkLCBm bGFncyk7CisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBJTVNDOgorICAgICAgICBpZiAo ICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAg ICAgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0 cmFjdCh2cGwwMTEtPnVhcnRpbXNjLCBpbmZvKTsKKyAgICAgICAgVlBMMDExX1VOTE9DSyhkLCBm bGFncyk7CisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBJQ1I6CisgICAgICAgIGlmICgg IXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAg ICAgICAvKiBPbmx5IHdyaXRlIGlzIHZhbGlkLiAqLworICAgICAgICByZXR1cm4gMDsKKworICAg IGRlZmF1bHQ6CisgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogdW5oYW5kbGVk IHJlYWQgciVkIG9mZnNldCAlIzA4eFxuIiwKKyAgICAgICAgICAgICAgICBkYWJ0LnJlZywgdnBs MDExX3JlZyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworCiti YWRfd2lkdGg6CisgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiBiYWQgcmVhZCB3aWR0 aCAlZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgZGFidC5zaXplLCBkYWJ0LnJl ZywgdnBsMDExX3JlZyk7CisgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7CisgICAgcmV0 dXJuIDA7CisKK30KKworc3RhdGljIGludCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAq diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW1pb19pbmZvX3QgKmluZm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3QgciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqcHJpdikKK3sKKyAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGlu Zm8tPmRhYnQ7CisgICAgdWludDMyX3QgdnBsMDExX3JlZyA9ICh1aW50MzJfdCkoaW5mby0+Z3Bh IC0gR1VFU1RfUEwwMTFfQkFTRSk7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJnYtPmRv bWFpbi0+YXJjaC52cGwwMTE7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgc3dpdGNoICggdnBsMDExX3JlZyApCisgICAg eworICAgIGNhc2UgRFI6CisgICAgeworICAgICAgICB1aW50MzJfdCBkYXRhID0gMDsKKworICAg ICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lk dGg7CisKKyAgICAgICAgdnJlZ19yZWczMl91cGRhdGUoJmRhdGEsIHIsIGluZm8pOworICAgICAg ICB2cGwwMTFfd3JpdGVfZGF0YSh2LT5kb21haW4sIGRhdGEpOworICAgICAgICByZXR1cm4gMTsK KyAgICB9CisgICAgY2FzZSBSU1I6IC8qIE5vdGhpbmcgdG8gY2xlYXIuICovCisgICAgICAgIGlm ICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKwor ICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRlI6CisgICAgY2FzZSBSSVM6CisgICAgY2Fz ZSBNSVM6CisgICAgICAgIGdvdG8gd3JpdGVfaWdub3JlOworCisgICAgY2FzZSBJTVNDOgorICAg ICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lk dGg7CisKKyAgICAgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworICAgICAgICB2cmVnX3JlZzMy X3VwZGF0ZSgmdnBsMDExLT51YXJ0aW1zYywgciwgaW5mbyk7CisgICAgICAgIHZwbDAxMV91cGRh dGVfaW50ZXJydXB0X3N0YXR1cyh2LT5kb21haW4pOworICAgICAgICBWUEwwMTFfVU5MT0NLKGQs IGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIElDUjoKKyAgICAgICAgaWYg KCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisg ICAgICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgdnJlZ19yZWczMl9jbGVhcmJp dHMoJnZwbDAxMS0+dWFydHJpcywgciwgaW5mbyk7CisgICAgICAgIHZwbDAxMV91cGRhdGVfaW50 ZXJydXB0X3N0YXR1cyhkKTsKKyAgICAgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisgICAg ICAgIHJldHVybiAxOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJS LCAidnBsMDExOiB1bmhhbmRsZWQgd3JpdGUgciVkIG9mZnNldCAlIzA4eFxuIiwKKyAgICAgICAg ICAgICAgICBkYWJ0LnJlZywgdnBsMDExX3JlZyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K Kword3JpdGVfaWdub3JlOgorICAgIHJldHVybiAxOworCitiYWRfd2lkdGg6CisgICAgZ3ByaW50 ayhYRU5MT0dfRVJSLCAidnBsMDExOiBiYWQgd3JpdGUgd2lkdGggJWQgciVkIG9mZnNldCAlIzA4 eFxuIiwKKyAgICAgICAgICAgIGRhYnQuc2l6ZSwgZGFidC5yZWcsIHZwbDAxMV9yZWcpOworICAg IGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91cygpOworICAgIHJldHVybiAwOworCit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyX29wcyB2cGwwMTFfbW1pb19oYW5kbGVyID0gewor ICAgIC5yZWFkID0gdnBsMDExX21taW9fcmVhZCwKKyAgICAud3JpdGUgPSB2cGwwMTFfbW1pb193 cml0ZSwKK307CisKK3N0YXRpYyB2b2lkIHZwbDAxMV9kYXRhX2F2YWlsKHN0cnVjdCBkb21haW4g KmQpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExICp2cGww MTEgPSAmZC0+YXJjaC52cGwwMTE7CisgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRm ID0gdnBsMDExLT5yaW5nX2J1ZjsKKyAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMsIGluX3By b2QsIG91dF9jb25zLCBvdXRfcHJvZDsKKyAgICBYRU5DT05TX1JJTkdfSURYIGluX3JpbmdfcXNp emUsIG91dF9yaW5nX3FzaXplOworCisgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworCisgICAg aW5fY29ucyA9IGludGYtPmluX2NvbnM7CisgICAgaW5fcHJvZCA9IGludGYtPmluX3Byb2Q7Cisg ICAgb3V0X2NvbnMgPSBpbnRmLT5vdXRfY29uczsKKyAgICBvdXRfcHJvZCA9IGludGYtPm91dF9w cm9kOworCisgICAgc21wX3JtYigpOworCisgICAgaW5fcmluZ19xc2l6ZSA9IHhlbmNvbnNfcXVl dWVkKGluX3Byb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2NvbnMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnRmLT5pbikpOwor CisgICAgb3V0X3JpbmdfcXNpemUgPSB4ZW5jb25zX3F1ZXVlZChvdXRfcHJvZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9jb25zLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludGYtPm91dCkpOworCisgICAgLyogVXBkYXRlIHRo ZSB1YXJ0IHJ4IHN0YXRlIGlmIHRoZSBidWZmZXIgaXMgbm90IGVtcHR5LiAqLworICAgIGlmICgg aW5fcmluZ19xc2l6ZSAhPSAwICkKKyAgICB7CisgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH5S WEZFOworICAgICAgICBpZiAoIGluX3JpbmdfcXNpemUgPT0gc2l6ZW9mKGludGYtPmluKSApCisg ICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZGOworICAgICAgICB2cGwwMTEtPnVhcnRy aXMgfD0gUlhJOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgdWFydCB0eCBzdGF0ZSBpZiB0 aGUgYnVmZmVyIGlzIG5vdCBmdWxsLiAqLworICAgIGlmICggb3V0X3JpbmdfcXNpemUgIT0gc2l6 ZW9mKGludGYtPm91dCkgKQorICAgIHsKKyAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRYRkY7 CisgICAgICAgIHZwbDAxMS0+dWFydHJpcyB8PSBUWEk7CisgICAgICAgIGlmICggb3V0X3Jpbmdf cXNpemUgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH5C VVNZOworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhGRTsKKyAgICAgICAgfQorICAg IH0KKworICAgIHZwbDAxMV91cGRhdGVfaW50ZXJydXB0X3N0YXR1cyhkKTsKKworICAgIFZQTDAx MV9VTkxPQ0soZCwgZmxhZ3MpOworfQorCisKK3N0YXRpYyB2b2lkIHZwbDAxMV9ub3RpZmljYXRp b24oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBwb3J0KQoreworICAgIHZwbDAxMV9kYXRh X2F2YWlsKHYtPmRvbWFpbik7Cit9CisKK2ludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCit7CisgICAgaW50IHJjOwor ICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKworICAgIGlmICgg dnBsMDExLT5yaW5nX2J1ZiApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgLyogTWFw IHRoZSBndWVzdCBQRk4gdG8gWGVuIGFkZHJlc3Mgc3BhY2UuICovCisgICAgcmMgPSAgcHJlcGFy ZV9yaW5nX2Zvcl9oZWxwZXIoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Zm5feChpbmZvLT5nZm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGww MTEtPnJpbmdfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDEx LT5yaW5nX2J1Zik7CisgICAgaWYgKCByYyA8IDAgKQorICAgICAgICBnb3RvIG91dDsKKworICAg IHJjID0gdmdpY19yZXNlcnZlX3ZpcnEoZCwgR1VFU1RfVlBMMDExX1NQSSk7CisgICAgaWYgKCAh cmMgKQorICAgIHsKKyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBnb3RvIG91dDE7Cisg ICAgfQorCisgICAgcmMgPSBhbGxvY191bmJvdW5kX3hlbl9ldmVudF9jaGFubmVsKGQsIDAsIGlu Zm8tPmNvbnNvbGVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZwbDAxMV9ub3RpZmljYXRpb24pOworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgZ290 byBvdXQyOworCisgICAgdnBsMDExLT5ldnRjaG4gPSBpbmZvLT5ldnRjaG4gPSByYzsKKworICAg IHNwaW5fbG9ja19pbml0KCZ2cGwwMTEtPmxvY2spOworCisgICAgcmVnaXN0ZXJfbW1pb19oYW5k bGVyKGQsICZ2cGwwMTFfbW1pb19oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBH VUVTVF9QTDAxMV9CQVNFLCBHVUVTVF9QTDAxMV9TSVpFLCBOVUxMKTsKKworICAgIHJldHVybiAw OworCitvdXQyOgorICAgIHZnaWNfZnJlZV92aXJxKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOworCitv dXQxOgorICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPnJpbmdfYnVmLCB2cGww MTEtPnJpbmdfcGFnZSk7CisKK291dDoKKyAgICByZXR1cm4gcmM7Cit9CisKK3ZvaWQgZG9tYWlu X3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1Y3QgdnBsMDExICp2 cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisKKyAgICBpZiAoICF2cGwwMTEtPnJpbmdfYnVmICkK KyAgICAgICAgcmV0dXJuOworCisgICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEt PmV2dGNobik7CisgICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+cmluZ19idWYs IHZwbDAxMS0+cmluZ19wYWdlKTsKKyAgICB4ZnJlZShkLT5hcmNoLnZtbWlvLmhhbmRsZXJzKTsK K30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHls ZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwK KyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKaW5kZXggOGRmYzFkMS4uMWExMTQ1ZCAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL2RvbWFpbi5oCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8cHVibGljL2h2bS9w YXJhbXMuaD4KICNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+CiAjaW5jbHVkZSA8eGVuL3JidHJlZS5o PgorI2luY2x1ZGUgPGFzbS1hcm0vdnBsMDExLmg+CiAKIHN0cnVjdCBodm1fZG9tYWluCiB7CkBA IC0xNDUsNiArMTQ2LDExIEBAIHN0cnVjdCBhcmNoX2RvbWFpbgogICAgIHN0cnVjdCB7CiAgICAg ICAgIHVpbnQ4X3QgcHJpdmlsZWdlZF9jYWxsX2VuYWJsZWQgOiAxOwogICAgIH0gbW9uaXRvcjsK KworI2lmZGVmIENPTkZJR19TQlNBX1ZVQVJUX0NPTlNPTEUKKyAgICBzdHJ1Y3QgdnBsMDExIHZw bDAxMTsKKyNlbmRpZgorCiB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwogCiBzdHJ1Y3QgYXJjaF92 Y3B1CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVhcnQuaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCmluZGV4IDEyM2Y0NzcuLjU3ZTllYzcgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vcGwwMTEtdWFydC5oCkBAIC00OSw2ICs0OSw4IEBACiAvKiBGUiBiaXRzICovCiAj ZGVmaW5lIFRYRkUgICAoMTw8NykgLyogVFggRklGTyBlbXB0eSAqLwogI2RlZmluZSBSWEZFICAg KDE8PDQpIC8qIFJYIEZJRk8gZW1wdHkgKi8KKyNkZWZpbmUgVFhGRiAgICgxPDw1KSAvKiBUWCBG SUZPIGZ1bGwgKi8KKyNkZWZpbmUgUlhGRiAgICgxPDw2KSAvKiBSWCBGSUZPIGZ1bGwgKi8KICNk ZWZpbmUgQlVTWSAgICgxPDwzKSAvKiBUcmFuc21pdCBpcyBub3QgY29tcGxldGUgKi8KIAogLyog TENSX0ggYml0cyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZjFjNjcxNgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v dnBsMDExLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIGluY2x1ZGUveGVuL3ZwbDAxMS5oCisg KgorICogVmlydHVhbCBQTDAxMSBVQVJUCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgK KyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorICovCisKKyNpZm5kZWYgX1ZQTDAxMV9IXworI2RlZmluZSBfVlBMMDExX0hfCisKKyNp bmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+CisjaW5jbHVkZSA8cHVibGljL2lvL3JpbmcuaD4KKyNp bmNsdWRlIDxhc20tYXJtL3ZyZWcuaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKworLyogaGVscGVy IG1hY3JvcyAqLworI2RlZmluZSBWUEwwMTFfTE9DSyhkLGZsYWdzKSBzcGluX2xvY2tfaXJxc2F2 ZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKKyNkZWZpbmUgVlBMMDExX1VOTE9DSyhk LGZsYWdzKSBzcGluX3VubG9ja19pcnFyZXN0b3JlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZs YWdzKQorCitzdHJ1Y3QgdnBsMDExIHsKKyAgICB2b2lkICpyaW5nX2J1ZjsKKyAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpyaW5nX3BhZ2U7CisgICAgdWludDMyX3QgICAgdWFydGZyOyAgICAgICAgIC8q IEZsYWcgcmVnaXN0ZXIgKi8KKyAgICB1aW50MzJfdCAgICB1YXJ0Y3I7ICAgICAgICAgLyogQ29u dHJvbCByZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAgIHVhcnRpbXNjOyAgICAgICAvKiBJbnRl cnJ1cHQgbWFzayByZWdpc3RlciovCisgICAgdWludDMyX3QgICAgdWFydGljcjsgICAgICAgIC8q IEludGVycnVwdCBjbGVhciByZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAgIHVhcnRyaXM7ICAg ICAgICAvKiBSYXcgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAg IHNoYWRvd191YXJ0cmlzOyAvKiBzaGFkb3dlZCBSYXcgaW50ZXJydXB0IHN0YXR1cyByZWdpc3Rl ciAqLworICAgIHVpbnQzMl90ICAgIHVhcnRtaXM7ICAgICAgICAvKiBNYXNrZWQgaW50ZXJydXB0 IHJlZ2lzdGVyICovCisgICAgc3BpbmxvY2tfdCAgbG9jazsKKyAgICBldnRjaG5fcG9ydF90IGV2 dGNobjsKK307CisKK3N0cnVjdCB2cGwwMTFfaW5pdF9pbmZvIHsKKyAgICB1aW50MzJfdCBjb25z b2xlX2RvbWlkOworICAgIGdmbl90IGdmbjsKKyAgICBldnRjaG5fcG9ydF90IGV2dGNobjsKK307 CisKKyNpZmRlZiBDT05GSUdfU0JTQV9WVUFSVF9DT05TT0xFCitpbnQgZG9tYWluX3ZwbDAxMV9p bml0KHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2cGww MTFfaW5pdF9pbmZvICppbmZvKTsKK3ZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRv bWFpbiAqZCk7CisjZWxzZQorc3RhdGljIGlubGluZSBpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0 cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpk KSB7IH0KKyNlbmRpZgorI2VuZGlmCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl OiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5k ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3B1YmxpYy9hcmNoLWFybS5oIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKaW5kZXgg YmQ5NzRmYi4uODVhYjY2NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJt LmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKQEAgLTQxMCw2ICs0MTAsMTAg QEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsKICNkZWZpbmUgR1VFU1RfQUNQSV9C QVNFIDB4MjAwMDAwMDBVTEwKICNkZWZpbmUgR1VFU1RfQUNQSV9TSVpFIDB4MDIwMDAwMDBVTEwK IAorLyogUEwwMTEgbWFwcGluZ3MgKi8KKyNkZWZpbmUgR1VFU1RfUEwwMTFfQkFTRSAgICAweDIy MDAwMDAwVUxMCisjZGVmaW5lIEdVRVNUX1BMMDExX1NJWkUgICAgMHgwMDAwMTAwMFVMTAorCiAv KgogICogMTZNQiA9PSA0MDk2IHBhZ2VzIHJlc2VydmVkIGZvciBndWVzdCB0byB1c2UgYXMgYSBy ZWdpb24gdG8gbWFwIGl0cwogICogZ3JhbnQgdGFibGUgaW4uCkBAIC00NDQsNiArNDQ4LDggQEAg dHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsKICNkZWZpbmUgR1VFU1RfVElNRVJfUEhZ U19OU19QUEkgMzAKICNkZWZpbmUgR1VFU1RfRVZUQ0hOX1BQSSAgICAgICAgMzEKIAorI2RlZmlu ZSBHVUVTVF9WUEwwMTFfU1BJICAgICAgICAzMgorCiAvKiBQU0NJIGZ1bmN0aW9ucyAqLwogI2Rl ZmluZSBQU0NJX2NwdV9zdXNwZW5kIDAKICNkZWZpbmUgUFNDSV9jcHVfb2ZmICAgICAxCi0tIAoy LjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=