Re: [PATCH v6 4/8] RISC-V: KVM: Add ssp context save/restore
Anup Patel <[email protected]> Wed, 29 Jul 2026 18:25:03 +0530
| Newsgroups | org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest |
|---|---|
| Message-ID | <CAAhSdy0fwA3V_CKdJJ9tr7uHyBXD9QjehTfyyz_S87sSRSpMQw@mail.gmail.com> |
T24gTW9uLCBKdWwgMTMsIDIwMjYgYXQgNjozNOKAr0FNIElub2NoaSBBbWFvdG8gPGlub2NoaWFt YUBnbWFpbC5jb20+IHdyb3RlOgo+Cj4gQWRkIHNzcCBjb250ZXh0IHNhdmUvcmVzdG9yZSBmb3Ig Z3Vlc3QgVkNQVXMgYW5kIGFsc28gYWRkIGl0IHRvIHRoZQo+IE9ORV9SRUcgaW50ZXJmYWNlIHRv IGFsbG93IGl0cyBhY2Nlc3MgZnJvbSB1c2VyIHNwYWNlLgo+Cj4gU2lnbmVkLW9mZi1ieTogSW5v Y2hpIEFtYW90byA8aW5vY2hpYW1hQGdtYWlsLmNvbT4KCkxHVE0uCgpSZXZpZXdlZC1ieTogQW51 cCBQYXRlbCA8YW51cEBicmFpbmZhdWx0Lm9yZz4KClRoYW5rcywKQW51cAoKPiAtLS0KPiAgYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIHwgIDcgKysrKwo+ICBhcmNoL3Jpc2N2L2lu Y2x1ZGUvdWFwaS9hc20va3ZtLmggfCAgOCArKysrCj4gIGFyY2gvcmlzY3Yva3ZtL3ZjcHUuYyAg ICAgICAgICAgICB8ICA3ICsrKysKPiAgYXJjaC9yaXNjdi9rdm0vdmNwdV9vbmVyZWcuYyAgICAg IHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICA0IGZpbGVzIGNoYW5nZWQs IDg4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1f aG9zdC5oCj4gaW5kZXggNjAwMTdjZWVjOWQyLi5lNWVkM2IwZTVhNTUgMTAwNjQ0Cj4gLS0tIGEv YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gKysrIGIvYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9rdm1faG9zdC5oCj4gQEAgLTE2Myw2ICsxNjMsMTAgQEAgc3RydWN0IGt2bV92Y3B1 X3Ntc3RhdGVlbl9jc3Igewo+ICAgICAgICAgdW5zaWduZWQgbG9uZyBzc3RhdGVlbjA7Cj4gIH07 Cj4KPiArc3RydWN0IGt2bV92Y3B1X3ppY2Zpc3NfY3NyIHsKPiArICAgICAgIHVuc2lnbmVkIGxv bmcgc3NwOwo+ICt9Owo+ICsKPiAgc3RydWN0IGt2bV92Y3B1X3Jlc2V0X3N0YXRlIHsKPiAgICAg ICAgIHNwaW5sb2NrX3QgbG9jazsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGM7Cj4gQEAgLTIw Myw2ICsyMDcsOSBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7Cj4gICAgICAgICAvKiBDUFUgU21z dGF0ZWVuIENTUiBjb250ZXh0IG9mIEd1ZXN0IFZDUFUgKi8KPiAgICAgICAgIHN0cnVjdCBrdm1f dmNwdV9zbXN0YXRlZW5fY3NyIHNtc3RhdGVlbl9jc3I7Cj4KPiArICAgICAgIC8qIENQVSBaaWNm aXNzIENTUiBjb250ZXh0IG9mIEd1ZXN0IFZDUFUgKi8KPiArICAgICAgIHN0cnVjdCBrdm1fdmNw dV96aWNmaXNzX2NzciB6aWNmaXNzX2NzcjsKPiArCj4gICAgICAgICAvKiBDUFUgcmVzZXQgc3Rh dGUgb2YgR3Vlc3QgVkNQVSAqLwo+ICAgICAgICAgc3RydWN0IGt2bV92Y3B1X3Jlc2V0X3N0YXRl IHJlc2V0X3N0YXRlOwo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2Fz bS9rdm0uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAo+IGluZGV4IGEyN2Rl ODUwZmE0Yy4uZmQ0YzgxNjk3NjE3IDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS91 YXBpL2FzbS9rdm0uaAo+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAo+ IEBAIC0xMDIsNiArMTAyLDExIEBAIHN0cnVjdCBrdm1fcmlzY3Zfc21zdGF0ZWVuX2NzciB7Cj4g ICAgICAgICB1bnNpZ25lZCBsb25nIHNzdGF0ZWVuMDsKPiAgfTsKPgo+ICsvKiBaaWNmaXNzIENT UiBmb3IgS1ZNX0dFVF9PTkVfUkVHIGFuZCBLVk1fU0VUX09ORV9SRUcgKi8KPiArc3RydWN0IGt2 bV9yaXNjdl96aWNmaXNzX2NzciB7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHNzcDsKPiArfTsK PiArCj4gIC8qIFRJTUVSIHJlZ2lzdGVycyBmb3IgS1ZNX0dFVF9PTkVfUkVHIGFuZCBLVk1fU0VU X09ORV9SRUcgKi8KPiAgc3RydWN0IGt2bV9yaXNjdl90aW1lciB7Cj4gICAgICAgICBfX3U2NCBm cmVxdWVuY3k7Cj4gQEAgLTI2NiwxMiArMjcxLDE1IEBAIHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2Z3 ZnQgewo+ICAjZGVmaW5lIEtWTV9SRUdfUklTQ1ZfQ1NSX0dFTkVSQUwgICAgICAoMHgwIDw8IEtW TV9SRUdfUklTQ1ZfU1VCVFlQRV9TSElGVCkKPiAgI2RlZmluZSBLVk1fUkVHX1JJU0NWX0NTUl9B SUEgICAgICAgICAgKDB4MSA8PCBLVk1fUkVHX1JJU0NWX1NVQlRZUEVfU0hJRlQpCj4gICNkZWZp bmUgS1ZNX1JFR19SSVNDVl9DU1JfU01TVEFURUVOICAgICgweDIgPDwgS1ZNX1JFR19SSVNDVl9T VUJUWVBFX1NISUZUKQo+ICsjZGVmaW5lIEtWTV9SRUdfUklTQ1ZfQ1NSX1pJQ0ZJU1MgICAgICAo MHgzIDw8IEtWTV9SRUdfUklTQ1ZfU1VCVFlQRV9TSElGVCkKPiAgI2RlZmluZSBLVk1fUkVHX1JJ U0NWX0NTUl9SRUcobmFtZSkgICAgXAo+ICAgICAgICAgICAgICAgICAob2Zmc2V0b2Yoc3RydWN0 IGt2bV9yaXNjdl9jc3IsIG5hbWUpIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQo+ICAjZGVmaW5l IEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQV9SRUcobmFtZSkgICAgICAgIFwKPiAgICAgICAgIChvZmZz ZXRvZihzdHJ1Y3Qga3ZtX3Jpc2N2X2FpYV9jc3IsIG5hbWUpIC8gc2l6ZW9mKHVuc2lnbmVkIGxv bmcpKQo+ICAjZGVmaW5lIEtWTV9SRUdfUklTQ1ZfQ1NSX1NNU1RBVEVFTl9SRUcobmFtZSkgIFwK PiAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3Qga3ZtX3Jpc2N2X3Ntc3RhdGVlbl9jc3IsIG5hbWUp IC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQo+ICsjZGVmaW5lIEtWTV9SRUdfUklTQ1ZfQ1NSX1pJ Q0ZJU1NfUkVHKG5hbWUpICBcCj4gKyAgICAgICAob2Zmc2V0b2Yoc3RydWN0IGt2bV9yaXNjdl96 aWNmaXNzX2NzciwgbmFtZSkgLyBzaXplb2YodW5zaWduZWQgbG9uZykpCj4KPiAgLyogVGltZXIg cmVnaXN0ZXJzIGFyZSBtYXBwZWQgYXMgdHlwZSA0ICovCj4gICNkZWZpbmUgS1ZNX1JFR19SSVND Vl9USU1FUiAgICAgICAgICAgICgweDA0IDw8IEtWTV9SRUdfUklTQ1ZfVFlQRV9TSElGVCkKPiBk aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdS5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5j Cj4gaW5kZXggY2Y2ZTIzMWU3NmUyLi5hY2RiMTJmY2RiNjkgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9y aXNjdi9rdm0vdmNwdS5jCj4gKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdS5jCj4gQEAgLTYzLDYg KzYzLDcgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfY29udGV4dF9yZXNldChzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsCj4gICAgICAgICBtZW1zZXQoY250eCwgMCwgc2l6ZW9mKCpjbnR4KSk7 Cj4gICAgICAgICBtZW1zZXQoY3NyLCAwLCBzaXplb2YoKmNzcikpOwo+ICAgICAgICAgbWVtc2V0 KCZ2Y3B1LT5hcmNoLnNtc3RhdGVlbl9jc3IsIDAsIHNpemVvZih2Y3B1LT5hcmNoLnNtc3RhdGVl bl9jc3IpKTsKPiArICAgICAgIG1lbXNldCgmdmNwdS0+YXJjaC56aWNmaXNzX2NzciwgMCwgc2l6 ZW9mKHZjcHUtPmFyY2guemljZmlzc19jc3IpKTsKPgo+ICAgICAgICAgLyogUmVzdG9yZSBkYXRh cCBhcyBpdCdzIG5vdCBhIHBhcnQgb2YgdGhlIGd1ZXN0IGNvbnRleHQuICovCj4gICAgICAgICBj bnR4LT52ZWN0b3IuZGF0YXAgPSB2ZWN0b3JfZGF0YXA7Cj4gQEAgLTcyMCw2ICs3MjEsNyBAQCBz dGF0aWMgdm9pZCBrdm1fcmlzY3ZfdXBkYXRlX2h2aXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ Cj4gIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBrdm1fcmlzY3ZfdmNwdV9zd2FwX2luX2d1 ZXN0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiAgewo+ICsgICAgICAgc3RydWN0IGt2 bV92Y3B1X3ppY2Zpc3NfY3NyICp6aWNmaWNzciA9ICZ2Y3B1LT5hcmNoLnppY2Zpc3NfY3NyOwo+ ICAgICAgICAgc3RydWN0IGt2bV92Y3B1X3Ntc3RhdGVlbl9jc3IgKnNtY3NyID0gJnZjcHUtPmFy Y2guc21zdGF0ZWVuX2NzcjsKPiAgICAgICAgIHN0cnVjdCBrdm1fdmNwdV9jc3IgKmNzciA9ICZ2 Y3B1LT5hcmNoLmd1ZXN0X2NzcjsKPgo+IEBAIC03MjcsMTAgKzcyOSwxMyBAQCBzdGF0aWMgX19h bHdheXNfaW5saW5lIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfc3dhcF9pbl9ndWVzdF9zdGF0ZShzdHJ1 Y3Qga3ZtX3ZjcHUgKgo+ICAgICAgICAgdmNwdS0+YXJjaC5ob3N0X3NlbnZjZmcgPSBjc3Jfc3dh cChDU1JfU0VOVkNGRywgY3NyLT5zZW52Y2ZnKTsKPiAgICAgICAgIGlmIChyaXNjdl9oYXNfZXh0 ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfU01TVEFURUVOKSkKPiAgICAgICAgICAgICAg ICAgdmNwdS0+YXJjaC5ob3N0X3NzdGF0ZWVuMCA9IGNzcl9zd2FwKENTUl9TU1RBVEVFTjAsIHNt Y3NyLT5zc3RhdGVlbjApOwo+ICsgICAgICAgaWYgKHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtl bHkoUklTQ1ZfSVNBX0VYVF9aSUNGSVNTKSkKPiArICAgICAgICAgICAgICAgY3NyX3dyaXRlKENT Ul9TU1AsIHppY2ZpY3NyLT5zc3ApOwo+ICB9Cj4KPiAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2 b2lkIGt2bV9yaXNjdl92Y3B1X3N3YXBfaW5faG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCj4gIHsKPiArICAgICAgIHN0cnVjdCBrdm1fdmNwdV96aWNmaXNzX2NzciAqemljZmljc3Ig PSAmdmNwdS0+YXJjaC56aWNmaXNzX2NzcjsKPiAgICAgICAgIHN0cnVjdCBrdm1fdmNwdV9zbXN0 YXRlZW5fY3NyICpzbWNzciA9ICZ2Y3B1LT5hcmNoLnNtc3RhdGVlbl9jc3I7Cj4gICAgICAgICBz dHJ1Y3Qga3ZtX3ZjcHVfY3NyICpjc3IgPSAmdmNwdS0+YXJjaC5ndWVzdF9jc3I7Cj4KPiBAQCAt NzM4LDYgKzc0Myw4IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBrdm1fcmlzY3ZfdmNw dV9zd2FwX2luX2hvc3Rfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Cj4gICAgICAgICBjc3ItPnNl bnZjZmcgPSBjc3Jfc3dhcChDU1JfU0VOVkNGRywgdmNwdS0+YXJjaC5ob3N0X3NlbnZjZmcpOwo+ ICAgICAgICAgaWYgKHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9T TVNUQVRFRU4pKQo+ICAgICAgICAgICAgICAgICBzbWNzci0+c3N0YXRlZW4wID0gY3NyX3N3YXAo Q1NSX1NTVEFURUVOMCwgdmNwdS0+YXJjaC5ob3N0X3NzdGF0ZWVuMCk7Cj4gKyAgICAgICBpZiAo cmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1pJQ0ZJU1MpKQo+ICsg ICAgICAgICAgICAgICB6aWNmaWNzci0+c3NwID0gY3NyX3N3YXAoQ1NSX1NTUCwgMCk7Cj4gIH0K Pgo+ICAvKgo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jIGIvYXJj aC9yaXNjdi9rdm0vdmNwdV9vbmVyZWcuYwo+IGluZGV4IGJiOTIwZTg5MjNjOS4uZGQ5NTE5NDM4 NTQ2IDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMKPiArKysgYi9h cmNoL3Jpc2N2L2t2bS92Y3B1X29uZXJlZy5jCj4gQEAgLTM1NSw2ICszNTUsNDQgQEAgc3RhdGlj IGludCBrdm1fcmlzY3ZfdmNwdV9zbXN0YXRlZW5fZ2V0X2NzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGt2bV9y aXNjdl92Y3B1X3ppY2Zpc3Nfc2V0X2NzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg cmVnX251bSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyByZWdfdmFsKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qga3ZtX3ZjcHVf emljZmlzc19jc3IgKmNzciA9ICZ2Y3B1LT5hcmNoLnppY2Zpc3NfY3NyOwo+ICsgICAgICAgdW5z aWduZWQgbG9uZyByZWdzX21heCA9IHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHVfemljZmlzc19jc3Ip IC8KPiArICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwo+ICsKPiArICAgICAg IGlmICghcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUodmNwdS0+YXJjaC5pc2EsIFpJQ0ZJ U1MpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiArICAgICAgIGlmIChyZWdf bnVtID49IHJlZ3NfbWF4KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiArCj4g KyAgICAgICByZWdfbnVtID0gYXJyYXlfaW5kZXhfbm9zcGVjKHJlZ19udW0sIHJlZ3NfbWF4KTsK PiArCj4gKyAgICAgICAoKHVuc2lnbmVkIGxvbmcgKiljc3IpW3JlZ19udW1dID0gcmVnX3ZhbDsK PiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGt2bV9yaXNjdl92Y3B1 X3ppY2Zpc3NfZ2V0X2NzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyByZWdfbnVtLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKm91dF92 YWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCBrdm1fdmNwdV96aWNmaXNzX2NzciAqY3NyID0gJnZj cHUtPmFyY2guemljZmlzc19jc3I7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHJlZ3NfbWF4ID0g c2l6ZW9mKHN0cnVjdCBrdm1fdmNwdV96aWNmaXNzX2NzcikgLwo+ICsgICAgICAgICAgICAgICBz aXplb2YodW5zaWduZWQgbG9uZyk7Cj4gKwo+ICsgICAgICAgaWYgKCFyaXNjdl9pc2FfZXh0ZW5z aW9uX2F2YWlsYWJsZSh2Y3B1LT5hcmNoLmlzYSwgWklDRklTUykpCj4gKyAgICAgICAgICAgICAg IHJldHVybiAtRU5PRU5UOwo+ICsgICAgICAgaWYgKHJlZ19udW0gPj0gcmVnc19tYXgpCj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwo+ICsKPiArICAgICAgIHJlZ19udW0gPSBhcnJh eV9pbmRleF9ub3NwZWMocmVnX251bSwgcmVnc19tYXgpOwo+ICsKPiArICAgICAgICpvdXRfdmFs ID0gKCh1bnNpZ25lZCBsb25nICopY3NyKVtyZWdfbnVtXTsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGt2bV9yaXNjdl92Y3B1X2dldF9yZWdfY3NyKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKQo+ICB7Cj4gQEAgLTM4MSw2ICs0MTksOSBAQCBz dGF0aWMgaW50IGt2bV9yaXNjdl92Y3B1X2dldF9yZWdfY3NyKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwKPiAgICAgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DU1JfU01TVEFURUVOOgo+ICAgICAgICAg ICAgICAgICByYyA9IGt2bV9yaXNjdl92Y3B1X3Ntc3RhdGVlbl9nZXRfY3NyKHZjcHUsIHJlZ19u dW0sICZyZWdfdmFsKTsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEtW TV9SRUdfUklTQ1ZfQ1NSX1pJQ0ZJU1M6Cj4gKyAgICAgICAgICAgICAgIHJjID0ga3ZtX3Jpc2N2 X3ZjcHVfemljZmlzc19nZXRfY3NyKHZjcHUsIHJlZ19udW0sICZyZWdfdmFsKTsKPiArICAgICAg ICAgICAgICAgYnJlYWs7Cj4gICAgICAgICBkZWZhdWx0Ogo+ICAgICAgICAgICAgICAgICByYyA9 IC1FTk9FTlQ7Cj4gICAgICAgICAgICAgICAgIGJyZWFrOwo+IEBAIC00MjMsNiArNDY0LDkgQEAg c3RhdGljIGludCBrdm1fcmlzY3ZfdmNwdV9zZXRfcmVnX2NzcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCj4gICAgICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ1NSX1NNU1RBVEVFTjoKPiAgICAgICAg ICAgICAgICAgcmMgPSBrdm1fcmlzY3ZfdmNwdV9zbXN0YXRlZW5fc2V0X2Nzcih2Y3B1LCByZWdf bnVtLCByZWdfdmFsKTsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEtW TV9SRUdfUklTQ1ZfQ1NSX1pJQ0ZJU1M6Cj4gKyAgICAgICAgICAgICAgIHJjID0ga3ZtX3Jpc2N2 X3ZjcHVfemljZmlzc19zZXRfY3NyKHZjcHUsIHJlZ19udW0sIHJlZ192YWwpOwo+ICsgICAgICAg ICAgICAgICBicmVhazsKPiAgICAgICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgICAgICAgIHJjID0g LUVOT0VOVDsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gQEAgLTY4MCw2ICs3MjQsOCBAQCBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbnVtX2Nzcl9yZWdzKGNvbnN0IHN0cnVjdCBrdm1f dmNwdSAqdmNwdSkKPiAgICAgICAgICAgICAgICAgbiArPSBzaXplb2Yoc3RydWN0IGt2bV9yaXNj dl9haWFfY3NyKSAvIHNpemVvZih1bnNpZ25lZCBsb25nKTsKPiAgICAgICAgIGlmIChyaXNjdl9p c2FfZXh0ZW5zaW9uX2F2YWlsYWJsZSh2Y3B1LT5hcmNoLmlzYSwgU01TVEFURUVOKSkKPiAgICAg ICAgICAgICAgICAgbiArPSBzaXplb2Yoc3RydWN0IGt2bV9yaXNjdl9zbXN0YXRlZW5fY3NyKSAv IHNpemVvZih1bnNpZ25lZCBsb25nKTsKPiArICAgICAgIGlmIChyaXNjdl9pc2FfZXh0ZW5zaW9u X2F2YWlsYWJsZSh2Y3B1LT5hcmNoLmlzYSwgWklDRklTUykpCj4gKyAgICAgICAgICAgICAgIG4g Kz0gc2l6ZW9mKHN0cnVjdCBrdm1fcmlzY3ZfemljZmlzc19jc3IpIC8gc2l6ZW9mKHVuc2lnbmVk IGxvbmcpOwo+Cj4gICAgICAgICByZXR1cm4gbjsKPiAgfQo+IEBAIC02ODgsNyArNzM0LDcgQEAg c3RhdGljIGludCBjb3B5X2Nzcl9yZWdfaW5kaWNlcyhjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgX191c2VyICp1aW5kaWNl cykKPiAgewo+ICAgICAgICAgaW50IG4xID0gc2l6ZW9mKHN0cnVjdCBrdm1fcmlzY3ZfY3NyKSAv IHNpemVvZih1bnNpZ25lZCBsb25nKTsKPiAtICAgICAgIGludCBuMiA9IDAsIG4zID0gMDsKPiAr ICAgICAgIGludCBuMiA9IDAsIG4zID0gMCwgbjQgPSAwOwo+Cj4gICAgICAgICAvKiBjb3B5IGdl bmVyYWwgY3NyIHJlZ3MgKi8KPiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjE7IGkrKykg ewo+IEBAIC03NDAsNyArNzg2LDI1IEBAIHN0YXRpYyBpbnQgY29weV9jc3JfcmVnX2luZGljZXMo Y29uc3Qgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICAgICAgICAgICAgICAgICB9Cj4gICAgICAg ICB9Cj4KPiAtICAgICAgIHJldHVybiBuMSArIG4yICsgbjM7Cj4gKyAgICAgICAvKiBjb3B5IFpp Y2Zpc3MgY3NyIHJlZ3MgKi8KPiArICAgICAgIGlmIChyaXNjdl9pc2FfZXh0ZW5zaW9uX2F2YWls YWJsZSh2Y3B1LT5hcmNoLmlzYSwgWklDRklTUykpIHsKPiArICAgICAgICAgICAgICAgbjQgPSBz aXplb2Yoc3RydWN0IGt2bV9yaXNjdl96aWNmaXNzX2NzcikgLyBzaXplb2YodW5zaWduZWQgbG9u Zyk7Cj4gKwo+ICsgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG40OyBpKyspIHsK PiArICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSA9IElTX0VOQUJMRUQoQ09ORklHXzMy QklUKSA/Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVk1fUkVHX1NJWkVf VTMyIDogS1ZNX1JFR19TSVpFX1U2NDsKPiArICAgICAgICAgICAgICAgICAgICAgICB1NjQgcmVn ID0gS1ZNX1JFR19SSVNDViB8IHNpemUgfCBLVk1fUkVHX1JJU0NWX0NTUiB8Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1ZNX1JFR19SSVNDVl9DU1JfWklDRklT UyB8IGk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh1aW5kaWNlcykgewo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1dF91c2VyKHJlZywgdWluZGljZXMp KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVGQVVM VDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbmRpY2VzKys7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9Cj4gKwo+ ICsgICAgICAgcmV0dXJuIG4xICsgbjIgKyBuMyArIG40Owo+ICB9Cj4KPiAgc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBsb25nIG51bV90aW1lcl9yZWdzKHZvaWQpCj4gLS0KPiAyLjU1LjAKPgoKLS0g Cmt2bS1yaXNjdiBtYWlsaW5nIGxpc3QKa3ZtLXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9rdm0tcmlzY3YK