From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhongze Liu Subject: Re: [PATCH v3 4/7] libxl: support mapping static shared memory areas during domain creation Date: Thu, 9 Nov 2017 08:48:40 +0800 Message-ID: References: <20171019023635.19812-1-blackskygg@gmail.com> <20171019023635.19812-5-blackskygg@gmail.com> <20171101155510.boavdn3ikurx6p6r@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171101155510.boavdn3ikurx6p6r@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu Cc: Julien Grall , Stefano Stabellini , Ian Jackson , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgV2VpLAoKMjAxNy0xMS0wMSAyMzo1NSBHTVQrMDg6MDAgV2VpIExpdSA8d2VpLmxpdTJAY2l0 cml4LmNvbT46Cj4gT24gVGh1LCBPY3QgMTksIDIwMTcgYXQgMTA6MzY6MzJBTSArMDgwMCwgWmhv bmd6ZSBMaXUgd3JvdGU6Cj4+IEFkZCBsaWJ4bF9fc3NobV9hZGQgdG8gbWFwIHNoYXJlZCBwYWdl cyBmcm9tIG9uZSBEb21VIHRvIGFub3RoZXIsIFRoZSBtYXBwaW5nCj4+IHByb2Nlc3MgaW52b2x2 ZXMgdGhlIGZvbGx3aW5nIHN0ZXBzOgo+Pgo+PiAgICogU2V0IGRlZmF1bHRzIGFuZCBjaGVjayBm b3IgZnVydGhlciBlcnJvcnMgaW4gdGhlIHN0YXRpY19zaG0gY29uZmlnczoKPj4gICAgIG92ZXJs YXBwaW5nIGFyZWFzLCBpbnZhbGlkIHJhbmdlcywgZHVwbGljYXRlZCBtYXN0ZXIgZG9tYWluLAo+ PiAgICAgbm8gbWFzdGVyIGRvbWFpbiBldGMuCj4+ICAgKiBXcml0ZSBpbmZvbWF0aW9uIG9mIHN0 YXRpYyBzaGFyZWQgbWVtb3J5IGFyZWFzIGludG8gdGhlIGFwcHJvcHJpYXRlCj4+ICAgICB4ZW5z dG9yZSBwYXRocy4KPj4gICAqIFVzZSB4Y19kb21haW5fYWRkX3RvX3BoeXNtYXBfYmF0Y2ggdG8g ZG8gdGhlIHBhZ2Ugc2hhcmluZy4KPj4gICAqIFNldCB0aGUgcmVmY291bnQgb2YgdGhlIHNoYXJl ZCByZWdpb24gYWNjb3JkaW5nbHkKPj4KPj4gVGVtcG9yYXJpbHkgbWFyayB0aGlzIGFzIHVuc3Vw cG9ydGVkIG9uIHg4NiBiZWNhdXNlIGNhbGxpbmcgcDJtX2FkZF9mb3JlZ2luIG9uCj4+IHR3byBk b21VJ3MgaXMgY3VycmVudGx5IG5vdCBhbGxvd2Qgb24geDg2IChzZWUgdGhlIGNvbW1lbnRzIGlu Cj4+IHg4Ni9tbS9wMm0uYzpwMm1fYWRkX2ZvcmVnaW4gZm9yIG1vcmUgZGV0YWlscykuCj4+Cj4+ IFRoaXMgaXMgZm9yIHRoZSBwcm9wb3NhbCAiQWxsb3cgc2V0dGluZyB1cCBzaGFyZWQgbWVtb3J5 IGFyZWFzIGJldHdlZW4gVk1zCj4+IGZyb20geGwgY29uZmlnIGZpbGUiIChzZWUgWzFdKS4KPj4K Pj4gWzFdIGh0dHBzOi8vbGlzdHMueGVuLm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE3 LTA4L21zZzAzMjQyLmh0bWwKPj4KPj4gU2lnbmVkLW9mZi1ieTogWmhvbmd6ZSBMaXUgPGJsYWNr c2t5Z2dAZ21haWwuY29tPgo+Pgo+PiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4K Pj4gQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+PiBDYzogU3Rl ZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgo+PiBDYzogSnVsaWVuIEdy YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPj4gQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cj4+IC0tLQo+PiAgIFYzOgo+PiAgICogdW5tYXAgdGhlIHN1Y2Nlc3NmdWxseSBtYXBwZWQgcGFn ZXMgd2hlbmV2ZXIgcmMgIT0gMAo+Cj4KPiBBIGdlbmVyYWwgbm90ZTogcGxlYXNlIHByb3Blcmx5 IGNhcGl0YWxpc2UgdGhlIGNvbW1lbnRzLgo+Cj4+IC0tLQo+PiAgdG9vbHMvbGlieGwvTWFrZWZp bGUgICAgICAgICB8ICAgMiArLQo+PiAgdG9vbHMvbGlieGwvbGlieGxfYXJjaC5oICAgICB8ICAg NiArCj4+ICB0b29scy9saWJ4bC9saWJ4bF9hcm0uYyAgICAgIHwgIDE1ICsrCj4+ICB0b29scy9s aWJ4bC9saWJ4bF9jcmVhdGUuYyAgIHwgIDI3ICsrKwo+PiAgdG9vbHMvbGlieGwvbGlieGxfaW50 ZXJuYWwuaCB8ICAxMyArKwo+PiAgdG9vbHMvbGlieGwvbGlieGxfc3NobS5jICAgICB8IDM5NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICB0b29scy9saWJ4 bC9saWJ4bF94ODYuYyAgICAgIHwgIDE4ICsrCj4+ICA3IGZpbGVzIGNoYW5nZWQsIDQ3NSBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGli eGwvbGlieGxfc3NobS5jCj4+Cj4+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9NYWtlZmlsZSBi L3Rvb2xzL2xpYnhsL01ha2VmaWxlCj4+IGluZGV4IDVhODYxZjcyY2IuLjkxYmM3MGNkYTIgMTAw NjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL01h a2VmaWxlCj4gWy4uLl0KPj4gKwo+PiArLyogY2hlY2sgaWYgdGhlIHNzaG0gc2xhdmUgY29uZmln cyBpbiBAc3NobSBvdmVybGFwICovCj4+ICtpbnQgbGlieGxfX3NzaG1fY2hlY2tfb3ZlcmxhcChs aWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9zdGF0aWNfc2htICpzc2htcywgaW50IGxlbikKPj4gK3sKPj4g Kwo+PiArICAgIGNvbnN0IGxpYnhsX3N0YXRpY19zaG0gKipzbGF2ZV9zc2htcyA9IE5VTEw7Cj4+ ICsgICAgaW50IG51bV9zbGF2ZXM7Cj4+ICsgICAgaW50IGk7Cj4+ICsKPj4gKyAgICBpZiAoIWxl bikgcmV0dXJuIDA7Cj4+ICsKPj4gKyAgICBzbGF2ZV9zc2htcyA9IGxpYnhsX19jYWxsb2MoZ2Ms IGxlbiwgc2l6ZW9mKHNsYXZlX3NzaG1zWzBdKSk7Cj4+ICsgICAgbnVtX3NsYXZlcyA9IDA7Cj4+ ICsgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7Cj4+ICsgICAgICAgIGlmIChzc2htc1tp XS5yb2xlID09IExJQlhMX1NTSE1fUk9MRV9TTEFWRSkKPj4gKyAgICAgICAgICAgIHNsYXZlX3Nz aG1zW251bV9zbGF2ZXMrK10gPSBzc2htcyArIGk7Cj4+ICsgICAgfQo+PiArICAgIHFzb3J0KHNs YXZlX3NzaG1zLCBudW1fc2xhdmVzLCBzaXplb2Yoc2xhdmVfc3NobXNbMF0pLCBzc2htX3Jhbmdl X2NtcCk7Cj4+ICsKPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3NsYXZlcyAtIDE7ICsraSkg ewo+PiArICAgICAgICBpZiAoc2xhdmVfc3NobXNbaSsxXS0+YmVnaW4gPCBzbGF2ZV9zc2htc1tp XS0+ZW5kKSB7Cj4+ICsgICAgICAgICAgICBTU0hNX0VSUk9SKGRvbWlkLCBzbGF2ZV9zc2htc1tp KzFdLT5pZCwgInNsYXZlIHJhbmdlcyBvdmVybGFwLiIpOwo+PiArICAgICAgICAgICAgcmV0dXJu IEVSUk9SX0lOVkFMOwo+PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgcmV0dXJu IDA7Cj4+ICt9Cj4+ICsKPj4gKy8qICAgbGlieGxfX3NzaG1fZG9fbWFwIC0tIG1hcCBwYWdlcyBp bnRvIHNsYXZlJ3MgcGh5c21hcAo+PiArICoKPj4gKyAqICAgVGhpcyBmdW5jdGlvbnMgbWFwcwo+ PiArICogICAgIG1hdGVyIGdmbjogW0Btc3NobS0+YmVnaW4gKyBAc3NobS0+b2Zmc2V0LCBAbXNz aG0tPmVuZCArIEBzc2htLT5vZmZzZXQpCj4KPiAibWFzdGVyIgo+Cj4gVGhpcyBpcyBjb25mdXNp bmcuIFdoYXQgaWYgb2Zmc2V0IGlzIG5vdCBwYWdlIGFsaWduZWQ/CgpObywgaXQgd2lsbCBhbHdh eXMgYmUgcGFnZS1hbGlnbmVkLiBUaGlzIHdhcyBkb2N1bWVudGVkIGluIHRoZSBtYW4KcGFnZSBh bmQgYWxzbyBjaGVja2VkCmluIHRoZSBjb3JyZXNwb25kaW5nIGxpYnhsdV8qIGZ1bmN0aW9uLgoK Pgo+PiArICogICBpbnRvCj4+ICsgKiAgICAgc2xhdmUgZ2ZuOiBbQHNzaG0tPmJlZ2luLCBAc3No bS0+ZW5kKQo+PiArICoKPj4gKyAqICAgVGhlIGdmbnMgb2YgdGhlIHBhZ2VzIHRoYXQgYXJlIHN1 Y2Nlc3NmdWxseSBtYXBwZWQgd2lsbCBiZSBzdG9yZWQKPj4gKyAqICAgaW4gQG1hcHBlZCwgYW5k IHRoZSBudW1iZXIgb2YgdGhlIGdmbnMgd2lsbCBiZSBzdG9yZWQgaW4gQG5tYXBwZWQuCj4+ICsg Kgo+PiArICogICBUaGUgY2FsbGVyIGhhdmUgdG8gZ3VhcmVudGVlIHRoYXQgc3NobS0+YmVnaW4g PCBzc2htLT5lbmQgKi8KPj4gK3N0YXRpYyBpbnQgbGlieGxfX3NzaG1fZG9fbWFwKGxpYnhsX19n YyAqZ2MsIHVpbnQzMl90IG1pZCwgdWludDMyX3Qgc2lkLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfc3RhdGljX3NobSAqc3NobSwgbGlieGxfc3RhdGljX3NobSAqbXNz aG0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgKm1hcHBlZCwg dW5zaWduZWQgaW50ICpubWFwcGVkKQo+PiArewo+PiArICAgIGludCByYzsKPj4gKyAgICBpbnQg aTsKPj4gKyAgICB1bnNpZ25lZCBpbnQgbnVtX21wYWdlcywgbnVtX3NwYWdlcywgbnVtX3N1Y2Nl c3MsIG9mZnNldDsKPj4gKyAgICBpbnQgKmVycnM7Cj4+ICsgICAgeGVuX3Vsb25nX3QgKmlkeHM7 Cj4+ICsgICAgeGVuX3Bmbl90ICpncGZuczsKPj4gKwo+PiArICAgIG51bV9tcGFnZXMgPSAobXNz aG0tPmVuZCAtIG1zc2htLT5iZWdpbikgPj4gWENfUEFHRV9TSElGVDsKPj4gKyAgICBudW1fc3Bh Z2VzID0gKHNzaG0tPmVuZCAtIHNzaG0tPmJlZ2luKSA+PiBYQ19QQUdFX1NISUZUOwo+PiArICAg IG9mZnNldCA9IHNzaG0tPm9mZnNldCA+PiBYQ19QQUdFX1NISUZUOwo+PiArCj4+ICsgICAgLyog Q2hlY2sgcmFuZ2UuIFRlc3Qgb2Zmc2V0IDwgbXBhZ2VzIGZpcnN0IHRvIGF2b2lkIG92ZXJmbG93 ICovCj4+ICsgICAgaWYgKChvZmZzZXQgPj0gbnVtX21wYWdlcykgfHwgKG51bV9tcGFnZXMgLSBv ZmZzZXQgPCBudW1fc3BhZ2VzKSkgewo+PiArICAgICAgICBTU0hNX0VSUk9SKHNpZCwgc3NobS0+ aWQsICJleGNlZWRzIG1hc3RlcidzIGFkZHJlc3Mgc3BhY2UuIik7Cj4+ICsgICAgICAgIHJjID0g RVJST1JfSU5WQUw7Cj4+ICsgICAgICAgIGdvdG8gb3V0Owo+PiArICAgIH0KPj4gKwo+PiArICAg IC8qIGZpbGwgb3V0IHRoZSBwZm4ncyBhbmQgZG8gdGhlIG1hcHBpbmcgKi8KPj4gKyAgICBlcnJz ID0gbGlieGxfX2NhbGxvYyhnYywgbnVtX3NwYWdlcywgc2l6ZW9mKGludCkpOwo+PiArICAgIGlk eHMgPSBsaWJ4bF9fY2FsbG9jKGdjLCBudW1fc3BhZ2VzLCBzaXplb2YoeGVuX3Vsb25nX3QpKTsK Pj4gKyAgICBncGZucyA9IGxpYnhsX19jYWxsb2MoZ2MsIG51bV9zcGFnZXMsIHNpemVvZih4ZW5f cGZuX3QpKTsKPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3NwYWdlczsgaSsrKSB7Cj4+ICsg ICAgICAgIGlkeHNbaV0gPSAobXNzaG0tPmJlZ2luID4+IFhDX1BBR0VfU0hJRlQpICsgb2Zmc2V0 ICsgaTsKPj4gKyAgICAgICAgZ3BmbnNbaV09IChzc2htLT5iZWdpbiA+PiBYQ19QQUdFX1NISUZU KSArIGk7Cj4+ICsgICAgfQo+PiArICAgIHJjID0geGNfZG9tYWluX2FkZF90b19waHlzbWFwX2Jh dGNoKENUWC0+eGNoLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpZCwgbWlkLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhF Tk1BUFNQQUNFX2dtZm5fZm9yZWlnbiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudW1fc3BhZ2VzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlkeHMsIGdwZm5zLCBlcnJzKTsKPj4gKwo+PiArICAgIG51bV9zdWNjZXNzID0g MDsKPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3NwYWdlczsgaSsrKSB7Cj4+ICsgICAgICAg IGlmIChlcnJzW2ldKSB7Cj4+ICsgICAgICAgICAgICBTU0hNX0VSUk9SKHNpZCwgc3NobS0+aWQs Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBtYXAgYXQgYWRkcmVzcyAweCUiUFJJ eDY0Ii4iLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBncGZuc1tpXSA8PCBYQ19QQUdFX1NI SUZUKTsKPj4gKyAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKPj4gKyAgICAgICAgfSBlbHNl IHsKPj4gKyAgICAgICAgICAgIG1hcHBlZFtudW1fc3VjY2VzcysrXSA9IGdwZm5zW2ldOwo+PiAr ICAgICAgICB9Cj4+ICsgICAgfQo+PiArICAgICpubWFwcGVkID0gbnVtX3N1Y2Nlc3M7Cj4+ICsg ICAgaWYgKHJjKSBnb3RvIG91dDsKPj4gKwo+PiArICAgIHJjID0gMDsKPj4gK291dDoKPj4gKyAg ICByZXR1cm4gcmM7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgbGlieGxfX3NzaG1faW5jcmVm KGxpYnhsX19nYyAqZ2MsIHhzX3RyYW5zYWN0aW9uX3QgeHQsCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpzc2htX3BhdGgpCj4+ICt7Cj4+ICsgICAgaW50IHJj LCBjb3VudDsKPj4gKyAgICBjb25zdCBjaGFyICpjb3VudF9wYXRoLCAqY291bnRfc3RyaW5nOwo+ PiArCj4+ICsgICAgY291bnRfcGF0aCA9IEdDU1BSSU5URigiJXMvdXNlcnMiLCBzc2htX3BhdGgp Owo+PiArICAgIHJjID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgeHQsIGNvdW50X3BhdGgs ICZjb3VudF9zdHJpbmcpOwo+PiArICAgIGlmIChyYykgZ290byBvdXQ7Cj4+ICsgICAgY291bnQg PSBhdG9pKGNvdW50X3N0cmluZyk7Cj4+ICsKPj4gKyAgICBjb3VudF9zdHJpbmcgPSBHQ1NQUklO VEYoIiVkIiwgY291bnQrMSk7Cj4+ICsgICAgcmMgPSBsaWJ4bF9feHNfd3JpdGVfY2hlY2tlZChn YywgeHQsIGNvdW50X3BhdGgsIGNvdW50X3N0cmluZyk7Cj4+ICsgICAgaWYgKHJjKSBnb3RvIG91 dDsKPj4gKwo+PiArICAgIHJjID0gMDsKPj4gK291dDoKPj4gKyAgICByZXR1cm4gcmM7Cj4+ICt9 Cj4+ICsKPiBbLi4uXQo+PiArCj4+ICsgICAgICAgIC8qIGFsbCBjaGVja3MgcGFzc2VkLCBkbyB0 aGUgam9iICovCj4+ICsgICAgICAgIGlmICghaXNyZXRyeSkgewo+PiArICAgICAgICAgICAgcmMg PSBsaWJ4bF9fc3NobV9kb19tYXAoZ2MsIG1hc3Rlcl9kb21pZCwgZG9taWQsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2htLCAmbWFzdGVyX3NzaG0sCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWQsICZubWFwcGVkKTsKPj4gKyAg ICAgICAgICAgIGlmIChyYykgZ290byBvdXQ7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAg ICAvKiB3cml0ZSB0aGUgcmVzdWx0IHRvIHhlbnN0b3JlIGFuZCBjb21taXQgKi8KPj4gKyAgICAg ICAgcmMgPSBsaWJ4bF9feHNfd3JpdGVfY2hlY2tlZChnYywgeHQsIGRvbV9yb2xlX3BhdGgsICJz bGF2ZSIpOwo+PiArICAgICAgICBpZiAocmMpIGdvdG8gb3V0Owo+PiArICAgICAgICByYyA9IGxp YnhsX194c193cml0ZXYoZ2MsIHh0LCBzbGF2ZV9wYXRoLCBlbnRzKTsKPj4gKyAgICAgICAgaWYg KHJjKSBnb3RvIG91dDsKPj4gKyAgICAgICAgcmMgPSBsaWJ4bF9fc3NobV9pbmNyZWYoZ2MsIHh0 LCBzc2htX3BhdGgpOwo+PiArICAgICAgICBpZiAocmMpIGdvdG8gb3V0Owo+PiArCj4+ICsgICAg ICAgIHJjID0gbGlieGxfX3hzX3RyYW5zYWN0aW9uX2NvbW1pdChnYywgJnh0KTsKPj4gKyAgICAg ICAgaWYgKCFyYykgYnJlYWs7Cj4+ICsgICAgICAgIGlmIChyYyA8IDApIGdvdG8gb3V0Owo+PiAr ICAgICAgICBpc3JldHJ5ID0gdHJ1ZTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByYyA9IDA7Cj4+ ICtvdXQ6Cj4+ICsgICAgaWYgKHJjKSB7Cj4+ICsgICAgICAgIC8qIHJvbGUgYmFjayBzdWNjZXNz ZnVsbHkgbWFwcGVkIHBhZ2VzICovCj4+ICsgICAgICAgIFNTSE1fRVJST1IoZG9taWQsIHNzaG0t PmlkLCAiZmFpbGVkIHRvIG1hcCBzb21lIHBhZ2VzLCBjYW5jZWxsaW5nLiIpOwo+PiArICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbm1hcHBlZDsgaSsrKSB7Cj4+ICsgICAgICAgICAgICB4Y19kb21h aW5fcmVtb3ZlX2Zyb21fcGh5c21hcChDVFgtPnhjaCwgZG9taWQsIG1hcHBlZFtpXSk7Cj4+ICsg ICAgICAgIH0KPgo+IEl0IGlzIHBvc3NpYmxlIHRvIGdldCBoZXJlIHdoZW4gdGhlIGZpcnN0IGF0 dGVtcHQgb2YgbWFwcGluZyBoYXMgZmFpbGVkLgo+IFRoZSBkb19tYXAgZnVuY3Rpb24gY2FuIHJl dHVybiBlYXJseSBiZWZvcmUgaXQgbW9kaWZpZXMgbm1hcHBlZC4gQXQKPiBmaXJzdCBnbGFuY2Ug dGhpcyBjb2RlIHNuaXBwZXQgaXMgYnVnZ3kuCj4KPiBJIHdvdWxkIHN1Z2dlc3QgeW91IGNoYW5n ZSBpc3JldHJ5IHRvIG1hcHBlZCBhbmQgYWRqdXN0IHRoZSBwcmVkaWNhdGUKPiBmb3Igcm9sbGlu ZyBiYWNrLgoKbm1hcHBlZCB3YXMgaW5pdGlhbGl6ZWQgdG8gMCwgc28gZXZlbiBpZiBkb19tYXAg ZmFpbHMgZWFybHkgKGFuZCB0aGUKb25seSBwb3NzaWJsZSBjYXNlCndoZXJlIGRvX21hcCBkb2Vz bid0IG1vZGlmeSBubWFwcGVkIGlzIHdoZW4gbm8gcGFnZSB3YXMgYWN0dWFsbHkgbWFwcGVkKSwg dGhlCnZhbHVlIG9mIG5tYXBwZWQgc3RheSBjb3JyZWN0IGFuZCBubyBwYWdlcyB3aWxsIGJlIHJv bGxlZCBiYWNrLgoKPgo+PiArICAgIH0KPj4gKwo+PiArICAgIGxpYnhsX194c190cmFuc2FjdGlv bl9hYm9ydChnYywgJnh0KTsKPj4gKwo+PiArICAgIHJldHVybiByYzsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBsaWJ4bF9fc3NobV9hZGRfbWFzdGVyKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90 IGRvbWlkLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3N0YXRp Y19zaG0gKnNzaG0pCj4+ICt7Cj4+ICsgICAgaW50IHJjOwo+PiArICAgIGNvbnN0IGNoYXIgKnNz aG1fcGF0aCwgKmRvbV9wYXRoLCAqZG9tX3JvbGVfcGF0aDsKPj4gKyAgICBjaGFyICplbnRzWzEz XTsKPj4gKyAgICBzdHJ1Y3QgeHNfcGVybWlzc2lvbnMgbm9wZXJtOwo+PiArICAgIHhzX3RyYW5z YWN0aW9uX3QgeHQgPSBYQlRfTlVMTDsKPj4gKwo+PiArICAgIHNzaG1fcGF0aCA9IFNTSE1fUEFU SChzc2htLT5pZCk7Cj4+ICsgICAgZG9tX3BhdGggPSBsaWJ4bF9feHNfZ2V0X2RvbXBhdGgoZ2Ms IGRvbWlkKTsKPj4gKyAgICAvKiB0aGUgZG9tYWluIHNob3VsZCBiZSBpbiB4ZW5zdG9yZSBieSBu b3cgKi8KPj4gKyAgICBhc3NlcnQoZG9tX3BhdGgpOwo+PiArICAgIGRvbV9yb2xlX3BhdGggPSBH Q1NQUklOVEYoIiVzL3N0YXRpY19zaG0vJXMvcm9sZSIsIGRvbV9wYXRoLCBzc2htLT5pZCk7Cj4+ ICsKPj4gKyAgICAvKiBwcmVwYXJlIHRoZSB4ZW5zdG9yZSBlbnRyaWVzICovCj4+ICsgICAgZW50 c1swXSA9ICJtYXN0ZXIiOwo+PiArICAgIGVudHNbMV0gPSBHQ1NQUklOVEYoIiUiUFJJdTMyLCBk b21pZCk7Cj4+ICsgICAgZW50c1syXSA9ICJiZWdpbiI7Cj4+ICsgICAgZW50c1szXSA9IEdDU1BS SU5URigiMHglIlBSSXg2NCwgc3NobS0+YmVnaW4pOwo+PiArICAgIGVudHNbNF0gPSAiZW5kIjsK Pj4gKyAgICBlbnRzWzVdID0gR0NTUFJJTlRGKCIweCUiUFJJeDY0LCBzc2htLT5lbmQpOwo+PiAr ICAgIGVudHNbNl0gPSAicHJvdCI7Cj4+ICsgICAgZW50c1s3XSA9IGxpYnhsX19zdHJkdXAoZ2Ms IGxpYnhsX3NzaG1fcHJvdF90b19zdHJpbmcoc3NobS0+cHJvdCkpOwo+PiArICAgIGVudHNbOF0g PSAiY2FjaGVfcG9saWN5IjsKPj4gKyAgICBlbnRzWzldID0gbGlieGxfX3N0cmR1cChnYywKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9zc2htX2NhY2hlcG9saWN5X3RvX3N0 cmluZyhzc2htLT5jYWNoZV9wb2xpY3kpKTsKPj4gKyAgICBlbnRzWzEwXSA9ICJ1c2VycyI7Cj4+ ICsgICAgZW50c1sxMV0gPSAiMSI7Cj4+ICsgICAgZW50c1sxMl0gPSBOVUxMOwo+PiArCj4+ICsg ICAgLyogY291bGQgb25seSBiZSBhY2Nlc3NlZCBieSBEb20wICovCj4+ICsgICAgbm9wZXJtLmlk ID0gMDsKPj4gKyAgICBub3Blcm0ucGVybXMgPSBYU19QRVJNX05PTkU7Cj4+ICsKPgo+IFRoZSBv d25lciBvZiB0aGUgcGF0aCBpcyBnb2luZyB0byBiZSBEb20wIGFuZCBhbGwgb3RoZXIgZG9tYWlu cyBoYXZlIG5vCj4gcGVybWlzc2lvbiwgd2hpY2ggbWF0Y2hlcyB0aGUgY29tbWVudC4KPgo+IERv IHlvdSBub3Qgd2FudCBkb21pZCB0byBiZSBhYmxlIHRvIHJlYWQ/IElmIHlvdSBkb24ndCB3YW50 IGl0IHRvIHJlYWQKPiBmcm9tIHRoZSBwYXRoLCB3aHkgbm90IHB1dCBpbiB1bmRlciBzb21lIG90 aGVyIHBhdGhzIGxpa2UgL2xpYnhsLz8KPgoKSSB0aGluayB0aGlzIGlzIHRvIGJlIGRpc2N1c3Nl ZC4gQnV0IGluIG15IG9waW5pb24sIHRoZSB0YXJnZXQgdXNlciB3b24ndCBuZWVkCnRoaXMgaW5m b3JtYXRpb24gYmVjYXVzZSB0aGUgYWRkcmVzcyBpcyBvZnRlbiBzdGF0aWNhbGx5IHNldHVwIGFu ZCBoYXJkY29kZWQKaW4gdGhlIHNpbXBsZSBiYXJlIG1ldGFsIGFwcHMgcnVubmluZyBpbnNpZGUg dGhlIERvbVUncywgc28gSSB3aWxsIGN1cnJlbnRseQptYXJrIGl0IGFzIG5vcGVybSBhbmQgbW92 ZSBpdCB0byAvbGlieGwgYXMgeW91IHN1Z2dlc3RlZCAoc2VjdXJlIGJ5IGRlZmF1bHQpLgpJZiwg dGhlIGZ1dHVyZSwgdGhlcmUgYXJlIG5lZWRzIHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiBmcm9t IHdpdGhpbiB0aGUgRG9tVSdzLAp3ZSBjb3VsZCBlYXNpbHkgbW92ZSBpdCBiYWNrIGFuZCBzZXQg dGhlIHBlcm1pc3Npb25zIGFjY29yZGluZ2x5LgoKPj4gKyAgICBmb3IgKDs7KSB7Cj4+ICsgICAg ICAgIHJjID0gbGlieGxfX3hzX3RyYW5zYWN0aW9uX3N0YXJ0KGdjLCAmeHQpOwo+PiArICAgICAg ICBpZiAocmMpIGdvdG8gb3V0Owo+PiArCj4+ICsgICAgICAgIGlmICghbGlieGxfX3hzX3JlYWQo Z2MsIHh0LCBzc2htX3BhdGgpKSB7Cj4+ICsgICAgICAgICAgICAvKiBldmVyeSBJRCBjYW4gYXBw ZWFyIGluIGVhY2ggZG9tYWluIGF0IG1vc3Qgb25jZSAqLwo+PiArICAgICAgICAgICAgaWYgKGxp YnhsX194c19yZWFkKGdjLCB4dCwgZG9tX3JvbGVfcGF0aCkpIHsKPj4gKyAgICAgICAgICAgICAg ICBTU0hNX0VSUk9SKGRvbWlkLCBzc2htLT5pZCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICJkb21haW4gdHJpZWQgdG8gbWFwIHRoZSBzYW1lIElEIHR3aWNlLiIpOwo+PiArICAgICAg ICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKPj4gKyAgICAgICAgICAgICAgICBnb3RvIG91dDsK Pj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIHJjID0gbGlieGxfX3hzX3dyaXRlX2No ZWNrZWQoZ2MsIHh0LCBkb21fcm9sZV9wYXRoLCAibWFzdGVyIik7Cj4+ICsgICAgICAgICAgICBp ZiAocmMpIGdvdG8gb3V0OzsKPj4gKwo+PiArICAgICAgICAgICAgbGlieGxfX3hzX21rbm9kKGdj LCB4dCwgc3NobV9wYXRoLCAmbm9wZXJtLCAxKTsKPj4gKyAgICAgICAgICAgIGxpYnhsX194c193 cml0ZXYoZ2MsIHh0LCBzc2htX3BhdGgsIGVudHMpOwo+PiArICAgICAgICB9IGVsc2Ugewo+PiAr ICAgICAgICAgICAgU1NITV9FUlJPUihkb21pZCwgc3NobS0+aWQsICJjYW4gb25seSBoYXZlIG9u ZSBtYXN0ZXIuIik7Cj4+ICsgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cj4+ICsgICAgICAg ICAgICBnb3RvIG91dDsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIHJjID0gbGlieGxf X3hzX3RyYW5zYWN0aW9uX2NvbW1pdChnYywgJnh0KTsKPj4gKyAgICAgICAgaWYgKCFyYykgYnJl YWs7Cj4+ICsgICAgICAgIGlmIChyYyA8IDApIGdvdG8gb3V0Owo+PiArICAgIH0KPj4gKwo+PiAr ICAgIHJjID0gMDsKPj4gK291dDoKPj4gKyAgICBsaWJ4bF9feHNfdHJhbnNhY3Rpb25fYWJvcnQo Z2MsICZ4dCk7Cj4+ICsgICAgcmV0dXJuIHJjOwo+PiArfQo+PiArCj4gWy4uLl0KPj4gZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMK Pj4gaW5kZXggNWY5MWZlNGY5Mi4uNDUwZmIzZDM1NCAxMDA2NDQKPj4gLS0tIGEvdG9vbHMvbGli eGwvbGlieGxfeDg2LmMKPj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMKPj4gQEAgLTU5 Niw2ICs1OTYsMjQgQEAgdm9pZCBsaWJ4bF9fYXJjaF9kb21haW5fYnVpbGRfaW5mb19hY3BpX3Nl dGRlZmF1bHQoCj4+ICAgICAgbGlieGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZiX2luZm8tPmFjcGks IHRydWUpOwo+PiAgfQo+Pgo+PiArYm9vbCBsaWJ4bF9fYXJjaF9kb21haW5fc3VwcG9ydF9zc2ht KGNvbnN0IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8pCj4+ICt7Cj4+ICsgICAgLyog RklYTUU6IE1hcmsgdGhpcyBhcyB1bnN1cHBvcnRlZCBmb3IgY2FsbGluZyBwMm1fYWRkX2ZvcmVp Z24gb24gdHdvCj4+ICsgICAgICogRG9tVSdzIGlzIGN1cnJlbnRseSBub3QgYWxsb3dkIG9uIHg4 Niwgc2VlIHRoZSBjb21tZW50cyBpbgo+PiArICAgICAqIHg4Ni9tbS9wMm0uYzogcDJtX2FkZF9m b3JlaWduICovCj4KPiBNb3ZlIHRoZSAqLyB0byBhIG5ldyBsaW5lIHBsZWFzZS4gQW5kIGFkZCAi LiIgYWZ0ZXIgInAybV9hZGRfZm9yZWlnbiIuCj4KPj4gKyAgICAgcmV0dXJuIGZhbHNlOwo+PiAr fQo+PiArCj4+ICtpbnQgbGlieGxfX2FyY2hfZG9tYWluX3NzaG1fY2FjaGVwb2xpY3lfc2V0ZGVm YXVsdChsaWJ4bF9zdGF0aWNfc2htICpzc2htKQo+PiArewo+PiArICAgIGlmIChzc2htLT5jYWNo ZV9wb2xpY3kgPT0gTElCWExfU1NITV9DQUNIRVBPTElDWV9VTktOT1dOKQo+PiArICAgICAgICBz c2htLT5jYWNoZV9wb2xpY3kgPSBMSUJYTF9TU0hNX0NBQ0hFUE9MSUNZX1g4Nl9OT1JNQUw7Cj4+ ICsgICAgaWYgKHNzaG0tPmNhY2hlX3BvbGljeSA8IExJQlhMX1NTSE1fQ0FDSEVQT0xJQ1lfWDg2 X05PUk1BTCkKPj4gKyAgICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwo+PiArCj4+ICsgICAgcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gIC8qCj4+ICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4+ICAgKiBt b2RlOiBDCj4+IC0tCj4+IDIuMTQuMgo+PgoKQ2hlZXJzLAoKWmhvbmd6ZSBMaXUKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=