From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 01/11] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Tue, 21 Feb 2017 16:55:58 +0530 Message-ID: <1487676368-22356-2-git-send-email-bhupinder.thakur@linaro.org> References: <1487676368-22356-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 1cg8aM-0002gQ-EZ for xen-devel@lists.xenproject.org; Tue, 21 Feb 2017 11:26:22 +0000 Received: by mail-pg0-f52.google.com with SMTP id 1so16553564pgi.1 for ; Tue, 21 Feb 2017 03:26:20 -0800 (PST) In-Reply-To: <1487676368-22356-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 cmVnaXN0ZXJzCmFuZCBwbDAxMSBpbnRlcnJ1cHRzOgoKICAgIC0gSXQgZW11bGF0ZXMgRFIgcmVh ZC93cml0ZSBieSByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20vdG8gdGhlIElOCiAgICAgIGFuZCBP VVQgcmluZyBidWZmZXJzIGFuZCByYWlzaW5nIGFuIGV2ZW50IHRvIGRvbTAgd2hlbiB0aGVyZSBp cwogICAgICBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBhbiBpbnRl cnJ1cHQgdG8gdGhlCiAgICAgIGd1ZXN0IHdoZW4gdGhlcmUgaXMgZGF0YSBpbiB0aGUgSU4gcmlu ZyBidWZmZXIKCiAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0byBpbnRlcnJ1cHQg bWFuYWdlbWVudCBhbmQKICAgICAgZXNzZW50aWFsbHkgY29udHJvbCB3aGVuIGludGVycnVwdHMg YXJlIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QKClNpZ25lZC1vZmYtYnk6IEJodXBpbmRlciBUaGFr dXIgPGJodXBpbmRlci50aGFrdXJAbGluYXJvLm9yZz4KLS0tCiB4ZW4vYXJjaC9hcm0vTWFrZWZp bGUgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0vdnBsMDExLmMgICAgICAgICB8IDM2NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS92 cGwwMTEuaCAgICAgICAgIHwgMjA4ICsrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1v bi9LY29uZmlnICAgICAgICAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aCAgfCAgMTUgKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIHwgICA1ICsKIDYgZmls ZXMgY2hhbmdlZCwgNjAxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJj aC9hcm0vdnBsMDExLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vdnBsMDExLmgK CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZp bGUKaW5kZXggN2FmYjhhMy4uYTk0YmRhYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2Vm aWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtNDksNiArNDksNyBAQCBvYmoteSAr PSB2bV9ldmVudC5vCiBvYmoteSArPSB2dGltZXIubwogb2JqLXkgKz0gdnBzY2kubwogb2JqLXkg Kz0gdnVhcnQubworb2JqLSQoQ09ORklHX1ZQTDAxMV9DT05TT0xFKSArPSB2cGwwMTEubwogCiAj b2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92cGwwMTEuYyBi L3hlbi9hcmNoL2FybS92cGwwMTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44OGJhOTY4Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gvYXJtL3ZwbDAxMS5jCkBAIC0w LDAgKzEsMzY2IEBACisvKgorICogYXJjaC9hcm0vdnBsMDExLmMKKyAqCisgKiBWaXJ0dWFsIFBM MDExIFVBUlQgCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9u IDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICog bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3Jh bTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNp bmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4 ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2d1ZXN0X2Fj Y2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9tb25pdG9yLmg+ CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKworI2luY2x1 ZGUgPHhzbS94c20uaD4KKworI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KKyNpbmNsdWRlIDxwdWJs aWMvaHZtL3BhcmFtcy5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vaHZtX29wLmg+CisKKyNpbmNs dWRlIDxhc20vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSAidnBsMDExLmgiCisKK3N0YXRpYyBpbnQg dnBsMDExX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sIHJlZ2lz dGVyX3QgKnIsIHZvaWQgKnByaXYpCit7CisgICAgdW5zaWduZWQgY2hhciBjaDsKKworICAgIHN3 aXRjaCAoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFfQkFTRSkKKyAgICB7CisgICAgICAgIGNhc2Ug VlBMMDExX1VBUlRDUl9PRkZTRVQ6CisgICAgICAgICAgICAqciA9IHYtPmRvbWFpbi0+YXJjaC52 cGwwMTEuY29udHJvbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZQTDAxMV9V QVJURFJfT0ZGU0VUOgorICAgICAgICAgICAgdnBsMDExX3JlYWRfZGF0YSh2LT5kb21haW4sICZj aCk7CisgICAgICAgICAgICAqciA9IGNoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2UgVlBMMDExX1VBUlRGUl9PRkZTRVQ6CisgICAgICAgICAgICAqciA9IHYtPmRvbWFpbi0+YXJj aC52cGwwMTEuZmxhZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZQTDAxMV9V QVJUSU1TQ19PRkZTRVQ6CisgICAgICAgICAgICAqciA9IHYtPmRvbWFpbi0+YXJjaC52cGwwMTEu aW50cl9tYXNrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDExX1VBUlRJ Q1JfT0ZGU0VUOiAKKyAgICAgICAgICAgICpyID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBjYXNlIFZQTDAxMV9VQVJUUklTX09GRlNFVDoKKyAgICAgICAgICAgICpyID0gdi0+ZG9t YWluLT5hcmNoLnZwbDAxMS5yYXdfaW50cl9zdGF0dXM7CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgY2FzZSBWUEwwMTFfVUFSVE1JU19PRkZTRVQ6CisgICAgICAgICAgICAqciA9IHYtPmRv bWFpbi0+YXJjaC52cGwwMTEucmF3X2ludHJfc3RhdHVzICYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5pbnRyX21hc2s7CisgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVERNQUNSX09GRlNFVDoKKyAgICAgICAg ICAgICpyID0gMDsgLyogdWFydCBETUEgaXMgbm90IHN1cHBvcnRlZC4gSGVyZSBpdCBhbHdheXMg cmV0dXJucyAwICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFS VFJTUl9PRkZTRVQ6IAorICAgICAgICAgICAgKnIgPSAwOyAvKiBpdCBhbHdheXMgcmV0dXJucyAw IGFzIHRoZXJlIGFyZSBubyBwaHlzaWNhbCBlcnJvcnMgKi8KKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcHJpbnRrICgidnBsMDExX21taW9fcmVhZDog aW52YWxpZCBzd2l0Y2ggY2FzZSAlZFxuIiwgKGludCkoaW5mby0+Z3BhIC0gR1VFU1RfUEwwMTFf QkFTRSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFZQTDAxMV9F TVVMX09LOworfQorCitzdGF0aWMgaW50IHZwbDAxMV9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2 LCBtbWlvX2luZm9fdCAqaW5mbywgcmVnaXN0ZXJfdCByLCB2b2lkICpwcml2KQoreworICAgIHVu c2lnbmVkIGNoYXIgY2ggPSByOworCisgICAgc3dpdGNoIChpbmZvLT5ncGEgLSBHVUVTVF9QTDAx MV9CQVNFKQorICAgIHsKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVENSX09GRlNFVDoKKyAgICAg ICAgICAgIHYtPmRvbWFpbi0+YXJjaC52cGwwMTEuY29udHJvbCA9IHI7CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVERSX09GRlNFVDoKKyAgICAgICAgICAgIHZw bDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgY2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgVlBMMDExX1VBUlRJTVNDX09GRlNFVDoKKyAgICAgICAgICAgIHYtPmRvbWFpbi0+ YXJjaC52cGwwMTEuaW50cl9tYXNrID0gcjsKKyAgICAgICAgICAgIGlmICggKHYtPmRvbWFpbi0+ YXJjaC52cGwwMTEucmF3X2ludHJfc3RhdHVzICYgdi0+ZG9tYWluLT5hcmNoLnZwbDAxMS5pbnRy X21hc2spICkKKyAgICAgICAgICAgICAgICB2Z2ljX3ZjcHVfaW5qZWN0X3NwaSh2LT5kb21haW4s IChpbnQpdi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFf VklSUV0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDExX1VBUlRJQ1Jf T0ZGU0VUOiAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBjbGVhciBhbGwgYml0cyB3 aGljaCBhcmUgc2V0IGluIHRoZSBpbnB1dAorICAgICAgICAgICAgICovCisgICAgICAgICAgICB2 LT5kb21haW4tPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyAmPSB+cjsKKyAgICAgICAgICAg IGlmICggKHYtPmRvbWFpbi0+YXJjaC52cGwwMTEucmF3X2ludHJfc3RhdHVzICYgdi0+ZG9tYWlu LT5hcmNoLnZwbDAxMS5pbnRyX21hc2spICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICB2Z2ljX3ZjcHVfaW5qZWN0X3NwaSh2LT5kb21haW4sIChpbnQpdi0+ZG9tYWluLT5hcmNoLmh2 bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfVklSUV0pOworICAgICAgICAgICAgfQor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDExX1VBUlRSU1JfT0ZGU0VUOiAv LyBub3RoaW5nIHRvIGNsZWFyCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWUEww MTFfVUFSVEZSX09GRlNFVDogLy8gdGhlc2UgYXJlIGFsbCBSTyByZWdpc3RlcnMKKyAgICAgICAg Y2FzZSBWUEwwMTFfVUFSVFJJU19PRkZTRVQ6CisgICAgICAgIGNhc2UgVlBMMDExX1VBUlRNSVNf T0ZGU0VUOgorICAgICAgICBjYXNlIFZQTDAxMV9VQVJURE1BQ1JfT0ZGU0VUOgorICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBwcmludGsgKCJ2cGwwMTFf bW1pb193cml0ZTogc3dpdGNoIGNhc2Ugbm90IGhhbmRsZWQgJWRcbiIsIChpbnQpKGluZm8tPmdw YSAtIEdVRVNUX1BMMDExX0JBU0UpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAg IHJldHVybiBWUEwwMTFfRU1VTF9PSzsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtbWlvX2hh bmRsZXJfb3BzIHZwbDAxMV9tbWlvX2hhbmRsZXIgPSB7CisgICAgLnJlYWQgPSB2cGwwMTFfbW1p b19yZWFkLAorICAgIC53cml0ZSA9IHZwbDAxMV9tbWlvX3dyaXRlLAorfTsKKworCisKK2ludCB2 cGwwMTFfbWFwX2d1ZXN0X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpbnQgcmM9MDsK KworICAgIC8qCisgICAgICogbWFwIHRoZSBndWVzdCBQRk4gdG8gWGVuIGFkZHJlc3Mgc3BhY2UK KyAgICAgKi8KKyAgICByYyA9IHByZXBhcmVfcmluZ19mb3JfaGVscGVyKGQsIAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFS QU1fVlBMMDExX0NPTlNPTEVfUEZOXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZkLT5hcmNoLnZwbDAxMS5yaW5nX3BhZ2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHZvaWQgKiopJmQtPmFyY2gudnBsMDExLnJpbmdfYnVmKTsKKyAgICBpZiAoIHJjIDwg MCApCisgICAgeworICAgICAgICBwcmludGsoIkZhaWxlZCB0byBtYXAgdnBsMDExIGd1ZXN0IFBG TlxuIik7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IHZwbDAxMV9k YXRhX2F2YWlsKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgaW50IHJjPTA7CisgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKKworICAgIHN0cnVjdCBjb25zb2xlX2ludGVyZmFjZSAqaW50Zj0oc3Ry dWN0IGNvbnNvbGVfaW50ZXJmYWNlICopZC0+YXJjaC52cGwwMTEucmluZ19idWY7CisKKyAgICBW UEwwMTFfTE9DSyhkLCBmbGFncyk7CisKKyAgICAvKmAKKyAgICAgKiBjaGVjayBJTiByaW5nIGJ1 ZmZlcgorICAgICAqLworICAgIGlmICggIVZQTDAxMV9JTl9SSU5HX0VNUFRZKGludGYpICkKKyAg ICB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNsZWFyIHRoZSBSWCBGSUZPIGVtcHR5IGZsYWcg YXMgdGhlIHJpbmcgaXMgbm90IGVtcHR5CisgICAgICAgICAqLworICAgICAgICBkLT5hcmNoLnZw bDAxMS5mbGFnICY9IH4oVlBMMDExX1VBUlRGUl9SWEZFKTsKKworICAgICAgICAvKgorICAgICAg ICAgKiBpZiB0aGUgYnVmZmVyIGlzIGZ1bGwgdGhlbiBzZXQgdGhlIFJYIEZJRk8gRlVMTCBmbGFn CisgICAgICAgICAqLworICAgICAgICBpZiAoIFZQTDAxMV9JTl9SSU5HX0ZVTEwoaW50ZikgKQor ICAgICAgICAgICAgZC0+YXJjaC52cGwwMTEuZmxhZyB8PSAoVlBMMDExX1VBUlRGUl9SWEZGKTsK KworICAgICAgICAvKgorICAgICAgICAgKiBzZXQgdGhlIFJYIGludGVycnVwdCBzdGF0dXMKKyAg ICAgICAgICovCisgICAgICAgIGQtPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyB8PSAoVlBM MDExX1VBUlRSSVNfUlhSSVMpOworICAgIH0KKworICAgIC8qCisgICAgICogY2hlY2sgT1VUIHJp bmcgYnVmZmVyCisgICAgICovCisgICAgaWYgKCAhVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50Zikg KQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogaWYgdGhlIGJ1ZmZlciBpcyBub3QgZnVs bCB0aGVuIGNsZWFyIHRoZSBUWCBGSUZPIGZ1bGwgZmxhZworICAgICAgICAgKi8KKyAgICAgICAg ZC0+YXJjaC52cGwwMTEuZmxhZyAmPSB+KFZQTDAxMV9VQVJURlJfVFhGRik7CisKKyAgICAgICAg LyoKKyAgICAgICAgICogc2V0IHRoZSBUWCBpbnRlcnJ1cHQgc3RhdHVzCisgICAgICAgICAqLwor ICAgICAgICBkLT5hcmNoLnZwbDAxMS5yYXdfaW50cl9zdGF0dXMgfD0gKFZQTDAxMV9VQVJUUklT X1RYUklTKTsKKworICAgICAgICBpZiAoIFZQTDAxMV9PVVRfUklOR19FTVBUWShpbnRmKSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBjbGVhciB0aGUgdWFydCBi dXN5IGZsYWcgYW5kIHNldCB0aGUgVFggRklGTyBlbXB0eSBmbGFnCisgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgIGQtPmFyY2gudnBsMDExLmZsYWcgJj0gfihWUEwwMTFfVUFSVEZSX0JVU1kp OworICAgICAgICAgICAgZC0+YXJjaC52cGwwMTEuZmxhZyB8PSAoVlBMMDExX1VBUlRGUl9UWEZF KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisg ICAgLyoKKyAgICAgKiBzZW5kIGFuIGludGVycnVwdCBpZiBpdCBpcyBub3QgbWFza2VkCisgICAg ICovCisgICAgaWYgKCAoZC0+YXJjaC52cGwwMTEucmF3X2ludHJfc3RhdHVzICYgZC0+YXJjaC52 cGwwMTEuaW50cl9tYXNrKSApCisgICAgICAgIHZnaWNfdmNwdV9pbmplY3Rfc3BpKGQsIChpbnQp ZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVlBMMDExX1ZJUlFdKTsKKworICAg IGlmICggIVZQTDAxMV9PVVRfUklOR19FTVBUWShpbnRmKSApCisgICAgeworICAgICAgICAvKgor ICAgICAgICAgKiByYWlzZSBhbiBpbnRlcnJ1cHQgdG8gZG9tMAorICAgICAgICAgKi8KKyAgICAg ICAgcmMgPSByYXdfZXZ0Y2huX3NlbmQoZCwgCisgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gu aHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX1ZQTDAxMV9DT05TT0xFX0VWVENITl0sIE5VTEwp OyAKKworICAgICAgICBpZiAoIHJjIDwgMCApCisgICAgICAgICAgICBwcmludGsoIkZhaWxlZCB0 byBzZW5kIHZwbDAxMSBpbnRlcnJ1cHQgdG8gZG9tMFxuIik7CisgICAgfQorCisgICAgcmV0dXJu IHJjOworfQorCitpbnQgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBjaGFyICpkYXRhKQoreworICAgIGludCByYz0wOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7 CisgICAgc3RydWN0IGNvbnNvbGVfaW50ZXJmYWNlICppbnRmPShzdHJ1Y3QgY29uc29sZV9pbnRl cmZhY2UgKilkLT5hcmNoLnZwbDAxMS5yaW5nX2J1ZjsKKworICAgICpkYXRhID0gMDsKKworICAg IFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAgICogaWYgdGhlcmUgaXMgZGF0 YSBpbiB0aGUgcmluZyBidWZmZXIgdGhlbiBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgYnVmZmVyCisg ICAgICovCisgICAgaWYgKCAhVlBMMDExX0lOX1JJTkdfRU1QVFkoaW50ZikgKQorICAgIHsKKyAg ICAgICAgKmRhdGEgPSBpbnRmLT5pbltNQVNLX1ZQTDAxMUNPTlNfSURYKGludGYtPmluX2NvbnMr KywgaW50Zi0+aW4pXTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGlmIHRoZSByaW5nIGJ1ZmZl ciBpcyBlbXB0eSB0aGVuIHNldCB0aGUgUlggRklGTyBlbXB0eSBmbGFnCisgICAgICovCisgICAg aWYgKCBWUEwwMTFfSU5fUklOR19FTVBUWShpbnRmKSApCisgICAgeworICAgICAgICBkLT5hcmNo LnZwbDAxMS5mbGFnIHw9IChWUEwwMTFfVUFSVEZSX1JYRkUpOworICAgICAgICBkLT5hcmNoLnZw bDAxMS5yYXdfaW50cl9zdGF0dXMgJj0gfihWUEwwMTFfVUFSVFJJU19SWFJJUyk7CisgICAgfQor CisgICAgLyoKKyAgICAgKiBjbGVhciB0aGUgUlggRklGTyBmdWxsIGZsYWcKKyAgICAgKi8KKyAg ICBkLT5hcmNoLnZwbDAxMS5mbGFnICY9IH4oVlBMMDExX1VBUlRGUl9SWEZGKTsKKworICAgIFZQ TDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgdnBsMDEx X3dyaXRlX2RhdGEoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgY2hhciBkYXRhKQoreworICAg IGludCByYz0wOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc3RydWN0IGNvbnNvbGVf aW50ZXJmYWNlICppbnRmPShzdHJ1Y3QgY29uc29sZV9pbnRlcmZhY2UgKilkLT5hcmNoLnZwbDAx MS5yaW5nX2J1ZjsKKworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAg ICogaWYgdGhlcmUgaXMgc3BhY2UgaW4gdGhlIHJpbmcgYnVmZmVyIHRoZW4gd3JpdGUgdGhlIGRh dGEKKyAgICAgKi8KKyAgICBpZiAoICFWUEwwMTFfT1VUX1JJTkdfRlVMTChpbnRmKSApCisgICAg eworICAgICAgICBpbnRmLT5vdXRbTUFTS19WUEwwMTFDT05TX0lEWChpbnRmLT5vdXRfcHJvZCsr LCBpbnRmLT5vdXQpXSA9IGRhdGE7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICB9CisKKyAgICAv KgorICAgICAqIGlmIHRoZXJlIGlzIG5vIHNwYWNlIGluIHRoZSByaW5nIGJ1ZmZlciB0aGVuIHNl dCB0aGUgCisgICAgICogVFggRklGTyBGVUxMIGZsYWcKKyAgICAgKi8KKyAgICBpZiAoIFZQTDAx MV9PVVRfUklOR19GVUxMKGludGYpICkKKyAgICB7CisgICAgICAgIGQtPmFyY2gudnBsMDExLmZs YWcgfD0gKFZQTDAxMV9VQVJURlJfVFhGRik7CisgICAgICAgIGQtPmFyY2gudnBsMDExLnJhd19p bnRyX3N0YXR1cyAmPSB+KFZQTDAxMV9VQVJUUklTX1RYUklTKTsKKyAgICB9CisKKyAgICAvKgor ICAgICAqIHNldCB0aGUgdWFydCBidXN5IHN0YXR1cworICAgICAqLworICAgIGQtPmFyY2gudnBs MDExLmZsYWcgfD0gKFZQTDAxMV9VQVJURlJfQlVTWSk7CisKKyAgICAvKgorICAgICAqIGNsZWFy IHRoZSBUWCBGSUZPIGVtcHR5IGZsYWcKKyAgICAgKi8KKyAgICBkLT5hcmNoLnZwbDAxMS5mbGFn ICY9IH4oVlBMMDExX1VBUlRGUl9UWEZFKTsKKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3Mp OworCisgICAgLyoKKyAgICAgKiByYWlzZSBhbiBldmVudCB0byBkb20wIG9ubHkgaWYgaXQgaXMg dGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyCisgICAgICovCisgICAgaWYgKCBWUEww MTFfUklOR19ERVBUSChpbnRmLCBvdXQpID09IDEgKQorICAgIHsKKyAgICAgICAgcmMgPSByYXdf ZXZ0Y2huX3NlbmQoZCwgCisgICAgICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFt c1tIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hOXSwgTlVMTCk7IAorCisgICAgICAgIGlm ICggcmMgPCAwICkKKyAgICAgICAgICAgIHByaW50aygiRmFpbGVkIHRvIHNlbmQgdnBsMDExIGlu dGVycnVwdCB0byBkb20wXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRp YyB2b2lkIHZwbDAxMV9ub3RpZmljYXRpb24oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBw b3J0KQoreworICAgIHZwbDAxMV9kYXRhX2F2YWlsKHYtPmRvbWFpbik7Cit9CisKK2ludCBkb21h aW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpbnQgcmM9MDsKKworICAg IC8qCisgICAgICogcmVnaXN0ZXIgeGVuIGV2ZW50IGNoYW5uZWwKKyAgICAgKi8KKyAgICByYyA9 IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwgY3VycmVudC0+ZG9tYWluLT5k b21haW5faWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2cGwwMTFfbm90aWZpY2F0aW9uKTsKKyAgICBpZiAocmMgPCAwKQorICAgIHsK KyAgICAgICAgcHJpbnRrICgiRmFpbGVkIHRvIGFsbG9jYXRlIHZwbDAxMSBldmVudCBjaGFubmVs XG4iKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKyAgICBkLT5hcmNoLmh2bV9kb21haW4u cGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfQ09OU09MRV9FVlRDSE5dID0gcmM7CisgICAgCisgICAg LyoKKyAgICAgKiBhbGxvY2F0ZSBhbiBTUEkgVklSUSBmb3IgdGhlIGd1ZXN0CisgICAgICovCisg ICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVlBMMDExX1ZJUlFdID0gdmdp Y19hbGxvY2F0ZV9zcGkoZCk7CisKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIG1taW8gaGFuZGxl ciAKKyAgICAgKi8KKyAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIgKGQsICZ2cGwwMTFfbW1pb19o YW5kbGVyLCBHVUVTVF9QTDAxMV9CQVNFLCBHVUVTVF9QTDAxMV9TSVpFLCBOVUxMKTsKKworICAg IC8qIAorICAgICAqIGluaXRpYWxpemUgdGhlIGxvY2sKKyAgICAgKi8KKyAgICBzcGluX2xvY2tf aW5pdCgmZC0+YXJjaC52cGwwMTEubG9jayk7CisKKyAgICAvKiAKKyAgICAgKiBjbGVhciB0aGUg ZmxhZywgY29udHJvbCBhbmQgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlcnMKKyAgICAgKi8KKyAg ICBkLT5hcmNoLnZwbDAxMS5jb250cm9sID0gMDsKKyAgICBkLT5hcmNoLnZwbDAxMS5mbGFnID0g MDsKKyAgICBkLT5hcmNoLnZwbDAxMS5pbnRyX21hc2sgPSAwOworICAgIGQtPmFyY2gudnBsMDEx LmludHJfY2xlYXIgPSAwOworICAgIGQtPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyA9IDA7 CisgICAgZC0+YXJjaC52cGwwMTEubWFza2VkX2ludHJfc3RhdHVzID0gMDsKKworICAgIHJldHVy biAwOworfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZwbDAxMS5oIGIveGVuL2FyY2gvYXJt L3ZwbDAxMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYzU3N2YKLS0t IC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vdnBsMDExLmgKQEAgLTAsMCArMSwyMDggQEAK Ky8qCisgKiBpbmNsdWRlL3hlbi92cGwwMTEuaAorICoKKyAqIFZpcnR1YWwgUEwwMTEgVUFSVCAK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU SE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfVlBM MDExX0hfCisKKyNkZWZpbmUgX1ZQTDAxMV9IXworCisvKgorICogcmVnaXN0ZXIgb2Zmc2V0cwor ICovCisjZGVmaW5lIFZQTDAxMV9VQVJURFJfT0ZGU0VUICAgIDB4MCAvLyBkYXRhIHJlZ2lzdGVy IChSVykKKyNkZWZpbmUgVlBMMDExX1VBUlRSU1JfT0ZGU0VUICAgMHg0IC8vIHJlY2VpdmUgc3Rh dHVzIGFuZCBlcnJvciBjbGVhciByZWdpc3RlciAoUlcpCisjZGVmaW5lIFZQTDAxMV9VQVJURlJf T0ZGU0VUICAgIDB4MTggLy8gZmxhZyByZWdpc3RlciAoUk8pCisjZGVmaW5lIFZQTDAxMV9VQVJU UklTX09GRlNFVCAgIDB4M2MgLy8gcmF3IGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKFJPKQor I2RlZmluZSBWUEwwMTFfVUFSVE1JU19PRkZTRVQgICAweDQwIC8vIG1hc2tlZCBpbnRlcnJ1cHQg c3RhdHVzIHJlZ2lzdGVyIChSTykKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX09GRlNFVCAgMHgz OCAvLyBpbnRlcnJ1cHQgbWFzayBzZXQvY2xlYXIgcmVnaXN0ZXIgKFJXKQorI2RlZmluZSBWUEww MTFfVUFSVElDUl9PRkZTRVQgICAweDQ0IC8vIGludGVycnVwdCBjbGVhciByZWdpc3RlciAoV08p CisjZGVmaW5lIFZQTDAxMV9VQVJUQ1JfT0ZGU0VUICAgIDB4MzAgLy8gdWFydCBjb250cm9sIHJl Z2lzdGVyCisjZGVmaW5lIFZQTDAxMV9VQVJURE1BQ1JfT0ZGU0VUIDB4NDggLy8gdWFydCBkbWEg Y29udHJvbCByZWdpc3RlcgorCisvKgorICogY29udHJvbCByZWdpc3RlciBiaXRzIC0gUlcKKyAq LworI2RlZmluZSBWUEwwMTFfVUFSVENSX1VBUlRFTl9CSVQgMAorI2RlZmluZSBWUEwwMTFfVUFS VENSX1VBUlRFTiAgICAoMTw8VlBMMDExX1VBUlRDUl9VQVJURU5fQklUKQorI2RlZmluZSBWUEww MTFfVUFSVENSX1RYRV9CSVQgICAgOAorI2RlZmluZSBWUEwwMTFfVUFSVENSX1RYRSAgICAgICAo MTw8VlBMMDExX1VBUlRDUl9UWEVfQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVENSX1JYRV9CSVQg ICAgOQorI2RlZmluZSBWUEwwMTFfVUFSVENSX1JYRSAgICAgICAoMTw8VlBMMDExX1VBUlRDUl9S WEVfQklUKQorCisvKgorICogRmxhZyByZWdpc3RlciBiaXRzIC0gUk8KKyAqLworI2RlZmluZSBW UEwwMTFfVUFSVEZSX0NUU19CSVQgICAwICAgLy8gY2xlYXIgdG8gc2VuZAorI2RlZmluZSBWUEww MTFfVUFSVEZSX0NUUyAgICAgICAoMTw8VlBMMDExX1VBUlRGUl9DVFNfQklUKQorI2RlZmluZSBW UEwwMTFfVUFSVEZSX0RTUl9CSVQgICAxICAgLy8gZGF0YSBzZXQgcmVhZHkKKyNkZWZpbmUgVlBM MDExX1VBUlRGUl9EU1IgICAgICAgKDE8PFZQTDAxMV9VQVJURlJfRFNSX0JJVCkKKyNkZWZpbmUg VlBMMDExX1VBUlRGUl9EQ0RfQklUICAgMiAgIC8vIGRhdGEgY2FycmllciBkZXRlY3QKKyNkZWZp bmUgVlBMMDExX1VBUlRGUl9EQ0QgICAgICAgKDE8PFZQTDAxMV9VQVJURlJfRENEX0JJVCkKKyNk ZWZpbmUgVlBMMDExX1VBUlRGUl9CVVNZX0JJVCAgMyAgIC8vIHVhcnQgYnVzeQorI2RlZmluZSBW UEwwMTFfVUFSVEZSX0JVU1kgICAgICAoMTw8VlBMMDExX1VBUlRGUl9CVVNZX0JJVCkKKyNkZWZp bmUgVlBMMDExX1VBUlRGUl9SWEZFX0JJVCAgNCAgIC8vIHJlY2VpdmUgZmlmbyBlbXB0eQorI2Rl ZmluZSBWUEwwMTFfVUFSVEZSX1JYRkUgICAgICAoMTw8VlBMMDExX1VBUlRGUl9SWEZFX0JJVCkK KyNkZWZpbmUgVlBMMDExX1VBUlRGUl9UWEZGX0JJVCAgNSAgIC8vIHRyYW5zbWl0IGZpZm8gZnVs bAorI2RlZmluZSBWUEwwMTFfVUFSVEZSX1RYRkYgICAgICAoMTw8VlBMMDExX1VBUlRGUl9UWEZG X0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9SWEZGX0JJVCAgNiAgIC8vIHJlY2VpdmUgZmlm byBmdWxsCisjZGVmaW5lIFZQTDAxMV9VQVJURlJfUlhGRiAgICAgICgxPDxWUEwwMTFfVUFSVEZS X1JYRkZfQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVEZSX1RYRkVfQklUICA3ICAgLy8gdHJhbnNt aXQgZmlmbyBlbXB0eQorI2RlZmluZSBWUEwwMTFfVUFSVEZSX1RYRkUgICAgICAoMTw8VlBMMDEx X1VBUlRGUl9UWEZFX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9SSV9CSVQgICAgOCAgIC8v IHJpbmcgaW5kaWNhdG9yCisjZGVmaW5lIFZQTDAxMV9VQVJURlJfUkkgICAgICAgICgxPDxWUEww MTFfVUFSVEZSX1JJX0JJVCkKKworLyoKKyAqIFVBUlQgcmF3IGludGVycnVwdCBzdGF0dXMgYml0 cyAtIFJPCisgKi8KKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfUklSTUlTX0JJVCAgMAorI2RlZmlu ZSBWUEwwMTFfVUFSVFJJU19SSVJNSVMgICAgICAoMTw8VlBMMDExX1VBUlRSSVNfUklSTUlTX0JJ VCkKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfQ1RTUk1JU19CSVQgMQorI2RlZmluZSBWUEwwMTFf VUFSVFJJU19DVFNSTUlTICAgICAoMTw8VlBMMDExX1VBUlRSSVNfQ1RTUk1JU19CSVQpCisjZGVm aW5lIFZQTDAxMV9VQVJUUklTX0RDRFJNSVNfQklUIDIKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNf RENEUk1JUyAgICAgKDE8PFZQTDAxMV9VQVJUUklTX0RDRFJNSVNfQklUKQorI2RlZmluZSBWUEww MTFfVUFSVFJJU19EU1JSTUlTX0JJVCAzCisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX0RTUlJNSVMg ICAgICgxPDxWUEwwMTFfVUFSVFJJU19EU1JSTUlTX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRS SVNfUlhSSVNfQklUICAgNAorI2RlZmluZSBWUEwwMTFfVUFSVFJJU19SWFJJUyAgICAgICAoMTw8 VlBMMDExX1VBUlRSSVNfUlhSSVNfQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVFJJU19UWFJJU19C SVQgICA1CisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1RYUklTICAgICAgICgxPDxWUEwwMTFfVUFS VFJJU19UWFJJU19CSVQpCisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1JUUklTX0JJVCAgIDYKKyNk ZWZpbmUgVlBMMDExX1VBUlRSSVNfUlRSSVMgICAgICAgKDE8PFZQTDAxMV9VQVJUUklTX1JUUklT X0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfRkVSSVNfQklUICAgNworI2RlZmluZSBWUEww MTFfVUFSVFJJU19GRVJJUyAgICAgICAoMTw8VlBMMDExX1VBUlRSSVNfRkVSSVNfQklUKQorI2Rl ZmluZSBWUEwwMTFfVUFSVFJJU19QRVJJU19CSVQgICA4CisjZGVmaW5lIFZQTDAxMV9VQVJUUklT X1BFUklTICAgICAgICgxPDxWUEwwMTFfVUFSVFJJU19QRVJJU19CSVQpCisjZGVmaW5lIFZQTDAx MV9VQVJUUklTX0JFUklTX0JJVCAgIDkKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfQkVSSVMgICAg ICAgKDE8PFZQTDAxMV9VQVJUUklTX0JFUklTX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNf T0VSSVNfQklUICAgMTAKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfT0VSSVMgICAgICAgKDE8PFZQ TDAxMV9VQVJUUklTX09FUklTX0JJVCkKKworLyoKKyAqIFVBUlQgbWFza2VkIGludGVycnVwdCBz dGF0dXMgYml0cyAtIFJPCisgKi8KKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfUklNTUlTX0JJVCAg MAorI2RlZmluZSBWUEwwMTFfVUFSVE1JU19SSU1NSVMgICAgICAoMTw8VlBMMDExX1VBUlRNSVNf UklNTUlTX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfQ1RTTU1JU19CSVQgMQorI2RlZmlu ZSBWUEwwMTFfVUFSVE1JU19DVFNNTUlTICAgICAoMTw8VlBMMDExX1VBUlRNSVNfQ1RTTU1JU19C SVQpCisjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX0RDRE1NSVNfQklUIDIKKyNkZWZpbmUgVlBMMDEx X1VBUlRNSVNfRENETU1JUyAgICAgKDE8PFZQTDAxMV9VQVJUTUlTX0RDRE1NSVNfQklUKQorI2Rl ZmluZSBWUEwwMTFfVUFSVE1JU19EU1JNTUlTX0JJVCAzCisjZGVmaW5lIFZQTDAxMV9VQVJUTUlT X0RTUk1NSVMgICAgICgxPDxWUEwwMTFfVUFSVE1JU19EU1JNTUlTX0JJVCkKKyNkZWZpbmUgVlBM MDExX1VBUlRNSVNfUlhNSVNfQklUICAgNAorI2RlZmluZSBWUEwwMTFfVUFSVE1JU19SWE1JUyAg ICAgICAoMTw8VlBMMDExX1VBUlRNSVNfUlhNSVNfQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVE1J U19UWE1JU19CSVQgICA1CisjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX1RYTUlTICAgICAgICgxPDxW UEwwMTFfVUFSVE1JU19UWE1JU19CSVQpCisjZGVmaW5lIFZQTDAxMV9VQVJUTUlTX1JUTUlTX0JJ VCAgIDYKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfUlRNSVMgICAgICAgKDE8PFZQTDAxMV9VQVJU TUlTX1JUTUlTX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfRkVNSVNfQklUICAgNworI2Rl ZmluZSBWUEwwMTFfVUFSVE1JU19GRU1JUyAgICAgICAoMTw8VlBMMDExX1VBUlRNSVNfRkVNSVNf QklUKQorI2RlZmluZSBWUEwwMTFfVUFSVE1JU19QRU1JU19CSVQgICA4CisjZGVmaW5lIFZQTDAx MV9VQVJUTUlTX1BFTUlTICAgICAgICgxPDxWUEwwMTFfVUFSVE1JU19QRU1JU19CSVQpCisjZGVm aW5lIFZQTDAxMV9VQVJUTUlTX0JFTUlTX0JJVCAgIDkKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNf QkVNSVMgICAgICAgKDE8PFZQTDAxMV9VQVJUTUlTX0JFTUlTX0JJVCkKKyNkZWZpbmUgVlBMMDEx X1VBUlRNSVNfT0VNSVNfQklUICAgMTAKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfT0VNSVMgICAg ICAgKDE8PFZQTDAxMV9VQVJUTUlTX09FTUlTX0JJVCkKKworLyoKKyAqIFVBUlQgIGludGVycnVw dCBjbGVhciBiaXRzIC0gV08KKyAqLworI2RlZmluZSBWUEwwMTFfVUFSVElDUl9SSU1JQ19CSVQg ICAgMAorI2RlZmluZSBWUEwwMTFfVUFSVElDUl9SSU1JQyAgICAgICAgKDE8PFZQTDAxMV9VQVJU SUNSX1JJTUlDX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfQ1RTTUlDX0JJVCAgIDEKKyNk ZWZpbmUgVlBMMDExX1VBUlRJQ1JfQ1RTTUlDICAgICAgICgxPDxWUEwwMTFfVUFSVElDUl9DVFNN SUNfQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVElDUl9EQ0RNSUNfQklUICAgMgorI2RlZmluZSBW UEwwMTFfVUFSVElDUl9EQ0RNSUMgICAgICAgKDE8PFZQTDAxMV9VQVJUSUNSX0RDRE1JQ19CSVQp CisjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX0RTUk1JQ19CSVQgICAzCisjZGVmaW5lIFZQTDAxMV9V QVJUSUNSX0RTUk1JQyAgICAgICAoMTw8VlBMMDExX1VBUlRJQ1JfRFNSTUlDX0JJVCkKKyNkZWZp bmUgVlBMMDExX1VBUlRJQ1JfUlhJQ19CSVQgICAgIDQKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1Jf UlhJQyAgICAgICAgICgxPDxWUEwwMTFfVUFSVElDUl9SWElDX0JJVCkKKyNkZWZpbmUgVlBMMDEx X1VBUlRJQ1JfVFhJQ19CSVQgICAgIDUKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfVFhJQyAgICAg ICAgICgxPDxWUEwwMTFfVUFSVElDUl9UWElDX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1Jf UlRJQ19CSVQgICAgIDYKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfUlRJQyAgICAgICAgICgxPDxW UEwwMTFfVUFSVElDUl9SVElDX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfRkVJQ19CSVQg ICAgIDcKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfRkVJQyAgICAgICAgICgxPDxWUEwwMTFfVUFS VElDUl9GRUlDX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfUEVJQ19CSVQgICAgIDgKKyNk ZWZpbmUgVlBMMDExX1VBUlRJQ1JfUEVJQyAgICAgICAgICgxPDxWUEwwMTFfVUFSVElDUl9QRUlD X0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfQkVJQ19CSVQgICAgIDkKKyNkZWZpbmUgVlBM MDExX1VBUlRJQ1JfQkVJQyAgICAgICAgICgxPDxWUEwwMTFfVUFSVElDUl9CRUlDX0JJVCkKKyNk ZWZpbmUgVlBMMDExX1VBUlRJQ1JfT0VJQ19CSVQgICAgIDEwCisjZGVmaW5lIFZQTDAxMV9VQVJU SUNSX09FSUMgICAgICAgICAoMTw8VlBMMDExX1VBUlRJQ1JfT0VJQ19CSVQpCisKKy8qCisgKiBV QVJUIGludGVycnVwdCBtYXNrIHNldC9jbGVhciBiaXRzIC0gUlcKKyAqLworI2RlZmluZSBWUEww MTFfVUFSVElNU0NfUklNSU1fQklUICAgMAorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfUklNSU0g ICAgICAgKDE8PFZQTDAxMV9VQVJUSU1TQ19SSU1JTV9CSVQpCisjZGVmaW5lIFZQTDAxMV9VQVJU SU1TQ19DVFNNSU1fQklUICAxCisjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19DVFNNSU0gICAgICAo MTw8VlBMMDExX1VBUlRJTVNDX0NUU01JTV9CSVQpCisjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19E Q0RNSU1fQklUICAgMgorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfRENETUlNICAgICAgKDE8PFZQ TDAxMV9VQVJUSU1TQ19EQ0RNSU1fQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfRFNSTUlN X0JJVCAgMworI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfRFNSTUlNICAgICAgKDE8PFZQTDAxMV9V QVJUSU1TQ19EU1JNSU1fQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfUlhJTV9CSVQgICAg NAorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfUlhJTSAgICAgICAgKDE8PFZQTDAxMV9VQVJUSU1T Q19SWElNX0JJVCkKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX1RYSU1fQklUICAgIDUKKyNkZWZp bmUgVlBMMDExX1VBUlRJTVNDX1RYSU0gICAgICAgICgxPDxWUEwwMTFfVUFSVElNU0NfVFhJTV9C SVQpCisjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19SVElNX0JJVCAgICA2CisjZGVmaW5lIFZQTDAx MV9VQVJUSU1TQ19SVElNICAgICAgICAoMTw8VlBMMDExX1VBUlRJTVNDX1JUSU1fQklUKQorI2Rl ZmluZSBWUEwwMTFfVUFSVElNU0NfRkVJTV9CSVQgICAgNworI2RlZmluZSBWUEwwMTFfVUFSVElN U0NfRkVJTSAgICAgICAgKDE8PFZQTDAxMV9VQVJUSU1TQ19GRUlNX0JJVCkKKyNkZWZpbmUgVlBM MDExX1VBUlRJTVNDX1BFSU1fQklUICAgIDgKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX1BFSU0g ICAgICAgICgxPDxWUEwwMTFfVUFSVElNU0NfUEVJTV9CSVQpCisjZGVmaW5lIFZQTDAxMV9VQVJU SU1TQ19CRUlNX0JJVCAgICA5CisjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19CRUlNICAgICAgICAo MTw8VlBMMDExX1VBUlRJTVNDX0JFSU1fQklUKQorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfT0VJ TV9CSVQgICAgMTAKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX09FSU0gICAgICAgICgxPDxWUEww MTFfVUFSVElNU0NfT0VJTV9CSVQpCisKKworLyoKKyAqIGhlbHBlciBtYWNyb3MKKyAqLworI2Rl ZmluZSBWUEwwMTFfUklOR19ERVBUSChpbnRmLGRpcikgKCgoaW50ZiktPmRpciAjIyBfcHJvZCAt IChpbnRmKS0+ZGlyICMjIF9jb25zKSkKKyNkZWZpbmUgVlBMMDExX1JJTkdfTUFYX0RFUFRIKGlu dGYsZGlyKSAoc2l6ZW9mKChpbnRmKS0+ZGlyKS0xKQorCisjZGVmaW5lIFZQTDAxMV9JTl9SSU5H X0VNUFRZKGludGYpIChWUEwwMTFfUklOR19ERVBUSChpbnRmLCBpbikgPT0gMCkKKworI2RlZmlu ZSBWUEwwMTFfT1VUX1JJTkdfRU1QVFkoaW50ZikgKFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIG91 dCkgPT0gMCkKKworI2RlZmluZSBWUEwwMTFfSU5fUklOR19GVUxMKGludGYpIChWUEwwMTFfUklO R19ERVBUSChpbnRmLCBpbikgPT0gVlBMMDExX1JJTkdfTUFYX0RFUFRIKGludGYsIGluKSkKKwor I2RlZmluZSBWUEwwMTFfT1VUX1JJTkdfRlVMTChpbnRmKSAoVlBMMDExX1JJTkdfREVQVEgoaW50 Ziwgb3V0KSA9PSBWUEwwMTFfUklOR19NQVhfREVQVEgoaW50ZixvdXQpKQorCisjZGVmaW5lIFZQ TDAxMV9MT0NLKGQsZmxhZ3MpIHNwaW5fbG9ja19pcnFzYXZlKCYoZCktPmFyY2gudnBsMDExLmxv Y2ssIGZsYWdzKQorI2RlZmluZSBWUEwwMTFfVU5MT0NLKGQsZmxhZ3MpIHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJihkKS0+YXJjaC52cGwwMTEubG9jaywgZmxhZ3MpCisKKy8qCisgKiBNTUlPIHJl dHVybiB2YWx1ZXMKKyAqLworI2RlZmluZSAgICAgVlBMMDExX0VNVUxfT0sgICAgICAxCisjZGVm aW5lICAgICBWUEwwMTFfRU1VTF9GQUlMICAgIDAKKworaW50IGRvbWFpbl92cGwwMTFfaW5pdChz dHJ1Y3QgZG9tYWluICpkKTsKK2ludCB2cGwwMTFfbWFwX2d1ZXN0X3BhZ2Uoc3RydWN0IGRvbWFp biAqZCk7CitpbnQgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBj aGFyICpkYXRhKTsKK2ludCB2cGwwMTFfd3JpdGVfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBjaGFyIGRhdGEpOworCisjZGVmaW5lIE1BU0tfVlBMMDExQ09OU19JRFgoaWR4LCByaW5n KSAoKGlkeCkgJiAoc2l6ZW9mKHJpbmcpLTEpKSAKK3N0cnVjdCBjb25zb2xlX2ludGVyZmFjZSB7 CisgICAgY2hhciBpblsxMDI0XTsKKyAgICBjaGFyIG91dFsyMDQ4XTsKKyAgICB1aW50MzJfdCBp bl9jb25zLCBpbl9wcm9kOworICAgIHVpbnQzMl90IG91dF9jb25zLCBvdXRfcHJvZDsKK307Cisj ZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vS2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZp ZwppbmRleCBmMmVjYmM0Li43ZTJmZWFjIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL0tjb25maWcK KysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBAIC0yMzcsNCArMjM3LDEwIEBAIGNvbmZpZyBGQVNU X1NZTUJPTF9MT09LVVAKIAkgIFRoZSBvbmx5IHVzZXIgb2YgdGhpcyBpcyBMaXZlIHBhdGNoaW5n LgogCiAJICBJZiB1bnN1cmUsIHNheSBZLgorCitjb25maWcgVlBMMDExX0NPTlNPTEUKKwlib29s ICJFbXVsYXRlZCBwbDAxMSBjb25zb2xlIHN1cHBvcnQiCisJZGVmYXVsdCB5CisJLS0taGVscC0t LQorCSAgQWxsb3dzIGEgZ3Vlc3QgdG8gdXNlIHBsMDExIFVBUlQgYXMgYSBjb25zb2xlCiBlbmRt ZW51CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9kb21haW4uaAppbmRleCAyZDZmYmIxLi5mZjI0MDNhIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9t YWluLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IHZ0aW1lciB7CiAgICAgICAgIHVpbnQ2NF90 IGN2YWw7CiB9OwogCisKIHN0cnVjdCBhcmNoX2RvbWFpbgogewogI2lmZGVmIENPTkZJR19BUk1f NjQKQEAgLTEzMSw2ICsxMzIsMjAgQEAgc3RydWN0IGFyY2hfZG9tYWluCiAgICAgc3RydWN0IHsK ICAgICAgICAgdWludDhfdCBwcml2aWxlZ2VkX2NhbGxfZW5hYmxlZCA6IDE7CiAgICAgfSBtb25p dG9yOworCisjaWZkZWYgQ09ORklHX1ZQTDAxMV9DT05TT0xFCisgICAgc3RydWN0IHZwbDAxMSB7 CisgICAgICAgIHZvaWQgKnJpbmdfYnVmOworICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyaW5n X3BhZ2U7CisgICAgICAgIHVpbnQzMl90ICAgIGZsYWc7ICAgICAgICAgICAgICAgLyogZmxhZyBy ZWdpc3RlciAqLworICAgICAgICB1aW50MzJfdCAgICBjb250cm9sOyAgICAgICAgICAgIC8qIGNv bnRyb2wgcmVnaXN0ZXIgKi8KKyAgICAgICAgdWludDMyX3QgICAgaW50cl9tYXNrOyAgICAgICAg ICAvKiBpbnRlcnJ1cHQgbWFzayByZWdpc3RlciovCisgICAgICAgIHVpbnQzMl90ICAgIGludHJf Y2xlYXI7ICAgICAgICAgLyogaW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyICovCisgICAgICAgIHVp bnQzMl90ICAgIHJhd19pbnRyX3N0YXR1czsgICAgLyogcmF3IGludGVycnVwdCBzdGF0dXMgcmVn aXN0ZXIgKi8KKyAgICAgICAgdWludDMyX3QgICAgbWFza2VkX2ludHJfc3RhdHVzOyAvKiBtYXNr ZWQgaW50ZXJydXB0IHJlZ2lzdGVyICovCisgICAgICAgIHNwaW5sb2NrX3QgIGxvY2s7CisgICAg fSB2cGwwMTE7CisjZW5kaWYKIH0gIF9fY2FjaGVsaW5lX2FsaWduZWQ7CiAKIHN0cnVjdCBhcmNo X3ZjcHUKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIveGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKaW5kZXggYmQ5NzRmYi4uMWQ0NTQ4ZiAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGlj L2FyY2gtYXJtLmgKQEAgLTQxMCw2ICs0MTAsMTAgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2Fs bGJhY2tfdDsKICNkZWZpbmUgR1VFU1RfQUNQSV9CQVNFIDB4MjAwMDAwMDBVTEwKICNkZWZpbmUg R1VFU1RfQUNQSV9TSVpFIDB4MDIwMDAwMDBVTEwKIAorLyogUEwwMTEgbWFwcGluZ3MgKi8KKyNk ZWZpbmUgR1VFU1RfUEwwMTFfQkFTRSAgICAweDIyMDAwMDAwVUxMCisjZGVmaW5lIEdVRVNUX1BM MDExX1NJWkUgICAgMHgwMDAwMTAwMFVMTAorCiAvKgogICogMTZNQiA9PSA0MDk2IHBhZ2VzIHJl c2VydmVkIGZvciBndWVzdCB0byB1c2UgYXMgYSByZWdpb24gdG8gbWFwIGl0cwogICogZ3JhbnQg dGFibGUgaW4uCkBAIC00MjAsNiArNDI0LDcgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJh Y2tfdDsKICNkZWZpbmUgR1VFU1RfTUFHSUNfQkFTRSAgeGVuX21rX3VsbG9uZygweDM5MDAwMDAw KQogI2RlZmluZSBHVUVTVF9NQUdJQ19TSVpFICB4ZW5fbWtfdWxsb25nKDB4MDEwMDAwMDApCiAK KwogI2RlZmluZSBHVUVTVF9SQU1fQkFOS1MgICAyCiAKICNkZWZpbmUgR1VFU1RfUkFNMF9CQVNF ICAgeGVuX21rX3VsbG9uZygweDQwMDAwMDAwKSAvKiAzR0Igb2YgbG93IFJBTSBAIDFHQiAqLwot LSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK