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==