From mboxrd@z Thu Jan 1 00:00:00 1970 From: thfbjyddx Subject: Re: =?iso-2022-jp?b?GyRCMnMbKEI/PzogW1BBVENIIDAwLzIxXVtS?= =?iso-2022-jp?b?RkNdIHBvc3Rjb3B5IGxpdmU/bWlncmF0aW9u?= Date: Thu, 12 Jan 2012 21:26:03 +0800 Message-ID: References: <20120111024508.GV6819@valinux.co.jp> , <20120112085441.GA23322@valinux.co.jp> Reply-To: thfbjyddx Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_001_NextPart436702167583_=----" Cc: "t.hirofuchi" , qemu-devel , kvm , "satoshi.itoh" To: "Isaku Yamahata" Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org ------=_001_NextPart436702167583_=---- Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: base64 DQpEbyB5b3Uga25vdyB3aGF0IHdjaGFuIHRoZSBwcm9jZXNzIHdhcyBibG9ja2VkIGF0Pw0Ka3Zt X3ZjcHVfaW9jdGwoZW52LCBLVk1fU0VUX01TUlMsICZtc3JfZGF0YSkgZG9lc24ndCBzZWVtIHRv IGJsb2NrLg0KDQpJdCdzDQpXQ0hBTiAgICAgICAgICAgICAgQ09NTUFORA0KdW1lbV9mYXVsdC0t LS0tLXFlbXUtc3lzdGVtLXg4Ng0KDQoNCg0KDQoNClRvbW15DQoNCkZyb206IElzYWt1IFlhbWFo YXRhDQpEYXRlOiAyMDEyLTAxLTEyIDE2OjU0DQpUbzogdGhmYmp5ZGR4DQpDQzogdC5oaXJvZnVj aGk7IHFlbXUtZGV2ZWw7IGt2bTsgc2F0b3NoaS5pdG9oDQpTdWJqZWN0OiBSZTogW1FlbXUtZGV2 ZWxdGyRCMnMbKEI/PzogW1BBVENIIDAwLzIxXVtSRkNdIHBvc3Rjb3B5IGxpdmU/bWlncmF0aW9u DQpPbiBUaHUsIEphbiAxMiwgMjAxMiBhdCAwNDoyOTo0NFBNICswODAwLCB0aGZianlkZHggd3Jv dGU6DQo+IEhpICwgSSd2ZSBkdWcgbW9yZSB0aGVzcyBkYXlzDQo+ICANCj4gPiAocWVtdSkgbWln cmF0aW9uLXRjcDogQXR0ZW1wdGluZyB0byBzdGFydCBhbiBpbmNvbWluZyBtaWdyYXRpb24NCj4g PiBtaWdyYXRpb24tdGNwOiBhY2NlcHRlZCBtaWdyYXRpb24NCj4gPiA0ODcyOjQ4NzIgcG9zdGNv cHlfaW5jb21pbmdfcmFtX2xvYWQ6MTAxODogaW5jb21pbmcgcmFtIGxvYWQNCj4gPiA0ODcyOjQ4 NzIgcG9zdGNvcHlfaW5jb21pbmdfcmFtX2xvYWQ6MTAzMTogYWRkciAweDEwODcwMDAwIGZsYWdz IDB4NA0KPiA+IDQ4NzI6NDg3MiBwb3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDU3OiBkb25l DQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMTg6IGluY29taW5n IHJhbSBsb2FkDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMzE6 IGFkZHIgMHgwIGZsYWdzIDB4MTANCj4gPiA0ODcyOjQ4NzIgcG9zdGNvcHlfaW5jb21pbmdfcmFt X2xvYWQ6MTAzNzogRU9TDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2Fk OjEwMTg6IGluY29taW5nIHJhbSBsb2FkDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5n X3JhbV9sb2FkOjEwMzE6IGFkZHIgMHgwIGZsYWdzIDB4MTANCj4gPiA0ODcyOjQ4NzIgcG9zdGNv cHlfaW5jb21pbmdfcmFtX2xvYWQ6MTAzNzogRU9TDQo+ICANCj4gVGhlcmUgc2hvdWxkIGJlIG9u bHkgc2luZ2xlIEVPUyBsaW5lLiBKdXN0IGNvcHkgJiBwYXN0IG1pc3M/DQo+ICANCj4gVGhlcmUg bXVzdCBiZSB0d28gRU9TIGZvciBvbmUgaXMgY29taW5nIGZyb20gcG9zdGNvcHlfb3V0Z29pbmdf cmFtX3NhdmVfbGl2ZQ0KPiAoLi4uc3RhZ2UgPT0gUUVNVV9TQVZFX0xJVkVfU1RBR0VfUEFSVCkg YW5kIHRoZSBvdGhlciBpcw0KPiBwb3N0Y29weV9vdXRnb2luZ19yYW1fc2F2ZV9saXZlKC4uLnN0 YWdlID09IFFFTVVfU0FWRV9MSVZFX1NUQUdFX0VORCkNCj4gSSB0aGluayBpbiBwb3N0Y29weSB0 aGUgcmFtX3NhdmVfbGl2ZSBpbiB0aGUgaXRlcmF0ZSBwYXJ0IGNhbiBiZSBpZ25vcmUNCj4gc28g d2h5IHRoZXJlIHN0aWxsIGhhdmUgdGhlIHFlbXVfcHV0X2J5dGUoZiwgUUVNVV9WTV9TRUNUT05f UEFSVCkgYW5kDQo+IHFlbXVfcHV0X2J5dGUoZiwgUUVNVV9WTV9TRUNUT05fRU5EKSBpbiB0aGUg cHJvY2VkdXJlPyBJcyBpdCBlc3NlbnRpYWw/DQoNCk5vdCBzbyBlc3NlbnRpYWwuDQoNCj4gQ2Fu IHlvdSBwbGVhc2UgdHJhY2sgaXQgZG93biBvbmUgbW9yZSBzdGVwPw0KPiBXaGljaCBsaW5lIGRp ZCBpdCBzdHVjayBpbiBrdm1fcHV0X21zcnMoKT8ga3ZtX3B1dF9tc3JzKCkgZG9lc24ndCBzZWVt IHRvDQo+IGJsb2NrLihiYWNrdHJhY2UgYnkgdGhlIGRlYnVnZ2VyIHdvdWxkIGJlIGJlc3QuKQ0K Pg0KPiBpdCBnZXRzIHRvIHRoZSBrdm1fdmNwdV9pb2N0bChlbnYsIEtWTV9TRVRfTVNSUywgJm1z cl9kYXRhKSBhbmQgbmV2ZXIgcmV0dXJuDQo+IHNvIGl0IGdldHMgc3R1Y2sNCg0KRG8geW91IGtu b3cgd2hhdCB3Y2hhbiB0aGUgcHJvY2VzcyB3YXMgYmxvY2tlZCBhdD8NCmt2bV92Y3B1X2lvY3Rs KGVudiwgS1ZNX1NFVF9NU1JTLCAmbXNyX2RhdGEpIGRvZXNuJ3Qgc2VlbSB0byBibG9jay4NCg0K DQo+IHdoZW4gSSBjaGVjayB0aGUgRU9TIHByb2JsZW0NCj4gSSBqdXN0IGFubm90YXRlZCB0aGUg cWVtdV9wdXRfYnl0ZShmLCBRRU1VX1ZNX1NFQ1RJT05fUEFSVCk7IGFuZCBxZW11X3B1dF9iZTMy DQo+IChmLCBzZS0+c2VjdGlvbl9pZCkNCj4gIChJIHRoaW5rIHRoaXMgaXMgYSB3cm9uZyB3YXkg dG8gZml4IGl0IGFuZCBJIGRvbid0IGtub3cgaG93IGl0IGdldCB0aHJvdWdoKQ0KPiBhbmQgbGVh dmUganVzdCB0aGUgc2UtPnNhdmVfbGl2ZV9zdGF0ZSBpbiB0aGUgcWVtdV9zYXZldm1fc3RhdGVf aXRlcmF0ZQ0KPiBpdCBkaWRuJ3QgZ2V0IHN0dWNrIGF0IGt2bV9wdXRfbXNycygpDQo+IGJ1dCBp dCBoYXMgc29tZSBvdGhlciBlcnJvcg0KPiAocWVtdSkgbWlncmF0aW9uLXRjcDogQXR0ZW1wdGlu ZyB0byBzdGFydCBhbiBpbmNvbWluZyBtaWdyYXRpb24NCj4gbWlncmF0aW9uLXRjcDogYWNjZXB0 ZWQgbWlncmF0aW9uDQo+IDIxMjY6MjEyNiBwb3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDE4 OiBpbmNvbWluZyByYW0gbG9hZA0KPiAyMTI2OjIxMjYgcG9zdGNvcHlfaW5jb21pbmdfcmFtX2xv YWQ6MTAzMTogYWRkciAweDEwODcwMDAwIGZsYWdzIDB4NA0KPiAyMTI2OjIxMjYgcG9zdGNvcHlf aW5jb21pbmdfcmFtX2xvYWQ6MTA1NzogZG9uZQ0KPiBtaWdyYXRpb246IHN1Y2Nlc3NmdWxseSBs b2FkZWQgdm0gc3RhdGUNCj4gMjEyNjoyMTI2IHBvc3Rjb3B5X2luY29taW5nX2ZvcmtfdW1lbWQ6 MTA2OTogZm9yaw0KPiAyMTI2OjIxMjYgcG9zdGNvcHlfaW5jb21pbmdfZm9ya191bWVtZDoxMTI3 OiBxZW11IHBpZDogMjEyNiBkYWVtb24gcGlkOiAyMTI5DQo+IDIxMzA6MjEzMCBwb3N0Y29weV9p bmNvbWluZ191bWVtZDoxODQwOiBkYWVtb24gcGlkOiAyMTMwDQo+IDIxMzA6MjEzMCBwb3N0Y29w eV9pbmNvbWluZ191bWVtZDoxODc1OiBlbnRlcmluZyB1bWVtZCBtYWluIGxvb3ANCj4gQ2FuJ3Qg ZmluZCBibG9jayAhDQo+IDIxMzA6MjEzMCBwb3N0Y29weV9pbmNvbWluZ191bWVtX3JhbV9sb2Fk OjE1MjY6IHNobWVtID09IE5VTEwNCj4gMjEzMDoyMTMwIHBvc3Rjb3B5X2luY29taW5nX3VtZW1k OjE4ODI6IGV4aXRpbmcgdW1lbWQgbWFpbiBsb29wDQo+IGFuZCBhdCB0aGUgc2FtZSB0aW1lICwg dGhlIGRlc3RpbmF0aW9uIG5vZGUgZGlkbid0IHNob3cgdGhlIEVPUw0KPiAgDQo+IHNvIEkgc3Rp bGwgY2FuJ3Qgc29sdmUgdGhlIHN0dWNrIHByb2JsZW0NCj4gVGhhbmtzIGZvciB5b3VyIGhlbHB+ IQ0KPiAbJEIoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwo LCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwbKEINCj4gVG9tbXkNCj4gIA0KPiBGcm9tOiBJ c2FrdSBZYW1haGF0YQ0KPiBEYXRlOiAyMDEyLTAxLTExIDEwOjQ1DQo+IFRvOiB0aGZianlkZHgN Cj4gQ0M6IHQuaGlyb2Z1Y2hpOyBxZW11LWRldmVsOyBrdm07IHNhdG9zaGkuaXRvaA0KPiBTdWJq ZWN0OiBSZTogW1FlbXUtZGV2ZWxdGyRCMnMbKEI/PzogW1BBVENIIDAwLzIxXVtSRkNdIHBvc3Rj b3B5IGxpdmUgbWlncmF0aW9uDQo+IE9uIFNhdCwgSmFuIDA3LCAyMDEyIGF0IDA2OjI5OjE0UE0g KzA4MDAsIHRoZmJqeWRkeCB3cm90ZToNCj4gPiBIZWxsbyBhbGwhDQo+ICANCj4gSGksIHRoYW5r IHlvdSBmb3IgZGV0YWlsZWQgcmVwb3J0LiBUaGUgcHJvY2VkdXJlIHlvdSd2ZSB0cmllZCBsb29r cw0KPiBnb29kIGJhc2ljYWxseS4gU29tZSBjb21tZW50cyBiZWxvdy4NCj4gIA0KPiA+IEkgZ290 IHRoZSBxZW11IGJhc2ljIHZlcnNpb24oMDNlY2QyYzgwYTY0ZDAzMGEyMmZlNjdjYzdhNjBmMjRl MTdmZjIxMSkgYW5kDQo+ID4gcGF0Y2hlZCBpdCBjb3JyZWN0bHkNCj4gPiBidXQgaXQgc3RpbGwg ZGlkbid0IG1ha2Ugc2Vuc2UgYW5kIEkgZ290IHRoZSBzYW1lIHNjZW5hcmlvIGFzIGJlZm9yZQ0K PiA+IG91dGdvaW5nIG5vZGUgaW50ZWwgeDg2XzY0OyBpbmNvbWluZyBub2RlIGFtZCB4ODZfNjQu IGd1ZXN0IGltYWdlIGlzIG9uIG5mcw0KPiA+ICANCj4gPiBJIHRoaW5rIEkgc2hvdWxkIHNob3cg d2hhdCBJIGRvIG1vcmUgY2xlYXJseSBhbmQgaG9wZSBzb21lYm9keSBjYW4gZmlndXJlIG91dA0K PiA+IHRoZSBwcm9ibGVtDQo+ID4gDQo+ID4gIBskQiEmGyhCIDEsIGJvdGggaW4vb3V0IG5vZGUg cGF0Y2ggdGhlIHFlbXUgYW5kIHN0YXJ0IG9uIDMuMS43IGtlcm5lbCB3aXRoIHVtZW0NCj4gPiAN Cj4gPiAgICAgICAgLi9jb25maWd1cmUgLS10YXJnZXQtbGlzdD0NCj4geDg2XzY0LXNvZnRtbXUg LS1lbmFibGUta3ZtIC0tZW5hYmxlLXBvc3Rjb3B5DQo+ID4gLS1lbmFibGUtZGVidWcNCj4gPiAg ICAgICAgbWFrZQ0KPiA+ICAgICAgICBtYWtlIGluc3RhbGwNCj4gPiANCj4gPiAgGyRCISYbKEIg Miwgb3V0Z29pbmcgcWVtdToNCj4gPiANCj4gPiBxZW11LXN5c3RlbS14ODZfNjQgLW0gMjU2IC1o ZGEgeHh4IC1tb25pdG9yIHN0ZGlvIC12bmM6IDIgLXVzYmRldmljZSB0YWJsZXQNCj4gPiAtbWFj aGluZSBhY2NlbD1rdm0NCj4gPiBpbmNvbWluZyBxZW11Og0KPiA+IHFlbXUtc3lzdGVtLXg4Nl82 NCAtbSAyNTYgLWhkYSB4eHggLXBvc3Rjb3B5IC1pbmNvbWluZyB0Y3A6MDo4ODg4IC1tb25pdG9y DQo+ID4gc3RkaW8gLXZuYzogMiAtdXNiZGV2aWNlIHRhYmxldCAtbWFjaGluZSBhY2NlbD1rdm0N Cj4gPiANCj4gPiAgGyRCISYbKEIgMywgb3V0Z29pbmcgbm9kZToNCj4gPiANCj4gPiBtaWdyYXRl IC1kIC1wIC1uIHRjcDooaW5jb21pbmcgbm9kZSBpcCk6ODg4OA0KPiA+ICANCj4gPiByZXN1bHQ6 DQo+ID4gDQo+ID4gIBskQiEmGyhCIG91dGdvaW5nIHFlbXU6DQo+ID4gDQo+ID4gaW5mbyBzdGF0 dXM6IFZNLXN0YXR1czogcGF1c2VkIChmaW5pc2gtbWlncmF0ZSk7DQo+ID4gDQo+ID4gIBskQiEm GyhCIGluY29taW5nIHFlbXU6DQo+ID4gDQo+ID4gY2FuJ3QgdHlwZSBhbnkgbW9yZSBhbmQgY2Fu J3Qga2lsbCB0aGUgcHJvY2VzcyhxZW11LXN5c3RlbS14ODYpDQo+ID4gIA0KPiA+IEkgb3BlbiB0 aGUgZGVidWcgZmxhZyBpbiBtaWdyYXRpb24uYyBtaWdyYXRpb24tdGNwLmMgbWlncmF0aW9uLXBv c3Rjb3B5LmM6DQo+ID4gDQo+ID4gIBskQiEmGyhCIG91dGdvaW5nIHFlbXU6DQo+ID4gDQo+ID4g KHFlbXUpIG1pZ3JhdGlvbi10Y3A6IGNvbm5lY3QgY29tcGxldGVkDQo+ID4gbWlncmF0aW9uOiBi ZWdpbm5pbmcgc2F2ZXZtDQo+ID4gNDUwMDo0NTAwIHBvc3Rjb3B5X291dGdvaW5nX3JhbV9zYXZl X2xpdmU6NTQwOiBzdGFnZSAxDQo+ID4gbWlncmF0aW9uOiBpdGVyYXRlDQo+ID4gNDUwMDo0NTAw IHBvc3Rjb3B5X291dGdvaW5nX3JhbV9zYXZlX2xpdmU6NTQwOiBzdGFnZSAyDQo+ID4gbWlncmF0 aW9uOiBkb25lIGl0ZXJhdGluZw0KPiA+IDQ1MDA6NDUwMCBwb3N0Y29weV9vdXRnb2luZ19yYW1f c2F2ZV9saXZlOjU0MDogc3RhZ2UgMw0KPiA+IDQ1MDA6NDUwMCBwb3N0Y29weV9vdXRnb2luZ19i ZWdpbjo3MTY6IG91dGdvaW5nIGJlZ2luDQo+ID4gDQo+ID4gIBskQiEmGyhCIGluY29taW5nIHFl bXU6DQo+ID4gDQo+ID4gKHFlbXUpIG1pZ3JhdGlvbi10Y3A6IEF0dGVtcHRpbmcgdG8gc3RhcnQg YW4gaW5jb21pbmcgbWlncmF0aW9uDQo+ID4gbWlncmF0aW9uLXRjcDogYWNjZXB0ZWQgbWlncmF0 aW9uDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMTg6IGluY29t aW5nIHJhbSBsb2FkDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEw MzE6IGFkZHIgMHgxMDg3MDAwMCBmbGFncyAweDQNCj4gPiA0ODcyOjQ4NzIgcG9zdGNvcHlfaW5j b21pbmdfcmFtX2xvYWQ6MTA1NzogZG9uZQ0KPiA+IDQ4NzI6NDg3MiBwb3N0Y29weV9pbmNvbWlu Z19yYW1fbG9hZDoxMDE4OiBpbmNvbWluZyByYW0gbG9hZA0KPiA+IDQ4NzI6NDg3MiBwb3N0Y29w eV9pbmNvbWluZ19yYW1fbG9hZDoxMDMxOiBhZGRyIDB4MCBmbGFncyAweDEwDQo+ID4gNDg3Mjo0 ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMzc6IEVPUw0KPiA+IDQ4NzI6NDg3MiBw b3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDE4OiBpbmNvbWluZyByYW0gbG9hZA0KPiA+IDQ4 NzI6NDg3MiBwb3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDMxOiBhZGRyIDB4MCBmbGFncyAw eDEwDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMzc6IEVPUw0K PiAgDQo+IFRoZXJlIHNob3VsZCBiZSBvbmx5IHNpbmdsZSBFT1MgbGluZS4gSnVzdCBjb3B5ICYg cGFzdCBtaXNzPw0KPiAgDQo+ICANCj4gPiBmcm9tIHRoZSByZXN1bHQ6DQo+ID4gSXQgZGlkbid0 IGdldCB0byB0aGUgInN1Y2Nlc3NmdWxseSBsb2FkZWQgdm0gc3RhdGUiDQo+ID4gU28gaXQgc3Rp bGwgaW4gdGhlIHFlbXVfbG9hZHZtX3N0YXRlLCBhbmQgSSBmb3VuZCBpdCdzIGluDQo+ID4gY3B1 X3N5bmNocm9uaXplX2FsbF9wb3N0X2luaXQtPmt2bV9hcmNoX3B1dF9yZWdpc3RlcnMtPmt2bV9w dXRfbXNycyBhbmQgZ290DQo+ID4gc3R1Y2sNCj4gIA0KPiBDYW4geW91IHBsZWFzZSB0cmFjayBp dCBkb3duIG9uZSBtb3JlIHN0ZXA/DQo+IFdoaWNoIGxpbmUgZGlkIGl0IHN0dWNrIGluIGt2bV9w dXRfbXNycygpPyBrdm1fcHV0X21zcnMoKSBkb2Vzbid0IHNlZW0gdG8NCj4gYmxvY2suKGJhY2t0 cmFjZSBieSB0aGUgZGVidWdnZXIgd291bGQgYmUgYmVzdC4pDQo+ICANCj4gSWYgcG9zc2libGUs IGNhbiB5b3UgcGxlYXNlIHRlc3Qgd2l0aCBtb3JlIHNpbXBsaWZpZWQgY29uZmlndXJhdGlvbi4N Cj4gaS5lLiBkcm9wIGRldmljZSBhcyBtdWNoIGFzIHBvc3NpYmxlIGkuZS4gbm8gdXNiZGV2aWNl LCBubyBkaXNrLi4uDQo+IFNvIHRoZSBkZWJ1ZyB3aWxsIGJlIHNpbXBsaWZpZWQuDQo+ICANCj4g dGhhbmtzLA0KPiAgDQo+ID4gRG9lcyBhbnlvbmUgZ2l2ZSBzb21lIGFkdmlzZXMgb24gdGhlIHBy b2JsZW0/DQo+ID4gVGhhbmtzIHZlcnkgbXVjaH4NCj4gPiAgDQo+ID4gGyRCKCwoLCgsKCwoLCgs KCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwo LCgsKCwoLBsoQg0KPiAbJEIoLBsoQg0KPiA+IFRvbW15DQo+ID4gIA0KPiA+IEZyb206IElzYWt1 IFlhbWFoYXRhDQo+ID4gRGF0ZTogMjAxMS0xMi0yOSAwOToyNQ0KPiA+IFRvOiBrdm07IHFlbXUt ZGV2ZWwNCj4gPiBDQzogeWFtYWhhdGE7IHQuaGlyb2Z1Y2hpOyBzYXRvc2hpLml0b2gNCj4gPiBT dWJqZWN0OiBbUWVtdS1kZXZlbF0gW1BBVENIIDAwLzIxXVtSRkNdIHBvc3Rjb3B5IGxpdmUgbWln cmF0aW9uDQo+ID4gSW50cm8NCj4gPiA9PT09PQ0KPiA+IFRoaXMgcGF0Y2ggc2VyaWVzIGltcGxl bWVudHMgcG9zdGNvcHkgbGl2ZSBtaWdyYXRpb24uWzFdDQo+ID4gQXMgZGlzY3Vzc2VkIGF0IEtW TSBmb3J1bSAyMDExLCBkZWRpY2F0ZWQgY2hhcmFjdGVyIGRldmljZSBpcyB1c2VkIGZvcg0KPiA+ IGRpc3RyaWJ1dGVkIHNoYXJlZCBtZW1vcnkgYmV0d2VlbiBtaWdyYXRpb24gc291cmNlIGFuZCBk ZXN0aW5hdGlvbi4NCj4gPiBOb3cgd2UgY2FuIGRpc2N1c3MvYmVuY2htYXJrL2NvbXBhcmUgd2l0 aCBwcmVjb3B5LiBJIGJlbGlldmUgdGhlcmUgYXJlDQo+ID4gbXVjaCByb29tcyBmb3IgaW1wcm92 ZW1lbnQuDQo+ID4gIA0KPiA+IFsxXSBodHRwOi8vd2lraS5xZW11Lm9yZy9GZWF0dXJlcy9Qb3N0 Q29weUxpdmVNaWdyYXRpb24NCj4gPiAgDQo+ID4gIA0KPiA+IFVzYWdlDQo+ID4gPT09PT0NCj4g PiBZb3UgbmVlZCBsb2FkIHVtZW0gY2hhcmFjdGVyIGRldmljZSBvbiB0aGUgaG9zdCBiZWZvcmUg c3RhcnRpbmcgbWlncmF0aW9uLg0KPiA+IFBvc3Rjb3B5IGNhbiBiZSB1c2VkIGZvciB0Y2cgYW5k IGt2bSBhY2NlbGFyYXRvci4gVGhlIGltcGxlbWVudGF0aW9uIGRlcGVuZA0KPiA+IG9uIG9ubHkg bGludXggdW1lbSBjaGFyYWN0ZXIgZGV2aWNlLiBCdXQgdGhlIGRyaXZlciBkZXBlbmRlbnQgY29k ZSBpcyBzcGxpdA0KPiA+IGludG8gYSBmaWxlLg0KPiA+IEkgdGVzdGVkIG9ubHkgaG9zdCBwYWdl IHNpemUgPT0gZ3Vlc3QgcGFnZSBzaXplIGNhc2UsIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24NCj4g PiBhbGxvd3MgaG9zdCBwYWdlIHNpemUgIT0gZ3Vlc3QgcGFnZSBzaXplIGNhc2UuDQo+ID4gIA0K PiA+IFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWRkZWQgd2l0aCB0aGlzIHBhdGNoIHNlcmll cy4NCj4gPiAtIGluY29taW5nIHBhcnQNCj4gPiAgIGNvbW1hbmQgbGluZSBvcHRpb25zDQo+ID4g ICAtcG9zdGNvcHkgWy1wb3N0Y29weS1mbGFncyA8ZmxhZ3M+XQ0KPiA+ICAgd2hlcmUgZmxhZ3Mg aXMgZm9yIGNoYW5naW5nIGJlaGF2aW9yIGZvciBiZW5jaG1hcmsvZGVidWdnaW5nDQo+ID4gICBD dXJyZW50bHkgdGhlIGZvbGxvd2luZyBmbGFncyBhcmUgYXZhaWxhYmxlDQo+ID4gICAwOiBkZWZh dWx0DQo+ID4gICAxOiBlbmFibGUgdG91Y2hpbmcgcGFnZSByZXF1ZXN0DQo+ID4gIA0KPiA+ICAg ZXhhbXBsZToNCj4gPiAgIHFlbXUgLXBvc3Rjb3B5IC1pbmNvbWluZyB0Y3A6MDo0NDQ0IC1tb25p dG9yIHN0ZGlvIC1tYWNoaW5lIGFjY2VsPWt2bQ0KPiA+ICANCj4gPiAtIG91dGdpbmcgcGFydA0K PiA+ICAgb3B0aW9ucyBmb3IgbWlncmF0ZSBjb21tYW5kIA0KPiA+ICAgbWlncmF0ZSBbLXAgWy1u XV0gVVJJDQo+ID4gICAtcDogaW5kaWNhdGUgcG9zdGNvcHkgbWlncmF0aW9uDQo+ID4gICAtbjog ZGlzYWJsZSBiYWNrZ3JvdW5kIHRyYW5zZmVycmluZyBwYWdlczogVGhpcyBpcyBmb3IgYmVuY2ht YXJrL2RlYnVnZ2luZw0KPiA+ICANCj4gPiAgIGV4YW1wbGU6DQo+ID4gICBtaWdyYXRlIC1wIC1u IHRjcDo8ZGVzdCBpcCBhZGRyZXNzPjo0NDQ0DQo+ID4gIA0KPiA+ICANCj4gPiBUT0RPDQo+ID4g PT09PQ0KPiA+IC0gYmVuY2htYXJrL2V2YWx1YXRpb24uIEVzcGVjaWFsbHkgaG93IGFzeW5jIHBh Z2UgZmF1bHQgYWZmZWN0cyB0aGUgcmVzdWx0Lg0KPiA+IC0gaW1wcm92ZS9vcHRpbWl6YXRpb24N Cj4gPiAgIEF0IHRoZSBtb21lbnQgYXQgbGVhc3Qgd2hhdCBJJ20gYXdhcmUgb2YgaXMNCj4gPiAg IC0gdG91Y2hpbmcgcGFnZXMgaW4gaW5jb21pbmcgcWVtdSBwcm9jZXNzIGJ5IGZkIGhhbmRsZXIg c2VlbXMgc3Vib3B0aW1hbC4NCj4gPiAgICAgY3JlYXRpbmcgZGVkaWNhdGVkIHRocmVhZD8NCj4g PiAgIC0gbWFraW5nIGluY29taW5nIHNvY2tldCBub24tYmxvY2tpbmcNCj4gPiAgIC0gb3V0Z29p bmcgaGFuZGxlciBzZWVtcyBzdWJvcHRpbWFsIGNhdXNpbmcgbGF0ZW5jeS4NCj4gPiAtIGNhdGNo IHVwIG1lbW9yeSBBUEkgY2hhbmdlDQo+ID4gLSBjb25zaWRlciBvbiBGVVNFL0NVU0UgcG9zc2li aWxpdHkNCj4gPiAtIGFuZCBtb3JlLi4uDQo+ID4gIA0KPiA+IGJhc2ljIHBvc3Rjb3B5IHdvcmsg Zmxvdw0KPiA+ID09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ICAgICAgICAgcWVtdSBvbiB0 aGUgZGVzdGluYXRpb24NCj4gPiAgICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYN Cj4gPiAgICAgICAgIG9wZW4oL2Rldi91bWVtKQ0KPiA+ICAgICAgICAgICAgICAgfA0KPiA+ICAg ICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgVU1FTV9ERVZfQ1JFQVRFX1VNRU0NCj4gPiAgICAg ICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYNCj4gPiAgICAgICAgIEhlcmUgd2UgaGF2 ZSB0d28gZmlsZSBkZXNjcmlwdG9ycyB0bw0KPiA+ICAgICAgICAgdW1lbSBkZXZpY2UgYW5kIHNo bWVtIGZpbGUNCj4gPiAgICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1lbWQNCj4gPiAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFlbW9uIG9uIHRoZSBkZXN0aW5hdGlvbg0K PiA+ICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICBjcmVhdGUgcGlwZSB0 byBjb21tdW5pY2F0ZQ0KPiA+ICAgICAgICAgZm9yaygpLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLA0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgY2xvc2Uoc29ja2V0KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgY2xvc2Uoc2htZW0pICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbW1hcChzaG1lbSBmaWxlKQ0KPiA+ICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAg ICAgICAgViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAg ICAgbW1hcCh1bWVtIGRldmljZSkgZm9yIGd1ZXN0IFJBTSAgICAgICAgICAgY2xvc2Uoc2htZW0g ZmlsZSkNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwNCj4gPiAgICAgICAgIGNsb3NlKHVtZW0gZGV2aWNlKSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgIHdhaXQgZm9yIHJlYWR5IGZyb20gZGFlbW9u IDwtLS0tcGlwZS0tLS0tc2VuZCByZWFkeSBtZXNzYWdlDQo+ID4gICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSB0aGUgZGFlbW9uIHRha2VzIG92 ZXIgDQo+ID4gICAgICAgICBzZW5kIG9rLS0tLS0tLS0tLS0tcGlwZS0tLS0tLS0tLS0tLS0tLT4g dGhlIG93bmVyIG9mIHRoZSBzb2NrZXQgICAgDQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAg dG8gdGhlIHNvdXJjZSAgICAgICAgICAgICAgDQo+ID4gICAgICAgICAgICAgICBWICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICBlbnRlcmluZyBwb3N0 IGNvcHkgc3RhZ2UgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICBzdGFydCBndWVz dCBleGVjdXRpb24gICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAg ICBWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gICAgICAgICBh Y2Nlc3MgZ3Vlc3QgUkFNICAgICAgICAgICAgICAgICAgICAgICAgICBVTUVNX0dFVF9QQUdFX1JF UVVFU1QNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFYNCj4gPiAgICAgICAgIHBhZ2UgZmF1bHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tPnBhZ2Ugb2Zmc2V0IGlzIHJldHVybmVkDQo+ID4gICAgICAgICBibG9jayAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWxsIHBhZ2UgZnJvbSB0aGUg c291cmNlDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3cml0ZSB0aGUgcGFnZSBjb250ZW50cw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHNobWVtLg0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAg ICAgdW5ibG9jayAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVU1FTV9NQVJLX1BB R0VfQ0FDSEVEDQo+ID4gICAgICAgICB0aGUgZmF1bHQgaGFuZGxlciByZXR1cm5zIHRoZSBwYWdl DQo+ID4gICAgICAgICBwYWdlIGZhdWx0IGlzIHJlc29sdmVkDQo+ID4gICAgICAgICAgICAgICB8 DQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWdlcyBjYW4gYmUgc2VudA0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmFja2dyb3VuZGx5DQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTUVNX01BUktfUEFHRV9DQUNIRUQNCj4g PiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwN Cj4gPiAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFYNCj4gPiAgICAgICAgIFRoZSBzcGVjaWZpZWQgcGFnZXM8LS0tLS1waXBlLS0tLS0tLS0tLS0t cmVxdWVzdCB0byB0b3VjaCBwYWdlcw0KPiA+ICAgICAgICAgYXJlIG1hZGUgcHJlc2VudCBieSAg ICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgdG91Y2hpbmcgZ3Vlc3QgUkFN LiAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgICAgICByZXBs eS0tLS0tLS0tLS0tLS1waXBlLS0tLS0tLS0tLS0tLT4gcmVsZWFzZSB0aGUgY2FjaGVkIHBhZ2UN Cj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h ZHZpc2UoTUFEVl9SRU1PVkUpDQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICBWICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gIA0KPiA+ICAgICAgICAgICAgICAgICAgYWxs IHRoZSBwYWdlcyBhcmUgcHVsbGVkIGZyb20gdGhlIHNvdXJjZQ0KPiA+ICANCj4gPiAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiAgICAg ICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYNCj4gPiAg ICAgICAgIHRoZSB2bWEgYmVjb21lcyBhbm9ueW1vdXM8LS0tLS0tLS0tLS0tLS0tLVVNRU1fTUFL RV9WTUFfQU5PTllNT1VTDQo+ID4gICAgICAgIChub3RlOiBJJ20gbm90IHN1cmUgaWYgdGhpcyBj YW4gYmUgaW1wbGVtZW50ZWQgb3Igbm90KQ0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgbWlncmF0aW9uIGNv bXBsZXRlcyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoKQ0KPiA+ICANCj4gPiAgDQo+ID4g IA0KPiA+IElzYWt1IFlhbWFoYXRhICgyMSk6DQo+ID4gICBhcmNoX2luaXQ6IGV4cG9ydCBzb3J0 X3JhbV9saXN0KCkgYW5kIHJhbV9zYXZlX2Jsb2NrKCkNCj4gPiAgIGFyY2hfaW5pdDogZXhwb3J0 IFJBTV9TQVZFX3h4eCBmbGFncyBmb3IgcG9zdGNvcHkNCj4gPiAgIGFyY2hfaW5pdC9yYW1fc2F2 ZTogaW50cm9kdWNlIGNvbnN0YW50IGZvciByYW0gc2F2ZSB2ZXJzaW9uID0gNA0KPiA+ICAgYXJj aF9pbml0OiByZWZhY3RvciBob3N0X2Zyb21fc3RyZWFtX29mZnNldCgpDQo+ID4gICBhcmNoX2lu aXQvcmFtX3NhdmVfbGl2ZTogZmFjdG9yIG91dCBSQU1fU0FWRV9GTEFHX01FTV9TSVpFIGNhc2UN Cj4gPiAgIGFyY2hfaW5pdDogcmVmYWN0b3IgcmFtX3NhdmVfYmxvY2soKQ0KPiA+ICAgYXJjaF9p bml0L3JhbV9zYXZlX2xpdmU6IGZhY3RvciBvdXQgcmFtX3NhdmVfbGltaXQNCj4gPiAgIGFyY2hf aW5pdC9yYW1fbG9hZDogcmVmYWN0b3IgcmFtX2xvYWQNCj4gPiAgIGV4ZWMuYzogZmFjdG9yIG91 dCBxZW11X2dldF9yYW1fcHRyKCkNCj4gPiAgIGV4ZWMuYzogZXhwb3J0IGxhc3RfcmFtX29mZnNl dCgpDQo+ID4gICBzYXZldm06IGV4cG9ydCBxZW11X3BlZWtfYnVmZmVyLCBxZW11X3BlZWtfYnl0 ZSwgcWVtdV9maWxlX3NraXANCj4gPiAgIHNhdmV2bTogcWVtdV9wZW5kaW5nX3NpemUoKSB0byBy ZXR1cm4gcGVuZGluZyBidWZmZXJlZCBzaXplDQo+ID4gICBzYXZldm0sIGJ1ZmZlcmVkX2ZpbGU6 IGludHJvZHVjZSBtZXRob2QgdG8gZHJhaW4gYnVmZmVyIG9mIGJ1ZmZlcmVkDQo+ID4gICAgIGZp bGUNCj4gPiAgIG1pZ3JhdGlvbjogZXhwb3J0IG1pZ3JhdGVfZmRfY29tcGxldGVkKCkgYW5kIG1p Z3JhdGVfZmRfY2xlYW51cCgpDQo+ID4gICBtaWdyYXRpb246IGZhY3RvciBvdXQgcGFyYW1ldGVy cyBpbnRvIE1pZ3JhdGlvblBhcmFtcw0KPiA+ICAgdW1lbS5oOiBpbXBvcnQgTGludXggdW1lbS5o DQo+ID4gICB1cGRhdGUtbGludXgtaGVhZGVycy5zaDogdGVhY2ggdW1lbS5oIHRvIHVwZGF0ZS1s aW51eC1oZWFkZXJzLnNoDQo+ID4gICBjb25maWd1cmU6IGFkZCBDT05GSUdfUE9TVENPUFkgb3B0 aW9uDQo+ID4gICBwb3N0Y29weTogaW50cm9kdWNlIC1wb3N0Y29weSBhbmQgLXBvc3Rjb3B5LWZs YWdzIG9wdGlvbg0KPiA+ICAgcG9zdGNvcHkgb3V0Z29pbmc6IGFkZCAtcCBhbmQgLW4gb3B0aW9u IHRvIG1pZ3JhdGUgY29tbWFuZA0KPiA+ICAgcG9zdGNvcHk6IGltcGxlbWVudCBwb3N0Y29weSBs aXZlbWlncmF0aW9uDQo+ID4gIA0KPiA+ICBNYWtlZmlsZS50YXJnZXQgICAgICAgICAgICAgICAg IHwgICAgNCArDQo+ID4gIGFyY2hfaW5pdC5jICAgICAgICAgICAgICAgICAgICAgfCAgMjYwICsr KystLS0NCj4gPiAgYXJjaF9pbml0LmggICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKw0KPiA+ ICBibG9jay1taWdyYXRpb24uYyAgICAgICAgICAgICAgIHwgICAgOCArLQ0KPiA+ICBidWZmZXJl ZF9maWxlLmMgICAgICAgICAgICAgICAgIHwgICAyMCArLQ0KPiA+ICBidWZmZXJlZF9maWxlLmgg ICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ID4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEyICsNCj4gPiAgY3B1LWFsbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDkgKw0KPiA+ICBleGVjLW9ic29sZXRlLmggICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ID4g IGV4ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1ICstDQo+ID4gIGhtcC1jb21t YW5kcy5oeCAgICAgICAgICAgICAgICAgfCAgIDEyICstDQo+ID4gIGh3L2h3LmggICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA3ICstDQo+ID4gIGxpbnV4LWhlYWRlcnMvbGludXgvdW1lbS5o ICAgICAgfCAgIDgzICsrDQo+ID4gIG1pZ3JhdGlvbi1leGVjLmMgICAgICAgICAgICAgICAgfCAg ICA4ICsNCj4gPiAgbWlncmF0aW9uLWZkLmMgICAgICAgICAgICAgICAgICB8ICAgMzAgKw0KPiA+ ICBtaWdyYXRpb24tcG9zdGNvcHktc3R1Yi5jICAgICAgIHwgICA3NyArKw0KPiA+ICBtaWdyYXRp b24tcG9zdGNvcHkuYyAgICAgICAgICAgIHwNCj4gIDE4OTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4gIG1pZ3JhdGlvbi10Y3AuYyAgICAgICAgICAgICAgICAg fCAgIDM3ICstDQo+ID4gIG1pZ3JhdGlvbi11bml4LmMgICAgICAgICAgICAgICAgfCAgIDMyICst DQo+ID4gIG1pZ3JhdGlvbi5jICAgICAgICAgICAgICAgICAgICAgfCAgIDUzICstDQo+ID4gIG1p Z3JhdGlvbi5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQ5ICstDQo+ID4gIHFlbXUtY29tbW9u LmggICAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gPiAgcWVtdS1vcHRpb25zLmh4ICAgICAg ICAgICAgICAgICB8ICAgMjUgKw0KPiA+ICBxbXAtY29tbWFuZHMuaHggICAgICAgICAgICAgICAg IHwgICAxMCArLQ0KPiA+ICBzYXZldm0uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSAr LQ0KPiA+ICBzY3JpcHRzL3VwZGF0ZS1saW51eC1oZWFkZXJzLnNoIHwgICAgMiArLQ0KPiA+ICBz eXNlbXUuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQ0KPiA+ICB1bWVtLmMgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDM3OSArKysrKysrKw0KPiA+ICB1bWVtLmggICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDEwNSArKysNCj4gPiAgdmwuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMjAgKy0NCj4gPiAgMzAgZmlsZXMgY2hhbmdlZCwgMzA4NiBpbnNlcnRp b25zKCspLCAxODEgZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaW51eC1o ZWFkZXJzL2xpbnV4L3VtZW0uaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbWlncmF0aW9uLXBv c3Rjb3B5LXN0dWIuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbWlncmF0aW9uLXBvc3Rjb3B5 LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVtZW0uYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdW1lbS5oDQo+ID4gIA0KPiA+ICANCj4gPiAgDQo+ICANCj4gLS0gDQo+IHlhbWFoYXRhDQo+ ICANCj4gIA0KDQotLSANCnlhbWFoYXRh ------=_001_NextPart436702167583_=---- Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable
 
Do you know what wchan the process = ;was blocked at?
kvm_vcpu_ioctl(env, KVM_SET_MSRS, &msr_data) doesn= 't seem to block.
 
It's
WCHAN          &nbs= p;  =20 COMMAND
umem_fault------qemu-system-x86
 
 

Tommy
 
Date: 2012-01-12 16:54
CC: t.hirofuchi= ; qemu-devel; kvm; satoshi.itoh
Subject: Re: [Qemu-devel]=1B$B2s=1B(B??: [PATCH 00/21][RF= C] postcopy=20 live?migration
On Thu, Jan 12, 2012 at 04:29:44PM = ;+0800, thfbjyddx wrote:
> Hi , I've dug more thess days=
>  
> > (qemu) migration-tcp: Attempting t= o start an incoming migration
> > migration-tcp: accepted migration
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x10870000 flags 0x4
> > 4872:4872 postcopy_incoming_ram_load:1057:&n= bsp;done
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
>  
> There should be only single EOS&nb= sp;line. Just copy & past miss?
>  
> There must be two EOS for one=  is coming from postcopy_outgoing_ram_save_live
> (...stage =3D=3D QEMU_SAVE_LIVE_STAGE_PART) = and the other is
> postcopy_outgoing_ram_save_live(...stage =3D=3D Q= EMU_SAVE_LIVE_STAGE_END)
> I think in postcopy the ram_save_l= ive in the iterate part can be ignore
> so why there still have the q= emu_put_byte(f, QEMU_VM_SECTON_PART) and
> qemu_put_byte(f, QEMU_VM_SECTON_END) in the&= nbsp;procedure? Is it essential?
 
Not so essential.
 
> Can you please track it down = one more step?
> Which line did it stuck in kv= m_put_msrs()? kvm_put_msrs() doesn't seem to
> block.(backtrace by the debugger would&= nbsp;be best.)
>
> it gets to the kvm_vcpu_ioctl(env, = ;KVM_SET_MSRS, &msr_data) and never return
> so it gets stuck
 
Do you know what wchan the process = ;was blocked at?
kvm_vcpu_ioctl(env, KVM_SET_MSRS, &msr_data) doesn= 't seem to block.
 
 
> when I check the EOS problem
> I just annotated the qemu_put_byte(f,&n= bsp;QEMU_VM_SECTION_PART); and qemu_put_be32
> (f, se->section_id)
>  (I think this is a wrong&nbs= p;way to fix it and I don't know h= ow it get through)
> and leave just the se->save_live_sta= te in the qemu_savevm_state_iterate
> it didn't get stuck at kvm_put_msr= s()
> but it has some other error
> (qemu) migration-tcp: Attempting to sta= rt an incoming migration
> migration-tcp: accepted migration
> 2126:2126 postcopy_incoming_ram_load:1018: incomi= ng ram load
> 2126:2126 postcopy_incoming_ram_load:1031: addr&n= bsp;0x10870000 flags 0x4
> 2126:2126 postcopy_incoming_ram_load:1057: done
> migration: successfully loaded vm state=
> 2126:2126 postcopy_incoming_fork_umemd:1069: fork=
> 2126:2126 postcopy_incoming_fork_umemd:1127: qemu=  pid: 2126 daemon pid: 2129
> 2130:2130 postcopy_incoming_umemd:1840: daemon&nb= sp;pid: 2130
> 2130:2130 postcopy_incoming_umemd:1875: entering&= nbsp;umemd main loop
> Can't find block !
> 2130:2130 postcopy_incoming_umem_ram_load:1526: s= hmem =3D=3D NULL
> 2130:2130 postcopy_incoming_umemd:1882: exiting&n= bsp;umemd main loop
> and at the same time , the&nb= sp;destination node didn't show the EOS
>  
> so I still can't solve the st= uck problem
> Thanks for your help~!
> =1B$B(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,= (,(,(,(,(,(,(,(,(,(,(,(,=1B(B
> Tommy
>  
> From: Isaku Yamahata
> Date: 2012-01-11 10:45
> To: thfbjyddx
> CC: t.hirofuchi; qemu-devel; kvm; satos= hi.itoh
> Subject: Re: [Qemu-devel]=1B$B2s=1B(B??: [PA= TCH 00/21][RFC] postcopy live migration
> On Sat, Jan 07, 2012 at 06:29= :14PM +0800, thfbjyddx wrote:
> > Hello all!
>  
> Hi, thank you for detailed report.=  The procedure you've tried looks
> good basically. Some comments below.
>  
> > I got the qemu basic ver= sion(03ecd2c80a64d030a22fe67cc7a60f24e17ff211) and
> > patched it correctly
> > but it still didn't make = ;sense and I got the same scenario as&n= bsp;before
> > outgoing node intel x86_64; i= ncoming node amd x86_64. guest image is = ;on nfs
> >  
> > I think I should show wh= at I do more clearly and hope somebody&= nbsp;can figure out
> > the problem
> > 
> >  =1B$B!&=1B(B 1, both in/out&= nbsp;node patch the qemu and start on 3= .1.7 kernel with umem
> > 
> >        ./confi= gure --target-list=3D
> x86_64-softmmu --enable-kvm --enable-postcopy
> > --enable-debug
> >        make
> >        make&nb= sp;install
> > 
> >  =1B$B!&=1B(B 2, outgoing qem= u:
> > 
> > qemu-system-x86_64 -m 256 -hda&nbs= p;xxx -monitor stdio -vnc: 2 -usbdevice tabl= et
> > -machine accel=3Dkvm
> > incoming qemu:
> > qemu-system-x86_64 -m 256 -hda&nbs= p;xxx -postcopy -incoming tcp:0:8888 -monitor
> > stdio -vnc: 2 -usbdevice tabl= et -machine accel=3Dkvm
> > 
> >  =1B$B!&=1B(B 3, outgoing nod= e:
> > 
> > migrate -d -p -n tcp:(incomin= g node ip):8888
> >  
> > result:
> > 
> >  =1B$B!&=1B(B outgoing qemu:
> > 
> > info status: VM-status: paused&nbs= p;(finish-migrate);
> > 
> >  =1B$B!&=1B(B incoming qemu:
> > 
> > can't type any more and = can't kill the process(qemu-system-x86)
> >  
> > I open the debug flag in=  migration.c migration-tcp.c migration-postcopy.c:
> > 
> >  =1B$B!&=1B(B outgoing qemu:
> > 
> > (qemu) migration-tcp: connect comp= leted
> > migration: beginning savevm
> > 4500:4500 postcopy_outgoing_ram_save_live:54= 0: stage 1
> > migration: iterate
> > 4500:4500 postcopy_outgoing_ram_save_live:54= 0: stage 2
> > migration: done iterating
> > 4500:4500 postcopy_outgoing_ram_save_live:54= 0: stage 3
> > 4500:4500 postcopy_outgoing_begin:716: = outgoing begin
> > 
> >  =1B$B!&=1B(B incoming qemu:
> > 
> > (qemu) migration-tcp: Attempting t= o start an incoming migration
> > migration-tcp: accepted migration
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x10870000 flags 0x4
> > 4872:4872 postcopy_incoming_ram_load:1057:&n= bsp;done
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
>  
> There should be only single EOS&nb= sp;line. Just copy & past miss?
>  
>  
> > from the result:
> > It didn't get to the "su= ccessfully loaded vm state"
> > So it still in the qemu_= loadvm_state, and I found it's in
> > cpu_synchronize_all_post_init->kvm_arch_put_re= gisters->kvm_put_msrs and got
> > stuck
>  
> Can you please track it down = one more step?
> Which line did it stuck in kv= m_put_msrs()? kvm_put_msrs() doesn't seem to
> block.(backtrace by the debugger would&= nbsp;be best.)
>  
> If possible, can you please test&n= bsp;with more simplified configuration.
> i.e. drop device as much as p= ossible i.e. no usbdevice, no disk...
> So the debug will be simplified.
>  
> thanks,
>  
> > Does anyone give some advises=  on the problem?
> > Thanks very much~
> >  
> > =1B$B(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,= (,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,=1B(B
> =1B$B(,=1B(B
> > Tommy
> >  
> > From: Isaku Yamahata
> > Date: 2011-12-29 09:25
> > To: kvm; qemu-devel
> > CC: yamahata; t.hirofuchi; satoshi= .itoh
> > Subject: [Qemu-devel] [PATCH 00/21= ][RFC] postcopy live migration
> > Intro
> > =3D=3D=3D=3D=3D
> > This patch series implements = postcopy live migration.[1]
> > As discussed at KVM forum&nbs= p;2011, dedicated character device is used f= or
> > distributed shared memory between&= nbsp;migration source and destination.
> > Now we can discuss/benchmark/compa= re with precopy. I believe there are
> > much rooms for improvement.
> >  
> > [1] http://wiki.qemu.org/Features/PostCopyLi= veMigration
> >  
> >  
> > Usage
> > =3D=3D=3D=3D=3D
> > You need load umem character&= nbsp;device on the host before starting migr= ation.
> > Postcopy can be used for = ;tcg and kvm accelarator. The implementation = ;depend
> > on only linux umem character&= nbsp;device. But the driver dependent code i= s split
> > into a file.
> > I tested only host page = size =3D=3D guest page size case, but t= he implementation
> > allows host page size !=3D&nb= sp;guest page size case.
> >  
> > The following options are add= ed with this patch series.
> > - incoming part
> >   command line options
> >   -postcopy [-postcopy-flags = <flags>]
> >   where flags is for&nbs= p;changing behavior for benchmark/debugging
> >   Currently the following&nbs= p;flags are available
> >   0: default
> >   1: enable touching pag= e request
> >  
> >   example:
> >   qemu -postcopy -incoming&nb= sp;tcp:0:4444 -monitor stdio -machine accel=3Dkvm
> >  
> > - outging part
> >   options for migrate co= mmand 
> >   migrate [-p [-n]] URI<= /DIV>
> >   -p: indicate postcopy = migration
> >   -n: disable background = ;transferring pages: This is for benchmark/debugg= ing
> >  
> >   example:
> >   migrate -p -n tcp:<= dest ip address>:4444
> >  
> >  
> > TODO
> > =3D=3D=3D=3D
> > - benchmark/evaluation. Especially = ;how async page fault affects the result.
> > - improve/optimization
> >   At the moment at = least what I'm aware of is
> >   - touching pages in&nb= sp;incoming qemu process by fd handler seems=  suboptimal.
> >     creating dedicated&n= bsp;thread?
> >   - making incoming sock= et non-blocking
> >   - outgoing handler see= ms suboptimal causing latency.
> > - catch up memory API ch= ange
> > - consider on FUSE/CUSE possi= bility
> > - and more...
> >  
> > basic postcopy work flow
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D
> >         q= emu on the destination
> >         &= nbsp;     |
> >         &= nbsp;     V
> >         o= pen(/dev/umem)
> >         &= nbsp;     |
> >         &= nbsp;     V
> >         U= MEM_DEV_CREATE_UMEM
> >         &= nbsp;     |
> >         &= nbsp;     V
> >         H= ere we have two file descriptors to
> >         u= mem device and shmem file
> >         &= nbsp;     |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =    umemd
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =    daemon on the destination
> >         &= nbsp;     |
> >         &= nbsp;     V    create pi= pe to communicate
> >         f= ork()---------------------------------------,
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        |
> >         c= lose(socket)          &n= bsp;           &nbs= p;         V
> >         c= lose(shmem)          &nb= sp;            = ;       mmap(shmem file)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         m= map(umem device) for guest RAM    =        close(shmem file)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         c= lose(umem device)        &nbs= p;            =       |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        |
> >         w= ait for ready from daemon <----pipe-----send&n= bsp;ready message
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =   Here the daemon takes over 
> >         s= end ok------------pipe---------------> the owner of=  the socket    
> >         &= nbsp;     |      &n= bsp;  to the source      = ;        
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        |
> >         e= ntering post copy stage      =             &n= bsp;  |
> >         s= tart guest execution       &n= bsp;           &nbs= p;    |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         a= ccess guest RAM        &= nbsp;           &nb= sp;     UMEM_GET_PAGE_REQUEST
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         p= age fault ------------------------------>page offset&nbs= p;is returned
> >         b= lock           &nbs= p;            =             &n= bsp;   |
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;       V
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;    pull page from the source=
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;    write the page contents
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;    to the shmem.
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;       |
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;       V
> >         u= nblock     <-----------------------------UMEM_= MARK_PAGE_CACHED
> >         t= he fault handler returns the page
> >         p= age fault is resolved
> >         &= nbsp;     |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     pages can be sent
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     backgroundly
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        V
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     UMEM_MARK_PAGE_CACHED
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         T= he specified pages<-----pipe------------request to = touch pages
> >         a= re made present by       = ;            &= nbsp;      |
> >         t= ouching guest RAM.       &nbs= p;            =       |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         &= nbsp;    reply-------------pipe-------------> = release the cached page
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     madvise(MADV_REMOVE)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >  
> >         &= nbsp;        all the pag= es are pulled from the source
> >  
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         t= he vma becomes anonymous<----------------UMEM_MAKE_VMA_A= NONYMOUS
> >        (note:&= nbsp;I'm not sure if this can be implem= ented or not)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         m= igration completes        &nb= sp;            = ;   exit()
> >  
> >  
> >  
> > Isaku Yamahata (21):
> >   arch_init: export sort_ram_= list() and ram_save_block()
> >   arch_init: export RAM_SAVE_= xxx flags for postcopy
> >   arch_init/ram_save: introduce&nb= sp;constant for ram save version =3D 4
> >   arch_init: refactor host_fr= om_stream_offset()
> >   arch_init/ram_save_live: factor&= nbsp;out RAM_SAVE_FLAG_MEM_SIZE case
> >   arch_init: refactor ram_sav= e_block()
> >   arch_init/ram_save_live: factor&= nbsp;out ram_save_limit
> >   arch_init/ram_load: refactor&nbs= p;ram_load
> >   exec.c: factor out qem= u_get_ram_ptr()
> >   exec.c: export last_ram_off= set()
> >   savevm: export qemu_peek_bu= ffer, qemu_peek_byte, qemu_file_skip
> >   savevm: qemu_pending_size() = ;to return pending buffered size
> >   savevm, buffered_file: intr= oduce method to drain buffer of buffered
> >     file
> >   migration: export migrate_f= d_completed() and migrate_fd_cleanup()
> >   migration: factor out = parameters into MigrationParams
> >   umem.h: import Linux u= mem.h
> >   update-linux-headers.sh: teach&n= bsp;umem.h to update-linux-headers.sh
> >   configure: add CONFIG_POSTC= OPY option
> >   postcopy: introduce -postco= py and -postcopy-flags option
> >   postcopy outgoing: add = ;-p and -n option to migrate command
> >   postcopy: implement postcop= y livemigration
> >  
> >  Makefile.target    &nbs= p;            = |    4 +
> >  arch_init.c     &n= bsp;           &nbs= p;   |  260 ++++---
> >  arch_init.h     &n= bsp;           &nbs= p;   |   20 +
> >  block-migration.c    &n= bsp;          | &nb= sp;  8 +-
> >  buffered_file.c    &nbs= p;            = |   20 +-
> >  buffered_file.h    &nbs= p;            = |    1 +
> >  configure     &nbs= p;            =      |   12 +
> >  cpu-all.h     &nbs= p;            =      |    9 +
> >  exec-obsolete.h    &nbs= p;            = |    1 +
> >  exec.c      &= nbsp;           &nb= sp;       |   75 +-=
> >  hmp-commands.hx    &nbs= p;            = |   12 +-
> >  hw/hw.h      =             &n= bsp;      |    7 +-=
> >  linux-headers/linux/umem.h   = ;   |   83 ++
> >  migration-exec.c    &nb= sp;           |&nbs= p;   8 +
> >  migration-fd.c     = ;            &= nbsp;|   30 +
> >  migration-postcopy-stub.c   =     |   77 ++
> >  migration-postcopy.c    = ;        |
>  1891 +++++++++++++++++++++++++++++++++++++++
> >  migration-tcp.c    &nbs= p;            = |   37 +-
> >  migration-unix.c    &nb= sp;           |&nbs= p;  32 +-
> >  migration.c     &n= bsp;           &nbs= p;   |   53 +-
> >  migration.h     &n= bsp;           &nbs= p;   |   49 +-
> >  qemu-common.h     =             &n= bsp; |    2 +
> >  qemu-options.hx    &nbs= p;            = |   25 +
> >  qmp-commands.hx    &nbs= p;            = |   10 +-
> >  savevm.c      = ;            &= nbsp;     |   31 +-
> >  scripts/update-linux-headers.sh | = ;   2 +-
> >  sysemu.h      = ;            &= nbsp;     |    4 +-
> >  umem.c      &= nbsp;           &nb= sp;       |  379 +++++++= +
> >  umem.h      &= nbsp;           &nb= sp;       |  105 +++
> >  vl.c      &nb= sp;            = ;         |   = 20 +-
> >  30 files changed, 3086 = insertions(+), 181 deletions(-)
> >  create mode 100644 linux-hea= ders/linux/umem.h
> >  create mode 100644 migration= -postcopy-stub.c
> >  create mode 100644 migration= -postcopy.c
> >  create mode 100644 umem.c
> >  create mode 100644 umem.h
> >  
> >  
> >  
>  
> -- 
> yamahata
>  
>  
 
-- 
yamahata
 
 
------=_001_NextPart436702167583_=------ From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:53052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlKfY-0001Fb-HG for qemu-devel@nongnu.org; Thu, 12 Jan 2012 08:26:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlKfR-00009J-0A for qemu-devel@nongnu.org; Thu, 12 Jan 2012 08:26:16 -0500 Received: from blu0-omc3-s27.blu0.hotmail.com ([65.55.116.102]:25110) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlKfQ-00009B-Ng for qemu-devel@nongnu.org; Thu, 12 Jan 2012 08:26:08 -0500 Message-ID: Date: Thu, 12 Jan 2012 21:26:03 +0800 From: thfbjyddx References: <20120111024508.GV6819@valinux.co.jp> , <20120112085441.GA23322@valinux.co.jp> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_001_NextPart436702167583_=----" Subject: Re: [Qemu-devel] =?iso-2022-jp?b?GyRCMnMbKEI/PzogW1BBVENIIDAwLzIxXVtS?= =?iso-2022-jp?b?RkNdIHBvc3Rjb3B5IGxpdmU/bWlncmF0aW9u?= Reply-To: thfbjyddx List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Isaku Yamahata Cc: "t.hirofuchi" , qemu-devel , kvm , "satoshi.itoh" ------=_001_NextPart436702167583_=---- Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: base64 DQpEbyB5b3Uga25vdyB3aGF0IHdjaGFuIHRoZSBwcm9jZXNzIHdhcyBibG9ja2VkIGF0Pw0Ka3Zt X3ZjcHVfaW9jdGwoZW52LCBLVk1fU0VUX01TUlMsICZtc3JfZGF0YSkgZG9lc24ndCBzZWVtIHRv IGJsb2NrLg0KDQpJdCdzDQpXQ0hBTiAgICAgICAgICAgICAgQ09NTUFORA0KdW1lbV9mYXVsdC0t LS0tLXFlbXUtc3lzdGVtLXg4Ng0KDQoNCg0KDQoNClRvbW15DQoNCkZyb206IElzYWt1IFlhbWFo YXRhDQpEYXRlOiAyMDEyLTAxLTEyIDE2OjU0DQpUbzogdGhmYmp5ZGR4DQpDQzogdC5oaXJvZnVj aGk7IHFlbXUtZGV2ZWw7IGt2bTsgc2F0b3NoaS5pdG9oDQpTdWJqZWN0OiBSZTogW1FlbXUtZGV2 ZWxdGyRCMnMbKEI/PzogW1BBVENIIDAwLzIxXVtSRkNdIHBvc3Rjb3B5IGxpdmU/bWlncmF0aW9u DQpPbiBUaHUsIEphbiAxMiwgMjAxMiBhdCAwNDoyOTo0NFBNICswODAwLCB0aGZianlkZHggd3Jv dGU6DQo+IEhpICwgSSd2ZSBkdWcgbW9yZSB0aGVzcyBkYXlzDQo+ICANCj4gPiAocWVtdSkgbWln cmF0aW9uLXRjcDogQXR0ZW1wdGluZyB0byBzdGFydCBhbiBpbmNvbWluZyBtaWdyYXRpb24NCj4g PiBtaWdyYXRpb24tdGNwOiBhY2NlcHRlZCBtaWdyYXRpb24NCj4gPiA0ODcyOjQ4NzIgcG9zdGNv cHlfaW5jb21pbmdfcmFtX2xvYWQ6MTAxODogaW5jb21pbmcgcmFtIGxvYWQNCj4gPiA0ODcyOjQ4 NzIgcG9zdGNvcHlfaW5jb21pbmdfcmFtX2xvYWQ6MTAzMTogYWRkciAweDEwODcwMDAwIGZsYWdz IDB4NA0KPiA+IDQ4NzI6NDg3MiBwb3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDU3OiBkb25l DQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMTg6IGluY29taW5n IHJhbSBsb2FkDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMzE6 IGFkZHIgMHgwIGZsYWdzIDB4MTANCj4gPiA0ODcyOjQ4NzIgcG9zdGNvcHlfaW5jb21pbmdfcmFt X2xvYWQ6MTAzNzogRU9TDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2Fk OjEwMTg6IGluY29taW5nIHJhbSBsb2FkDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5n X3JhbV9sb2FkOjEwMzE6IGFkZHIgMHgwIGZsYWdzIDB4MTANCj4gPiA0ODcyOjQ4NzIgcG9zdGNv cHlfaW5jb21pbmdfcmFtX2xvYWQ6MTAzNzogRU9TDQo+ICANCj4gVGhlcmUgc2hvdWxkIGJlIG9u bHkgc2luZ2xlIEVPUyBsaW5lLiBKdXN0IGNvcHkgJiBwYXN0IG1pc3M/DQo+ICANCj4gVGhlcmUg bXVzdCBiZSB0d28gRU9TIGZvciBvbmUgaXMgY29taW5nIGZyb20gcG9zdGNvcHlfb3V0Z29pbmdf cmFtX3NhdmVfbGl2ZQ0KPiAoLi4uc3RhZ2UgPT0gUUVNVV9TQVZFX0xJVkVfU1RBR0VfUEFSVCkg YW5kIHRoZSBvdGhlciBpcw0KPiBwb3N0Y29weV9vdXRnb2luZ19yYW1fc2F2ZV9saXZlKC4uLnN0 YWdlID09IFFFTVVfU0FWRV9MSVZFX1NUQUdFX0VORCkNCj4gSSB0aGluayBpbiBwb3N0Y29weSB0 aGUgcmFtX3NhdmVfbGl2ZSBpbiB0aGUgaXRlcmF0ZSBwYXJ0IGNhbiBiZSBpZ25vcmUNCj4gc28g d2h5IHRoZXJlIHN0aWxsIGhhdmUgdGhlIHFlbXVfcHV0X2J5dGUoZiwgUUVNVV9WTV9TRUNUT05f UEFSVCkgYW5kDQo+IHFlbXVfcHV0X2J5dGUoZiwgUUVNVV9WTV9TRUNUT05fRU5EKSBpbiB0aGUg cHJvY2VkdXJlPyBJcyBpdCBlc3NlbnRpYWw/DQoNCk5vdCBzbyBlc3NlbnRpYWwuDQoNCj4gQ2Fu IHlvdSBwbGVhc2UgdHJhY2sgaXQgZG93biBvbmUgbW9yZSBzdGVwPw0KPiBXaGljaCBsaW5lIGRp ZCBpdCBzdHVjayBpbiBrdm1fcHV0X21zcnMoKT8ga3ZtX3B1dF9tc3JzKCkgZG9lc24ndCBzZWVt IHRvDQo+IGJsb2NrLihiYWNrdHJhY2UgYnkgdGhlIGRlYnVnZ2VyIHdvdWxkIGJlIGJlc3QuKQ0K Pg0KPiBpdCBnZXRzIHRvIHRoZSBrdm1fdmNwdV9pb2N0bChlbnYsIEtWTV9TRVRfTVNSUywgJm1z cl9kYXRhKSBhbmQgbmV2ZXIgcmV0dXJuDQo+IHNvIGl0IGdldHMgc3R1Y2sNCg0KRG8geW91IGtu b3cgd2hhdCB3Y2hhbiB0aGUgcHJvY2VzcyB3YXMgYmxvY2tlZCBhdD8NCmt2bV92Y3B1X2lvY3Rs KGVudiwgS1ZNX1NFVF9NU1JTLCAmbXNyX2RhdGEpIGRvZXNuJ3Qgc2VlbSB0byBibG9jay4NCg0K DQo+IHdoZW4gSSBjaGVjayB0aGUgRU9TIHByb2JsZW0NCj4gSSBqdXN0IGFubm90YXRlZCB0aGUg cWVtdV9wdXRfYnl0ZShmLCBRRU1VX1ZNX1NFQ1RJT05fUEFSVCk7IGFuZCBxZW11X3B1dF9iZTMy DQo+IChmLCBzZS0+c2VjdGlvbl9pZCkNCj4gIChJIHRoaW5rIHRoaXMgaXMgYSB3cm9uZyB3YXkg dG8gZml4IGl0IGFuZCBJIGRvbid0IGtub3cgaG93IGl0IGdldCB0aHJvdWdoKQ0KPiBhbmQgbGVh dmUganVzdCB0aGUgc2UtPnNhdmVfbGl2ZV9zdGF0ZSBpbiB0aGUgcWVtdV9zYXZldm1fc3RhdGVf aXRlcmF0ZQ0KPiBpdCBkaWRuJ3QgZ2V0IHN0dWNrIGF0IGt2bV9wdXRfbXNycygpDQo+IGJ1dCBp dCBoYXMgc29tZSBvdGhlciBlcnJvcg0KPiAocWVtdSkgbWlncmF0aW9uLXRjcDogQXR0ZW1wdGlu ZyB0byBzdGFydCBhbiBpbmNvbWluZyBtaWdyYXRpb24NCj4gbWlncmF0aW9uLXRjcDogYWNjZXB0 ZWQgbWlncmF0aW9uDQo+IDIxMjY6MjEyNiBwb3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDE4 OiBpbmNvbWluZyByYW0gbG9hZA0KPiAyMTI2OjIxMjYgcG9zdGNvcHlfaW5jb21pbmdfcmFtX2xv YWQ6MTAzMTogYWRkciAweDEwODcwMDAwIGZsYWdzIDB4NA0KPiAyMTI2OjIxMjYgcG9zdGNvcHlf aW5jb21pbmdfcmFtX2xvYWQ6MTA1NzogZG9uZQ0KPiBtaWdyYXRpb246IHN1Y2Nlc3NmdWxseSBs b2FkZWQgdm0gc3RhdGUNCj4gMjEyNjoyMTI2IHBvc3Rjb3B5X2luY29taW5nX2ZvcmtfdW1lbWQ6 MTA2OTogZm9yaw0KPiAyMTI2OjIxMjYgcG9zdGNvcHlfaW5jb21pbmdfZm9ya191bWVtZDoxMTI3 OiBxZW11IHBpZDogMjEyNiBkYWVtb24gcGlkOiAyMTI5DQo+IDIxMzA6MjEzMCBwb3N0Y29weV9p bmNvbWluZ191bWVtZDoxODQwOiBkYWVtb24gcGlkOiAyMTMwDQo+IDIxMzA6MjEzMCBwb3N0Y29w eV9pbmNvbWluZ191bWVtZDoxODc1OiBlbnRlcmluZyB1bWVtZCBtYWluIGxvb3ANCj4gQ2FuJ3Qg ZmluZCBibG9jayAhDQo+IDIxMzA6MjEzMCBwb3N0Y29weV9pbmNvbWluZ191bWVtX3JhbV9sb2Fk OjE1MjY6IHNobWVtID09IE5VTEwNCj4gMjEzMDoyMTMwIHBvc3Rjb3B5X2luY29taW5nX3VtZW1k OjE4ODI6IGV4aXRpbmcgdW1lbWQgbWFpbiBsb29wDQo+IGFuZCBhdCB0aGUgc2FtZSB0aW1lICwg dGhlIGRlc3RpbmF0aW9uIG5vZGUgZGlkbid0IHNob3cgdGhlIEVPUw0KPiAgDQo+IHNvIEkgc3Rp bGwgY2FuJ3Qgc29sdmUgdGhlIHN0dWNrIHByb2JsZW0NCj4gVGhhbmtzIGZvciB5b3VyIGhlbHB+ IQ0KPiAbJEIoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwo LCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwbKEINCj4gVG9tbXkNCj4gIA0KPiBGcm9tOiBJ c2FrdSBZYW1haGF0YQ0KPiBEYXRlOiAyMDEyLTAxLTExIDEwOjQ1DQo+IFRvOiB0aGZianlkZHgN Cj4gQ0M6IHQuaGlyb2Z1Y2hpOyBxZW11LWRldmVsOyBrdm07IHNhdG9zaGkuaXRvaA0KPiBTdWJq ZWN0OiBSZTogW1FlbXUtZGV2ZWxdGyRCMnMbKEI/PzogW1BBVENIIDAwLzIxXVtSRkNdIHBvc3Rj b3B5IGxpdmUgbWlncmF0aW9uDQo+IE9uIFNhdCwgSmFuIDA3LCAyMDEyIGF0IDA2OjI5OjE0UE0g KzA4MDAsIHRoZmJqeWRkeCB3cm90ZToNCj4gPiBIZWxsbyBhbGwhDQo+ICANCj4gSGksIHRoYW5r IHlvdSBmb3IgZGV0YWlsZWQgcmVwb3J0LiBUaGUgcHJvY2VkdXJlIHlvdSd2ZSB0cmllZCBsb29r cw0KPiBnb29kIGJhc2ljYWxseS4gU29tZSBjb21tZW50cyBiZWxvdy4NCj4gIA0KPiA+IEkgZ290 IHRoZSBxZW11IGJhc2ljIHZlcnNpb24oMDNlY2QyYzgwYTY0ZDAzMGEyMmZlNjdjYzdhNjBmMjRl MTdmZjIxMSkgYW5kDQo+ID4gcGF0Y2hlZCBpdCBjb3JyZWN0bHkNCj4gPiBidXQgaXQgc3RpbGwg ZGlkbid0IG1ha2Ugc2Vuc2UgYW5kIEkgZ290IHRoZSBzYW1lIHNjZW5hcmlvIGFzIGJlZm9yZQ0K PiA+IG91dGdvaW5nIG5vZGUgaW50ZWwgeDg2XzY0OyBpbmNvbWluZyBub2RlIGFtZCB4ODZfNjQu IGd1ZXN0IGltYWdlIGlzIG9uIG5mcw0KPiA+ICANCj4gPiBJIHRoaW5rIEkgc2hvdWxkIHNob3cg d2hhdCBJIGRvIG1vcmUgY2xlYXJseSBhbmQgaG9wZSBzb21lYm9keSBjYW4gZmlndXJlIG91dA0K PiA+IHRoZSBwcm9ibGVtDQo+ID4gDQo+ID4gIBskQiEmGyhCIDEsIGJvdGggaW4vb3V0IG5vZGUg cGF0Y2ggdGhlIHFlbXUgYW5kIHN0YXJ0IG9uIDMuMS43IGtlcm5lbCB3aXRoIHVtZW0NCj4gPiAN Cj4gPiAgICAgICAgLi9jb25maWd1cmUgLS10YXJnZXQtbGlzdD0NCj4geDg2XzY0LXNvZnRtbXUg LS1lbmFibGUta3ZtIC0tZW5hYmxlLXBvc3Rjb3B5DQo+ID4gLS1lbmFibGUtZGVidWcNCj4gPiAg ICAgICAgbWFrZQ0KPiA+ICAgICAgICBtYWtlIGluc3RhbGwNCj4gPiANCj4gPiAgGyRCISYbKEIg Miwgb3V0Z29pbmcgcWVtdToNCj4gPiANCj4gPiBxZW11LXN5c3RlbS14ODZfNjQgLW0gMjU2IC1o ZGEgeHh4IC1tb25pdG9yIHN0ZGlvIC12bmM6IDIgLXVzYmRldmljZSB0YWJsZXQNCj4gPiAtbWFj aGluZSBhY2NlbD1rdm0NCj4gPiBpbmNvbWluZyBxZW11Og0KPiA+IHFlbXUtc3lzdGVtLXg4Nl82 NCAtbSAyNTYgLWhkYSB4eHggLXBvc3Rjb3B5IC1pbmNvbWluZyB0Y3A6MDo4ODg4IC1tb25pdG9y DQo+ID4gc3RkaW8gLXZuYzogMiAtdXNiZGV2aWNlIHRhYmxldCAtbWFjaGluZSBhY2NlbD1rdm0N Cj4gPiANCj4gPiAgGyRCISYbKEIgMywgb3V0Z29pbmcgbm9kZToNCj4gPiANCj4gPiBtaWdyYXRl IC1kIC1wIC1uIHRjcDooaW5jb21pbmcgbm9kZSBpcCk6ODg4OA0KPiA+ICANCj4gPiByZXN1bHQ6 DQo+ID4gDQo+ID4gIBskQiEmGyhCIG91dGdvaW5nIHFlbXU6DQo+ID4gDQo+ID4gaW5mbyBzdGF0 dXM6IFZNLXN0YXR1czogcGF1c2VkIChmaW5pc2gtbWlncmF0ZSk7DQo+ID4gDQo+ID4gIBskQiEm GyhCIGluY29taW5nIHFlbXU6DQo+ID4gDQo+ID4gY2FuJ3QgdHlwZSBhbnkgbW9yZSBhbmQgY2Fu J3Qga2lsbCB0aGUgcHJvY2VzcyhxZW11LXN5c3RlbS14ODYpDQo+ID4gIA0KPiA+IEkgb3BlbiB0 aGUgZGVidWcgZmxhZyBpbiBtaWdyYXRpb24uYyBtaWdyYXRpb24tdGNwLmMgbWlncmF0aW9uLXBv c3Rjb3B5LmM6DQo+ID4gDQo+ID4gIBskQiEmGyhCIG91dGdvaW5nIHFlbXU6DQo+ID4gDQo+ID4g KHFlbXUpIG1pZ3JhdGlvbi10Y3A6IGNvbm5lY3QgY29tcGxldGVkDQo+ID4gbWlncmF0aW9uOiBi ZWdpbm5pbmcgc2F2ZXZtDQo+ID4gNDUwMDo0NTAwIHBvc3Rjb3B5X291dGdvaW5nX3JhbV9zYXZl X2xpdmU6NTQwOiBzdGFnZSAxDQo+ID4gbWlncmF0aW9uOiBpdGVyYXRlDQo+ID4gNDUwMDo0NTAw IHBvc3Rjb3B5X291dGdvaW5nX3JhbV9zYXZlX2xpdmU6NTQwOiBzdGFnZSAyDQo+ID4gbWlncmF0 aW9uOiBkb25lIGl0ZXJhdGluZw0KPiA+IDQ1MDA6NDUwMCBwb3N0Y29weV9vdXRnb2luZ19yYW1f c2F2ZV9saXZlOjU0MDogc3RhZ2UgMw0KPiA+IDQ1MDA6NDUwMCBwb3N0Y29weV9vdXRnb2luZ19i ZWdpbjo3MTY6IG91dGdvaW5nIGJlZ2luDQo+ID4gDQo+ID4gIBskQiEmGyhCIGluY29taW5nIHFl bXU6DQo+ID4gDQo+ID4gKHFlbXUpIG1pZ3JhdGlvbi10Y3A6IEF0dGVtcHRpbmcgdG8gc3RhcnQg YW4gaW5jb21pbmcgbWlncmF0aW9uDQo+ID4gbWlncmF0aW9uLXRjcDogYWNjZXB0ZWQgbWlncmF0 aW9uDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMTg6IGluY29t aW5nIHJhbSBsb2FkDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEw MzE6IGFkZHIgMHgxMDg3MDAwMCBmbGFncyAweDQNCj4gPiA0ODcyOjQ4NzIgcG9zdGNvcHlfaW5j b21pbmdfcmFtX2xvYWQ6MTA1NzogZG9uZQ0KPiA+IDQ4NzI6NDg3MiBwb3N0Y29weV9pbmNvbWlu Z19yYW1fbG9hZDoxMDE4OiBpbmNvbWluZyByYW0gbG9hZA0KPiA+IDQ4NzI6NDg3MiBwb3N0Y29w eV9pbmNvbWluZ19yYW1fbG9hZDoxMDMxOiBhZGRyIDB4MCBmbGFncyAweDEwDQo+ID4gNDg3Mjo0 ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMzc6IEVPUw0KPiA+IDQ4NzI6NDg3MiBw b3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDE4OiBpbmNvbWluZyByYW0gbG9hZA0KPiA+IDQ4 NzI6NDg3MiBwb3N0Y29weV9pbmNvbWluZ19yYW1fbG9hZDoxMDMxOiBhZGRyIDB4MCBmbGFncyAw eDEwDQo+ID4gNDg3Mjo0ODcyIHBvc3Rjb3B5X2luY29taW5nX3JhbV9sb2FkOjEwMzc6IEVPUw0K PiAgDQo+IFRoZXJlIHNob3VsZCBiZSBvbmx5IHNpbmdsZSBFT1MgbGluZS4gSnVzdCBjb3B5ICYg cGFzdCBtaXNzPw0KPiAgDQo+ICANCj4gPiBmcm9tIHRoZSByZXN1bHQ6DQo+ID4gSXQgZGlkbid0 IGdldCB0byB0aGUgInN1Y2Nlc3NmdWxseSBsb2FkZWQgdm0gc3RhdGUiDQo+ID4gU28gaXQgc3Rp bGwgaW4gdGhlIHFlbXVfbG9hZHZtX3N0YXRlLCBhbmQgSSBmb3VuZCBpdCdzIGluDQo+ID4gY3B1 X3N5bmNocm9uaXplX2FsbF9wb3N0X2luaXQtPmt2bV9hcmNoX3B1dF9yZWdpc3RlcnMtPmt2bV9w dXRfbXNycyBhbmQgZ290DQo+ID4gc3R1Y2sNCj4gIA0KPiBDYW4geW91IHBsZWFzZSB0cmFjayBp dCBkb3duIG9uZSBtb3JlIHN0ZXA/DQo+IFdoaWNoIGxpbmUgZGlkIGl0IHN0dWNrIGluIGt2bV9w dXRfbXNycygpPyBrdm1fcHV0X21zcnMoKSBkb2Vzbid0IHNlZW0gdG8NCj4gYmxvY2suKGJhY2t0 cmFjZSBieSB0aGUgZGVidWdnZXIgd291bGQgYmUgYmVzdC4pDQo+ICANCj4gSWYgcG9zc2libGUs IGNhbiB5b3UgcGxlYXNlIHRlc3Qgd2l0aCBtb3JlIHNpbXBsaWZpZWQgY29uZmlndXJhdGlvbi4N Cj4gaS5lLiBkcm9wIGRldmljZSBhcyBtdWNoIGFzIHBvc3NpYmxlIGkuZS4gbm8gdXNiZGV2aWNl LCBubyBkaXNrLi4uDQo+IFNvIHRoZSBkZWJ1ZyB3aWxsIGJlIHNpbXBsaWZpZWQuDQo+ICANCj4g dGhhbmtzLA0KPiAgDQo+ID4gRG9lcyBhbnlvbmUgZ2l2ZSBzb21lIGFkdmlzZXMgb24gdGhlIHBy b2JsZW0/DQo+ID4gVGhhbmtzIHZlcnkgbXVjaH4NCj4gPiAgDQo+ID4gGyRCKCwoLCgsKCwoLCgs KCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwo LCgsKCwoLBsoQg0KPiAbJEIoLBsoQg0KPiA+IFRvbW15DQo+ID4gIA0KPiA+IEZyb206IElzYWt1 IFlhbWFoYXRhDQo+ID4gRGF0ZTogMjAxMS0xMi0yOSAwOToyNQ0KPiA+IFRvOiBrdm07IHFlbXUt ZGV2ZWwNCj4gPiBDQzogeWFtYWhhdGE7IHQuaGlyb2Z1Y2hpOyBzYXRvc2hpLml0b2gNCj4gPiBT dWJqZWN0OiBbUWVtdS1kZXZlbF0gW1BBVENIIDAwLzIxXVtSRkNdIHBvc3Rjb3B5IGxpdmUgbWln cmF0aW9uDQo+ID4gSW50cm8NCj4gPiA9PT09PQ0KPiA+IFRoaXMgcGF0Y2ggc2VyaWVzIGltcGxl bWVudHMgcG9zdGNvcHkgbGl2ZSBtaWdyYXRpb24uWzFdDQo+ID4gQXMgZGlzY3Vzc2VkIGF0IEtW TSBmb3J1bSAyMDExLCBkZWRpY2F0ZWQgY2hhcmFjdGVyIGRldmljZSBpcyB1c2VkIGZvcg0KPiA+ IGRpc3RyaWJ1dGVkIHNoYXJlZCBtZW1vcnkgYmV0d2VlbiBtaWdyYXRpb24gc291cmNlIGFuZCBk ZXN0aW5hdGlvbi4NCj4gPiBOb3cgd2UgY2FuIGRpc2N1c3MvYmVuY2htYXJrL2NvbXBhcmUgd2l0 aCBwcmVjb3B5LiBJIGJlbGlldmUgdGhlcmUgYXJlDQo+ID4gbXVjaCByb29tcyBmb3IgaW1wcm92 ZW1lbnQuDQo+ID4gIA0KPiA+IFsxXSBodHRwOi8vd2lraS5xZW11Lm9yZy9GZWF0dXJlcy9Qb3N0 Q29weUxpdmVNaWdyYXRpb24NCj4gPiAgDQo+ID4gIA0KPiA+IFVzYWdlDQo+ID4gPT09PT0NCj4g PiBZb3UgbmVlZCBsb2FkIHVtZW0gY2hhcmFjdGVyIGRldmljZSBvbiB0aGUgaG9zdCBiZWZvcmUg c3RhcnRpbmcgbWlncmF0aW9uLg0KPiA+IFBvc3Rjb3B5IGNhbiBiZSB1c2VkIGZvciB0Y2cgYW5k IGt2bSBhY2NlbGFyYXRvci4gVGhlIGltcGxlbWVudGF0aW9uIGRlcGVuZA0KPiA+IG9uIG9ubHkg bGludXggdW1lbSBjaGFyYWN0ZXIgZGV2aWNlLiBCdXQgdGhlIGRyaXZlciBkZXBlbmRlbnQgY29k ZSBpcyBzcGxpdA0KPiA+IGludG8gYSBmaWxlLg0KPiA+IEkgdGVzdGVkIG9ubHkgaG9zdCBwYWdl IHNpemUgPT0gZ3Vlc3QgcGFnZSBzaXplIGNhc2UsIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24NCj4g PiBhbGxvd3MgaG9zdCBwYWdlIHNpemUgIT0gZ3Vlc3QgcGFnZSBzaXplIGNhc2UuDQo+ID4gIA0K PiA+IFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWRkZWQgd2l0aCB0aGlzIHBhdGNoIHNlcmll cy4NCj4gPiAtIGluY29taW5nIHBhcnQNCj4gPiAgIGNvbW1hbmQgbGluZSBvcHRpb25zDQo+ID4g ICAtcG9zdGNvcHkgWy1wb3N0Y29weS1mbGFncyA8ZmxhZ3M+XQ0KPiA+ICAgd2hlcmUgZmxhZ3Mg aXMgZm9yIGNoYW5naW5nIGJlaGF2aW9yIGZvciBiZW5jaG1hcmsvZGVidWdnaW5nDQo+ID4gICBD dXJyZW50bHkgdGhlIGZvbGxvd2luZyBmbGFncyBhcmUgYXZhaWxhYmxlDQo+ID4gICAwOiBkZWZh dWx0DQo+ID4gICAxOiBlbmFibGUgdG91Y2hpbmcgcGFnZSByZXF1ZXN0DQo+ID4gIA0KPiA+ICAg ZXhhbXBsZToNCj4gPiAgIHFlbXUgLXBvc3Rjb3B5IC1pbmNvbWluZyB0Y3A6MDo0NDQ0IC1tb25p dG9yIHN0ZGlvIC1tYWNoaW5lIGFjY2VsPWt2bQ0KPiA+ICANCj4gPiAtIG91dGdpbmcgcGFydA0K PiA+ICAgb3B0aW9ucyBmb3IgbWlncmF0ZSBjb21tYW5kIA0KPiA+ICAgbWlncmF0ZSBbLXAgWy1u XV0gVVJJDQo+ID4gICAtcDogaW5kaWNhdGUgcG9zdGNvcHkgbWlncmF0aW9uDQo+ID4gICAtbjog ZGlzYWJsZSBiYWNrZ3JvdW5kIHRyYW5zZmVycmluZyBwYWdlczogVGhpcyBpcyBmb3IgYmVuY2ht YXJrL2RlYnVnZ2luZw0KPiA+ICANCj4gPiAgIGV4YW1wbGU6DQo+ID4gICBtaWdyYXRlIC1wIC1u IHRjcDo8ZGVzdCBpcCBhZGRyZXNzPjo0NDQ0DQo+ID4gIA0KPiA+ICANCj4gPiBUT0RPDQo+ID4g PT09PQ0KPiA+IC0gYmVuY2htYXJrL2V2YWx1YXRpb24uIEVzcGVjaWFsbHkgaG93IGFzeW5jIHBh Z2UgZmF1bHQgYWZmZWN0cyB0aGUgcmVzdWx0Lg0KPiA+IC0gaW1wcm92ZS9vcHRpbWl6YXRpb24N Cj4gPiAgIEF0IHRoZSBtb21lbnQgYXQgbGVhc3Qgd2hhdCBJJ20gYXdhcmUgb2YgaXMNCj4gPiAg IC0gdG91Y2hpbmcgcGFnZXMgaW4gaW5jb21pbmcgcWVtdSBwcm9jZXNzIGJ5IGZkIGhhbmRsZXIg c2VlbXMgc3Vib3B0aW1hbC4NCj4gPiAgICAgY3JlYXRpbmcgZGVkaWNhdGVkIHRocmVhZD8NCj4g PiAgIC0gbWFraW5nIGluY29taW5nIHNvY2tldCBub24tYmxvY2tpbmcNCj4gPiAgIC0gb3V0Z29p bmcgaGFuZGxlciBzZWVtcyBzdWJvcHRpbWFsIGNhdXNpbmcgbGF0ZW5jeS4NCj4gPiAtIGNhdGNo IHVwIG1lbW9yeSBBUEkgY2hhbmdlDQo+ID4gLSBjb25zaWRlciBvbiBGVVNFL0NVU0UgcG9zc2li aWxpdHkNCj4gPiAtIGFuZCBtb3JlLi4uDQo+ID4gIA0KPiA+IGJhc2ljIHBvc3Rjb3B5IHdvcmsg Zmxvdw0KPiA+ID09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ICAgICAgICAgcWVtdSBvbiB0 aGUgZGVzdGluYXRpb24NCj4gPiAgICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYN Cj4gPiAgICAgICAgIG9wZW4oL2Rldi91bWVtKQ0KPiA+ICAgICAgICAgICAgICAgfA0KPiA+ICAg ICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgVU1FTV9ERVZfQ1JFQVRFX1VNRU0NCj4gPiAgICAg ICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYNCj4gPiAgICAgICAgIEhlcmUgd2UgaGF2 ZSB0d28gZmlsZSBkZXNjcmlwdG9ycyB0bw0KPiA+ICAgICAgICAgdW1lbSBkZXZpY2UgYW5kIHNo bWVtIGZpbGUNCj4gPiAgICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1lbWQNCj4gPiAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFlbW9uIG9uIHRoZSBkZXN0aW5hdGlvbg0K PiA+ICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICBjcmVhdGUgcGlwZSB0 byBjb21tdW5pY2F0ZQ0KPiA+ICAgICAgICAgZm9yaygpLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLA0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgY2xvc2Uoc29ja2V0KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgY2xvc2Uoc2htZW0pICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbW1hcChzaG1lbSBmaWxlKQ0KPiA+ICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAg ICAgICAgViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAg ICAgbW1hcCh1bWVtIGRldmljZSkgZm9yIGd1ZXN0IFJBTSAgICAgICAgICAgY2xvc2Uoc2htZW0g ZmlsZSkNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwNCj4gPiAgICAgICAgIGNsb3NlKHVtZW0gZGV2aWNlKSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCj4gPiAgICAgICAgIHdhaXQgZm9yIHJlYWR5IGZyb20gZGFlbW9u IDwtLS0tcGlwZS0tLS0tc2VuZCByZWFkeSBtZXNzYWdlDQo+ID4gICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSB0aGUgZGFlbW9uIHRha2VzIG92 ZXIgDQo+ID4gICAgICAgICBzZW5kIG9rLS0tLS0tLS0tLS0tcGlwZS0tLS0tLS0tLS0tLS0tLT4g dGhlIG93bmVyIG9mIHRoZSBzb2NrZXQgICAgDQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAg dG8gdGhlIHNvdXJjZSAgICAgICAgICAgICAgDQo+ID4gICAgICAgICAgICAgICBWICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICBlbnRlcmluZyBwb3N0 IGNvcHkgc3RhZ2UgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICBzdGFydCBndWVz dCBleGVjdXRpb24gICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAg ICBWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gICAgICAgICBh Y2Nlc3MgZ3Vlc3QgUkFNICAgICAgICAgICAgICAgICAgICAgICAgICBVTUVNX0dFVF9QQUdFX1JF UVVFU1QNCj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwNCj4gPiAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFYNCj4gPiAgICAgICAgIHBhZ2UgZmF1bHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tPnBhZ2Ugb2Zmc2V0IGlzIHJldHVybmVkDQo+ID4gICAgICAgICBibG9jayAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWxsIHBhZ2UgZnJvbSB0aGUg c291cmNlDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3cml0ZSB0aGUgcGFnZSBjb250ZW50cw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHNobWVtLg0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAg ICAgdW5ibG9jayAgICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVU1FTV9NQVJLX1BB R0VfQ0FDSEVEDQo+ID4gICAgICAgICB0aGUgZmF1bHQgaGFuZGxlciByZXR1cm5zIHRoZSBwYWdl DQo+ID4gICAgICAgICBwYWdlIGZhdWx0IGlzIHJlc29sdmVkDQo+ID4gICAgICAgICAgICAgICB8 DQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWdlcyBjYW4gYmUgc2VudA0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmFja2dyb3VuZGx5DQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTUVNX01BUktfUEFHRV9DQUNIRUQNCj4g PiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwN Cj4gPiAgICAgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFYNCj4gPiAgICAgICAgIFRoZSBzcGVjaWZpZWQgcGFnZXM8LS0tLS1waXBlLS0tLS0tLS0tLS0t cmVxdWVzdCB0byB0b3VjaCBwYWdlcw0KPiA+ICAgICAgICAgYXJlIG1hZGUgcHJlc2VudCBieSAg ICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgdG91Y2hpbmcgZ3Vlc3QgUkFN LiAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgICAgICByZXBs eS0tLS0tLS0tLS0tLS1waXBlLS0tLS0tLS0tLS0tLT4gcmVsZWFzZSB0aGUgY2FjaGVkIHBhZ2UN Cj4gPiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h ZHZpc2UoTUFEVl9SRU1PVkUpDQo+ID4gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8DQo+ID4gICAgICAgICAgICAgICBWICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWDQo+ID4gIA0KPiA+ICAgICAgICAgICAgICAgICAgYWxs IHRoZSBwYWdlcyBhcmUgcHVsbGVkIGZyb20gdGhlIHNvdXJjZQ0KPiA+ICANCj4gPiAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiAgICAg ICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYNCj4gPiAg ICAgICAgIHRoZSB2bWEgYmVjb21lcyBhbm9ueW1vdXM8LS0tLS0tLS0tLS0tLS0tLVVNRU1fTUFL RV9WTUFfQU5PTllNT1VTDQo+ID4gICAgICAgIChub3RlOiBJJ20gbm90IHN1cmUgaWYgdGhpcyBj YW4gYmUgaW1wbGVtZW50ZWQgb3Igbm90KQ0KPiA+ICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+ICAgICAgICAgICAgICAgViAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVg0KPiA+ICAgICAgICAgbWlncmF0aW9uIGNv bXBsZXRlcyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoKQ0KPiA+ICANCj4gPiAgDQo+ID4g IA0KPiA+IElzYWt1IFlhbWFoYXRhICgyMSk6DQo+ID4gICBhcmNoX2luaXQ6IGV4cG9ydCBzb3J0 X3JhbV9saXN0KCkgYW5kIHJhbV9zYXZlX2Jsb2NrKCkNCj4gPiAgIGFyY2hfaW5pdDogZXhwb3J0 IFJBTV9TQVZFX3h4eCBmbGFncyBmb3IgcG9zdGNvcHkNCj4gPiAgIGFyY2hfaW5pdC9yYW1fc2F2 ZTogaW50cm9kdWNlIGNvbnN0YW50IGZvciByYW0gc2F2ZSB2ZXJzaW9uID0gNA0KPiA+ICAgYXJj aF9pbml0OiByZWZhY3RvciBob3N0X2Zyb21fc3RyZWFtX29mZnNldCgpDQo+ID4gICBhcmNoX2lu aXQvcmFtX3NhdmVfbGl2ZTogZmFjdG9yIG91dCBSQU1fU0FWRV9GTEFHX01FTV9TSVpFIGNhc2UN Cj4gPiAgIGFyY2hfaW5pdDogcmVmYWN0b3IgcmFtX3NhdmVfYmxvY2soKQ0KPiA+ICAgYXJjaF9p bml0L3JhbV9zYXZlX2xpdmU6IGZhY3RvciBvdXQgcmFtX3NhdmVfbGltaXQNCj4gPiAgIGFyY2hf aW5pdC9yYW1fbG9hZDogcmVmYWN0b3IgcmFtX2xvYWQNCj4gPiAgIGV4ZWMuYzogZmFjdG9yIG91 dCBxZW11X2dldF9yYW1fcHRyKCkNCj4gPiAgIGV4ZWMuYzogZXhwb3J0IGxhc3RfcmFtX29mZnNl dCgpDQo+ID4gICBzYXZldm06IGV4cG9ydCBxZW11X3BlZWtfYnVmZmVyLCBxZW11X3BlZWtfYnl0 ZSwgcWVtdV9maWxlX3NraXANCj4gPiAgIHNhdmV2bTogcWVtdV9wZW5kaW5nX3NpemUoKSB0byBy ZXR1cm4gcGVuZGluZyBidWZmZXJlZCBzaXplDQo+ID4gICBzYXZldm0sIGJ1ZmZlcmVkX2ZpbGU6 IGludHJvZHVjZSBtZXRob2QgdG8gZHJhaW4gYnVmZmVyIG9mIGJ1ZmZlcmVkDQo+ID4gICAgIGZp bGUNCj4gPiAgIG1pZ3JhdGlvbjogZXhwb3J0IG1pZ3JhdGVfZmRfY29tcGxldGVkKCkgYW5kIG1p Z3JhdGVfZmRfY2xlYW51cCgpDQo+ID4gICBtaWdyYXRpb246IGZhY3RvciBvdXQgcGFyYW1ldGVy cyBpbnRvIE1pZ3JhdGlvblBhcmFtcw0KPiA+ICAgdW1lbS5oOiBpbXBvcnQgTGludXggdW1lbS5o DQo+ID4gICB1cGRhdGUtbGludXgtaGVhZGVycy5zaDogdGVhY2ggdW1lbS5oIHRvIHVwZGF0ZS1s aW51eC1oZWFkZXJzLnNoDQo+ID4gICBjb25maWd1cmU6IGFkZCBDT05GSUdfUE9TVENPUFkgb3B0 aW9uDQo+ID4gICBwb3N0Y29weTogaW50cm9kdWNlIC1wb3N0Y29weSBhbmQgLXBvc3Rjb3B5LWZs YWdzIG9wdGlvbg0KPiA+ICAgcG9zdGNvcHkgb3V0Z29pbmc6IGFkZCAtcCBhbmQgLW4gb3B0aW9u IHRvIG1pZ3JhdGUgY29tbWFuZA0KPiA+ICAgcG9zdGNvcHk6IGltcGxlbWVudCBwb3N0Y29weSBs aXZlbWlncmF0aW9uDQo+ID4gIA0KPiA+ICBNYWtlZmlsZS50YXJnZXQgICAgICAgICAgICAgICAg IHwgICAgNCArDQo+ID4gIGFyY2hfaW5pdC5jICAgICAgICAgICAgICAgICAgICAgfCAgMjYwICsr KystLS0NCj4gPiAgYXJjaF9pbml0LmggICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKw0KPiA+ ICBibG9jay1taWdyYXRpb24uYyAgICAgICAgICAgICAgIHwgICAgOCArLQ0KPiA+ICBidWZmZXJl ZF9maWxlLmMgICAgICAgICAgICAgICAgIHwgICAyMCArLQ0KPiA+ICBidWZmZXJlZF9maWxlLmgg ICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ID4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEyICsNCj4gPiAgY3B1LWFsbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDkgKw0KPiA+ICBleGVjLW9ic29sZXRlLmggICAgICAgICAgICAgICAgIHwgICAgMSArDQo+ID4g IGV4ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1ICstDQo+ID4gIGhtcC1jb21t YW5kcy5oeCAgICAgICAgICAgICAgICAgfCAgIDEyICstDQo+ID4gIGh3L2h3LmggICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA3ICstDQo+ID4gIGxpbnV4LWhlYWRlcnMvbGludXgvdW1lbS5o ICAgICAgfCAgIDgzICsrDQo+ID4gIG1pZ3JhdGlvbi1leGVjLmMgICAgICAgICAgICAgICAgfCAg ICA4ICsNCj4gPiAgbWlncmF0aW9uLWZkLmMgICAgICAgICAgICAgICAgICB8ICAgMzAgKw0KPiA+ ICBtaWdyYXRpb24tcG9zdGNvcHktc3R1Yi5jICAgICAgIHwgICA3NyArKw0KPiA+ICBtaWdyYXRp b24tcG9zdGNvcHkuYyAgICAgICAgICAgIHwNCj4gIDE4OTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4gIG1pZ3JhdGlvbi10Y3AuYyAgICAgICAgICAgICAgICAg fCAgIDM3ICstDQo+ID4gIG1pZ3JhdGlvbi11bml4LmMgICAgICAgICAgICAgICAgfCAgIDMyICst DQo+ID4gIG1pZ3JhdGlvbi5jICAgICAgICAgICAgICAgICAgICAgfCAgIDUzICstDQo+ID4gIG1p Z3JhdGlvbi5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQ5ICstDQo+ID4gIHFlbXUtY29tbW9u LmggICAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gPiAgcWVtdS1vcHRpb25zLmh4ICAgICAg ICAgICAgICAgICB8ICAgMjUgKw0KPiA+ICBxbXAtY29tbWFuZHMuaHggICAgICAgICAgICAgICAg IHwgICAxMCArLQ0KPiA+ICBzYXZldm0uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSAr LQ0KPiA+ICBzY3JpcHRzL3VwZGF0ZS1saW51eC1oZWFkZXJzLnNoIHwgICAgMiArLQ0KPiA+ICBz eXNlbXUuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQ0KPiA+ICB1bWVtLmMgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDM3OSArKysrKysrKw0KPiA+ICB1bWVtLmggICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDEwNSArKysNCj4gPiAgdmwuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMjAgKy0NCj4gPiAgMzAgZmlsZXMgY2hhbmdlZCwgMzA4NiBpbnNlcnRp b25zKCspLCAxODEgZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaW51eC1o ZWFkZXJzL2xpbnV4L3VtZW0uaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbWlncmF0aW9uLXBv c3Rjb3B5LXN0dWIuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbWlncmF0aW9uLXBvc3Rjb3B5 LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVtZW0uYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdW1lbS5oDQo+ID4gIA0KPiA+ICANCj4gPiAgDQo+ICANCj4gLS0gDQo+IHlhbWFoYXRhDQo+ ICANCj4gIA0KDQotLSANCnlhbWFoYXRh ------=_001_NextPart436702167583_=---- Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable
 
Do you know what wchan the process = ;was blocked at?
kvm_vcpu_ioctl(env, KVM_SET_MSRS, &msr_data) doesn= 't seem to block.
 
It's
WCHAN          &nbs= p;  =20 COMMAND
umem_fault------qemu-system-x86
 
 

Tommy
 
Date: 2012-01-12 16:54
CC: t.hirofuchi= ; qemu-devel; kvm; satoshi.itoh
Subject: Re: [Qemu-devel]=1B$B2s=1B(B??: [PATCH 00/21][RF= C] postcopy=20 live?migration
On Thu, Jan 12, 2012 at 04:29:44PM = ;+0800, thfbjyddx wrote:
> Hi , I've dug more thess days=
>  
> > (qemu) migration-tcp: Attempting t= o start an incoming migration
> > migration-tcp: accepted migration
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x10870000 flags 0x4
> > 4872:4872 postcopy_incoming_ram_load:1057:&n= bsp;done
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
>  
> There should be only single EOS&nb= sp;line. Just copy & past miss?
>  
> There must be two EOS for one=  is coming from postcopy_outgoing_ram_save_live
> (...stage =3D=3D QEMU_SAVE_LIVE_STAGE_PART) = and the other is
> postcopy_outgoing_ram_save_live(...stage =3D=3D Q= EMU_SAVE_LIVE_STAGE_END)
> I think in postcopy the ram_save_l= ive in the iterate part can be ignore
> so why there still have the q= emu_put_byte(f, QEMU_VM_SECTON_PART) and
> qemu_put_byte(f, QEMU_VM_SECTON_END) in the&= nbsp;procedure? Is it essential?
 
Not so essential.
 
> Can you please track it down = one more step?
> Which line did it stuck in kv= m_put_msrs()? kvm_put_msrs() doesn't seem to
> block.(backtrace by the debugger would&= nbsp;be best.)
>
> it gets to the kvm_vcpu_ioctl(env, = ;KVM_SET_MSRS, &msr_data) and never return
> so it gets stuck
 
Do you know what wchan the process = ;was blocked at?
kvm_vcpu_ioctl(env, KVM_SET_MSRS, &msr_data) doesn= 't seem to block.
 
 
> when I check the EOS problem
> I just annotated the qemu_put_byte(f,&n= bsp;QEMU_VM_SECTION_PART); and qemu_put_be32
> (f, se->section_id)
>  (I think this is a wrong&nbs= p;way to fix it and I don't know h= ow it get through)
> and leave just the se->save_live_sta= te in the qemu_savevm_state_iterate
> it didn't get stuck at kvm_put_msr= s()
> but it has some other error
> (qemu) migration-tcp: Attempting to sta= rt an incoming migration
> migration-tcp: accepted migration
> 2126:2126 postcopy_incoming_ram_load:1018: incomi= ng ram load
> 2126:2126 postcopy_incoming_ram_load:1031: addr&n= bsp;0x10870000 flags 0x4
> 2126:2126 postcopy_incoming_ram_load:1057: done
> migration: successfully loaded vm state=
> 2126:2126 postcopy_incoming_fork_umemd:1069: fork=
> 2126:2126 postcopy_incoming_fork_umemd:1127: qemu=  pid: 2126 daemon pid: 2129
> 2130:2130 postcopy_incoming_umemd:1840: daemon&nb= sp;pid: 2130
> 2130:2130 postcopy_incoming_umemd:1875: entering&= nbsp;umemd main loop
> Can't find block !
> 2130:2130 postcopy_incoming_umem_ram_load:1526: s= hmem =3D=3D NULL
> 2130:2130 postcopy_incoming_umemd:1882: exiting&n= bsp;umemd main loop
> and at the same time , the&nb= sp;destination node didn't show the EOS
>  
> so I still can't solve the st= uck problem
> Thanks for your help~!
> =1B$B(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,= (,(,(,(,(,(,(,(,(,(,(,(,=1B(B
> Tommy
>  
> From: Isaku Yamahata
> Date: 2012-01-11 10:45
> To: thfbjyddx
> CC: t.hirofuchi; qemu-devel; kvm; satos= hi.itoh
> Subject: Re: [Qemu-devel]=1B$B2s=1B(B??: [PA= TCH 00/21][RFC] postcopy live migration
> On Sat, Jan 07, 2012 at 06:29= :14PM +0800, thfbjyddx wrote:
> > Hello all!
>  
> Hi, thank you for detailed report.=  The procedure you've tried looks
> good basically. Some comments below.
>  
> > I got the qemu basic ver= sion(03ecd2c80a64d030a22fe67cc7a60f24e17ff211) and
> > patched it correctly
> > but it still didn't make = ;sense and I got the same scenario as&n= bsp;before
> > outgoing node intel x86_64; i= ncoming node amd x86_64. guest image is = ;on nfs
> >  
> > I think I should show wh= at I do more clearly and hope somebody&= nbsp;can figure out
> > the problem
> > 
> >  =1B$B!&=1B(B 1, both in/out&= nbsp;node patch the qemu and start on 3= .1.7 kernel with umem
> > 
> >        ./confi= gure --target-list=3D
> x86_64-softmmu --enable-kvm --enable-postcopy
> > --enable-debug
> >        make
> >        make&nb= sp;install
> > 
> >  =1B$B!&=1B(B 2, outgoing qem= u:
> > 
> > qemu-system-x86_64 -m 256 -hda&nbs= p;xxx -monitor stdio -vnc: 2 -usbdevice tabl= et
> > -machine accel=3Dkvm
> > incoming qemu:
> > qemu-system-x86_64 -m 256 -hda&nbs= p;xxx -postcopy -incoming tcp:0:8888 -monitor
> > stdio -vnc: 2 -usbdevice tabl= et -machine accel=3Dkvm
> > 
> >  =1B$B!&=1B(B 3, outgoing nod= e:
> > 
> > migrate -d -p -n tcp:(incomin= g node ip):8888
> >  
> > result:
> > 
> >  =1B$B!&=1B(B outgoing qemu:
> > 
> > info status: VM-status: paused&nbs= p;(finish-migrate);
> > 
> >  =1B$B!&=1B(B incoming qemu:
> > 
> > can't type any more and = can't kill the process(qemu-system-x86)
> >  
> > I open the debug flag in=  migration.c migration-tcp.c migration-postcopy.c:
> > 
> >  =1B$B!&=1B(B outgoing qemu:
> > 
> > (qemu) migration-tcp: connect comp= leted
> > migration: beginning savevm
> > 4500:4500 postcopy_outgoing_ram_save_live:54= 0: stage 1
> > migration: iterate
> > 4500:4500 postcopy_outgoing_ram_save_live:54= 0: stage 2
> > migration: done iterating
> > 4500:4500 postcopy_outgoing_ram_save_live:54= 0: stage 3
> > 4500:4500 postcopy_outgoing_begin:716: = outgoing begin
> > 
> >  =1B$B!&=1B(B incoming qemu:
> > 
> > (qemu) migration-tcp: Attempting t= o start an incoming migration
> > migration-tcp: accepted migration
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x10870000 flags 0x4
> > 4872:4872 postcopy_incoming_ram_load:1057:&n= bsp;done
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
> > 4872:4872 postcopy_incoming_ram_load:1018:&n= bsp;incoming ram load
> > 4872:4872 postcopy_incoming_ram_load:1031:&n= bsp;addr 0x0 flags 0x10
> > 4872:4872 postcopy_incoming_ram_load:1037:&n= bsp;EOS
>  
> There should be only single EOS&nb= sp;line. Just copy & past miss?
>  
>  
> > from the result:
> > It didn't get to the "su= ccessfully loaded vm state"
> > So it still in the qemu_= loadvm_state, and I found it's in
> > cpu_synchronize_all_post_init->kvm_arch_put_re= gisters->kvm_put_msrs and got
> > stuck
>  
> Can you please track it down = one more step?
> Which line did it stuck in kv= m_put_msrs()? kvm_put_msrs() doesn't seem to
> block.(backtrace by the debugger would&= nbsp;be best.)
>  
> If possible, can you please test&n= bsp;with more simplified configuration.
> i.e. drop device as much as p= ossible i.e. no usbdevice, no disk...
> So the debug will be simplified.
>  
> thanks,
>  
> > Does anyone give some advises=  on the problem?
> > Thanks very much~
> >  
> > =1B$B(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,= (,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,=1B(B
> =1B$B(,=1B(B
> > Tommy
> >  
> > From: Isaku Yamahata
> > Date: 2011-12-29 09:25
> > To: kvm; qemu-devel
> > CC: yamahata; t.hirofuchi; satoshi= .itoh
> > Subject: [Qemu-devel] [PATCH 00/21= ][RFC] postcopy live migration
> > Intro
> > =3D=3D=3D=3D=3D
> > This patch series implements = postcopy live migration.[1]
> > As discussed at KVM forum&nbs= p;2011, dedicated character device is used f= or
> > distributed shared memory between&= nbsp;migration source and destination.
> > Now we can discuss/benchmark/compa= re with precopy. I believe there are
> > much rooms for improvement.
> >  
> > [1] http://wiki.qemu.org/Features/PostCopyLi= veMigration
> >  
> >  
> > Usage
> > =3D=3D=3D=3D=3D
> > You need load umem character&= nbsp;device on the host before starting migr= ation.
> > Postcopy can be used for = ;tcg and kvm accelarator. The implementation = ;depend
> > on only linux umem character&= nbsp;device. But the driver dependent code i= s split
> > into a file.
> > I tested only host page = size =3D=3D guest page size case, but t= he implementation
> > allows host page size !=3D&nb= sp;guest page size case.
> >  
> > The following options are add= ed with this patch series.
> > - incoming part
> >   command line options
> >   -postcopy [-postcopy-flags = <flags>]
> >   where flags is for&nbs= p;changing behavior for benchmark/debugging
> >   Currently the following&nbs= p;flags are available
> >   0: default
> >   1: enable touching pag= e request
> >  
> >   example:
> >   qemu -postcopy -incoming&nb= sp;tcp:0:4444 -monitor stdio -machine accel=3Dkvm
> >  
> > - outging part
> >   options for migrate co= mmand 
> >   migrate [-p [-n]] URI<= /DIV>
> >   -p: indicate postcopy = migration
> >   -n: disable background = ;transferring pages: This is for benchmark/debugg= ing
> >  
> >   example:
> >   migrate -p -n tcp:<= dest ip address>:4444
> >  
> >  
> > TODO
> > =3D=3D=3D=3D
> > - benchmark/evaluation. Especially = ;how async page fault affects the result.
> > - improve/optimization
> >   At the moment at = least what I'm aware of is
> >   - touching pages in&nb= sp;incoming qemu process by fd handler seems=  suboptimal.
> >     creating dedicated&n= bsp;thread?
> >   - making incoming sock= et non-blocking
> >   - outgoing handler see= ms suboptimal causing latency.
> > - catch up memory API ch= ange
> > - consider on FUSE/CUSE possi= bility
> > - and more...
> >  
> > basic postcopy work flow
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D
> >         q= emu on the destination
> >         &= nbsp;     |
> >         &= nbsp;     V
> >         o= pen(/dev/umem)
> >         &= nbsp;     |
> >         &= nbsp;     V
> >         U= MEM_DEV_CREATE_UMEM
> >         &= nbsp;     |
> >         &= nbsp;     V
> >         H= ere we have two file descriptors to
> >         u= mem device and shmem file
> >         &= nbsp;     |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =    umemd
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =    daemon on the destination
> >         &= nbsp;     |
> >         &= nbsp;     V    create pi= pe to communicate
> >         f= ork()---------------------------------------,
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        |
> >         c= lose(socket)          &n= bsp;           &nbs= p;         V
> >         c= lose(shmem)          &nb= sp;            = ;       mmap(shmem file)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         m= map(umem device) for guest RAM    =        close(shmem file)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         c= lose(umem device)        &nbs= p;            =       |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        |
> >         w= ait for ready from daemon <----pipe-----send&n= bsp;ready message
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =   Here the daemon takes over 
> >         s= end ok------------pipe---------------> the owner of=  the socket    
> >         &= nbsp;     |      &n= bsp;  to the source      = ;        
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        |
> >         e= ntering post copy stage      =             &n= bsp;  |
> >         s= tart guest execution       &n= bsp;           &nbs= p;    |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         a= ccess guest RAM        &= nbsp;           &nb= sp;     UMEM_GET_PAGE_REQUEST
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         p= age fault ------------------------------>page offset&nbs= p;is returned
> >         b= lock           &nbs= p;            =             &n= bsp;   |
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;       V
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;    pull page from the source=
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;    write the page contents
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;    to the shmem.
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;       |
> >         &= nbsp;           &nb= sp;            = ;            &= nbsp;       V
> >         u= nblock     <-----------------------------UMEM_= MARK_PAGE_CACHED
> >         t= he fault handler returns the page
> >         p= age fault is resolved
> >         &= nbsp;     |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     pages can be sent
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     backgroundly
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        V
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     UMEM_MARK_PAGE_CACHED
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         T= he specified pages<-----pipe------------request to = touch pages
> >         a= re made present by       = ;            &= nbsp;      |
> >         t= ouching guest RAM.       &nbs= p;            =       |
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         &= nbsp;    reply-------------pipe-------------> = release the cached page
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =     madvise(MADV_REMOVE)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >  
> >         &= nbsp;        all the pag= es are pulled from the source
> >  
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         t= he vma becomes anonymous<----------------UMEM_MAKE_VMA_A= NONYMOUS
> >        (note:&= nbsp;I'm not sure if this can be implem= ented or not)
> >         &= nbsp;     |      &n= bsp;           &nbs= p;            =        |
> >         &= nbsp;     V      &n= bsp;           &nbs= p;            =        V
> >         m= igration completes        &nb= sp;            = ;   exit()
> >  
> >  
> >  
> > Isaku Yamahata (21):
> >   arch_init: export sort_ram_= list() and ram_save_block()
> >   arch_init: export RAM_SAVE_= xxx flags for postcopy
> >   arch_init/ram_save: introduce&nb= sp;constant for ram save version =3D 4
> >   arch_init: refactor host_fr= om_stream_offset()
> >   arch_init/ram_save_live: factor&= nbsp;out RAM_SAVE_FLAG_MEM_SIZE case
> >   arch_init: refactor ram_sav= e_block()
> >   arch_init/ram_save_live: factor&= nbsp;out ram_save_limit
> >   arch_init/ram_load: refactor&nbs= p;ram_load
> >   exec.c: factor out qem= u_get_ram_ptr()
> >   exec.c: export last_ram_off= set()
> >   savevm: export qemu_peek_bu= ffer, qemu_peek_byte, qemu_file_skip
> >   savevm: qemu_pending_size() = ;to return pending buffered size
> >   savevm, buffered_file: intr= oduce method to drain buffer of buffered
> >     file
> >   migration: export migrate_f= d_completed() and migrate_fd_cleanup()
> >   migration: factor out = parameters into MigrationParams
> >   umem.h: import Linux u= mem.h
> >   update-linux-headers.sh: teach&n= bsp;umem.h to update-linux-headers.sh
> >   configure: add CONFIG_POSTC= OPY option
> >   postcopy: introduce -postco= py and -postcopy-flags option
> >   postcopy outgoing: add = ;-p and -n option to migrate command
> >   postcopy: implement postcop= y livemigration
> >  
> >  Makefile.target    &nbs= p;            = |    4 +
> >  arch_init.c     &n= bsp;           &nbs= p;   |  260 ++++---
> >  arch_init.h     &n= bsp;           &nbs= p;   |   20 +
> >  block-migration.c    &n= bsp;          | &nb= sp;  8 +-
> >  buffered_file.c    &nbs= p;            = |   20 +-
> >  buffered_file.h    &nbs= p;            = |    1 +
> >  configure     &nbs= p;            =      |   12 +
> >  cpu-all.h     &nbs= p;            =      |    9 +
> >  exec-obsolete.h    &nbs= p;            = |    1 +
> >  exec.c      &= nbsp;           &nb= sp;       |   75 +-=
> >  hmp-commands.hx    &nbs= p;            = |   12 +-
> >  hw/hw.h      =             &n= bsp;      |    7 +-=
> >  linux-headers/linux/umem.h   = ;   |   83 ++
> >  migration-exec.c    &nb= sp;           |&nbs= p;   8 +
> >  migration-fd.c     = ;            &= nbsp;|   30 +
> >  migration-postcopy-stub.c   =     |   77 ++
> >  migration-postcopy.c    = ;        |
>  1891 +++++++++++++++++++++++++++++++++++++++
> >  migration-tcp.c    &nbs= p;            = |   37 +-
> >  migration-unix.c    &nb= sp;           |&nbs= p;  32 +-
> >  migration.c     &n= bsp;           &nbs= p;   |   53 +-
> >  migration.h     &n= bsp;           &nbs= p;   |   49 +-
> >  qemu-common.h     =             &n= bsp; |    2 +
> >  qemu-options.hx    &nbs= p;            = |   25 +
> >  qmp-commands.hx    &nbs= p;            = |   10 +-
> >  savevm.c      = ;            &= nbsp;     |   31 +-
> >  scripts/update-linux-headers.sh | = ;   2 +-
> >  sysemu.h      = ;            &= nbsp;     |    4 +-
> >  umem.c      &= nbsp;           &nb= sp;       |  379 +++++++= +
> >  umem.h      &= nbsp;           &nb= sp;       |  105 +++
> >  vl.c      &nb= sp;            = ;         |   = 20 +-
> >  30 files changed, 3086 = insertions(+), 181 deletions(-)
> >  create mode 100644 linux-hea= ders/linux/umem.h
> >  create mode 100644 migration= -postcopy-stub.c
> >  create mode 100644 migration= -postcopy.c
> >  create mode 100644 umem.c
> >  create mode 100644 umem.h
> >  
> >  
> >  
>  
> -- 
> yamahata
>  
>  
 
-- 
yamahata
 
 
------=_001_NextPart436702167583_=------