From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 2/3] Introduce migration precopy policy Date: Wed, 20 Sep 2017 08:35:46 +0000 Message-ID: <03ce7ef17d89418cb1af913309bb9233@AMSPEX02CL03.citrite.net> References: <1505844387-2224-1-git-send-email-Jennifer.Herbert@citrix.com> <1505844387-2224-3-git-send-email-Jennifer.Herbert@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 1duaU1-0001NF-D4 for xen-devel@lists.xenproject.org; Wed, 20 Sep 2017 08:35:49 +0000 In-Reply-To: <1505844387-2224-3-git-send-email-Jennifer.Herbert@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Ian Jackson , Wei Liu , "xen-devel@lists.xenproject.org" , "jtotto@uwaterloo.ca" Cc: Jennifer Herbert List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW4ub3JnXSBPbiBCZWhhbGYgT2YNCj4gSmVubmlmZXIg SGVyYmVydA0KPiBTZW50OiAxOSBTZXB0ZW1iZXIgMjAxNyAxOTowNg0KPiBUbzogSWFuIEphY2tz b24gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+OyBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t PjsNCj4geGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBqdG90dG9AdXdhdGVybG9vLmNh DQo+IENjOiBKZW5uaWZlciBIZXJiZXJ0IDxqZW5uaWZlci5oZXJiZXJ0QGNpdHJpeC5jb20+DQo+ IFN1YmplY3Q6IFtYZW4tZGV2ZWxdIFtQQVRDSCB2MiAyLzNdIEludHJvZHVjZSBtaWdyYXRpb24g cHJlY29weSBwb2xpY3kNCj4gDQo+IFRoaXMgUGF0Y2ggYWxsb3dzIGEgbWlncmF0aW9uIHByZWNv cHkgcG9saWN5IHRvIGJlIHNwZWNpZmllZC4NCj4gDQo+IFRoZSBwcmVjb3B5IHBoYXNlIG9mIHRo ZSB4Y19kb21haW5fc2F2ZSgpIGxpdmUgbWlncmF0aW9uIGFsZ29yaXRobSBoYXMNCj4gaGlzdG9y aWNhbGx5IGJlZW4gaW1wbGVtZW50ZWQgdG8gcnVuIHVudGlsIGVpdGhlciBhKSAoYWxtb3N0KSBu byBwYWdlcw0KPiBhcmUgZGlydHkgb3IgYikgc29tZSBmaXhlZCwgaGFyZC1jb2RlZCBtYXhpbXVt IG51bWJlciBvZiBwcmVjb3B5DQo+IGl0ZXJhdGlvbnMgaGFzIGJlZW4gZXhjZWVkZWQuICBUaGlz IHBvbGljeSBhbmQgaXRzIGltcGxlbWVudGF0aW9uIGFyZQ0KPiBsZXNzIHRoYW4gaWRlYWwgZm9y IGEgZmV3IHJlYXNvbnM6DQo+IC0gdGhlIGxvZ2ljIG9mIHRoZSBwb2xpY3kgaXMgaW50ZXJ0d2lu ZWQgd2l0aCB0aGUgY29udHJvbCBmbG93IG9mIHRoZQ0KPiAgIG1lY2hhbmlzbSBvZiB0aGUgcHJl Y29weSBzdGFnZQ0KPiAtIGl0IGNhbid0IHRha2UgaW50byBhY2NvdW50IGZhY3RzIGV4dGVybmFs IHRvIHRoZSBpbW1lZGlhdGUNCj4gICBtaWdyYXRpb24gY29udGV4dCwgc3VjaCBleHRlcm5hbCBz dGF0ZSB0cmFuc2ZlciBzdGF0ZSwgaW50ZXJhY3RpdmUNCj4gICB1c2VyIGlucHV0LCBvciB0aGUg cGFzc2FnZSBvZiB3YWxsLWNsb2NrIHRpbWUuDQo+IC0gaXQgZG9lcyBub3QgcGVybWl0IHRoZSB1 c2VyIHRvIGNoYW5nZSB0aGVpciBtaW5kLCBvdmVyIHRpbWUsIGFib3V0DQo+ICAgd2hhdCB0byBk byBhdCB0aGUgZW5kIG9mIHRoZSBwcmVjb3B5ICh0aGV5IGdldCBhbiB1bmNvbmRpdGlvbmFsDQo+ ICAgdHJhbnNpdGlvbiBpbnRvIHRoZSBzdG9wLWFuZC1jb3B5IHBoYXNlIG9mIHRoZSBtaWdyYXRp b24pDQo+IA0KPiBUbyBwZXJtaXQgY2FsbGVycyB0byBpbXBsZW1lbnQgYXJiaXRyYXJ5IGhpZ2hl ci1sZXZlbCBwb2xpY2llcyBnb3Zlcm5pbmcNCj4gd2hlbiB0aGUgbGl2ZSBtaWdyYXRpb24gcHJl Y29weSBwaGFzZSBzaG91bGQgZW5kLCBhbmQgd2hhdCBzaG91bGQgYmUNCj4gZG9uZSBuZXh0Og0K PiAtIGFkZCBhIHByZWNvcHlfcG9saWN5KCkgY2FsbGJhY2sgdG8gdGhlIHhjX2RvbWFpbl9zYXZl KCkgdXNlci1zdXBwbGllZA0KPiAgIGNhbGxiYWNrcw0KPiAtIGR1cmluZyB0aGUgcHJlY29weSBw aGFzZSBvZiBsaXZlIG1pZ3JhdGlvbnMsIGNvbnN1bHQgdGhpcyBwb2xpY3kgYWZ0ZXINCj4gICBl YWNoIGJhdGNoIG9mIHBhZ2VzIHRyYW5zbWl0dGVkIGFuZCB0YWtlIHRoZSBkaWN0YXRlZCBhY3Rp b24sIHdoaWNoDQo+ICAgbWF5IGJlIHRvIGEpIGFib3J0IHRoZSBtaWdyYXRpb24gZW50aXJlbHks IGIpIGNvbnRpbnVlIHdpdGggdGhlDQo+ICAgcHJlY29weSwgb3IgYykgcHJvY2VlZCB0byB0aGUg c3RvcC1hbmQtY29weSBwaGFzZS4NCj4gLSBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRo ZSBvbGQgcG9saWN5LCB1c2VkIHdoZW4NCj4gICBwcmVjb3B5X3BvbGljeSBjYWxsYmFjayAgaXMg bm90IHByb3ZpZGVkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSmVubmlmZXIgSGVyYmVydCA8SmVu bmlmZXIuSGVyYmVydEBjaXRyaXguY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBKb3NodWEgT3R0byA8 anRvdHRvQHV3YXRlcmxvby5jYT4NCj4gDQo+IC0tLQ0KPiANCj4gdjI6DQo+IA0KPiBIYXZlIG1h ZGUgYSBmZXcgZm9ybWF0dGluZyBjb3JyZWN0aW9ucywgYWRkZWQgdHlwZWRlZiBhcyBzdWdnZXN0 ZWQuDQo+IA0KPiB2MToNCj4gDQo+IFRoaXMgaXMgdXBkYXRlZC9tb2RpZmllZCBzdWJzZXQgb2Yg cGF0Y2ggNy8yMCwgcGFydCBvZg0KPiBKb3NodWEgT3R0bydzICJBZGQgcG9zdGNvcHkgbGl2ZSBt aWdyYXRpb24gc3VwcG9ydC4iIHBhdGNoLA0KPiBkYXRlZCAyN3RoIE1hcmNoIDIwMTcuICBBcyBp bmRpY2F0ZWQgb24gdGhlIG9yaWdpbmFsIHRocmVhZCwNCj4gSSB3aXNoIHRvIG1ha2UgdXNlIG9m IHRoaXMgdGhpcyB3aXRoaW4gdGhlIFhlblNlcnZlciBwcm9kdWN0Lg0KPiBJIGhvcGUgdGhpcyB3 aWxsIGFpZCBKb3NoIGluIHB1c2hpbmcgdGhlIHJlbWFpbmRlciBvZiBoaXMgc2VyaWVzLg0KPiAN Cj4gLS0tDQo+ICB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmggfCAzMSArKysrKysrKysr KystLQ0KPiAgdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmggICAgIHwgIDYgKy0tDQo+ICB0b29s cy9saWJ4Yy94Y19zcl9zYXZlLmMgICAgICAgfCA5NyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tDQo+IC0tLS0tDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMo KyksIDM3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuZ3Vlc3QuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaA0KPiBpbmRleCA2 NjI2ZjBjLi5hMmE2NTRjIDEwMDY0NA0KPiAtLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1 ZXN0LmgNCj4gKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oDQo+IEBAIC0zOSw2 ICszOSwxNiBAQA0KPiAgICovDQo+ICBzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZTsNCj4gDQo+ICsv KiBGb3Igc2F2ZSdzIHByZWNvcHlfcG9saWN5KCkuICovDQo+ICtzdHJ1Y3QgcHJlY29weV9zdGF0 cw0KPiArew0KPiArICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb247DQo+ICsgICAgdW5zaWduZWQg aW50IHRvdGFsX3dyaXR0ZW47DQo+ICsgICAgbG9uZyBkaXJ0eV9jb3VudDsgLyogLTEgaWYgdW5r bm93biAqLw0KPiArfTsNCj4gKw0KPiArdHlwZWRlZiBpbnQgKCpwcmVjb3B5X3BvbGljeV90KShz dHJ1Y3QgcHJlY29weV9zdGF0cywgdm9pZCAqKTsNCj4gKw0KPiAgLyogY2FsbGJhY2tzIHByb3Zp ZGVkIGJ5IHhjX2RvbWFpbl9zYXZlICovDQo+ICBzdHJ1Y3Qgc2F2ZV9jYWxsYmFja3Mgew0KPiAg ICAgIC8qIENhbGxlZCBhZnRlciBleHBpcmF0aW9uIG9mIGNoZWNrcG9pbnQgaW50ZXJ2YWwsDQo+ IEBAIC00Niw3ICs1NiwyMCBAQCBzdHJ1Y3Qgc2F2ZV9jYWxsYmFja3Mgew0KPiAgICAgICAqLw0K PiAgICAgIGludCAoKnN1c3BlbmQpKHZvaWQqIGRhdGEpOw0KPiANCj4gLSAgICAvKiBDYWxsZWQg YWZ0ZXIgdGhlIGd1ZXN0J3MgZGlydHkgcGFnZXMgaGF2ZSBiZWVuDQo+ICsgICAgLyoNCj4gKyAg ICAgKiBDYWxsZWQgYWZ0ZXIgZXZlcnkgYmF0Y2ggb2YgcGFnZSBkYXRhIHNlbnQgZHVyaW5nIHRo ZSBwcmVjb3B5DQo+ICsgICAgICogcGhhc2Ugb2YgYSBsaXZlIG1pZ3JhdGlvbiB0byBhc2sgdGhl IGNhbGxlciB3aGF0IHRvIGRvIG5leHQNCj4gKyAgICAgKiBiYXNlZCBvbiB0aGUgY3VycmVudCBz dGF0ZSBvZiB0aGUgcHJlY29weSBtaWdyYXRpb24uDQo+ICsgICAgICovDQo+ICsjZGVmaW5lIFhH U19QT0xJQ1lfQUJPUlQgICAgICAgICAgKC0xKSAvKiBBYmFuZG9uIHRoZSBtaWdyYXRpb24gZW50 aXJlbHkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFuZCB0 aWR5IHVwLiAqLw0KPiArI2RlZmluZSBYR1NfUE9MSUNZX0NPTlRJTlVFX1BSRUNPUFkgMCAgLyog UmVtYWluIGluIHRoZSBwcmVjb3B5DQo+IHBoYXNlLiAqLw0KPiArI2RlZmluZSBYR1NfUE9MSUNZ X1NUT1BfQU5EX0NPUFkgICAgMSAgLyogSW1tZWRpYXRlbHkgc3VzcGVuZCBhbmQNCj4gdHJhbnNt aXQgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZW1h aW5pbmcgZGlydHkgcGFnZXMuICovDQo+ICsgICAgcHJlY29weV9wb2xpY3lfdCBwcmVjb3B5X3Bv bGljeTsNCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICogQ2FsbGVkIGFmdGVyIHRoZSBndWVzdCdz IGRpcnR5IHBhZ2VzIGhhdmUgYmVlbg0KPiAgICAgICAqICBjb3BpZWQgaW50byBhbiBvdXRwdXQg YnVmZmVyLg0KPiAgICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHJlc3VtZXMgdGhlIGd1ZXN0ICYg dGhlIGRldmljZSBtb2RlbCwNCj4gICAgICAgKiAgcmV0dXJucyB0byB4Y19kb21haW5fc2F2ZS4N Cj4gQEAgLTU1LDcgKzc4LDggQEAgc3RydWN0IHNhdmVfY2FsbGJhY2tzIHsNCj4gICAgICAgKi8N Cj4gICAgICBpbnQgKCpwb3N0Y29weSkodm9pZCogZGF0YSk7DQo+IA0KPiAtICAgIC8qIENhbGxl ZCBhZnRlciB0aGUgbWVtb3J5IGNoZWNrcG9pbnQgaGFzIGJlZW4gZmx1c2hlZA0KPiArICAgIC8q DQo+ICsgICAgICogQ2FsbGVkIGFmdGVyIHRoZSBtZW1vcnkgY2hlY2twb2ludCBoYXMgYmVlbiBm bHVzaGVkDQo+ICAgICAgICogb3V0IGludG8gdGhlIG5ldHdvcmsuIFR5cGljYWwgYWN0aW9ucyBw ZXJmb3JtZWQgaW4gdGhpcw0KPiAgICAgICAqIGNhbGxiYWNrIGluY2x1ZGU6DQo+ICAgICAgICog ICAoYSkgc2VuZCB0aGUgc2F2ZWQgZGV2aWNlIG1vZGVsIHN0YXRlIChmb3IgSFZNIGd1ZXN0cyks DQo+IEBAIC02NSw3ICs4OSw4IEBAIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyB7DQo+ICAgICAgICoN Cj4gICAgICAgKiByZXR1cm5zOg0KPiAgICAgICAqIDA6IHRlcm1pbmF0ZSBjaGVja3BvaW50aW5n IGdyYWNlZnVsbHkNCj4gLSAgICAgKiAxOiB0YWtlIGFub3RoZXIgY2hlY2twb2ludCAqLw0KPiAr ICAgICAqIDE6IHRha2UgYW5vdGhlciBjaGVja3BvaW50DQo+ICsgICAgICovDQo+ICAgICAgaW50 ICgqY2hlY2twb2ludCkodm9pZCogZGF0YSk7DQo+IA0KPiAgICAgIC8qDQo+IGRpZmYgLS1naXQg YS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5o DQo+IGluZGV4IGE4M2YyMmEuLjM2MzU3MDQgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hj X3NyX2NvbW1vbi5oDQo+ICsrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oDQo+IEBAIC0x OTgsMTIgKzE5OCwxMCBAQCBzdHJ1Y3QgeGNfc3JfY29udGV4dA0KPiAgICAgICAgICAgICAgLyog RnVydGhlciBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHN0cmVhbS4gKi8NCj4gICAgICAg ICAgICAgIGJvb2wgZGVidWc7DQo+IA0KPiAtICAgICAgICAgICAgLyogUGFyYW1ldGVycyBmb3Ig dHdlYWtpbmcgbGl2ZSBtaWdyYXRpb24uICovDQo+IC0gICAgICAgICAgICB1bnNpZ25lZCBtYXhf aXRlcmF0aW9uczsNCj4gLSAgICAgICAgICAgIHVuc2lnbmVkIGRpcnR5X3RocmVzaG9sZDsNCj4g LQ0KPiAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwMm1fc2l6ZTsNCj4gDQo+ICsgICAgICAg ICAgICBzdHJ1Y3QgcHJlY29weV9zdGF0cyBzdGF0czsNCj4gKw0KPiAgICAgICAgICAgICAgeGVu X3Bmbl90ICpiYXRjaF9wZm5zOw0KPiAgICAgICAgICAgICAgdW5zaWduZWQgbnJfYmF0Y2hfcGZu czsNCj4gICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmRlZmVycmVkX3BhZ2VzOw0KPiBkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfc3Jfc2F2ZS5jIGIvdG9vbHMvbGlieGMveGNfc3Jfc2F2 ZS5jDQo+IGluZGV4IDFlNzUwMmQuLmY1OGMwMDggMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2xpYnhj L3hjX3NyX3NhdmUuYw0KPiArKysgYi90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMNCj4gQEAgLTQ1 Miw4ICs0NTIsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoc3RydWN0DQo+ IHhjX3NyX2NvbnRleHQgKmN0eCwNCj4gICAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGN0eC0+eGNo Ow0KPiAgICAgIGNoYXIgKm5ld19zdHIgPSBOVUxMOw0KPiANCj4gLSAgICBpZiAoIGFzcHJpbnRm KCZuZXdfc3RyLCAiRnJhbWVzIGl0ZXJhdGlvbiAldSBvZiAldSIsDQo+IC0gICAgICAgICAgICAg ICAgICBpdGVyLCBjdHgtPnNhdmUubWF4X2l0ZXJhdGlvbnMpID09IC0xICkNCj4gKyAgICBpZiAo IGFzcHJpbnRmKCZuZXdfc3RyLCAiRnJhbWVzIGl0ZXJhdGlvbiAldSIsIGl0ZXIpID09IC0xICkN Cj4gICAgICB7DQo+ICAgICAgICAgIFBFUlJPUigiVW5hYmxlIHRvIGFsbG9jYXRlIG5ldyBwcm9n cmVzcyBzdHJpbmciKTsNCj4gICAgICAgICAgcmV0dXJuIC0xOw0KPiBAQCAtNDY3LDYgKzQ2Niwy NCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoc3RydWN0DQo+IHhjX3NyX2Nv bnRleHQgKmN0eCwNCj4gIH0NCj4gDQo+ICAvKg0KPiArICogVGhpcyBpcyB0aGUgbGl2ZSBtaWdy YXRpb24gcHJlY29weSBwb2xpY3kgLSBpdCdzIGNhbGxlZCBwZXJpb2RpY2FsbHkgZHVyaW5nDQo+ ICsgKiB0aGUgcHJlY29weSBwaGFzZSBvZiBsaXZlIG1pZ3JhdGlvbnMsIGFuZCBpcyByZXNwb25z aWJsZSBmb3IgZGVjaWRpbmcNCj4gd2hlbg0KPiArICogdGhlIHByZWNvcHkgcGhhc2Ugc2hvdWxk IHRlcm1pbmF0ZSBhbmQgd2hhdCBzaG91bGQgYmUgZG9uZSBuZXh0Lg0KPiArICoNCj4gKyAqIFRo ZSBwb2xpY3kgaW1wbGVtZW50ZWQgaGVyZSBiZWhhdmVzIGlkZW50aWNhbGx5IHRvIHRoZSBwb2xp Y3kgcHJldmlvdXNseQ0KPiArICogaGFyZC1jb2RlZCBpbnRvIHhjX2RvbWFpbl9zYXZlKCkgLSBp dCBwcm9jZWVkcyB0byB0aGUgc3RvcC1hbmQtY29weQ0KPiBwaGFzZSBvZg0KPiArICogdGhlIGxp dmUgbWlncmF0aW9uIHdoZW4gdGhlcmUgYXJlIGVpdGhlciBmZXdlciB0aGFuIDUwIGRpcnR5IHBh Z2VzLCBvcg0KPiBtb3JlDQo+ICsgKiB0aGFuIDUgcHJlY29weSByb3VuZHMgaGF2ZSBjb21wbGV0 ZWQuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgc2ltcGxlX3ByZWNvcHlfcG9saWN5KHN0cnVjdCBw cmVjb3B5X3N0YXRzIHN0YXRzLCB2b2lkICp1c2VyKQ0KPiArew0KPiArICAgIHJldHVybiAoKHN0 YXRzLmRpcnR5X2NvdW50ID49IDAgJiYgc3RhdHMuZGlydHlfY291bnQgPCA1MCkgfHwNCj4gKyAg ICAgICAgICAgIHN0YXRzLml0ZXJhdGlvbiA+PSA1KQ0KPiArICAgICAgICA/IFhHU19QT0xJQ1lf U1RPUF9BTkRfQ09QWQ0KPiArICAgICAgICA6IFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09QWTsN Cj4gK30NCj4gKw0KPiArLyoNCj4gICAqIFNlbmQgbWVtb3J5IHdoaWxlIGd1ZXN0IGlzIHJ1bm5p bmcuDQo+ICAgKi8NCj4gIHN0YXRpYyBpbnQgc2VuZF9tZW1vcnlfbGl2ZShzdHJ1Y3QgeGNfc3Jf Y29udGV4dCAqY3R4KQ0KPiBAQCAtNDc0LDIxICs0OTEsNTggQEAgc3RhdGljIGludCBzZW5kX21l bW9yeV9saXZlKHN0cnVjdCB4Y19zcl9jb250ZXh0DQo+ICpjdHgpDQo+ICAgICAgeGNfaW50ZXJm YWNlICp4Y2ggPSBjdHgtPnhjaDsNCj4gICAgICB4Y19zaGFkb3dfb3Bfc3RhdHNfdCBzdGF0cyA9 IHsgMCwgY3R4LT5zYXZlLnAybV9zaXplIH07DQo+ICAgICAgY2hhciAqcHJvZ3Jlc3Nfc3RyID0g TlVMTDsNCj4gLSAgICB1bnNpZ25lZCB4Ow0KPiArICAgIHVuc2lnbmVkIGludCB4ID0gMDsNCj4g ICAgICBpbnQgcmM7DQo+ICsgICAgaW50IHBvbGljeV9kZWNpc2lvbjsNCj4gKw0KPiArICAgIERF Q0xBUkVfSFlQRVJDQUxMX0JVRkZFUl9TSEFET1codW5zaWduZWQgbG9uZywgZGlydHlfYml0bWFw LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+c2F2ZS5kaXJ0 eV9iaXRtYXBfaGJ1Zik7DQo+ICsNCj4gKyAgICBwcmVjb3B5X3BvbGljeV90IHByZWNvcHlfcG9s aWN5ID0gY3R4LT5zYXZlLmNhbGxiYWNrcy0+cHJlY29weV9wb2xpY3k7DQo+ICsgICAgdm9pZCAq ZGF0YSA9IGN0eC0+c2F2ZS5jYWxsYmFja3MtPmRhdGE7DQo+ICsNCj4gKyAgICBzdHJ1Y3QgcHJl Y29weV9zdGF0cyAqcG9saWN5X3N0YXRzOw0KPiANCj4gICAgICByYyA9IHVwZGF0ZV9wcm9ncmVz c19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLCAwKTsNCj4gICAgICBpZiAoIHJjICkNCj4gICAg ICAgICAgZ290byBvdXQ7DQo+IA0KPiAtICAgIHJjID0gc2VuZF9hbGxfcGFnZXMoY3R4KTsNCj4g LSAgICBpZiAoIHJjICkNCj4gLSAgICAgICAgZ290byBvdXQ7DQo+ICsgICAgY3R4LT5zYXZlLnN0 YXRzID0gKHN0cnVjdCBwcmVjb3B5X3N0YXRzKQ0KPiArICAgICAgICB7IC5kaXJ0eV9jb3VudCAg ID0gY3R4LT5zYXZlLnAybV9zaXplIH07DQo+ICsgICAgcG9saWN5X3N0YXRzID0gJmN0eC0+c2F2 ZS5zdGF0czsNCj4gKw0KPiArICAgIGlmICggcHJlY29weV9wb2xpY3kgPT0gTlVMTCApDQo+ICsg ICAgICAgICBwcmVjb3B5X3BvbGljeSA9IHNpbXBsZV9wcmVjb3B5X3BvbGljeTsNCj4gKw0KPiAr ICAgIGJpdG1hcF9zZXQoZGlydHlfYml0bWFwLCBjdHgtPnNhdmUucDJtX3NpemUpOw0KPiArDQo+ ICsgICAgZG8gew0KPiArICAgICAgICBwb2xpY3lfZGVjaXNpb24gPSBwcmVjb3B5X3BvbGljeSgq cG9saWN5X3N0YXRzLCBkYXRhKTsNCj4gKyAgICAgICAgeCsrOw0KPiArDQo+ICsgICAgICAgIGlm ICggc3RhdHMuZGlydHlfY291bnQgPiAwICYmIHBvbGljeV9kZWNpc2lvbiAhPSBYR1NfUE9MSUNZ X0FCT1JUICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgcmMgPSB1cGRhdGVfcHJvZ3Jl c3Nfc3RyaW5nKGN0eCwgJnByb2dyZXNzX3N0ciwgeCk7DQo+ICsgICAgICAgICAgICBpZiAoIHJj ICkNCj4gKyAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKw0KPiArICAgICAgICAgICAgcmMg PSBzZW5kX2RpcnR5X3BhZ2VzKGN0eCwgc3RhdHMuZGlydHlfY291bnQpOw0KPiArICAgICAgICAg ICAgaWYgKCByYyApDQo+ICsgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ICsgICAgICAgIH0N Cj4gKw0KPiArICAgICAgICBpZiAoIHBvbGljeV9kZWNpc2lvbiAhPSBYR1NfUE9MSUNZX0NPTlRJ TlVFX1BSRUNPUFkgKQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgcG9s aWN5X3N0YXRzLT5pdGVyYXRpb24gICAgID0geDsNCj4gKyAgICAgICAgcG9saWN5X3N0YXRzLT50 b3RhbF93cml0dGVuICs9IHBvbGljeV9zdGF0cy0+ZGlydHlfY291bnQ7DQo+ICsgICAgICAgIHBv bGljeV9zdGF0cy0+ZGlydHlfY291bnQgICA9IC0xOw0KPiArDQo+ICsgICAgICAgIHBvbGljeV9k ZWNpc2lvbiA9IHByZWNvcHlfcG9saWN5KCpwb2xpY3lfc3RhdHMsIGRhdGEpOw0KPiArDQo+ICsg ICAgICAgIGlmICggcG9saWN5X2RlY2lzaW9uICE9IFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09Q WSApDQo+ICsgICAgICAgICAgIGJyZWFrOw0KPiANCj4gLSAgICBmb3IgKCB4ID0gMTsNCj4gLSAg ICAgICAgICAoKHggPCBjdHgtPnNhdmUubWF4X2l0ZXJhdGlvbnMpICYmDQo+IC0gICAgICAgICAg IChzdGF0cy5kaXJ0eV9jb3VudCA+IGN0eC0+c2F2ZS5kaXJ0eV90aHJlc2hvbGQpKTsgKyt4ICkN Cj4gLSAgICB7DQo+ICAgICAgICAgIGlmICggeGNfc2hhZG93X2NvbnRyb2woDQo+ICAgICAgICAg ICAgICAgICAgIHhjaCwgY3R4LT5kb21pZCwgWEVOX0RPTUNUTF9TSEFET1dfT1BfQ0xFQU4sDQo+ ICAgICAgICAgICAgICAgICAgICZjdHgtPnNhdmUuZGlydHlfYml0bWFwX2hidWYsIGN0eC0+c2F2 ZS5wMm1fc2l6ZSwNCj4gQEAgLTQ5OSwxNyArNTUzLDkgQEAgc3RhdGljIGludCBzZW5kX21lbW9y eV9saXZlKHN0cnVjdCB4Y19zcl9jb250ZXh0DQo+ICpjdHgpDQo+ICAgICAgICAgICAgICBnb3Rv IG91dDsNCj4gICAgICAgICAgfQ0KPiANCj4gLSAgICAgICAgaWYgKCBzdGF0cy5kaXJ0eV9jb3Vu dCA9PSAwICkNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBwb2xpY3lfc3RhdHMt PmRpcnR5X2NvdW50ID0gc3RhdHMuZGlydHlfY291bnQ7DQo+IA0KPiAtICAgICAgICByYyA9IHVw ZGF0ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLCB4KTsNCj4gLSAgICAgICAg aWYgKCByYyApDQo+IC0gICAgICAgICAgICBnb3RvIG91dDsNCj4gLQ0KPiAtICAgICAgICByYyA9 IHNlbmRfZGlydHlfcGFnZXMoY3R4LCBzdGF0cy5kaXJ0eV9jb3VudCk7DQo+IC0gICAgICAgIGlm ICggcmMgKQ0KPiAtICAgICAgICAgICAgZ290byBvdXQ7DQo+IC0gICAgfQ0KPiArICAgIH0gd2hp bGUgKCB0cnVlICk7DQoNCkknbSBzdXJlIGFueSBjb21waWxlciB3b3J0aCBpdHMgc2FsdCB3aWxs IG9wdGltaXNlIHRvIGFuIHVuY29uZGl0aW9uYWwganVtcCwgYnV0IEkgdGVuZCB0byBwcmVmZXIg dXNpbmcgZm9yICg7OykgZm9yIGluZmluaXRlIGxvb3BzLiBEb2Vzbid0IHJlYWxseSBtYXR0ZXIg c28uLi4NCg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5j b20+DQoNCj4gDQo+ICAgb3V0Og0KPiAgICAgIHhjX3NldF9wcm9ncmVzc19wcmVmaXgoeGNoLCBO VUxMKTsNCj4gQEAgLTYwMSw3ICs2NDcsNyBAQCBzdGF0aWMgaW50IHN1c3BlbmRfYW5kX3NlbmRf ZGlydHkoc3RydWN0DQo+IHhjX3NyX2NvbnRleHQgKmN0eCkNCj4gICAgICBpZiAoIGN0eC0+c2F2 ZS5saXZlICkNCj4gICAgICB7DQo+ICAgICAgICAgIHJjID0gdXBkYXRlX3Byb2dyZXNzX3N0cmlu ZyhjdHgsICZwcm9ncmVzc19zdHIsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjdHgtPnNhdmUubWF4X2l0ZXJhdGlvbnMpOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3R4LT5zYXZlLnN0YXRzLml0ZXJhdGlvbik7DQo+ICAgICAgICAgIGlm ICggcmMgKQ0KPiAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ICAgICAgfQ0KPiBAQCAtOTM3LDE1 ICs5ODMsNiBAQCBpbnQgeGNfZG9tYWluX3NhdmUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBpb19m ZCwNCj4gdWludDMyX3QgZG9tLA0KPiAgICAgICAgICAgICBzdHJlYW1fdHlwZSA9PSBYQ19NSUdf U1RSRUFNX1JFTVVTIHx8DQo+ICAgICAgICAgICAgIHN0cmVhbV90eXBlID09IFhDX01JR19TVFJF QU1fQ09MTyk7DQo+IA0KPiAtICAgIC8qDQo+IC0gICAgICogVE9ETzogRmluZCBzb21lIHRpbWUg dG8gYmV0dGVyIHR3ZWFrIHRoZSBsaXZlIG1pZ3JhdGlvbiBhbGdvcml0aG0uDQo+IC0gICAgICoN Cj4gLSAgICAgKiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBiZXR0ZXIgdGhhbiB0aGUgbGVnYWN5IGFs Z29yaXRobSBlc3BlY2lhbGx5IGZvcg0KPiAtICAgICAqIGJ1c3kgZ3Vlc3RzLg0KPiAtICAgICAq Lw0KPiAtICAgIGN0eC5zYXZlLm1heF9pdGVyYXRpb25zID0gNTsNCj4gLSAgICBjdHguc2F2ZS5k aXJ0eV90aHJlc2hvbGQgPSA1MDsNCj4gLQ0KPiAgICAgIC8qIFNhbml0eSBjaGVja3MgZm9yIGNh bGxiYWNrcy4gKi8NCj4gICAgICBpZiAoIGh2bSApDQo+ICAgICAgICAgIGFzc2VydChjYWxsYmFj a3MtPnN3aXRjaF9xZW11X2xvZ2RpcnR5KTsNCj4gLS0NCj4gMS44LjMuMQ0KPiANCj4gDQo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFhlbi1kZXZl bCBtYWlsaW5nIGxpc3QNCj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcNCj4gaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==