From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH V3 7/7] COLO-Proxy: Use socket to get checkpoint event. Date: Mon, 20 Feb 2017 16:07:09 +0000 Message-ID: <20170220160709.hr2fvbpxqqhpdw2j@citrix.com> References: <1487297909-1885-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> <1487297909-1885-8-git-send-email-zhangchen.fnst@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cfqUc-00046P-Gh for xen-devel@lists.xenproject.org; Mon, 20 Feb 2017 16:07:14 +0000 Content-Disposition: inline In-Reply-To: <1487297909-1885-8-git-send-email-zhangchen.fnst@cn.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Zhang Chen Cc: Wei Liu , Li Zhijian , Ian Jackson , eddie , Yang Hongyang , Xen devel , Bian Naimeng List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBGZWIgMTcsIDIwMTcgYXQgMTA6MTg6MjlBTSArMDgwMCwgWmhhbmcgQ2hlbiB3cm90 ZToKPiBXZSB1c2Uga2VybmVsIGNvbG8gcHJveHkncyB3YXkgdG8gZ2V0IHRoZSBjaGVja3BvaW50 IGV2ZW50Cj4gZnJvbSBxZW11IGNvbG8tY29tcGFyZS4KPiBRZW11IGNvbG8tY29tcGFyZSBuZWVk IGFkZCBhIEFQSSB0byBzdXBwb3J0IHRoaXMoSSB3aWxsIGFkZCB0aGlzIGluIHFlbXUpLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IFpoYW5nIENoZW4gPHpoYW5nY2hlbi5mbnN0QGNuLmZ1aml0c3UuY29t Pgo+IC0tLQo+ICB0b29scy9saWJ4bC9saWJ4bF9jb2xvLmggICAgICAgICB8ICAyICsKPiAgdG9v bHMvbGlieGwvbGlieGxfY29sb19wcm94eS5jICAgfCA4NSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tCj4gIHRvb2xzL2xpYnhsL2xpYnhsX2NvbG9fcmVzdG9yZS5jIHwg MTEgKysrKy0tCj4gIHRvb2xzL2xpYnhsL2xpYnhsX2NvbG9fc2F2ZS5jICAgIHwgMjIgKysrKysr Ky0tLS0KPiAgdG9vbHMvbGlieGwvbGlieGxfbmljLmMgICAgICAgICAgfCAgNCArKwo+ICB0b29s cy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICAgICB8ICA0ICstCj4gIHRvb2xzL2xpYnhsL3hsX2Nt ZGltcGwuYyAgICAgICAgIHwgIDQgKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9u cygrKSwgMTggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhs X2NvbG8uaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NvbG8uaAo+IGluZGV4IDQ3NDZkOGMuLjZjMDFi NTUgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY29sby5oCj4gKysrIGIvdG9vbHMv bGlieGwvbGlieGxfY29sby5oCj4gQEAgLTY5LDYgKzY5LDggQEAgc3RydWN0IGxpYnhsX19jb2xv X3Byb3h5X3N0YXRlIHsKPiAgICAgICAqICAgICAgICAgIEZhbHNlIG1lYW5zIHVzZSBrZXJuZWwg Y29sbyBwcm94eS4KPiAgICAgICAqLwo+ICAgICAgYm9vbCBpc191c2Vyc3BhY2VfcHJveHk7Cj4g KyAgICBjb25zdCBjaGFyICpjaGVja3BvaW50X2hvc3Q7Cj4gKyAgICBjb25zdCBjaGFyICpjaGVj a3BvaW50X3BvcnQ7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgbGlieGxfX2NvbG9fc2F2ZV9zdGF0ZSB7 Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NvbG9fcHJveHkuYyBiL3Rvb2xzL2xp YnhsL2xpYnhsX2NvbG9fcHJveHkuYwo+IGluZGV4IGRkOTAyZmMuLmE2NDM2YjAgMTAwNjQ0Cj4g LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY29sb19wcm94eS5jCj4gKysrIGIvdG9vbHMvbGlieGwv bGlieGxfY29sb19wcm94eS5jCj4gQEAgLTE4LDkgKzE4LDEzIEBACj4gICNpbmNsdWRlICJsaWJ4 bF9pbnRlcm5hbC5oIgo+ICAKPiAgI2luY2x1ZGUgPG5ldGxpbmsvbmV0bGluay5oPgo+ICsjaW5j bHVkZSA8YXJwYS9pbmV0Lmg+Cj4gKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Cj4gKyNpbmNsdWRl IDxuZXRpbmV0L2luLmg+Cj4gIAo+ICAvKiBDb25zaXN0ZW50IHdpdGggdGhlIG5ldyBDT0xPIG5l dGxpbmsgY2hhbm5lbCBpbiBrZXJuZWwgc2lkZSAqLwo+ICAjZGVmaW5lIE5FVExJTktfQ09MTyAy OAo+ICsjZGVmaW5lIENPTE9fREVGQVVMVF9XQUlUX1RJTUUgNTAwMDAwCj4gIAo+ICBlbnVtIGNv bG9fbmV0bGlua19vcCB7Cj4gICAgICBDT0xPX1FVRVJZX0NIRUNLUE9JTlQgPSAoTkxNU0dfTUlO X1RZUEUgKyAxKSwKPiBAQCAtNzYsNiArODAsMjYgQEAgc3RhdGljIGludCBjb2xvX3Byb3h5X3Nl bmQobGlieGxfX2NvbG9fcHJveHlfc3RhdGUgKmNwcywgdWludDhfdCAqYnVmZiwKPiAgICAgIHJl dHVybiByZXQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgY29sb191c2Vyc3BhY2VfcHJveHlfcmVj dihsaWJ4bF9fY29sb19wcm94eV9zdGF0ZSAqY3BzLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqYnVmZiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0X3VzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgdGlt ZXZhbCB0djsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgU1RBVEVfQU9fR0MoY3BzLT5hbyk7 Cj4gKwo+ICsgICAgaWYgKHRpbWVvdXRfdXMpIHsKPiArICAgICAgICB0di50dl9zZWMgPSB0aW1l b3V0X3VzIC8gMTAwMDAwMDsKPiArICAgICAgICB0di50dl91c2VjID0gdGltZW91dF91cyAlIDEw MDAwMDA7Cj4gKyAgICAgICAgc2V0c29ja29wdChjcHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsIFNP X1JDVlRJTUVPLCAmdHYsIHNpemVvZih0dikpOwoKUGxlYXNlIGNoZWNrIHRoZSByZXR1cm4gdmFs dWUgb2Ygc2V0c29ja29wdCBhbmQgaGFuZGxlIGVycm9yCmFwcHJvcHJpYXRlbHkuIElmIHlvdSBk b24ndCBjYXJlIGFib3V0IHRoZSBlcnJvciwgcGxlYXNlIGFkZCBhIGNvbW1lbnQuCgo+ICsgICAg fQo+ICsKPiArICAgIHJldCA9IHJlY3YoY3BzLT5zb2NrX2ZkLCBidWZmLCBzaXplb2YoYnVmZiks MCk7Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiAgLyogZXJyb3I6IHJldHVybiAt MSwgb3RoZXJ3aXNlIHJldHVybiAwICovCj4gIHN0YXRpYyBpbnQ2NF90IGNvbG9fcHJveHlfcmVj dihsaWJ4bF9fY29sb19wcm94eV9zdGF0ZSAqY3BzLCB1aW50OF90ICoqYnVmZiwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0X3VzKQo+IEBAIC0x NTMsOCArMTc3LDQ1IEBAIGludCBjb2xvX3Byb3h5X3NldHVwKGxpYnhsX19jb2xvX3Byb3h5X3N0 YXRlICpjcHMpCj4gICAgICBTVEFURV9BT19HQyhjcHMtPmFvKTsKPiAgCj4gICAgICAvKiBJZiBl bmFibGUgdXNlcnNwYWNlIHByb3h5IG1vZGUsIHdlIGRvbid0IG5lZWQgc2V0dXAga2VybmVsIHBy b3h5ICovCj4gLSAgICBpZiAoY3BzLT5pc191c2Vyc3BhY2VfcHJveHkpCj4gKyAgICBpZiAoY3Bz LT5pc191c2Vyc3BhY2VfcHJveHkpIHsKPiArICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRk cjsKPiArICAgICAgICBpbnQgcG9ydDsKPiArICAgICAgICBjaGFyIHJlY3ZidWZmWzEwMjRdOwo+ ICsgICAgICAgIGNoYXIgc2VuZGJ1ZltdID0gIkNPTE9fVVNFUlNQQUNFX1BST1hZX0lOSVQiOwo+ ICsKPiArICAgICAgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7Cj4gKyAgICAgICAg cG9ydCA9IGF0b2koY3BzLT5jaGVja3BvaW50X3BvcnQpOwo+ICsgICAgICAgIGFkZHIuc2luX2Zh bWlseSA9IEFGX0lORVQ7Cj4gKyAgICAgICAgYWRkci5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOwo+ ICsgICAgICAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKGNwcy0+Y2hlY2twb2lu dF9ob3N0KTsKPiArCj4gKyAgICAgICAgc2tmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVB TSwgMCk7Cj4gKyAgICAgICAgaWYgKHNrZmQgPCAwKSB7Cj4gKyAgICAgICAgICAgIExPR0QoRVJS T1IsIGFvLT5kb21pZCwgImNhbiBub3QgY3JlYXRlIGEgVENQIHNvY2tldDogJXMiLAo+ICsgICAg ICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgY3BzLT5zb2NrX2ZkID0gc2tmZDsKPiArCj4gKyAg ICAgICAgaWYgKGNvbm5lY3Qoc2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2Yo YWRkcikpIDwgMCkgewo+ICsgICAgICAgICAgICBMT0dEKEVSUk9SLCBhby0+ZG9taWQsICJjb25u ZWN0IGVycm9yIik7Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgcmV0ID0gc2VuZChza2ZkLCBzZW5kYnVmLCBzdHJsZW4oc2VuZGJ1ZiksMCk7Cj4g KyAgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAg ICAgICByZXQgPSBjb2xvX3VzZXJzcGFjZV9wcm94eV9yZWN2KGNwcywgcmVjdmJ1ZmYsIENPTE9f REVGQVVMVF9XQUlUX1RJTUUpOwo+ICsgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAg ICAgIExPR0QoRVJST1IsIGFvLT5kb21pZCwgIkNhbid0IHJlY3YgbXNnIGZyb20gcWVtdSBjb2xv LWNvbXBhcmU6ICVzIiwKPiArICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwo+ICsg ICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgICB9Cj4gKwo+ICAgICAgICAgIHJldHVybiAw Owo+ICsgICAgfQo+ICAKPiAgICAgIHNrZmQgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19SQVcs IE5FVExJTktfQ09MTyk7Cj4gICAgICBpZiAoc2tmZCA8IDApIHsKPiBAQCAtMjQ3LDggKzMwOCwx MSBAQCB2b2lkIGNvbG9fcHJveHlfcHJlcmVzdW1lKGxpYnhsX19jb2xvX3Byb3h5X3N0YXRlICpj cHMpCj4gICAgICAgKiBJZiBlbmFibGUgdXNlcnNwYWNlIHByb3h5IG1vZGUsCj4gICAgICAgKiB3 ZSBkb24ndCBuZWVkIHByZXJlc3VtZSBrZXJuZWwgcHJveHkKPiAgICAgICAqLwo+IC0gICAgaWYg KGNwcy0+aXNfdXNlcnNwYWNlX3Byb3h5KQo+ICsgICAgaWYgKGNwcy0+aXNfdXNlcnNwYWNlX3By b3h5KSB7Cj4gKyAgICAgICAgY2hhciBzZW5kYnVmW10gPSAiQ09MT19DSEVDS1BPSU5UIjsKClBs ZWFzZSBjb25zdGlmeSBpdC4KCj4gKyAgICAgICAgc2VuZChjcHMtPnNvY2tfZmQsIHNlbmRidWYs IHN0cmxlbihzZW5kYnVmKSwwKTsKClNwYWNlIGJlZm9yZSAiMCIuCgo+ICAgICAgICAgIHJldHVy bjsKPiArICAgIH0KPiAgCj4gICAgICBjb2xvX3Byb3h5X3NlbmQoY3BzLCBOVUxMLCAwLCBDT0xP X0NIRUNLUE9JTlQpOwo+ICAgICAgLyogVE9ETzogbmVlZCB0byBoYW5kbGUgaWYgdGhlIGNhbGwg ZmFpbHMuLi4gKi8KPiBAQCAtMjc3LDE2ICszNDEsMjUgQEAgaW50IGNvbG9fcHJveHlfY2hlY2tw b2ludChsaWJ4bF9fY29sb19wcm94eV9zdGF0ZSAqY3BzLAo+ICAgICAgc3RydWN0IG5sbXNnaGRy ICpoOwo+ICAgICAgc3RydWN0IGNvbG9fbXNnICptOwo+ICAgICAgaW50IHJldCA9IC0xOwo+ICsg ICAgY2hhciByZWN2YnVmZlsxMDI0XTsKPiAgCj4gICAgICBTVEFURV9BT19HQyhjcHMtPmFvKTsK PiAgCj4gICAgICAvKgo+IC0gICAgICogZW5hYmxlIHVzZXJzcGFjZSBwcm94eSBtb2RlLCB0bXAg c2xlZXAuCj4gLSAgICAgKiB0aGVuIHdlIHdpbGwgYWRkIHFlbXUgQVBJIHN1cHBvcnQgdGhpcyBm dW5jLgo+ICsgICAgICogZW5hYmxlIHVzZXJzcGFjZSBwcm94eSBtb2RlLgo+ICsgICAgICogVGhl biB3ZSB3aWxsIGFkZCBxZW11IEFQSSBzdXBwb3J0IGZvciB0aGlzIGZ1bmMuCj4gICAgICAgKi8K PiAgICAgIGlmIChjcHMtPmlzX3VzZXJzcGFjZV9wcm94eSkgewo+IC0gICAgICAgIHNsZWVwKHRp bWVvdXRfdXMgLyAxMDAwMDAwKTsKPiAtICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICByZXQg PSBjb2xvX3VzZXJzcGFjZV9wcm94eV9yZWN2KGNwcywgcmVjdmJ1ZmYsIHRpbWVvdXRfdXMpOwo+ ICsgICAgICAgIGlmIChyZXQgPD0gMCkKPiArICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsg ICAgICAgIGlmICghc3RyY21wKHJlY3ZidWZmLCAiRE9fQ0hFQ0tQT0lOVCIpKSB7Cj4gKyAgICAg ICAgICAgIHJldHVybiAxOwo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIExPR0Qo RVJST1IsIGFvLT5kb21pZCwgInJlY2VpdmUgcWVtdSBjb2xvLWNvbXBhcmUgY2hlY2twb2ludCBl cnJvciIpOwo+ICsgICAgICAgICAgICByZXR1cm4gLTE7CgpQbGVhc2UgdXNlIGdvdG8gc3R5bGUg ZXJyb3IgaGFuZGxpbmcgaWYgcG9zc2libGUuIFBsZWFzZSByZWZlciB0bwpDT0RJTkdfU1RZTEUg ZmlsZSBpbnNpZGUgbGlieGwgZGlyZWN0b3J5LgoKPiArICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ ICAgICAgc2l6ZSA9IGNvbG9fcHJveHlfcmVjdihjcHMsICZidWZmLCB0aW1lb3V0X3VzKTsKPiBk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfY29sb19yZXN0b3JlLmMgYi90b29scy9saWJ4 bC9saWJ4bF9jb2xvX3Jlc3RvcmUuYwo+IGluZGV4IGM2ZDIzOWEuLjA2NWVhMDAgMTAwNjQ0Cj4g LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY29sb19yZXN0b3JlLmMKPiArKysgYi90b29scy9saWJ4 bC9saWJ4bF9jb2xvX3Jlc3RvcmUuYwo+IEBAIC02MTMsNyArNjEzLDggQEAgc3RhdGljIHZvaWQg Y29sb19yZXN0b3JlX3ByZXJlc3VtZV9jYihsaWJ4bF9fZWdjICplZ2MsCj4gICAgICAgICAgfQo+ ICAgICAgfQo+ICAKPiAtICAgIGNvbG9fcHJveHlfcHJlcmVzdW1lKCZjcnMtPmNwcyk7Cj4gKyAg ICBpZiAoIWNycy0+Y3BzLmlzX3VzZXJzcGFjZV9wcm94eSkKPiArICAgICAgICBjb2xvX3Byb3h5 X3ByZXJlc3VtZSgmY3JzLT5jcHMpOwo+ICAKPiAgICAgIGNvbG9fcmVzdG9yZV9yZXN1bWVfdm0o ZWdjLCBjcmNzKTsKPiAgCj4gQEAgLTc4Niw5ICs3ODcsMTEgQEAgc3RhdGljIHZvaWQgY29sb19z ZXR1cF9jaGVja3BvaW50X2RldmljZXMobGlieGxfX2VnYyAqZWdjLAo+ICAgICAgY2RzLT5vcHMg PSBjb2xvX3Jlc3RvcmVfb3BzOwo+ICAKPiAgICAgIGNycy0+Y3BzLmFvID0gYW87Cj4gLSAgICBp ZiAoY29sb19wcm94eV9zZXR1cCgmY3JzLT5jcHMpKSB7Cj4gLSAgICAgICAgTE9HRChFUlJPUiwg Y2RzLT5kb21pZCwgIkNPTE86IGZhaWxlZCB0byBzZXR1cCBjb2xvIHByb3h5IGZvciBndWVzdCIp Owo+IC0gICAgICAgIGdvdG8gb3V0Owo+ICsgICAgaWYgKCFjcnMtPmNwcy5pc191c2Vyc3BhY2Vf cHJveHkpIHsKPiArICAgICAgICBpZiAoY29sb19wcm94eV9zZXR1cCgmY3JzLT5jcHMpKSB7Cj4g KyAgICAgICAgICAgIExPR0QoRVJST1IsIGNkcy0+ZG9taWQsICJDT0xPOiBmYWlsZWQgdG8gc2V0 dXAgY29sbyBwcm94eSBmb3IgZ3Vlc3QiKTsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAg ICAgICAgfQo+ICAgICAgfQo+ICAKPiAgICAgIGlmIChpbml0X2RldmljZV9zdWJraW5kKGNkcykp Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NvbG9fc2F2ZS5jIGIvdG9vbHMvbGli eGwvbGlieGxfY29sb19zYXZlLmMKPiBpbmRleCA5MWUzZmNlLi5hMGNmYzVhIDEwMDY0NAo+IC0t LSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NvbG9fc2F2ZS5jCj4gKysrIGIvdG9vbHMvbGlieGwvbGli eGxfY29sb19zYXZlLmMKPiBAQCAtODYsNiArODYsNyBAQCB2b2lkIGxpYnhsX19jb2xvX3NhdmVf c2V0dXAobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fY29sb19zYXZlX3N0YXRlICpjc3MpCj4gICAg ICBsaWJ4bF9fY2hlY2twb2ludF9kZXZpY2VzX3N0YXRlICpjb25zdCBjZHMgPSAmZHNzLT5jZHM7 Cj4gICAgICBsaWJ4bF9fc3JtX3NhdmVfYXV0b2dlbl9jYWxsYmFja3MgKmNvbnN0IGNhbGxiYWNr cyA9Cj4gICAgICAgICAgJmRzcy0+c3dzLnNocy5jYWxsYmFja3Muc2F2ZS5hOwo+ICsgICAgbGli eGxfZGV2aWNlX25pYyAqbmljczsKPiAgCj4gICAgICBTVEFURV9BT19HQyhkc3MtPmFvKTsKPiAg Cj4gQEAgLTExMCwyNCArMTExLDMxIEBAIHZvaWQgbGlieGxfX2NvbG9fc2F2ZV9zZXR1cChsaWJ4 bF9fZWdjICplZ2MsIGxpYnhsX19jb2xvX3NhdmVfc3RhdGUgKmNzcykKPiAgICAgICAgICBjc3Mt PmNvbG9fcHJveHlfc2NyaXB0ID0gR0NTUFJJTlRGKCIlcy9jb2xvLXByb3h5LXNldHVwIiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194ZW5fc2Ny aXB0X2Rpcl9wYXRoKCkpOwo+ICAKPiAtICAgIC8qIElmIGVuYWJsZSB1c2Vyc3BhY2UgcHJveHkg bW9kZSwgd2UgZG9uJ3QgbmVlZCBWSUYgKi8KPiAtICAgIGlmIChjc3MtPmNwcy5pc191c2Vyc3Bh Y2VfcHJveHkpCj4gLSAgICAgICAgY2RzLT5kZXZpY2Vfa2luZF9mbGFncyA9ICgxIDw8IExJQlhM X19ERVZJQ0VfS0lORF9WQkQpOwo+IC0gICAgZWxzZQo+IC0gICAgICAgIGNkcy0+ZGV2aWNlX2tp bmRfZmxhZ3MgPSAoMSA8PCBMSUJYTF9fREVWSUNFX0tJTkRfVklGKSB8Cj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgxIDw8IExJQlhMX19ERVZJQ0VfS0lORF9WQkQpOwo+IC0K PiAgICAgIGNkcy0+b3BzID0gY29sb19vcHM7Cj4gICAgICBjZHMtPmNhbGxiYWNrID0gY29sb19z YXZlX3NldHVwX2RvbmU7Cj4gICAgICBjZHMtPmFvID0gYW87Cj4gICAgICBjZHMtPmRvbWlkID0g ZHNzLT5kb21pZDsKPiAgICAgIGNkcy0+Y29uY3JldGVfZGF0YSA9IGNzczsKPiAgCj4gKyAgICAv KiBJZiBlbmFibGUgdXNlcnNwYWNlIHByb3h5IG1vZGUsIHdlIGRvbid0IG5lZWQgVklGICovCj4g KyAgICBpZiAoY3NzLT5jcHMuaXNfdXNlcnNwYWNlX3Byb3h5KSB7Cj4gKyAgICAgICAgY2RzLT5k ZXZpY2Vfa2luZF9mbGFncyA9ICgxIDw8IExJQlhMX19ERVZJQ0VfS0lORF9WQkQpOwo+ICsKPiAr ICAgICAgICAvKiBVc2UgdGhpcyBhcmdzIHdlIGNhbiBjb25uZWN0IHRvIHFlbXUgY29sby1jb21w YXJlICovCj4gKyAgICAgICAgbmljcyA9IGxpYnhsX2RldmljZV9uaWNfbGlzdChDVFgsIGNkcy0+ ZG9taWQsICZjZHMtPm51bV9uaWNzKTsKPiArICAgICAgICBjc3MtPmNwcy5jaGVja3BvaW50X2hv c3QgPSBuaWNzLT5jb2xvX2NoZWNrcG9pbnRfaG9zdDsKPiArICAgICAgICBjc3MtPmNwcy5jaGVj a3BvaW50X3BvcnQgPSBuaWNzLT5jb2xvX2NoZWNrcG9pbnRfcG9ydDsKPiArICAgIH0gZWxzZSB7 Cj4gKyAgICAgICAgY2RzLT5kZXZpY2Vfa2luZF9mbGFncyA9ICgxIDw8IExJQlhMX19ERVZJQ0Vf S0lORF9WSUYpIHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgTElC WExfX0RFVklDRV9LSU5EX1ZCRCk7Cj4gKyAgICB9Cj4gKwo+ICAgICAgY3NzLT5zcnMuYW8gPSBh bzsKPiAgICAgIGNzcy0+c3JzLmZkID0gY3NzLT5yZWN2X2ZkOwo+ICAgICAgY3NzLT5zcnMuYmFj a19jaGFubmVsID0gdHJ1ZTsKPiAgICAgIGxpYnhsX19zdHJlYW1fcmVhZF9zdGFydChlZ2MsICZj c3MtPnNycyk7Cj4gICAgICBjc3MtPmNwcy5hbyA9IGFvOwo+ICsKClN0cmF5IGJsYW5rIGxpbmUu CgpXZWkuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK