From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v10 16/31] secondary vm suspend/resume/checkpoint code Date: Thu, 25 Feb 2016 15:56:50 +0000 Message-ID: <20160225155649.GH4235@citrix.com> References: <1456109555-28299-1-git-send-email-wency@cn.fujitsu.com> <1456109555-28299-17-git-send-email-wency@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1456109555-28299-17-git-send-email-wency@cn.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wen Congyang Cc: Lars Kurth , Changlong Xie , Wei Liu , 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 T24gTW9uLCBGZWIgMjIsIDIwMTYgYXQgMTA6NTI6MjBBTSArMDgwMCwgV2VuIENvbmd5YW5nIHdy b3RlOgo+IFNlY29uZGFyeSB2bSBpcyBydW5uaW5nIGluIGNvbG8gbW9kZS4gU28gd2Ugd2lsbCBk bwo+IHRoZSBmb2xsb3dpbmcgdGhpbmdzIGFnYWluIGFuZCBhZ2FpbjoKPiAxLiBSZXN1bWUgc2Vj b25kYXJ5IHZtCj4gICAgYS4gU2VuZCBDSEVDS1BPSU5UX1NWTV9SRUFEWSB0byBtYXN0ZXIuCj4g ICAgYi4gSWYgaXQgaXMgbm90IHRoZSBmaXJzdCByZXN1bWUsIGNhbGwgbGlieGxfX2NoZWNrcG9p bnRfZGV2aWNlc19wcmVyZXN1bWUoKS4KPiAgICBjLiBJZiBpdCBpcyB0aGUgZmlyc3QgcmVzdW1l KHJlc3VtZSByaWdodCBhZnRlciBsaXZlIG1pZ3JhdGlvbiksCj4gICAgICAgLSBjYWxsIGxpYnhs X194Y19kb21haW5fcmVzdG9yZV9kb25lKCkgdG8gYnVpbGQgdGhlIHNlY29uZGFyeSB2bS4KPiAg ICAgICAtIGVuYWJsZSBzZWNvbmRhcnkgdm0ncyBsb2dkaXJ0eS4KPiAgICAgICAtIGNhbGwgbGli eGxfX2RvbWFpbl9yZXN1bWUoKSB0byByZXN1bWUgc2Vjb25kYXJ5IHZtLgo+ICAgICAgIC0gY2Fs bCBsaWJ4bF9fY2hlY2twb2ludF9kZXZpY2VzX3NldHVwKCkgdG8gc2V0dXAgY2hlY2twb2ludCBk ZXZpY2VzLgo+ICAgIGQuIFNlbmQgQ0hFQ0tQT0lOVF9TVk1fUkVTVU1FRCB0byBtYXN0ZXIuCj4g Mi4gV2FpdCBhIG5ldyBjaGVja3BvaW50Cj4gICAgYS4gQ2FsbCBsaWJ4bF9fY2hlY2twb2ludF9k ZXZpY2VzX2NvbW1pdCgpLgo+ICAgIGIuIFJlYWQgQ0hFQ0tQT0lOVF9ORVcgZnJvbSBtYXN0ZXIu Cj4gMy4gU3VzcGVuZCBzZWNvbmRhcnkgdm0KPiAgICBhLiBTdXNwZW5kIHNlY29uZGFyeSB2bS4K PiAgICBiLiBDYWxsIGxpYnhsX19jaGVja3BvaW50X2RldmljZXNfcG9zdHN1c3BlbmQoKS4KPiAg ICBjLiBTZW5kIENIRUNLUE9JTlRfU1ZNX1NVU1BFTkRFRCB0byBtYXN0ZXIuCj4gCj4gU2lnbmVk LW9mZi1ieTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBZYW5nIEhvbmd5YW5nIDxob25neWFuZy55YW5nQGVhc3lzdGFjay5jbj4KPiAtLS0KPiAg dG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmggICAgICAgfCAgICAyICsKPiAgdG9vbHMvbGlieGMv eGNfc3Jfc2F2ZS5jICAgICAgICAgfCAgICAzICstCj4gIHRvb2xzL2xpYnhsL01ha2VmaWxlICAg ICAgICAgICAgIHwgICAgMSArCj4gIHRvb2xzL2xpYnhsL2xpYnhsX2NvbG8uaCAgICAgICAgIHwg ICAyNCArCj4gIHRvb2xzL2xpYnhsL2xpYnhsX2NvbG9fcmVzdG9yZS5jIHwgMTAzOCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB0b29scy9saWJ4bC9saWJ4bF9jcmVh dGUuYyAgICAgICB8ICAgMzcgKysKPiAgdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAg fCAgIDE5ICsKPiAgdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9jYWxsb3V0LmMgfCAgICA3ICstCj4g IHRvb2xzL2xpYnhsL2xpYnhsX3N0cmVhbV9yZWFkLmMgIHwgICAxMiArCj4gIHRvb2xzL2xpYnhs L2xpYnhsX3R5cGVzLmlkbCAgICAgIHwgICAgMSArCgpUaGVyZSBpcyBhIGJ1bmNoIG9mIFRPRE9z IGluIGxpYnhsX2NvbG8uYyBidXQgSSBkb24ndCB0aGluayB5b3UncmUgaW4gYQpiZXR0ZXIgcG9z aXRpb24gdG8ganVkZ2Ugd2hldGhlciB0aGV5IHNob3VsZCBiZSBibG9ja2VyIG9yIG5vdC4KCj4g IDEwIGZpbGVzIGNoYW5nZWQsIDExNDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnhsL2xpYnhsX2NvbG8uaAo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvbGlieGwvbGlieGxfY29sb19yZXN0b3JlLmMKPiAKPiBkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmggYi90b29scy9saWJ4Yy94Y19zcl9jb21tb24u aAo+IGluZGV4IDVkOWY0OTcuLjJiZmVkNjQgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNf c3JfY29tbW9uLmgKPiArKysgYi90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaAo+IEBAIC0xODQs MTAgKzE4NCwxMiBAQCBzdHJ1Y3QgeGNfc3JfY29udGV4dAo+ICAgICAgICogbWlncmF0aW9uIHN0 cmVhbQo+ICAgICAgICogMDogUGxhaW4gVk0KPiAgICAgICAqIDE6IFJlbXVzCj4gKyAgICAgKiAy OiBDT0xPCj4gICAgICAgKi8KPiAgICAgIGVudW0gewo+ICAgICAgICAgIE1JR19TVFJFQU1fTk9O RSwgLyogcGxhaW4gc3RyZWFtICovCj4gICAgICAgICAgTUlHX1NUUkVBTV9SRU1VUywKPiArICAg ICAgICBNSUdfU1RSRUFNX0NPTE8sCj4gICAgICB9IG1pZ3JhdGlvbl9zdHJlYW07Cj4gIAo+ICAg ICAgdW5pb24gLyogQ29tbW9uIHNhdmUgb3IgcmVzdG9yZSBkYXRhLiAqLwo+IGRpZmYgLS1naXQg YS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMgYi90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMKPiBp bmRleCBmZTIxMGNjLi43MzkzMzU1IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX3NyX3Nh dmUuYwo+ICsrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYwo+IEBAIC04NDYsNyArODQ2LDgg QEAgaW50IHhjX2RvbWFpbl9zYXZlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgaW9fZmQsIHVpbnQz Ml90IGRvbSwKPiAgCj4gICAgICAvKiBJZiBhbHRlcmluZyBtaWdyYXRpb25fc3RyZWFtIHVwZGF0 ZSB0aGlzIGFzc2VydCB0b28uICovCj4gICAgICBhc3NlcnQoY2hlY2twb2ludGVkX3N0cmVhbSA9 PSBNSUdfU1RSRUFNX05PTkUgfHwKPiAtICAgICAgICAgICBjaGVja3BvaW50ZWRfc3RyZWFtID09 IE1JR19TVFJFQU1fUkVNVVMpOwo+ICsgICAgICAgICAgIGNoZWNrcG9pbnRlZF9zdHJlYW0gPT0g TUlHX1NUUkVBTV9SRU1VUyB8fAo+ICsgICAgICAgICAgIGNoZWNrcG9pbnRlZF9zdHJlYW0gPT0g TUlHX1NUUkVBTV9DT0xPKTsKPiAgCj4gICAgICAvKgo+ICAgICAgICogVE9ETzogRmluZCBzb21l IHRpbWUgdG8gYmV0dGVyIHR3ZWFrIHRoZSBsaXZlIG1pZ3JhdGlvbiBhbGdvcml0aG0uCgpbLi4u XQoKPiArCj4gKyNpbmNsdWRlICJsaWJ4bF9vc2RlcHMuaCIgLyogbXVzdCBjb21lIGJlZm9yZSBh bnkgb3RoZXIgaGVhZGVycyAqLwo+ICsKPiArI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgiCj4g KyNpbmNsdWRlICJsaWJ4bF9jb2xvLmgiCj4gKyNpbmNsdWRlICJsaWJ4bF9zcl9zdHJlYW1fZm9y bWF0LmgiCj4gKwo+ICtlbnVtIHsKPiArICAgIExJQlhMX0NPTE9fU0VUVVBFRCwKPiArICAgIExJ QlhMX0NPTE9fU1VTUEVOREVELAo+ICsgICAgTElCWExfQ09MT19SRVNVTUVELAo+ICt9Owo+ICsK PiArdHlwZWRlZiBzdHJ1Y3QgbGlieGxfX2NvbG9fcmVzdG9yZV9jaGVja3BvaW50X3N0YXRlIGxp YnhsX19jb2xvX3Jlc3RvcmVfY2hlY2twb2ludF9zdGF0ZTsKPiArc3RydWN0IGxpYnhsX19jb2xv X3Jlc3RvcmVfY2hlY2twb2ludF9zdGF0ZSB7Cj4gKyAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRf c3RhdGUgZHNwczsKPiArICAgIGxpYnhsX19sb2dkaXJ0eV9zd2l0Y2ggbGRzOwo+ICsgICAgbGli eGxfX2NvbG9fcmVzdG9yZV9zdGF0ZSAqY3JzOwo+ICsgICAgbGlieGxfX3N0cmVhbV93cml0ZV9z dGF0ZSBzd3M7Cj4gKyAgICBpbnQgc3RhdHVzOwo+ICsgICAgYm9vbCBwcmVyZXN1bWU7Cj4gKyAg ICAvKiB1c2VkIGZvciB0ZWFyZG93biAqLwo+ICsgICAgaW50IHRlYXJkb3duX2RldmljZXM7Cj4g KyAgICBpbnQgc2F2ZWRfcmM7Cj4gKyAgICBjaGFyICpzdGF0ZV9maWxlOwo+ICsKPiArICAgIHZv aWQgKCpjYWxsYmFjaykobGlieGxfX2VnYyAqLAo+ICsgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9fY29sb19yZXN0b3JlX2NoZWNrcG9pbnRfc3RhdGUgKiwKPiArICAgICAgICAgICAgICAgICAg ICAgaW50KTsKPiArfTsKPiArCgpTaG91bGRuJ3QgdGhlIGVudW0gYW5kIHN0cnVjdCBiZWxvbmcg dG8gbGlieGxfY29sby5oID8KCj4gKwo+ICtzdGF0aWMgdm9pZCBsaWJ4bF9fY29sb19yZXN0b3Jl X2RvbWFpbl9yZXN1bWVfY2FsbGJhY2sodm9pZCAqZGF0YSk7Cj4gK3N0YXRpYyB2b2lkIGxpYnhs X19jb2xvX3Jlc3RvcmVfZG9tYWluX2NoZWNrcG9pbnRfY2FsbGJhY2sodm9pZCAqZGF0YSk7Cj4g K3N0YXRpYyB2b2lkIGxpYnhsX19jb2xvX3Jlc3RvcmVfZG9tYWluX3dhaXRfY2hlY2twb2ludF9j YWxsYmFjayh2b2lkICpkYXRhKTsKPiArc3RhdGljIHZvaWQgbGlieGxfX2NvbG9fcmVzdG9yZV9k b21haW5fc3VzcGVuZF9jYWxsYmFjayh2b2lkICpkYXRhKTsKPiArCj4gK3N0YXRpYyBjb25zdCBs aWJ4bF9fY2hlY2twb2ludF9kZXZpY2VfaW5zdGFuY2Vfb3BzICpjb2xvX3Jlc3RvcmVfb3BzW10g PSB7Cj4gKyAgICBOVUxMLAo+ICt9Owo+ICsKCkl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gbGlzdCB0 aGUgY2FsbGJhY2tzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRpbWUKaW4gdGhlIG9yZGVyIHRo ZXkgYXJlIHN1cHBvc2VkIHRvIG9jY3VyLgoKU2VlIGxpYnhsX2NyZWF0ZS5jIGZvciBleGFtcGxl LiBTZWFyY2ggZm9yICJFdmVudCBjYWxsYmFja3MsIGluIHRoaXMKb3JkZXIiLgoKSSd2ZSB0cmll ZCB0byBtYXAgdGhlIGFsZ29yaXRobSB5b3UgZGVzY3JpYmVkIGluIGNvbW1pdCBtZXNzYWdlIHRv IGFsbAp0aGUgY2FsbGJhY2tzLCBidXQgd2l0aG91dCBzb21lIHJlZmVyZW5jZXMgaXQgaXMganVz dCB0b28gdGltZSBjb25zdW1pbmcKZnJvbSBteSBlbmQuCgpJIHRoaW5rIHdoYXQgSSdtIGdvaW5n IHRvIGRvIGlzIHRvIG1ha2Ugc3VyZSB0aGUgbm9ybWFsIHBhdGggdGhhdApkb2Vzbid0IHVzZSBD T0xPIGlzIG5vdCBicm9rZW4gYW5kIGxlYXZlIHRoZSBpbnRlcm5hbCB0byB5b3UgYW5kIElhbiAo aWYKaGUgZmFuY2llcyB0byBkaWcgaW50byBkZXRhaWxzKS4KClsuLi5dCj4gKwo+ICt2b2lkIGxp YnhsX19jb2xvX3Jlc3RvcmVfc2V0dXAobGlieGxfX2VnYyAqZWdjLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfX2NvbG9fcmVzdG9yZV9zdGF0ZSAqY3JzKQo+ICt7Cj4g KyAgICBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSAqZGNzID0gQ09OVEFJTkVSX09GKGNycywg KmRjcywgY3JzKTsKPiArICAgIGxpYnhsX19jb2xvX3Jlc3RvcmVfY2hlY2twb2ludF9zdGF0ZSAq Y3JjczsKPiArICAgIGludCByYyA9IEVSUk9SX0ZBSUw7Cj4gKwo+ICsgICAgLyogQ29udmVuaWVu Y2UgYWxpYXNlcyAqLwo+ICsgICAgbGlieGxfX3NybV9yZXN0b3JlX2F1dG9nZW5fY2FsbGJhY2tz ICpjb25zdCBjYWxsYmFja3MgPQo+ICsgICAgICAgICZkY3MtPnNycy5zaHMuY2FsbGJhY2tzLnJl c3RvcmUuYTsKPiArICAgIGNvbnN0IGludCBkb21pZCA9IGNycy0+ZG9taWQ7Cj4gKwo+ICsgICAg U1RBVEVfQU9fR0MoY3JzLT5hbyk7Cj4gKwo+ICsgICAgR0NORVcoY3Jjcyk7Cj4gKyAgICBjcnMt PmNyY3MgPSBjcmNzOwo+ICsgICAgY3Jjcy0+Y3JzID0gY3JzOwo+ICsKPiArICAgIC8qIHNldHVw IGRzcHMgKi8KPiArICAgIGNyY3MtPmRzcHMuYW8gPSBhbzsKPiArICAgIGNyY3MtPmRzcHMuZG9t aWQgPSBkb21pZDsKPiArICAgIGlmIChpbml0X2RzcHMoJmNyY3MtPmRzcHMpKQo+ICsgICAgICAg IGdvdG8gZXJyOwo+ICsKPiArICAgIGNhbGxiYWNrcy0+c3VzcGVuZCA9IGxpYnhsX19jb2xvX3Jl c3RvcmVfZG9tYWluX3N1c3BlbmRfY2FsbGJhY2s7Cj4gKyAgICBjYWxsYmFja3MtPnBvc3Rjb3B5 ID0gbGlieGxfX2NvbG9fcmVzdG9yZV9kb21haW5fcmVzdW1lX2NhbGxiYWNrOwo+ICsgICAgY2Fs bGJhY2tzLT5jaGVja3BvaW50ID0gbGlieGxfX2NvbG9fcmVzdG9yZV9kb21haW5fY2hlY2twb2lu dF9jYWxsYmFjazsKPiArICAgIGNhbGxiYWNrcy0+d2FpdF9jaGVja3BvaW50ID0gbGlieGxfX2Nv bG9fcmVzdG9yZV9kb21haW5fd2FpdF9jaGVja3BvaW50X2NhbGxiYWNrOwo+ICsKPiArICAgIC8q Cj4gKyAgICAgKiBTZWNvbmRhcnkgdm0gaXMgcnVubmluZyBpbiBjb2xvIG1vZGUsIHNvIHdlIG5l ZWQgdG8gY2FsbAo+ICsgICAgICogbGlieGxfX3hjX2RvbWFpbl9yZXN0b3JlX2RvbmUoKSB0byBj cmVhdGUgc2Vjb25kYXJ5IHZtLgo+ICsgICAgICogQnV0IHdlIHdpbGwgZXhpdCBpbiBkb21haW5f Y3JlYXRlX2NiKCkuIFNvIHJlcGxhY2UgdGhlCj4gKyAgICAgKiBjYWxsYmFjayBoZXJlLgo+ICsg ICAgICovCj4gKyAgICBjcnMtPnNhdmVkX2NiID0gZGNzLT5jYWxsYmFjazsKPiArICAgIGRjcy0+ Y2FsbGJhY2sgPSBsaWJ4bF9fY29sb19kb21haW5fY3JlYXRlX2NiOwo+ICsgICAgY3Jjcy0+c3Rh dGVfZmlsZSA9IEdDU1BSSU5URihMSUJYTF9ERVZJQ0VfTU9ERUxfUkVTVE9SRV9GSUxFIi4lZCIs IGRvbWlkKTsKCkNhbiB5b3UgdXNlIGEgZGlmZmVyZW50IG5hbWUgc3BhY2UgZnJvbSB0aGUgbm9y bWFsIG9uZT8KCkZvciBleGFtcGxlLCB5b3UgY2FuIHB1dAoKICNkZWZpbmUgTElCWExfQ09MT19E RVZJQ0VfTU9ERUxfUkVTVE9SRV9GSUxFICAgIFhYWFgKCmluIGxpYnhsX2NvbG8uaCBhbmQgdXNl IGl0IGluIGFsbCBDT0xPIGNvZGUuCgoKPiArICAgIGNyY3MtPnN0YXR1cyA9IExJQlhMX0NPTE9f U0VUVVBFRDsKPiArCj4gKyAgICBsaWJ4bF9fbG9nZGlydHlfaW5pdCgmY3Jjcy0+bGRzKTsKPiAr ICAgIGNyY3MtPmxkcy5hbyA9IGFvOwo+ICsKPiArICAgIGNyY3MtPnN3cy5mZCA9IGNycy0+c2Vu ZF9iYWNrX2ZkOwo+ICsgICAgY3Jjcy0+c3dzLmFvID0gYW87Cj4gKyAgICBjcmNzLT5zd3MuYmFj a19jaGFubmVsID0gdHJ1ZTsKPiArCj4gKyAgICBkY3MtPmNkcy5jb25jcmV0ZV9kYXRhID0gY3Jz Owo+ICsKPiArICAgIGxpYnhsX19zdHJlYW1fd3JpdGVfc3RhcnQoZWdjLCAmY3Jjcy0+c3dzKTsK PiArCj4gKyAgICByYyA9IDA7Cj4gKwo+ICtvdXQ6Cj4gKyAgICBjcnMtPmNhbGxiYWNrKGVnYywg Y3JzLCByYyk7Cj4gKyAgICByZXR1cm47Cj4gKwo+ICtlcnI6Cj4gKyAgICBnb3RvIG91dDsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbGlieGxfX2NvbG9fZG9tYWluX2NyZWF0ZV9jYihsaWJ4bF9f ZWdjICplZ2MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfX2RvbWFpbl9jcmVhdGVfc3RhdGUgKmRjcywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgcmMsIHVpbnQzMl90IGRvbWlkKQo+ICt7Cj4gKyAgICBsaWJ4 bF9fY29sb19yZXN0b3JlX2NoZWNrcG9pbnRfc3RhdGUgKmNyY3MgPSBkY3MtPmNycy5jcmNzOwo+ ICsKPiArICAgIGNyY3MtPmNhbGxiYWNrKGVnYywgY3JjcywgcmMpOwo+ICt9Cj4gKwo+ICsKWy4u Ll0KPiArCj4gK3N0YXRpYyB2b2lkIGNvbG9fZGlzYWJsZV9sb2dkaXJ0eV9kb25lKGxpYnhsX19l Z2MgKmVnYywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf X2xvZ2RpcnR5X3N3aXRjaCAqbGRzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgcmMpCj4gK3sKPiArICAgIGxpYnhsX19jb2xvX3Jlc3RvcmVfY2hlY2twb2lu dF9zdGF0ZSAqY3JjcyA9IENPTlRBSU5FUl9PRihsZHMsICpjcmNzLCBsZHMpOwo+ICsKPiArICAg IEVHQ19HQzsKPiArCj4gKyAgICBpZiAocmMpCj4gKyAgICAgICAgTE9HKFdBUk4sICJjYW5ub3Qg ZGlzYWJsZSBsb2dkaXJ0eSIpOwo+ICsKPiArICAgIGlmIChjcmNzLT5zdGF0dXMgPT0gTElCWExf Q09MT19TVVNQRU5ERUQpIHsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIGZhaWxvdmVyIHdo ZW4gcmVhZGluZyBzdGF0ZSBmcm9tIG1hc3Rlciwgc28gbm8gbmVlZCB0bwo+ICsgICAgICAgICAq IGNhbGwgbGlieGxfX2RvbWFpbl9yZXN0b3JlKCkuCgpZb3UgbmVlZCB0byB1cGRhdGUgdGhpcyBj b21tZW50IHRvIHRoZSByaWdodCBmdW5jdGlvbiBuYW1lLgoKPiArICAgICAgICAgKi8KPiArICAg ICAgICBjb2xvX3Jlc3VtZV92bShlZ2MsIGNyY3MsIDApOwo+ICsgICAgICAgIHJldHVybjsKPiAr ICAgIH0KPiArCj4gKyAgICAvKiBJZiB3ZSBjYW5ub3QgZGlzYWJsZSBsb2dkaXJ0eSwgd2Ugc3Rp bGwgY2FuIGRvIGZhaWxvdmVyICovCj4gKyAgICBjcmNzLT5jYWxsYmFjayhlZ2MsIGNyY3MsIDAp Owo+ICt9Cj4gKwpbLi4uXQo+ICAKPiArLyogY29sbyByZWxhdGVkIHN0cnVjdHVyZSAqLwo+ICt0 eXBlZGVmIHN0cnVjdCBsaWJ4bF9fY29sb19yZXN0b3JlX3N0YXRlIGxpYnhsX19jb2xvX3Jlc3Rv cmVfc3RhdGU7Cj4gK3R5cGVkZWYgdm9pZCBsaWJ4bF9fY29sb19jYWxsYmFjayhsaWJ4bF9fZWdj ICosCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fY29sb19yZXN0 b3JlX3N0YXRlICosIGludCByYyk7Cj4gK3N0cnVjdCBsaWJ4bF9fY29sb19yZXN0b3JlX3N0YXRl IHsKPiArICAgIC8qIG11c3Qgc2V0IGJ5IGNhbGxlciBvZiBsaWJ4bF9fY29sb18oc2V0dXB8dGVh cmRvd24pICovCj4gKyAgICBsaWJ4bF9fYW8gKmFvOwo+ICsgICAgdWludDMyX3QgZG9taWQ7Cj4g KyAgICBpbnQgc2VuZF9iYWNrX2ZkOwo+ICsgICAgaW50IHJlY3ZfZmQ7Cj4gKyAgICBpbnQgaHZt Owo+ICsgICAgbGlieGxfX2NvbG9fY2FsbGJhY2sgKmNhbGxiYWNrOwo+ICsKPiArICAgIC8qIHBy aXZhdGUsIGNvbG8gcmVzdG9yZSBjaGVja3BvaW50IHN0YXRlICovCj4gKyAgICBsaWJ4bF9fZG9t YWluX2NyZWF0ZV9jYiAqc2F2ZWRfY2I7Cj4gKyAgICB2b2lkICpjcmNzOwo+ICt9Owo+ICAKCkFu ZCB0aGlzIHNob3VsZCBnbyB0byBsaWJ4bF9jb2xvLmgsIHRvbz8gQW5kIGxpYnhsX2ludGVybmFs LmggaW5jbHVkZXMKbGlieGxfY29sby5oPwoKSSBqdXN0IGRvbid0IHdhbnQgdG8gY29sbyBzdHJ1 Y3R1cmVzIGFuZCBmdW5jdGlvbnMgc2NhdHRlciBpbgpkaWZmZXJlbnQgcGxhY2VzLgoKPiAgc3Ry dWN0IGxpYnhsX19kb21haW5fY3JlYXRlX3N0YXRlIHsKPiAgICAgIC8qIGZpbGxlZCBpbiBieSB1 c2VyICovCj4gQEAgLTM0ODYsNiArMzUwMyw4IEBAIHN0cnVjdCBsaWJ4bF9fZG9tYWluX2NyZWF0 ZV9zdGF0ZSB7Cj4gICAgICAvKiBwcml2YXRlIHRvIGRvbWFpbl9jcmVhdGUgKi8KPiAgICAgIGlu dCBndWVzdF9kb21pZDsKPiAgICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgYnVpbGRfc3Rh dGU7Cj4gKyAgICBsaWJ4bF9fY29sb19yZXN0b3JlX3N0YXRlIGNyczsKPiArICAgIGxpYnhsX19j aGVja3BvaW50X2RldmljZXNfc3RhdGUgY2RzOwo+ICAgICAgbGlieGxfX2Jvb3Rsb2FkZXJfc3Rh dGUgYmw7Cj4gICAgICBsaWJ4bF9fc3R1Yl9kbV9zcGF3bl9zdGF0ZSBkbXNzOwo+ICAgICAgICAg IC8qIElmIHdlJ3JlIG5vdCBkb2luZyBzdHViZG9tLCB3ZSB1c2Ugb25seSBkbXNzLmRtLAo+IGRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9zYXZlX2NhbGxvdXQuYyBiL3Rvb2xzL2xpYnhs L2xpYnhsX3NhdmVfY2FsbG91dC5jCj4gaW5kZXggMGQ2OTQ5YS4uYjE4MTBiMiAxMDA2NDQKPiAt LS0gYS90b29scy9saWJ4bC9saWJ4bF9zYXZlX2NhbGxvdXQuYwo+ICsrKyBiL3Rvb2xzL2xpYnhs L2xpYnhsX3NhdmVfY2FsbG91dC5jCj4gQEAgLTE1LDYgKzE1LDcgQEAKPiAgI2luY2x1ZGUgImxp YnhsX29zZGVwcy5oIgo+ICAKPiAgI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgiCj4gKyNpbmNs dWRlICJsaWJ4bF9jb2xvLmgiCj4gIAo+ICAvKiBzdHJlYW1fZmQgaXMgYXMgZnJvbSB0aGUgY2Fs bGVyIChldmVudHVhbGx5LCB0aGUgYXBwbGljYXRpb24pLgo+ICAgKiBJdCBtYXkgYmUgMCwgMSBv ciAyLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8gZHVwIGl0IGVsc2V3aGVyZS4KPiBAQCAtNjgs NyArNjksMTEgQEAgdm9pZCBsaWJ4bF9feGNfZG9tYWluX3Jlc3RvcmUobGlieGxfX2VnYyAqZWdj LCBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSAqZGNzLAo+ICAgICAgc2hzLT5hbyA9IGFvOwo+ ICAgICAgc2hzLT5kb21pZCA9IGRvbWlkOwo+ICAgICAgc2hzLT5yZWN2X2NhbGxiYWNrID0gbGli eGxfX3NybV9jYWxsb3V0X3JlY2VpdmVkX3Jlc3RvcmU7Cj4gLSAgICBzaHMtPmNvbXBsZXRpb25f Y2FsbGJhY2sgPSBsaWJ4bF9feGNfZG9tYWluX3Jlc3RvcmVfZG9uZTsKPiArICAgIGlmIChkY3Mt PnJlc3RvcmVfcGFyYW1zLmNoZWNrcG9pbnRlZF9zdHJlYW0gPT0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfQ0hFQ0tQT0lOVEVEX1NUUkVB TV9DT0xPKQoKVGhpcyBpcyB2ZXJ5IHN0cmFuZ2UgbGluZSB3cmFwLgoKPiArICAgICAgICBzaHMt PmNvbXBsZXRpb25fY2FsbGJhY2sgPSBsaWJ4bF9fY29sb19yZXN0b3JlX3RlYXJkb3duOwo+ICsg ICAgZWxzZQo+ICsgICAgICAgIHNocy0+Y29tcGxldGlvbl9jYWxsYmFjayA9IGxpYnhsX194Y19k b21haW5fcmVzdG9yZV9kb25lOwo+ICAgICAgc2hzLT5jYWxsZXJfc3RhdGUgPSBkY3M7Cj4gICAg ICBzaHMtPm5lZWRfcmVzdWx0cyA9IDE7Cj4gIAo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bF9zdHJlYW1fcmVhZC5jIGIvdG9vbHMvbGlieGwvbGlieGxfc3RyZWFtX3JlYWQuYwo+IGlu ZGV4IDVkOTgwZDkuLmQ2YmQyZmUgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfc3Ry ZWFtX3JlYWQuYwo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3N0cmVhbV9yZWFkLmMKPiBAQCAt ODQ2LDYgKzg0NiwxOCBAQCB2b2lkIGxpYnhsX194Y19kb21haW5fcmVzdG9yZV9kb25lKGxpYnhs X19lZ2MgKmVnYywgdm9pZCAqZGNzX3ZvaWQsCj4gICAgICAgKi8KPiAgICAgIGlmIChsaWJ4bF9f c3RyZWFtX3JlYWRfaW51c2Uoc3RyZWFtKSkgewo+ICAgICAgICAgIHN3aXRjaCAoY2hlY2twb2lu dGVkX3N0cmVhbSkgewo+ICsgICAgICAgIGNhc2UgTElCWExfQ0hFQ0tQT0lOVEVEX1NUUkVBTV9D T0xPOgo+ICsgICAgICAgICAgICBpZiAoc3RyZWFtLT5jb21wbGV0aW9uX2NhbGxiYWNrKSB7Cj4g KyAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICogcmVzdG9yZSwganVzdCBi dWlsZCB0aGUgc2Vjb25kYXJ5IHZtLCBkb24ndCBjbG9zZQo+ICsgICAgICAgICAgICAgICAgICog dGhlIHN0cmVhbQo+ICsgICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgICBzdHJl YW0tPmNvbXBsZXRpb25fY2FsbGJhY2soZWdjLCBzdHJlYW0sIDApOwo+ICsgICAgICAgICAgICB9 IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgLyogZmFpbG92ZXIsIGp1c3QgY2xvc2UgdGhlIHN0 cmVhbSAqLwo+ICsgICAgICAgICAgICAgICAgc3RyZWFtX2NvbXBsZXRlKGVnYywgc3RyZWFtLCAw KTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICBjYXNl IExJQlhMX0NIRUNLUE9JTlRFRF9TVFJFQU1fUkVNVVM6Cj4gICAgICAgICAgICAgIC8qCj4gICAg ICAgICAgICAgICAqIEZhaWxvdmVyIGZyb20gcHJpbWFyeS4gRG9tYWluIHN0YXRlIGlzIGN1cnJl bnRseSBhdCBhCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rv b2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAo+IGluZGV4IDYzMmMwMDkuLjMzZjRhOTAgMTAwNjQ0 Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4gKysrIGIvdG9vbHMvbGlieGwv bGlieGxfdHlwZXMuaWRsCj4gQEAgLTIzMiw2ICsyMzIsNyBAQCBsaWJ4bF9oZHR5cGUgPSBFbnVt ZXJhdGlvbigiaGR0eXBlIiwgWwo+ICBsaWJ4bF9jaGVja3BvaW50ZWRfc3RyZWFtID0gRW51bWVy YXRpb24oImNoZWNrcG9pbnRlZF9zdHJlYW0iLCBbCj4gICAgICAoMCwgIk5PTkUiKSwKPiAgICAg ICgxLCAiUkVNVVMiKSwKPiArICAgICgyLCAiQ09MTyIpLAo+ICAgICAgXSkKPiAgCj4gICMKPiAt LSAKPiAyLjUuMAo+IAo+IAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCj4gaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=