From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wen Congyang Subject: Re: [PATCH v10 16/31] secondary vm suspend/resume/checkpoint code Date: Fri, 26 Feb 2016 10:30:40 +0800 Message-ID: <56CFB8D0.1070108@cn.fujitsu.com> References: <1456109555-28299-1-git-send-email-wency@cn.fujitsu.com> <1456109555-28299-17-git-send-email-wency@cn.fujitsu.com> <20160225155649.GH4235@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160225155649.GH4235@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: Lars Kurth , Changlong Xie , Ian Campbell , Andrew Cooper , Jiang Yunhong , Ian Jackson , xen devel , Dong Eddie , Gui Jianfeng , Shriram Rajagopalan , Yang Hongyang List-Id: xen-devel@lists.xenproject.org T24gMDIvMjUvMjAxNiAxMTo1NiBQTSwgV2VpIExpdSB3cm90ZToKPiBPbiBNb24sIEZlYiAyMiwg MjAxNiBhdCAxMDo1MjoyMEFNICswODAwLCBXZW4gQ29uZ3lhbmcgd3JvdGU6Cj4+IFNlY29uZGFy eSB2bSBpcyBydW5uaW5nIGluIGNvbG8gbW9kZS4gU28gd2Ugd2lsbCBkbwo+PiB0aGUgZm9sbG93 aW5nIHRoaW5ncyBhZ2FpbiBhbmQgYWdhaW46Cj4+IDEuIFJlc3VtZSBzZWNvbmRhcnkgdm0KPj4g ICAgYS4gU2VuZCBDSEVDS1BPSU5UX1NWTV9SRUFEWSB0byBtYXN0ZXIuCj4+ICAgIGIuIElmIGl0 IGlzIG5vdCB0aGUgZmlyc3QgcmVzdW1lLCBjYWxsIGxpYnhsX19jaGVja3BvaW50X2RldmljZXNf cHJlcmVzdW1lKCkuCj4+ICAgIGMuIElmIGl0IGlzIHRoZSBmaXJzdCByZXN1bWUocmVzdW1lIHJp Z2h0IGFmdGVyIGxpdmUgbWlncmF0aW9uKSwKPj4gICAgICAgLSBjYWxsIGxpYnhsX194Y19kb21h aW5fcmVzdG9yZV9kb25lKCkgdG8gYnVpbGQgdGhlIHNlY29uZGFyeSB2bS4KPj4gICAgICAgLSBl bmFibGUgc2Vjb25kYXJ5IHZtJ3MgbG9nZGlydHkuCj4+ICAgICAgIC0gY2FsbCBsaWJ4bF9fZG9t YWluX3Jlc3VtZSgpIHRvIHJlc3VtZSBzZWNvbmRhcnkgdm0uCj4+ICAgICAgIC0gY2FsbCBsaWJ4 bF9fY2hlY2twb2ludF9kZXZpY2VzX3NldHVwKCkgdG8gc2V0dXAgY2hlY2twb2ludCBkZXZpY2Vz Lgo+PiAgICBkLiBTZW5kIENIRUNLUE9JTlRfU1ZNX1JFU1VNRUQgdG8gbWFzdGVyLgo+PiAyLiBX YWl0IGEgbmV3IGNoZWNrcG9pbnQKPj4gICAgYS4gQ2FsbCBsaWJ4bF9fY2hlY2twb2ludF9kZXZp Y2VzX2NvbW1pdCgpLgo+PiAgICBiLiBSZWFkIENIRUNLUE9JTlRfTkVXIGZyb20gbWFzdGVyLgo+ PiAzLiBTdXNwZW5kIHNlY29uZGFyeSB2bQo+PiAgICBhLiBTdXNwZW5kIHNlY29uZGFyeSB2bS4K Pj4gICAgYi4gQ2FsbCBsaWJ4bF9fY2hlY2twb2ludF9kZXZpY2VzX3Bvc3RzdXNwZW5kKCkuCj4+ ICAgIGMuIFNlbmQgQ0hFQ0tQT0lOVF9TVk1fU1VTUEVOREVEIHRvIG1hc3Rlci4KPj4KPj4gU2ln bmVkLW9mZi1ieTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KPj4gU2lnbmVk LW9mZi1ieTogWWFuZyBIb25neWFuZyA8aG9uZ3lhbmcueWFuZ0BlYXN5c3RhY2suY24+Cj4+IC0t LQo+PiAgdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmggICAgICAgfCAgICAyICsKPj4gIHRvb2xz L2xpYnhjL3hjX3NyX3NhdmUuYyAgICAgICAgIHwgICAgMyArLQo+PiAgdG9vbHMvbGlieGwvTWFr ZWZpbGUgICAgICAgICAgICAgfCAgICAxICsKPj4gIHRvb2xzL2xpYnhsL2xpYnhsX2NvbG8uaCAg ICAgICAgIHwgICAyNCArCj4+ICB0b29scy9saWJ4bC9saWJ4bF9jb2xvX3Jlc3RvcmUuYyB8IDEw MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIHRvb2xzL2xpYnhs L2xpYnhsX2NyZWF0ZS5jICAgICAgIHwgICAzNyArKwo+PiAgdG9vbHMvbGlieGwvbGlieGxfaW50 ZXJuYWwuaCAgICAgfCAgIDE5ICsKPj4gIHRvb2xzL2xpYnhsL2xpYnhsX3NhdmVfY2FsbG91dC5j IHwgICAgNyArLQo+PiAgdG9vbHMvbGlieGwvbGlieGxfc3RyZWFtX3JlYWQuYyAgfCAgIDEyICsK Pj4gIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgIHwgICAgMSArCj4gCj4gVGhlcmUg aXMgYSBidW5jaCBvZiBUT0RPcyBpbiBsaWJ4bF9jb2xvLmMgYnV0IEkgZG9uJ3QgdGhpbmsgeW91 J3JlIGluIGEKPiBiZXR0ZXIgcG9zaXRpb24gdG8ganVkZ2Ugd2hldGhlciB0aGV5IHNob3VsZCBi ZSBibG9ja2VyIG9yIG5vdC4KPiAKPj4gIDEwIGZpbGVzIGNoYW5nZWQsIDExNDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJ4bC9s aWJ4bF9jb2xvLmgKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJ4bC9saWJ4bF9jb2xv X3Jlc3RvcmUuYwo+Pgo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmgg Yi90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaAo+PiBpbmRleCA1ZDlmNDk3Li4yYmZlZDY0IDEw MDY0NAo+PiAtLS0gYS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaAo+PiArKysgYi90b29scy9s aWJ4Yy94Y19zcl9jb21tb24uaAo+PiBAQCAtMTg0LDEwICsxODQsMTIgQEAgc3RydWN0IHhjX3Ny X2NvbnRleHQKPj4gICAgICAgKiBtaWdyYXRpb24gc3RyZWFtCj4+ICAgICAgICogMDogUGxhaW4g Vk0KPj4gICAgICAgKiAxOiBSZW11cwo+PiArICAgICAqIDI6IENPTE8KPj4gICAgICAgKi8KPj4g ICAgICBlbnVtIHsKPj4gICAgICAgICAgTUlHX1NUUkVBTV9OT05FLCAvKiBwbGFpbiBzdHJlYW0g Ki8KPj4gICAgICAgICAgTUlHX1NUUkVBTV9SRU1VUywKPj4gKyAgICAgICAgTUlHX1NUUkVBTV9D T0xPLAo+PiAgICAgIH0gbWlncmF0aW9uX3N0cmVhbTsKPj4gIAo+PiAgICAgIHVuaW9uIC8qIENv bW1vbiBzYXZlIG9yIHJlc3RvcmUgZGF0YS4gKi8KPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX3NyX3NhdmUuYyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYwo+PiBpbmRleCBmZTIxMGNj Li43MzkzMzU1IDEwMDY0NAo+PiAtLS0gYS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMKPj4gKysr IGIvdG9vbHMvbGlieGMveGNfc3Jfc2F2ZS5jCj4+IEBAIC04NDYsNyArODQ2LDggQEAgaW50IHhj X2RvbWFpbl9zYXZlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgaW9fZmQsIHVpbnQzMl90IGRvbSwK Pj4gIAo+PiAgICAgIC8qIElmIGFsdGVyaW5nIG1pZ3JhdGlvbl9zdHJlYW0gdXBkYXRlIHRoaXMg YXNzZXJ0IHRvby4gKi8KPj4gICAgICBhc3NlcnQoY2hlY2twb2ludGVkX3N0cmVhbSA9PSBNSUdf U1RSRUFNX05PTkUgfHwKPj4gLSAgICAgICAgICAgY2hlY2twb2ludGVkX3N0cmVhbSA9PSBNSUdf U1RSRUFNX1JFTVVTKTsKPj4gKyAgICAgICAgICAgY2hlY2twb2ludGVkX3N0cmVhbSA9PSBNSUdf U1RSRUFNX1JFTVVTIHx8Cj4+ICsgICAgICAgICAgIGNoZWNrcG9pbnRlZF9zdHJlYW0gPT0gTUlH X1NUUkVBTV9DT0xPKTsKPj4gIAo+PiAgICAgIC8qCj4+ICAgICAgICogVE9ETzogRmluZCBzb21l IHRpbWUgdG8gYmV0dGVyIHR3ZWFrIHRoZSBsaXZlIG1pZ3JhdGlvbiBhbGdvcml0aG0uCj4gCj4g Wy4uLl0KPiAKPj4gKwo+PiArI2luY2x1ZGUgImxpYnhsX29zZGVwcy5oIiAvKiBtdXN0IGNvbWUg YmVmb3JlIGFueSBvdGhlciBoZWFkZXJzICovCj4+ICsKPj4gKyNpbmNsdWRlICJsaWJ4bF9pbnRl cm5hbC5oIgo+PiArI2luY2x1ZGUgImxpYnhsX2NvbG8uaCIKPj4gKyNpbmNsdWRlICJsaWJ4bF9z cl9zdHJlYW1fZm9ybWF0LmgiCj4+ICsKPj4gK2VudW0gewo+PiArICAgIExJQlhMX0NPTE9fU0VU VVBFRCwKPj4gKyAgICBMSUJYTF9DT0xPX1NVU1BFTkRFRCwKPj4gKyAgICBMSUJYTF9DT0xPX1JF U1VNRUQsCj4+ICt9Owo+PiArCj4+ICt0eXBlZGVmIHN0cnVjdCBsaWJ4bF9fY29sb19yZXN0b3Jl X2NoZWNrcG9pbnRfc3RhdGUgbGlieGxfX2NvbG9fcmVzdG9yZV9jaGVja3BvaW50X3N0YXRlOwo+ PiArc3RydWN0IGxpYnhsX19jb2xvX3Jlc3RvcmVfY2hlY2twb2ludF9zdGF0ZSB7Cj4+ICsgICAg bGlieGxfX2RvbWFpbl9zdXNwZW5kX3N0YXRlIGRzcHM7Cj4+ICsgICAgbGlieGxfX2xvZ2RpcnR5 X3N3aXRjaCBsZHM7Cj4+ICsgICAgbGlieGxfX2NvbG9fcmVzdG9yZV9zdGF0ZSAqY3JzOwo+PiAr ICAgIGxpYnhsX19zdHJlYW1fd3JpdGVfc3RhdGUgc3dzOwo+PiArICAgIGludCBzdGF0dXM7Cj4+ ICsgICAgYm9vbCBwcmVyZXN1bWU7Cj4+ICsgICAgLyogdXNlZCBmb3IgdGVhcmRvd24gKi8KPj4g KyAgICBpbnQgdGVhcmRvd25fZGV2aWNlczsKPj4gKyAgICBpbnQgc2F2ZWRfcmM7Cj4+ICsgICAg Y2hhciAqc3RhdGVfZmlsZTsKPj4gKwo+PiArICAgIHZvaWQgKCpjYWxsYmFjaykobGlieGxfX2Vn YyAqLAo+PiArICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2NvbG9fcmVzdG9yZV9jaGVja3Bv aW50X3N0YXRlICosCj4+ICsgICAgICAgICAgICAgICAgICAgICBpbnQpOwo+PiArfTsKPj4gKwo+ IAo+IFNob3VsZG4ndCB0aGUgZW51bSBhbmQgc3RydWN0IGJlbG9uZyB0byBsaWJ4bF9jb2xvLmgg PwoKSXQgb25seSBiZSB1c2VkIGJ5IHJlc3RvcmUgc2lkZS4gSSB0aGluayBpdCBpcyBPSyB0byBt b3ZlIHRoZW0gdG8gbGlieGxfY29sby5oLgoKPiAKPj4gKwo+PiArc3RhdGljIHZvaWQgbGlieGxf X2NvbG9fcmVzdG9yZV9kb21haW5fcmVzdW1lX2NhbGxiYWNrKHZvaWQgKmRhdGEpOwo+PiArc3Rh dGljIHZvaWQgbGlieGxfX2NvbG9fcmVzdG9yZV9kb21haW5fY2hlY2twb2ludF9jYWxsYmFjayh2 b2lkICpkYXRhKTsKPj4gK3N0YXRpYyB2b2lkIGxpYnhsX19jb2xvX3Jlc3RvcmVfZG9tYWluX3dh aXRfY2hlY2twb2ludF9jYWxsYmFjayh2b2lkICpkYXRhKTsKPj4gK3N0YXRpYyB2b2lkIGxpYnhs X19jb2xvX3Jlc3RvcmVfZG9tYWluX3N1c3BlbmRfY2FsbGJhY2sodm9pZCAqZGF0YSk7Cj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBsaWJ4bF9fY2hlY2twb2ludF9kZXZpY2VfaW5zdGFuY2Vfb3BzICpj b2xvX3Jlc3RvcmVfb3BzW10gPSB7Cj4+ICsgICAgTlVMTCwKPj4gK307Cj4+ICsKPiAKPiBJdCB3 b3VsZCBiZSBoZWxwZnVsIHRvIGxpc3QgdGhlIGNhbGxiYWNrcyBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSB0aW1lCj4gaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHN1cHBvc2VkIHRvIG9jY3VyLgo+IAo+ IFNlZSBsaWJ4bF9jcmVhdGUuYyBmb3IgZXhhbXBsZS4gU2VhcmNoIGZvciAiRXZlbnQgY2FsbGJh Y2tzLCBpbiB0aGlzCj4gb3JkZXIiLgoKT0ssIHdpbGwgZml4IGl0IGluIHRoZSBuZXh0IHZlcnNp b24uCgo+IAo+IEkndmUgdHJpZWQgdG8gbWFwIHRoZSBhbGdvcml0aG0geW91IGRlc2NyaWJlZCBp biBjb21taXQgbWVzc2FnZSB0byBhbGwKPiB0aGUgY2FsbGJhY2tzLCBidXQgd2l0aG91dCBzb21l IHJlZmVyZW5jZXMgaXQgaXMganVzdCB0b28gdGltZSBjb25zdW1pbmcKPiBmcm9tIG15IGVuZC4K PiAKPiBJIHRoaW5rIHdoYXQgSSdtIGdvaW5nIHRvIGRvIGlzIHRvIG1ha2Ugc3VyZSB0aGUgbm9y bWFsIHBhdGggdGhhdAo+IGRvZXNuJ3QgdXNlIENPTE8gaXMgbm90IGJyb2tlbiBhbmQgbGVhdmUg dGhlIGludGVybmFsIHRvIHlvdSBhbmQgSWFuIChpZgo+IGhlIGZhbmNpZXMgdG8gZGlnIGludG8g ZGV0YWlscykuCj4gCj4gWy4uLl0KPj4gKwo+PiArdm9pZCBsaWJ4bF9fY29sb19yZXN0b3JlX3Nl dHVwKGxpYnhsX19lZ2MgKmVnYywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aWJ4bF9fY29sb19yZXN0b3JlX3N0YXRlICpjcnMpCj4+ICt7Cj4+ICsgICAgbGlieGxfX2RvbWFp bl9jcmVhdGVfc3RhdGUgKmRjcyA9IENPTlRBSU5FUl9PRihjcnMsICpkY3MsIGNycyk7Cj4+ICsg ICAgbGlieGxfX2NvbG9fcmVzdG9yZV9jaGVja3BvaW50X3N0YXRlICpjcmNzOwo+PiArICAgIGlu dCByYyA9IEVSUk9SX0ZBSUw7Cj4+ICsKPj4gKyAgICAvKiBDb252ZW5pZW5jZSBhbGlhc2VzICov Cj4+ICsgICAgbGlieGxfX3NybV9yZXN0b3JlX2F1dG9nZW5fY2FsbGJhY2tzICpjb25zdCBjYWxs YmFja3MgPQo+PiArICAgICAgICAmZGNzLT5zcnMuc2hzLmNhbGxiYWNrcy5yZXN0b3JlLmE7Cj4+ ICsgICAgY29uc3QgaW50IGRvbWlkID0gY3JzLT5kb21pZDsKPj4gKwo+PiArICAgIFNUQVRFX0FP X0dDKGNycy0+YW8pOwo+PiArCj4+ICsgICAgR0NORVcoY3Jjcyk7Cj4+ICsgICAgY3JzLT5jcmNz ID0gY3JjczsKPj4gKyAgICBjcmNzLT5jcnMgPSBjcnM7Cj4+ICsKPj4gKyAgICAvKiBzZXR1cCBk c3BzICovCj4+ICsgICAgY3Jjcy0+ZHNwcy5hbyA9IGFvOwo+PiArICAgIGNyY3MtPmRzcHMuZG9t aWQgPSBkb21pZDsKPj4gKyAgICBpZiAoaW5pdF9kc3BzKCZjcmNzLT5kc3BzKSkKPj4gKyAgICAg ICAgZ290byBlcnI7Cj4+ICsKPj4gKyAgICBjYWxsYmFja3MtPnN1c3BlbmQgPSBsaWJ4bF9fY29s b19yZXN0b3JlX2RvbWFpbl9zdXNwZW5kX2NhbGxiYWNrOwo+PiArICAgIGNhbGxiYWNrcy0+cG9z dGNvcHkgPSBsaWJ4bF9fY29sb19yZXN0b3JlX2RvbWFpbl9yZXN1bWVfY2FsbGJhY2s7Cj4+ICsg ICAgY2FsbGJhY2tzLT5jaGVja3BvaW50ID0gbGlieGxfX2NvbG9fcmVzdG9yZV9kb21haW5fY2hl Y2twb2ludF9jYWxsYmFjazsKPj4gKyAgICBjYWxsYmFja3MtPndhaXRfY2hlY2twb2ludCA9IGxp YnhsX19jb2xvX3Jlc3RvcmVfZG9tYWluX3dhaXRfY2hlY2twb2ludF9jYWxsYmFjazsKPj4gKwo+ PiArICAgIC8qCj4+ICsgICAgICogU2Vjb25kYXJ5IHZtIGlzIHJ1bm5pbmcgaW4gY29sbyBtb2Rl LCBzbyB3ZSBuZWVkIHRvIGNhbGwKPj4gKyAgICAgKiBsaWJ4bF9feGNfZG9tYWluX3Jlc3RvcmVf ZG9uZSgpIHRvIGNyZWF0ZSBzZWNvbmRhcnkgdm0uCj4+ICsgICAgICogQnV0IHdlIHdpbGwgZXhp dCBpbiBkb21haW5fY3JlYXRlX2NiKCkuIFNvIHJlcGxhY2UgdGhlCj4+ICsgICAgICogY2FsbGJh Y2sgaGVyZS4KPj4gKyAgICAgKi8KPj4gKyAgICBjcnMtPnNhdmVkX2NiID0gZGNzLT5jYWxsYmFj azsKPj4gKyAgICBkY3MtPmNhbGxiYWNrID0gbGlieGxfX2NvbG9fZG9tYWluX2NyZWF0ZV9jYjsK Pj4gKyAgICBjcmNzLT5zdGF0ZV9maWxlID0gR0NTUFJJTlRGKExJQlhMX0RFVklDRV9NT0RFTF9S RVNUT1JFX0ZJTEUiLiVkIiwgZG9taWQpOwo+IAo+IENhbiB5b3UgdXNlIGEgZGlmZmVyZW50IG5h bWUgc3BhY2UgZnJvbSB0aGUgbm9ybWFsIG9uZT8KCldlIHdyaXRlIHRoZSBxZW11IHN0YXRlIGlu dG8gdGhlIHJlc3RvcmUgZmlsZSBpbiB3cml0ZV9lbXVsYXRvcl9ibG9iKCkuCgo+IAo+IEZvciBl eGFtcGxlLCB5b3UgY2FuIHB1dAo+IAo+ICAjZGVmaW5lIExJQlhMX0NPTE9fREVWSUNFX01PREVM X1JFU1RPUkVfRklMRSAgICBYWFhYCgpTbyBpZiB3ZSB1c2UgYSBkaWZmZXJlbnQgbmFtZSBzcGFj ZSwgd2Ugc2hvdWxkIGRvCiNkZWZpbmUgTElCWExfQ09MT19ERVZJQ0VfTU9ERUxfUkVTVE9SRV9G SUxFICAgICAgIExJQlhMX0RFVklDRV9NT0RFTF9SRVNUT1JFX0ZJTEUKCkluIGNvbG8gY29kZXMs IElJUkMgdGhlcmUgaXMgbm8gb3RoZXIgY29kZSB1c2UgaXQuCgo+IAo+IGluIGxpYnhsX2NvbG8u aCBhbmQgdXNlIGl0IGluIGFsbCBDT0xPIGNvZGUuCj4gCj4gCj4+ICsgICAgY3Jjcy0+c3RhdHVz ID0gTElCWExfQ09MT19TRVRVUEVEOwo+PiArCj4+ICsgICAgbGlieGxfX2xvZ2RpcnR5X2luaXQo JmNyY3MtPmxkcyk7Cj4+ICsgICAgY3Jjcy0+bGRzLmFvID0gYW87Cj4+ICsKPj4gKyAgICBjcmNz LT5zd3MuZmQgPSBjcnMtPnNlbmRfYmFja19mZDsKPj4gKyAgICBjcmNzLT5zd3MuYW8gPSBhbzsK Pj4gKyAgICBjcmNzLT5zd3MuYmFja19jaGFubmVsID0gdHJ1ZTsKPj4gKwo+PiArICAgIGRjcy0+ Y2RzLmNvbmNyZXRlX2RhdGEgPSBjcnM7Cj4+ICsKPj4gKyAgICBsaWJ4bF9fc3RyZWFtX3dyaXRl X3N0YXJ0KGVnYywgJmNyY3MtPnN3cyk7Cj4+ICsKPj4gKyAgICByYyA9IDA7Cj4+ICsKPj4gK291 dDoKPj4gKyAgICBjcnMtPmNhbGxiYWNrKGVnYywgY3JzLCByYyk7Cj4+ICsgICAgcmV0dXJuOwo+ PiArCj4+ICtlcnI6Cj4+ICsgICAgZ290byBvdXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IGxpYnhsX19jb2xvX2RvbWFpbl9jcmVhdGVfY2IobGlieGxfX2VnYyAqZWdjLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9z dGF0ZSAqZGNzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgcmMsIHVpbnQzMl90IGRvbWlkKQo+PiArewo+PiArICAgIGxpYnhsX19jb2xvX3Jlc3RvcmVf Y2hlY2twb2ludF9zdGF0ZSAqY3JjcyA9IGRjcy0+Y3JzLmNyY3M7Cj4+ICsKPj4gKyAgICBjcmNz LT5jYWxsYmFjayhlZ2MsIGNyY3MsIHJjKTsKPj4gK30KPj4gKwo+PiArCj4gWy4uLl0KPj4gKwo+ PiArc3RhdGljIHZvaWQgY29sb19kaXNhYmxlX2xvZ2RpcnR5X2RvbmUobGlieGxfX2VnYyAqZWdj LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2xvZ2Rp cnR5X3N3aXRjaCAqbGRzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHJjKQo+PiArewo+PiArICAgIGxpYnhsX19jb2xvX3Jlc3RvcmVfY2hlY2twb2ludF9z dGF0ZSAqY3JjcyA9IENPTlRBSU5FUl9PRihsZHMsICpjcmNzLCBsZHMpOwo+PiArCj4+ICsgICAg RUdDX0dDOwo+PiArCj4+ICsgICAgaWYgKHJjKQo+PiArICAgICAgICBMT0coV0FSTiwgImNhbm5v dCBkaXNhYmxlIGxvZ2RpcnR5Iik7Cj4+ICsKPj4gKyAgICBpZiAoY3Jjcy0+c3RhdHVzID09IExJ QlhMX0NPTE9fU1VTUEVOREVEKSB7Cj4+ICsgICAgICAgIC8qCj4+ICsgICAgICAgICAqIGZhaWxv dmVyIHdoZW4gcmVhZGluZyBzdGF0ZSBmcm9tIG1hc3Rlciwgc28gbm8gbmVlZCB0bwo+PiArICAg ICAgICAgKiBjYWxsIGxpYnhsX19kb21haW5fcmVzdG9yZSgpLgo+IAo+IFlvdSBuZWVkIHRvIHVw ZGF0ZSB0aGlzIGNvbW1lbnQgdG8gdGhlIHJpZ2h0IGZ1bmN0aW9uIG5hbWUuCgpPSywgd2lsbCBm aXggaXQgaW4gdGhlIG5leHQgdmVyc2lvbi4KCj4gCj4+ICsgICAgICAgICAqLwo+PiArICAgICAg ICBjb2xvX3Jlc3VtZV92bShlZ2MsIGNyY3MsIDApOwo+PiArICAgICAgICByZXR1cm47Cj4+ICsg ICAgfQo+PiArCj4+ICsgICAgLyogSWYgd2UgY2Fubm90IGRpc2FibGUgbG9nZGlydHksIHdlIHN0 aWxsIGNhbiBkbyBmYWlsb3ZlciAqLwo+PiArICAgIGNyY3MtPmNhbGxiYWNrKGVnYywgY3Jjcywg MCk7Cj4+ICt9Cj4+ICsKPiBbLi4uXQo+PiAgCj4+ICsvKiBjb2xvIHJlbGF0ZWQgc3RydWN0dXJl ICovCj4+ICt0eXBlZGVmIHN0cnVjdCBsaWJ4bF9fY29sb19yZXN0b3JlX3N0YXRlIGxpYnhsX19j b2xvX3Jlc3RvcmVfc3RhdGU7Cj4+ICt0eXBlZGVmIHZvaWQgbGlieGxfX2NvbG9fY2FsbGJhY2so bGlieGxfX2VnYyAqLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhs X19jb2xvX3Jlc3RvcmVfc3RhdGUgKiwgaW50IHJjKTsKPj4gK3N0cnVjdCBsaWJ4bF9fY29sb19y ZXN0b3JlX3N0YXRlIHsKPj4gKyAgICAvKiBtdXN0IHNldCBieSBjYWxsZXIgb2YgbGlieGxfX2Nv bG9fKHNldHVwfHRlYXJkb3duKSAqLwo+PiArICAgIGxpYnhsX19hbyAqYW87Cj4+ICsgICAgdWlu dDMyX3QgZG9taWQ7Cj4+ICsgICAgaW50IHNlbmRfYmFja19mZDsKPj4gKyAgICBpbnQgcmVjdl9m ZDsKPj4gKyAgICBpbnQgaHZtOwo+PiArICAgIGxpYnhsX19jb2xvX2NhbGxiYWNrICpjYWxsYmFj azsKPj4gKwo+PiArICAgIC8qIHByaXZhdGUsIGNvbG8gcmVzdG9yZSBjaGVja3BvaW50IHN0YXRl ICovCj4+ICsgICAgbGlieGxfX2RvbWFpbl9jcmVhdGVfY2IgKnNhdmVkX2NiOwo+PiArICAgIHZv aWQgKmNyY3M7Cj4+ICt9Owo+PiAgCj4gCj4gQW5kIHRoaXMgc2hvdWxkIGdvIHRvIGxpYnhsX2Nv bG8uaCwgdG9vPyBBbmQgbGlieGxfaW50ZXJuYWwuaCBpbmNsdWRlcwo+IGxpYnhsX2NvbG8uaD8K PiAKPiBJIGp1c3QgZG9uJ3Qgd2FudCB0byBjb2xvIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBz Y2F0dGVyIGluCj4gZGlmZmVyZW50IHBsYWNlcy4KCk9LLCB3aWxsIGZpeCBpdCBpbiB0aGUgbmV4 dCB2ZXJzaW9uLgoKPiAKPj4gIHN0cnVjdCBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSB7Cj4+ ICAgICAgLyogZmlsbGVkIGluIGJ5IHVzZXIgKi8KPj4gQEAgLTM0ODYsNiArMzUwMyw4IEBAIHN0 cnVjdCBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSB7Cj4+ICAgICAgLyogcHJpdmF0ZSB0byBk b21haW5fY3JlYXRlICovCj4+ICAgICAgaW50IGd1ZXN0X2RvbWlkOwo+PiAgICAgIGxpYnhsX19k b21haW5fYnVpbGRfc3RhdGUgYnVpbGRfc3RhdGU7Cj4+ICsgICAgbGlieGxfX2NvbG9fcmVzdG9y ZV9zdGF0ZSBjcnM7Cj4+ICsgICAgbGlieGxfX2NoZWNrcG9pbnRfZGV2aWNlc19zdGF0ZSBjZHM7 Cj4+ICAgICAgbGlieGxfX2Jvb3Rsb2FkZXJfc3RhdGUgYmw7Cj4+ICAgICAgbGlieGxfX3N0dWJf ZG1fc3Bhd25fc3RhdGUgZG1zczsKPj4gICAgICAgICAgLyogSWYgd2UncmUgbm90IGRvaW5nIHN0 dWJkb20sIHdlIHVzZSBvbmx5IGRtc3MuZG0sCj4+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bF9zYXZlX2NhbGxvdXQuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfY2FsbG91dC5jCj4+ IGluZGV4IDBkNjk0OWEuLmIxODEwYjIgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs X3NhdmVfY2FsbG91dC5jCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfY2FsbG91dC5j Cj4+IEBAIC0xNSw2ICsxNSw3IEBACj4+ICAjaW5jbHVkZSAibGlieGxfb3NkZXBzLmgiCj4+ICAK Pj4gICNpbmNsdWRlICJsaWJ4bF9pbnRlcm5hbC5oIgo+PiArI2luY2x1ZGUgImxpYnhsX2NvbG8u aCIKPj4gIAo+PiAgLyogc3RyZWFtX2ZkIGlzIGFzIGZyb20gdGhlIGNhbGxlciAoZXZlbnR1YWxs eSwgdGhlIGFwcGxpY2F0aW9uKS4KPj4gICAqIEl0IG1heSBiZSAwLCAxIG9yIDIsIGluIHdoaWNo IGNhc2Ugd2UgbmVlZCB0byBkdXAgaXQgZWxzZXdoZXJlLgo+PiBAQCAtNjgsNyArNjksMTEgQEAg dm9pZCBsaWJ4bF9feGNfZG9tYWluX3Jlc3RvcmUobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZG9t YWluX2NyZWF0ZV9zdGF0ZSAqZGNzLAo+PiAgICAgIHNocy0+YW8gPSBhbzsKPj4gICAgICBzaHMt PmRvbWlkID0gZG9taWQ7Cj4+ICAgICAgc2hzLT5yZWN2X2NhbGxiYWNrID0gbGlieGxfX3NybV9j YWxsb3V0X3JlY2VpdmVkX3Jlc3RvcmU7Cj4+IC0gICAgc2hzLT5jb21wbGV0aW9uX2NhbGxiYWNr ID0gbGlieGxfX3hjX2RvbWFpbl9yZXN0b3JlX2RvbmU7Cj4+ICsgICAgaWYgKGRjcy0+cmVzdG9y ZV9wYXJhbXMuY2hlY2twb2ludGVkX3N0cmVhbSA9PQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfQ0hFQ0tQT0lOVEVEX1NUUkVBTV9DT0xP KQo+IAo+IFRoaXMgaXMgdmVyeSBzdHJhbmdlIGxpbmUgd3JhcC4KClllcywgd2lsbCBmaXggaXQg aW4gdGhlIG5leHQgdmVyc2lvbi4KClRoYW5rcwpXZW4gQ29uZ3lhbmcKCj4gCj4+ICsgICAgICAg IHNocy0+Y29tcGxldGlvbl9jYWxsYmFjayA9IGxpYnhsX19jb2xvX3Jlc3RvcmVfdGVhcmRvd247 Cj4+ICsgICAgZWxzZQo+PiArICAgICAgICBzaHMtPmNvbXBsZXRpb25fY2FsbGJhY2sgPSBsaWJ4 bF9feGNfZG9tYWluX3Jlc3RvcmVfZG9uZTsKPj4gICAgICBzaHMtPmNhbGxlcl9zdGF0ZSA9IGRj czsKPj4gICAgICBzaHMtPm5lZWRfcmVzdWx0cyA9IDE7Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsX3N0cmVhbV9yZWFkLmMgYi90b29scy9saWJ4bC9saWJ4bF9zdHJlYW1f cmVhZC5jCj4+IGluZGV4IDVkOTgwZDkuLmQ2YmQyZmUgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsX3N0cmVhbV9yZWFkLmMKPj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfc3RyZWFt X3JlYWQuYwo+PiBAQCAtODQ2LDYgKzg0NiwxOCBAQCB2b2lkIGxpYnhsX194Y19kb21haW5fcmVz dG9yZV9kb25lKGxpYnhsX19lZ2MgKmVnYywgdm9pZCAqZGNzX3ZvaWQsCj4+ICAgICAgICovCj4+ ICAgICAgaWYgKGxpYnhsX19zdHJlYW1fcmVhZF9pbnVzZShzdHJlYW0pKSB7Cj4+ICAgICAgICAg IHN3aXRjaCAoY2hlY2twb2ludGVkX3N0cmVhbSkgewo+PiArICAgICAgICBjYXNlIExJQlhMX0NI RUNLUE9JTlRFRF9TVFJFQU1fQ09MTzoKPj4gKyAgICAgICAgICAgIGlmIChzdHJlYW0tPmNvbXBs ZXRpb25fY2FsbGJhY2spIHsKPj4gKyAgICAgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAg ICAgICAqIHJlc3RvcmUsIGp1c3QgYnVpbGQgdGhlIHNlY29uZGFyeSB2bSwgZG9uJ3QgY2xvc2UK Pj4gKyAgICAgICAgICAgICAgICAgKiB0aGUgc3RyZWFtCj4+ICsgICAgICAgICAgICAgICAgICov Cj4+ICsgICAgICAgICAgICAgICAgc3RyZWFtLT5jb21wbGV0aW9uX2NhbGxiYWNrKGVnYywgc3Ry ZWFtLCAwKTsKPj4gKyAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAgICAgLyog ZmFpbG92ZXIsIGp1c3QgY2xvc2UgdGhlIHN0cmVhbSAqLwo+PiArICAgICAgICAgICAgICAgIHN0 cmVhbV9jb21wbGV0ZShlZ2MsIHN0cmVhbSwgMCk7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAg ICAgICAgICBicmVhazsKPj4gICAgICAgICAgY2FzZSBMSUJYTF9DSEVDS1BPSU5URURfU1RSRUFN X1JFTVVTOgo+PiAgICAgICAgICAgICAgLyoKPj4gICAgICAgICAgICAgICAqIEZhaWxvdmVyIGZy b20gcHJpbWFyeS4gRG9tYWluIHN0YXRlIGlzIGN1cnJlbnRseSBhdCBhCj4+IGRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5p ZGwKPj4gaW5kZXggNjMyYzAwOS4uMzNmNGE5MCAxMDA2NDQKPj4gLS0tIGEvdG9vbHMvbGlieGwv bGlieGxfdHlwZXMuaWRsCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAo+PiBA QCAtMjMyLDYgKzIzMiw3IEBAIGxpYnhsX2hkdHlwZSA9IEVudW1lcmF0aW9uKCJoZHR5cGUiLCBb Cj4+ICBsaWJ4bF9jaGVja3BvaW50ZWRfc3RyZWFtID0gRW51bWVyYXRpb24oImNoZWNrcG9pbnRl ZF9zdHJlYW0iLCBbCj4+ICAgICAgKDAsICJOT05FIiksCj4+ICAgICAgKDEsICJSRU1VUyIpLAo+ PiArICAgICgyLCAiQ09MTyIpLAo+PiAgICAgIF0pCj4+ICAKPj4gICMKPj4gLS0gCj4+IDIuNS4w Cj4+Cj4+Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4+IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKPj4gaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCj4gCj4gCj4gLgo+IAoKCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK