From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v11 05/11] x86/mm: add HYPERVISOR_memory_op to acquire guest resources Date: Thu, 12 Oct 2017 17:25:57 +0100 Message-ID: <20171012162603.3016-6-paul.durrant@citrix.com> References: <20171012162603.3016-1-paul.durrant@citrix.com> 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 1e2gJJ-0006hJ-UF for xen-devel@lists.xenproject.org; Thu, 12 Oct 2017 16:26:14 +0000 In-Reply-To: <20171012162603.3016-1-paul.durrant@citrix.com> 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 , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Q2VydGFpbiBtZW1vcnkgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhIGd1ZXN0IGFyZSBub3Qg bmVjZXNzYXJpbHkKcHJlc2VudCBpbiB0aGUgZ3Vlc3QgUDJNLgoKVGhpcyBwYXRjaCBhZGRzIHRo ZSBib2lsZXJwbGF0ZSBmb3IgbmV3IG1lbW9yeSBvcCB0byBhbGxvdyBzdWNoIGEgcmVzb3VyY2UK dG8gYmUgcHJpdi1tYXBwZWQgZGlyZWN0bHksIGJ5IGVpdGhlciBhIFBWIG9yIEhWTSB0b29scyBk b21haW4uCgpOT1RFOiBXaGlsc3QgdGhlIG5ldyBvcCBpcyBub3QgaW50cmluc2ljbHkgc3BlY2lm aWMgdG8gdGhlIHg4NiBhcmNoaXRlY3R1cmUsCiAgICAgIEkgaGF2ZSBubyBtZWFucyB0byB0ZXN0 IGl0IG9uIGFuIEFSTSBwbGF0Zm9ybSBhbmQgc28gY2Fubm90IHZlcmlmeQogICAgICB0aGF0IGl0 IGZ1bmN0aW9ucyBjb3JyZWN0bHkuIEhlbmNlIGl0IGlzIGN1cnJlbnRseSBvbmx5IGltcGxlbWVu dGVkCiAgICAgIGZvciB4ODYuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVy cmFudEBjaXRyaXguY29tPgotLS0KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUu Y2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxH ZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25A ZXUuY2l0cml4LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3Jh Y2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4K Q2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4 LmNvbT4KCnYxMToKIC0gQWRkcmVzc2VkIG1vcmUgY29tbWVudHMgZnJvbSBKYW4uCgp2OToKIC0g QWRkcmVzc2VkIG1vcmUgY29tbWVudHMgZnJvbSBKYW4uCgp2ODoKIC0gTW92ZSB0aGUgY29kZSBp bnRvIGNvbW1vbiBhcyByZXF1ZXN0ZWQgYnkgSmFuLgogLSBNYWtlIHRoZSBnbWZuX2xpc3QgaGFu ZGxlIGEgNjQtYml0IHR5cGUgdG8gYXZvaWQgbGltaXRpbmcgdGhlIE1GTgogICByYW5nZSBmb3Ig YSAzMi1iaXQgdG9vbHMgZG9tYWluLgogLSBBZGQgbWlzc2luZyBwYWQuCiAtIEFkZCBjb21wYXQg Y29kZS4KIC0gTWFrZSB0aGlzIHBhdGNoIGRlYWwgd2l0aCBwdXJlbHkgYm9pbGVycGxhdGUuCiAt IERyb3AgR2VvcmdlJ3MgQS1iIGFuZCBXZWkncyBSLWIgYmVjYXVzZSB0aGUgY2hhbmdlcyBhcmUg bm9uLXRyaXZpYWwsCiAgIGFuZCB1cGRhdGUgQ2MgbGlzdCBub3cgdGhlIGJvaWxlcnBsYXRlIGlz IGNvbW1vbi4KCnY1OgogLSBTd2l0Y2hlZCBfX2NvcHlfdG8vZnJvbV9ndWVzdF9vZmZzZXQoKSB0 byBjb3B5X3RvL2Zyb21fZ3Vlc3Rfb2Zmc2V0KCkuCi0tLQogdG9vbHMvZmxhc2svcG9saWN5L21v ZHVsZXMveGVuLmlmICAgfCAgIDQgKy0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAg ICAgIHwgICAzICstCiB4ZW4vY29tbW9uL2NvbXBhdC9tZW1vcnkuYyAgICAgICAgICB8IDE0NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHhlbi9jb21tb24vbWVtb3J5LmMg ICAgICAgICAgICAgICAgIHwgIDkwICsrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRl L2FzbS14ODYvcDJtLmggICAgICAgICAgIHwgICAzICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1v cnkuaCAgICAgICAgIHwgIDQzICsrKysrKysrKystCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAg ICAgICAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS94c20vZHVtbXkuaCAgICAgICAgICAgICB8 ICAgNiArKwogeGVuL2luY2x1ZGUveHNtL3hzbS5oICAgICAgICAgICAgICAgfCAgIDYgKysKIHhl bi94c20vZHVtbXkuYyAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHhlbi94c20vZmxhc2sv aG9va3MuYyAgICAgICAgICAgICAgIHwgICA2ICsrCiB4ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nl c3NfdmVjdG9ycyB8ICAgMiArCiAxMiBmaWxlcyBjaGFuZ2VkLCAzMDAgaW5zZXJ0aW9ucygrKSwg MTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMv eGVuLmlmIGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmCmluZGV4IDU1NDM3NDk2 ZjYuLjA3Y2JhOGExNWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hl bi5pZgorKysgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKQEAgLTUyLDcgKzUy LDggQEAgZGVmaW5lKGBjcmVhdGVfZG9tYWluX2NvbW1vbicsIGAKIAkJCXNldHRpbWUgc2V0ZG9t YWluaGFuZGxlIGdldHZjcHVjb250ZXh0IHNldF9taXNjX2luZm8gfTsKIAlhbGxvdyAkMSAkMjpk b21haW4yIHsgc2V0X2NwdWlkIHNldHRzYyBzZXRzY2hlZHVsZXIgc2V0Y2xhaW0KIAkJCXNldF9t YXhfZXZ0Y2huIHNldF92bnVtYWluZm8gZ2V0X3ZudW1haW5mbyBjYWNoZWZsdXNoCi0JCQlwc3Jf Y210X29wIHBzcl9jYXRfb3Agc29mdF9yZXNldCBzZXRfZ250dGFiX2xpbWl0cyB9OworCQkJcHNy X2NtdF9vcCBwc3JfY2F0X29wIHNvZnRfcmVzZXQgc2V0X2dudHRhYl9saW1pdHMKKwkJCXJlc291 cmNlX21hcCB9OwogCWFsbG93ICQxICQyOnNlY3VyaXR5IGNoZWNrX2NvbnRleHQ7CiAJYWxsb3cg JDEgJDI6c2hhZG93IGVuYWJsZTsKIAlhbGxvdyAkMSAkMjptbXUgeyBtYXBfcmVhZCBtYXBfd3Jp dGUgYWRqdXN0IG1lbW9yeW1hcCBwaHlzbWFwIHBpbnBhZ2UgbW11ZXh0X29wIHVwZGF0ZW1wIH07 CkBAIC0xNTIsNiArMTUzLDcgQEAgZGVmaW5lKGBkZXZpY2VfbW9kZWwnLCBgCiAJYWxsb3cgJDEg JDJfdGFyZ2V0OmRvbWFpbiB7IGdldGRvbWFpbmluZm8gc2h1dGRvd24gfTsKIAlhbGxvdyAkMSAk Ml90YXJnZXQ6bW11IHsgbWFwX3JlYWQgbWFwX3dyaXRlIGFkanVzdCBwaHlzbWFwIHRhcmdldF9o YWNrIH07CiAJYWxsb3cgJDEgJDJfdGFyZ2V0Omh2bSB7IGdldHBhcmFtIHNldHBhcmFtIGh2bWN0 bCBjYWNoZWF0dHIgZG0gfTsKKwlhbGxvdyAkMSAkMl90YXJnZXQ6ZG9tYWluMiByZXNvdXJjZV9t YXA7CiAnKQogCiAjIG1ha2VfZGV2aWNlX21vZGVsKHByaXYsIGRtX2RvbSwgaHZtX2RvbSkKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpp bmRleCBjNzJhM2NkZWJiLi43MWJiOWI0ZjkzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0v cDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC0xMTMyLDggKzExMzIsNyBAQCBz dGF0aWMgaW50IHNldF90eXBlZF9wMm1fZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm5fbCwKIH0KIAogLyogU2V0IGZvcmVpZ24gbWZuIGluIHRoZSBnaXZlbiBndWVzdCdz IHAybSB0YWJsZS4gKi8KLXN0YXRpYyBpbnQgc2V0X2ZvcmVpZ25fcDJtX2VudHJ5KHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWZuX3QgbWZuKQoraW50IHNldF9mb3JlaWduX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuKQogewogICAgIHJldHVybiBzZXRfdHlw ZWRfcDJtX2VudHJ5KGQsIGdmbiwgbWZuLCBQQUdFX09SREVSXzRLLCBwMm1fbWFwX2ZvcmVpZ24s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2dldF9ob3N0cDJtKGQpLT5kZWZh dWx0X2FjY2Vzcyk7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2NvbXBhdC9tZW1vcnkuYyBiL3hl bi9jb21tb24vY29tcGF0L21lbW9yeS5jCmluZGV4IDM1YmIyNTk4MDguLjAzMWQxYTQ4YWUgMTAw NjQ0Ci0tLSBhL3hlbi9jb21tb24vY29tcGF0L21lbW9yeS5jCisrKyBiL3hlbi9jb21tb24vY29t cGF0L21lbW9yeS5jCkBAIC03MSw2ICs3MSw3IEBAIGludCBjb21wYXRfbWVtb3J5X29wKHVuc2ln bmVkIGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgY29tcGF0KQogICAgICAg ICAgICAgc3RydWN0IHhlbl9yZW1vdmVfZnJvbV9waHlzbWFwICp4cmZwOwogICAgICAgICAgICAg c3RydWN0IHhlbl92bnVtYV90b3BvbG9neV9pbmZvICp2bnVtYTsKICAgICAgICAgICAgIHN0cnVj dCB4ZW5fbWVtX2FjY2Vzc19vcCAqbWFvOworICAgICAgICAgICAgc3RydWN0IHhlbl9tZW1fYWNx dWlyZV9yZXNvdXJjZSAqbWFyOwogICAgICAgICB9IG5hdDsKICAgICAgICAgdW5pb24gewogICAg ICAgICAgICAgc3RydWN0IGNvbXBhdF9tZW1vcnlfcmVzZXJ2YXRpb24gcnNydjsKQEAgLTc5LDYg KzgwLDcgQEAgaW50IGNvbXBhdF9tZW1vcnlfb3AodW5zaWduZWQgaW50IGNtZCwgWEVOX0dVRVNU X0hBTkRMRV9QQVJBTSh2b2lkKSBjb21wYXQpCiAgICAgICAgICAgICBzdHJ1Y3QgY29tcGF0X2Fk ZF90b19waHlzbWFwX2JhdGNoIGF0cGI7CiAgICAgICAgICAgICBzdHJ1Y3QgY29tcGF0X3ZudW1h X3RvcG9sb2d5X2luZm8gdm51bWE7CiAgICAgICAgICAgICBzdHJ1Y3QgY29tcGF0X21lbV9hY2Nl c3Nfb3AgbWFvOworICAgICAgICAgICAgc3RydWN0IGNvbXBhdF9tZW1fYWNxdWlyZV9yZXNvdXJj ZSBtYXI7CiAgICAgICAgIH0gY21wOwogCiAgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKG5h dC5obmQsIENPTVBBVF9BUkdfWExBVF9WSVJUX0JBU0UpOwpAQCAtMzk1LDYgKzM5Nyw3MSBAQCBp bnQgY29tcGF0X21lbW9yeV9vcCh1bnNpZ25lZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHZvaWQpIGNvbXBhdCkKICAgICAgICAgfQogI2VuZGlmCiAKKyAgICAgICAgY2FzZSBYRU5N RU1fYWNxdWlyZV9yZXNvdXJjZToKKyAgICAgICAgeworICAgICAgICAgICAgeGVuX3Vsb25nX3Qg Knhlbl9mcmFtZV9saXN0ID0gKHhlbl91bG9uZ190ICopKG5hdC5tYXIgKyAxKTsKKyAgICAgICAg ICAgIHVuc2lnbmVkIGludCBtYXhfbnJfZnJhbWVzOworCisgICAgICAgICAgICBpZiAoIGNvcHlf ZnJvbV9ndWVzdCgmY21wLm1hciwgY29tcGF0LCAxKSB8fAorICAgICAgICAgICAgICAgICAhY29t cGF0X2hhbmRsZV9va2F5KGNtcC5tYXIuZnJhbWVfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjbXAubWFyLm5yX2ZyYW1lcykgKQorICAgICAgICAgICAgICAgIHJl dHVybiAtRUZBVUxUOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogVGhlIG51bWJl ciBvZiBmcmFtZXMgaGFuZGxlZCBpcyBjdXJyZW50bHkgbGltaXRlZCB0byBhCisgICAgICAgICAg ICAgKiBzbWFsbCBudW1iZXIgYnkgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24sIHNvIHRo ZQorICAgICAgICAgICAgICogc2NyYXRjaCBzcGFjZSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3Ig Ym91bmNpbmcgdGhlCisgICAgICAgICAgICAgKiBmcmFtZSBhZGRyZXNzZXMuCisgICAgICAgICAg ICAgKi8KKyAgICAgICAgICAgIG1heF9ucl9mcmFtZXMgPSAoQ09NUEFUX0FSR19YTEFUX1NJWkUg LSBzaXplb2YoKm5hdC5tYXIpKSAvCisgICAgICAgICAgICAgICAgc2l6ZW9mKCp4ZW5fZnJhbWVf bGlzdCk7CisKKyAgICAgICAgICAgIC8qIElmIHRoZSBudW1iZXIgb2YgZnJhbWVzIGRvZXMgZXhj ZWVkIHRoZSBtYXhpbXVtIHRoYXQgY2FuCisgICAgICAgICAgICAgKiBiZSBib3VuY2VkIHRoZW4g LUUyQklHIGlzIHJldHVybmVkLCBidXQgdG8gc2F0aXNmeSB0aGUKKyAgICAgICAgICAgICAqIHNl bWFudGljcyBvZiB0aGUgaHlwZXJjYWxsIHRoZW4gd2UgbmVlZCB0byBnZXQgdGhlCisgICAgICAg ICAgICAgKiBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgc3VwcG9ydCBieSB0aGUgaW1wbGVtZW50 YXRpb24uCisgICAgICAgICAgICAgKiBUaGlzIGNhbiBiZSBkb25lIGJ5IHNldCBucl9mcmFtZXMg dG8gemVyby4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBjbXAubWFyLm5yX2Zy YW1lcyA+IG1heF9ucl9mcmFtZXMgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNt cC5tYXIubnJfZnJhbWVzID0gMDsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg ICAgICogU3Rhc2ggdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB0aGF0IGNhbiBiZSBib3Vu Y2VkCisgICAgICAgICAgICAgICAgICogaW4geGVuX2ZyYW1lX2xpc3RbMF0uIEl0IGlzIG5lZWRl ZCBpbiB0aGUgcmV0dXJuIHBhdGguCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAg ICAgeGVuX2ZyYW1lX2xpc3RbMF0gPSBtYXhfbnJfZnJhbWVzOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgZWxzZSBpZiAoIGNtcC5tYXIubnJfZnJhbWVzID09IDAgKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogTWFrZSBzdXJlIHRoYXQg eGVuX2ZyYW1lX2xpc3RbMF0gaXMgemVybyBpbiB0aGUgY2FzZQorICAgICAgICAgICAgICAgICAq IHdoZW4gdGhlIGNhbGxlciBzZXQgbnJfZnJhbWVzIHRvIHplcm8sIHNvIHRoYXQgd2UKKyAgICAg ICAgICAgICAgICAgKiBjYW4gZGlzdGluZ3Vpc2ggdGhpcyBjYXNlIGZyb20gdGhlIGFib3ZlIG9u IHJldHVybi4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICB4ZW5fZnJhbWVf bGlzdFswXSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoIGkgPSAwOyBp IDwgY21wLm1hci5ucl9mcmFtZXM7IGkrKyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgY29tcGF0X3Vsb25nX3QgZnJhbWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIF9fY29weV9m cm9tX2NvbXBhdF9vZmZzZXQoJmZyYW1lLCBjbXAubWFyLmZyYW1lX2xpc3QsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIDEpICkKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICAgICAgICAgICAgICB4ZW5fZnJhbWVfbGlz dFtpXSA9IGZyYW1lOworICAgICAgICAgICAgfQorCisjZGVmaW5lIFhMQVRfbWVtX2FjcXVpcmVf cmVzb3VyY2VfSE5ETF9mcmFtZV9saXN0KF9kXywgX3NfKSBcCisgICAgICAgICAgICBzZXRfeGVu X2d1ZXN0X2hhbmRsZSgoX2RfKS0+ZnJhbWVfbGlzdCwgeGVuX2ZyYW1lX2xpc3QpCisKKyAgICAg ICAgICAgIFhMQVRfbWVtX2FjcXVpcmVfcmVzb3VyY2UobmF0Lm1hciwgJmNtcC5tYXIpOworCisj dW5kZWYgWExBVF9tZW1fYWNxdWlyZV9yZXNvdXJjZV9ITkRMX2ZyYW1lX2xpc3QKKworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl dHVybiBjb21wYXRfYXJjaF9tZW1vcnlfb3AoY21kLCBjb21wYXQpOwogICAgICAgICB9CkBAIC00 MDIsMTQgKzQ2OSw1NiBAQCBpbnQgY29tcGF0X21lbW9yeV9vcCh1bnNpZ25lZCBpbnQgY21kLCBY RU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGNvbXBhdCkKICAgICAgICAgcmMgPSBkb19tZW1v cnlfb3AoY21kLCBuYXQuaG5kKTsKICAgICAgICAgaWYgKCByYyA8IDAgKQogICAgICAgICB7Ci0g ICAgICAgICAgICBpZiAoIHJjID09IC1FTk9CVUZTICYmIG9wID09IFhFTk1FTV9nZXRfdm51bWFp bmZvICkKKyAgICAgICAgICAgIHN3aXRjaCAoIG9wKQogICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgIGNtcC52bnVtYS5ucl92bm9kZXMgPSBuYXQudm51bWEtPm5yX3Zub2RlczsKLSAgICAg ICAgICAgICAgICBjbXAudm51bWEubnJfdmNwdXMgPSBuYXQudm51bWEtPm5yX3ZjcHVzOwotICAg ICAgICAgICAgICAgIGNtcC52bnVtYS5ucl92bWVtcmFuZ2VzID0gbmF0LnZudW1hLT5ucl92bWVt cmFuZ2VzOwotICAgICAgICAgICAgICAgIGlmICggX19jb3B5X3RvX2d1ZXN0KGNvbXBhdCwgJmNt cC52bnVtYSwgMSkgKQotICAgICAgICAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAg ICAgICBjYXNlIFhFTk1FTV9nZXRfdm51bWFpbmZvOgorICAgICAgICAgICAgICAgIGlmICggcmMg PT0gLUVOT0JVRlMgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY21w LnZudW1hLm5yX3Zub2RlcyA9IG5hdC52bnVtYS0+bnJfdm5vZGVzOworICAgICAgICAgICAgICAg ICAgICBjbXAudm51bWEubnJfdmNwdXMgPSBuYXQudm51bWEtPm5yX3ZjcHVzOworICAgICAgICAg ICAgICAgICAgICBjbXAudm51bWEubnJfdm1lbXJhbmdlcyA9IG5hdC52bnVtYS0+bnJfdm1lbXJh bmdlczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBfX2NvcHlfdG9fZ3Vlc3QoY29tcGF0LCAm Y21wLnZudW1hLCAxKSApCisgICAgICAgICAgICAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg IGNhc2UgWEVOTUVNX2FjcXVpcmVfcmVzb3VyY2U6CisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgeGVuX3Vsb25nX3QgKnhlbl9mcmFtZV9saXN0ID0gKHhlbl91bG9uZ190ICopKG5hdC5t YXIgKyAxKTsKKworICAgICAgICAgICAgICAgIGlmICggcmMgPT0gLUVJTlZBTCAmJiB4ZW5fZnJh bWVfbGlzdFswXSAhPSAwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg IC8qCisgICAgICAgICAgICAgICAgICAgICAqIFRoZSB2YWx1ZSBvZiBucl9mcmFtZXMgcGFzc2Vk IHRvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgKiB3YXMgbm90IHRo ZSB2YWx1ZSBwYXNzZWQgYnkgdGhlIGNhbGxlciwgaXQgd2FzCisgICAgICAgICAgICAgICAgICAg ICAqIG92ZXJyaWRkZW4uCisgICAgICAgICAgICAgICAgICAgICAqIFRoZSB2YWx1ZSBpbiB4ZW5f ZnJhbWVfbGlzdFswXSBpcyB0aGUgbWF4aW11bQorICAgICAgICAgICAgICAgICAgICAgKiBudW1i ZXIgb2YgZnJhbWVzIHRoYXQgY2FuIGJlIGJvdW5jZWQgc28gd2UgbmVlZAorICAgICAgICAgICAg ICAgICAgICAgKiB0byBzZXQgY21wLm5yX2ZyYW1lcyB0byB0aGUgbWluaW11bSBvZiB0aGlzIGFu ZAorICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIGFs bG93ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAqIGltcGxlbWVudGF0aW9uIGJlZm9y ZSBwYXNzaW5nIGJhY2sgdG8gdGhlIGNhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgICovCisg ICAgICAgICAgICAgICAgICAgIGNtcC5tYXIubnJfZnJhbWVzID0gbWluX3QodW5zaWduZWQgaW50 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9mcmFt ZV9saXN0WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5hdC5tYXItPm5yX2ZyYW1lcyk7CisgICAgICAgICAgICAgICAgICAgIHJjID0gLUUyQklHOwor ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIEluIGVpdGhlciBvZiB0aGVz ZSBjYXNlcyBucl9mcmFtZXMgaXMgYW4gT1VUIHZhbHVlICovCisgICAgICAgICAgICAgICAgaWYg KCByYyA9PSAtRUlOVkFMIHx8IHJjID09IC1FMkJJRyApCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3QoY29tcGF0LCAmY21wLm1hciwgMSkg KQorICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgLyogQnJlYWsgb3V0IG9mIHRoZSBkbyBsb29wICovCiAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgfQogCkBAIC01MzUsNiArNjQ0LDMwIEBAIGludCBjb21wYXRfbWVtb3J5X29wKHVu c2lnbmVkIGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgY29tcGF0KQogICAg ICAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAg IGNhc2UgWEVOTUVNX2FjcXVpcmVfcmVzb3VyY2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIHhl bl91bG9uZ190ICp4ZW5fZnJhbWVfbGlzdCA9ICh4ZW5fdWxvbmdfdCAqKShuYXQubWFyICsgMSk7 CisgICAgICAgICAgICBjb21wYXRfdWxvbmdfdCAqY29tcGF0X2ZyYW1lX2xpc3QgPQorICAgICAg ICAgICAgICAgIChjb21wYXRfdWxvbmdfdCAqKShuYXQubWFyICsgMSk7CisKKyAgICAgICAgICAg IC8qIE5PVEU6IHRoZSBjb21wYXQgYXJyYXkgb3ZlcndyaXRlcyB0aGUgbmF0aXZlIGFycmF5ICov CisgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGNtcC5tYXIubnJfZnJhbWVzOyBpKysgKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbXBhdF91bG9uZ190IGZyYW1lID0geGVu X2ZyYW1lX2xpc3RbaV07CisKKyAgICAgICAgICAgICAgICBpZiAoIGZyYW1lICE9IHhlbl9mcmFt ZV9saXN0W2ldICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7CisKKyAgICAg ICAgICAgICAgICBjb21wYXRfZnJhbWVfbGlzdFtpXSA9IGZyYW1lOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICBpZiAoIF9fY29weV90b19jb21wYXRfb2Zmc2V0KGNtcC5tYXIuZnJhbWVf bGlzdCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0 X2ZyYW1lX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNt cC5tYXIubnJfZnJhbWVzKSApCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg ICBkb21haW5fY3Jhc2goY3VycmVudC0+ZG9tYWluKTsKICAgICAgICAgICAgIHNwbGl0ID0gMDsK ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29tbW9uL21lbW9yeS5jCmlu ZGV4IGFkOTg3ZTBmMjkuLmE4OGZjODM1NjUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vbWVtb3J5 LmMKKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYwpAQCAtOTY1LDYgKzk2NSw4OCBAQCBzdGF0aWMg bG9uZyB4YXRwX3Blcm1pc3Npb25fY2hlY2soc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IHNwYWNlKQogICAgIHJldHVybiB4c21fYWRkX3RvX3BoeXNtYXAoWFNNX1RBUkdFVCwgY3VycmVu dC0+ZG9tYWluLCBkKTsKIH0KIAorc3RhdGljIGludCBhY3F1aXJlX3Jlc291cmNlKFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQoreworICAgIHN0cnVjdCBkb21haW4gKmQsICpjdXJy ZCA9IGN1cnJlbnQtPmRvbWFpbjsKKyAgICB4ZW5fbWVtX2FjcXVpcmVfcmVzb3VyY2VfdCB4bWFy OworICAgIHVuc2lnbmVkIGxvbmcgbWZuX2xpc3RbMl07CisgICAgaW50IHJjOworCisgICAgaWYg KCBjb3B5X2Zyb21fZ3Vlc3QoJnhtYXIsIGFyZywgMSkgKQorICAgICAgICByZXR1cm4gLUVGQVVM VDsKKworICAgIGlmICggeG1hci5wYWQgIT0gMCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgaWYgKCB4bWFyLm5yX2ZyYW1lcyA9PSAwIHx8CisgICAgICAgICB4bWFyLm5yX2ZyYW1l cyA+IEFSUkFZX1NJWkUobWZuX2xpc3QpICkKKyAgICB7CisgICAgICAgIHJjID0geG1hci5ucl9m cmFtZXMgPT0gMCA/IC1FSU5WQUwgOiAtRTJCSUc7CisgICAgICAgIHhtYXIubnJfZnJhbWVzID0g QVJSQVlfU0laRShtZm5fbGlzdCk7CisKKyAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFyZywg JnhtYXIsIDEpICkKKyAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgICAgIHJldHVy biByYzsKKyAgICB9CisKKyAgICBkID0gcmN1X2xvY2tfZG9tYWluX2J5X2FueV9pZCh4bWFyLmRv bWlkKTsKKyAgICBpZiAoIGQgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRVNSQ0g7CisKKyAg ICByYyA9IHhzbV9kb21haW5fcmVzb3VyY2VfbWFwKFhTTV9ETV9QUklWLCBkKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBzd2l0Y2ggKCB4bWFyLnR5cGUgKQorICAg IHsKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICBicmVh azsKKyAgICB9CisKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBpZiAo ICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoY3VycmQpICkKKyAgICB7CisgICAgICAgIGlmICggY29w eV90b19ndWVzdCh4bWFyLmZyYW1lX2xpc3QsIG1mbl9saXN0LCB4bWFyLm5yX2ZyYW1lcykgKQor ICAgICAgICAgICAgcmMgPSAtRUZBVUxUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg ICB4ZW5fcGZuX3QgZ2ZuX2xpc3RbQVJSQVlfU0laRShtZm5fbGlzdCldOworICAgICAgICB1bnNp Z25lZCBpbnQgaTsKKworICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgIGlmICggY29weV9m cm9tX2d1ZXN0KGdmbl9saXN0LCB4bWFyLmZyYW1lX2xpc3QsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFSUkFZX1NJWkUoZ2ZuX2xpc3QpKSApCisgICAgICAgICAgICBnb3RvIG91dDsK KworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHhtYXIubnJfZnJhbWVzOyBpKysgKQorICAgICAg ICB7CisgICAgICAgICAgICByYyA9IHNldF9mb3JlaWduX3AybV9lbnRyeShjdXJyZCwgZ2ZuX2xp c3RbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKG1mbl9s aXN0W2ldKSk7CisgICAgICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICB3aGlsZSAoIGktLSAhPSAwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgIGludCBpZ25vcmU7CisKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlID0gZ3Vl c3RfcGh5c21hcF9yZW1vdmVfcGFnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJkLCBf Z2ZuKGdmbl9saXN0W2ldKSwgX21mbihtZm5fbGlzdFtpXSksIDApOworICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgfQorCisgb3V0OgorICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOworICAgIHJldHVybiBy YzsKK30KKwogbG9uZyBkb19tZW1vcnlfb3AodW5zaWduZWQgbG9uZyBjbWQsIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnKQogewogICAgIHN0cnVjdCBkb21haW4gKmQsICpjdXJyX2Qg PSBjdXJyZW50LT5kb21haW47CkBAIC0xNDA2LDYgKzE0ODgsMTQgQEAgbG9uZyBkb19tZW1vcnlf b3AodW5zaWduZWQgbG9uZyBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQog ICAgIH0KICNlbmRpZgogCisgICAgY2FzZSBYRU5NRU1fYWNxdWlyZV9yZXNvdXJjZToKKyNpZmRl ZiBDT05GSUdfWDg2CisgICAgICAgIHJjID0gYWNxdWlyZV9yZXNvdXJjZShhcmcpOworI2Vsc2UK KyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyNlbmRpZgorICAgICAgICBicmVhazsKKwogICAg IGRlZmF1bHQ6CiAgICAgICAgIHJjID0gYXJjaF9tZW1vcnlfb3AoY21kLCBhcmcpOwogICAgICAg ICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L3AybS5oCmluZGV4IDE3YjFkMGM4ZDMuLjQ0ZjdlYzA4OGMgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9w Mm0uaApAQCAtNjIwLDYgKzYyMCw5IEBAIHZvaWQgcDJtX21lbW9yeV90eXBlX2NoYW5nZWQoc3Ry dWN0IGRvbWFpbiAqZCk7CiBpbnQgcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHN0cnVjdCBwMm1fZG9t YWluICosIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgZW5kKTsKIAorLyogU2V0IGZvcmVpZ24gZW50cnkgaW4gdGhlIHAybSB0YWJs ZSAoZm9yIHByaXYtbWFwcGluZykgKi8KK2ludCBzZXRfZm9yZWlnbl9wMm1fZW50cnkoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbik7CisKIC8qIFNldCBtbWlv IGFkZHJlc3NlcyBpbiB0aGUgcDJtIHRhYmxlIChmb3IgcGFzcy10aHJvdWdoKSAqLwogaW50IHNl dF9tbWlvX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZu X3QgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIsIHAybV9h Y2Nlc3NfdCBhY2Nlc3MpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL21lbW9yeS5o IGIveGVuL2luY2x1ZGUvcHVibGljL21lbW9yeS5oCmluZGV4IDI5Mzg2ZGY5OGIuLmI3Y2Y3NTNk NzUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaAorKysgYi94ZW4vaW5j bHVkZS9wdWJsaWMvbWVtb3J5LmgKQEAgLTU5OSw2ICs1OTksNDcgQEAgc3RydWN0IHhlbl9yZXNl cnZlZF9kZXZpY2VfbWVtb3J5X21hcCB7CiB0eXBlZGVmIHN0cnVjdCB4ZW5fcmVzZXJ2ZWRfZGV2 aWNlX21lbW9yeV9tYXAgeGVuX3Jlc2VydmVkX2RldmljZV9tZW1vcnlfbWFwX3Q7CiBERUZJTkVf WEVOX0dVRVNUX0hBTkRMRSh4ZW5fcmVzZXJ2ZWRfZGV2aWNlX21lbW9yeV9tYXBfdCk7CiAKKy8q CisgKiBHZXQgdGhlIHBhZ2VzIGZvciBhIHBhcnRpY3VsYXIgZ3Vlc3QgcmVzb3VyY2UsIHNvIHRo YXQgdGhleSBjYW4gYmUKKyAqIG1hcHBlZCBkaXJlY3RseSBieSBhIHRvb2xzIGRvbWFpbi4KKyAq LworI2RlZmluZSBYRU5NRU1fYWNxdWlyZV9yZXNvdXJjZSAyOAorc3RydWN0IHhlbl9tZW1fYWNx dWlyZV9yZXNvdXJjZSB7CisgICAgLyogSU4gLSB0aGUgZG9tYWluIHdob3NlIHJlc291cmNlIGlz IHRvIGJlIG1hcHBlZCAqLworICAgIGRvbWlkX3QgZG9taWQ7CisgICAgLyogSU4gLSB0aGUgdHlw ZSBvZiByZXNvdXJjZSAqLworICAgIHVpbnQxNl90IHR5cGU7CisgICAgLyoKKyAgICAgKiBJTiAt IGEgdHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJlIHplcm8K KyAgICAgKiAgICAgIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLgorICAgICAqLworICAgIHVpbnQz Ml90IGlkOworICAgIC8qIElOL09VVCAtIEFzIGFuIElOIHBhcmFtZXRlciBudW1iZXIgb2YgKDRL KSBmcmFtZXMgb2YgdGhlIHJlc291cmNlCisgICAgICogICAgICAgICAgdG8gYmUgbWFwcGVkLiBI b3dldmVyLCBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGlzIDAgdGhlbgorICAgICAqICAgICAgICAg IC1FSU5WQUwgd2lsbCBiZSByZXR1cm5lZCBhbmQgdGhpcyBmaWVsZCB3aWxsIGJlIHNldCB0byB0 aGUKKyAgICAgKiAgICAgICAgICBtYXhpbXVtIHZhbHVlIHN1cHBvcnRlZCBieSB0aGUgaW1wbGVt ZW50YXRpb24uIEFsc28sCisgICAgICogICAgICAgICAgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBl eGNlZWRzIHRoZSBpbXBsZW1lbnRhdG9uIGxpbWl0CisgICAgICogICAgICAgICAgdGhlbiAtRTJC SUcgd2lsbCBiZSByZXR1cm5lZCBhbmQsIHNpbWlsYXJseSwgdGhpcyBmaWVsZAorICAgICAqICAg ICAgICAgIHdpbGwgYmUgc2V0IHRoZSBtYXhpbXVtIHZhbHVlIHN1cHBvcnRlZCBieSB0aGUKKyAg ICAgKiAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKyAgICAgKi8KKyAgICB1aW50MzJfdCBucl9m cmFtZXM7CisgICAgdWludDMyX3QgcGFkOworICAgIC8qIElOIC0gdGhlIGluZGV4IG9mIHRoZSBp bml0aWFsIGZyYW1lIHRvIGJlIG1hcHBlZC4gVGhpcyBwYXJhbWV0ZXIKKyAgICAgKiAgICAgIGlz IG9wdGlvbmFsIGlmIG5yX2ZyYW1lcyBpcyAwLgorICAgICAqLworICAgIHVpbnQ2NF9hbGlnbmVk X3QgZnJhbWU7CisgICAgLyogSU4vT1VUIC0gSWYgdGhlIHRvb2xzIGRvbWFpbiBpcyBQViB0aGVu LCB1cG9uIHJldHVybiwgZnJhbWVfbGlzdAorICAgICAqICAgICAgICAgIHdpbGwgYmUgcG9wdWxh dGVkIHdpdGggdGhlIE1GTnMgb2YgdGhlIHJlc291cmNlLgorICAgICAqICAgICAgICAgIElmIHRo ZSB0b29scyBkb21haW4gaXMgSFZNIHRoZW4gaXQgaXMgZXhwZWN0ZWQgdGhhdCwgb24KKyAgICAg KiAgICAgICAgICBlbnRyeSwgZnJhbWVfbGlzdCB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGEgbGlz dCBvZiBHRk5zCisgICAgICogICAgICAgICAgdGhhdCB3aWxsIGJlIG1hcHBlZCB0byB0aGUgTUZO cyBvZiB0aGUgcmVzb3VyY2UuCisgICAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgb3B0 aW9uYWwgaWYgbnJfZnJhbWVzIGlzIDAuCisgICAgICovCisgICAgWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fdWxvbmdfdCkgZnJhbWVfbGlzdDsKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fbWVtX2FjcXVp cmVfcmVzb3VyY2UgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlX3Q7CisKICNlbmRpZiAvKiBkZWZp bmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KIAogLyoKQEAgLTY1MCw3 ICs2OTEsNyBAQCBzdHJ1Y3QgeGVuX3ZudW1hX3RvcG9sb2d5X2luZm8gewogdHlwZWRlZiBzdHJ1 Y3QgeGVuX3ZudW1hX3RvcG9sb2d5X2luZm8geGVuX3ZudW1hX3RvcG9sb2d5X2luZm9fdDsKIERF RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl92bnVtYV90b3BvbG9neV9pbmZvX3QpOwogCi0vKiBO ZXh0IGF2YWlsYWJsZSBzdWJvcCBudW1iZXIgaXMgMjggKi8KKy8qIE5leHQgYXZhaWxhYmxlIHN1 Ym9wIG51bWJlciBpcyAyOSAqLwogCiAjZW5kaWYgLyogX19YRU5fUFVCTElDX01FTU9SWV9IX18g Ki8KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94bGF0 LmxzdAppbmRleCAwZjE3MDAwZWE3Li41ODM1ODcyMzM0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS94bGF0LmxzdAorKysgYi94ZW4vaW5jbHVkZS94bGF0LmxzdApAQCAtODMsNiArODMsNyBAQAog IQltZW1vcnlfbWFwCQkJbWVtb3J5LmgKICEJbWVtb3J5X3Jlc2VydmF0aW9uCQltZW1vcnkuaAog IQltZW1fYWNjZXNzX29wCQkJbWVtb3J5LmgKKyEJbWVtX2FjcXVpcmVfcmVzb3VyY2UJCW1lbW9y eS5oCiAhCXBvZF90YXJnZXQJCQltZW1vcnkuaAogIQlyZW1vdmVfZnJvbV9waHlzbWFwCQltZW1v cnkuaAogIQlyZXNlcnZlZF9kZXZpY2VfbWVtb3J5X21hcAltZW1vcnkuaApkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUveHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAppbmRleCBi YTg5ZWE0YmMxLi44ZjA0ZDU5YTNlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXku aAorKysgYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaApAQCAtNzI0LDMgKzcyNCw5IEBAIHN0YXRp YyBYU01fSU5MSU5FIGludCB4c21feGVuX3ZlcnNpb24gKFhTTV9ERUZBVUxUX0FSRyB1aW50MzJf dCBvcCkKICAgICAgICAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihYU01fUFJJViwgY3VycmVu dC0+ZG9tYWluLCBOVUxMKTsKICAgICB9CiB9CisKK3N0YXRpYyBYU01fSU5MSU5FIGludCB4c21f ZG9tYWluX3Jlc291cmNlX21hcChYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCkKK3sK KyAgICBYU01fQVNTRVJUX0FDVElPTihYU01fRE1fUFJJVik7CisgICAgcmV0dXJuIHhzbV9kZWZh dWx0X2FjdGlvbihhY3Rpb24sIGN1cnJlbnQtPmRvbWFpbiwgZCk7Cit9CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS94c20veHNtLmggYi94ZW4vaW5jbHVkZS94c20veHNtLmgKaW5kZXggN2Y3ZmVm ZmM2OC4uZDBkYjg2MGFlMCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveHNtL3hzbS5oCisrKyBi L3hlbi9pbmNsdWRlL3hzbS94c20uaApAQCAtMTgwLDYgKzE4MCw3IEBAIHN0cnVjdCB4c21fb3Bl cmF0aW9ucyB7CiAgICAgaW50ICgqZG1fb3ApIChzdHJ1Y3QgZG9tYWluICpkKTsKICNlbmRpZgog ICAgIGludCAoKnhlbl92ZXJzaW9uKSAodWludDMyX3QgY21kKTsKKyAgICBpbnQgKCpkb21haW5f cmVzb3VyY2VfbWFwKSAoc3RydWN0IGRvbWFpbiAqZCk7CiB9OwogCiAjaWZkZWYgQ09ORklHX1hT TQpAQCAtNjkyLDYgKzY5MywxMSBAQCBzdGF0aWMgaW5saW5lIGludCB4c21feGVuX3ZlcnNpb24g KHhzbV9kZWZhdWx0X3QgZGVmLCB1aW50MzJfdCBvcCkKICAgICByZXR1cm4geHNtX29wcy0+eGVu X3ZlcnNpb24ob3ApOwogfQogCitzdGF0aWMgaW5saW5lIGludCB4c21fZG9tYWluX3Jlc291cmNl X21hcCh4c21fZGVmYXVsdF90IGRlZiwgc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICByZXR1cm4g eHNtX29wcy0+ZG9tYWluX3Jlc291cmNlX21hcChkKTsKK30KKwogI2VuZGlmIC8qIFhTTV9OT19X UkFQUEVSUyAqLwogCiAjaWZkZWYgQ09ORklHX01VTFRJQk9PVApkaWZmIC0tZ2l0IGEveGVuL3hz bS9kdW1teS5jIGIveGVuL3hzbS9kdW1teS5jCmluZGV4IDQ3OWIxMDM2MTQuLjZlNzUxMTk5ZWUg MTAwNjQ0Ci0tLSBhL3hlbi94c20vZHVtbXkuYworKysgYi94ZW4veHNtL2R1bW15LmMKQEAgLTE1 Nyw0ICsxNTcsNSBAQCB2b2lkIF9faW5pdCB4c21fZml4dXBfb3BzIChzdHJ1Y3QgeHNtX29wZXJh dGlvbnMgKm9wcykKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGRtX29wKTsKICNlbmRp ZgogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgeGVuX3ZlcnNpb24pOworICAgIHNldF90 b19kdW1teV9pZl9udWxsKG9wcywgZG9tYWluX3Jlc291cmNlX21hcCk7CiB9CmRpZmYgLS1naXQg YS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggN2Iw MDVhZjgzNC4uN2U5ZWZjZDg2NSAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisr KyBiL3hlbi94c20vZmxhc2svaG9va3MuYwpAQCAtMTcxOCw2ICsxNzE4LDExIEBAIHN0YXRpYyBp bnQgZmxhc2tfeGVuX3ZlcnNpb24gKHVpbnQzMl90IG9wKQogICAgIH0KIH0KIAorc3RhdGljIGlu dCBmbGFza19kb21haW5fcmVzb3VyY2VfbWFwKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgcmV0 dXJuIGN1cnJlbnRfaGFzX3Blcm0oZCwgU0VDQ0xBU1NfRE9NQUlOMiwgRE9NQUlOMl9fUkVTT1VS Q0VfTUFQKTsKK30KKwogbG9uZyBkb19mbGFza19vcChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhz bV9vcF90KSB1X2ZsYXNrX29wKTsKIGludCBjb21wYXRfZmxhc2tfb3AoWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh4c21fb3BfdCkgdV9mbGFza19vcCk7CiAKQEAgLTE4NTEsNiArMTg1Niw3IEBAIHN0 YXRpYyBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgZmxhc2tfb3BzID0gewogICAgIC5kbV9vcCA9IGZs YXNrX2RtX29wLAogI2VuZGlmCiAgICAgLnhlbl92ZXJzaW9uID0gZmxhc2tfeGVuX3ZlcnNpb24s CisgICAgLmRvbWFpbl9yZXNvdXJjZV9tYXAgPSBmbGFza19kb21haW5fcmVzb3VyY2VfbWFwLAog fTsKIAogdm9pZCBfX2luaXQgZmxhc2tfaW5pdChjb25zdCB2b2lkICpwb2xpY3lfYnVmZmVyLCBz aXplX3QgcG9saWN5X3NpemUpCmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nl c3NfdmVjdG9ycyBiL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzCmluZGV4IDNh MmQ4NjNiOGYuLjM0MWFkZTFmN2QgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svcG9saWN5L2Fj Y2Vzc192ZWN0b3JzCisrKyBiL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzCkBA IC0yNTAsNiArMjUwLDggQEAgY2xhc3MgZG9tYWluMgogICAgIHBzcl9jYXRfb3AKICMgWEVOX0RP TUNUTF9zZXRfZ250dGFiX2xpbWl0cwogICAgIHNldF9nbnR0YWJfbGltaXRzCisjIFhFTk1FTV9y ZXNvdXJjZV9tYXAKKyAgICByZXNvdXJjZV9tYXAKIH0KIAogIyBTaW1pbGFyIHRvIGNsYXNzIGRv bWFpbiwgYnV0IHByaW1hcmlseSBjb250YWlucyBkb21jdGxzIHJlbGF0ZWQgdG8gSFZNIGRvbWFp bnMKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=