From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 01/10 v2] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Fri, 28 Apr 2017 21:31:15 +0530 Message-ID: <1493395284-18430-2-git-send-email-bhupinder.thakur@linaro.org> References: <1493395284-18430-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d48L0-0008Vn-5v for xen-devel@lists.xenproject.org; Fri, 28 Apr 2017 16:01:42 +0000 Received: by mail-pg0-f44.google.com with SMTP id t7so16929528pgt.3 for ; Fri, 28 Apr 2017 09:01:38 -0700 (PDT) In-Reply-To: <1493395284-18430-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 , Andrew Cooper , Ian Jackson , Julien Grall , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWRkIGVtdWxhdGlvbiBjb2RlIHRvIGVtdWxhdGUgcmVhZC93cml0ZSBhY2Nlc3MgdG8gcGwwMTEg cmVnaXN0ZXJzCmFuZCBwbDAxMSBpbnRlcnJ1cHRzOgoKICAgIC0gRW11bGF0ZSBEUiByZWFkL3dy aXRlIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbS90byB0aGUgSU4KICAgICAgYW5kIE9VVCBy aW5nIGJ1ZmZlcnMgYW5kIHJhaXNpbmcgYW4gZXZlbnQgdG8gdGhlIGJhY2tlbmQgd2hlbgogICAg ICB0aGVyZSBpcyBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBhbiBp bnRlcnJ1cHQKICAgICAgdG8gdGhlIGd1ZXN0IHdoZW4gdGhlcmUgaXMgZGF0YSBpbiB0aGUgSU4g cmluZyBidWZmZXIKCiAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0byBpbnRlcnJ1 cHQgbWFuYWdlbWVudCBhbmQKICAgICAgZXNzZW50aWFsbHkgY29udHJvbCB3aGVuIGludGVycnVw dHMgYXJlIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QKClRoZSBTQlNBIGNvbXBsaWFudCBwbDAxMSB1 YXJ0IGlzIGNvdmVyZWQgaW4gQXBwZW5kaXggQiBvZgpodHRwczovL3N0YXRpYy5kb2NzLmFybS5j b20vZGVuMDAyOS9hL1NlcnZlcl9CYXNlX1N5c3RlbV9BcmNoaXRlY3R1cmVfdjNfMV9BUk1fREVO XzAwMjlBLnBkZgoKU2lnbmVkLW9mZi1ieTogQmh1cGluZGVyIFRoYWt1ciA8Ymh1cGluZGVyLnRo YWt1ckBsaW5hcm8ub3JnPgotLS0KCkNoYW5nZXMgc2luY2UgdjE6CgotIFJlbW92ZWQgdGhlIG9w dGltaXp0aW9uIHJlbGF0ZWQgdG8gc2VuZGlpbmcgZXZlbnRzIHRvIHhlbmNvbnNvbGUgCi0gVXNl IGxvY2FsIHZhcmlhYmxlcyBhcyByaW5nIGJ1ZmZlciBpbmRpY2VzIHdoaWxlIHVzaW5nIHRoZSBy aW5nIGJ1ZmZlcgoKIHhlbi9hcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgIHwgICA1ICsKIHhl bi9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL2FybS92cGww MTEuYyAgICAgICAgICAgIHwgMzQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCAgICAgfCAgIDMgKwogeGVuL2luY2x1 ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmggfCAgIDIgKwogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gt YXJtLmggICAgfCAgIDggKwogeGVuL2luY2x1ZGUveGVuL3ZwbDAxMS5oICAgICAgICAgfCAgNzQg KysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQzMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3ZwbDAxMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2lu Y2x1ZGUveGVuL3ZwbDAxMS5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94 ZW4vYXJjaC9hcm0vS2NvbmZpZwppbmRleCBkNDZiOThjLi5jMWEwZTdmIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC9hcm0vS2NvbmZpZworKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwpAQCAtNTAsNiAr NTAsMTEgQEAgY29uZmlnIEhBU19JVFMKICAgICAgICAgcHJvbXB0ICJHSUN2MyBJVFMgTVNJIGNv bnRyb2xsZXIgc3VwcG9ydCIgaWYgRVhQRVJUID0gInkiCiAgICAgICAgIGRlcGVuZHMgb24gSEFT X0dJQ1YzCiAKK2NvbmZpZyBWUEwwMTFfQ09OU09MRQorCWJvb2wgIkVtdWxhdGVkIHBsMDExIGNv bnNvbGUgc3VwcG9ydCIKKwlkZWZhdWx0IHkKKwktLS1oZWxwLS0tCisJICBBbGxvd3MgYSBndWVz dCB0byB1c2UgcGwwMTEgVUFSVCBhcyBhIGNvbnNvbGUKIGVuZG1lbnUKIAogbWVudSAiQVJNIGVy cmF0YSB3b3JrYXJvdW5kIHZpYSB0aGUgYWx0ZXJuYXRpdmUgZnJhbWV3b3JrIgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDQ5 ZTFmYjIuLjE1ZWZjMTMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94 ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTUyLDYgKzUyLDcgQEAgb2JqLXkgKz0gdm1fZXZlbnQu bwogb2JqLXkgKz0gdnRpbWVyLm8KIG9iai15ICs9IHZwc2NpLm8KIG9iai15ICs9IHZ1YXJ0Lm8K K29iai0kKENPTkZJR19WUEwwMTFfQ09OU09MRSkgKz0gdnBsMDExLm8KIAogI29iai1iaW4teSAr PSAuLi4ubwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9h cm0vdnBsMDExLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhYmFkZQot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwpAQCAtMCwwICsxLDM0MCBA QAorLyoKKyAqIGFyY2gvYXJtL3ZwbDAxMS5jCisgKgorICogVmlydHVhbCBQTDAxMSBVQVJUCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP VVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m IE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxz LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4v ZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNj ZXNzLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5j bHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL3ZwbDAxMS5oPgorI2luY2x1ZGUgPHB1 YmxpYy9pby9jb25zb2xlLmg+CisjaW5jbHVkZSA8YXNtLWFybS9wbDAxMS11YXJ0Lmg+CisKK3Vu c2lnbmVkIGludCB2cGwwMTFfcmVnX21hc2tbXSA9IHsweGZmLCAweGZmZmYsIDB4ZmZmZmZmZmZ9 OworCitzdGF0aWMgdm9pZCB2Z2ljX2luamVjdF92cGwwMTFfc3BpKHN0cnVjdCBkb21haW4gKmQp Cit7CisgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisKKyAg ICBpZiAoICh2cGwwMTEtPnVhcnRyaXMgJiB2cGwwMTEtPnVhcnRpbXNjKSApCisgICAgICAgIHZn aWNfdmNwdV9pbmplY3Rfc3BpKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOworfQorCitzdGF0aWMgdm9p ZCB2cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ4X3QgKmRhdGEpCit7Cisg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZk LT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSB2cGww MTEtPnJpbmdfYnVmOworCisgICAgLyoKKyAgICAgKiBJbml0aWFsaXplIHRoZSBkYXRhIHNvIHRo YXQgZXZlbiBpZiB0aGVyZSBpcyBubyBkYXRhIGluIHJpbmcgYnVmZmVyCisgICAgICogMCBpcyBy ZXR1cm5lZC4KKyAgICAgKi8KKyAgICAqZGF0YSA9IDA7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBm bGFncyk7CisKKyAgICAvKgorICAgICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBi ZSBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlciB3aGVuIHRoaXMKKyAgICAgKiBmdW5jdGlvbiBpcyBj YWxsZWQgc2luY2UgdGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRvIHJlYWQgdGhlIGRhdGEgcmVnaXN0 ZXIKKyAgICAgKiBvbmx5IGlmIHRoZSBUWEZFIGZsYWcgaXMgbm90IHNldC4KKyAgICAgKiBJZiB0 aGUgZ3Vlc3Qgc3RpbGwgZG9lcyByZWFkIHdoZW4gVFhGRSBiaXQgaXMgc2V0IHRoZW4gMCB3aWxs IGJlIHJldHVybmVkLgorICAgICAqLworICAgIGlmICggIVZQTDAxMV9JTl9SSU5HX0VNUFRZKGlu dGYpICkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOwor ICAgICAgICAqZGF0YSA9IGludGYtPmluW01BU0tfWEVOQ09OU19JRFgoaW5fY29ucywgaW50Zi0+ aW4pXTsKKyAgICAgICAgc21wX21iKCk7CisgICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25z ICsgMTsKKyAgICB9CisKKyAgICBpZiAoIFZQTDAxMV9JTl9SSU5HX0VNUFRZKGludGYpICkKKyAg ICB7CisgICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IChSWEZFKTsKKyAgICAgICAgdnBsMDExLT51 YXJ0cmlzICY9IH4oUlhJKTsKKyAgICB9CisgICAgdnBsMDExLT51YXJ0ZnIgJj0gfihSWEZGKTsK KyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKKworICAgIG5vdGlmeV92aWFfeGVuX2V2ZW50 X2NoYW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOworfQorCitzdGF0aWMgdm9pZCB2cGwwMTFfd3Jp dGVfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRhdGEpCit7CisgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAx MTsKKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSB2cGwwMTEtPnJpbmdfYnVm OworCisgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworCisgICAgLyoKKyAgICAgKiBJdCBpcyBl eHBlY3RlZCB0aGF0IHRoZSByaW5nIGlzIG5vdCBmdWxsIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBj YWxsZWQKKyAgICAgKiBhcyB0aGUgZ3Vlc3QgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgdG8gdGhlIGRh dGEgcmVnaXN0ZXIgb25seSB3aGVuIHRoZQorICAgICAqIFRYRkYgZmxhZyBpcyBub3Qgc2V0Lgor ICAgICAqIEluIGNhc2UgdGhlIGd1ZXN0IGRvZXMgd3JpdGUgZXZlbiB3aGVuIHRoZSBUWEZGIGZs YWcgaXMgc2V0IHRoZW4gdGhlCisgICAgICogZGF0YSB3aWxsIGJlIHNpbGVudGx5IGRyb3BwZWQu CisgICAgICovCisgICAgaWYgKCAhVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50ZikgKQorICAgIHsK KyAgICAgICAgdWludDMyX3Qgb3V0X3Byb2QgPSBpbnRmLT5vdXRfcHJvZDsKKyAgICAgICAgaW50 Zi0+b3V0W01BU0tfWEVOQ09OU19JRFgob3V0X3Byb2QsIGludGYtPm91dCldID0gZGF0YTsKKyAg ICAgICAgc21wX3dtYigpOworICAgICAgICBpbnRmLT5vdXRfcHJvZCA9IG91dF9wcm9kICsgMTsK KyAgICB9CisKKyAgICBpZiAoIFZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpICkKKyAgICB7Cisg ICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IChUWEZGKTsKKyAgICAgICAgdnBsMDExLT51YXJ0cmlz ICY9IH4oVFhJKTsKKyAgICB9CisKKyAgICB2cGwwMTEtPnVhcnRmciB8PSAoQlVTWSk7CisKKyAg ICB2cGwwMTEtPnVhcnRmciAmPSB+KFRYRkUpOworCisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFn cyk7CisKKyAgICBub3RpZnlfdmlhX3hlbl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2hu KTsKK30KKworc3RhdGljIGludCB2cGwwMTFfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlv X2luZm9fdCAqaW5mbywgcmVnaXN0ZXJfdCAqciwgdm9pZCAqcHJpdikKK3sKKyAgICB1aW50OF90 IGNoOworICAgIHN0cnVjdCBoc3JfZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKKyAgICBpbnQgdnBs MDExX3JlZyA9IChpbnQpKGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpOworICAgIHN0cnVj dCB2cGwwMTFfcyAqdnBsMDExID0gJnYtPmRvbWFpbi0+YXJjaC52cGwwMTE7CisKKyAgICBzd2l0 Y2ggKCB2cGwwMTFfcmVnICkKKyAgICB7CisgICAgY2FzZSBEUjoKKyAgICAgICAgaWYgKCAhVkFM SURfV19TSVpFKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93aWR0aDsKKyAgICAgICAgdnBsMDExX3Jl YWRfZGF0YSh2LT5kb21haW4sICZjaCk7CisgICAgICAgICpyID0gY2g7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBSU1I6CisgICAgICAgIGlmICggIVZBTElEX0JXX1NJWkUoZGFidC5zaXpl KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIC8qIEl0IGFsd2F5cyByZXR1cm5zIDAgYXMg dGhlcmUgYXJlIG5vIHBoeXNpY2FsIGVycm9ycy4gKi8KKyAgICAgICAgKnIgPSAwOworICAgICAg ICBicmVhazsKKworICAgIGNhc2UgRlI6CisgICAgICAgIGlmICggIVZBTElEX0JXX1NJWkUoZGFi dC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICAqciA9ICh2cGwwMTEtPnVhcnRmciAm IHZwbDAxMV9yZWdfbWFza1tkYWJ0LnNpemVdKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl IFJJUzoKKyAgICAgICAgaWYgKCAhVkFMSURfV19TSVpFKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93 aWR0aDsKKyAgICAgICAgKnIgPSAodnBsMDExLT51YXJ0cmlzICYgdnBsMDExX3JlZ19tYXNrW2Rh YnQuc2l6ZV0pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTUlTOgorICAgICAgICBpZiAo ICFWQUxJRF9XX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICAqciA9 ICh2cGwwMTEtPnVhcnRyaXMgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAxMS0+ dWFydGltc2MgJiB2cGwwMTFfcmVnX21hc2tbZGFidC5zaXplXSk7CisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBJTVNDOgorICAgICAgICBpZiAoICFWQUxJRF9XX1NJWkUoZGFidC5zaXplKSAp IGdvdG8gYmFkX3dpZHRoOworICAgICAgICAqciA9ICh2cGwwMTEtPnVhcnRpbXNjICYgdnBsMDEx X3JlZ19tYXNrW2RhYnQuc2l6ZV0pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSUNSOgor ICAgICAgICBpZiAoICFWQUxJRF9XX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOwor CisgICAgICAgIC8qIE9ubHkgd3JpdGUgaXMgdmFsaWQuICovCisgICAgICAgIHJldHVybiAwOwor CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiB1bmhh bmRsZWQgcmVhZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhYnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor CisgICAgcmV0dXJuIDE7CisKK2JhZF93aWR0aDoKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2 cGwwMTE6IGJhZCByZWFkIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCisgICAgICAgICAg ICAgICAgICAgICAgIGRhYnQuc2l6ZSwgZGFidC5yZWcsIHZwbDAxMV9yZWcpOworICAgIGRvbWFp bl9jcmFzaF9zeW5jaHJvbm91cygpOworICAgIHJldHVybiAwOworCit9CisKK3N0YXRpYyBpbnQg dnBsMDExX21taW9fd3JpdGUoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLCByZWdp c3Rlcl90IHIsIHZvaWQgKnByaXYpCit7CisgICAgdWludDhfdCBjaCA9ICgoc3RydWN0IHVhcnRk cl9yZWcgKikmciktPmRhdGE7CisgICAgc3RydWN0IGhzcl9kYWJ0IGRhYnQgPSBpbmZvLT5kYWJ0 OworICAgIGludCB2cGwwMTFfcmVnID0gKGludCkoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFfQkFT RSk7CisgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmdi0+ZG9tYWluLT5hcmNoLnZwbDAx MTsKKworICAgIHN3aXRjaCAoIHZwbDAxMV9yZWcgKQorICAgIHsKKyAgICBjYXNlIERSOgorCisg ICAgICAgIGlmICggIVZBTElEX0JXX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOwor ICAgICAgICB2cGwwMTFfd3JpdGVfZGF0YSh2LT5kb21haW4sIGNoKTsKKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIFJTUjogLyogTm90aGluZyB0byBjbGVhci4gKi8KKyAgICAgICAgaWYgKCAh VkFMSURfQldfU0laRShkYWJ0LnNpemUpICkgZ290byBiYWRfd2lkdGg7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBGUjoKKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmU7CisgICAgY2FzZSBS SVM6CisgICAgY2FzZSBNSVM6CisgICAgICAgIGdvdG8gd29yZF93cml0ZV9pZ25vcmU7CisKKyAg ICBjYXNlIElNU0M6CisgICAgICAgIGlmICggIVZBTElEX1dfU0laRShkYWJ0LnNpemUpICkgZ290 byBiYWRfd2lkdGg7CisgICAgICAgIHZwbDAxMS0+dWFydGltc2MgPSAociAmIHZwbDAxMV9yZWdf bWFza1tkYWJ0LnNpemVdKTsKKyAgICAgICAgdmdpY19pbmplY3RfdnBsMDExX3NwaSh2LT5kb21h aW4pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSUNSOgorICAgICAgICBpZiAoICFWQUxJ RF9XX1NJWkUoZGFidC5zaXplKSApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICB2cGwwMTEtPnVh cnRyaXMgJj0gfihyICYgdnBsMDExX3JlZ19tYXNrW2RhYnQuc2l6ZV0pOworICAgICAgICB2Z2lj X2luamVjdF92cGwwMTFfc3BpKHYtPmRvbWFpbik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVm YXVsdDoKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiB1bmhhbmRsZWQgd3Jp dGUgciVkIG9mZnNldCAlIzA4eFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YWJ0LnJlZywgdnBsMDExX3JlZyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJl dHVybiAxOworCit3cml0ZV9pZ25vcmU6CisgICAgaWYgKCAhVkFMSURfQldfU0laRShkYWJ0LnNp emUpICkgZ290byBiYWRfd2lkdGg7CisgICAgcmV0dXJuIDE7CisKK3dvcmRfd3JpdGVfaWdub3Jl OgorICAgIGlmICggIVZBTElEX1dfU0laRShkYWJ0LnNpemUpICkgZ290byBiYWRfd2lkdGg7Cisg ICAgcmV0dXJuIDE7CisKK2JhZF93aWR0aDoKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGww MTE6IGJhZCB3cml0ZSB3aWR0aCAlZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAg ICAgICAgICAgICBkYWJ0LnNpemUsIGRhYnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICBkb21haW5f Y3Jhc2hfc3luY2hyb25vdXMoKTsKKyAgICByZXR1cm4gMDsKKworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IG1taW9faGFuZGxlcl9vcHMgdnBsMDExX21taW9faGFuZGxlciA9IHsKKyAgICAucmVh ZCA9IHZwbDAxMV9tbWlvX3JlYWQsCisgICAgLndyaXRlID0gdnBsMDExX21taW9fd3JpdGUsCit9 OworCitpbnQgdnBsMDExX21hcF9ndWVzdF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgcGZuKQoreworICAgIHN0cnVjdCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBs MDExOworCisgICAgLyogTWFwIHRoZSBndWVzdCBQRk4gdG8gWGVuIGFkZHJlc3Mgc3BhY2UuICov CisgICAgcmV0dXJuIHByZXBhcmVfcmluZ19mb3JfaGVscGVyKGQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnZwbDAxMS0+cmluZ19wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdnBsMDExLT5yaW5nX2J1Zik7Cit9CisKK3N0YXRpYyB2b2lkIHZwbDAxMV9kYXRhX2F2YWls KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1 Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgeGVuY29u c19pbnRlcmZhY2UgKmludGYgPSB2cGwwMTEtPnJpbmdfYnVmOworICAgIHVpbnQzMl90IGluX3Jp bmdfZGVwdGgsIG91dF9yaW5nX2RlcHRoOworCisgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOwor CisgICAgaW5fcmluZ19kZXB0aCA9IGludGYtPmluX3Byb2QgLSBpbnRmLT5pbl9jb25zOworICAg IG91dF9yaW5nX2RlcHRoID0gaW50Zi0+b3V0X3Byb2QgLSBpbnRmLT5vdXRfY29uczsKKworICAg IC8qIFVwZGF0ZSB0aGUgdWFydCByeCBzdGF0ZSBpZiB0aGUgYnVmZmVyIGlzIG5vdCBlbXB0eS4g Ki8KKyAgICBpZiAoIGluX3JpbmdfZGVwdGggIT0gMCApCisgICAgeworICAgICAgICB2cGwwMTEt PnVhcnRmciAmPSB+KFJYRkUpOworICAgICAgICBpZiAoIGluX3JpbmdfZGVwdGggPT0gVlBMMDEx X1JJTkdfTUFYX0RFUFRIKGludGYsIGluKSApCisgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8 PSAoUlhGRik7CisgICAgICAgIHZwbDAxMS0+dWFydHJpcyB8PSAoUlhJKTsKKyAgICB9CisKKyAg ICAvKiBVcGRhdGUgdGhlIHVhcnQgdHggc3RhdGUgaWYgdGhlIGJ1ZmZlciBpcyBub3QgZnVsbC4g Ki8KKyAgICBpZiAoIG91dF9yaW5nX2RlcHRoICE9IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRm LCBvdXQpICkKKyAgICB7CisgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH4oVFhGRik7CisgICAg ICAgIHZwbDAxMS0+dWFydHJpcyB8PSAoVFhJKTsKKyAgICAgICAgaWYgKCBvdXRfcmluZ19kZXB0 aCA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gfihCVVNZ KTsKKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IChUWEZFKTsKKyAgICAgICAgfQorICAg IH0KKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgdmdpY19pbmplY3RfdnBs MDExX3NwaShkKTsKK30KKworCitzdGF0aWMgdm9pZCB2cGwwMTFfbm90aWZpY2F0aW9uKHN0cnVj dCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICB2cGwwMTFfZGF0YV9hdmFpbCh2 LT5kb21haW4pOworfQorCitpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQs IHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcgKmNvbmZpZykKK3sKKyAgICBpbnQgcmM7Cisg ICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisKKyAgICByYyA9 IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwgY29uZmlnLT5jb25zb2xlX2Rv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cGwwMTFfbm90 aWZpY2F0aW9uKTsKKyAgICBpZiAocmMgPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJjOwor ICAgIH0KKworICAgIHZwbDAxMS0+ZXZ0Y2huID0gcmM7CisgICAgcmMgPSB2Z2ljX3Jlc2VydmVf dmlycShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKKyAgICBpZiAoICFyYyApCisgICAgeworICAgICAg ICBmcmVlX3hlbl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKKyAgICAgICAgdnBs MDExLT5ldnRjaG4gPSAtMTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKyAgICByZWdpc3Rl cl9tbWlvX2hhbmRsZXIoZCwgJnZwbDAxMV9tbWlvX2hhbmRsZXIsIEdVRVNUX1BMMDExX0JBU0Us IEdVRVNUX1BMMDExX1NJWkUsIE5VTEwpOworICAgIHNwaW5fbG9ja19pbml0KCZ2cGwwMTEtPmxv Y2spOworCisgICAgdnBsMDExLT5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICByZXR1cm4gMDsK K30KKwordm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKQoreworICAg IHN0cnVjdCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworCisgICAgaWYgKCB2 cGwwMTEtPmluaXRpYWxpemVkICkKKyAgICB7CisgICAgICAgIGZyZWVfeGVuX2V2ZW50X2NoYW5u ZWwoZCwgdnBsMDExLT5ldnRjaG4pOworICAgICAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBlcigm dnBsMDExLT5yaW5nX2J1ZiwgdnBsMDExLT5yaW5nX3BhZ2UpOworICAgIH0KKyAgICB2cGwwMTEt PmluaXRpYWxpemVkID0gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJt L2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAppbmRleCA2ZGU4MDgyLi5h MGY4Zjg5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxw dWJsaWMvaHZtL3BhcmFtcy5oPgogI2luY2x1ZGUgPHhlbi9zZXJpYWwuaD4KICNpbmNsdWRlIDx4 ZW4vcmJ0cmVlLmg+CisjaW5jbHVkZSA8eGVuL3ZwbDAxMS5oPgogCiBzdHJ1Y3QgaHZtX2RvbWFp bgogewpAQCAtMTMzLDYgKzEzNCw4IEBAIHN0cnVjdCBhcmNoX2RvbWFpbgogICAgIHN0cnVjdCB7 CiAgICAgICAgIHVpbnQ4X3QgcHJpdmlsZWdlZF9jYWxsX2VuYWJsZWQgOiAxOwogICAgIH0gbW9u aXRvcjsKKworICAgIHN0cnVjdCB2cGwwMTFfcyB2cGwwMTE7CiB9ICBfX2NhY2hlbGluZV9hbGln bmVkOwogCiBzdHJ1Y3QgYXJjaF92Y3B1CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJt L3BsMDExLXVhcnQuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCmluZGV4IDEy M2Y0NzcuLjU3ZTllYzcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFy dC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oCkBAIC00OSw2ICs0OSw4 IEBACiAvKiBGUiBiaXRzICovCiAjZGVmaW5lIFRYRkUgICAoMTw8NykgLyogVFggRklGTyBlbXB0 eSAqLwogI2RlZmluZSBSWEZFICAgKDE8PDQpIC8qIFJYIEZJRk8gZW1wdHkgKi8KKyNkZWZpbmUg VFhGRiAgICgxPDw1KSAvKiBUWCBGSUZPIGZ1bGwgKi8KKyNkZWZpbmUgUlhGRiAgICgxPDw2KSAv KiBSWCBGSUZPIGZ1bGwgKi8KICNkZWZpbmUgQlVTWSAgICgxPDwzKSAvKiBUcmFuc21pdCBpcyBu b3QgY29tcGxldGUgKi8KIAogLyogTENSX0ggYml0cyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvcHVibGljL2FyY2gtYXJtLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaAppbmRl eCBiZDk3NGZiLi41ZjkxMjA3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1h cm0uaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaApAQCAtMzIyLDYgKzMyMiw4 IEBAIHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcgewogICAgICAqCiAgICAgICovCiAgICAg dWludDMyX3QgY2xvY2tfZnJlcXVlbmN5OworCisgICAgdWludDMyX3QgY29uc29sZV9kb21pZDsK IH07CiAjZW5kaWYgLyogX19YRU5fXyB8fCBfX1hFTl9UT09MU19fICovCiAKQEAgLTQxMCw2ICs0 MTIsMTAgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsKICNkZWZpbmUgR1VFU1Rf QUNQSV9CQVNFIDB4MjAwMDAwMDBVTEwKICNkZWZpbmUgR1VFU1RfQUNQSV9TSVpFIDB4MDIwMDAw MDBVTEwKIAorLyogUEwwMTEgbWFwcGluZ3MgKi8KKyNkZWZpbmUgR1VFU1RfUEwwMTFfQkFTRSAg ICAweDIyMDAwMDAwVUxMCisjZGVmaW5lIEdVRVNUX1BMMDExX1NJWkUgICAgMHgwMDAwMTAwMFVM TAorCiAvKgogICogMTZNQiA9PSA0MDk2IHBhZ2VzIHJlc2VydmVkIGZvciBndWVzdCB0byB1c2Ug YXMgYSByZWdpb24gdG8gbWFwIGl0cwogICogZ3JhbnQgdGFibGUgaW4uCkBAIC00NDQsNiArNDUw LDggQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsKICNkZWZpbmUgR1VFU1RfVElN RVJfUEhZU19OU19QUEkgMzAKICNkZWZpbmUgR1VFU1RfRVZUQ0hOX1BQSSAgICAgICAgMzEKIAor I2RlZmluZSBHVUVTVF9WUEwwMTFfU1BJICAgICAgICAzMgorCiAvKiBQU0NJIGZ1bmN0aW9ucyAq LwogI2RlZmluZSBQU0NJX2NwdV9zdXNwZW5kIDAKICNkZWZpbmUgUFNDSV9jcHVfb2ZmICAgICAx CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdnBsMDExLmggYi94ZW4vaW5jbHVkZS94ZW4v dnBsMDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkNjFiNAotLS0g L2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi92cGwwMTEuaApAQCAtMCwwICsxLDc0IEBA CisvKgorICogaW5jbHVkZS94ZW4vdnBsMDExLmgKKyAqCisgKiBWaXJ0dWFsIFBMMDExIFVBUlQK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU SE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfVlBM MDExX0hfCisKKyNkZWZpbmUgX1ZQTDAxMV9IXworCisvKiBoZWxwZXIgbWFjcm9zICovCisjZGVm aW5lIFZQTDAxMV9SSU5HX0RFUFRIKGludGYsZGlyKSAoKChpbnRmKS0+ZGlyICMjIF9wcm9kIC0g KGludGYpLT5kaXIgIyMgX2NvbnMpKQorCisjZGVmaW5lIFZQTDAxMV9SSU5HX01BWF9ERVBUSChp bnRmLGRpcikgKHNpemVvZigoaW50ZiktPmRpciktMSkKKworI2RlZmluZSBWUEwwMTFfSU5fUklO R19FTVBUWShpbnRmKSAoVlBMMDExX1JJTkdfREVQVEgoaW50ZiwgaW4pID09IDApCisKKyNkZWZp bmUgVlBMMDExX09VVF9SSU5HX0VNUFRZKGludGYpIChWUEwwMTFfUklOR19ERVBUSChpbnRmLCBv dXQpID09IDApCisKKyNkZWZpbmUgVlBMMDExX0lOX1JJTkdfRlVMTChpbnRmKSAoVlBMMDExX1JJ TkdfREVQVEgoaW50ZiwgaW4pID09IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLCBpbikpCisK KyNkZWZpbmUgVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50ZikgKFZQTDAxMV9SSU5HX0RFUFRIKGlu dGYsIG91dCkgPT0gVlBMMDExX1JJTkdfTUFYX0RFUFRIKGludGYsb3V0KSkKKworI2RlZmluZSBW UEwwMTFfTE9DSyhkLGZsYWdzKSBzcGluX2xvY2tfaXJxc2F2ZSgmKGQpLT5hcmNoLnZwbDAxMS5s b2NrLCBmbGFncykKKyNkZWZpbmUgVlBMMDExX1VOTE9DSyhkLGZsYWdzKSBzcGluX3VubG9ja19p cnFyZXN0b3JlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZsYWdzKQorCisjZGVmaW5lIFZBTElE X0JXX1NJWkUoc2l6ZSkgKCBzaXplID09IERBQlRfQllURSB8fCBzaXplID09IERBQlRfSEFMRl9X T1JEIHx8IHNpemUgPT0gREFCVF9XT1JEICkKKyNkZWZpbmUgVkFMSURfV19TSVpFKHNpemUpICAo IHNpemUgPT0gREFCVF9IQUxGX1dPUkQgfHwgc2l6ZSA9PSBEQUJUX1dPUkQgKQorCitzdHJ1Y3Qg dWFydGRyX3JlZyB7CisgICAgdWludDhfdCBkYXRhOworICAgIHVpbnQ4X3QgZXJyb3Jfc3RhdHVz OjQ7CisgICAgdWludDhfdCByZXNlcnZlZDE6NDsKKyAgICB1aW50MTZfdCByZXNlcnZlZDI7Cisg ICAgdWludDMyX3QgcmVzZXJ2ZWQzOworfTsKKworc3RydWN0IHZwbDAxMV9zIHsKKyAgICB2b2lk ICpyaW5nX2J1ZjsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyaW5nX3BhZ2U7CisgICAgdWludDMy X3QgICAgdWFydGZyOyAgICAgLyogRmxhZyByZWdpc3RlciAqLworICAgIHVpbnQzMl90ICAgIHVh cnRjcjsgICAgIC8qIENvbnRyb2wgcmVnaXN0ZXIgKi8KKyAgICB1aW50MzJfdCAgICB1YXJ0aW1z YzsgICAvKiBJbnRlcnJ1cHQgbWFzayByZWdpc3RlciovCisgICAgdWludDMyX3QgICAgdWFydGlj cjsgICAgLyogSW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyICovCisgICAgdWludDMyX3QgICAgdWFy dHJpczsgICAgLyogUmF3IGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8KKyAgICB1aW50MzJf dCAgICB1YXJ0bWlzOyAgICAvKiBNYXNrZWQgaW50ZXJydXB0IHJlZ2lzdGVyICovCisgICAgc3Bp bmxvY2tfdCAgbG9jazsKKyAgICBib29sICAgICAgICBpbml0aWFsaXplZDsgLyogRmxhZyB3aGlj aCB0ZWxscyB3aGV0aGVyIHZwbDAxMSBpcyBpbml0aWFsaXplZCAqLworICAgIHVpbnQzMl90ICAg IGV2dGNobjsKK307CisKKyNpZmRlZiBDT05GSUdfVlBMMDExX0NPTlNPTEUKK2ludCBkb21haW5f dnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZp ZyAqY29uZmlnKTsKK3ZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCk7 CitpbnQgdnBsMDExX21hcF9ndWVzdF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgcGZuKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2luaXQoc3Ry dWN0IGRvbWFpbiAqZCwgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZpZyAqY29uZmlnKSB7IHJl dHVybiAtRU5PU1lTOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQo c3RydWN0IGRvbWFpbiAqZCkgeyB9CitzdGF0aWMgaW5saW5lIGludCB2cGwwMTFfbWFwX2d1ZXN0 X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4pIHsgcmV0dXJuIC1FTk9T WVM7IH0KKyNlbmRpZgorCisjZW5kaWYKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==