Re: [PATCH v4 3/3] RISC-V: KVM: fix vcpu vector context handling for kernel-mode vector

Yong-Xuan Wang <[email protected]> Tue, 28 Jul 2026 14:07:37 +0800
Newsgroups org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.kvm
Message-ID <CAMWQL2jkVDVBw=_pecSR42RjooLoPevPP5ZEzwyz_m9YBc_PTQ@mail.gmail.com>
T24gU2F0LCBKdWwgMjUsIDIwMjYgYXQgODoxOOKAr0FNIEFuZHkgQ2hpdSA8dGNoaXVAdGVuc3Rv
cnJlbnQuY29tPiB3cm90ZToKPgo+IFJ1bm5pbmcgdmVjdG9yIHdvcmtsb2FkcyBsaWtlIHBlcmYg
KyBtY2Ygb24gS1ZNIGNhbiByZXN1bHQgaW4gYW4KPiB1bmV4cGVjdGVkIHRlcm1pbmF0aW9uIGR1
ZSB0byBhIHZ0eXBlIGNvcnJ1cHRpb24uIFRoaXMgaGFwcGVucyBiZWNhdXNlCj4gdGhlIGtlcm5l
bC1tb2RlIHZlY3RvciAoS01WKSBtaXNhdHRyaWJ1dGVzIHRoZSBndWVzdCdzIHZjcHUgY29udGV4
dCBhcwo+IHRoZSB1c2VyJ3MgY29udGV4dCBhbmQgc291cmNlIGZyb20gYSB3cm9uZyBzdGF0dXMu
VlMuCj4KPiBUaGUgc2ltcGxpZmllZCBjYWxsIGNoYWluIHRoYXQgcmVzdWx0cyBpbiB0aGlzIHBy
b2JsZW0gaXMgc2hvd24gYXMKPiBmb2xsb3c6Cj4KPiBfX3Jpc2N2X3N5c19pb2N0bCgpCj4gICAg
IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkKPiAgICAgICBrdm1fcmlzY3ZfdmNwdV9leGl0KCkK
PiAgICAgICAgIGt2bV9yaXNjdl92Y3B1X3NiaV9lY2FsbCgpCj4gICAgICAgICAgIGt2bV9yaXNj
dl92Y3B1X3BtdV9jdHJfc3RvcCgpCj4gICAgICAgICAgICAga3ZtX3ZjcHVfd3JpdGVfZ3Vlc3Qo
KQo+ICAgICAgICAgICAgICAgX19jb3B5X3RvX3VzZXIoKQo+ICAgICAgICAgICAgICAgICBlbnRl
cl92ZWN0b3JfdXNlcmNvcHkoKQo+ICAgICAgICAgICAgICAgICAgIGtlcm5lbF92ZWN0b3JfYmVn
aW4oKQo+Cj4ga2VybmVsX3ZlY3Rvcl9iZWdpbigpIHNob3VsZCB1c2UgdGhlIHNzdGF0dXMuVlMg
ZnJvbSBndWVzdCdzIHZjcHUKPiBjb250ZXh0IGluc3RlYWQgb2YgdGFza19wdF9yZWcoY3VycmVu
dCkuIEFsc28sIGl0IHNob3VsZCBub3Qgc2F2ZQo+IGd1ZXN0J3Mgdi1yZWcgaW50byB0aGUgdXNl
cidzIGNvbnRleHQgbWVtb3J5Lgo+Cj4gVG8gcmVzb2x2ZSB0aGlzLCB0aGUgdmNwdSBjb250ZXh0
IG11c3QgYmUgY29ycmVjdGx5IHNhdmVkIHdoZW4gS01WIGlzCj4gc2VydmluZyBhIGd1ZXN0LiBI
b3dldmVyLCBpbnZva2luZyBLVk0gZnVuY3Rpb25zIGRpcmVjdGx5IGZyb20gZ2VuZXJpYwo+IFJJ
U0MtViBhcmNoaXRlY3R1cmUgY29kZSBpbnRyb2R1Y2VzIGEgcmV2ZXJzZSBkZXBlbmRlbmN5LCBi
cmVha2luZwo+IGJ1aWxkcyB3aGVuIEtWTSBpcyBjb25maWd1cmVkIGFzIE4gb3IgTS4KPgo+IEFk
ZHJlc3MgdGhpcyBieSByZWdpc3RlcmluZyBhbiBSQ1UtcHJvdGVjdGVkIGNhbGxiYWNrIGZvciBj
b250ZXh0Cj4gZmx1c2hpbmcuIEtWTSByZWdpc3RlcnMgdGhpcyBjYWxsYmFjayBhdCBtb2R1bGUg
aW5pdGlhbGl6YXRpb24gYW5kCj4gdW5yZWdpc3RlcnMgaXQgb24gZXhpdC4gV2hlbiBLTVYgc3Rh
cnRzIGEga2VybmVsIGNvbnRleHQsIGl0IGNhbiBub3cKPiBzYWZlbHkgZmx1c2ggdGhlIHZlY3Rv
ciBjb250ZXh0IHZpYSB0aGUgY2FsbGJhY2suCj4KPiBGaXhlczogZWNkMmFkYThhNWUwICgicmlz
Y3Y6IEFkZCBzdXBwb3J0IGZvciBrZXJuZWwgbW9kZSB2ZWN0b3IiKQo+IFNpZ25lZC1vZmYtYnk6
IEFuZHkgQ2hpdSA8dGNoaXVAdGVuc3RvcnJlbnQuY29tPgpSZXZpZXdlZC1ieTogWW9uZy1YdWFu
IFdhbmcgPHlvbmd4dWFuLndhbmdAc2lmaXZlLmNvbT4KClRoYW5rIHlvdSEKWW9uZy1YdWFuCgoK
Pgo+IC0tLQo+IENoYW5nZWxvZyB2MzoKPiAgLSBjbGVhcnMgUklTQ1ZfVl9WQ1BVX05FRURfUkVT
VE9SRSBmbGFnIGluIGhvc3QgcmVzdG9yZSB0byBwcmV2ZW50Cj4gICAgbGVha2luZyAoU2FzaGlr
bykKPiAgLSBjb25zb2xpZGF0ZXMgZ3Vlc3QgdmVjdG9yIHJlc3RvcmUgYXQgcmV0dXJuaW5nIHRv
IGd1ZXN0IHRvIHByZXZlbnQKPiAgICB1bm5lY2Vzc2FyeSBzYXZlL3Jlc3RvcmUgYmV0d2VlbiB0
aGUgcHJlZW1wdGlibGUgd2luZG93IGZyb20KPiAgICB2Y3B1X2xvYWQgdG8gdmNwdV9lbnRlcl9l
eGl0Cj4gIC0gRG9jdW1lbnQgdGhlIGFkZGVkIHJpc2N2X3ZfZmxhZ3MKPiBDaGFuZ2Vsb2cgdjI6
IGFkZHJlc3MgY29uY2VybnMgcG9pbnRlZCBvdXQgYnkgc2FzaGlrbwo+ICAtIGVuY2xvc2VzIHZj
cHVfZmx1c2hfdl9jYWxsYmFjaygpIHdpdGggcmN1X3JlYWRfe2xvY2ssdW5sb2NrfQo+ICAtIHB1
dCByaXNjdl92X3N0YXJ0IGJlZm9yZSBwdXRfY3B1X3ZlY3Rvcl9jb250ZXh0KCkgdG8gcHJldmVu
dAo+ICAgIHJlZHVuZGFudCBjb250ZXh0IHNhdmUKPiAgLSBwcm90ZWN0IHYgY29udGV4dCBvcGVy
YXRpb25zIGFnYWluc3Qgc29mdGlycXMKPiAgLSBhcHBseSBiaXRtYXNrIHdoZW4gcmVhZGluZyBT
Ul9WUyBvdXQgb2YgZ3Vlc3QncyBzc3RhdHVzCj4gLS0tCj4gIGFyY2gvcmlzY3YvaW5jbHVkZS9h
c20va3ZtX3ZjcHVfdmVjdG9yLmggfCAyNCArKysrKysrKysrKwo+ICBhcmNoL3Jpc2N2L2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oICAgICAgIHwgIDggKysrKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUv
YXNtL3ZlY3Rvci5oICAgICAgICAgIHwgIDUgKysrCj4gIGFyY2gvcmlzY3Yva2VybmVsL2tlcm5l
bF9tb2RlX3ZlY3Rvci5jICAgfCA1MSArKysrKysrKysrKysrKysrKystLS0tLS0KPiAgYXJjaC9y
aXNjdi9rdm0vbWFpbi5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsrCj4gIGFyY2gvcmlzY3Yv
a3ZtL3ZjcHUuYyAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKysKPiAgYXJjaC9yaXNjdi9r
dm0vdmNwdV92ZWN0b3IuYyAgICAgICAgICAgICB8IDIyICsrKysrKysrKy0KPiAgNyBmaWxlcyBj
aGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0
IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV92ZWN0b3IuaCBiL2FyY2gvcmlzY3Yv
aW5jbHVkZS9hc20va3ZtX3ZjcHVfdmVjdG9yLmgKPiBpbmRleCA1N2E3OThhNGNiMGQuLjYzNzFk
NWVhNTM5MiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3Zl
Y3Rvci5oCj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV92ZWN0b3IuaAo+
IEBAIC0zNSw2ICszNSwyMiBAQCB2b2lkIGt2bV9yaXNjdl92Y3B1X2hvc3RfdmVjdG9yX3NhdmUo
c3RydWN0IGt2bV9jcHVfY29udGV4dCAqY250eCk7Cj4gIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfaG9z
dF92ZWN0b3JfcmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpjbnR4KTsKPiAgaW50IGt2
bV9yaXNjdl92Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7
Cj4gIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfZnJlZV92ZWN0b3JfY29udGV4dChzdHJ1Y3Qga3ZtX3Zj
cHUgKnZjcHUpOwo+ICt2b2lkIGt2bV9yaXNjdl9yZWdpc3Rlcl92Y3R4X2NhbGxiYWNrKHZvaWQg
KCpmdW5jKSh2b2lkKSk7Cj4gK3ZvaWQga3ZtX3Jpc2N2X3VucmVnaXN0ZXJfdmN0eF9jYWxsYmFj
ayh2b2lkKTsKPiArdm9pZCBrdm1fcmlzY3ZfdmNwdV9mbHVzaF92ZWN0b3Iodm9pZCk7Cj4gKwo+
ICtzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3Jpc2N2X3ZfaW5pdCh2b2lkKQo+ICt7Cj4gKyAgICAg
ICBpZiAoaGFzX3ZlY3RvcigpKQo+ICsgICAgICAgICAgICAgICBrdm1fcmlzY3ZfcmVnaXN0ZXJf
dmN0eF9jYWxsYmFjaygma3ZtX3Jpc2N2X3ZjcHVfZmx1c2hfdmVjdG9yKTsKPiArfQo+ICsKPiAr
c3RhdGljIGlubGluZSB2b2lkIGt2bV9yaXNjdl92X2V4aXQodm9pZCkKPiArewo+ICsgICAgICAg
aWYgKGhhc192ZWN0b3IoKSkKPiArICAgICAgICAgICAgICAga3ZtX3Jpc2N2X3VucmVnaXN0ZXJf
dmN0eF9jYWxsYmFjaygpOwo+ICt9Cj4gKwo+ICAjZWxzZQo+Cj4gIHN0cnVjdCBrdm1fY3B1X2Nv
bnRleHQ7Cj4gQEAgLTY5LDYgKzg1LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGt2bV9yaXNjdl92
Y3B1X2FsbG9jX3ZlY3Rvcl9jb250ZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiAgc3RhdGlj
IGlubGluZSB2b2lkIGt2bV9yaXNjdl92Y3B1X2ZyZWVfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2
bV92Y3B1ICp2Y3B1KQo+ICB7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBrdm1fcmlz
Y3Zfdl9pbml0KHZvaWQpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGt2bV9y
aXNjdl92X2V4aXQodm9pZCkKPiArewo+ICt9Cj4gICNlbmRpZgo+Cj4gIGludCBrdm1fcmlzY3Zf
dmNwdV9nZXRfcmVnX3ZlY3RvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gZGlmZiAtLWdpdCBh
L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUv
YXNtL3Byb2Nlc3Nvci5oCj4gaW5kZXggODEyNTE3YjJjZWMxLi5hNmEwYzNkNWE5MTMgMTAwNjQ0
Cj4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAo+ICsrKyBiL2FyY2gv
cmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKPiBAQCAtNjcsNiArNjcsMTIgQEAgc3RydWN0
IHB0X3JlZ3M7Cj4gICAqICAtIGJpdCAwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgaW4ta2VybmVs
IFZlY3RvciBjb250ZXh0IGlzIGFjdGl2ZS4gVGhlCj4gICAqICAgIGFjdGl2YXRpb24gb2YgdGhp
cyBzdGF0ZSBkaXNhYmxlcyB0aGUgcHJlZW1wdGlvbi4gT24gYSBub24tUlQga2VybmVsLCBpdAo+
ICAgKiAgICBhbHNvIGRpc2FibGUgYmguCj4gKyAqICAtIGJpdCAxOiB0ZWxscyBrdm0gdGhhdCB0
aGUgdmNwdSBwcm9jZXNzIGhhcyBndWVzdCBjb250ZXh0IHNhdmVkIGluIHZjcHUncwo+ICsgKiAg
ICBjb250ZXh0IG1lbW9yeSBhbmQgbmVlZCB0byBiZSByZXN0b3JlIHVwb24gcmV0dXJpbmcgYmFj
ayB0byB0aGUgZ3Vlc3QuCj4gKyAqICAtIGJpdCAyOiByZXByZXNlbnRzIHRoYXQgdGhlIHZlY3Rv
ciBjb250ZXh0IGhhcyBub3cgbG9hZGVkIGFuZCBiZWxvbmdzIHRvCj4gKyAqICAgIHRoZSBndWVz
dCBrZXJuZWwuIEFueSBub24tc2NoZWR1bGVyIGNvbnRleHQgc2F2aW5nIHJvdXRpbmcgbmVlZHMg
dG8gc2F2ZQo+ICsgKiAgICB0aGUgcmVnaXN0ZXIgZmlsZSB0byB2Y3B1J3MgY29udGV4dCBtZW1v
cnkuIFRoZSBiaXQgaXMgc2V0IHVwb24gcmV0dXJpbmcKPiArICogICAgYmFjayB0byB0aGUgZ3Vl
c3QgYW5kIGNsZWFyZWQgYWZ0ZXIgbG9hZGluZyB0aGUgaG9zdCdzIHZlY3RvciBjb250ZXh0Lgo+
ICAgKiAgLSBiaXRzIDg6IGlzIHVzZWQgZm9yIHRyYWNraW5nIHByZWVtcHRpYmxlIGtlcm5lbC1t
b2RlIFZlY3Rvciwgd2hlbgo+ICAgKiAgICBSSVNDVl9JU0FfVl9QUkVFTVBUSVZFIGlzIGVuYWJs
ZWQuIENhbGxpbmcga2VybmVsX3ZlY3Rvcl9iZWdpbigpIGRvZXMgbm90Cj4gICAqICAgIGRpc2Fi
bGUgdGhlIHByZWVtcHRpb24gaWYgdGhlIHRocmVhZCdzIGtlcm5lbF92c3RhdGUuZGF0YXAgaXMg
YWxsb2NhdGVkLgo+IEBAIC05Nyw2ICsxMDMsOCBAQCBzdHJ1Y3QgcHRfcmVnczsKPgo+ICAjZGVm
aW5lIFJJU0NWX1ZfQ1RYX1VOSVRfREVQVEggICAgICAgICAweDAwMDEwMDAwCj4gICNkZWZpbmUg
UklTQ1ZfS0VSTkVMX01PREVfViAgICAgICAgICAgIDB4MDAwMDAwMDEKPiArI2RlZmluZSBSSVND
Vl9WX1ZDUFVfTkVFRF9SRVNUT1JFICAgICAgMHgwMDAwMDAwMgo+ICsjZGVmaW5lIFJJU0NWX1Zf
VkNQVV9DVFggICAgICAgICAgICAgICAweDAwMDAwMDA0Cj4gICNkZWZpbmUgUklTQ1ZfUFJFRU1Q
VF9WICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAo+ICAjZGVmaW5lIFJJU0NWX1BS
RUVNUFRfVl9ESVJUWSAgICAgICAgICAweDgwMDAwMDAwCj4gICNkZWZpbmUgUklTQ1ZfUFJFRU1Q
VF9WX05FRURfUkVTVE9SRSAgIDB4NDAwMDAwMDAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9p
bmNsdWRlL2FzbS92ZWN0b3IuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdmVjdG9yLmgKPiBp
bmRleCAwMGNiOWMwOTgyYjEuLmZmZmU3MmE3NzIwOCAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2
L2luY2x1ZGUvYXNtL3ZlY3Rvci5oCj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS92ZWN0
b3IuaAo+IEBAIC01OCw2ICs1OCwxMSBAQCBzdGF0aWMgaW5saW5lIHUzMiByaXNjdl92X2ZsYWdz
KHZvaWQpCj4gICAgICAgICByZXR1cm4gUkVBRF9PTkNFKGN1cnJlbnQtPnRocmVhZC5yaXNjdl92
X2ZsYWdzKTsKPiAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCByaXNjdl92X2ZsYWdzX3NldCh1
MzIgZmxhZ3MpCj4gK3sKPiArICAgICAgIFdSSVRFX09OQ0UoY3VycmVudC0+dGhyZWFkLnJpc2N2
X3ZfZmxhZ3MsIGZsYWdzKTsKPiArfQo+ICsKPiAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29s
IGhhc192ZWN0b3Iodm9pZCkKPiAgewo+ICAgICAgICAgcmV0dXJuIHJpc2N2X2hhc19leHRlbnNp
b25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aVkUzMlgpOwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jp
c2N2L2tlcm5lbC9rZXJuZWxfbW9kZV92ZWN0b3IuYyBiL2FyY2gvcmlzY3Yva2VybmVsL2tlcm5l
bF9tb2RlX3ZlY3Rvci5jCj4gaW5kZXggOTY1YzhlZGJlOTg0Li5kYTZlYmM0ZGZmZGIgMTAwNjQ0
Cj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwva2VybmVsX21vZGVfdmVjdG9yLmMKPiArKysgYi9h
cmNoL3Jpc2N2L2tlcm5lbC9rZXJuZWxfbW9kZV92ZWN0b3IuYwo+IEBAIC0xMywxNiArMTMsMzEg
QEAKPiAgI2luY2x1ZGUgPGxpbnV4L2t2bV90eXBlcy5oPgo+Cj4gICNpbmNsdWRlIDxhc20vdmVj
dG9yLmg+Cj4gKyNpbmNsdWRlIDxhc20va3ZtX3ZjcHVfdmVjdG9yLmg+Cj4gICNpbmNsdWRlIDxh
c20vc3dpdGNoX3RvLmg+Cj4gICNpbmNsdWRlIDxhc20vc2ltZC5oPgo+ICAjaWZkZWYgQ09ORklH
X1JJU0NWX0lTQV9WX1BSRUVNUFRJVkUKPiAgI2luY2x1ZGUgPGFzbS9hc20tcHJvdG90eXBlcy5o
Pgo+ICAjZW5kaWYKPgo+IC1zdGF0aWMgaW5saW5lIHZvaWQgcmlzY3Zfdl9mbGFnc19zZXQodTMy
IGZsYWdzKQo+ICtzdGF0aWMgdm9pZCAoKiBfX3JjdSBrdm1fZmx1c2hfdmVjdG9yX2N0eF9jYWxs
YmFjaykodm9pZCk7Cj4gKwo+ICt2b2lkIGt2bV9yaXNjdl9yZWdpc3Rlcl92Y3R4X2NhbGxiYWNr
KHZvaWQgKCpmdW5jKSh2b2lkKSkKPiAgewo+IC0gICAgICAgV1JJVEVfT05DRShjdXJyZW50LT50
aHJlYWQucmlzY3Zfdl9mbGFncywgZmxhZ3MpOwo+ICsgICAgICAgaWYgKFdBUk5fT05fT05DRShy
Y3VfYWNjZXNzX3BvaW50ZXIoa3ZtX2ZsdXNoX3ZlY3Rvcl9jdHhfY2FsbGJhY2spKSkKPiArICAg
ICAgICAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgICAgIHJjdV9hc3NpZ25fcG9pbnRlcihrdm1f
Zmx1c2hfdmVjdG9yX2N0eF9jYWxsYmFjaywgZnVuYyk7Cj4gIH0KPiArRVhQT1JUX1NZTUJPTF9H
UEwoa3ZtX3Jpc2N2X3JlZ2lzdGVyX3ZjdHhfY2FsbGJhY2spOwo+ICsKPiArdm9pZCBrdm1fcmlz
Y3ZfdW5yZWdpc3Rlcl92Y3R4X2NhbGxiYWNrKHZvaWQpCj4gK3sKPiArICAgICAgIHJjdV9hc3Np
Z25fcG9pbnRlcihrdm1fZmx1c2hfdmVjdG9yX2N0eF9jYWxsYmFjaywgTlVMTCk7Cj4gKyAgICAg
ICBzeW5jaHJvbml6ZV9yY3UoKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChrdm1fcmlzY3Zf
dW5yZWdpc3Rlcl92Y3R4X2NhbGxiYWNrKTsKPiArCj4KPiAgc3RhdGljIGlubGluZSB2b2lkIHJp
c2N2X3Zfc3RhcnQodTMyIGZsYWdzKQo+ICB7Cj4gQEAgLTg3LDYgKzEwMiwyMiBAQCB2b2lkIHB1
dF9jcHVfdmVjdG9yX2NvbnRleHQodm9pZCkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0o
cHV0X2NwdV92ZWN0b3JfY29udGV4dCk7Cj4KPiArc3RhdGljIHZvaWQgX19yaXNjdl9mbHVzaF92
ZWN0b3JfY29udGV4dCh2b2lkKQo+ICt7Cj4gKyAgICAgICB2b2lkICgqdmNwdV9mbHVzaF92X2Nh
bGxiYWNrKSh2b2lkKTsKPiArCj4gKyAgICAgICBpZiAocmlzY3Zfdl9mbGFncygpICYgUklTQ1Zf
Vl9WQ1BVX0NUWCkgewo+ICsgICAgICAgICAgICAgICByY3VfcmVhZF9sb2NrKCk7Cj4gKyAgICAg
ICAgICAgICAgIHZjcHVfZmx1c2hfdl9jYWxsYmFjayA9IHJjdV9kZXJlZmVyZW5jZShrdm1fZmx1
c2hfdmVjdG9yX2N0eF9jYWxsYmFjayk7Cj4gKyAgICAgICAgICAgICAgIHZjcHVfZmx1c2hfdl9j
YWxsYmFjaygpOwo+ICsgICAgICAgICAgICAgICByY3VfcmVhZF91bmxvY2soKTsKPiArICAgICAg
ICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJpc2N2X3ZfdnN0YXRl
X3NhdmUoJmN1cnJlbnQtPnRocmVhZC52c3RhdGUsIHRhc2tfcHRfcmVncyhjdXJyZW50KSk7Cj4g
KyAgICAgICByaXNjdl92X3ZzdGF0ZV9zZXRfcmVzdG9yZShjdXJyZW50LCB0YXNrX3B0X3JlZ3Mo
Y3VycmVudCkpOwo+ICt9Cj4gKwo+ICAjaWZkZWYgQ09ORklHX1JJU0NWX0lTQV9WX1BSRUVNUFRJ
VkUKPiAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgKnJpc2N2X3ZfZmxhZ3NfcHRyKHZvaWQp
Cj4gIHsKPiBAQCAtMTMwLDcgKzE2MSw3IEBAIHN0YXRpYyBpbnQgcmlzY3Zfdl9zdG9wX2tlcm5l
bF9jb250ZXh0KHZvaWQpCj4KPiAgc3RhdGljIGludCByaXNjdl92X3N0YXJ0X2tlcm5lbF9jb250
ZXh0KHZvaWQpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBfX3Jpc2N2X3ZfZXh0X3N0YXRlICprdnN0
YXRlLCAqdXZzdGF0ZTsKPiArICAgICAgIHN0cnVjdCBfX3Jpc2N2X3ZfZXh0X3N0YXRlICprdnN0
YXRlOwo+Cj4gICAgICAgICBrdnN0YXRlID0gJmN1cnJlbnQtPnRocmVhZC5rZXJuZWxfdnN0YXRl
Owo+ICAgICAgICAgaWYgKCFrdnN0YXRlLT5kYXRhcCkKPiBAQCAtMTQ4LDEzICsxNzksMTAgQEAg
c3RhdGljIGludCByaXNjdl92X3N0YXJ0X2tlcm5lbF9jb250ZXh0KHZvaWQpCj4gICAgICAgICB9
Cj4KPiAgICAgICAgIC8qIFRyYW5zZmVyIHRoZSBvd25lcnNoaXAgb2YgViBmcm9tIHVzZXIgdG8g
a2VybmVsLCB0aGVuIHNhdmUgKi8KPiAtICAgICAgIHJpc2N2X3Zfc3RhcnQoUklTQ1ZfUFJFRU1Q
VF9WIHwgUklTQ1ZfUFJFRU1QVF9WX0RJUlRZKTsKPiAtICAgICAgIGlmIChfX3Jpc2N2X3ZfdnN0
YXRlX2NoZWNrKHRhc2tfcHRfcmVncyhjdXJyZW50KS0+c3RhdHVzLCBESVJUWSkpIHsKPiAtICAg
ICAgICAgICAgICAgdXZzdGF0ZSA9ICZjdXJyZW50LT50aHJlYWQudnN0YXRlOwo+IC0gICAgICAg
ICAgICAgICBfX3Jpc2N2X3ZfdnN0YXRlX3NhdmUodXZzdGF0ZSwgdXZzdGF0ZS0+ZGF0YXApOwo+
IC0gICAgICAgfQo+IC0gICAgICAgcmlzY3ZfcHJlZW1wdF92X2NsZWFyX2RpcnR5KGN1cnJlbnQp
Owo+IC0gICAgICAgcmlzY3Zfdl92c3RhdGVfc2V0X3Jlc3RvcmUoY3VycmVudCwgdGFza19wdF9y
ZWdzKGN1cnJlbnQpKTsKPiArICAgICAgIGdldF9jcHVfdmVjdG9yX2NvbnRleHQoKTsKPiArICAg
ICAgIF9fcmlzY3ZfZmx1c2hfdmVjdG9yX2NvbnRleHQoKTsKPiArICAgICAgIHJpc2N2X3Zfc3Rh
cnQoUklTQ1ZfUFJFRU1QVF9WKTsKPiArICAgICAgIHB1dF9jcHVfdmVjdG9yX2NvbnRleHQoKTsK
PiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiBAQCAtMjIwLDggKzI0OCw3IEBAIHZvaWQga2Vy
bmVsX3ZlY3Rvcl9iZWdpbih2b2lkKQo+Cj4gICAgICAgICBpZiAocmlzY3Zfdl9zdGFydF9rZXJu
ZWxfY29udGV4dCgpKSB7Cj4gICAgICAgICAgICAgICAgIGdldF9jcHVfdmVjdG9yX2NvbnRleHQo
KTsKPiAtICAgICAgICAgICAgICAgcmlzY3Zfdl92c3RhdGVfc2F2ZSgmY3VycmVudC0+dGhyZWFk
LnZzdGF0ZSwgdGFza19wdF9yZWdzKGN1cnJlbnQpKTsKPiAtICAgICAgICAgICAgICAgcmlzY3Zf
dl92c3RhdGVfc2V0X3Jlc3RvcmUoY3VycmVudCwgdGFza19wdF9yZWdzKGN1cnJlbnQpKTsKPiAr
ICAgICAgICAgICAgICAgX19yaXNjdl9mbHVzaF92ZWN0b3JfY29udGV4dCgpOwo+ICAgICAgICAg
fQo+Cj4gICAgICAgICByaXNjdl92X2VuYWJsZSgpOwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2
L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKPiBpbmRleCAwOTI0Yzc1MTAwYTIu
LmRhOGE1ZjZkNGI0ZCAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKPiArKysg
Yi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKPiBAQCAtMTQsNiArMTQsNyBAQAo+ICAjaW5jbHVkZSA8
YXNtL2t2bV9tbXUuaD4KPiAgI2luY2x1ZGUgPGFzbS9rdm1fbmFjbC5oPgo+ICAjaW5jbHVkZSA8
YXNtL3NiaS5oPgo+ICsjaW5jbHVkZSA8YXNtL2t2bV92Y3B1X3ZlY3Rvci5oPgo+Cj4gIERFRklO
RV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpOwo+Cj4gQEAg
LTc2LDYgKzc3LDcgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3RlYXJkb3duKHZvaWQpCj4gIHsK
PiAgICAgICAgIGt2bV9yaXNjdl9haWFfZXhpdCgpOwo+ICAgICAgICAga3ZtX3Jpc2N2X25hY2xf
ZXhpdCgpOwo+ICsgICAgICAga3ZtX3Jpc2N2X3ZfZXhpdCgpOwo+ICAgICAgICAga3ZtX3VucmVn
aXN0ZXJfcGVyZl9jYWxsYmFja3MoKTsKPiAgfQo+Cj4gQEAgLTE3MCw2ICsxNzIsOCBAQCBzdGF0
aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKQo+Cj4gICAgICAgICBrdm1fcmlzY3Zf
c2V0dXBfdmVuZG9yX2ZlYXR1cmVzKCk7Cj4KPiArICAgICAgIGt2bV9yaXNjdl92X2luaXQoKTsK
PiArCj4gICAgICAgICBrdm1fcmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTsKPgo+ICAgICAgICAg
cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpOwo+
IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1
LmMKPiBpbmRleCBjZjZlMjMxZTc2ZTIuLmUyNjUxODA4ZTFkMyAxMDA2NDQKPiAtLS0gYS9hcmNo
L3Jpc2N2L2t2bS92Y3B1LmMKPiArKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1LmMKPiBAQCAtNjAz
LDkgKzYwMywxMSBAQCB2b2lkIGt2bV9hcmNoX3ZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj
cHUsIGludCBjcHUpCj4gICAgICAgICBrdm1fcmlzY3ZfdmNwdV9ob3N0X2ZwX3NhdmUoJnZjcHUt
PmFyY2guaG9zdF9jb250ZXh0KTsKPiAgICAgICAgIGt2bV9yaXNjdl92Y3B1X2d1ZXN0X2ZwX3Jl
c3RvcmUoJnZjcHUtPmFyY2guZ3Vlc3RfY29udGV4dCwKPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmNwdS0+YXJjaC5pc2EpOwo+ICsgICAgICAgZ2V0X2NwdV92ZWN0
b3JfY29udGV4dCgpOwo+ICAgICAgICAga3ZtX3Jpc2N2X3ZjcHVfaG9zdF92ZWN0b3Jfc2F2ZSgm
dmNwdS0+YXJjaC5ob3N0X2NvbnRleHQpOwo+ICAgICAgICAga3ZtX3Jpc2N2X3ZjcHVfZ3Vlc3Rf
dmVjdG9yX3Jlc3RvcmUoJnZjcHUtPmFyY2guZ3Vlc3RfY29udGV4dCwKPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjcHUtPmFyY2guaXNhKTsKPiArICAgICAg
IHB1dF9jcHVfdmVjdG9yX2NvbnRleHQoKTsKPgo+ICAgICAgICAga3ZtX21ha2VfcmVxdWVzdChL
Vk1fUkVRX1NURUFMX1VQREFURSwgdmNwdSk7Cj4KPiBAQCAtNjI2LDkgKzYyOCwxMSBAQCB2b2lk
IGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiAgICAgICAgIGt2bV9y
aXNjdl92Y3B1X2hvc3RfZnBfcmVzdG9yZSgmdmNwdS0+YXJjaC5ob3N0X2NvbnRleHQpOwo+Cj4g
ICAgICAgICBrdm1fcmlzY3ZfdmNwdV90aW1lcl9zYXZlKHZjcHUpOwo+ICsgICAgICAgZ2V0X2Nw
dV92ZWN0b3JfY29udGV4dCgpOwo+ICAgICAgICAga3ZtX3Jpc2N2X3ZjcHVfZ3Vlc3RfdmVjdG9y
X3NhdmUoJnZjcHUtPmFyY2guZ3Vlc3RfY29udGV4dCwKPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZjcHUtPmFyY2guaXNhKTsKPiAgICAgICAgIGt2bV9yaXNjdl92
Y3B1X2hvc3RfdmVjdG9yX3Jlc3RvcmUoJnZjcHUtPmFyY2guaG9zdF9jb250ZXh0KTsKPiArICAg
ICAgIHB1dF9jcHVfdmVjdG9yX2NvbnRleHQoKTsKPgo+ICAgICAgICAgaWYgKGt2bV9yaXNjdl9u
YWNsX2F2YWlsYWJsZSgpKSB7Cj4gICAgICAgICAgICAgICAgIG5zaCA9IG5hY2xfc2htZW0oKTsK
PiBAQCAtNzY1LDYgKzc2OSwxNCBAQCBzdGF0aWMgdm9pZCBub2luc3RyIGt2bV9yaXNjdl92Y3B1
X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICAgICAgICAga3ZtX3Jpc2N2X3Zj
cHVfc3dhcF9pbl9ndWVzdF9zdGF0ZSh2Y3B1KTsKPiAgICAgICAgIGd1ZXN0X3N0YXRlX2VudGVy
X2lycW9mZigpOwo+Cj4gKyAgICAgICAvKiBzc3RhdHVzLlZTICE9IFNSX1ZTX09GRiBpcyBndWFy
YW50ZWVkIHdoZW4gTkVFRF9SRVNUT1JFIGlzIHNldCAqLwo+ICsgICAgICAgaWYgKGN1cnJlbnQt
PnRocmVhZC5yaXNjdl92X2ZsYWdzICYgUklTQ1ZfVl9WQ1BVX05FRURfUkVTVE9SRSkgewo+ICsg
ICAgICAgICAgICAgICBjdXJyZW50LT50aHJlYWQucmlzY3Zfdl9mbGFncyAmPSB+UklTQ1ZfVl9W
Q1BVX05FRURfUkVTVE9SRTsKPiArICAgICAgICAgICAgICAgY3VycmVudC0+dGhyZWFkLnJpc2N2
X3ZfZmxhZ3MgfD0gUklTQ1ZfVl9WQ1BVX0NUWDsKPiArICAgICAgICAgICAgICAgX19rdm1fcmlz
Y3ZfdmVjdG9yX3Jlc3RvcmUoZ2NudHgpOwo+ICsgICAgICAgICAgICAgICBnY250eC0+c3N0YXR1
cyA9IChnY250eC0+c3N0YXR1cyAmIH5TUl9WUykgfCBTUl9WU19DTEVBTjsKPiArICAgICAgIH0K
PiArCj4gICAgICAgICBpZiAoa3ZtX3Jpc2N2X25hY2xfc3luY19zcmV0X2F2YWlsYWJsZSgpKSB7
Cj4gICAgICAgICAgICAgICAgIG5zaCA9IG5hY2xfc2htZW0oKTsKPgo+IGRpZmYgLS1naXQgYS9h
cmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rvci5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV92ZWN0b3Iu
Ywo+IGluZGV4IDYyZDJmYjc3YmI5Yi4uZWYyZWVlNmVjMzA4IDEwMDY0NAo+IC0tLSBhL2FyY2gv
cmlzY3Yva3ZtL3ZjcHVfdmVjdG9yLmMKPiArKysgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3ZlY3Rv
ci5jCj4gQEAgLTU2LDggKzU2LDcgQEAgdm9pZCBrdm1fcmlzY3ZfdmNwdV9ndWVzdF92ZWN0b3Jf
cmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpjbnR4LAo+ICB7Cj4gICAgICAgICBpZiAo
KGNudHgtPnNzdGF0dXMgJiBTUl9WUykgIT0gU1JfVlNfT0ZGKSB7Cj4gICAgICAgICAgICAgICAg
IGlmIChyaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWlsYWJsZShpc2EsIHYpKQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgIF9fa3ZtX3Jpc2N2X3ZlY3Rvcl9yZXN0b3JlKGNudHgpOwo+IC0gICAgICAg
ICAgICAgICBrdm1fcmlzY3ZfdmNwdV92ZWN0b3JfY2xlYW4oY250eCk7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgcmlzY3Zfdl9mbGFnc19zZXQocmlzY3Zfdl9mbGFncygpIHwgUklTQ1ZfVl9W
Q1BVX05FRURfUkVTVE9SRSk7Cj4gICAgICAgICB9Cj4gIH0KPgo+IEBAIC03Miw2ICs3MSw3IEBA
IHZvaWQga3ZtX3Jpc2N2X3ZjcHVfaG9zdF92ZWN0b3JfcmVzdG9yZShzdHJ1Y3Qga3ZtX2NwdV9j
b250ZXh0ICpjbnR4KQo+ICB7Cj4gICAgICAgICBpZiAoIWt2bV9yaXNjdl9pc2FfY2hlY2tfaG9z
dChWKSkKPiAgICAgICAgICAgICAgICAgX19rdm1fcmlzY3ZfdmVjdG9yX3Jlc3RvcmUoY250eCk7
Cj4gKyAgICAgICByaXNjdl92X2ZsYWdzX3NldChyaXNjdl92X2ZsYWdzKCkgJiB+KFJJU0NWX1Zf
VkNQVV9DVFggfCBSSVNDVl9WX1ZDUFVfTkVFRF9SRVNUT1JFKSk7Cj4gIH0KPgo+ICBpbnQga3Zt
X3Jpc2N2X3ZjcHVfYWxsb2NfdmVjdG9yX2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+
IEBAIC05NSw2ICs5NSwyNCBAQCB2b2lkIGt2bV9yaXNjdl92Y3B1X2ZyZWVfdmVjdG9yX2NvbnRl
eHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ICAgICAgICAga2ZyZWUodmNwdS0+YXJjaC5ndWVz
dF9jb250ZXh0LnZlY3Rvci5kYXRhcCk7Cj4gICAgICAgICBrZnJlZSh2Y3B1LT5hcmNoLmhvc3Rf
Y29udGV4dC52ZWN0b3IuZGF0YXApOwo+ICB9Cj4gKwo+ICt2b2lkIGt2bV9yaXNjdl92Y3B1X2Zs
dXNoX3ZlY3Rvcih2b2lkKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSAq
dGhpc19jcHVfcHRyKGt2bV9nZXRfcnVubmluZ192Y3B1cygpKTsKPiArCj4gKyAgICAgICAvKgo+
ICsgICAgICAgICogT25seSByZWFjaGVkIGZyb20gX19yaXNjdl9mbHVzaF92ZWN0b3JfY29udGV4
dCgpIHdoZW4gUklTQ1ZfVl9WQ1BVX0NUWCBpcyBzZXQsIHdoaWNoCj4gKyAgICAgICAgKiBhbHdh
eXMgaGF2ZSBrdm1fZ2V0X3J1bm5pbmdfdmNwdXMgbm9uLU5VTEwuCj4gKyAgICAgICAgKi8KPiAr
ICAgICAgIGlmIChXQVJOX09OX09OQ0UoIXZjcHUpKQo+ICsgICAgICAgICAgICAgICByZXR1cm47
Cj4gKwo+ICsgICAgICAga3ZtX3Jpc2N2X3ZjcHVfZ3Vlc3RfdmVjdG9yX3NhdmUoJnZjcHUtPmFy
Y2guZ3Vlc3RfY29udGV4dCwgdmNwdS0+YXJjaC5pc2EpOwo+ICsKPiArICAgICAgIGlmICgodmNw
dS0+YXJjaC5ndWVzdF9jb250ZXh0LnNzdGF0dXMgJiBTUl9WUykgIT0gU1JfVlNfT0ZGKQo+ICsg
ICAgICAgICAgICAgICByaXNjdl92X2ZsYWdzX3NldChyaXNjdl92X2ZsYWdzKCkgfCBSSVNDVl9W
X1ZDUFVfTkVFRF9SRVNUT1JFKTsKPiArfQo+ICsKPiAgI2VuZGlmCj4KPiAgc3RhdGljIGludCBr
dm1fcmlzY3ZfdmNwdV92cmVnX2FkZHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+IC0tCj4gMi40
My4wCj4KCi0tIAprdm0tcmlzY3YgbWFpbGluZyBsaXN0Cmt2bS1yaXNjdkBsaXN0cy5pbmZyYWRl
YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va3ZtLXJp
c2N2Cg==