RE: [PATCH v4 3/3] hw/vfio/region: Create dmabuf for PCI BAR per region
Shameer Kolothum Thodi <[email protected]> Wed, 5 Aug 2026 08:33:06 +0000
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <SJ0PR12MB86148329F85C2A4A22D0C67FABD32@SJ0PR12MB8614.namprd12.prod.outlook.com> |
SGkgR2F2aW4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR2F2aW4g U2hhbiA8Z3NoYW5AcmVkaGF0LmNvbT4NCj4gU2VudDogMDUgQXVndXN0IDIwMjYgMDI6MTANCj4g VG86IFNoYW1lZXIgS29sb3RodW0gVGhvZGkgPHNrb2xvdGh1bXRob0BudmlkaWEuY29tPjsgcWVt dS0NCj4gYXJtQG5vbmdudS5vcmc7IHFlbXUtZGV2ZWxAbm9uZ251Lm9yZw0KPiBDYzogZXJpYy5h dWdlckByZWRoYXQuY29tOyBhbGV4QHNoYXpib3Qub3JnOyBjbGdAcmVkaGF0LmNvbTsNCj4gY29o dWNrQHJlZGhhdC5jb207IG1zdEByZWRoYXQuY29tOyBOaWNvbGluIENoZW4gPG5pY29saW5jQG52 aWRpYS5jb20+Ow0KPiBOYXRoYW4gQ2hlbiA8bmF0aGFuY0BudmlkaWEuY29tPjsgTWF0dCBPY2hz IDxtb2Noc0BudmlkaWEuY29tPjsNCj4gSmFzb24gR3VudGhvcnBlIDxqZ2dAbnZpZGlhLmNvbT47 IGpvbmF0aGFuLmNhbWVyb25AaHVhd2VpLmNvbTsNCj4gemhlbnpob25nLmR1YW5AaW50ZWwuY29t OyB2aXZlay5rYXNpcmVkZHlAaW50ZWwuY29tOyBLcmlzaG5ha2FudCBKYWp1DQo+IDxramFqdUBu dmlkaWEuY29tPjsgbWVzaGV0dHlAcmVkaGF0LmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0 IDMvM10gaHcvdmZpby9yZWdpb246IENyZWF0ZSBkbWFidWYgZm9yIFBDSSBCQVIgcGVyDQo+IHJl Z2lvbg0KPiANCj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3Ig YXR0YWNobWVudHMNCj4gDQo+IA0KPiBIaSBOaWNvbGluIGFuZCBTaGFtZWVyLA0KPiANCj4gT24g MS8yMS8yNiA5OjQxIFBNLCBTaGFtZWVyIEtvbG90aHVtIHdyb3RlOg0KPiA+IEZyb206IE5pY29s aW4gQ2hlbiA8bmljb2xpbmNAbnZpZGlhLmNvbT4NCj4gPg0KPiA+IExpbnV4IG5vdyBwcm92aWRl cyBhIFZGSU8gZG1hYnVmIGV4cG9ydGVyIHRvIGV4cG9zZSBQQ0kgQkFSIG1lbW9yeSBmb3INCj4g UDJQDQo+ID4gdXNlIGNhc2VzLiBDcmVhdGUgYSBkbWFidWYgZm9yIGVhY2ggbWFwcGVkIEJBUiBy ZWdpb24gYWZ0ZXIgdGhlIG1tYXAgaXMNCj4gc2V0DQo+ID4gdXAsIGFuZCBzdG9yZSB0aGUgcmV0 dXJuZWQgZmQgaW4gdGhlIHJlZ2lvbuKAmXMgUkFNQmxvY2suIFRoaXMgYWxsb3dzIFFFTVUgdG8N Cj4gPiBwYXNzIHRoZSBmZCB0byBkbWFfbWFwX2ZpbGUoKSwgZW5hYmxpbmcgaW9tbXVmZCB0byBp bXBvcnQgdGhlIGRtYWJ1ZiBhbmQNCj4gbWFwDQo+ID4gdGhlIEJBUiBjb3JyZWN0bHkgaW4gdGhl IGhvc3QgSU9NTVUgcGFnZSB0YWJsZS4NCj4gPg0KPiA+IElmIHRoZSBrZXJuZWwgbGFja3Mgc3Vw cG9ydCBvciBkbWFidWYgc2V0dXAgZmFpbHMsIFFFTVUgc2tpcHMgdGhlIHNldHVwDQo+ID4gYW5k IGNvbnRpbnVlcyB3aXRoIG5vcm1hbCBtbWFwIGhhbmRsaW5nLg0KPiA+DQo+ID4gVGVzdGVkLWJ5 OiBOaWNvbGluIENoZW4gPG5pY29saW5jQG52aWRpYS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IFpo ZW56aG9uZyBEdWFuIDx6aGVuemhvbmcuZHVhbkBpbnRlbC5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6 IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAcmVkaGF0LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBO aWNvbGluIENoZW4gPG5pY29saW5jQG52aWRpYS5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogU2hh bWVlciBLb2xvdGh1bSA8c2tvbG90aHVtdGhvQG52aWRpYS5jb20+DQo+ID4gLS0tDQo+ID4gICBo dy92ZmlvL3JlZ2lvbi5jICAgICB8IDY1DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystDQo+ID4gICBody92ZmlvL3RyYWNlLWV2ZW50cyB8ICAxICsNCj4gPiAg IDIgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2h3L3ZmaW8vcmVnaW9uLmMgYi9ody92ZmlvL3JlZ2lvbi5jDQo+ID4g aW5kZXggY2E3NWFiMWJlNC4uYWIzOWQ3NzU3NCAxMDA2NDQNCj4gPiAtLS0gYS9ody92ZmlvL3Jl Z2lvbi5jDQo+ID4gKysrIGIvaHcvdmZpby9yZWdpb24uYw0KPiA+IEBAIC0yOSw2ICsyOSw3IEBA DQo+ID4gICAjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCINCj4gPiAgICNpbmNsdWRlICJx ZW11L3VuaXRzLmgiDQo+ID4gICAjaW5jbHVkZSAibW9uaXRvci9tb25pdG9yLmgiDQo+ID4gKyNp bmNsdWRlICJzeXN0ZW0vcmFtYmxvY2suaCINCj4gPiAgICNpbmNsdWRlICJ2ZmlvLWhlbHBlcnMu aCINCj4gPg0KPiA+ICAgLyoNCj4gPiBAQCAtMjM4LDEzICsyMzksNzEgQEAgc3RhdGljIHZvaWQg dmZpb19zdWJyZWdpb25fdW5tYXAoVkZJT1JlZ2lvbg0KPiAqcmVnaW9uLCBpbnQgaW5kZXgpDQo+ ID4gICAgICAgcmVnaW9uLT5tbWFwc1tpbmRleF0ubW1hcCA9IE5VTEw7DQo+ID4gICB9DQo+ID4N Cj4gPiArc3RhdGljIGJvb2wgdmZpb19yZWdpb25fY3JlYXRlX2RtYV9idWYoVkZJT1JlZ2lvbiAq cmVnaW9uLCBFcnJvciAqKmVycnApDQo+ID4gK3sNCj4gPiArICAgIGdfYXV0b2ZyZWUgc3RydWN0 IHZmaW9fZGV2aWNlX2ZlYXR1cmUgKmZlYXR1cmUgPSBOVUxMOw0KPiA+ICsgICAgVkZJT0Rldmlj ZSAqdmJhc2VkZXYgPSByZWdpb24tPnZiYXNlZGV2Ow0KPiA+ICsgICAgc3RydWN0IHZmaW9fZGV2 aWNlX2ZlYXR1cmVfZG1hX2J1ZiAqZG1hX2J1ZjsNCj4gPiArICAgIHNpemVfdCB0b3RhbF9zaXpl Ow0KPiA+ICsgICAgaW50IGksIHJldDsNCj4gPiArDQo+ID4gKyAgICB0b3RhbF9zaXplID0gc2l6 ZW9mKCpmZWF0dXJlKSArIHNpemVvZigqZG1hX2J1ZikgKw0KPiA+ICsgICAgICAgICAgICAgICAg IHNpemVvZihzdHJ1Y3QgdmZpb19yZWdpb25fZG1hX3JhbmdlKSAqIHJlZ2lvbi0+bnJfbW1hcHM7 DQo+ID4gKyAgICBmZWF0dXJlID0gZ19tYWxsb2MwKHRvdGFsX3NpemUpOw0KPiA+ICsgICAgKmZl YXR1cmUgPSAoc3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmUpIHsNCj4gPiArICAgICAgICAuYXJn c3ogPSB0b3RhbF9zaXplLA0KPiA+ICsgICAgICAgIC5mbGFncyA9IFZGSU9fREVWSUNFX0ZFQVRV UkVfR0VUIHwNCj4gVkZJT19ERVZJQ0VfRkVBVFVSRV9ETUFfQlVGLA0KPiA+ICsgICAgfTsNCj4g PiArDQo+ID4gKyAgICBkbWFfYnVmID0gKHZvaWQgKilmZWF0dXJlLT5kYXRhOw0KPiA+ICsgICAg KmRtYV9idWYgPSAoc3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfZG1hX2J1Zikgew0KPiA+ICsg ICAgICAgIC5yZWdpb25faW5kZXggPSByZWdpb24tPm5yLA0KPiA+ICsgICAgICAgIC5vcGVuX2Zs YWdzID0gT19SRFdSLA0KPiA+ICsgICAgICAgIC5ucl9yYW5nZXMgPSByZWdpb24tPm5yX21tYXBz LA0KPiA+ICsgICAgfTsNCj4gPiArDQo+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwgcmVnaW9uLT5u cl9tbWFwczsgaSsrKSB7DQo+ID4gKyAgICAgICAgZG1hX2J1Zi0+ZG1hX3Jhbmdlc1tpXS5vZmZz ZXQgPSByZWdpb24tPm1tYXBzW2ldLm9mZnNldDsNCj4gPiArICAgICAgICBkbWFfYnVmLT5kbWFf cmFuZ2VzW2ldLmxlbmd0aCA9IHJlZ2lvbi0+bW1hcHNbaV0uc2l6ZTsNCj4gPiArICAgIH0NCj4g PiArDQo+IA0KPiBTaGFsbCB3ZSBjaGVjayBpZiBAb2Zmc2V0IGFuZCBAc2l6ZSBpcyBhbGlnbmVk IHRvIFBBR0VfU0laRT8gSWYgdGhleSdyZSBub3QsDQo+IEkgZ3Vlc3Mgd2UgbmVlZCB0byBza2lw IHBvcHVsYXRpbmcgRE1BIGJ1ZmZlciBpbnN0ZWFkIG9mIHByZXZlbnRpbmcgdGhlDQo+IGRldmlj ZSBmcm9tIGJlaW5nIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBndWVzdC4NCg0KSG1tLi5kb2VzIGl0 IHByZXZlbnQgcGFzc3Rocm91Z2ggaW4gdGhpcyBjYXNlPyBUaGUgaW50ZW50aW9uIHdhcyBub3Qg dG8gZG8gdGhhdC4NCnZmaW9fcmVnaW9uX21tYXAoKSByZXR1cm5zIDAgaXJyZXNwZWN0aXZlIG9m IGRtYS1idWYgb3V0Y29tZS4NCg0KSWYgdGhlIGNvbmNlcm4gd2FzIHRoZSB1c2FnZSBvZiAgZXJy b3JfcmVwb3J0X2VycigpIGFzIGRvZXMgaW4gcGF0Y2gsDQoNCisgICAgaWYgKCF2ZmlvX3JlZ2lv bl9jcmVhdGVfZG1hX2J1ZihyZWdpb24sICZsb2NhbF9lcnIpKSB7DQorICAgICAgICBlcnJvcl9y ZXBvcnRfZXJyKGxvY2FsX2Vycik7DQorICAgIH0NCg0KdGhpcyBpcyBub3cgdXBkYXRlZCB0byB3 YXJuX3JlcG9ydF9lcnJfb25jZSgpIGJ5IGNvbW1pdDoNCg0KNGIyZTY1MDVkNTliOiB2ZmlvL3Jl Z2lvbjogQ2xhcmlmeSBkbWEtYnVmIGZhaWx1cmUgbWVzc2FnZXMNCg0KT3IgbWF5IGJlIEkgYW0g bWlzc2luZyB5b3VyIGFjdHVhbCBjb25jZXJuIGhlcmUuIFBsZWFzZSBsZXQgbWUga25vdy4NCg0K VGhhbmtzLA0KU2hhbWVlcg0KDQoNCj4gDQo+IE1lZ2hhbmEgPG1lc2hldHR5QHJlZGhhdC5jb20+ IHJ1bnMgaW50byBpc3N1ZSB3aGVuIHBhc3NpbmcgdGhyb3VnaCBhbg0KPiBOVk1lDQo+IGNhcmQu IFRoZSBvbmx5IG1lbW9yeSBCQVIgb24gdGhlIE5WTWUgY2FyZCBpcyAxNkssIHdoaWNoIGlzIG5v dCBhbGlnbmVkIHRvDQo+IDY0S0IgKGhvc3QgcGFnZSBzaXplKS4NCj4gDQo+ICAgIC1kZXZpY2Ug dmZpby1wY2ksaWQ9bnZtZSxob3N0PTAwMDQ6MDE6MDAuMCxhZGRyPTB4Mi4weDEsYnVzPXBjaWUu MA0KPiANCj4gICAgaG9zdCQgc2ggdmZpby5zaA0KPiAgICBRRU1VIDEwLjEuMCBtb25pdG9yIC0g dHlwZSAnaGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24NCj4gICAgKHFlbXUpIHFlbXUta3ZtOiAt ZGV2aWNlIHZmaW8tDQo+IHBjaSxpZD1udm1lLGhvc3Q9MDAwNDowMTowMC4wLGFkZHI9MHgyLjB4 MSxidXM9cGNpZS4wOiBcDQo+ICAgICAgICAgICAgICAgICAgICAgMDAwNDowMTowMC4wIEJBUiAw OiBmYWlsZWQgdG8gY3JlYXRlIGRtYS1idWY6IFBDSSBCQVIgSU9NTVUNCj4gbWFwcGluZ3MgbWF5 IGZhaWw6IEludmFsaWQgYXJndW1lbnQNCj4gDQo+ICAgIGhvc3QkIGxzcGNpIC12dnZzIDAwMDQ6 MDE6MDAuMCB8IGdyZXAgUmVnaW9uLipNZW1vcnkNCj4gICAgUmVnaW9uIDA6IE1lbW9yeSBhdCA2 MjAwNDAwMTAwMDAgKDY0LWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW3NpemU9MTZLXQ0KPiANCj4g ICAgaG9zdCBrZXJuZWwNCj4gICAgPT09PT09PT09PT0NCj4gICAgdmZpb19kZXZpY2VfZm9wc191 bmxfaW9jdGwNCj4gICAgICB2ZmlvX2lvY3RsX2RldmljZV9mZWF0dXJlDQo+ICAgICAgICB2Zmlv X3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUNCj4gICAgICAgICAgdmZpb19wY2lfY29yZV9mZWF0dXJl X2RtYV9idWYNCj4gICAgICAgICAgICB2YWxpZGF0ZV9kbWFidWZfaW5wdXQgICAgICAgICAgLy8g UmV0dXJuIC1FSU5WQUwgZm9yICFQQUdFX0FMSUdORUQobGVuKQ0KPiANCj4gDQo+ID4gKyAgICBy ZXQgPSB2ZmlvX2RldmljZV9nZXRfZmVhdHVyZSh2YmFzZWRldiwgZmVhdHVyZSk7DQo+ID4gKyAg ICBpZiAocmV0IDwgMCkgew0KPiA+ICsgICAgICAgIGlmIChyZXQgPT0gLUVOT1RUWSkgew0KPiA+ ICsgICAgICAgICAgICB3YXJuX3JlcG9ydF9vbmNlKCJWRklPIGRtYS1idWYgbm90IHN1cHBvcnRl ZCBpbiBrZXJuZWw6ICINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUENJIEJB UiBJT01NVSBtYXBwaW5ncyBtYXkgZmFpbCIpOw0KPiA+ICsgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgICAgLyogUDJQIERNQSBvciBleHBvc2luZyBk ZXZpY2UgbWVtb3J5IHVzZSBjYXNlcyBhcmUgbm90IHN1cHBvcnRlZC4NCj4gKi8NCj4gPiArICAg ICAgICBlcnJvcl9zZXRnX2Vycm5vKGVycnAsIC1yZXQsICIlczogZmFpbGVkIHRvIGNyZWF0ZSBk bWEtYnVmOiAiDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAiUENJIEJBUiBJT01NVSBt YXBwaW5ncyBtYXkgZmFpbCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlf cmVnaW9uX25hbWUocmVnaW9uLT5tZW0pKTsNCj4gPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+ ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLyogQXNzaWduIHRoZSBkbWFidWYgZmQgdG8gYXNz b2NpYXRlZCBSQU1CbG9jayAqLw0KPiA+ICsgICAgZm9yIChpID0gMDsgaSA8IHJlZ2lvbi0+bnJf bW1hcHM7IGkrKykgew0KPiA+ICsgICAgICAgIE1lbW9yeVJlZ2lvbiAqbXIgPSAmcmVnaW9uLT5t bWFwc1tpXS5tZW07DQo+ID4gKyAgICAgICAgUkFNQmxvY2sgKnJhbV9ibG9jayA9IG1yLT5yYW1f YmxvY2s7DQo+ID4gKw0KPiA+ICsgICAgICAgIHJhbV9ibG9jay0+ZmQgPSByZXQ7DQo+ID4gKyAg ICAgICAgcmFtX2Jsb2NrLT5mZF9vZmZzZXQgPSByZWdpb24tPm1tYXBzW2ldLm9mZnNldDsNCj4g PiArICAgICAgICB0cmFjZV92ZmlvX3JlZ2lvbl9kbWFidWYocmVnaW9uLT52YmFzZWRldi0+bmFt ZSwgcmV0LCByZWdpb24tPm5yLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtZW1vcnlfcmVnaW9uX25hbWUocmVnaW9uLT5tZW0pLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWdpb24tPm1tYXBzW2ldLm9mZnNldCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT5tbWFwc1tpXS5zaXplKTsNCj4gPiArICAg IH0NCj4gPiArICAgIHJldHVybiB0cnVlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgaW50IHZmaW9f cmVnaW9uX21tYXAoVkZJT1JlZ2lvbiAqcmVnaW9uKQ0KPiA+ICAgew0KPiA+ICAgICAgIGludCBp LCByZXQsIHByb3QgPSAwOw0KPiA+ICsgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7DQo+ID4g ICAgICAgY2hhciAqbmFtZTsNCj4gPiAgICAgICBpbnQgZmQ7DQo+ID4NCj4gPiAtICAgIGlmICgh cmVnaW9uLT5tZW0pIHsNCj4gPiArICAgIGlmICghcmVnaW9uLT5tZW0gfHwgIXJlZ2lvbi0+bnJf bW1hcHMpIHsNCj4gPiAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gICAgICAgfQ0KPiA+DQo+ID4g QEAgLTMwNSw2ICszNjQsMTAgQEAgaW50IHZmaW9fcmVnaW9uX21tYXAoVkZJT1JlZ2lvbiAqcmVn aW9uKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+bW1hcHNb aV0uc2l6ZSAtIDEpOw0KPiA+ICAgICAgIH0NCj4gPg0KPiA+ICsgICAgaWYgKCF2ZmlvX3JlZ2lv bl9jcmVhdGVfZG1hX2J1ZihyZWdpb24sICZsb2NhbF9lcnIpKSB7DQo+ID4gKyAgICAgICAgZXJy b3JfcmVwb3J0X2Vycihsb2NhbF9lcnIpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiAgICAgICBy ZXR1cm4gMDsNCj4gPg0KPiA+ICAgbm9fbW1hcDoNCj4gPiBkaWZmIC0tZ2l0IGEvaHcvdmZpby90 cmFjZS1ldmVudHMgYi9ody92ZmlvL3RyYWNlLWV2ZW50cw0KPiA+IGluZGV4IDE4MGUzZDUyNmIu LjQ2NjY5NTUwN2IgMTAwNjQ0DQo+ID4gLS0tIGEvaHcvdmZpby90cmFjZS1ldmVudHMNCj4gPiAr KysgYi9ody92ZmlvL3RyYWNlLWV2ZW50cw0KPiA+IEBAIC0xMTgsNiArMTE4LDcgQEAgdmZpb19k ZXZpY2VfcHV0KGludCBmZCkgImNsb3NlIHZkZXYtPmZkPSVkIg0KPiA+ICAgdmZpb19yZWdpb25f d3JpdGUoY29uc3QgY2hhciAqbmFtZSwgaW50IGluZGV4LCB1aW50NjRfdCBhZGRyLCB1aW50NjRf dA0KPiBkYXRhLCB1bnNpZ25lZCBzaXplKSAiICglczpyZWdpb24lZCsweCUiUFJJeDY0IiwgMHgl IlBSSXg2NCAiLCAlZCkiDQo+ID4gICB2ZmlvX3JlZ2lvbl9yZWFkKGNoYXIgKm5hbWUsIGludCBp bmRleCwgdWludDY0X3QgYWRkciwgdW5zaWduZWQgc2l6ZSwNCj4gdWludDY0X3QgZGF0YSkgIiAo JXM6cmVnaW9uJWQrMHglIlBSSXg2NCIsICVkKSA9IDB4JSJQUkl4NjQNCj4gPiAgIHZmaW9fcmVn aW9uX3NldHVwKGNvbnN0IGNoYXIgKmRldiwgaW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lLCB1 bnNpZ25lZA0KPiBsb25nIGZsYWdzLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9u ZyBzaXplKSAiRGV2aWNlICVzLCByZWdpb24gJWQNCj4gXCIlc1wiLCBmbGFnczogMHglbHgsIG9m ZnNldDogMHglbHgsIHNpemU6IDB4JWx4Ig0KPiA+ICt2ZmlvX3JlZ2lvbl9kbWFidWYoY29uc3Qg Y2hhciAqZGV2LCBpbnQgZmQsIGludCBpbmRleCwgIGNvbnN0IGNoYXIgKm5hbWUsDQo+IHVuc2ln bmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpICJEZXZpY2UgJXMsIGRtYWJ1ZiBm ZCAlZCByZWdpb24gJWQNCj4gXCIlc1wiLCBvZmZzZXQ6IDB4JWx4LCBzaXplOiAweCVseCINCj4g PiAgIHZmaW9fcmVnaW9uX21tYXBfZmF1bHQoY29uc3QgY2hhciAqbmFtZSwgaW50IGluZGV4LCB1 bnNpZ25lZCBsb25nIG9mZnNldCwNCj4gdW5zaWduZWQgbG9uZyBzaXplLCBpbnQgZmF1bHQpICJS ZWdpb24gJXMgbW1hcHNbJWRdLCBbMHglbHggLSAweCVseF0sIGZhdWx0Og0KPiAlZCINCj4gPiAg IHZmaW9fcmVnaW9uX21tYXAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQs IHVuc2lnbmVkIGxvbmcNCj4gZW5kKSAiUmVnaW9uICVzIFsweCVseCAtIDB4JWx4XSINCj4gPiAg IHZmaW9fcmVnaW9uX2V4aXQoY29uc3QgY2hhciAqbmFtZSwgaW50IGluZGV4KSAiRGV2aWNlICVz LCByZWdpb24gJWQiDQo+IA0KPiBUaGFua3MsDQo+IEdhdmluDQoNCg==