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