Re: [RFC PATCH v3 08/19] target/arm/kvm: Handle writeback for special ID register fields
Khushit Shah <[email protected]> Mon, 3 Aug 2026 16:03:17 +0000
| Newsgroups | dev.linux.lists.kvmarm,org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
DQoNCj4gT24gMjIgSnVsIDIwMjYsIGF0IDU6MzXigK9QTSwgRXJpYyBBdWdlciA8ZXJpYy5hdWdl ckByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+ICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KPiAgQ0FVVElPTjogRXh0 ZXJuYWwgRW1haWwNCj4gDQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIQ0KPiANCj4gSGkgS2h1c2hpdCwNCj4gT24g Ny8xNi8yNiAxMTozOCBQTSwgS2h1c2hpdCBTaGFoIHdyb3RlOg0KPj4gU29tZSBmaWVsZHMgc2hv dWxkIG5vdCBiZSB3cml0dGVuIGJhY2sgdG8gS1ZNIGZvciB2YXJpb3VzIHJlYXNvbnM6DQo+PiAt IElEX0FBNjRQRlIwX0VMMS5HSUMgLyBJRF9QRlIxX0VMMS5HSUMgYXJlIGZhYnJpY2F0ZWQgYnkg S1ZNIGJhc2VkIG9uDQo+PiAgIHRoZSBnaWMtdmVyc2lvbiBwcm9wZXJ0eS4NCj4gc28gdGhpcyBp cyBwYXJ0IG9mIHRoZSBvdmVyYWxsIGhhbmRsaW5nIG9mIGxlZ2FjeSBjb21wb3NpdGUgb3B0aW9u cw0KPiB2ZXJzdXMgc3lzcmVnIHNldHRpbmdzLiBUbyBiZSB0aGUgZmFjdCB0aGV5IGJvdGggYXJl IGNvbnNpc3RlbnQgc2hvdWxkDQo+IGJlIGVuZm9yY2VkIHVwZnJvbnQuDQoNCkkgaGF2ZSBvbmUg aWRlYSBvbiBob3cgdG8gaGFuZGxlIHRoaXM6DQotIEFmdGVyIHdlIGZpbmFsaXNlIGNwdSBmZWF0 dXJlcywgd2UgcmVjaGVjayBlYWNoIGNvbW1hbmQgbGluZSBwcm9wDQogICAgICAgICAgcGFzc2Vk LiBUaGUgZmluYWwgaWRyZWdzW13igJlzIHByb3AgdmFsdWUgc2hvdWxkIGJlIHNhbWUgYXMgdGhl IHVzZXINCiAgICAgICAgICBwcm92aWRlZCBvbmUgZnJvbSB0aGUgY21kbGluZS4NCiAgICBGb3Ig ZS5nLiwgaW52YWxpZCBjb25maWd1cmF0aW9ucyBsaWtlOg0KICAgICAgICAtY3B1IGhvc3Qsc3Zl PW9uLFNZU1JFR19JRF9BQTY0UEZSMF9FTDFfU1ZFPTANCiAgICBPcg0KICAgICAgICAtY3B1IGhv c3QscGF1dGg9b2ZmLFNZU1JFR19JRF9BQTY0SVNBUjFfRUwxX0FQQT0yDQoNCiAgICB3aWxsIGJl IGNhdWdodCBhZnRlciBmaW5hbGlzZSBhcyBib3RoIG9mIHRob3NlIGNhbm5vdCBiZSB0cnVlIGF0 DQogICAgdGhlIHNhbWUgdGltZS4NCg0KSWYgdGhpcyBtYWtlcyBzZW5zZSwgSSBjYW4gaW1wbGVt ZW50IGl0IGZvciB2NC4NCg0KPj4gLSBLVk0gZG9lcyBub3QgYWxsb3cgd3JpdGluZyAwIHRvIElE X0RGUjBfRUwxLkNvcERiZywgd2hpY2ggYnJlYWtzDQo+PiAgIGJvb3RpbmcgYW4gQUFyY2g2NC1v bmx5IGd1ZXN0IG9uIGEgaG9zdCB0aGF0IGFsc28gc3VwcG9ydHMgQUFyY2gzMi4NCj4+IC0gSURf REZSMF9FTDEuUGVyZk1vbiBpcyBwb3B1bGF0ZWQgYnkgS1ZNIGV2ZW4gZm9yIEFBcmNoNjQtb25s eSBndWVzdHMNCj4+ICAgYnV0IGlzIG5vdCB3cml0YWJsZSB0aGVyZS4NCj4+IC0gTVBJRFJfRUwx IGlzIG1hbmFnZWQgYnkgS1ZNIGJhc2VkIG9uIHZDUFUgaW5kZXguDQo+PiAtIEhvbGQgb2ZmIHdy aXRpbmcgYmFjayBDTElEUl9FTDEgdW50aWwgd2UgcHJvcGVybHkgc3VwcG9ydCBleHBvc2luZw0K Pj4gICBjYWNoZSB0b3BvbG9neSB0byBhIEtWTSBndWVzdC4NCj4gU291bmRzIHRoaXMgZGVzZXJ2 ZXMgYSBwcmVyZXF1aXNpdGUgZml4LiBJIGFsc28gaGF2ZSB0aGlzIGhhY2sgaW4gbXkNCj4gc2Vy aWVzIGJ1dCB0aGlzIHNob3VsZCBiZSBkZWFsdCB3aXRoIHNlcGFyYXRlbHkgSSB0aGluay4NCj4+ IA0KPj4gU29tZSByZWdpc3RlcnMgc3VjaCBhcyBEQ1pJRF9FTDAgYXJlIG5vdCBleHBvc2VkIHRo cm91Z2ggdGhlIEtWTSBjcHJlZw0KPj4gbGlzdCBhdCBhbGwsIGJ1dCBndWVzdCBzdGlsbCBzZWVz IHRoZSBob3N0IHZhbHVlLCB3ZSB2ZXJpZnkgdGhhdCB2Q1BVJ3MNCj4+IElEIHJlZ3MgdmFsdWVz IG1hdGNoIHRoZSBob3N0IHZhbHVlLg0KPiB3aHkgaXNuJ3QgaXQgY3ByZWcgdGhlbj8gU2hvdWxk bid0IHdlIGFkZCBpdCBpbnN0ZWFkPw0KDQppZGsgd2h5IEtWTSBkb2VzIG5vdCBleHBvc2UgRENa SURfRUwwLg0KDQo+PiANCj4+IFRvIGRvIHRoaXMsIHJlZmFjdG9yIGt2bV9hcm1fd3JpdGFibGVf aWRyZWdzX3RvX2NwcmVnX2xpc3QgdG8NCj4+IGt2bV9hcm1fd3JpdGVfaWRyZWdzX3RvX2NwcmVn c19saXN0LCB3aGljaCBvcGVyYXRlcyBwZXIgZmllbGQgYW5kIG5vdw0KPj4gcmV0dXJucyBhbiBl cnJvciBpZiBhIG5vbi13cml0YWJsZSBmaWVsZCBtaXNtYXRjaGVzIHdpdGggdGhlIGhvc3QgdmFs dWUuDQo+PiANCj4+IFNpZ25lZC1vZmYtYnk6IEtodXNoaXQgU2hhaCA8a2h1c2hpdC5zaGFoQG51 dGFuaXguY29tPg0KPj4gLS0tDQo+PiB0YXJnZXQvYXJtL2NwdS1pZHJlZ3MuYyB8ICAxOSArKysr KysrDQo+PiB0YXJnZXQvYXJtL2NwdS1pZHJlZ3MuaCB8ICAgNCArKw0KPj4gdGFyZ2V0L2FybS9r dm0uYyAgICAgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LQ0KPj4gdGFyZ2V0L2FybS90cmFjZS1ldmVudHMgfCAgIDIgKy0NCj4+IDQgZmlsZXMgY2hhbmdl ZCwgMTI1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0 IGEvdGFyZ2V0L2FybS9jcHUtaWRyZWdzLmMgYi90YXJnZXQvYXJtL2NwdS1pZHJlZ3MuYw0KPj4g aW5kZXggYzQxZDBhYjBjNC4uNmZhMDJhZjBmMyAxMDA2NDQNCj4+IC0tLSBhL3RhcmdldC9hcm0v Y3B1LWlkcmVncy5jDQo+PiArKysgYi90YXJnZXQvYXJtL2NwdS1pZHJlZ3MuYw0KPj4gQEAgLTcs NiArNyw3IEBADQo+PiAgKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0 ZXINCj4+ICAqLw0KPj4gI2luY2x1ZGUgInFlbXUvb3NkZXAuaCINCj4+ICsjaW5jbHVkZSAicWVt dS9iaXRvcHMuaCINCj4+ICNpbmNsdWRlICJxZW11L2Vycm9yLXJlcG9ydC5oIg0KPj4gI2luY2x1 ZGUgInFhcGkvZXJyb3IuaCINCj4+ICNpbmNsdWRlICJjcHUuaCINCj4+IEBAIC05NCwzICs5NSwy MSBAQCBBUk02NFN5c1JlZyBhcm02NF9pZF9yZWdzW05VTV9JRF9JRFhdID0gew0KPj4gI2luY2x1 ZGUgImNwdS1pZHJlZ3MuaC5pbmMiDQo+PiB9Ow0KPj4gDQo+PiArdWludDY0X3QgYXJtX2dldF9m aWVsZF9tYXNrKGNvbnN0IEFSTTY0U3lzUmVnRmllbGQgKmZpZWxkKQ0KPj4gK3sNCj4+ICsgICAg cmV0dXJuIE1BS0VfNjRCSVRfTUFTSyhmaWVsZC0+c2hpZnQsIGZpZWxkLT5sZW5ndGgpOw0KPj4g K30NCj4+ICsNCj4+ICtib29sIGFybV9maWVsZF9pc193cml0YWJsZShjb25zdCBBUk02NFN5c1Jl Z0ZpZWxkICpmaWVsZCkNCj4+ICt7DQo+PiArICAgIHVpbnQ2NF90IGZpZWxkX21hc2sgPSBhcm1f Z2V0X2ZpZWxkX21hc2soZmllbGQpOw0KPj4gKw0KPj4gKyAgICByZXR1cm4gKGFybTY0X2lkX3Jl Z3NbZmllbGQtPmluZGV4XS53cml0YWJsZV9tYXNrICYgZmllbGRfbWFzaykNCj4+ICsgICAgICAg ICAgID09IGZpZWxkX21hc2s7DQo+PiArfQ0KPj4gKw0KPj4gK2Jvb2wgZmllbGRfbWF0Y2hlcyhj b25zdCBBUk02NFN5c1JlZ0ZpZWxkICpmaWVsZCwgQVJNSURSZWdpc3RlcklkeCBpbmRleCwNCj4+ ICsgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkNCj4+ICt7DQo+PiArICAgIHJl dHVybiBmaWVsZC0+aW5kZXggPT0gaW5kZXggJiYgIXN0cmNtcChmaWVsZC0+bmFtZSwgbmFtZSk7 DQo+IHdoeSBkbyB5b3UgbmVlZCB0byBjaGVjayBib3RoIGluZGV4IGFuZCBuYW1lLiBPbmx5IGNo ZWNraW5nIGluZGV4IHNob3VsZA0KPiBiZSBzdWZmaWNpZW50Lg0KSW5kZXggZ2l2ZXMgcmVnaXN0 ZXIsIG5hbWUgaXMgZmllbGQgbmFtZS4NCg0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS90YXJnZXQv YXJtL2NwdS1pZHJlZ3MuaCBiL3RhcmdldC9hcm0vY3B1LWlkcmVncy5oDQo+PiBpbmRleCAyNDVm MWM4MTAzLi5kODY2YmQ5ZTBhIDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9jcHUtaWRyZWdz LmgNCj4+ICsrKyBiL3RhcmdldC9hcm0vY3B1LWlkcmVncy5oDQo+PiBAQCAtMzgsNCArMzgsOCBA QCB0eXBlZGVmIHN0cnVjdCBBUk02NFN5c1JlZyB7DQo+PiAgKi8NCj4+IGV4dGVybiBBUk02NFN5 c1JlZyBhcm02NF9pZF9yZWdzW05VTV9JRF9JRFhdOw0KPj4gDQo+PiArdWludDY0X3QgYXJtX2dl dF9maWVsZF9tYXNrKGNvbnN0IEFSTTY0U3lzUmVnRmllbGQgKmZpZWxkKTsNCj4+ICtib29sIGFy bV9maWVsZF9pc193cml0YWJsZShjb25zdCBBUk02NFN5c1JlZ0ZpZWxkICpmaWVsZCk7DQo+PiAr Ym9vbCBmaWVsZF9tYXRjaGVzKGNvbnN0IEFSTTY0U3lzUmVnRmllbGQgKmZpZWxkLCBBUk1JRFJl Z2lzdGVySWR4IGluZGV4LA0KPj4gKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1l KTsNCj4+ICNlbmRpZg0KPj4gZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0va3ZtLmMgYi90YXJnZXQv YXJtL2t2bS5jDQo+PiBpbmRleCA2OTc0ZTVjNTUxLi5jMzhiOTljZmNlIDEwMDY0NA0KPj4gLS0t IGEvdGFyZ2V0L2FybS9rdm0uYw0KPj4gKysrIGIvdGFyZ2V0L2FybS9rdm0uYw0KPj4gQEAgLTk1 MSw2ICs5NTEsMTYgQEAgc3RhdGljIHVpbnQ2NF90ICprdm1fYXJtX2dldF9jcHJlZ19wdHIoQVJN Q1BVICpjcHUsIHVpbnQ2NF90IHJlZ2lkeCkNCj4+ICAgICByZXR1cm4gJmNwdS0+Y3ByZWdfdmFs dWVzW3JlcyAtIGNwdS0+Y3ByZWdfaW5kZXhlc107DQo+PiB9DQo+PiANCj4+ICsvKiBMaWtlIGt2 bV9hcm1fZ2V0X2NwcmVnX3B0ciwgYnV0IHJldHVybnMgTlVMTCBpZiB0aGUgcmVnaXN0ZXIgaXMg bm90IGZvdW5kLiAqLw0KPj4gK3N0YXRpYyB1aW50NjRfdCAqa3ZtX2FybV9maW5kX2NwcmVnX3B0 cihBUk1DUFUgKmNwdSwgdWludDY0X3QgcmVnaWR4KQ0KPj4gK3sNCj4+ICsgICAgdWludDY0X3Qg KnJlczsNCj4+ICsgICAgcmVzID0gYnNlYXJjaCgmcmVnaWR4LCBjcHUtPmNwcmVnX2luZGV4ZXMs IGNwdS0+Y3ByZWdfYXJyYXlfbGVuLA0KPj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZih1aW50 NjRfdCksIGNvbXBhcmVfdTY0KTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIHJlcyA/ICZjcHUtPmNw cmVnX3ZhbHVlc1tyZXMgLSBjcHUtPmNwcmVnX2luZGV4ZXNdIDogTlVMTDsNCj4+ICt9DQo+PiAr DQo+PiAvKioNCj4+ICAqIGt2bV9hcm1fcmVnX3N5bmNzX3ZpYV9jcHJlZ19saXN0Og0KPj4gICog QHJlZ2lkeDogS1ZNIHJlZ2lzdGVyIGluZGV4DQo+PiBAQCAtMTI1MiwzMiArMTI2MiwxMDUgQEAg Ym9vbCBrdm1fYXJtX2NwdV9wb3N0X2xvYWQoQVJNQ1BVICpjcHUpDQo+PiAgICAgcmV0dXJuIHRy dWU7DQo+PiB9DQo+PiANCj4+ICtzdGF0aWMgYm9vbCBhcm1fZmllbGRfc2tpcF93cml0ZWJhY2tf YWx3YXlzKGNvbnN0IEFSTTY0U3lzUmVnRmllbGQgKmZpZWxkKQ0KPj4gK3sNCj4+ICsgICAgLyoN Cj4+ICsgICAgICogR0lDIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGdpYy12ZXJzaW9uIHByb3BlcnR5 IGFuZCBmYWJyaWNhdGVkIGJ5IEtWTQ0KPj4gKyAgICAgKiB3aGVuIHRoZSB2R0lDIGRldmljZSBp cyBjcmVhdGVkLCBzbyBhIG5hbWVkIENQVSBtb2RlbCBtdXN0IG5vdCB0b3VjaA0KPj4gKyAgICAg KiBpdC4gS1ZNIGFsc28gcmVqZWN0cyB3cml0aW5nIDAgdG8gSURfREZSMF9FTDEuQ29wRGJnLCB3 aGljaCBicmVha3MNCj4+ICsgICAgICogYm9vdGluZyBhIG1vZGVsIHRoYXQgbGFja3MgQUFyY2gz MiBzdXBwb3J0IG9uIGEgaG9zdCB0aGF0IHN1cHBvcnRzDQo+PiArICAgICAqIGl0LiBNUElEUl9F TDEgaXMgbWFuYWdlZCBieSBLVk0gYmFzZWQgb24gbnVtYmVyIG9mIHZDUFVzLCBza2lwDQo+PiAr ICAgICAqIHdyaXRpbmcgaXQgYmFjay4gU2ltaWxhcmx5LCBza2lwIHdyaXRpbmcgYmFjayBDTElE Ul9FTDEgdGlsbCB3ZQ0KPj4gKyAgICAgKiBwcm9wZXJseSBzdXBwb3J0IGV4cG9zaW5nIGNhY2hl IGZvciBLVk0gZ3Vlc3QuDQo+PiArICAgICAqLw0KPj4gKyAgICByZXR1cm4gZmllbGRfbWF0Y2hl cyhmaWVsZCwgSURfQUE2NFBGUjBfRUwxX0lEWCwgIkdJQyIpDQo+PiArICAgICAgICB8fCBmaWVs ZF9tYXRjaGVzKGZpZWxkLCBJRF9QRlIxX0VMMV9JRFgsICJHSUMiKQ0KPj4gKyAgICAgICAgfHwg ZmllbGRfbWF0Y2hlcyhmaWVsZCwgSURfREZSMF9FTDFfSURYLCAiQ29wRGJnIikNCj4+ICsgICAg ICAgIHx8IGZpZWxkLT5pbmRleCA9PSBNUElEUl9FTDFfSURYDQo+PiArICAgICAgICB8fCBmaWVs ZC0+aW5kZXggPT0gQ0xJRFJfRUwxX0lEWDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGJvb2wg YXJtX2ZpZWxkX3NraXBfd3JpdGViYWNrX2lmX25vdF93cml0YWJsZShjb25zdCBBUk02NFN5c1Jl Z0ZpZWxkICpmaWVsZCkNCj4+ICt7DQo+PiArICAgIC8qDQo+PiArICAgICAqIEtWTSBwb3B1bGF0 ZXMgSURfREZSMF9FTDEuUGVyZk1vbiBldmVuIGZvciBBQXJjaDY0LW9ubHkgZ3Vlc3RzIGJ1dA0K Pj4gKyAgICAgKiBkb2VzIG5vdCBleHBvc2UgaXQgYXMgd3JpdGFibGUgdGhlcmUsIHNvIHNraXAg aXQgd2hlbiBpdCBpcyBub3QNCj4+ICsgICAgICogd3JpdGFibGUuDQo+PiArICAgICAqLw0KPj4g KyAgICByZXR1cm4gZmllbGRfbWF0Y2hlcyhmaWVsZCwgSURfREZSMF9FTDFfSURYLCAiUGVyZk1v biIpOw0KPj4gK30NCj4+ICsNCj4+IC8qDQo+PiAtICogQ29weSB3cml0YWJsZSBJRCByZWdzIGZy b20gaXNhci5pZHJlZ3NbXSB0byBjcHJlZ19saXN0DQo+PiAtICogaW4gY2FzZSB0aGVpciB2YWx1 ZSBkaWZmZXJzIGZyb20gdGhlIG9yaWdpbmFsIGluaXQgY3ByZWcgdmFsdWUNCj4+ICsgKiBDb3B5 IHdyaXRhYmxlIElEIHJlZyBmaWVsZHMgZnJvbSBpc2FyLmlkcmVnc1tdIGludG8gdGhlIEtWTSBj cHJlZyBsaXN0LA0KPj4gKyAqIHNvIHRoZSBzdWJzZXF1ZW50IHdyaXRlX2xpc3RfdG9fa3Ztc3Rh dGUoKSBwdXNoZXMgdGhlbSB0byBLVk0uDQo+PiArICogT25seSB3cml0YWJsZSBmaWVsZHMgYXJl IGNvcGllZDsgZmllbGRzIHRoYXQgbXVzdCBub3QgYmUgd3JpdHRlbiBiYWNrDQo+PiArICogKHNl ZSBhcm1fZmllbGRfc2tpcF93cml0ZWJhY2tfKikgYXJlIHNraXBwZWQuDQo+PiArICogUmV0dXJu cyAtMSBpZiBhbnkgdkNQVSdzIElEIHJlZyB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIGhvc3QgdmFs dWUgYW5kIHRoZQ0KPj4gKyAqIGZpZWxkIGlzIG5vdCB3cml0YWJsZS4NCj4+ICAqLw0KPj4gLXN0 YXRpYyB2b2lkIGt2bV9hcm1fd3JpdGFibGVfaWRyZWdzX3RvX2NwcmVnX2xpc3QoQVJNQ1BVICpj cHUpDQo+PiArc3RhdGljIGludCBrdm1fYXJtX3dyaXRlX2lkcmVnc190b19jcHJlZ19saXN0KEFS TUNQVSAqY3B1KQ0KPj4gew0KPj4gICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX0lEX0lEWDsg aSsrKSB7DQo+PiAgICAgICAgIEFSTTY0U3lzUmVnICpzeXNyZWdkZXNjID0gJmFybTY0X2lkX3Jl Z3NbaV07DQo+PiAgICAgICAgIEFSTVN5c1JlZ3Mgc3lzcmVnID0gaWRfcmVnaXN0ZXJfc3lzcmVn W2ldOw0KPj4gLSAgICAgICAgdWludDY0X3QgcHJldmlvdXMsIG5ldzsNCj4+ICsgICAgICAgIHVp bnQ2NF90IHdyaXRhYmxlX21hc2sgPSBzeXNyZWdkZXNjLT53cml0YWJsZV9tYXNrOw0KPj4gKyAg ICAgICAgdWludDY0X3QgZGVzaXJlZCA9IGNwdS0+aXNhci5pZHJlZ3NbaV07DQo+PiArICAgICAg ICB1aW50NjRfdCBwcmV2aW91cywgdXBkYXRlZDsNCj4+ICAgICAgICAgdWludDY0X3QgKmNwcmVn Ow0KPj4gDQo+PiAtICAgICAgICBpZiAoIXN5c3JlZ2Rlc2MtPndyaXRhYmxlX21hc2spIHsNCj4+ ICsgICAgICAgIGNwcmVnID0ga3ZtX2FybV9maW5kX2NwcmVnX3B0cihjcHUsIGlkcmVnc19zeXNy ZWdfdG9fa3ZtX3JlZyhzeXNyZWcpKTsNCj4+ICsgICAgICAgIC8qDQo+PiArICAgICAgICAgKiBS ZWdpc3RlcnMgc3VjaCBhcyBEQ1pJRF9FTDAgYXJlIG5vdCBleHBvc2VkIHRocm91Z2ggdGhlIGNw cmVnDQo+PiArICAgICAgICAgKiBsaXN0IGFuZCBhcmUgdGhlcmVmb3JlIG5vdCB3cml0YWJsZS4g VXNlIHRoZSBob3N0IHZhbHVlDQo+PiArICAgICAgICAgKiBzbmFwc2hvdHRlZCBhdCBwcm9iZSB0 aW1lIGFzIHRoZSByZWZlcmVuY2UgdG8gY2hlY2sgdGhlIHZDUFUgSUQNCj4+ICsgICAgICAgICAq IHJlZ3MgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4NCj4+ICsgICAgICAgICAqLw0KPj4gKyAgICAgICAg cHJldmlvdXMgPSBjcHJlZyA/ICpjcHJlZyA6IGFybV9ob3N0X2NwdV9mZWF0dXJlcy5pc2FyLmlk cmVnc1tpXTsNCj4+ICsNCj4+ICsgICAgICAgIGlmIChwcmV2aW91cyA9PSBkZXNpcmVkKSB7DQo+ PiAgICAgICAgICAgICBjb250aW51ZTsNCj4+ICAgICAgICAgfQ0KPiB3aGlsZSBhdCBpdCB5b3Ug Y291bGQgYWxzbyB0ZXN0IGFsbCByZXNlcnZlZCBmaWVsZHMgaGVyZSwgUkFaLCBSRVMwLzENCj4g YW5kIG1ha2Ugc3VyZSBob3N0IHZhbHVlIGNvbXBsaWVzIHdpdGggdGhlIGRlc2NyaXB0aW9uLg0K DQpOb3RlZCwgd2lsbCBhZGQgaXQgaW4gdjQNCg0KV2FybSBSZWdhcmRzLA0KS2h1c2hpdA0KPj4g DQo+PiAtICAgICAgICBjcHJlZyA9IGt2bV9hcm1fZ2V0X2NwcmVnX3B0cihjcHUsIGlkcmVnc19z eXNyZWdfdG9fa3ZtX3JlZyhzeXNyZWcpKTsNCj4+IC0gICAgICAgIHByZXZpb3VzID0gKmNwcmVn Ow0KPj4gLSAgICAgICAgbmV3ID0gY3B1LT5pc2FyLmlkcmVnc1tpXTsNCj4+ICsgICAgICAgIGZv ciAoaW50IGogPSAwOyBqIDwgc3lzcmVnZGVzYy0+ZmllbGRzX2NvdW50OyBqKyspIHsNCj4+ICsg ICAgICAgICAgICBjb25zdCBBUk02NFN5c1JlZ0ZpZWxkICpmaWVsZCA9ICZzeXNyZWdkZXNjLT5m aWVsZHNbal07DQo+PiArICAgICAgICAgICAgdWludDY0X3QgZmllbGRfbWFzayA9IGFybV9nZXRf ZmllbGRfbWFzayhmaWVsZCk7DQo+PiArICAgICAgICAgICAgdWludDY0X3QgcHJldl92YWwgPSBw cmV2aW91cyAmIGZpZWxkX21hc2s7DQo+PiArICAgICAgICAgICAgdWludDY0X3QgbmV3X3ZhbCA9 IGRlc2lyZWQgJiBmaWVsZF9tYXNrOw0KPj4gKw0KPj4gKyAgICAgICAgICAgIGlmIChwcmV2X3Zh bCA9PSBuZXdfdmFsKSB7DQo+PiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gKyAgICAg ICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICBpZiAoYXJtX2ZpZWxkX3NraXBfd3JpdGVi YWNrX2Fsd2F5cyhmaWVsZCkgfHwNCj4+ICsgICAgICAgICAgICAgICAgKCFhcm1fZmllbGRfaXNf d3JpdGFibGUoZmllbGQpICYmDQo+PiArICAgICAgICAgICAgICAgICBhcm1fZmllbGRfc2tpcF93 cml0ZWJhY2tfaWZfbm90X3dyaXRhYmxlKGZpZWxkKSkpIHsNCj4+ICsgICAgICAgICAgICAgICAg LyogTmV2ZXIgd3JpdGUgdGhpcyBmaWVsZCBiYWNrOyBrZWVwIEtWTSdzIHZhbHVlLiAqLw0KPj4g KyAgICAgICAgICAgICAgICB3cml0YWJsZV9tYXNrICY9IH5maWVsZF9tYXNrOw0KPj4gKyAgICAg ICAgICAgICAgICBjb250aW51ZTsNCj4+ICsgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAg ICAgICAgaWYgKCFhcm1fZmllbGRfaXNfd3JpdGFibGUoZmllbGQpKSB7DQo+PiArICAgICAgICAg ICAgICAgIGVycm9yX3JlcG9ydCgiJXMuJXMgaXMgbm90IHdyaXRhYmxlOiBob3N0PTB4JSIgUFJJ eDY0DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCByZXF1ZXN0ZWQ9MHglIiBQ Ukl4NjQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNyZWdkZXNjLT5uYW1l LCBmaWVsZC0+bmFtZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfdmFs ID4+IGZpZWxkLT5zaGlmdCwgbmV3X3ZhbCA+PiBmaWVsZC0+c2hpZnQpOw0KPj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gLTE7DQo+PiArICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgfQ0KPj4g Kw0KPj4gKyAgICAgICAgaWYgKCFjcHJlZyB8fCAhd3JpdGFibGVfbWFzaykgew0KPj4gKyAgICAg ICAgICAgIGNvbnRpbnVlOw0KPj4gKyAgICAgICAgfQ0KPj4gDQo+PiAtICAgICAgICBpZiAocHJl dmlvdXMgIT0gbmV3KSB7DQo+PiAtICAgICAgICAgICAgKmNwcmVnID0gbmV3Ow0KPj4gLSAgICAg ICAgICAgIHRyYWNlX2t2bV9hcm1fd3JpdGFibGVfaWRyZWdzX3RvX2NwcmVnX2xpc3Qoc3lzcmVn ZGVzYy0+bmFtZSwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByZXZpb3VzLCBuZXcpOw0KPj4gLSAgICAgICAgIH0NCj4+ICsgICAg ICAgIHVwZGF0ZWQgPSAocHJldmlvdXMgJiB+d3JpdGFibGVfbWFzaykgfCAoZGVzaXJlZCAmIHdy aXRhYmxlX21hc2spOw0KPj4gKyAgICAgICAgaWYgKHVwZGF0ZWQgIT0gcHJldmlvdXMpIHsNCj4+ ICsgICAgICAgICAgICAqY3ByZWcgPSB1cGRhdGVkOw0KPj4gKyAgICAgICAgICAgIHRyYWNlX2t2 bV9hcm1fd3JpdGVfaWRyZWdzX3RvX2NwcmVnX2xpc3Qoc3lzcmVnZGVzYy0+bmFtZSwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy ZXZpb3VzLCB1cGRhdGVkKTsNCj4+ICsgICAgICAgIH0NCj4+ICAgICB9DQo+PiArDQo+PiArICAg IHJldHVybiAwOw0KPj4gfQ0KPj4gDQo+PiB2b2lkIGt2bV9hcm1fcmVzZXRfdmNwdShBUk1DUFUg KmNwdSkNCj4+IEBAIC0yMjM1LDggKzIzMTgsMTEgQEAgaW50IGt2bV9hcmNoX2luaXRfdmNwdShD UFVTdGF0ZSAqY3MpDQo+PiAgICAgaWYgKHJldCkgew0KPj4gICAgICAgICByZXR1cm4gcmV0Ow0K Pj4gICAgIH0NCj4+IC0gICAgLyogb3ZlcndyaXRlIHdyaXRhYmxlIElEIHJlZ3Mgd2l0aCB0aGVp ciB1cGRhdGVkIHByb3BlcnR5IHZhbHVlcyAqLw0KPj4gLSAgICBrdm1fYXJtX3dyaXRhYmxlX2lk cmVnc190b19jcHJlZ19saXN0KGNwdSk7DQo+PiArICAgIC8qIG92ZXJ3cml0ZSBJRCByZWcgZmll bGRzIHdpdGggdGhlaXIgdXBkYXRlZCBwcm9wZXJ0eSB2YWx1ZXMgKi8NCj4+ICsgICAgcmV0ID0g a3ZtX2FybV93cml0ZV9pZHJlZ3NfdG9fY3ByZWdfbGlzdChjcHUpOw0KPj4gKyAgICBpZiAocmV0 KSB7DQo+PiArICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICB9DQo+PiAgICAgcmV0ID0gd3Jp dGVfbGlzdF90b19rdm1zdGF0ZShjcHUsIEtWTV9QVVRfRlVMTF9TVEFURSk7DQo+PiAgICAgaWYg KCFyZXQpIHsNCj4+ICAgICAgICAgcmV0dXJuIC0xOw0KPj4gZGlmZiAtLWdpdCBhL3RhcmdldC9h cm0vdHJhY2UtZXZlbnRzIGIvdGFyZ2V0L2FybS90cmFjZS1ldmVudHMNCj4+IGluZGV4IGYzM2Iw ZDgyMWQuLmYwNDJhYjU5YjggMTAwNjQ0DQo+PiAtLS0gYS90YXJnZXQvYXJtL3RyYWNlLWV2ZW50 cw0KPj4gKysrIGIvdGFyZ2V0L2FybS90cmFjZS1ldmVudHMNCj4+IEBAIC0xNCw3ICsxNCw3IEBA IGFybV9ndF91cGRhdGVfaXJxKGludCB0aW1lciwgaW50IGlycXN0YXRlKSAiZ3RfdXBkYXRlX2ly cTogdGltZXIgJWQgaXJxc3RhdGUgJWQiDQo+PiAjIGt2bS5jDQo+PiBrdm1fYXJtX2ZpeHVwX21z aV9yb3V0ZSh1aW50NjRfdCBpb3ZhLCB1aW50NjRfdCBncGEpICJNU0kgaW92YSA9IDB4JSJQUkl4 NjQiIGlzIHRyYW5zbGF0ZWQgaW50byAweCUiUFJJeDY0DQo+PiBnZXRfaG9zdF9jcHVfaWRyZWdz KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHZhbHVlKSAic2NyYXRjaCB2Y3B1IGhvc3QgdmFs dWUgZm9yICVzIGlzIDB4JSJQUkl4NjQNCj4+IC1rdm1fYXJtX3dyaXRhYmxlX2lkcmVnc190b19j cHJlZ19saXN0KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHByZXZpb3VzLCB1aW50NjRfdCBu ZXcpICIlcyBvdmVyd3JpdGUgZGVmYXVsdCAweCUiUFJJeDY0IiB3aXRoIDB4JSJQUkl4NjQNCj4+ ICtrdm1fYXJtX3dyaXRlX2lkcmVnc190b19jcHJlZ19saXN0KGNvbnN0IGNoYXIgKm5hbWUsIHVp bnQ2NF90IHByZXZpb3VzLCB1aW50NjRfdCBuZXcpICIlcyBvdmVyd3JpdGUgZGVmYXVsdCAweCUi UFJJeDY0IiB3aXRoIDB4JSJQUkl4NjQNCj4+IA0KPj4gIyBjcHU2NC5jDQo+PiBnZXRfc3lzcmVn X3Byb3AoY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgdmFsdWUpICIlcyAweCUiUFJJeDY0DQo+ IFRoYW5rcw0KPiANCj4gRXJpYw0KDQoNCg==