From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cuCgs-0007Jb-QR for qemu-devel@nongnu.org; Sat, 01 Apr 2017 02:39:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cuCgp-0006ex-L5 for qemu-devel@nongnu.org; Sat, 01 Apr 2017 02:39:14 -0400 Received: from mga03.intel.com ([134.134.136.65]:46371) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cuCgp-0006bt-8A for qemu-devel@nongnu.org; Sat, 01 Apr 2017 02:39:11 -0400 From: "Liu, Yi L" Date: Sat, 1 Apr 2017 06:39:06 +0000 Message-ID: References: <1486456099-7345-1-git-send-email-peterx@redhat.com> <1486456099-7345-15-git-send-email-peterx@redhat.com> <20170327091208.GG11497@pxdev.xzpeter.org> <9c3cda64-b4a3-6f9b-f951-bf73f6613faa@redhat.com> <81e79982-4af0-3b46-552c-eea4db05a362@redhat.com> <216e2666-bd00-7f04-439b-0ed95a566feb@redhat.com> In-Reply-To: <216e2666-bd00-7f04-439b-0ed95a566feb@redhat.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v7 14/17] memory: add MemoryRegionIOMMUOps.replay() callback List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jason Wang , 'Peter Xu' Cc: "Lan, Tianyu" , "Tian, Kevin" , "'mst@redhat.com'" , "'jan.kiszka@siemens.com'" , "'bd.aviv@gmail.com'" , "'qemu-devel@nongnu.org'" , "'alex.williamson@redhat.com'" , 'David Gibson' PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKYXNvbiBXYW5nIFttYWlsdG86 amFzb3dhbmdAcmVkaGF0LmNvbV0NCj4gU2VudDogU2F0dXJkYXksIEFwcmlsIDEsIDIwMTcgMTow MSBQTQ0KPiBUbzogTGl1LCBZaSBMIDx5aS5sLmxpdUBpbnRlbC5jb20+OyAnUGV0ZXIgWHUnIDxw ZXRlcnhAcmVkaGF0LmNvbT4NCj4gQ2M6IExhbiwgVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNv bT47IFRpYW4sIEtldmluIDxrZXZpbi50aWFuQGludGVsLmNvbT47DQo+ICdtc3RAcmVkaGF0LmNv bScgPG1zdEByZWRoYXQuY29tPjsgJ2phbi5raXN6a2FAc2llbWVucy5jb20nDQo+IDxqYW4ua2lz emthQHNpZW1lbnMuY29tPjsgJ2JkLmF2aXZAZ21haWwuY29tJyA8YmQuYXZpdkBnbWFpbC5jb20+ OyAncWVtdS0NCj4gZGV2ZWxAbm9uZ251Lm9yZycgPHFlbXUtZGV2ZWxAbm9uZ251Lm9yZz47ICdh bGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbScNCj4gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29t PjsgJ0RhdmlkIEdpYnNvbicgPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4NCj4gU3ViamVj dDogUmU6IFtRZW11LWRldmVsXSBbUEFUQ0ggdjcgMTQvMTddIG1lbW9yeTogYWRkDQo+IE1lbW9y eVJlZ2lvbklPTU1VT3BzLnJlcGxheSgpIGNhbGxiYWNrDQo+IA0KPiANCj4gDQo+IE9uIDIwMTfl ubQwM+aciDMx5pelIDE1OjMwLCBMaXUsIFlpIEwgd3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEphc29uIFdhbmcgW21haWx0bzpqYXNvd2FuZ0ByZWRo YXQuY29tXQ0KPiA+PiBTZW50OiBGcmlkYXksIE1hcmNoIDMxLCAyMDE3IDM6MTcgUE0NCj4gPj4g VG86IExpdSwgWWkgTCA8eWkubC5saXVAaW50ZWwuY29tPjsgJ1BldGVyIFh1JyA8cGV0ZXJ4QHJl ZGhhdC5jb20+DQo+ID4+IENjOiBMYW4sIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+OyBU aWFuLCBLZXZpbg0KPiA+PiA8a2V2aW4udGlhbkBpbnRlbC5jb20+OyAnbXN0QHJlZGhhdC5jb20n IDxtc3RAcmVkaGF0LmNvbT47DQo+ICdqYW4ua2lzemthQHNpZW1lbnMuY29tJw0KPiA+PiA8amFu Lmtpc3prYUBzaWVtZW5zLmNvbT47ICdiZC5hdml2QGdtYWlsLmNvbScgPGJkLmF2aXZAZ21haWwu Y29tPjsNCj4gPj4gJ3FlbXUtIGRldmVsQG5vbmdudS5vcmcnIDxxZW11LWRldmVsQG5vbmdudS5v cmc+Ow0KPiAnYWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20nDQo+ID4+IDxhbGV4LndpbGxpYW1z b25AcmVkaGF0LmNvbT47ICdEYXZpZCBHaWJzb24nDQo+ID4+IDxkYXZpZEBnaWJzb24uZHJvcGJl YXIuaWQuYXU+DQo+ID4+IFN1YmplY3Q6IFJlOiBbUWVtdS1kZXZlbF0gW1BBVENIIHY3IDE0LzE3 XSBtZW1vcnk6IGFkZA0KPiA+PiBNZW1vcnlSZWdpb25JT01NVU9wcy5yZXBsYXkoKSBjYWxsYmFj aw0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiBPbiAyMDE35bm0MDPmnIgzMeaXpSAxMzozNCwgTGl1 LCBZaSBMIHdyb3RlOg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4g RnJvbTogSmFzb24gV2FuZyBbbWFpbHRvOmphc293YW5nQHJlZGhhdC5jb21dDQo+ID4+Pj4gU2Vu dDogVGh1cnNkYXksIE1hcmNoIDMwLCAyMDE3IDc6NTggUE0NCj4gPj4+PiBUbzogTGl1LCBZaSBM IDx5aS5sLmxpdUBpbnRlbC5jb20+OyAnUGV0ZXIgWHUnIDxwZXRlcnhAcmVkaGF0LmNvbT4NCj4g Pj4+PiBDYzogJ2FsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tJyA8YWxleC53aWxsaWFtc29uQHJl ZGhhdC5jb20+OyBMYW4sDQo+ID4+Pj4gVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNvbT47IFRp YW4sIEtldmluIDxrZXZpbi50aWFuQGludGVsLmNvbT47DQo+ID4+ICdtc3RAcmVkaGF0LmNvbScN Cj4gPj4+PiA8bXN0QHJlZGhhdC5jb20+OyAnamFuLmtpc3prYUBzaWVtZW5zLmNvbScNCj4gPj4+ PiA8amFuLmtpc3prYUBzaWVtZW5zLmNvbT47ICdiZC5hdml2QGdtYWlsLmNvbScgPGJkLmF2aXZA Z21haWwuY29tPjsNCj4gJ0RhdmlkIEdpYnNvbicNCj4gPj4+PiA8ZGF2aWRAZ2lic29uLmRyb3Bi ZWFyLmlkLmF1PjsgJ3FlbXUtZGV2ZWxAbm9uZ251Lm9yZycgPHFlbXUtDQo+ID4+Pj4gZGV2ZWxA bm9uZ251Lm9yZz4NCj4gPj4+PiBTdWJqZWN0OiBSZTogW1FlbXUtZGV2ZWxdIFtQQVRDSCB2NyAx NC8xN10gbWVtb3J5OiBhZGQNCj4gPj4+PiBNZW1vcnlSZWdpb25JT01NVU9wcy5yZXBsYXkoKSBj YWxsYmFjaw0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IE9uIDIwMTflubQwM+aciDMw 5pelIDE5OjA2LCBMaXUsIFlpIEwgd3JvdGU6DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+Pj4+Pj4gRnJvbTogTGl1LCBZaSBMDQo+ID4+Pj4+PiBTZW50OiBNb25kYXks IE1hcmNoIDI3LCAyMDE3IDU6MjIgUE0NCj4gPj4+Pj4+IFRvOiBQZXRlciBYdSA8cGV0ZXJ4QHJl ZGhhdC5jb20+DQo+ID4+Pj4+PiBDYzogYWxleC53aWxsaWFtc29uQHJlZGhhdC5jb207IExhbiwg VGlhbnl1DQo+ID4+Pj4+PiA8dGlhbnl1LmxhbkBpbnRlbC5jb20+OyBUaWFuLCBLZXZpbiA8a2V2 aW4udGlhbkBpbnRlbC5jb20+Ow0KPiA+Pj4+Pj4gbXN0QHJlZGhhdC5jb207IGphbi5raXN6a2FA c2llbWVucy5jb207IGphc293YW5nQHJlZGhhdC5jb207DQo+ID4+Pj4+PiBiZC5hdml2QGdtYWls LmNvbTsgRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ow0KPiA+Pj4+ Pj4gcWVtdS1kZXZlbEBub25nbnUub3JnDQo+ID4+Pj4+PiBTdWJqZWN0OiBSRTogW1FlbXUtZGV2 ZWxdIFtQQVRDSCB2NyAxNC8xN10gbWVtb3J5OiBhZGQNCj4gPj4+Pj4+IE1lbW9yeVJlZ2lvbklP TU1VT3BzLnJlcGxheSgpIGNhbGxiYWNrDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4gRnJvbTogUGV0ZXIgWHUgW21haWx0bzpwZXRlcnhA cmVkaGF0LmNvbV0NCj4gPj4+Pj4+PiBTZW50OiBNb25kYXksIE1hcmNoIDI3LCAyMDE3IDU6MTIg UE0NCj4gPj4+Pj4+PiBUbzogTGl1LCBZaSBMIDx5aS5sLmxpdUBpbnRlbC5jb20+DQo+ID4+Pj4+ Pj4gQ2M6IGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tOyBMYW4sIFRpYW55dQ0KPiA+Pj4+Pj4+ IDx0aWFueXUubGFuQGludGVsLmNvbT47IFRpYW4sIEtldmluIDxrZXZpbi50aWFuQGludGVsLmNv bT47DQo+ID4+Pj4+Pj4gbXN0QHJlZGhhdC5jb207IGphbi5raXN6a2FAc2llbWVucy5jb207IGph c293YW5nQHJlZGhhdC5jb207DQo+ID4+Pj4+Pj4gYmQuYXZpdkBnbWFpbC5jb207IERhdmlkIEdp YnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PjsNCj4gPj4+Pj4+PiBxZW11LWRldmVs QG5vbmdudS5vcmcNCj4gPj4+Pj4+PiBTdWJqZWN0OiBSZTogW1FlbXUtZGV2ZWxdIFtQQVRDSCB2 NyAxNC8xN10gbWVtb3J5OiBhZGQNCj4gPj4+Pj4+PiBNZW1vcnlSZWdpb25JT01NVU9wcy5yZXBs YXkoKSBjYWxsYmFjaw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gT24gTW9uLCBNYXIgMjcsIDIwMTcg YXQgMDg6MzU6MDVBTSArMDAwMCwgTGl1LCBZaSBMIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+Pj4+IEZyb206IFFlbXUtZGV2ZWwNCj4gPj4+ Pj4+Pj4+IFttYWlsdG86cWVtdS1kZXZlbC1ib3VuY2VzK3lpLmwubGl1PWludGVsLmNvbUBub25n bnUub3JnXSBPbg0KPiA+Pj4+Pj4+Pj4gQmVoYWxmIE9mIFBldGVyIFh1DQo+ID4+Pj4+Pj4+PiBT ZW50OiBUdWVzZGF5LCBGZWJydWFyeSA3LCAyMDE3IDQ6MjggUE0NCj4gPj4+Pj4+Pj4+IFRvOiBx ZW11LWRldmVsQG5vbmdudS5vcmcNCj4gPj4+Pj4+Pj4+IENjOiBMYW4sIFRpYW55dSA8dGlhbnl1 LmxhbkBpbnRlbC5jb20+OyBUaWFuLCBLZXZpbg0KPiA+Pj4+Pj4+Pj4gPGtldmluLnRpYW5AaW50 ZWwuY29tPjsgbXN0QHJlZGhhdC5jb207DQo+ID4+Pj4+Pj4+PiBqYW4ua2lzemthQHNpZW1lbnMu Y29tOyBqYXNvd2FuZ0ByZWRoYXQuY29tOw0KPiA+Pj4+Pj4+Pj4gcGV0ZXJ4QHJlZGhhdC5jb207 IGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tOw0KPiA+Pj4+Pj4+Pj4gYmQuYXZpdkBnbWFpbC5j b207IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1Pg0KPiA+Pj4+Pj4+ Pj4gU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSCB2NyAxNC8xN10gbWVtb3J5OiBhZGQNCj4g Pj4+Pj4+Pj4+IE1lbW9yeVJlZ2lvbklPTU1VT3BzLnJlcGxheSgpIGNhbGxiYWNrDQo+ID4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4gT3JpZ2luYWxseSB3ZSBoYXZlIG9uZSBtZW1vcnlfcmVnaW9uX2lv bW11X3JlcGxheSgpIGZ1bmN0aW9uLA0KPiA+Pj4+Pj4+Pj4gd2hpY2ggaXMgdGhlIGRlZmF1bHQg YmVoYXZpb3IgdG8gcmVwbGF5IHRoZSB0cmFuc2xhdGlvbnMgb2YNCj4gPj4+Pj4+Pj4+IHRoZSB3 aG9sZSBJT01NVSByZWdpb24uIEhvd2V2ZXIsIG9uIHNvbWUgcGxhdGZvcm0gbGlrZSB4ODYsIHdl DQo+ID4+Pj4+Pj4+PiBtYXkgd2FudCBvdXIgb3duDQo+ID4+Pj4+Pj4gcmVwbGF5IGxvZ2ljIGZv ciBJT01NVSByZWdpb25zLg0KPiA+Pj4+Pj4+Pj4gVGhpcyBwYXRjaCBhZGQgb25lIG1vcmUgaG9v ayBmb3IgSU9NTVVPcHMgZm9yIHRoZSBjYWxsYmFjaywNCj4gPj4+Pj4+Pj4+IGFuZCBpdCdsbCBv dmVycmlkZSB0aGUgZGVmYXVsdCBpZiBzZXQuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogUGV0ZXIgWHUgPHBldGVyeEByZWRoYXQuY29tPg0KPiA+Pj4+Pj4+Pj4gLS0t DQo+ID4+Pj4+Pj4+PiAgICAgaW5jbHVkZS9leGVjL21lbW9yeS5oIHwgMiArKw0KPiA+Pj4+Pj4+ Pj4gICAgIG1lbW9yeS5jICAgICAgICAgICAgICB8IDYgKysrKysrDQo+ID4+Pj4+Pj4+PiAgICAg MiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL21lbW9yeS5oIGIvaW5jbHVkZS9leGVjL21lbW9y eS5oDQo+ID4+Pj4+Pj4+PiBpbmRleA0KPiA+Pj4+Pj4+Pj4gMDc2Nzg4OC4uMzBiMmE3NCAxMDA2 NDQNCj4gPj4+Pj4+Pj4+IC0tLSBhL2luY2x1ZGUvZXhlYy9tZW1vcnkuaA0KPiA+Pj4+Pj4+Pj4g KysrIGIvaW5jbHVkZS9leGVjL21lbW9yeS5oDQo+ID4+Pj4+Pj4+PiBAQCAtMTkxLDYgKzE5MSw4 IEBAIHN0cnVjdCBNZW1vcnlSZWdpb25JT01NVU9wcyB7DQo+ID4+Pj4+Pj4+PiAgICAgICAgIHZv aWQgKCpub3RpZnlfZmxhZ19jaGFuZ2VkKShNZW1vcnlSZWdpb24gKmlvbW11LA0KPiA+Pj4+Pj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVOb3RpZmllckZsYWcg b2xkX2ZsYWdzLA0KPiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9NTVVOb3RpZmllckZsYWcNCj4gPj4+Pj4+Pj4+IG5ld19mbGFncyk7DQo+ID4+Pj4+Pj4+ PiArICAgIC8qIFNldCB0aGlzIHVwIHRvIHByb3ZpZGUgY3VzdG9taXplZCBJT01NVSByZXBsYXkg ZnVuY3Rpb24gKi8NCj4gPj4+Pj4+Pj4+ICsgICAgdm9pZCAoKnJlcGxheSkoTWVtb3J5UmVnaW9u ICppb21tdSwgSU9NTVVOb3RpZmllcg0KPiA+Pj4+Pj4+Pj4gKyAqbm90aWZpZXIpOw0KPiA+Pj4+ Pj4+Pj4gICAgIH07DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gICAgIHR5cGVkZWYgc3RydWN0 IENvYWxlc2NlZE1lbW9yeVJhbmdlIENvYWxlc2NlZE1lbW9yeVJhbmdlOw0KPiA+Pj4+Pj4+Pj4g ZGlmZiAtLWdpdCBhL21lbW9yeS5jIGIvbWVtb3J5LmMgaW5kZXggN2E0ZjJmOS4uOWMyNTNjYyAx MDA2NDQNCj4gPj4+Pj4+Pj4+IC0tLSBhL21lbW9yeS5jDQo+ID4+Pj4+Pj4+PiArKysgYi9tZW1v cnkuYw0KPiA+Pj4+Pj4+Pj4gQEAgLTE2MzAsNiArMTYzMCwxMiBAQCB2b2lkDQo+ID4+Pj4+Pj4+ PiBtZW1vcnlfcmVnaW9uX2lvbW11X3JlcGxheShNZW1vcnlSZWdpb24NCj4gPj4+Pj4+Pj4+ICpt ciwgSU9NTVVOb3RpZmllciAqbiwNCj4gPj4+Pj4+Pj4+ICAgICAgICAgaHdhZGRyIGFkZHIsIGdy YW51bGFyaXR5Ow0KPiA+Pj4+Pj4+Pj4gICAgICAgICBJT01NVVRMQkVudHJ5IGlvdGxiOw0KPiA+ Pj4+Pj4+Pj4gKyAgICAvKiBJZiB0aGUgSU9NTVUgaGFzIGl0cyBvd24gcmVwbGF5IGNhbGxiYWNr LCBvdmVycmlkZSAqLw0KPiA+Pj4+Pj4+Pj4gKyAgICBpZiAobXItPmlvbW11X29wcy0+cmVwbGF5 KSB7DQo+ID4+Pj4+Pj4+PiArICAgICAgICBtci0+aW9tbXVfb3BzLT5yZXBsYXkobXIsIG4pOw0K PiA+Pj4+Pj4+Pj4gKyAgICAgICAgcmV0dXJuOw0KPiA+Pj4+Pj4+Pj4gKyAgICB9DQo+ID4+Pj4+ Pj4+IEhpIEFsZXgsIFBldGVyLA0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBXaWxsIGFsbCB0aGUg b3RoZXIgdmVuZG9ycyhlLmcuIFBQQywgczM5MCwgQVJNKSBhZGQgdGhlaXIgb3duDQo+ID4+Pj4+ Pj4+IHJlcGxheSBjYWxsYmFjayBhcyB3ZWxsPyBJIGd1ZXNzIGl0IGRlcGVuZHMgb24gd2hldGhl ciB0aGUNCj4gPj4+Pj4+Pj4gb3JpZ2luYWwgcmVwbGF5IGFsZ29yaXRobSB3b3JrIHdlbGwgZm9y IHRoZW0/IERvIHlvdSBoYXZlIHN1Y2gNCj4ga25vd2xlZGdlPw0KPiA+Pj4+Pj4+IEkgZ3Vlc3Mg c28uIEF0IGxlYXN0IGZvciBWVC1kIHdlIGhhZCB0aGlzIGNhbGxiYWNrIHNpbmNlIHRoZQ0KPiA+ Pj4+Pj4+IGRlZmF1bHQgcmVwbGF5IG1lY2hhbmlzbSBkaWQgbm90IHdvcmsgd2VsbCBvbiB4ODYg ZHVlIHRvIGl0cw0KPiA+Pj4+Pj4+IGV4dHJlbWVseSBsYXJnZSBtZW1vcnkgcmVnaW9uIHNpemUu IFRoYW5rcywNCj4gPj4+Pj4+IHRoeC4gdGhhdCB3b3VsZCBtYWtlIHNlbnNlLg0KPiA+Pj4+PiBQ ZXRlciwNCj4gPj4+Pj4NCj4gPj4+Pj4gSnVzdCBjb21lIHRvIG1pbmQgdGhhdCB0aGVyZSBtYXkg YmUgYSBjb3JuZXIgY2FzZSBoZXJlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJbnRlbCBWVC1kIGFjdHVh bGx5IGhhcyBhICJwdCIgbW9kZSB3aGljaCBhbGxvd3MgZGV2aWNlIHVzZQ0KPiA+Pj4+PiBwaHlz aWNhbCBhZGRyZXNzIGV2ZW4gd2hlbiBWVC1kIGlzIGVuYWJsZWQuIEluIGtlcm5lbCwgdGhlcmUg aXMgYQ0KPiA+PiBpb21tdV9pZGVudGl0eV9tYXBwaW5nLg0KPiA+Pj4+PiBJZiBhIGRldmljZSBp cyBpbiB0aGlzIG1hcCwgdGhlbiBpdCB3b3VsZCB1c2UgInB0IiBtb2RlLiBTbyB0aGF0DQo+ID4+ Pj4+IElPTU1VIGRyaXZlciB3b3VsZCBub3QgYnVpbGQgc2Vjb25kLWxldmVsIHBhZ2UgdGFibGUg Zm9yIGl0Lg0KPiA+Pj4+IFllcywgYnV0IHFlbXUgZG9lcyBub3Qgc3VwcG9ydCBFQ0FQX1BUIG5v dywgc28gZ3Vlc3Qgd2lsbCBzdGlsbA0KPiA+Pj4+IGhhdmUgYSBwYWdlIHRhYmxlIGluIHRoaXMg Y2FzZS4NCj4gPj4+IFRoYXQncyB0cnVlLiBXaXRob3V0IEVDQVBfUFQsIElPTU1VIGRyaXZlciB3 b3VsZCBjcmVhdGUgYSAxOjEgbWFwLg0KPiA+Pj4gU28gdGhpcyBzb2x1dGlvbiBjYW4gd29yayB3 ZWxsIGV2ZW4gYSBkZXZpY2UgaXMgaW4gaWRlbnRpZnlfbWFwLg0KPiA+Pj4NCj4gPj4+Pj4gQmFj ayB0byB0aGUgdmlydHVhbCBJT1ZBIGltcGxlbWVudGF0aW9uLCBpZiBhbiBhc3NpZ25lZCBkZXZp Y2UgaXMNCj4gPj4+Pj4gaW4gdGhlIGlvbW11X2lkZW50aXR5X21hcHBpbmcoZS5nLiBWR0EgY29u dHJvbGxlciksIGl0IHVzZXMgR1BBDQo+ID4+Pj4+IGRpcmVjdGx5IHRvIGRvDQo+ID4+IERNQS4N Cj4gPj4+Pj4gU28gaXQgZGVtYW5kcyBhIEdQQS0+SFBBIG1hcHBpbmcgaW4gaG9zdC4gSG93ZXZl ciwgdGhlDQo+ID4+Pj4+IGlvbW11LT5vcHMucmVwbGF5IGlzIG5vdCBhYmxlIHRvIGJ1aWxkIGl0 IHdoZW4gZ3Vlc3QgU0wgcGFnZSB0YWJsZSBpcyBlbXB0eS4NCj4gPj4+Pj4NCj4gPj4+Pj4gU28g SSB0aGluayBidWlsZGluZyBhbiBlbnRpcmUgZ3Vlc3QgUEEtPkhQQSBtYXBwaW5nIGJlZm9yZSBn dWVzdA0KPiA+Pj4+PiBrZXJuZWwgYm9vdCB3b3VsZCBiZSByZWNvbW1lbmRlZC4gQW55IHRob3Vn aHRzPw0KPiA+Pj4+IFdlIHBsYW4gdG8gYWRkIFBUIGluIDIuMTAsIGEgcG9zc2libGUgcm91Z2gg aWRlYSBpcyBkaXNhYmxlZCBpb21tdQ0KPiA+Pj4+IGRtYXIgcmVnaW9uIGFuZCB1c2UgYW5vdGhl ciByZWdpb24gd2l0aG91dCBpb21tdV9vcHMuIFRoZW4NCj4gPj4+PiB2ZmlvX2xpc3RlbmVyX3Jl Z2lvbl9hZGQoKSB3aWxsIGp1c3QgZG8gdGhlIGNvcnJlY3QgbWFwcGluZ3MuDQo+ID4+PiBHb29k IHRvIGtub3cgaXQuIEFjdHVhbGx5LCBJIGFsc28gbmVlZCB0byBleHBvc2UgRUNBUF9QVCBmb3Ig dlNWTS4NCj4gPj4+IFNvIGp1c3QgY29tZXMgdG8gcmVhbGl6ZSB0aGF0IHRoZSBjdXJyZW50IHJl cGxheSBzb2x1dGlvbiBtYXkgbm90DQo+ID4+PiB3b3JrIHdlbGwgd2hlbiBJDQo+ID4+IGV4cG9z ZSBFQ0FQX1BUIHRvIGd1ZXN0Lg0KPiA+Pj4gSSBhbHNvIGhhdmUgYSByb3VnaCBpZGVhIGhlcmUu IFRoZSBjdXJyZW50IGxpc3RlbmVyIGluIGNvbnRhaW5lcg0KPiA+Pj4gbGlzdGVucyB0byBhZGRy ZXNzIHNwYWNlIG5hbWVkIHdpdGggZGV2Zm4gaWYgdmlydHVhbCBWVGQgaXMgYWRkZWQuDQo+ID4+ PiBIb3cgYWJvdXQgYWRkaW5nIG9uZSBtb3JlIGxpc3RlbmVyIHRvIGxpc3RlbiBtZW1vcnkgYWRk cmVzcyBzcGFjZS4NCj4gPj4+IFNvIHRoYXQgdGhlDQo+ID4+IGxpc3RlbmVyIGNhbiBidWlsZCBl bnRpcmUgZ3Vlc3QgUEEtPkhQQSBtYXBwaW5nLg0KPiA+Pg0KPiA+PiBUaGlzIGlzIG9ubHkgbmVl ZGVkIGZvciBQVC4gU28gbG9va3MgbGlrZSBjdXJyZW50IGNvZGUgaXMgc3VmZmljaWVudCB0byBk byB0aGlzIEkgdGhpbmsuDQo+ID4+IFNlZSB0aGUgZWxzZSBwYXJ0IG9mIGlmIChtZW1vcnlfcmVn aW9uX2lzX2lvbW11KCkpIG9mIHZmaW9fbGlzdGVuZXJfcmVnaW9uX2FkZCgpLg0KPiA+IEphc29u LCB3aGVuIHRoZSBsaXN0ZW5lciBsaXN0ZW4gdG8gZGV2aWNlIGFkZHJlc3Mgc3BhY2UsIHRoZSAi ZWxzZQ0KPiA+IHBhcnQiIG1heSBub3Qgd29yayBldmVuIHdlIHNldCB0aGUgbXItPmlvbW11X29w cyA9IE5VTEwuIFRoZSBtciB3b3VsZA0KPiA+IGJlIGEgbm9uLXJhbSByZWdpb24gd2hlbiB0aGUg dGltZSByZWdpb25fYWRkIGlzIGNhbGxlZCBzaW5jZSBpdCBpcyBhY3R1YWxseSBsaXN0ZW4gdG8N Cj4gY2hhbmdlcyBmcm9tIGRldmljZSBhZGRyZXNzIHNwYWNlLg0KPiA+DQo+ID4gUmVnYXJkcywN Cj4gPiBZaSBMDQo+ID4NCj4gDQo+IFNlZSBQZXRlcidzIHBhdGNoICgiaW50ZWxfaW9tbXU6IGFs bG93IGR5bmFtaWMgc3dpdGNoIG9mIElPTU1VIHJlZ2lvbiIpLg0KPiBJdCBoYXMNCj4gDQo+ICsg ICAgICAgIG1lbW9yeV9yZWdpb25faW5pdF9hbGlhcygmdnRkX2Rldl9hcy0+c3lzX2FsaWFzLCBP QkpFQ1QocyksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidnRkX3N5c19h bGlhcyIsIGdldF9zeXN0ZW1fbWVtb3J5KCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLA0KPiBtZW1vcnlfcmVnaW9uX3NpemUoZ2V0X3N5c3RlbV9tZW1vcnkoKSkpOw0K PiANCj4gV2UgY2FuIGVuYWJsZSBzeXNfYWxpYXMgaW4gd2hlbiBQVCBpcyB1c2VkIHdoaWNoIHNo b3VsZCB3b3JrIEkgdGhpbmsuDQoNCkdyZWF0LiBJIHRoaW5rIGl0IHdvcmtzLiBUaHguDQoNClJl Z2FyZHMsDQpZaSBMDQo=