From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 03/12] tools/libxenforeignmemory: add support for resource mapping Date: Thu, 31 Aug 2017 10:35:56 +0100 Message-ID: <20170831093605.2757-4-paul.durrant@citrix.com> References: <20170831093605.2757-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnLtZ-00067B-KA for xen-devel@lists.xenproject.org; Thu, 31 Aug 2017 09:36:17 +0000 In-Reply-To: <20170831093605.2757-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: Wei Liu , Paul Durrant , Ian Jackson List-Id: xen-devel@lists.xenproject.org QSBwcmV2aW91cyBwYXRjaCBpbnRyb2R1Y2VkIGEgbmV3IEhZUEVSVklTT1JfbWVtb3J5X29wIHRv IGFjcXVpcmUgZ3Vlc3QKcmVzb3VyY2VzIGZvciBkaXJlY3QgcHJpdi1tYXBwaW5nLgoKVGhpcyBw YXRjaCBhZGRzIG5ldyBmdW5jdGlvbmFsaXR5IGludG8gbGlieGVuZm9yZWlnbm1lbW9yeSB0byBt YWtlIHVzZQpvZiBhIG5ldyBwcml2Y21kIGlvY3RsIFsxXSB0aGF0IHVzZXMgdGhlIG5ldyBtZW1v cnkgb3AgdG8gbWFrZSBzdWNoCnJlc291cmNlcyBhdmFpbGFibGUgdmlhIG1tYXAoMikuCgpbMV0g aHR0cDovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9cGVvcGxlL3BhdWxkdS9saW51eC5naXQ7 YT1jb21taXQ7aD1jZTU5YTA1ZTY3MTIKClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1 LmNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgoKdjI6CiAtIEJ1 bXAgbWlub3IgdmVyc2lvbiB1cCB0byAzLgotLS0KIHRvb2xzL2luY2x1ZGUveGVuLXN5cy9MaW51 eC9wcml2Y21kLmggICAgICAgICAgICAgIHwgMTEgKysrKysKIHRvb2xzL2xpYnMvZm9yZWlnbm1l bW9yeS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHRvb2xzL2xpYnMvZm9yZWln bm1lbW9yeS9jb3JlLmMgICAgICAgICAgICAgICAgICAgIHwgNTEgKysrKysrKysrKysrKysrKysr KysrKwogLi4uL2xpYnMvZm9yZWlnbm1lbW9yeS9pbmNsdWRlL3hlbmZvcmVpZ25tZW1vcnkuaCAg fCAzOSArKysrKysrKysrKysrKysrKwogdG9vbHMvbGlicy9mb3JlaWdubWVtb3J5L2xpYnhlbmZv cmVpZ25tZW1vcnkubWFwICAgfCAgNSArKysKIHRvb2xzL2xpYnMvZm9yZWlnbm1lbW9yeS9saW51 eC5jICAgICAgICAgICAgICAgICAgIHwgNDUgKysrKysrKysrKysrKysrKysrKwogdG9vbHMvbGli cy9mb3JlaWdubWVtb3J5L3ByaXZhdGUuaCAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysr KysrCiA3IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS94ZW4tc3lzL0xpbnV4L3ByaXZjbWQuaCBiL3Rvb2xz L2luY2x1ZGUveGVuLXN5cy9MaW51eC9wcml2Y21kLmgKaW5kZXggNzMyZmY3YzE1YS4uOTUzMWI3 MjhmOSAxMDA2NDQKLS0tIGEvdG9vbHMvaW5jbHVkZS94ZW4tc3lzL0xpbnV4L3ByaXZjbWQuaAor KysgYi90b29scy9pbmNsdWRlL3hlbi1zeXMvTGludXgvcHJpdmNtZC5oCkBAIC04Niw2ICs4Niwx NSBAQCB0eXBlZGVmIHN0cnVjdCBwcml2Y21kX2RtX29wIHsKIAljb25zdCBwcml2Y21kX2RtX29w X2J1Zl90IF9fdXNlciAqdWJ1ZnM7CiB9IHByaXZjbWRfZG1fb3BfdDsKIAordHlwZWRlZiBzdHJ1 Y3QgcHJpdmNtZF9tbWFwX3Jlc291cmNlIHsKKwlkb21pZF90IGRvbTsKKwlfX3UzMiB0eXBlOwor CV9fdTMyIGlkOworCV9fdTMyIGlkeDsKKwlfX3U2NCBudW07CisJX191NjQgYWRkcjsKK30gcHJp dmNtZF9tbWFwX3Jlc291cmNlX3Q7CisKIC8qCiAgKiBAY21kOiBJT0NUTF9QUklWQ01EX0hZUEVS Q0FMTAogICogQGFyZzogJnByaXZjbWRfaHlwZXJjYWxsX3QKQEAgLTEwMyw1ICsxMTIsNyBAQCB0 eXBlZGVmIHN0cnVjdCBwcml2Y21kX2RtX29wIHsKIAlfSU9DKF9JT0NfTk9ORSwgJ1AnLCA1LCBz aXplb2YocHJpdmNtZF9kbV9vcF90KSkKICNkZWZpbmUgSU9DVExfUFJJVkNNRF9SRVNUUklDVAkJ CQkJXAogCV9JT0MoX0lPQ19OT05FLCAnUCcsIDYsIHNpemVvZihkb21pZF90KSkKKyNkZWZpbmUg SU9DVExfUFJJVkNNRF9NTUFQX1JFU09VUkNFCQkJCVwKKwlfSU9DKF9JT0NfTk9ORSwgJ1AnLCA3 LCBzaXplb2YocHJpdmNtZF9tbWFwX3Jlc291cmNlX3QpKQogCiAjZW5kaWYgLyogX19MSU5VWF9Q VUJMSUNfUFJJVkNNRF9IX18gKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZm9yZWlnbm1lbW9y eS9NYWtlZmlsZSBiL3Rvb2xzL2xpYnMvZm9yZWlnbm1lbW9yeS9NYWtlZmlsZQppbmRleCBiMTEw MDc2NjIxLi43ZWI1OWM3OGNiIDEwMDY0NAotLS0gYS90b29scy9saWJzL2ZvcmVpZ25tZW1vcnkv TWFrZWZpbGUKKysrIGIvdG9vbHMvbGlicy9mb3JlaWdubWVtb3J5L01ha2VmaWxlCkBAIC0yLDcg KzIsNyBAQCBYRU5fUk9PVCA9ICQoQ1VSRElSKS8uLi8uLi8uLgogaW5jbHVkZSAkKFhFTl9ST09U KS90b29scy9SdWxlcy5tawogCiBNQUpPUiAgICA9IDEKLU1JTk9SICAgID0gMgorTUlOT1IgICAg PSAzCiBTSExJQl9MREZMQUdTICs9IC1XbCwtLXZlcnNpb24tc2NyaXB0PWxpYnhlbmZvcmVpZ25t ZW1vcnkubWFwCiAKIENGTEFHUyAgICs9IC1XZXJyb3IgLVdtaXNzaW5nLXByb3RvdHlwZXMKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZm9yZWlnbm1lbW9yeS9jb3JlLmMgYi90b29scy9saWJzL2Zv cmVpZ25tZW1vcnkvY29yZS5jCmluZGV4IGE2ODk3ZGM1NjEuLjgzODY0MGFhODQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnMvZm9yZWlnbm1lbW9yeS9jb3JlLmMKKysrIGIvdG9vbHMvbGlicy9mb3Jl aWdubWVtb3J5L2NvcmUuYwpAQCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgog I2luY2x1ZGUgPGVycm5vLmg+CiAKKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCiAjaW5jbHVkZSAi cHJpdmF0ZS5oIgogCiB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGVuZm9yZWlnbm1lbW9yeV9v cGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCkBAIC0xMjAsNiArMTIyLDU1IEBAIGludCB4 ZW5mb3JlaWdubWVtb3J5X3Jlc3RyaWN0KHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICpmbWVtLAog ICAgIHJldHVybiBvc2RlcF94ZW5mb3JlaWdubWVtb3J5X3Jlc3RyaWN0KGZtZW0sIGRvbWlkKTsK IH0KIAoreGVuZm9yZWlnbm1lbW9yeV9yZXNvdXJjZV9oYW5kbGUgKnhlbmZvcmVpZ25tZW1vcnlf bWFwX3Jlc291cmNlKAorICAgIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICpmbWVtLCBkb21pZF90 IGRvbWlkLCB1bnNpZ25lZCBpbnQgdHlwZSwKKyAgICB1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVk IGxvbmcgZnJhbWUsIHVuc2lnbmVkIGxvbmcgbnJfZnJhbWVzLAorICAgIHZvaWQgKipwYWRkciwg aW50IHByb3QsIGludCBmbGFncykKK3sKKyAgICB4ZW5mb3JlaWdubWVtb3J5X3Jlc291cmNlX2hh bmRsZSAqZnJlczsKKyAgICBpbnQgcmM7CisKKyAgICAvKiBDaGVjayBmbGFncyBvbmx5IGNvbnRh aW5zIFBPU0lYIGRlZmluZWQgdmFsdWVzICovCisgICAgaWYgKCBmbGFncyAmIH4oTUFQX1NIQVJF RCB8IE1BUF9QUklWQVRFKSApCisgICAgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAg ICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZnJlcyA9IGNhbGxvYygxLCBzaXplb2YoKmZy ZXMpKTsKKyAgICBpZiAoICFmcmVzICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmcmVz LT5kb21pZCA9IGRvbWlkOworICAgIGZyZXMtPnR5cGUgPSB0eXBlOworICAgIGZyZXMtPmlkID0g aWQ7CisgICAgZnJlcy0+ZnJhbWUgPSBmcmFtZTsKKyAgICBmcmVzLT5ucl9mcmFtZXMgPSBucl9m cmFtZXM7CisgICAgZnJlcy0+YWRkciA9ICpwYWRkcjsKKyAgICBmcmVzLT5wcm90ID0gcHJvdDsK KyAgICBmcmVzLT5mbGFncyA9IGZsYWdzOworCisgICAgcmMgPSBvc2RlcF94ZW5mb3JlaWdubWVt b3J5X21hcF9yZXNvdXJjZShmbWVtLCBmcmVzKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290 byBmYWlsOworCisgICAgKnBhZGRyID0gZnJlcy0+YWRkcjsKKyAgICByZXR1cm4gZnJlczsKKwor ZmFpbDoKKyAgICBmcmVlKGZyZXMpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgeGVu Zm9yZWlnbm1lbW9yeV91bm1hcF9yZXNvdXJjZSgKKyAgICB4ZW5mb3JlaWdubWVtb3J5X2hhbmRs ZSAqZm1lbSwgeGVuZm9yZWlnbm1lbW9yeV9yZXNvdXJjZV9oYW5kbGUgKmZyZXMpCit7CisgICAg b3NkZXBfeGVuZm9yZWlnbm1lbW9yeV91bm1hcF9yZXNvdXJjZShmbWVtLCBmcmVzKTsKKworICAg IGZyZWUoZnJlcyk7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRp ZmYgLS1naXQgYS90b29scy9saWJzL2ZvcmVpZ25tZW1vcnkvaW5jbHVkZS94ZW5mb3JlaWdubWVt b3J5LmggYi90b29scy9saWJzL2ZvcmVpZ25tZW1vcnkvaW5jbHVkZS94ZW5mb3JlaWdubWVtb3J5 LmgKaW5kZXggZjQ4MTRjMzkwZi4uMjFlYzNkZjZkZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9m b3JlaWdubWVtb3J5L2luY2x1ZGUveGVuZm9yZWlnbm1lbW9yeS5oCisrKyBiL3Rvb2xzL2xpYnMv Zm9yZWlnbm1lbW9yeS9pbmNsdWRlL3hlbmZvcmVpZ25tZW1vcnkuaApAQCAtMTM4LDYgKzEzOCw0 NSBAQCBpbnQgeGVuZm9yZWlnbm1lbW9yeV91bm1hcCh4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAq Zm1lbSwKIGludCB4ZW5mb3JlaWdubWVtb3J5X3Jlc3RyaWN0KHhlbmZvcmVpZ25tZW1vcnlfaGFu ZGxlICpmbWVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBkb21pZCk7 CiAKK3R5cGVkZWYgc3RydWN0IHhlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlIHhlbmZv cmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlOworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gbWFw cyBhIGd1ZXN0IHJlc291cmNlLgorICoKKyAqIEBwYXJtIGZtZW0gaGFuZGxlIHRvIHRoZSBvcGVu IGZvcmVpZ25tZW1vcnkgaW50ZXJmYWNlCisgKiBAcGFybSBkb21pZCB0aGUgZG9tYWluIGlkCisg KiBAcGFybSB0eXBlIHRoZSByZXNvdXJjZSB0eXBlCisgKiBAcGFybSBpZCB0aGUgdHlwZS1zcGVj aWZpYyByZXNvdXJjZSBpZGVudGlmaWVyCisgKiBAcGFybSBmcmFtZSBiYXNlIGZyYW1lIGluZGV4 IHdpdGhpbiB0aGUgcmVzb3VyY2UKKyAqIEBwYXJtIG5yX2ZyYW1lcyBudW1iZXIgb2YgZnJhbWVz IHRvIG1hcAorICogQHBhcm0gcGFkZHIgcG9pbnRlciB0byBhbiBhZGRyZXNzIHBhc3NlZCB0aHJv dWdoIHRvIG1tYXAoMikKKyAqIEBwYXJtIHByb3QgcGFzc2VkIHRocm91Z2ggdG8gbW1hcCgyKQor ICogQHBhcm0gUE9TSVgtb25seSBmbGFncyBwYXNzZWQgdGhyb3VnaCB0byBtbWFwKDIpCisgKiBA cmV0dXJuIHBvaW50ZXIgdG8gZm9yZWlnbm1lbW9yeSByZXNvdXJjZSBoYW5kbGUgb24gc3VjY2Vz cywgTlVMTCBvbgorICogICAgICAgICBmYWlsdXJlCisgKgorICogKnBhZGRyIGlzIHVzZWQsIG9u IGVudHJ5LCBhcyBhIGhpbnQgYWRkcmVzcyBmb3IgZm9yZWlnbiBtYXAgcGxhY2VtZW50CisgKiAo c2VlIG1tYXAoMikpIHNvIHNob3VsZCBiZSBzZXQgdG8gTlVMTCBpZiBubyBzcGVjaWZpYyBwbGFj ZW1lbnQgaXMKKyAqIHJlcXVpcmVkLiBPbiByZXR1cm4gKnBhZGRyIGNvbnRhaW5zIHRoZSBhZGRy ZXNzIHdoZXJlIHRoZSByZXNvdXJjZSBpcworICogbWFwcGVkLgorICogQXMgZm9yIHhlbmZvcmVp Z25tZW1vcnlfbWFwMigpIGZsYWdzIGlzIGEgc2V0IG9mIGFkZGl0aW9uYWwgZmxhZ3MKKyAqIGZv ciBtbWFwKDIpLiBOb3QgYWxsIG9mIHRoZSBmbGFnIGNvbWJpbmF0aW9ucyBhcmUgcG9zc2libGUg ZHVlIHRvCisgKiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMu CisgKi8KK3hlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlICp4ZW5mb3JlaWdubWVtb3J5 X21hcF9yZXNvdXJjZSgKKyAgICB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqZm1lbSwgZG9taWRf dCBkb21pZCwgdW5zaWduZWQgaW50IHR5cGUsCisgICAgdW5zaWduZWQgaW50IGlkLCB1bnNpZ25l ZCBsb25nIGZyYW1lLCB1bnNpZ25lZCBsb25nIG5yX2ZyYW1lcywKKyAgICB2b2lkICoqcGFkZHIs IGludCBwcm90LCBpbnQgZmxhZ3MpOworCisvKioKKyAqIFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMg YSBwcmV2aW91c2x5IGFjcXVpcmVkIHJlc291cmNlLgorICoKKyAqIEBwYXJtIGZtZW0gaGFuZGxl IHRvIHRoZSBvcGVuIGZvcmVpZ25tZW1vcnkgaW50ZXJmYWNlCisgKiBAcGFybSBmcmVzIGhhbmRs ZSB0byB0aGUgYWNxdWlyZWQgcmVzb3VyY2UKKyAqLwordm9pZCB4ZW5mb3JlaWdubWVtb3J5X3Vu bWFwX3Jlc291cmNlKAorICAgIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICpmbWVtLCB4ZW5mb3Jl aWdubWVtb3J5X3Jlc291cmNlX2hhbmRsZSAqZnJlcyk7CisKICNlbmRpZgogCiAvKgpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlicy9mb3JlaWdubWVtb3J5L2xpYnhlbmZvcmVpZ25tZW1vcnkubWFwIGIv dG9vbHMvbGlicy9mb3JlaWdubWVtb3J5L2xpYnhlbmZvcmVpZ25tZW1vcnkubWFwCmluZGV4IDcx NmVjYWYxNWMuLmQ1MzIzYzg3ZDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZm9yZWlnbm1lbW9y eS9saWJ4ZW5mb3JlaWdubWVtb3J5Lm1hcAorKysgYi90b29scy9saWJzL2ZvcmVpZ25tZW1vcnkv bGlieGVuZm9yZWlnbm1lbW9yeS5tYXAKQEAgLTE0LDMgKzE0LDggQEAgVkVSU18xLjIgewogCWds b2JhbDoKIAkJeGVuZm9yZWlnbm1lbW9yeV9tYXAyOwogfSBWRVJTXzEuMTsKK1ZFUlNfMS4zIHsK KwlnbG9iYWw6CisJCXhlbmZvcmVpZ25tZW1vcnlfbWFwX3Jlc291cmNlOworCQl4ZW5mb3JlaWdu bWVtb3J5X3VubWFwX3Jlc291cmNlOworfSBWRVJTXzEuMjsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnMvZm9yZWlnbm1lbW9yeS9saW51eC5jIGIvdG9vbHMvbGlicy9mb3JlaWdubWVtb3J5L2xpbnV4 LmMKaW5kZXggMzc0ZTQ1YWVkNS4uNDQ0NzcyM2NiMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9m b3JlaWdubWVtb3J5L2xpbnV4LmMKKysrIGIvdG9vbHMvbGlicy9mb3JlaWdubWVtb3J5L2xpbnV4 LmMKQEAgLTI3Nyw2ICsyNzcsNTEgQEAgaW50IG9zZGVwX3hlbmZvcmVpZ25tZW1vcnlfcmVzdHJp Y3QoeGVuZm9yZWlnbm1lbW9yeV9oYW5kbGUgKmZtZW0sCiAgICAgcmV0dXJuIGlvY3RsKGZtZW0t PmZkLCBJT0NUTF9QUklWQ01EX1JFU1RSSUNULCAmZG9taWQpOwogfQogCit2b2lkIG9zZGVwX3hl bmZvcmVpZ25tZW1vcnlfdW5tYXBfcmVzb3VyY2UoCisgICAgeGVuZm9yZWlnbm1lbW9yeV9oYW5k bGUgKmZtZW0sIHhlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlICpmcmVzKQoreworICAg ICh2b2lkKSBtdW5tYXAoZnJlcy0+YWRkciwgZnJlcy0+bnJfZnJhbWVzIDw8IFBBR0VfU0hJRlQp OworfQorCitpbnQgb3NkZXBfeGVuZm9yZWlnbm1lbW9yeV9tYXBfcmVzb3VyY2UoCisgICAgeGVu Zm9yZWlnbm1lbW9yeV9oYW5kbGUgKmZtZW0sIHhlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFu ZGxlICpmcmVzKQoreworICAgIHByaXZjbWRfbW1hcF9yZXNvdXJjZV90IG1yOworICAgIGludCBy YzsKKworICAgIGZyZXMtPmFkZHIgPSBtbWFwKGZyZXMtPmFkZHIsIGZyZXMtPm5yX2ZyYW1lcyA8 PCBQQUdFX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgIGZyZXMtPnByb3QsIGZyZXMtPmZs YWdzIHwgTUFQX1NIQVJFRCwgZm1lbS0+ZmQsIDApOworICAgIGlmICggZnJlcy0+YWRkciA9PSBN QVBfRkFJTEVEICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbWVtc2V0KCZtciwgMCwgc2l6 ZW9mKG1yKSk7CisgICAgbXIuZG9tID0gZnJlcy0+ZG9taWQ7CisgICAgbXIudHlwZSA9IGZyZXMt PnR5cGU7CisgICAgbXIuaWQgPSBmcmVzLT5pZDsKKyAgICBtci5pZHggPSBmcmVzLT5mcmFtZTsK KyAgICBtci5udW0gPSBmcmVzLT5ucl9mcmFtZXM7CisgICAgbXIuYWRkciA9ICh1aW50cHRyX3Qp ZnJlcy0+YWRkcjsKKworICAgIHJjID0gaW9jdGwoZm1lbS0+ZmQsIElPQ1RMX1BSSVZDTURfTU1B UF9SRVNPVVJDRSwgJm1yKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIGludCBzYXZl ZF9lcnJubzsKKworICAgICAgICBpZiAoIGVycm5vICE9IEVOT1RUWSApCisgICAgICAgICAgICBQ RVJST1IoImlvY3RsIGZhaWxlZCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJubyA9 IEVPUE5PVFNVUFA7CisKKyAgICAgICAgc2F2ZWRfZXJybm8gPSBlcnJubzsKKyAgICAgICAgb3Nk ZXBfeGVuZm9yZWlnbm1lbW9yeV91bm1hcF9yZXNvdXJjZShmbWVtLCBmcmVzKTsKKyAgICAgICAg ZXJybm8gPSBzYXZlZF9lcnJubzsKKworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAg cmV0dXJuIDA7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYg LS1naXQgYS90b29scy9saWJzL2ZvcmVpZ25tZW1vcnkvcHJpdmF0ZS5oIGIvdG9vbHMvbGlicy9m b3JlaWdubWVtb3J5L3ByaXZhdGUuaAppbmRleCBjNWMwN2NjNGM0Li45ZmY5NGI3MjRkIDEwMDY0 NAotLS0gYS90b29scy9saWJzL2ZvcmVpZ25tZW1vcnkvcHJpdmF0ZS5oCisrKyBiL3Rvb2xzL2xp YnMvZm9yZWlnbm1lbW9yeS9wcml2YXRlLmgKQEAgLTQyLDYgKzQyLDM2IEBAIHZvaWQgKmNvbXBh dF9tYXBmb3JlaWduX2JhdGNoKHhlbmZvcmVpZ25tZW1faGFuZGxlICpmbWVtLCB1aW50MzJfdCBk b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgKmFyciwgaW50IG51 bSk7CiAjZW5kaWYKIAorc3RydWN0IHhlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlIHsK KyAgICBkb21pZF90IGRvbWlkOworICAgIHVuc2lnbmVkIGludCB0eXBlOworICAgIHVuc2lnbmVk IGludCBpZDsKKyAgICB1bnNpZ25lZCBsb25nIGZyYW1lOworICAgIHVuc2lnbmVkIGxvbmcgbnJf ZnJhbWVzOworICAgIHZvaWQgKmFkZHI7CisgICAgaW50IHByb3Q7CisgICAgaW50IGZsYWdzOwor fTsKKworI2lmbmRlZiBfX2xpbnV4X18KK3N0YXRpYyBpbmxpbmUgaW50IG9zZGVwX3hlbmZvcmVp Z25tZW1vcnlfbWFwX3Jlc291cmNlKAorICAgIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICpmbWVt LCB4ZW5mb3JlaWdubWVtb3J5X3Jlc291cmNlX2hhbmRsZSAqZnJlcykKK3sKKyAgICBlcnJubyA9 IEVPUE5PVFNVUFA7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgb3Nk ZXBfeGVuZm9yZWlnbm1lbW9yeV91bm1hcF9yZXNvdXJjZSgKKyAgICB4ZW5mb3JlaWdubWVtb3J5 X2hhbmRsZSAqZm1lbSwgeGVuZm9yZWlnbm1lbW9yeV9yZXNvdXJjZV9oYW5kbGUgKmZyZXMpCit7 Cit9CisjZWxzZQoraW50IG9zZGVwX3hlbmZvcmVpZ25tZW1vcnlfbWFwX3Jlc291cmNlKAorICAg IHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICpmbWVtLCB4ZW5mb3JlaWdubWVtb3J5X3Jlc291cmNl X2hhbmRsZSAqZnJlcyk7Cit2b2lkIG9zZGVwX3hlbmZvcmVpZ25tZW1vcnlfdW5tYXBfcmVzb3Vy Y2UoCisgICAgeGVuZm9yZWlnbm1lbW9yeV9oYW5kbGUgKmZtZW0sIHhlbmZvcmVpZ25tZW1vcnlf cmVzb3VyY2VfaGFuZGxlICpmcmVzKTsKKyNlbmRpZgorCiAjZGVmaW5lIFBFUlJPUihfZi4uLikg XAogICAgIHh0bF9sb2coZm1lbS0+bG9nZ2VyLCBYVExfRVJST1IsIGVycm5vLCAieGVuZm9yZWln bm1lbW9yeSIsIF9mKQogCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK