From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Li, Liang Z" Subject: RE: [RFC Design Doc]Speed up live migration by skipping free pages Date: Wed, 23 Mar 2016 06:48:22 +0000 Message-ID: References: <1458632629-4649-1-git-send-email-liang.z.li@intel.com> <20160322190530.GI2216@work-vm> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "qemu-devel@nongnu.org" , "kvm@vger.kernel.org" , "linux-kernel@vger.kenel.org" , "pbonzini@redhat.com" , "rth@twiddle.net" , "ehabkost@redhat.com" , "mst@redhat.com" , "amit.shah@redhat.com" , "quintela@redhat.com" , "mohan_parthasarathy@hpe.com" , "jitendra.kolhe@hpe.com" , "simhan@hpe.com" , "rkagan@virtuozzo.com" , "riel@redhat.com" To: "Dr. David Alan Gilbert" Return-path: Received: from mga09.intel.com ([134.134.136.24]:50939 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752119AbcCWGsb (ORCPT ); Wed, 23 Mar 2016 02:48:31 -0400 In-Reply-To: <20160322190530.GI2216@work-vm> Content-Language: en-US Sender: kvm-owner@vger.kernel.org List-ID: PiA+IE9idmlvdXNseSwgdGhlIHZpcnRpby1iYWxsb29uIG1lY2hhbmlzbSBoYXMgYSBiaWdnZXIg cGVyZm9ybWFuY2UNCj4gPiBpbXBhY3QgdG8gdGhlIGd1ZXN0IHRoYW4gdGhlIHdheSB3ZSBhcmUg dHJ5aW5nIHRvIGltcGxlbWVudC4NCj4gDQo+IFllaCwgd2Ugc2hvdWxkIHNlcGFyYXRlbHkgdHJ5 IGFuZCBmaXggdGhhdDsgaWYgaXQncyB0aGF0IHNsb3cgdGhlbiBwZW9wbGUgd2lsbCBiZQ0KPiBh bm5veWVkIGFib3V0IGl0IHdoZW4gdGhleSdyZSBqdXN0IHVzaW5nIGl0IGZvciBiYWxsb29uLg0K PiANCj4gPiAzLiBWaXJ0aW8gaW50ZXJmYWNlDQo+ID4gVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVu dCB3YXlzIG9mIHVzaW5nIHRoZSB2aXJ0aW8gaW50ZXJmYWNlIHRvIHNlbmQNCj4gPiB0aGUgZnJl ZSBwYWdlIGluZm9ybWF0aW9uLg0KPiA+IGEuIEV4dGVuZCB0aGUgY3VycmVudCB2aXJ0aW8gZGV2 aWNlDQo+ID4gVGhlIHZpcnRpbyBzcGVjIGhhcyBhbHJlYWR5IGRlZmluZWQgc29tZSB2aXJ0aW8g ZGV2aWNlcywgYW5kIHdlIGNhbg0KPiA+IGV4dGVuZCBvbmUgb2YgdGhlc2UgZGV2aWNlcyBzbyBh cyB0byB1c2UgaXQgdG8gdHJhbnNwb3J0IHRoZSBmcmVlIHBhZ2UNCj4gPiBpbmZvcm1hdGlvbi4g SXQgcmVxdWlyZXMgbW9kaWZ5aW5nIHRoZSB2aXJ0aW8gc3BlYy4NCj4gPg0KPiA+IGIuIEltcGxl bWVudCBhIG5ldyB2aXJ0aW8gZGV2aWNlDQo+ID4gSW1wbGVtZW50aW5nIGEgYnJhbmQgbmV3IHZp cnRpbyBkZXZpY2UgdG8gZXhjaGFuZ2UgaW5mb3JtYXRpb24gYmV0d2Vlbg0KPiA+IGhvc3QgYW5k IGd1ZXN0IGlzIGFub3RoZXIgY2hvaWNlLiBJdCByZXF1aXJlcyBtb2RpZnlpbmcgdGhlIHZpcnRp bw0KPiA+IHNwZWMgdG9vLg0KPiANCj4gSWYgdGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIGNoYW5n ZSB0aGUgc3BlYyB0aGVuIHdlIHNob3VsZCBkbyBpdDsgd2Ugc2hvdWxkbid0DQo+IHVzZSBhIHRl Y2huaWNhbGx5IHdvcnNlIHNvbHV0aW9uIGp1c3QgdG8gYXZvaWQgdGhlIHNwZWMgY2hhbmdlOyBh bHRob3VnaCB3ZQ0KPiBoYXZlIHRvIGJlIGV2ZW4gbW9yZSBjYXJlZnVsIHRvIGdldCB0aGUgcmln aHQgc29sdXRpb24gaWYgd2Ugd2FudCB0byBjaGFuZ2UNCj4gdGhlIHNwZWMuDQo+IA0KPiA+IGMu IE1ha2UgdXNlIG9mIHZpcnRpby1zZXJpYWwgKEFtaXTigJlzIHN1Z2dlc3Rpb24sIG15IGNob2lj ZSkgSXTigJlzDQo+ID4gcG9zc2libGUgdG8gbWFrZSB1c2UgdGhlIHZpcnRpby1zZXJpYWwgZm9y IGNvbW11bmljYXRpb24gYmV0d2VlbiBob3N0DQo+ID4gYW5kIGd1ZXN0LCB0aGUgYmVuZWZpdCBv ZiB0aGlzIHNvbHV0aW9uIGlzIG5vIG5lZWQgdG8gbW9kaWZ5IHRoZQ0KPiA+IHZpcnRpbyBzcGVj Lg0KPiA+DQo+ID4gNC4gQ29uc3RydWN0IGZyZWUgcGFnZSBiaXRtYXANCj4gPiBUbyBtaW5pbWl6 ZSB0aGUgc3BhY2UgZm9yIHNhdmluZyBmcmVlIHBhZ2UgaW5mb3JtYXRpb24sIGl04oCZcyBiZXR0 ZXIgdG8NCj4gPiB1c2UgYSBiaXRtYXAgdG8gZGVzY3JpYmUgdGhlIGZyZWUgcGFnZXMuIFRoZXJl IGFyZSB0d28gd2F5cyB0bw0KPiA+IGNvbnN0cnVjdCB0aGUgZnJlZSBwYWdlIGJpdG1hcC4NCj4g Pg0KPiA+IGEuIENvbnN0cnVjdCBmcmVlIHBhZ2UgYml0bWFwIHdoZW4gZGVtYW5kIChNeSBjaG9p Y2UpIEd1ZXN0IGNhbg0KPiA+IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGZyZWUgcGFnZSBiaXRt YXAgb25seSB3aGVuIGl0IHJlY2VpdmVzIHRoZQ0KPiA+IHJlcXVlc3QgZnJvbSBRRU1VLCBhbmQg c2V0IHRoZSBmcmVlIHBhZ2UgYml0bWFwIGJ5IHRyYXZlcnNpbmcgdGhlIGZyZWUNCj4gPiBwYWdl IGxpc3QuIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyB3YXkgaXMgdGhhdCBpdOKAmXMgcXVpdGUgc2lt cGxlIGFuZA0KPiA+IGVhc3kgdG8gaW1wbGVtZW50LiBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQg dGhlIHRyYXZlcnNpbmcgb3BlcmF0aW9uDQo+ID4gbWF5IGNvbnN1bWUgcXVpdGUgYSBsb25nIHRp bWUgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgZnJlZSBwYWdlcy4NCj4gPiAoQWJvdXQgMjBtcyBm b3IgN0dCIGZyZWUgcGFnZXMpDQo+IA0KPiBJIHdvbmRlciBob3cgdGhhdCBzY2FsZXM7IDIwbXMg aXNuJ3QgdG9vIGJhZCAtIGJ1dCBJJ20gbW9yZSB3b3JyaWVkIGFib3V0DQo+IHdoYXQgaGFwcGVu cyB3aGVuIHNvbWVvbmUgZG9lcyBpdCB0byB0aGUgMVRCIGRhdGFiYXNlIFZNLg0KDQpUb3RhbGx5 IGRlcGVuZHMgb24gdGhlIGNvdW50IG9mIGZyZWUgcGFnZXMgaW4gdGhlIFZNLCBpZiA5MCUgb2Yg dGhlIG1lbW9yeQ0KaW4gdGhlIDFUQiBWTSBhcmUgZnJlZSBwYWdlcywgdGhlIHRpbWUgaXMgYWJv dXQ6DQogICAgMTAyNCAqIDAuOSAvIDcgKjIwID0gMjYzMyBtcw0KDQpJcyBpdCB1bmJlYXJhYmxl PyBpZiBzbywgd2UgY2FuIHVzZSA0YiB0byBjb25zdHJ1Y3QgdGhlIGZyZWUgcGFnZSBiaXRtYXAs IGhvcGUNCnRoZSBrZXJuZWwgZ3V5cyBjYW4gdG9sZXJhdGUgaXQuDQoNCj4gPiBiLiBVcGRhdGUg ZnJlZSBwYWdlIGJpdG1hcCB3aGVuIGFsbG9jYXRpbmcvZnJlZWluZyBwYWdlcyBBbm90aGVyDQo+ ID4gY2hvaWNlIGlzIHRvIGFsbG9jYXRlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmVlIHBhZ2UgYml0 bWFwIHdoZW4gZ3Vlc3QNCj4gPiBib290cywgYW5kIHRoZW4gdXBkYXRlIHRoZSBmcmVlIHBhZ2Ug Yml0bWFwIHdoZW4gYWxsb2NhdGluZy9mcmVlaW5nDQo+ID4gcGFnZXMuIEl0IG5lZWRzIG1vcmUg bW9kaWZpY2F0aW9uIHRvIHRoZSBjb2RlIHJlbGF0ZWQgdG8gbWVtb3J5DQo+ID4gbWFuYWdlbWVu dCBpbiBndWVzdC4gVGhlIGFkdmFudGFnZSBvZiB0aGlzIHdheSBpcyB0aGF0IGd1ZXN0IGNhbg0K PiA+IHJlc3BvbnNlIFFFTVXigJlzIHJlcXVlc3QgZm9yIGEgZnJlZSBwYWdlIGJpdG1hcCB2ZXJ5 IHF1aWNrbHksIG5vIG1hdHRlcg0KPiA+IGhvdyBtYW55IGZyZWUgcGFnZXMgaW4gdGhlIGd1ZXN0 LiBEbyB0aGUga2VybmVsIGd1eXMgbGlrZSB0aGlzPw0KPiA+DQo+ID4gNS4gVGlnaHRlbiB0aGUg ZnJlZSBwYWdlIGJpdG1hcA0KPiA+IEF0IGxhc3QsIHRoZSBmcmVlIHBhZ2UgYml0bWFwIHNob3Vs ZCBiZSBvcGVyYXRlZCB3aXRoIHRoZQ0KPiA+IHJhbWxpc3QuZGlydHlfbWVtb3J5IHRvIGZpbHRl ciBvdXQgdGhlIGZyZWUgcGFnZXMuIFdlIHNob3VsZCBtYWtlIHN1cmUNCj4gPiB0aGUgYml0IE4g aW4gdGhlIGZyZWUgcGFnZSBiaXRtYXAgYW5kIHRoZSBiaXQgTiBpbiB0aGUNCj4gPiByYW1saXN0 LmRpcnR5X21lbW9yeSBhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgc2FtZSBndWVzdOKAmXMgcGFn ZS4NCj4gPiBTb21lIGFyY2gsIGxpa2UgWDg2LCB0aGVyZSBhcmUg4oCYaG9sZXPigJkgaW4gdGhl IG1lbW9yeeKAmXMgcGh5c2ljYWwNCj4gPiBhZGRyZXNzLCB3aGljaCBtZWFucyB0aGVyZSBhcmUg bm8gYWN0dWFsIHBoeXNpY2FsIFJBTSBwYWdlcw0KPiA+IGNvcnJlc3BvbmRpbmcgdG8gc29tZSBQ Rk5zLiBTbywgc29tZSBhcmNoIHNwZWNpZmljIGluZm9ybWF0aW9uIGlzDQo+ID4gbmVlZGVkIHRv IGNvbnN0cnVjdCBhIHByb3BlciBmcmVlIHBhZ2UgYml0bWFwLg0KPiA+DQo+ID4gbWlncmF0aW9u IGRpcnR5IHBhZ2UgYml0bWFwOg0KPiA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAg ICAgfGF8YnxjfGR8ZXxmfGd8aHxpfGp8DQo+ID4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+IGxvb3NlIGZyZWUgcGFnZSBiaXRtYXA6DQo+ID4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ID4gICAgIHxhfGJ8Y3xkfGV8ZnwgfCB8IHwgfGd8aHxpfGp8DQo+ID4gICAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gdGlnaHQgZnJlZSBwYWdlIGJpdG1h cDoNCj4gPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gICAgIHxhfGJ8Y3xkfGV8Znxn fGh8aXxqfA0KPiA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+IFRoZXJlIGFy ZSB0d28gcGxhY2VzIGZvciB0aWdodGVuaW5nIHRoZSBmcmVlIHBhZ2UgYml0bWFwOg0KPiA+IGEu IEluIGd1ZXN0DQo+ID4gQ29uc3RydWN0aW5nIHRoZSBmcmVlIHBhZ2UgYml0bWFwIGluIGd1ZXN0 IHJlcXVpcmVzIGFkZGluZyB0aGUgYXJjaA0KPiA+IHJlbGF0ZWQgY29kZSBpbiBndWVzdCBmb3Ig YnVpbGRpbmcgYSB0aWdodCBiaXRtYXAuIFRoZSBhZHZhbnRhZ2Ugb2YNCj4gPiB0aGlzIHdheSBp cyB0aGF0IGxlc3MgbWVtb3J5IGlzIG5lZWRlZCB0byBzdG9yZSB0aGUgZnJlZSBwYWdlIGJpdG1h cC4NCj4gPiBiLiBJbiBRRU1VIChNeSBjaG9pY2UpDQo+ID4gQ29uc3RydWN0aW5nIHRoZSBmcmVl IHBhZ2UgYml0bWFwIGluIFFFTVUgaXMgbW9yZSBmbGV4aWJsZSwgd2UgY2FuIGdldA0KPiA+IGEg bG9vc2UgZnJlZSBwYWdlIGJpdG1hcCB3aGljaCBjb250YWlucyB0aGUgaG9sZXMsIGFuZCB0aGVu IGZpbHRlciBvdXQNCj4gPiB0aGUgaG9sZXMgaW4gUUVNVSwgdGhlIGFkdmFudGFnZSBvZiB0aGlz IHdheSBpcyB0aGF0IHdlIGNhbiBrZWVwIHRoZQ0KPiA+IGtlcm5lbCBjb2RlIGFzIHNpbXBsZSBh cyB3ZSBjYW4sIHRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBtb3JlIG1lbW9yeQ0KPiA+IGlzIG5l ZWRlZCB0byBzYXZlIHRoZSBsb29zZSBmcmVlIHBhZ2UgYml0bWFwLiBCZWNhdXNlIHRoaXMgaXMg YSBtYWlubHkNCj4gPiBRRU1VIGZlYXR1cmUsIGlmIHBvc3NpYmxlLCBkbyBhbGwgdGhlIHJlbGF0 ZWQgdGhpbmdzIGluIFFFTVUgaXMNCj4gPiBiZXR0ZXIuDQo+IA0KPiBZZXMsIG1heWJlOyBhbHRo b3VnaCB3ZSdkIGhhdmUgdG8gYmUgY2FyZWZ1bCB0byB2YWxpZGF0ZSB3aGF0IHRoZSBndWVzdCBm aWxscw0KPiBpbiBtYWtlcyBzZW5zZS4NCj4gDQo+ID4gNi4gSGFuZGxpbmcgcGFnZSBjYWNoZSBp biB0aGUgZ3Vlc3QNCj4gPiBUaGUgbWVtb3J5IHVzZWQgZm9yIHBhZ2UgY2FjaGUgaW4gdGhlIGd1 ZXN0IHdpbGwgY2hhbmdlIGRlcGVuZHMgb24gdGhlDQo+ID4gd29ya2xvYWQsIGlmIGd1ZXN0IHJ1 biBzb21lIGJsb2NrIElPIGludGVuc2l2ZSB3b3JrIGxvYWQsIHRoZXJlIHdpbGwNCj4gPiBiZSBs b3RzIG9mIHBhZ2VzIHVzZWQgZm9yIHBhZ2UgY2FjaGUsIG9ubHkgYSBmZXcgZnJlZSBwYWdlcyBh cmUgbGVmdA0KPiA+IGluIHRoZSBndWVzdC4gSW4gb3JkZXIgdG8gZ2V0IG1vcmUgZnJlZSBwYWdl cywgd2UgY2FuIHNlbGVjdCB0byBhc2sNCj4gPiBndWVzdCB0byBkcm9wIHNvbWUgcGFnZSBjYWNo ZXMuICBCZWNhdXNlIGRyb3BwaW5nIHRoZSBwYWdlIGNhY2hlIG1heQ0KPiA+IGxlYWQgdG8gcGVy Zm9ybWFuY2UgZGVncmFkYXRpb24sIG9ubHkgdGhlIGNsZWFuIGNhY2hlIHNob3VsZCBiZQ0KPiA+ IGRyb3BwZWQgYW5kIHdlIHNob3VsZCBsZXQgdGhlIHVzZXIgZGVjaWRlIHdoZXRoZXIgdG8gZG8g dGhpcy4NCj4gPg0KPiA+IDcuIEFQSXMgZm9yIGxpdmUgbWlncmF0aW9uDQo+ID4gVG8gbWFrZSB0 aGluZ3Mgd29yaywgdGhlIGZvbGxvd2luZyBBUElzIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4NCj4g Pg0KPiA+IGEuIEdldCBtZW1vcnkgaW5mbyBvZiB0aGUgZ3Vlc3QsIGxpa2UgdGhpczoNCj4gPiBi b29sIGdldF9ndWVzdF9tZW1faW5mbyhzdHJ1Y3QgZ3Vlc3RfbWVtX2luZm8gICogaW5mbyApDQo+ ID4NCj4gPiBzdHJ1Y3QgZ3Vlc3RfbWVtX2luZm8gaXMgZGVmaW5lZCBhcyBiZWxsb3c6DQo+ID4N Cj4gPiBzdHJ1Y3QgZ3Vlc3RfbWVtX2luZm8gew0KPiA+IHVpbnQ2NF90IGZyZWVfcGFnZXNfbnVt OyAgICAgIC8vIGd1ZXN04oCZcyBmcmVlIHBhZ2VzIGNvdW50DQo+ID4gdWludDY0X3QgY2FjaGVk X3BhZ2VzX251bTsgICAgIC8vdG90YWwgY2FjaGVkIHBhZ2VzIGNvdW50DQo+ID4gdWludDY0X3Qg bWF4X3BmbjsgICAgIC8vIHRoZSBtYXggcGZuIG9mIHRoZSBndWVzdA0KPiA+IH07DQo+IA0KPiBX aGF0IGRvIHlvdSBuZWVkIG1heF9wZm4gZm9yPw0KPiANCg0KSXQncyB1c2VkIHRvIGRlY2lkZSB0 aGUgbGVuZ3RoIG9mIHRoZSBmcmVlIHBhZ2UgYml0bWFwLiBJIGFtIG5vdCBzdXJlIGlmIHdlDQpj YW4gZ2V0IHRoaXMgaW5mb3JtYXRpb24gaW4gUUVNVSwgaWYgc28sIGl0IGNhbiBiZSByZW1vdmVk Lg0KDQo+IChXZSdsbCBhbHNvIGhhdmUgdG8gdGhpbmsgaG93IGhvdHBsdWdnZWQgbWVtb3J5IHdv cmtzIHdpdGggdGhpcykuDQo+IEFsc28gYmUgY2FyZWZ1bCBvZiBob3cgYmlnIGEgcGFnZSBpczsg IHNvbWUgYXJjaGl0ZWN0dXJlcyBjYW4gY2hvb3NlIGJldHdlZW4NCj4gZGlmZmVyZW50IGd1ZXN0 IHBhZ2Ugc2l6ZXMgKDQsIDE2LCA2NGsgSSB0aGluayBvbiBBUk0pLCBzbyB3ZSBqdXN0IG5lZWQg dG8NCj4gbWFrZSBzdXJlIHdoYXQgdW5pdCB3ZSdyZSBkZWFsaW5nIHdpdGguICBUaGF0IHNpemUg aXMgYWxzbyBub3QgbmVjZXNzYXJpbHkgdGhlDQo+IHNhbWUgYXMgdGhlIHVuaXQgc2l6ZSBvZiB0 aGUgbWlncmF0aW9uIGJpdG1hcDsgdGhpcyBpcyBhbHdheXMgYSBiaXQgdHJpY2t5Lg0KPiANCg0K VGhhbmtzIGZvciByZW1pbmRpbmcsIEkgaGF2ZSBub3QgdGhvdWdodCBhYm91dCB0aGUgbWVtb3J5 IGhvdCBwbHVnIHlldC4gDQoNCj4gPiBSZXR1cm4gdmFsdWU6DQo+ID4gZmxhc2UsIHdoZW4gUUVN VSBvciBndWVzdCBjYW7igJl0IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gdHJ1ZSwgd2hl biBzdWNjZXNzLg0KPiA+DQo+ID4gYi4gUmVxdWVzdCBndWVzdOKAmXMgY3VycmVudCBmcmVlIHBh Z2VzIGluZm9ybWF0aW9uLg0KPiA+IGludCBnZXRfZnJlZV9wYWdlX2JtYXAodW5zaWduZWQgbG9u ZyAqYml0bWFwLCAgYm9vbCBkcm9wX2NhY2hlKTsNCj4gPg0KPiA+IFJldHVybiB2YWx1ZToNCj4g PiAtMSwgd2hlbiBRRU1VIG9yIGd1ZXN0IGNhbuKAmXQgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4N Cj4gPiAxLCB3aGVuIHRoZSBmcmVlIHBhZ2UgYml0bWFwIGlzIHN0aWxsIGluIHRoZSBwcm9ncmVz cyBvZiBjb25zdHJ1Y3RpbmcuDQo+ID4gMSwgd2hlbiBhIHZhbGlkIGZyZWUgcGFnZSBiaXRtYXAg aXMgcmVhZHkuDQo+IA0KPiBJIHN1Z2dlc3Qgbm90IHVzaW5nICdsb25nJyAtIEkga25vdyB3ZSBk byBpdCBhIGxvdCBpbiBRRU1VIGJ1dCBpdCdzIGEgcGFpbjsgbGV0cw0KPiBuYWlsIHRoaXMgZG93 biB0byBhIHVpbnQ2NF90IGFuZCB0aGVuIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgd2hh dCB0aGUNCj4gZ3Vlc3QgaXMgcnVuaW5nLg0KPiANCg0KV2lsbCBjaGFuZ2UgaXQuDQoNCj4gPiBj LiBUaWdodGVuIHRoZSBmcmVlIHBhZ2UgYml0bWFwDQo+ID4gdW5zaWduZWQgbG9uZyAqIHRpZ2h0 ZW5fZnJlZV9wYWdlX2JtYXAodW5zaWduZWQgbG9uZyAqYml0bWFwKTsNCj4gPg0KPiA+IFRoaXMg ZnVuY3Rpb24gaXMgYW4gYXJjaCBzcGVjaWZpYyBmdW5jdGlvbiB0byByZWJ1aWxkIHRoZSBsb29z ZSBmcmVlDQo+ID4gcGFnZSBiaXRtYXAgc28gYXMgdG8gZ2V0IGEgdGlnaHQgYml0bWFwIHdoaWNo IGNhbiBiZSBvcGVyYXRlZCBlYXNpbHkNCj4gPiB3aXRoIHJhbWxpc3QuZGlydHlfbWVtb3J5Lg0K PiANCj4gSSdtIG5vdCBzdXJlIHlvdSBhY3R1YWxseSBuZWVkIHRoaXM7IGFzIGxvbmcgYXMgd2hh dCB5b3UgZXhwZWN0IGlzIGp1c3QgYSAoc21hbGwpDQo+IHNlcmllcyBvZiBjaHVua3Mgb2YgYml0 bWFwOyB0aGVuIHlvdSdkIGp1c3QgaGF2ZSBzb21ldGhpbmcgbGlrZSAoc3RhcnQgYXQgMC4uLiAp DQo+IChzdGFydCBhdCAxTUIuLi4pIChzdGFydCBhdCAxR0IuLi4uKQ0KPiANClllcywgaWYgdXNp bmcgdGhpcyBraW5kIG9mIGJpdG1hcCwgdGlnaHRlbl9mcmVlX3BhZ2VfYm1hcCBpcyBub3QgbmVl ZGVkLiBUaGFua3MhDQoNCj4gPiA4LiBQc2V1ZG8gY29kZQ0KPiA+IERpcnR5IHBhZ2UgbG9nZ2lu ZyBzaG91bGQgYmUgZW5hYmxlZCBiZWZvcmUgZ2V0dGluZyB0aGUgZnJlZSBwYWdlDQo+ID4gaW5m b3JtYXRpb24gZnJvbSBndWVzdCwgdGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBkdXJpbmcgdGhl IHByb2Nlc3MNCj4gPiBvZiBnZXR0aW5nIGZyZWUgcGFnZXMsIHNvbWUgZnJlZSBwYWdlcyBtYXkg YmUgdXNlZCBhbmQgd3JpdHRlbiBieSB0aGUNCj4gPiBndWVzdCwgZGlydHkgcGFnZSBsb2dnaW5n IGNhbiB0cmFjZSB0aGVzZSBwYWdlcy4gVGhlIHBzZXVkbyBjb2RlwqBpcw0KPiA+IGxpa2UgYmVs b3c6DQo+ID4NCj4gPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gPiAgICAgTWlncmF0aW9uU3RhdGUgKnMgPSBtaWdyYXRlX2dldF9jdXJyZW50 KCk7DQo+ID4gICAgIC4uLg0KPiA+DQo+ID4gICAgIG1lbW9yeV9nbG9iYWxfZGlydHlfbG9nX3N0 YXJ0KCk7DQo+ID4NCj4gPiAgICAgaWYgKGdldF9ndWVzdF9tZW1faW5mbygmaW5mbykpIHsNCj4g PiAgICAgICAgIHdoaWxlICghZ2V0X2ZyZWVfcGFnZV9ibWFwKGZyZWVfcGFnZV9iaXRtYXAsICBk cm9wX3BhZ2VfY2FjaGUpDQo+ICYmDQo+ID4gICAgICAgICAgICAgICAgcy0+c3RhdGUgIT0gTUlH UkFUSU9OX1NUQVRVU19DQU5DRUxMSU5HKSB7DQo+ID4gICAgICAgICAgICAgdXNsZWVwKDEwMDAp IC8vIHNsZWVwIGZvciAxIG1zDQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIHRpZ2h0 ZW5fZnJlZV9wYWdlX2JtYXAgPQ0KPiB0aWdodGVuX2d1ZXN0X2ZyZWVfcGFnZXMoZnJlZV9wYWdl X2JpdG1hcCk7DQo+ID4gICAgICAgICBmaWx0ZXJfb3V0X2d1ZXN0X2ZyZWVfcGFnZXModGlnaHRl bl9mcmVlX3BhZ2VfYm1hcCk7DQo+ID4gICAgIH0NCj4gDQo+IEdpdmVuIHRoZSB0eXBpY2FsIHNw ZWVkIG9mIG5ldHdvcmtzOyBpdCB3b3VsZG4ndCBkbyB0b28gbXVjaCBoYXJtIHRvIHN0YXJ0DQo+ IHNlbmRpbmcgYXNzdW1pbmcgYWxsIHBhZ2VzIGFyZSBkaXJ0eSBhbmQgdGhlbiB3aGVuIHRoZSBn dWVzdCBmaW5hbGx5IGdldHMNCj4gYXJvdW5kIHRvIGZpbmlzaGluZyB0aGUgYml0bWFwIHRoZW4g dXBkYXRlLCBzbyBpdCdzIGFzeW5jaHJvbm91cyAtIGFuZCB0aGVuIGlmDQo+IHRoZSBndWVzdCBu ZXZlciByZXNwb25kcyB3ZSBkb24ndCByZWFsbHkgY2FyZS4NCg0KSW5kZWVkLCB0aGFua3MhDQoN CkxpYW5nDQo+IA0KPiBEYXZlDQo+IA0KPiA+DQo+ID4gICAgIG1pZ3JhdGlvbl9iaXRtYXBfc3lu YygpOw0KPiA+ICAgICAuLi4NCj4gPg0KPiA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+DQo+ID4NCj4gPiAtLQ0KPiA+IDEuOS4xDQo+ID4N Cj4gLS0NCj4gRHIuIERhdmlkIEFsYW4gR2lsYmVydCAvIGRnaWxiZXJ0QHJlZGhhdC5jb20gLyBN YW5jaGVzdGVyLCBVSw0K From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42130) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aicap-00050i-1x for qemu-devel@nongnu.org; Wed, 23 Mar 2016 02:48:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aical-0001WB-P0 for qemu-devel@nongnu.org; Wed, 23 Mar 2016 02:48:34 -0400 Received: from mga14.intel.com ([192.55.52.115]:5180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aical-0001W1-Ci for qemu-devel@nongnu.org; Wed, 23 Mar 2016 02:48:31 -0400 From: "Li, Liang Z" Date: Wed, 23 Mar 2016 06:48:22 +0000 Message-ID: References: <1458632629-4649-1-git-send-email-liang.z.li@intel.com> <20160322190530.GI2216@work-vm> In-Reply-To: <20160322190530.GI2216@work-vm> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [RFC Design Doc]Speed up live migration by skipping free pages List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert" Cc: "rkagan@virtuozzo.com" , "linux-kernel@vger.kenel.org" , "ehabkost@redhat.com" , "kvm@vger.kernel.org" , "mst@redhat.com" , "simhan@hpe.com" , "quintela@redhat.com" , "qemu-devel@nongnu.org" , "jitendra.kolhe@hpe.com" , "mohan_parthasarathy@hpe.com" , "amit.shah@redhat.com" , "pbonzini@redhat.com" , "rth@twiddle.net" PiA+IE9idmlvdXNseSwgdGhlIHZpcnRpby1iYWxsb29uIG1lY2hhbmlzbSBoYXMgYSBiaWdnZXIg cGVyZm9ybWFuY2UNCj4gPiBpbXBhY3QgdG8gdGhlIGd1ZXN0IHRoYW4gdGhlIHdheSB3ZSBhcmUg dHJ5aW5nIHRvIGltcGxlbWVudC4NCj4gDQo+IFllaCwgd2Ugc2hvdWxkIHNlcGFyYXRlbHkgdHJ5 IGFuZCBmaXggdGhhdDsgaWYgaXQncyB0aGF0IHNsb3cgdGhlbiBwZW9wbGUgd2lsbCBiZQ0KPiBh bm5veWVkIGFib3V0IGl0IHdoZW4gdGhleSdyZSBqdXN0IHVzaW5nIGl0IGZvciBiYWxsb29uLg0K PiANCj4gPiAzLiBWaXJ0aW8gaW50ZXJmYWNlDQo+ID4gVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVu dCB3YXlzIG9mIHVzaW5nIHRoZSB2aXJ0aW8gaW50ZXJmYWNlIHRvIHNlbmQNCj4gPiB0aGUgZnJl ZSBwYWdlIGluZm9ybWF0aW9uLg0KPiA+IGEuIEV4dGVuZCB0aGUgY3VycmVudCB2aXJ0aW8gZGV2 aWNlDQo+ID4gVGhlIHZpcnRpbyBzcGVjIGhhcyBhbHJlYWR5IGRlZmluZWQgc29tZSB2aXJ0aW8g ZGV2aWNlcywgYW5kIHdlIGNhbg0KPiA+IGV4dGVuZCBvbmUgb2YgdGhlc2UgZGV2aWNlcyBzbyBh cyB0byB1c2UgaXQgdG8gdHJhbnNwb3J0IHRoZSBmcmVlIHBhZ2UNCj4gPiBpbmZvcm1hdGlvbi4g SXQgcmVxdWlyZXMgbW9kaWZ5aW5nIHRoZSB2aXJ0aW8gc3BlYy4NCj4gPg0KPiA+IGIuIEltcGxl bWVudCBhIG5ldyB2aXJ0aW8gZGV2aWNlDQo+ID4gSW1wbGVtZW50aW5nIGEgYnJhbmQgbmV3IHZp cnRpbyBkZXZpY2UgdG8gZXhjaGFuZ2UgaW5mb3JtYXRpb24gYmV0d2Vlbg0KPiA+IGhvc3QgYW5k IGd1ZXN0IGlzIGFub3RoZXIgY2hvaWNlLiBJdCByZXF1aXJlcyBtb2RpZnlpbmcgdGhlIHZpcnRp bw0KPiA+IHNwZWMgdG9vLg0KPiANCj4gSWYgdGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIGNoYW5n ZSB0aGUgc3BlYyB0aGVuIHdlIHNob3VsZCBkbyBpdDsgd2Ugc2hvdWxkbid0DQo+IHVzZSBhIHRl Y2huaWNhbGx5IHdvcnNlIHNvbHV0aW9uIGp1c3QgdG8gYXZvaWQgdGhlIHNwZWMgY2hhbmdlOyBh bHRob3VnaCB3ZQ0KPiBoYXZlIHRvIGJlIGV2ZW4gbW9yZSBjYXJlZnVsIHRvIGdldCB0aGUgcmln aHQgc29sdXRpb24gaWYgd2Ugd2FudCB0byBjaGFuZ2UNCj4gdGhlIHNwZWMuDQo+IA0KPiA+IGMu IE1ha2UgdXNlIG9mIHZpcnRpby1zZXJpYWwgKEFtaXTigJlzIHN1Z2dlc3Rpb24sIG15IGNob2lj ZSkgSXTigJlzDQo+ID4gcG9zc2libGUgdG8gbWFrZSB1c2UgdGhlIHZpcnRpby1zZXJpYWwgZm9y IGNvbW11bmljYXRpb24gYmV0d2VlbiBob3N0DQo+ID4gYW5kIGd1ZXN0LCB0aGUgYmVuZWZpdCBv ZiB0aGlzIHNvbHV0aW9uIGlzIG5vIG5lZWQgdG8gbW9kaWZ5IHRoZQ0KPiA+IHZpcnRpbyBzcGVj Lg0KPiA+DQo+ID4gNC4gQ29uc3RydWN0IGZyZWUgcGFnZSBiaXRtYXANCj4gPiBUbyBtaW5pbWl6 ZSB0aGUgc3BhY2UgZm9yIHNhdmluZyBmcmVlIHBhZ2UgaW5mb3JtYXRpb24sIGl04oCZcyBiZXR0 ZXIgdG8NCj4gPiB1c2UgYSBiaXRtYXAgdG8gZGVzY3JpYmUgdGhlIGZyZWUgcGFnZXMuIFRoZXJl IGFyZSB0d28gd2F5cyB0bw0KPiA+IGNvbnN0cnVjdCB0aGUgZnJlZSBwYWdlIGJpdG1hcC4NCj4g Pg0KPiA+IGEuIENvbnN0cnVjdCBmcmVlIHBhZ2UgYml0bWFwIHdoZW4gZGVtYW5kIChNeSBjaG9p Y2UpIEd1ZXN0IGNhbg0KPiA+IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGZyZWUgcGFnZSBiaXRt YXAgb25seSB3aGVuIGl0IHJlY2VpdmVzIHRoZQ0KPiA+IHJlcXVlc3QgZnJvbSBRRU1VLCBhbmQg c2V0IHRoZSBmcmVlIHBhZ2UgYml0bWFwIGJ5IHRyYXZlcnNpbmcgdGhlIGZyZWUNCj4gPiBwYWdl IGxpc3QuIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyB3YXkgaXMgdGhhdCBpdOKAmXMgcXVpdGUgc2lt cGxlIGFuZA0KPiA+IGVhc3kgdG8gaW1wbGVtZW50LiBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQg dGhlIHRyYXZlcnNpbmcgb3BlcmF0aW9uDQo+ID4gbWF5IGNvbnN1bWUgcXVpdGUgYSBsb25nIHRp bWUgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgZnJlZSBwYWdlcy4NCj4gPiAoQWJvdXQgMjBtcyBm b3IgN0dCIGZyZWUgcGFnZXMpDQo+IA0KPiBJIHdvbmRlciBob3cgdGhhdCBzY2FsZXM7IDIwbXMg aXNuJ3QgdG9vIGJhZCAtIGJ1dCBJJ20gbW9yZSB3b3JyaWVkIGFib3V0DQo+IHdoYXQgaGFwcGVu cyB3aGVuIHNvbWVvbmUgZG9lcyBpdCB0byB0aGUgMVRCIGRhdGFiYXNlIFZNLg0KDQpUb3RhbGx5 IGRlcGVuZHMgb24gdGhlIGNvdW50IG9mIGZyZWUgcGFnZXMgaW4gdGhlIFZNLCBpZiA5MCUgb2Yg dGhlIG1lbW9yeQ0KaW4gdGhlIDFUQiBWTSBhcmUgZnJlZSBwYWdlcywgdGhlIHRpbWUgaXMgYWJv dXQ6DQogICAgMTAyNCAqIDAuOSAvIDcgKjIwID0gMjYzMyBtcw0KDQpJcyBpdCB1bmJlYXJhYmxl PyBpZiBzbywgd2UgY2FuIHVzZSA0YiB0byBjb25zdHJ1Y3QgdGhlIGZyZWUgcGFnZSBiaXRtYXAs IGhvcGUNCnRoZSBrZXJuZWwgZ3V5cyBjYW4gdG9sZXJhdGUgaXQuDQoNCj4gPiBiLiBVcGRhdGUg ZnJlZSBwYWdlIGJpdG1hcCB3aGVuIGFsbG9jYXRpbmcvZnJlZWluZyBwYWdlcyBBbm90aGVyDQo+ ID4gY2hvaWNlIGlzIHRvIGFsbG9jYXRlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmVlIHBhZ2UgYml0 bWFwIHdoZW4gZ3Vlc3QNCj4gPiBib290cywgYW5kIHRoZW4gdXBkYXRlIHRoZSBmcmVlIHBhZ2Ug Yml0bWFwIHdoZW4gYWxsb2NhdGluZy9mcmVlaW5nDQo+ID4gcGFnZXMuIEl0IG5lZWRzIG1vcmUg bW9kaWZpY2F0aW9uIHRvIHRoZSBjb2RlIHJlbGF0ZWQgdG8gbWVtb3J5DQo+ID4gbWFuYWdlbWVu dCBpbiBndWVzdC4gVGhlIGFkdmFudGFnZSBvZiB0aGlzIHdheSBpcyB0aGF0IGd1ZXN0IGNhbg0K PiA+IHJlc3BvbnNlIFFFTVXigJlzIHJlcXVlc3QgZm9yIGEgZnJlZSBwYWdlIGJpdG1hcCB2ZXJ5 IHF1aWNrbHksIG5vIG1hdHRlcg0KPiA+IGhvdyBtYW55IGZyZWUgcGFnZXMgaW4gdGhlIGd1ZXN0 LiBEbyB0aGUga2VybmVsIGd1eXMgbGlrZSB0aGlzPw0KPiA+DQo+ID4gNS4gVGlnaHRlbiB0aGUg ZnJlZSBwYWdlIGJpdG1hcA0KPiA+IEF0IGxhc3QsIHRoZSBmcmVlIHBhZ2UgYml0bWFwIHNob3Vs ZCBiZSBvcGVyYXRlZCB3aXRoIHRoZQ0KPiA+IHJhbWxpc3QuZGlydHlfbWVtb3J5IHRvIGZpbHRl ciBvdXQgdGhlIGZyZWUgcGFnZXMuIFdlIHNob3VsZCBtYWtlIHN1cmUNCj4gPiB0aGUgYml0IE4g aW4gdGhlIGZyZWUgcGFnZSBiaXRtYXAgYW5kIHRoZSBiaXQgTiBpbiB0aGUNCj4gPiByYW1saXN0 LmRpcnR5X21lbW9yeSBhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgc2FtZSBndWVzdOKAmXMgcGFn ZS4NCj4gPiBTb21lIGFyY2gsIGxpa2UgWDg2LCB0aGVyZSBhcmUg4oCYaG9sZXPigJkgaW4gdGhl IG1lbW9yeeKAmXMgcGh5c2ljYWwNCj4gPiBhZGRyZXNzLCB3aGljaCBtZWFucyB0aGVyZSBhcmUg bm8gYWN0dWFsIHBoeXNpY2FsIFJBTSBwYWdlcw0KPiA+IGNvcnJlc3BvbmRpbmcgdG8gc29tZSBQ Rk5zLiBTbywgc29tZSBhcmNoIHNwZWNpZmljIGluZm9ybWF0aW9uIGlzDQo+ID4gbmVlZGVkIHRv IGNvbnN0cnVjdCBhIHByb3BlciBmcmVlIHBhZ2UgYml0bWFwLg0KPiA+DQo+ID4gbWlncmF0aW9u IGRpcnR5IHBhZ2UgYml0bWFwOg0KPiA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAg ICAgfGF8YnxjfGR8ZXxmfGd8aHxpfGp8DQo+ID4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+IGxvb3NlIGZyZWUgcGFnZSBiaXRtYXA6DQo+ID4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ID4gICAgIHxhfGJ8Y3xkfGV8ZnwgfCB8IHwgfGd8aHxpfGp8DQo+ID4gICAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gdGlnaHQgZnJlZSBwYWdlIGJpdG1h cDoNCj4gPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gICAgIHxhfGJ8Y3xkfGV8Znxn fGh8aXxqfA0KPiA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+IFRoZXJlIGFy ZSB0d28gcGxhY2VzIGZvciB0aWdodGVuaW5nIHRoZSBmcmVlIHBhZ2UgYml0bWFwOg0KPiA+IGEu IEluIGd1ZXN0DQo+ID4gQ29uc3RydWN0aW5nIHRoZSBmcmVlIHBhZ2UgYml0bWFwIGluIGd1ZXN0 IHJlcXVpcmVzIGFkZGluZyB0aGUgYXJjaA0KPiA+IHJlbGF0ZWQgY29kZSBpbiBndWVzdCBmb3Ig YnVpbGRpbmcgYSB0aWdodCBiaXRtYXAuIFRoZSBhZHZhbnRhZ2Ugb2YNCj4gPiB0aGlzIHdheSBp cyB0aGF0IGxlc3MgbWVtb3J5IGlzIG5lZWRlZCB0byBzdG9yZSB0aGUgZnJlZSBwYWdlIGJpdG1h cC4NCj4gPiBiLiBJbiBRRU1VIChNeSBjaG9pY2UpDQo+ID4gQ29uc3RydWN0aW5nIHRoZSBmcmVl IHBhZ2UgYml0bWFwIGluIFFFTVUgaXMgbW9yZSBmbGV4aWJsZSwgd2UgY2FuIGdldA0KPiA+IGEg bG9vc2UgZnJlZSBwYWdlIGJpdG1hcCB3aGljaCBjb250YWlucyB0aGUgaG9sZXMsIGFuZCB0aGVu IGZpbHRlciBvdXQNCj4gPiB0aGUgaG9sZXMgaW4gUUVNVSwgdGhlIGFkdmFudGFnZSBvZiB0aGlz IHdheSBpcyB0aGF0IHdlIGNhbiBrZWVwIHRoZQ0KPiA+IGtlcm5lbCBjb2RlIGFzIHNpbXBsZSBh cyB3ZSBjYW4sIHRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBtb3JlIG1lbW9yeQ0KPiA+IGlzIG5l ZWRlZCB0byBzYXZlIHRoZSBsb29zZSBmcmVlIHBhZ2UgYml0bWFwLiBCZWNhdXNlIHRoaXMgaXMg YSBtYWlubHkNCj4gPiBRRU1VIGZlYXR1cmUsIGlmIHBvc3NpYmxlLCBkbyBhbGwgdGhlIHJlbGF0 ZWQgdGhpbmdzIGluIFFFTVUgaXMNCj4gPiBiZXR0ZXIuDQo+IA0KPiBZZXMsIG1heWJlOyBhbHRo b3VnaCB3ZSdkIGhhdmUgdG8gYmUgY2FyZWZ1bCB0byB2YWxpZGF0ZSB3aGF0IHRoZSBndWVzdCBm aWxscw0KPiBpbiBtYWtlcyBzZW5zZS4NCj4gDQo+ID4gNi4gSGFuZGxpbmcgcGFnZSBjYWNoZSBp biB0aGUgZ3Vlc3QNCj4gPiBUaGUgbWVtb3J5IHVzZWQgZm9yIHBhZ2UgY2FjaGUgaW4gdGhlIGd1 ZXN0IHdpbGwgY2hhbmdlIGRlcGVuZHMgb24gdGhlDQo+ID4gd29ya2xvYWQsIGlmIGd1ZXN0IHJ1 biBzb21lIGJsb2NrIElPIGludGVuc2l2ZSB3b3JrIGxvYWQsIHRoZXJlIHdpbGwNCj4gPiBiZSBs b3RzIG9mIHBhZ2VzIHVzZWQgZm9yIHBhZ2UgY2FjaGUsIG9ubHkgYSBmZXcgZnJlZSBwYWdlcyBh cmUgbGVmdA0KPiA+IGluIHRoZSBndWVzdC4gSW4gb3JkZXIgdG8gZ2V0IG1vcmUgZnJlZSBwYWdl cywgd2UgY2FuIHNlbGVjdCB0byBhc2sNCj4gPiBndWVzdCB0byBkcm9wIHNvbWUgcGFnZSBjYWNo ZXMuICBCZWNhdXNlIGRyb3BwaW5nIHRoZSBwYWdlIGNhY2hlIG1heQ0KPiA+IGxlYWQgdG8gcGVy Zm9ybWFuY2UgZGVncmFkYXRpb24sIG9ubHkgdGhlIGNsZWFuIGNhY2hlIHNob3VsZCBiZQ0KPiA+ IGRyb3BwZWQgYW5kIHdlIHNob3VsZCBsZXQgdGhlIHVzZXIgZGVjaWRlIHdoZXRoZXIgdG8gZG8g dGhpcy4NCj4gPg0KPiA+IDcuIEFQSXMgZm9yIGxpdmUgbWlncmF0aW9uDQo+ID4gVG8gbWFrZSB0 aGluZ3Mgd29yaywgdGhlIGZvbGxvd2luZyBBUElzIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4NCj4g Pg0KPiA+IGEuIEdldCBtZW1vcnkgaW5mbyBvZiB0aGUgZ3Vlc3QsIGxpa2UgdGhpczoNCj4gPiBi b29sIGdldF9ndWVzdF9tZW1faW5mbyhzdHJ1Y3QgZ3Vlc3RfbWVtX2luZm8gICogaW5mbyApDQo+ ID4NCj4gPiBzdHJ1Y3QgZ3Vlc3RfbWVtX2luZm8gaXMgZGVmaW5lZCBhcyBiZWxsb3c6DQo+ID4N Cj4gPiBzdHJ1Y3QgZ3Vlc3RfbWVtX2luZm8gew0KPiA+IHVpbnQ2NF90IGZyZWVfcGFnZXNfbnVt OyAgICAgIC8vIGd1ZXN04oCZcyBmcmVlIHBhZ2VzIGNvdW50DQo+ID4gdWludDY0X3QgY2FjaGVk X3BhZ2VzX251bTsgICAgIC8vdG90YWwgY2FjaGVkIHBhZ2VzIGNvdW50DQo+ID4gdWludDY0X3Qg bWF4X3BmbjsgICAgIC8vIHRoZSBtYXggcGZuIG9mIHRoZSBndWVzdA0KPiA+IH07DQo+IA0KPiBX aGF0IGRvIHlvdSBuZWVkIG1heF9wZm4gZm9yPw0KPiANCg0KSXQncyB1c2VkIHRvIGRlY2lkZSB0 aGUgbGVuZ3RoIG9mIHRoZSBmcmVlIHBhZ2UgYml0bWFwLiBJIGFtIG5vdCBzdXJlIGlmIHdlDQpj YW4gZ2V0IHRoaXMgaW5mb3JtYXRpb24gaW4gUUVNVSwgaWYgc28sIGl0IGNhbiBiZSByZW1vdmVk Lg0KDQo+IChXZSdsbCBhbHNvIGhhdmUgdG8gdGhpbmsgaG93IGhvdHBsdWdnZWQgbWVtb3J5IHdv cmtzIHdpdGggdGhpcykuDQo+IEFsc28gYmUgY2FyZWZ1bCBvZiBob3cgYmlnIGEgcGFnZSBpczsg IHNvbWUgYXJjaGl0ZWN0dXJlcyBjYW4gY2hvb3NlIGJldHdlZW4NCj4gZGlmZmVyZW50IGd1ZXN0 IHBhZ2Ugc2l6ZXMgKDQsIDE2LCA2NGsgSSB0aGluayBvbiBBUk0pLCBzbyB3ZSBqdXN0IG5lZWQg dG8NCj4gbWFrZSBzdXJlIHdoYXQgdW5pdCB3ZSdyZSBkZWFsaW5nIHdpdGguICBUaGF0IHNpemUg aXMgYWxzbyBub3QgbmVjZXNzYXJpbHkgdGhlDQo+IHNhbWUgYXMgdGhlIHVuaXQgc2l6ZSBvZiB0 aGUgbWlncmF0aW9uIGJpdG1hcDsgdGhpcyBpcyBhbHdheXMgYSBiaXQgdHJpY2t5Lg0KPiANCg0K VGhhbmtzIGZvciByZW1pbmRpbmcsIEkgaGF2ZSBub3QgdGhvdWdodCBhYm91dCB0aGUgbWVtb3J5 IGhvdCBwbHVnIHlldC4gDQoNCj4gPiBSZXR1cm4gdmFsdWU6DQo+ID4gZmxhc2UsIHdoZW4gUUVN VSBvciBndWVzdCBjYW7igJl0IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gdHJ1ZSwgd2hl biBzdWNjZXNzLg0KPiA+DQo+ID4gYi4gUmVxdWVzdCBndWVzdOKAmXMgY3VycmVudCBmcmVlIHBh Z2VzIGluZm9ybWF0aW9uLg0KPiA+IGludCBnZXRfZnJlZV9wYWdlX2JtYXAodW5zaWduZWQgbG9u ZyAqYml0bWFwLCAgYm9vbCBkcm9wX2NhY2hlKTsNCj4gPg0KPiA+IFJldHVybiB2YWx1ZToNCj4g PiAtMSwgd2hlbiBRRU1VIG9yIGd1ZXN0IGNhbuKAmXQgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4N Cj4gPiAxLCB3aGVuIHRoZSBmcmVlIHBhZ2UgYml0bWFwIGlzIHN0aWxsIGluIHRoZSBwcm9ncmVz cyBvZiBjb25zdHJ1Y3RpbmcuDQo+ID4gMSwgd2hlbiBhIHZhbGlkIGZyZWUgcGFnZSBiaXRtYXAg aXMgcmVhZHkuDQo+IA0KPiBJIHN1Z2dlc3Qgbm90IHVzaW5nICdsb25nJyAtIEkga25vdyB3ZSBk byBpdCBhIGxvdCBpbiBRRU1VIGJ1dCBpdCdzIGEgcGFpbjsgbGV0cw0KPiBuYWlsIHRoaXMgZG93 biB0byBhIHVpbnQ2NF90IGFuZCB0aGVuIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgd2hh dCB0aGUNCj4gZ3Vlc3QgaXMgcnVuaW5nLg0KPiANCg0KV2lsbCBjaGFuZ2UgaXQuDQoNCj4gPiBj LiBUaWdodGVuIHRoZSBmcmVlIHBhZ2UgYml0bWFwDQo+ID4gdW5zaWduZWQgbG9uZyAqIHRpZ2h0 ZW5fZnJlZV9wYWdlX2JtYXAodW5zaWduZWQgbG9uZyAqYml0bWFwKTsNCj4gPg0KPiA+IFRoaXMg ZnVuY3Rpb24gaXMgYW4gYXJjaCBzcGVjaWZpYyBmdW5jdGlvbiB0byByZWJ1aWxkIHRoZSBsb29z ZSBmcmVlDQo+ID4gcGFnZSBiaXRtYXAgc28gYXMgdG8gZ2V0IGEgdGlnaHQgYml0bWFwIHdoaWNo IGNhbiBiZSBvcGVyYXRlZCBlYXNpbHkNCj4gPiB3aXRoIHJhbWxpc3QuZGlydHlfbWVtb3J5Lg0K PiANCj4gSSdtIG5vdCBzdXJlIHlvdSBhY3R1YWxseSBuZWVkIHRoaXM7IGFzIGxvbmcgYXMgd2hh dCB5b3UgZXhwZWN0IGlzIGp1c3QgYSAoc21hbGwpDQo+IHNlcmllcyBvZiBjaHVua3Mgb2YgYml0 bWFwOyB0aGVuIHlvdSdkIGp1c3QgaGF2ZSBzb21ldGhpbmcgbGlrZSAoc3RhcnQgYXQgMC4uLiAp DQo+IChzdGFydCBhdCAxTUIuLi4pIChzdGFydCBhdCAxR0IuLi4uKQ0KPiANClllcywgaWYgdXNp bmcgdGhpcyBraW5kIG9mIGJpdG1hcCwgdGlnaHRlbl9mcmVlX3BhZ2VfYm1hcCBpcyBub3QgbmVl ZGVkLiBUaGFua3MhDQoNCj4gPiA4LiBQc2V1ZG8gY29kZQ0KPiA+IERpcnR5IHBhZ2UgbG9nZ2lu ZyBzaG91bGQgYmUgZW5hYmxlZCBiZWZvcmUgZ2V0dGluZyB0aGUgZnJlZSBwYWdlDQo+ID4gaW5m b3JtYXRpb24gZnJvbSBndWVzdCwgdGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBkdXJpbmcgdGhl IHByb2Nlc3MNCj4gPiBvZiBnZXR0aW5nIGZyZWUgcGFnZXMsIHNvbWUgZnJlZSBwYWdlcyBtYXkg YmUgdXNlZCBhbmQgd3JpdHRlbiBieSB0aGUNCj4gPiBndWVzdCwgZGlydHkgcGFnZSBsb2dnaW5n IGNhbiB0cmFjZSB0aGVzZSBwYWdlcy4gVGhlIHBzZXVkbyBjb2RlwqBpcw0KPiA+IGxpa2UgYmVs b3c6DQo+ID4NCj4gPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gPiAgICAgTWlncmF0aW9uU3RhdGUgKnMgPSBtaWdyYXRlX2dldF9jdXJyZW50 KCk7DQo+ID4gICAgIC4uLg0KPiA+DQo+ID4gICAgIG1lbW9yeV9nbG9iYWxfZGlydHlfbG9nX3N0 YXJ0KCk7DQo+ID4NCj4gPiAgICAgaWYgKGdldF9ndWVzdF9tZW1faW5mbygmaW5mbykpIHsNCj4g PiAgICAgICAgIHdoaWxlICghZ2V0X2ZyZWVfcGFnZV9ibWFwKGZyZWVfcGFnZV9iaXRtYXAsICBk cm9wX3BhZ2VfY2FjaGUpDQo+ICYmDQo+ID4gICAgICAgICAgICAgICAgcy0+c3RhdGUgIT0gTUlH UkFUSU9OX1NUQVRVU19DQU5DRUxMSU5HKSB7DQo+ID4gICAgICAgICAgICAgdXNsZWVwKDEwMDAp IC8vIHNsZWVwIGZvciAxIG1zDQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIHRpZ2h0 ZW5fZnJlZV9wYWdlX2JtYXAgPQ0KPiB0aWdodGVuX2d1ZXN0X2ZyZWVfcGFnZXMoZnJlZV9wYWdl X2JpdG1hcCk7DQo+ID4gICAgICAgICBmaWx0ZXJfb3V0X2d1ZXN0X2ZyZWVfcGFnZXModGlnaHRl bl9mcmVlX3BhZ2VfYm1hcCk7DQo+ID4gICAgIH0NCj4gDQo+IEdpdmVuIHRoZSB0eXBpY2FsIHNw ZWVkIG9mIG5ldHdvcmtzOyBpdCB3b3VsZG4ndCBkbyB0b28gbXVjaCBoYXJtIHRvIHN0YXJ0DQo+ IHNlbmRpbmcgYXNzdW1pbmcgYWxsIHBhZ2VzIGFyZSBkaXJ0eSBhbmQgdGhlbiB3aGVuIHRoZSBn dWVzdCBmaW5hbGx5IGdldHMNCj4gYXJvdW5kIHRvIGZpbmlzaGluZyB0aGUgYml0bWFwIHRoZW4g dXBkYXRlLCBzbyBpdCdzIGFzeW5jaHJvbm91cyAtIGFuZCB0aGVuIGlmDQo+IHRoZSBndWVzdCBu ZXZlciByZXNwb25kcyB3ZSBkb24ndCByZWFsbHkgY2FyZS4NCg0KSW5kZWVkLCB0aGFua3MhDQoN CkxpYW5nDQo+IA0KPiBEYXZlDQo+IA0KPiA+DQo+ID4gICAgIG1pZ3JhdGlvbl9iaXRtYXBfc3lu YygpOw0KPiA+ICAgICAuLi4NCj4gPg0KPiA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+DQo+ID4NCj4gPiAtLQ0KPiA+IDEuOS4xDQo+ID4N Cj4gLS0NCj4gRHIuIERhdmlkIEFsYW4gR2lsYmVydCAvIGRnaWxiZXJ0QHJlZGhhdC5jb20gLyBN YW5jaGVzdGVyLCBVSw0K