From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 03/12 v3] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Wed, 10 May 2017 19:54:53 +0530 Message-ID: <1494426293-32481-3-git-send-email-bhupinder.thakur@linaro.org> References: <1494426293-32481-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 1d8SaI-0002cx-6C for xen-devel@lists.xenproject.org; Wed, 10 May 2017 14:27:22 +0000 Received: by mail-pg0-f44.google.com with SMTP id u187so17524123pgb.0 for ; Wed, 10 May 2017 07:27:19 -0700 (PDT) In-Reply-To: <1494426293-32481-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: Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org QWRkIGVtdWxhdGlvbiBjb2RlIHRvIGVtdWxhdGUgcmVhZC93cml0ZSBhY2Nlc3MgdG8gcGwwMTEg cmVnaXN0ZXJzCmFuZCBwbDAxMSBpbnRlcnJ1cHRzOgoKICAgIC0gRW11bGF0ZSBEUiByZWFkL3dy aXRlIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbS90byB0aGUgSU4KICAgICAgYW5kIE9VVCBy aW5nIGJ1ZmZlcnMgYW5kIHJhaXNpbmcgYW4gZXZlbnQgdG8gdGhlIGJhY2tlbmQgd2hlbgogICAg ICB0aGVyZSBpcyBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBhbiBp bnRlcnJ1cHQKICAgICAgdG8gdGhlIGd1ZXN0IHdoZW4gdGhlcmUgaXMgZGF0YSBpbiB0aGUgSU4g cmluZyBidWZmZXIKCiAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0byBpbnRlcnJ1 cHQgbWFuYWdlbWVudCBhbmQKICAgICAgZXNzZW50aWFsbHkgY29udHJvbCB3aGVuIGludGVycnVw dHMgYXJlIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QKClRoZSBTQlNBIGNvbXBsaWFudCBwbDAxMSB1 YXJ0IGlzIGNvdmVyZWQgaW4gQXBwZW5kaXggQiBvZgpodHRwczovL3N0YXRpYy5kb2NzLmFybS5j b20vZGVuMDAyOS9hL1NlcnZlcl9CYXNlX1N5c3RlbV9BcmNoaXRlY3R1cmVfdjNfMV9BUk1fREVO XzAwMjlBLnBkZgoKU2lnbmVkLW9mZi1ieTogQmh1cGluZGVyIFRoYWt1ciA8Ymh1cGluZGVyLnRo YWt1ckBsaW5hcm8ub3JnPgotLS0KCkNoYW5nZXMgc2luY2UgdjI6CgotIFVzZSBnZW5lcmljIHZy ZWdfcmVnKiBmb3IgcmVhZC93cml0ZSBvZiByZWdpc3RlcnMgZW11bGF0aW5nIHBsMDExLgotIFVz ZSBnZW5lcmljIHJpbmcgYnVmZmVyIGZ1bmN0aW9ucyBkZWZpbmVkIHVzaW5nIERFRklORV9YRU5f RkxFWF9SSU5HLgotIFJlbmFtZWQgdGhlIFNQSSBpbmplY3Rpb24gZnVuY3Rpb24gdG8gdnBsMDEx X3VwZGF0ZV9zcGkoKSB0byByZWZsZWN0IGxldmVsIAogIHRyaWdnZXJlZCBuYXR1cmUgb2YgcGww MTEgaW50ZXJydXB0cy4KLSBUaGUgcGwwMTEgcmVnaXN0ZXIgYWNjZXNzIGFkZHJlc3Mgc2hvdWxk IGFsd2F5cyBiZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQogIGNvcnJlc3BvbmRpbmcgcmVnaXN0 ZXIgYXMgcGVyIHNlY3Rpb24gQiBvZiB0aGUgU0JTQSBkb2N1bWVudC4gRm9yIHRoaXMgcmVhc29u LAogIHRoZSByZWdpc3RlciByYW5nZSBhZGRyZXNzIGFjY2VzcyBpcyBub3QgYWxsb3dlZC4KCkNo YW5nZXMgc2luY2UgdjE6CgotIFJlbW92ZWQgdGhlIG9wdGltaXp0aW9uIHJlbGF0ZWQgdG8gc2Vu ZGlpbmcgZXZlbnRzIHRvIHhlbmNvbnNvbGUgCi0gVXNlIGxvY2FsIHZhcmlhYmxlcyBhcyByaW5n IGJ1ZmZlciBpbmRpY2VzIHdoaWxlIHVzaW5nIHRoZSByaW5nIGJ1ZmZlcgoKIHhlbi9hcmNoL2Fy bS9LY29uZmlnICAgICAgICAgICAgIHwgICA1ICsKIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAgICAg ICAgICAgIHwgICAxICsKIHhlbi9hcmNoL2FybS92cGwwMTEuYyAgICAgICAgICAgIHwgMzUwICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFy bS9kb21haW4uaCAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0Lmgg fCAgIDIgKwogeGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCAgICAgfCAgOTQgKysrKysrKysr KysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oICAgIHwgICA4ICsKIDcgZmlsZXMgY2hh bmdlZCwgNDY2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0v dnBsMDExLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5o CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94ZW4vYXJjaC9hcm0vS2NvbmZp ZwppbmRleCBkNDZiOThjLi5jMWEwZTdmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vS2NvbmZp ZworKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwpAQCAtNTAsNiArNTAsMTEgQEAgY29uZmlnIEhB U19JVFMKICAgICAgICAgcHJvbXB0ICJHSUN2MyBJVFMgTVNJIGNvbnRyb2xsZXIgc3VwcG9ydCIg aWYgRVhQRVJUID0gInkiCiAgICAgICAgIGRlcGVuZHMgb24gSEFTX0dJQ1YzCiAKK2NvbmZpZyBW UEwwMTFfQ09OU09MRQorCWJvb2wgIkVtdWxhdGVkIHBsMDExIGNvbnNvbGUgc3VwcG9ydCIKKwlk ZWZhdWx0IHkKKwktLS1oZWxwLS0tCisJICBBbGxvd3MgYSBndWVzdCB0byB1c2UgcGwwMTEgVUFS VCBhcyBhIGNvbnNvbGUKIGVuZG1lbnUKIAogbWVudSAiQVJNIGVycmF0YSB3b3JrYXJvdW5kIHZp YSB0aGUgYWx0ZXJuYXRpdmUgZnJhbWV3b3JrIgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01h a2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDQ5ZTFmYjIuLjE1ZWZjMTMgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZp bGUKQEAgLTUyLDYgKzUyLDcgQEAgb2JqLXkgKz0gdm1fZXZlbnQubwogb2JqLXkgKz0gdnRpbWVy Lm8KIG9iai15ICs9IHZwc2NpLm8KIG9iai15ICs9IHZ1YXJ0Lm8KK29iai0kKENPTkZJR19WUEww MTFfQ09OU09MRSkgKz0gdnBsMDExLm8KIAogI29iai1iaW4teSArPSAuLi4ubwogCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBsMDExLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY3MTE0OAotLS0gL2Rldi9udWxsCisrKyBi L3hlbi9hcmNoL2FybS92cGwwMTEuYwpAQCAtMCwwICsxLDM1MCBAQAorLyoKKyAqIGFyY2gvYXJt L3ZwbDAxMS5jCisgKgorICogVmlydHVhbCBQTDAxMSBVQVJUCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv cgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRl IDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8 eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+ CisjaW5jbHVkZSA8cHVibGljL2lvL2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxhc20tYXJtL3BsMDEx LXVhcnQuaD4KKyNpbmNsdWRlIDxhc20tYXJtL3ZnaWMtZW11bC5oPgorI2luY2x1ZGUgPGFzbS1h cm0vdnBsMDExLmg+CisKK3N0YXRpYyBib29sIHZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoaW50 IHNpemUpCit7CisgICAgcmV0dXJuIChzaXplID09IERBQlRfRE9VQkxFX1dPUkQpPyBmYWxzZSA6 IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHZwbDAxMV91cGRhdGVfc3BpKHN0cnVjdCBkb21haW4g KmQpCit7CisgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisK KyAgICBpZiAoIHZwbDAxMS0+dWFydHJpcyAmIHZwbDAxMS0+dWFydGltc2MgKQorICAgICAgICB2 Z2ljX3ZjcHVfaW5qZWN0X3NwaShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKK30KKworc3RhdGljIHZv aWQgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90ICpkYXRhKQorewor ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAm ZC0+YXJjaC52cGwwMTE7CisgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmID0gdnBs MDExLT5yaW5nX2J1ZjsKKworICAgIC8qCisgICAgICogSW5pdGlhbGl6ZSB0aGUgZGF0YSBzbyB0 aGF0IGV2ZW4gaWYgdGhlcmUgaXMgbm8gZGF0YSBpbiByaW5nIGJ1ZmZlcgorICAgICAqIDAgaXMg cmV0dXJuZWQuCisgICAgICovCisgICAgKmRhdGEgPSAwOworCisgICAgVlBMMDExX0xPQ0soZCwg ZmxhZ3MpOworCisgICAgLyoKKyAgICAgKiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZXJlIHdpbGwg YmUgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIgd2hlbiB0aGlzCisgICAgICogZnVuY3Rpb24gaXMg Y2FsbGVkIHNpbmNlIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byByZWFkIHRoZSBkYXRhIHJlZ2lz dGVyCisgICAgICogb25seSBpZiB0aGUgVFhGRSBmbGFnIGlzIG5vdCBzZXQuCisgICAgICogSWYg dGhlIGd1ZXN0IHN0aWxsIGRvZXMgcmVhZCB3aGVuIFRYRkUgYml0IGlzIHNldCB0aGVuIDAgd2ls bCBiZSByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBpZiAoICFWUEwwMTFfSU5fUklOR19FTVBUWShp bnRmKSApCisgICAgeworICAgICAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMgPSBpbnRmLT5p bl9jb25zOworICAgICAgICAqZGF0YSA9IGludGYtPmluW1ZQTDAxMV9SSU5HX0lEWF9NQVNLKGlu X2NvbnMsIGludGYtPmluKV07CisgICAgICAgIHNtcF9tYigpOworICAgICAgICBpbnRmLT5pbl9j b25zID0gaW5fY29ucyArIDE7CisgICAgfQorCisgICAgaWYgKCBWUEwwMTFfSU5fUklOR19FTVBU WShpbnRmKSApCisgICAgeworICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZFOworICAgICAg ICB2cGwwMTEtPnVhcnRyaXMgJj0gflJYSTsKKyAgICB9CisgICAgdnBsMDExLT51YXJ0ZnIgJj0g flJYRkY7CisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7CisKKyAgICBub3RpZnlfdmlhX3hl bl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKK30KKworc3RhdGljIHZvaWQgdnBs MDExX3dyaXRlX2RhdGEoc3RydWN0IGRvbWFpbiAqZCwgdWludDhfdCBkYXRhKQoreworICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmZC0+YXJj aC52cGwwMTE7CisgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmID0gdnBsMDExLT5y aW5nX2J1ZjsKKworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAgICog SXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgcmluZyBpcyBub3QgZnVsbCB3aGVuIHRoaXMgZnVuY3Rp b24gaXMgY2FsbGVkCisgICAgICogYXMgdGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRvIHdyaXRlIHRv IHRoZSBkYXRhIHJlZ2lzdGVyIG9ubHkgd2hlbiB0aGUKKyAgICAgKiBUWEZGIGZsYWcgaXMgbm90 IHNldC4KKyAgICAgKiBJbiBjYXNlIHRoZSBndWVzdCBkb2VzIHdyaXRlIGV2ZW4gd2hlbiB0aGUg VFhGRiBmbGFnIGlzIHNldCB0aGVuIHRoZQorICAgICAqIGRhdGEgd2lsbCBiZSBzaWxlbnRseSBk cm9wcGVkLgorICAgICAqLworICAgIGlmICggIVZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpICkK KyAgICB7CisgICAgICAgIFhFTkNPTlNfUklOR19JRFggb3V0X3Byb2QgPSBpbnRmLT5vdXRfcHJv ZDsKKyAgICAgICAgaW50Zi0+b3V0W1ZQTDAxMV9SSU5HX0lEWF9NQVNLKG91dF9wcm9kLCBpbnRm LT5vdXQpXSA9IGRhdGE7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgaW50Zi0+b3V0X3By b2QgPSBvdXRfcHJvZCArIDE7CisgICAgfQorCisgICAgaWYgKCBWUEwwMTFfT1VUX1JJTkdfRlVM TChpbnRmKSApCisgICAgeworICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBUWEZGOworICAgICAg ICB2cGwwMTEtPnVhcnRyaXMgJj0gflRYSTsKKyAgICB9CisKKyAgICB2cGwwMTEtPnVhcnRmciB8 PSBCVVNZOworCisgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRYRkU7CisKKyAgICBWUEwwMTFfVU5M T0NLKGQsIGZsYWdzKTsKKworICAgIG5vdGlmeV92aWFfeGVuX2V2ZW50X2NoYW5uZWwoZCwgdnBs MDExLT5ldnRjaG4pOworfQorCitzdGF0aWMgaW50IHZwbDAxMV9tbWlvX3JlYWQoc3RydWN0IHZj cHUgKnYsIG1taW9faW5mb190ICppbmZvLCByZWdpc3Rlcl90ICpyLCB2b2lkICpwcml2KQorewor ICAgIHVpbnQ4X3QgY2g7CisgICAgc3RydWN0IGhzcl9kYWJ0IGRhYnQgPSBpbmZvLT5kYWJ0Owor ICAgIGludCB2cGwwMTFfcmVnID0gKGludCkoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFfQkFTRSk7 CisgICAgc3RydWN0IHZwbDAxMV9zICp2cGwwMTEgPSAmdi0+ZG9tYWluLT5hcmNoLnZwbDAxMTsK KworICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidC5zaXplKSApIGdvdG8g YmFkX3dpZHRoOworCisgICAgc3dpdGNoICggdnBsMDExX3JlZyApCisgICAgeworICAgIGNhc2Ug RFI6CisgICAgICAgIHZwbDAxMV9yZWFkX2RhdGEodi0+ZG9tYWluLCAmY2gpOworICAgICAgICAq ciA9IGNoOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUlNSOgorICAgICAgICAvKiBJdCBh bHdheXMgcmV0dXJucyAwIGFzIHRoZXJlIGFyZSBubyBwaHlzaWNhbCBlcnJvcnMuICovCisgICAg ICAgICpyID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZSOgorICAgICAgICAqciA9 IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRmciwgaW5mbyk7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBSSVM6CisgICAgICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAx MS0+dWFydHJpcywgaW5mbyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNSVM6CisgICAg ICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydHJpcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmIHZwbDAxMS0+dWFydGltc2MsIGluZm8pOworICAgICAgICBi cmVhazsKKworICAgIGNhc2UgSU1TQzoKKyAgICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4dHJhY3Qo dnBsMDExLT51YXJ0aW1zYywgaW5mbyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJQ1I6 CisgICAgICAgIC8qIE9ubHkgd3JpdGUgaXMgdmFsaWQuICovCisgICAgICAgIHJldHVybiAwOwor CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiB1bmhh bmRsZWQgcmVhZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgICAgIGRhYnQucmVn LCB2cGwwMTFfcmVnKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7 CisKK2JhZF93aWR0aDoKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IGJhZCByZWFk IHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCisgICAgICAgICAgICBkYWJ0LnNpemUsIGRh YnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKKyAg ICByZXR1cm4gMDsKKworfQorCitzdGF0aWMgaW50IHZwbDAxMV9tbWlvX3dyaXRlKHN0cnVjdCB2 Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywgcmVnaXN0ZXJfdCByLCB2b2lkICpwcml2KQorewor ICAgIHVpbnQ4X3QgY2ggPSAoKHN0cnVjdCB1YXJ0ZHJfcmVnICopJnIpLT5kYXRhOworICAgIHN0 cnVjdCBoc3JfZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKKyAgICBpbnQgdnBsMDExX3JlZyA9IChp bnQpKGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpOworICAgIHN0cnVjdCB2cGwwMTFfcyAq dnBsMDExID0gJnYtPmRvbWFpbi0+YXJjaC52cGwwMTE7CisKKyAgICBpZiAoICF2cGwwMTFfcmVn MzJfY2hlY2tfYWNjZXNzKGRhYnQuc2l6ZSkgKSBnb3RvIGJhZF93aWR0aDsKKworICAgIHN3aXRj aCAoIHZwbDAxMV9yZWcgKQorICAgIHsKKyAgICBjYXNlIERSOgorICAgICAgICB2cGwwMTFfd3Jp dGVfZGF0YSh2LT5kb21haW4sIGNoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJTUjog LyogTm90aGluZyB0byBjbGVhci4gKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZSOgor ICAgIGNhc2UgUklTOgorICAgIGNhc2UgTUlTOgorICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZTsK KworICAgIGNhc2UgSU1TQzoKKyAgICAgICAgdnJlZ19yZWczMl91cGRhdGUoJnZwbDAxMS0+dWFy dGltc2MsIHIsIGluZm8pOworICAgICAgICB2cGwwMTFfdXBkYXRlX3NwaSh2LT5kb21haW4pOwor ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSUNSOgorICAgICAgICB2cmVnX3JlZzMyX2NsZWFy Yml0cygmdnBsMDExLT51YXJ0cmlzLCByLCBpbmZvKTsKKyAgICAgICAgdnBsMDExX3VwZGF0ZV9z cGkodi0+ZG9tYWluKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBn cHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IHVuaGFuZGxlZCB3cml0ZSByJWQgb2Zmc2V0ICUj MDh4XG4iLAorICAgICAgICAgICAgICAgIGRhYnQucmVnLCB2cGwwMTFfcmVnKTsKKyAgICAgICAg cmV0dXJuIDA7CisgICAgfQorCit3cml0ZV9pZ25vcmU6CisgICAgcmV0dXJuIDE7CisKK2JhZF93 aWR0aDoKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IGJhZCB3cml0ZSB3aWR0aCAl ZCByJWQgb2Zmc2V0ICUjMDh4XG4iLAorICAgICAgICAgICAgZGFidC5zaXplLCBkYWJ0LnJlZywg dnBsMDExX3JlZyk7CisgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7CisgICAgcmV0dXJu IDA7CisKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtbWlvX2hhbmRsZXJfb3BzIHZwbDAxMV9t bWlvX2hhbmRsZXIgPSB7CisgICAgLnJlYWQgPSB2cGwwMTFfbW1pb19yZWFkLAorICAgIC53cml0 ZSA9IHZwbDAxMV9tbWlvX3dyaXRlLAorfTsKKworaW50IHZwbDAxMV9tYXBfZ3Vlc3RfcGFnZShz dHJ1Y3QgZG9tYWluICpkLCB4ZW5fcGZuX3QgZ2ZuKQoreworICAgIHN0cnVjdCB2cGwwMTFfcyAq dnBsMDExID0gJmQtPmFyY2gudnBsMDExOworCisgICAgLyogTWFwIHRoZSBndWVzdCBQRk4gdG8g WGVuIGFkZHJlc3Mgc3BhY2UuICovCisgICAgcmV0dXJuIHByZXBhcmVfcmluZ19mb3JfaGVscGVy KGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+cmluZ19wYWdlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nX2J1Zik7Cit9CisKK3N0YXRpYyB2 b2lkIHZwbDAxMV9kYXRhX2F2YWlsKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExX3MgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAx MTsKKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSB2cGwwMTEtPnJpbmdfYnVm OworICAgIFJJTkdfSURYIGluX3JpbmdfZGVwdGgsIG91dF9yaW5nX2RlcHRoOworCisgICAgVlBM MDExX0xPQ0soZCwgZmxhZ3MpOworCisgICAgaW5fcmluZ19kZXB0aCA9IHZwbDAxMV9xdWV1ZWQo aW50Zi0+aW5fcHJvZCwgaW50Zi0+aW5fY29ucywgc2l6ZW9mKGludGYtPmluKSk7CisgICAgb3V0 X3JpbmdfZGVwdGggPSB2cGwwMTFfcXVldWVkKGludGYtPm91dF9wcm9kLCBpbnRmLT5vdXRfY29u cywgc2l6ZW9mKGludGYtPm91dCkpOworCisgICAgLyogVXBkYXRlIHRoZSB1YXJ0IHJ4IHN0YXRl IGlmIHRoZSBidWZmZXIgaXMgbm90IGVtcHR5LiAqLworICAgIGlmICggaW5fcmluZ19kZXB0aCAh PSAwICkKKyAgICB7CisgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH5SWEZFOworICAgICAgICBp ZiAoIGluX3JpbmdfZGVwdGggPT0gVlBMMDExX1JJTkdfTUFYX0RFUFRIKGludGYsIGluKSApCisg ICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZGOworICAgICAgICB2cGwwMTEtPnVhcnRy aXMgfD0gUlhJOworICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgdWFydCB0eCBzdGF0ZSBpZiB0 aGUgYnVmZmVyIGlzIG5vdCBmdWxsLiAqLworICAgIGlmICggb3V0X3JpbmdfZGVwdGggIT0gVlBM MDExX1JJTkdfTUFYX0RFUFRIKGludGYsIG91dCkgKQorICAgIHsKKyAgICAgICAgdnBsMDExLT51 YXJ0ZnIgJj0gflRYRkY7CisgICAgICAgIHZwbDAxMS0+dWFydHJpcyB8PSBUWEk7CisgICAgICAg IGlmICggb3V0X3JpbmdfZGVwdGggPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHZwbDAx MS0+dWFydGZyICY9IH5CVVNZOworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhGRTsK KyAgICAgICAgfQorICAgIH0KKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAg dnBsMDExX3VwZGF0ZV9zcGkoZCk7Cit9CisKKworc3RhdGljIHZvaWQgdnBsMDExX25vdGlmaWNh dGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCit7CisgICAgdnBsMDExX2Rh dGFfYXZhaWwodi0+ZG9tYWluKTsKK30KKworaW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3Qg ZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjb25zb2xlX2RvbWlk LAorICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgZ2ZuLAorICAgICAgICAgICAgICAg ICAgICAgICBldnRjaG5fcG9ydF90ICpldnRjaG4pCit7CisgICAgaW50IHJjOworICAgIHN0cnVj dCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworCisgICAgcmMgPSB2cGwwMTFf bWFwX2d1ZXN0X3BhZ2UoZCwgZ2ZuKTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAgICAgIGdvdG8g b3V0OworCisgICAgcmMgPSB2Z2ljX3Jlc2VydmVfdmlycShkLCBHVUVTVF9WUEwwMTFfU1BJKTsK KyAgICBpZiAoICFyYyApCisgICAgeworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGdv dG8gb3V0MTsKKyAgICB9CisKKyAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZwbDAxMV9t bWlvX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdVRVNUX1BMMDExX0JBU0Us IEdVRVNUX1BMMDExX1NJWkUsIE5VTEwpOworCisgICAgc3Bpbl9sb2NrX2luaXQoJnZwbDAxMS0+ bG9jayk7CisKKyAgICByYyA9IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwg Y29uc29sZV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dnBsMDExX25vdGlmaWNhdGlvbik7CisgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgZ290byBvdXQy OworCisgICAgdnBsMDExLT5ldnRjaG4gPSAqZXZ0Y2huID0gcmM7CisKKyAgICB2cGwwMTEtPmlu aXRpYWxpemVkID0gdHJ1ZTsKKworICAgIHJldHVybiAwOworCitvdXQyOgorICAgIHhmcmVlKGQt PmFyY2gudm1taW8uaGFuZGxlcnMpOworb3V0MToKKyAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBl cigmdnBsMDExLT5yaW5nX2J1ZiwgdnBsMDExLT5yaW5nX3BhZ2UpOworb3V0OgorICAgIHJldHVy biByYzsKK30KKwordm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKQor eworICAgIHN0cnVjdCB2cGwwMTFfcyAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworCisgICAg aWYgKCB2cGwwMTEtPmluaXRpYWxpemVkICkKKyAgICB7CisgICAgICAgIGZyZWVfeGVuX2V2ZW50 X2NoYW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOworICAgICAgICBkZXN0cm95X3JpbmdfZm9yX2hl bHBlcigmdnBsMDExLT5yaW5nX2J1ZiwgdnBsMDExLT5yaW5nX3BhZ2UpOworICAgIH0KKyAgICB2 cGwwMTEtPmluaXRpYWxpemVkID0gZmFsc2U7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5o CmluZGV4IDZkZTgwODIuLjU0NjExZTAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v ZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApAQCAtMTEsNiArMTEs NyBAQAogI2luY2x1ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+CiAjaW5jbHVkZSA8eGVuL3Nlcmlh bC5oPgogI2luY2x1ZGUgPHhlbi9yYnRyZWUuaD4KKyNpbmNsdWRlIDxhc20tYXJtL3ZwbDAxMS5o PgogCiBzdHJ1Y3QgaHZtX2RvbWFpbgogewpAQCAtMTMzLDYgKzEzNCwxMSBAQCBzdHJ1Y3QgYXJj aF9kb21haW4KICAgICBzdHJ1Y3QgewogICAgICAgICB1aW50OF90IHByaXZpbGVnZWRfY2FsbF9l bmFibGVkIDogMTsKICAgICB9IG1vbml0b3I7CisKKyNpZmRlZiBDT05GSUdfVlBMMDExX0NPTlNP TEUKKyAgICBzdHJ1Y3QgdnBsMDExX3MgdnBsMDExOworI2VuZGlmCisKIH0gIF9fY2FjaGVsaW5l X2FsaWduZWQ7CiAKIHN0cnVjdCBhcmNoX3ZjcHUKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vcGwwMTEtdWFydC5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmgKaW5k ZXggMTIzZjQ3Ny4uNTdlOWVjNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9wbDAx MS11YXJ0LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wbDAxMS11YXJ0LmgKQEAgLTQ5LDYg KzQ5LDggQEAKIC8qIEZSIGJpdHMgKi8KICNkZWZpbmUgVFhGRSAgICgxPDw3KSAvKiBUWCBGSUZP IGVtcHR5ICovCiAjZGVmaW5lIFJYRkUgICAoMTw8NCkgLyogUlggRklGTyBlbXB0eSAqLworI2Rl ZmluZSBUWEZGICAgKDE8PDUpIC8qIFRYIEZJRk8gZnVsbCAqLworI2RlZmluZSBSWEZGICAgKDE8 PDYpIC8qIFJYIEZJRk8gZnVsbCAqLwogI2RlZmluZSBCVVNZICAgKDE8PDMpIC8qIFRyYW5zbWl0 IGlzIG5vdCBjb21wbGV0ZSAqLwogCiAvKiBMQ1JfSCBiaXRzICovCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjdlNmI3Ci0tLSAvZGV2L251bGwK KysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaApAQCAtMCwwICsxLDk0IEBACisvKgor ICogaW5jbHVkZS94ZW4vdnBsMDExLmgKKyAqCisgKiBWaXJ0dWFsIFBMMDExIFVBUlQKKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAor ICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfVlBMMDExX0hf CisKKyNkZWZpbmUgX1ZQTDAxMV9IXworCisjaW5jbHVkZSA8cHVibGljL2lvL3JpbmcuaD4KKyNp bmNsdWRlIDxhc20tYXJtL3ZyZWcuaD4KKworREVGSU5FX1hFTl9GTEVYX1JJTkcodnBsMDExKTsK KworLyogaGVscGVyIG1hY3JvcyAqLworI2RlZmluZSBWUEwwMTFfUklOR19JRFhfTUFTSyhpZHgs IHJpbmcpICh2cGwwMTFfbWFzayhpZHgsIHNpemVvZihyaW5nKSkpCisKKyNkZWZpbmUgVlBMMDEx X1JJTkdfREVQVEgoaW50ZixkaXIpICh2cGwwMTFfcXVldWVkKChpbnRmKS0+ZGlyICMjIF9wcm9k LCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaW50ZiktPmRpciAjIyBfY29ucywgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKChpbnRmKS0+ZGlyKSkpCisKKyNkZWZpbmUg VlBMMDExX1JJTkdfTUFYX0RFUFRIKGludGYsZGlyKSAoc2l6ZW9mKChpbnRmKS0+ZGlyKSkKKwor I2RlZmluZSBWUEwwMTFfSU5fUklOR19FTVBUWShpbnRmKSAoVlBMMDExX1JJTkdfREVQVEgoaW50 ZiwgaW4pID09IDApCisKKyNkZWZpbmUgVlBMMDExX09VVF9SSU5HX0VNUFRZKGludGYpIChWUEww MTFfUklOR19ERVBUSChpbnRmLCBvdXQpID09IDApCisKKyNkZWZpbmUgVlBMMDExX0lOX1JJTkdf RlVMTChpbnRmKSAoVlBMMDExX1JJTkdfREVQVEgoaW50ZiwgaW4pID09IFZQTDAxMV9SSU5HX01B WF9ERVBUSChpbnRmLCBpbikpCisKKyNkZWZpbmUgVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50Zikg KFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIG91dCkgPT0gVlBMMDExX1JJTkdfTUFYX0RFUFRIKGlu dGYsb3V0KSkKKworI2RlZmluZSBWUEwwMTFfTE9DSyhkLGZsYWdzKSBzcGluX2xvY2tfaXJxc2F2 ZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKKyNkZWZpbmUgVlBMMDExX1VOTE9DSyhk LGZsYWdzKSBzcGluX3VubG9ja19pcnFyZXN0b3JlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZs YWdzKQorCitzdHJ1Y3QgdWFydGRyX3JlZyB7CisgICAgdWludDhfdCBkYXRhOworICAgIHVpbnQ4 X3QgZXJyb3Jfc3RhdHVzOjQ7CisgICAgdWludDhfdCByZXNlcnZlZDE6NDsKKyAgICB1aW50MTZf dCByZXNlcnZlZDI7CisgICAgdWludDMyX3QgcmVzZXJ2ZWQzOworfTsKKworc3RydWN0IHZwbDAx MV9zIHsKKyAgICB2b2lkICpyaW5nX2J1ZjsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyaW5nX3Bh Z2U7CisgICAgdWludDMyX3QgICAgdWFydGZyOyAgICAgLyogRmxhZyByZWdpc3RlciAqLworICAg IHVpbnQzMl90ICAgIHVhcnRjcjsgICAgIC8qIENvbnRyb2wgcmVnaXN0ZXIgKi8KKyAgICB1aW50 MzJfdCAgICB1YXJ0aW1zYzsgICAvKiBJbnRlcnJ1cHQgbWFzayByZWdpc3RlciovCisgICAgdWlu dDMyX3QgICAgdWFydGljcjsgICAgLyogSW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyICovCisgICAg dWludDMyX3QgICAgdWFydHJpczsgICAgLyogUmF3IGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIg Ki8KKyAgICB1aW50MzJfdCAgICB1YXJ0bWlzOyAgICAvKiBNYXNrZWQgaW50ZXJydXB0IHJlZ2lz dGVyICovCisgICAgc3BpbmxvY2tfdCAgbG9jazsKKyAgICBldnRjaG5fcG9ydF90IGV2dGNobjsK KyAgICBib29sICAgICAgICBpbml0aWFsaXplZDsgLyogRmxhZyB3aGljaCB0ZWxscyB3aGV0aGVy IHZwbDAxMSBpcyBpbml0aWFsaXplZCAqLworfTsKKworI2lmZGVmIENPTkZJR19WUEwwMTFfQ09O U09MRQoraW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBjb25zb2xlX2RvbWlkLAorICAgICAgICAgICAgICAgICAg ICAgICB4ZW5fcGZuX3QgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90 ICpldnRjaG4pOwordm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsK KyNlbHNlCitpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQsCisgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGNvbnNvbGVfZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgIHhlbl9wZm5fdCBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0 X3QgKmV2dGNobikgeyByZXR1cm4gLUVOT1NZUzsgfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZG9t YWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkgeyB9CisjZW5kaWYKKworI2VuZGlm CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6 ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIv eGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKaW5kZXggYmQ5NzRmYi4uNWY5MTIwNyAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKKysrIGIveGVuL2luY2x1ZGUv cHVibGljL2FyY2gtYXJtLmgKQEAgLTMyMiw2ICszMjIsOCBAQCBzdHJ1Y3QgeGVuX2FyY2hfZG9t YWluY29uZmlnIHsKICAgICAgKgogICAgICAqLwogICAgIHVpbnQzMl90IGNsb2NrX2ZyZXF1ZW5j eTsKKworICAgIHVpbnQzMl90IGNvbnNvbGVfZG9taWQ7CiB9OwogI2VuZGlmIC8qIF9fWEVOX18g fHwgX19YRU5fVE9PTFNfXyAqLwogCkBAIC00MTAsNiArNDEyLDEwIEBAIHR5cGVkZWYgdWludDY0 X3QgeGVuX2NhbGxiYWNrX3Q7CiAjZGVmaW5lIEdVRVNUX0FDUElfQkFTRSAweDIwMDAwMDAwVUxM CiAjZGVmaW5lIEdVRVNUX0FDUElfU0laRSAweDAyMDAwMDAwVUxMCiAKKy8qIFBMMDExIG1hcHBp bmdzICovCisjZGVmaW5lIEdVRVNUX1BMMDExX0JBU0UgICAgMHgyMjAwMDAwMFVMTAorI2RlZmlu ZSBHVUVTVF9QTDAxMV9TSVpFICAgIDB4MDAwMDEwMDBVTEwKKwogLyoKICAqIDE2TUIgPT0gNDA5 NiBwYWdlcyByZXNlcnZlZCBmb3IgZ3Vlc3QgdG8gdXNlIGFzIGEgcmVnaW9uIHRvIG1hcCBpdHMK ICAqIGdyYW50IHRhYmxlIGluLgpAQCAtNDQ0LDYgKzQ1MCw4IEBAIHR5cGVkZWYgdWludDY0X3Qg eGVuX2NhbGxiYWNrX3Q7CiAjZGVmaW5lIEdVRVNUX1RJTUVSX1BIWVNfTlNfUFBJIDMwCiAjZGVm aW5lIEdVRVNUX0VWVENITl9QUEkgICAgICAgIDMxCiAKKyNkZWZpbmUgR1VFU1RfVlBMMDExX1NQ SSAgICAgICAgMzIKKwogLyogUFNDSSBmdW5jdGlvbnMgKi8KICNkZWZpbmUgUFNDSV9jcHVfc3Vz cGVuZCAwCiAjZGVmaW5lIFBTQ0lfY3B1X29mZiAgICAgMQotLSAKMi43LjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK