From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jennifer Herbert Subject: Re: [PATCH v2 2/3] Introduce migration precopy policy Date: Wed, 20 Sep 2017 17:18:16 +0100 Message-ID: <59C294C8.2040904@citrix.com> References: <1505844387-2224-1-git-send-email-Jennifer.Herbert@citrix.com> <1505844387-2224-3-git-send-email-Jennifer.Herbert@citrix.com> <20170920102039.jugpztoecfp72lju@dhcp-3-128.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1duhhf-0004Qt-JA for xen-devel@lists.xenproject.org; Wed, 20 Sep 2017 16:18:23 +0000 In-Reply-To: <20170920102039.jugpztoecfp72lju@dhcp-3-128.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Cc: Wei Liu , Ian Jackson , jtotto@uwaterloo.ca, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gMjAvMDkvMTcgMTE6MjAsIFJvZ2VyIFBhdSBNb25uw6kgd3JvdGU6Cj4gT24gVHVlLCBTZXAg MTksIDIwMTcgYXQgMDc6MDY6MjZQTSArMDEwMCwgSmVubmlmZXIgSGVyYmVydCB3cm90ZToKPj4g VGhpcyBQYXRjaCBhbGxvd3MgYSBtaWdyYXRpb24gcHJlY29weSBwb2xpY3kgdG8gYmUgc3BlY2lm aWVkLgo+Pgo+PiBUaGUgcHJlY29weSBwaGFzZSBvZiB0aGUgeGNfZG9tYWluX3NhdmUoKSBsaXZl IG1pZ3JhdGlvbiBhbGdvcml0aG0gaGFzCj4+IGhpc3RvcmljYWxseSBiZWVuIGltcGxlbWVudGVk IHRvIHJ1biB1bnRpbCBlaXRoZXIgYSkgKGFsbW9zdCkgbm8gcGFnZXMKPj4gYXJlIGRpcnR5IG9y IGIpIHNvbWUgZml4ZWQsIGhhcmQtY29kZWQgbWF4aW11bSBudW1iZXIgb2YgcHJlY29weQo+PiBp dGVyYXRpb25zIGhhcyBiZWVuIGV4Y2VlZGVkLiAgVGhpcyBwb2xpY3kgYW5kIGl0cyBpbXBsZW1l bnRhdGlvbiBhcmUKPj4gbGVzcyB0aGFuIGlkZWFsIGZvciBhIGZldyByZWFzb25zOgo+PiAtIHRo ZSBsb2dpYyBvZiB0aGUgcG9saWN5IGlzIGludGVydHdpbmVkIHdpdGggdGhlIGNvbnRyb2wgZmxv dyBvZiB0aGUKPj4gICAgbWVjaGFuaXNtIG9mIHRoZSBwcmVjb3B5IHN0YWdlCj4+IC0gaXQgY2Fu J3QgdGFrZSBpbnRvIGFjY291bnQgZmFjdHMgZXh0ZXJuYWwgdG8gdGhlIGltbWVkaWF0ZQo+PiAg ICBtaWdyYXRpb24gY29udGV4dCwgc3VjaCBleHRlcm5hbCBzdGF0ZSB0cmFuc2ZlciBzdGF0ZSwg aW50ZXJhY3RpdmUKPj4gICAgdXNlciBpbnB1dCwgb3IgdGhlIHBhc3NhZ2Ugb2Ygd2FsbC1jbG9j ayB0aW1lLgo+PiAtIGl0IGRvZXMgbm90IHBlcm1pdCB0aGUgdXNlciB0byBjaGFuZ2UgdGhlaXIg bWluZCwgb3ZlciB0aW1lLCBhYm91dAo+PiAgICB3aGF0IHRvIGRvIGF0IHRoZSBlbmQgb2YgdGhl IHByZWNvcHkgKHRoZXkgZ2V0IGFuIHVuY29uZGl0aW9uYWwKPj4gICAgdHJhbnNpdGlvbiBpbnRv IHRoZSBzdG9wLWFuZC1jb3B5IHBoYXNlIG9mIHRoZSBtaWdyYXRpb24pCj4+Cj4+IFRvIHBlcm1p dCBjYWxsZXJzIHRvIGltcGxlbWVudCBhcmJpdHJhcnkgaGlnaGVyLWxldmVsIHBvbGljaWVzIGdv dmVybmluZwo+PiB3aGVuIHRoZSBsaXZlIG1pZ3JhdGlvbiBwcmVjb3B5IHBoYXNlIHNob3VsZCBl bmQsIGFuZCB3aGF0IHNob3VsZCBiZQo+PiBkb25lIG5leHQ6Cj4+IC0gYWRkIGEgcHJlY29weV9w b2xpY3koKSBjYWxsYmFjayB0byB0aGUgeGNfZG9tYWluX3NhdmUoKSB1c2VyLXN1cHBsaWVkCj4+ ICAgIGNhbGxiYWNrcwo+PiAtIGR1cmluZyB0aGUgcHJlY29weSBwaGFzZSBvZiBsaXZlIG1pZ3Jh dGlvbnMsIGNvbnN1bHQgdGhpcyBwb2xpY3kgYWZ0ZXIKPj4gICAgZWFjaCBiYXRjaCBvZiBwYWdl cyB0cmFuc21pdHRlZCBhbmQgdGFrZSB0aGUgZGljdGF0ZWQgYWN0aW9uLCB3aGljaAo+PiAgICBt YXkgYmUgdG8gYSkgYWJvcnQgdGhlIG1pZ3JhdGlvbiBlbnRpcmVseSwgYikgY29udGludWUgd2l0 aCB0aGUKPj4gICAgcHJlY29weSwgb3IgYykgcHJvY2VlZCB0byB0aGUgc3RvcC1hbmQtY29weSBw aGFzZS4KPj4gLSBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvbGQgcG9saWN5LCB1 c2VkIHdoZW4KPj4gICAgcHJlY29weV9wb2xpY3kgY2FsbGJhY2sgIGlzIG5vdCBwcm92aWRlZC4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogSmVubmlmZXIgSGVyYmVydCA8SmVubmlmZXIuSGVyYmVydEBj aXRyaXguY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBKb3NodWEgT3R0byA8anRvdHRvQHV3YXRlcmxv by5jYT4KPj4KPj4gLS0tCj4+Cj4+IHYyOgo+Pgo+PiBIYXZlIG1hZGUgYSBmZXcgZm9ybWF0dGlu ZyBjb3JyZWN0aW9ucywgYWRkZWQgdHlwZWRlZiBhcyBzdWdnZXN0ZWQuCj4+Cj4+IHYxOgo+Pgo+ PiBUaGlzIGlzIHVwZGF0ZWQvbW9kaWZpZWQgc3Vic2V0IG9mIHBhdGNoIDcvMjAsIHBhcnQgb2YK Pj4gSm9zaHVhIE90dG8ncyAiQWRkIHBvc3Rjb3B5IGxpdmUgbWlncmF0aW9uIHN1cHBvcnQuIiBw YXRjaCwKPj4gZGF0ZWQgMjd0aCBNYXJjaCAyMDE3LiAgQXMgaW5kaWNhdGVkIG9uIHRoZSBvcmln aW5hbCB0aHJlYWQsCj4+IEkgd2lzaCB0byBtYWtlIHVzZSBvZiB0aGlzIHRoaXMgd2l0aGluIHRo ZSBYZW5TZXJ2ZXIgcHJvZHVjdC4KPj4gSSBob3BlIHRoaXMgd2lsbCBhaWQgSm9zaCBpbiBwdXNo aW5nIHRoZSByZW1haW5kZXIgb2YgaGlzIHNlcmllcy4KPj4KPj4gLS0tCj4+ICAgdG9vbHMvbGli eGMvaW5jbHVkZS94ZW5ndWVzdC5oIHwgMzEgKysrKysrKysrKysrLS0KPj4gICB0b29scy9saWJ4 Yy94Y19zcl9jb21tb24uaCAgICAgfCAgNiArLS0KPj4gICB0b29scy9saWJ4Yy94Y19zcl9zYXZl LmMgICAgICAgfCA5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0K Pj4gICAzIGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQo+ Pgo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oIGIvdG9vbHMv bGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oCj4+IGluZGV4IDY2MjZmMGMuLmEyYTY1NGMgMTAwNjQ0 Cj4+IC0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaAo+PiArKysgYi90b29scy9s aWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKPj4gQEAgLTM5LDYgKzM5LDE2IEBACj4+ICAgICovCj4+ ICAgc3RydWN0IHhlbmV2dGNobl9oYW5kbGU7Cj4+ICAgCj4+ICsvKiBGb3Igc2F2ZSdzIHByZWNv cHlfcG9saWN5KCkuICovCj4+ICtzdHJ1Y3QgcHJlY29weV9zdGF0cwo+PiArewo+PiArICAgIHVu c2lnbmVkIGludCBpdGVyYXRpb247Cj4+ICsgICAgdW5zaWduZWQgaW50IHRvdGFsX3dyaXR0ZW47 Cj4+ICsgICAgbG9uZyBkaXJ0eV9jb3VudDsgLyogLTEgaWYgdW5rbm93biAqLwo+PiArfTsKPj4g Kwo+PiArdHlwZWRlZiBpbnQgKCpwcmVjb3B5X3BvbGljeV90KShzdHJ1Y3QgcHJlY29weV9zdGF0 cywgdm9pZCAqKTsKPiBTaG91bGRuJ3QgcHJlY29weV9zdGF0cyBiZSBhIHBvaW50ZXIgKGNvbnN0 IHBvaW50ZXIgcHJvYmFibHkgc2VlaW5nCj4gaXQncyB1c2FnZSk/CgpJbiBBcHJpbCBKb3NodWEg ZGVzY3JpYmVkIGhvdyBoZSBkaWQgaXQgbGlrZSB0aGlzIHRvIGhlbHAgd2l0aCBJUEMgCnBsdW1i aW5nIGludG8gbGlieGwuCklhbiBKYWNrc29uIGV4cGxhaW5lZCB0aGF0IHlvdSBjYW4ndCBwYXNz IGEgcG9pbnRlciBhY3Jvc3MgdGhlIElQQyAKYm91bmRhcnkuIFRoZSB0d28KYml0cyBvZiBjb2Rl IHJ1biBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLCB3aXRoIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNl cy4KClNpbmNlIHRoZSBwcmVjb3B5X3N0YXRzIHN0cnVjdHVyZSBpcyB0aW55LCBpdCB3YXMgY29u Y2x1ZGVkIGl0IHdvdWxkIApoYXZlIHZlcnkgc21hbGwgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLgpJ J2QgYWxzbyBhZ3JlZSBzaW5jZSBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgd291bGQgYWxt b3N0IGhhbGYgYXMgCmJpZyBhdCB0aGUgc3RydWN0dXJlIGl0c2VsZi4KCgpJIHRoaW5rIEknbGwg YWRkIGEgY29tbWVudCBhYm92ZSB0aGUgbGluZSB0byBleHBsYWluIHRoZSBkZWNpc2lvbi4KCj4+ ICsKPj4gICAvKiBjYWxsYmFja3MgcHJvdmlkZWQgYnkgeGNfZG9tYWluX3NhdmUgKi8KPj4gICBz dHJ1Y3Qgc2F2ZV9jYWxsYmFja3Mgewo+PiAgICAgICAvKiBDYWxsZWQgYWZ0ZXIgZXhwaXJhdGlv biBvZiBjaGVja3BvaW50IGludGVydmFsLAo+PiBAQCAtNDYsNyArNTYsMjAgQEAgc3RydWN0IHNh dmVfY2FsbGJhY2tzIHsKPj4gICAgICAgICovCj4+ICAgICAgIGludCAoKnN1c3BlbmQpKHZvaWQq IGRhdGEpOwo+PiAgIAo+PiAtICAgIC8qIENhbGxlZCBhZnRlciB0aGUgZ3Vlc3QncyBkaXJ0eSBw YWdlcyBoYXZlIGJlZW4KPj4gKyAgICAvKgo+PiArICAgICAqIENhbGxlZCBhZnRlciBldmVyeSBi YXRjaCBvZiBwYWdlIGRhdGEgc2VudCBkdXJpbmcgdGhlIHByZWNvcHkKPj4gKyAgICAgKiBwaGFz ZSBvZiBhIGxpdmUgbWlncmF0aW9uIHRvIGFzayB0aGUgY2FsbGVyIHdoYXQgdG8gZG8gbmV4dAo+ PiArICAgICAqIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwcmVjb3B5IG1pZ3Jh dGlvbi4KPiBJIHdvdWxkIGFkZDoKPgo+ICJTaG91bGQgcmV0dXJuIG9uZSBvZiB0aGUgdmFsdWVz IGxpc3RlZCBiZWxvdzoiCj4KPj4gKyAgICAgKi8KPj4gKyNkZWZpbmUgWEdTX1BPTElDWV9BQk9S VCAgICAgICAgICAoLTEpIC8qIEFiYW5kb24gdGhlIG1pZ3JhdGlvbiBlbnRpcmVseQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIHRpZHkgdXAuICovCj4+ ICsjZGVmaW5lIFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09QWSAwICAvKiBSZW1haW4gaW4gdGhl IHByZWNvcHkgcGhhc2UuICovCj4+ICsjZGVmaW5lIFhHU19QT0xJQ1lfU1RPUF9BTkRfQ09QWSAg ICAxICAvKiBJbW1lZGlhdGVseSBzdXNwZW5kIGFuZCB0cmFuc21pdCB0aGUKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlbWFpbmluZyBkaXJ0eSBwYWdlcy4g Ki8KPj4gKyAgICBwcmVjb3B5X3BvbGljeV90IHByZWNvcHlfcG9saWN5Owo+PiArCj4+ICsgICAg LyoKPj4gKyAgICAgKiBDYWxsZWQgYWZ0ZXIgdGhlIGd1ZXN0J3MgZGlydHkgcGFnZXMgaGF2ZSBi ZWVuCj4+ICAgICAgICAqICBjb3BpZWQgaW50byBhbiBvdXRwdXQgYnVmZmVyLgo+PiAgICAgICAg KiBDYWxsYmFjayBmdW5jdGlvbiByZXN1bWVzIHRoZSBndWVzdCAmIHRoZSBkZXZpY2UgbW9kZWws Cj4+ICAgICAgICAqICByZXR1cm5zIHRvIHhjX2RvbWFpbl9zYXZlLgo+PiBAQCAtNTUsNyArNzgs OCBAQCBzdHJ1Y3Qgc2F2ZV9jYWxsYmFja3Mgewo+PiAgICAgICAgKi8KPj4gICAgICAgaW50ICgq cG9zdGNvcHkpKHZvaWQqIGRhdGEpOwo+PiAgIAo+PiAtICAgIC8qIENhbGxlZCBhZnRlciB0aGUg bWVtb3J5IGNoZWNrcG9pbnQgaGFzIGJlZW4gZmx1c2hlZAo+PiArICAgIC8qCj4+ICsgICAgICog Q2FsbGVkIGFmdGVyIHRoZSBtZW1vcnkgY2hlY2twb2ludCBoYXMgYmVlbiBmbHVzaGVkCj4+ICAg ICAgICAqIG91dCBpbnRvIHRoZSBuZXR3b3JrLiBUeXBpY2FsIGFjdGlvbnMgcGVyZm9ybWVkIGlu IHRoaXMKPj4gICAgICAgICogY2FsbGJhY2sgaW5jbHVkZToKPj4gICAgICAgICogICAoYSkgc2Vu ZCB0aGUgc2F2ZWQgZGV2aWNlIG1vZGVsIHN0YXRlIChmb3IgSFZNIGd1ZXN0cyksCj4+IEBAIC02 NSw3ICs4OSw4IEBAIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyB7Cj4+ICAgICAgICAqCj4+ICAgICAg ICAqIHJldHVybnM6Cj4+ICAgICAgICAqIDA6IHRlcm1pbmF0ZSBjaGVja3BvaW50aW5nIGdyYWNl ZnVsbHkKPj4gLSAgICAgKiAxOiB0YWtlIGFub3RoZXIgY2hlY2twb2ludCAqLwo+PiArICAgICAq IDE6IHRha2UgYW5vdGhlciBjaGVja3BvaW50Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4gdHJhaWxpbmcgc3BhY2UKPj4gKyAgICAgKi8KPj4gICAgICAgaW50ICgqY2hl Y2twb2ludCkodm9pZCogZGF0YSk7Cj4+ICAgCj4+ICAgICAgIC8qCj4+IGRpZmYgLS1naXQgYS90 b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCj4+ IGluZGV4IGE4M2YyMmEuLjM2MzU3MDQgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Ny X2NvbW1vbi5oCj4+ICsrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCj4+IEBAIC0xOTgs MTIgKzE5OCwxMCBAQCBzdHJ1Y3QgeGNfc3JfY29udGV4dAo+PiAgICAgICAgICAgICAgIC8qIEZ1 cnRoZXIgZGVidWdnaW5nIGluZm9ybWF0aW9uIGluIHRoZSBzdHJlYW0uICovCj4+ICAgICAgICAg ICAgICAgYm9vbCBkZWJ1ZzsKPj4gICAKPj4gLSAgICAgICAgICAgIC8qIFBhcmFtZXRlcnMgZm9y IHR3ZWFraW5nIGxpdmUgbWlncmF0aW9uLiAqLwo+PiAtICAgICAgICAgICAgdW5zaWduZWQgbWF4 X2l0ZXJhdGlvbnM7Cj4+IC0gICAgICAgICAgICB1bnNpZ25lZCBkaXJ0eV90aHJlc2hvbGQ7Cj4+ IC0KPj4gICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHAybV9zaXplOwo+PiAgIAo+PiArICAg ICAgICAgICAgc3RydWN0IHByZWNvcHlfc3RhdHMgc3RhdHM7Cj4+ICsKPj4gICAgICAgICAgICAg ICB4ZW5fcGZuX3QgKmJhdGNoX3BmbnM7Cj4+ICAgICAgICAgICAgICAgdW5zaWduZWQgbnJfYmF0 Y2hfcGZuczsKPj4gICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpkZWZlcnJlZF9wYWdlczsK Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYyBiL3Rvb2xzL2xpYnhjL3hj X3NyX3NhdmUuYwo+PiBpbmRleCAxZTc1MDJkLi5mNThjMDA4IDEwMDY0NAo+PiAtLS0gYS90b29s cy9saWJ4Yy94Y19zcl9zYXZlLmMKPj4gKysrIGIvdG9vbHMvbGlieGMveGNfc3Jfc2F2ZS5jCj4+ IEBAIC00NTIsOCArNDUyLDcgQEAgc3RhdGljIGludCB1cGRhdGVfcHJvZ3Jlc3Nfc3RyaW5nKHN0 cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsCj4+ICAgICAgIHhjX2ludGVyZmFjZSAqeGNoID0gY3R4 LT54Y2g7Cj4+ICAgICAgIGNoYXIgKm5ld19zdHIgPSBOVUxMOwo+PiAgIAo+PiAtICAgIGlmICgg YXNwcmludGYoJm5ld19zdHIsICJGcmFtZXMgaXRlcmF0aW9uICV1IG9mICV1IiwKPj4gLSAgICAg ICAgICAgICAgICAgIGl0ZXIsIGN0eC0+c2F2ZS5tYXhfaXRlcmF0aW9ucykgPT0gLTEgKQo+PiAr ICAgIGlmICggYXNwcmludGYoJm5ld19zdHIsICJGcmFtZXMgaXRlcmF0aW9uICV1IiwgaXRlcikg PT0gLTEgKQo+IFdoeSB5b3Ugc3RpbGwgbmVlZCBpdGVyIGhlcmU/IFlvdSBjb3VsZCBlYXNpbHkg ZmV0Y2ggaXQgZnJvbQo+IGN0eC0+c2F2ZS5zdGF0cy5pdGVyYXRpb24KCkdvb2Qgc3BvdCAtIHdp bGwgcmVtb3ZlLgoKPj4gICAgICAgewo+PiAgICAgICAgICAgUEVSUk9SKCJVbmFibGUgdG8gYWxs b2NhdGUgbmV3IHByb2dyZXNzIHN0cmluZyIpOwo+PiAgICAgICAgICAgcmV0dXJuIC0xOwo+PiBA QCAtNDY3LDYgKzQ2NiwyNCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoc3Ry dWN0IHhjX3NyX2NvbnRleHQgKmN0eCwKPj4gICB9Cj4+ICAgCj4+ICAgLyoKPj4gKyAqIFRoaXMg aXMgdGhlIGxpdmUgbWlncmF0aW9uIHByZWNvcHkgcG9saWN5IC0gaXQncyBjYWxsZWQgcGVyaW9k aWNhbGx5IGR1cmluZwo+PiArICogdGhlIHByZWNvcHkgcGhhc2Ugb2YgbGl2ZSBtaWdyYXRpb25z LCBhbmQgaXMgcmVzcG9uc2libGUgZm9yIGRlY2lkaW5nIHdoZW4KPj4gKyAqIHRoZSBwcmVjb3B5 IHBoYXNlIHNob3VsZCB0ZXJtaW5hdGUgYW5kIHdoYXQgc2hvdWxkIGJlIGRvbmUgbmV4dC4KPj4g KyAqCj4+ICsgKiBUaGUgcG9saWN5IGltcGxlbWVudGVkIGhlcmUgYmVoYXZlcyBpZGVudGljYWxs eSB0byB0aGUgcG9saWN5IHByZXZpb3VzbHkKPj4gKyAqIGhhcmQtY29kZWQgaW50byB4Y19kb21h aW5fc2F2ZSgpIC0gaXQgcHJvY2VlZHMgdG8gdGhlIHN0b3AtYW5kLWNvcHkgcGhhc2Ugb2YKPj4g KyAqIHRoZSBsaXZlIG1pZ3JhdGlvbiB3aGVuIHRoZXJlIGFyZSBlaXRoZXIgZmV3ZXIgdGhhbiA1 MCBkaXJ0eSBwYWdlcywgb3IgbW9yZQo+PiArICogdGhhbiA1IHByZWNvcHkgcm91bmRzIGhhdmUg Y29tcGxldGVkLgo+PiArICovCj4+ICtzdGF0aWMgaW50IHNpbXBsZV9wcmVjb3B5X3BvbGljeShz dHJ1Y3QgcHJlY29weV9zdGF0cyBzdGF0cywgdm9pZCAqdXNlcikKPj4gK3sKPj4gKyAgICByZXR1 cm4gKChzdGF0cy5kaXJ0eV9jb3VudCA+PSAwICYmIHN0YXRzLmRpcnR5X2NvdW50IDwgNTApIHx8 Cj4+ICsgICAgICAgICAgICBzdGF0cy5pdGVyYXRpb24gPj0gNSkKPiBXaGlsZSBoZXJlLCBjb3Vs ZCB5b3UgbWFrZSB0aG9zZSB2YWx1ZXMgZGVmaW5lcz8KCnN1cmUKCj4+ICsgICAgICAgID8gWEdT X1BPTElDWV9TVE9QX0FORF9DT1BZCj4+ICsgICAgICAgIDogWEdTX1BPTElDWV9DT05USU5VRV9Q UkVDT1BZOwo+PiArfQo+PiArCj4+ICsvKgo+PiAgICAqIFNlbmQgbWVtb3J5IHdoaWxlIGd1ZXN0 IGlzIHJ1bm5pbmcuCj4+ICAgICovCj4+ICAgc3RhdGljIGludCBzZW5kX21lbW9yeV9saXZlKHN0 cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4+IEBAIC00NzQsMjEgKzQ5MSw1OCBAQCBzdGF0aWMg aW50IHNlbmRfbWVtb3J5X2xpdmUoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKPj4gICAgICAg eGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKPj4gICAgICAgeGNfc2hhZG93X29wX3N0YXRz X3Qgc3RhdHMgPSB7IDAsIGN0eC0+c2F2ZS5wMm1fc2l6ZSB9Owo+PiAgICAgICBjaGFyICpwcm9n cmVzc19zdHIgPSBOVUxMOwo+PiAtICAgIHVuc2lnbmVkIHg7Cj4+ICsgICAgdW5zaWduZWQgaW50 IHggPSAwOwo+PiAgICAgICBpbnQgcmM7Cj4+ICsgICAgaW50IHBvbGljeV9kZWNpc2lvbjsKPj4g Kwo+PiArICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUl9TSEFET1codW5zaWduZWQgbG9uZywg ZGlydHlfYml0bWFwLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0 eC0+c2F2ZS5kaXJ0eV9iaXRtYXBfaGJ1Zik7Cj4+ICsKPj4gKyAgICBwcmVjb3B5X3BvbGljeV90 IHByZWNvcHlfcG9saWN5ID0gY3R4LT5zYXZlLmNhbGxiYWNrcy0+cHJlY29weV9wb2xpY3k7Cj4+ ICsgICAgdm9pZCAqZGF0YSA9IGN0eC0+c2F2ZS5jYWxsYmFja3MtPmRhdGE7Cj4+ICsKPj4gKyAg ICBzdHJ1Y3QgcHJlY29weV9zdGF0cyAqcG9saWN5X3N0YXRzOwo+PiAgIAo+PiAgICAgICByYyA9 IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLCAwKTsKPj4gICAgICAg aWYgKCByYyApCj4+ICAgICAgICAgICBnb3RvIG91dDsKPj4gICAKPj4gLSAgICByYyA9IHNlbmRf YWxsX3BhZ2VzKGN0eCk7Cj4+IC0gICAgaWYgKCByYyApCj4+IC0gICAgICAgIGdvdG8gb3V0Owo+ PiArICAgIGN0eC0+c2F2ZS5zdGF0cyA9IChzdHJ1Y3QgcHJlY29weV9zdGF0cykKPj4gKyAgICAg ICAgeyAuZGlydHlfY291bnQgICA9IGN0eC0+c2F2ZS5wMm1fc2l6ZSB9Owo+IFRoaXMgaXMgZXhh Y3RseSB0aGUgc2FtZSBhcyAnc3RhdHMnIGF0IHRoaXMgcG9pbnQuIEknbSBzbGlnaHRseQo+IGNv bmZ1c2VkIGFib3V0IHdoeSB5b3UgbmVlZCAyIGRpZmZlcmVudCBzdGF0cyB2YXJpYWJsZSwgcGx1 cyBhIHBvaW50ZXIKPiB0byBhIHN0YXRzIHZhcmlhYmxlIChzdGF0cywgY3R4LT5zYXZlLnN0YXRz IGFuZCAqcG9saWN5X3N0YXRzKS4KClRoZXkgZG8gc3RhcnQgb2ZmIHNpbWlsYXIsIGFuZCBhcmUg Y2VydGFpbmx5IGNsb3NlbHkgcmVsYXRlZC4KeGNfc2hhZG93X29wX3N0YXRzX3Qgc3RhdHMgaGFz IGRpZmZlcmVudCBmaWVsZHMgaW4gaXQgdGhlbiBwcmVjb3B5X3N0YXRzIApwb2xpY3lfc3RhdHMu ClRoZSBmb3JtZXIgaGFzIGEgZmF1bHQgYW5kIGRpcnR5IGNvdW50LCBwZXIgaXRlcmF0aW9uLCB3 aGlsZSB0aGUgbGF0dGVyIGhhcwppdGVyYXRpb24gbnVtYmVyLCB0b3RhbF93cml0dGVuIChvdmVy IGFsbCBpdGVyYXRpb25zKSBhbmQgZGlydHkgY291bnQuCgoqcG9saWN5X3N0YXRzICBpcyBqdXN0 IGEgY29udmVuaWVuY2UgcG9pbnRlciwgcmVkdWNpbmcgdGhlIGFtb3VudCBvZiAKaW5kaXJlY3Rp b24gb24KZXZlcnkgYWNjZXNzLiAgSSB0aG91Z2ggdGhpcyBtYWRlIGl0IGVhc2llciB0byByZWFk LgoKPj4gKyAgICBwb2xpY3lfc3RhdHMgPSAmY3R4LT5zYXZlLnN0YXRzOwo+PiArCj4+ICsgICAg aWYgKCBwcmVjb3B5X3BvbGljeSA9PSBOVUxMICkKPj4gKyAgICAgICAgIHByZWNvcHlfcG9saWN5 ID0gc2ltcGxlX3ByZWNvcHlfcG9saWN5Owo+PiArCj4+ICsgICAgYml0bWFwX3NldChkaXJ0eV9i aXRtYXAsIGN0eC0+c2F2ZS5wMm1fc2l6ZSk7Cj4+ICsKPj4gKyAgICBkbyB7Cj4+ICsgICAgICAg IHBvbGljeV9kZWNpc2lvbiA9IHByZWNvcHlfcG9saWN5KCpwb2xpY3lfc3RhdHMsIGRhdGEpOwo+ IFRoZSBjb21tZW50IGF0IHRoZSB0b3Agc2F5czoKPgo+ICJDYWxsZWQgYWZ0ZXIgZXZlcnkgYmF0 Y2ggb2YgcGFnZSBkYXRhIHNlbnQgZHVyaW5nIHRoZSBwcmVjb3B5IHBoYXNlIgo+Cj4gWWV0IGhl cmUgdGhlIGhvb2sgc2VlbXMgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgcHJvY2Vzc2luZyBoYXMg YmVlbgo+IGRvbmUgZm9yIHRoZSBmaXJzdCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuCgpJJ2xsIGNo YW5nZSB0byAiQ2FsbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgZXZlcnkgYmF0Y2ggLi4uLiIKCj4+ICsg ICAgICAgIHgrKzsKPiBBbHNvIHVwZGF0aW5nIHggaGVyZSBzZWVtcyB3ZWlyZCwgd2UgY29tcGxl dGVseSBpZ25vcmUgaXRlcmF0aW9uIDAuCgpUaGUgbGluZSBhYm92ZSB0aGUgJ3grKycgY2hlY2tz IHRoZSBwb2xpY3kgdXNpbmcgJ2l0ZXJhdGlvbiAwJy4gIEluCnBhdGNoIHYxIEkgdXNlZCB0aGUg eCB2YXJpYWJsZSBpbiBpbml0aWFsaXNpbmcgdGhlIHN0YXRzLCB0byB0cnkgYW5kCnN1Z2dlc3Qg dGhpcywgYnV0IGFzIGl0cyB6ZXJvLCBhbmQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGEgc3RydWN0 IGlzCnplcm8sIGl0IHdhcyBjb25jbHVkZWQgdGhhdCB3YXMgdW5uZWNlc3NhcnkuICBJbiBhbnkg Y2FzZSwKbG9naWNhbGx5LCB0aGlzIGlzIHdoZXJlIGl0IG1vdmVzIGZyb20gb25lICdpdGVyYXRp b24nIHRvIGFub3RoZXIuClByZXZpb3VzbHkgdGhlcmUgd2FzIG5vIGl0ZXJhdGlvbiB6ZXJvLCBh cyBpdCBzdGFydGVkIG9uIHplcm8uCk5vdyBpdGVyYXRpb24gemVybyBpcyB0byBpbmRpY2F0ZSB0 aGUgc3RhcnRpbmcgc3RhdGUuCgpDb21iaW5pbmcgdGhpcyBjb21tZW50IHdpdGggUGF1bCdzLCBp dCBjb3VsZCB1c2U6CiAgICAgZm9yICh4ID0gMTsgOyArK3gpCklmIHRoaXMgaXMgdGhvdWdodCB0 byBiZSBtb3JlIHJlYWRhYmxlIC0gYWx0aG91Z2ggQW5kcmV3IGNvb3BlcgpkZXNjcmliZWQgYSBs b29wIGxvb2tpbmcgbGlrZSB0aGlzIGFzICJzdXNwaWNpb3VzIiBvbiBKb3NodWEncyB2ZXJzaW9u Cm9mIHRoaXMgcGF0Y2guCgpJIGhhdmUgbm8gc3Ryb25nIGZlZWxpbmdzIG9uIHRoZSBtYXR0ZXIu Li4uIGxldCBtZSBrbm93LgoKPj4gKwo+PiArICAgICAgICBpZiAoIHN0YXRzLmRpcnR5X2NvdW50 ID4gMCAmJiBwb2xpY3lfZGVjaXNpb24gIT0gWEdTX1BPTElDWV9BQk9SVCApCj4gVHJhaWxpbmcg c3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KPgo+PiArICAgICAgICB7Cj4+ICsgICAgICAg ICAgICByYyA9IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLCB4KTsK Pj4gKyAgICAgICAgICAgIGlmICggcmMgKQo+PiArICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ PiArCj4+ICsgICAgICAgICAgICByYyA9IHNlbmRfZGlydHlfcGFnZXMoY3R4LCBzdGF0cy5kaXJ0 eV9jb3VudCk7Cj4+ICsgICAgICAgICAgICBpZiAoIHJjICkKPj4gKyAgICAgICAgICAgICAgICBn b3RvIG91dDsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIGlmICggcG9saWN5X2RlY2lz aW9uICE9IFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09QWSApCj4+ICsgICAgICAgICAgICBicmVh azsKPj4gKwo+PiArICAgICAgICBwb2xpY3lfc3RhdHMtPml0ZXJhdGlvbiAgICAgPSB4Owo+PiAr ICAgICAgICBwb2xpY3lfc3RhdHMtPnRvdGFsX3dyaXR0ZW4gKz0gcG9saWN5X3N0YXRzLT5kaXJ0 eV9jb3VudDsKPj4gKyAgICAgICAgcG9saWN5X3N0YXRzLT5kaXJ0eV9jb3VudCAgID0gLTE7Cj4+ ICsKPj4gKyAgICAgICAgcG9saWN5X2RlY2lzaW9uID0gcHJlY29weV9wb2xpY3koKnBvbGljeV9z dGF0cywgZGF0YSk7Cj4+ICsKPj4gKyAgICAgICAgaWYgKCBwb2xpY3lfZGVjaXNpb24gIT0gWEdT X1BPTElDWV9DT05USU5VRV9QUkVDT1BZICkKPj4gKyAgICAgICAgICAgYnJlYWs7Cj4+ICAgCj4+ IC0gICAgZm9yICggeCA9IDE7Cj4+IC0gICAgICAgICAgKCh4IDwgY3R4LT5zYXZlLm1heF9pdGVy YXRpb25zKSAmJgo+PiAtICAgICAgICAgICAoc3RhdHMuZGlydHlfY291bnQgPiBjdHgtPnNhdmUu ZGlydHlfdGhyZXNob2xkKSk7ICsreCApCj4+IC0gICAgewo+PiAgICAgICAgICAgaWYgKCB4Y19z aGFkb3dfY29udHJvbCgKPj4gICAgICAgICAgICAgICAgICAgIHhjaCwgY3R4LT5kb21pZCwgWEVO X0RPTUNUTF9TSEFET1dfT1BfQ0xFQU4sCj4+ICAgICAgICAgICAgICAgICAgICAmY3R4LT5zYXZl LmRpcnR5X2JpdG1hcF9oYnVmLCBjdHgtPnNhdmUucDJtX3NpemUsCj4+IEBAIC00OTksMTcgKzU1 Myw5IEBAIHN0YXRpYyBpbnQgc2VuZF9tZW1vcnlfbGl2ZShzdHJ1Y3QgeGNfc3JfY29udGV4dCAq Y3R4KQo+PiAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+PiAgICAgICAgICAgfQo+PiAgIAo+PiAt ICAgICAgICBpZiAoIHN0YXRzLmRpcnR5X2NvdW50ID09IDAgKQo+PiAtICAgICAgICAgICAgYnJl YWs7Cj4+ICsgICAgICAgIHBvbGljeV9zdGF0cy0+ZGlydHlfY291bnQgPSBzdGF0cy5kaXJ0eV9j b3VudDsKPj4gICAKPj4gLSAgICAgICAgcmMgPSB1cGRhdGVfcHJvZ3Jlc3Nfc3RyaW5nKGN0eCwg JnByb2dyZXNzX3N0ciwgeCk7Cj4+IC0gICAgICAgIGlmICggcmMgKQo+PiAtICAgICAgICAgICAg Z290byBvdXQ7Cj4+IC0KPj4gLSAgICAgICAgcmMgPSBzZW5kX2RpcnR5X3BhZ2VzKGN0eCwgc3Rh dHMuZGlydHlfY291bnQpOwo+PiAtICAgICAgICBpZiAoIHJjICkKPj4gLSAgICAgICAgICAgIGdv dG8gb3V0Owo+PiAtICAgIH0KPj4gKyAgICB9IHdoaWxlICggdHJ1ZSApOwo+PiAgIAo+PiAgICBv dXQ6Cj4+ICAgICAgIHhjX3NldF9wcm9ncmVzc19wcmVmaXgoeGNoLCBOVUxMKTsKPj4gQEAgLTYw MSw3ICs2NDcsNyBAQCBzdGF0aWMgaW50IHN1c3BlbmRfYW5kX3NlbmRfZGlydHkoc3RydWN0IHhj X3NyX2NvbnRleHQgKmN0eCkKPj4gICAgICAgaWYgKCBjdHgtPnNhdmUubGl2ZSApCj4+ICAgICAg IHsKPj4gICAgICAgICAgIHJjID0gdXBkYXRlX3Byb2dyZXNzX3N0cmluZyhjdHgsICZwcm9ncmVz c19zdHIsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnNhdmUu bWF4X2l0ZXJhdGlvbnMpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LT5zYXZlLnN0YXRzLml0ZXJhdGlvbik7Cj4gSG0sIHRoaXMgYXMgbWVudGlvbmVkIGFib3Zl IHNlZW1zIHJlZHVuZGFudCAoY3R4IGlzIGFscmVhZHkgYQo+IHBhcmFtZXRlciBvZiB1cGRhdGVf cHJvZ3Jlc3Nfc3RyaW5nLgo+Cj4gVGhhbmtzLCBSb2dlci4KClRoYW5rcyBmb3IgdGhlIGZlZWRi YWNrLAoKLWplbm55CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==