Re: [PATCH 1/2] sbi: add hardware isolation abstraction framework
Anup Patel <[email protected]> Wed, 22 Jul 2026 22:53:02 +0530
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <CAAhSdy2nDpVbNPWLx1hqs_-VagG9Xj8Hj5JtKaJLUAC=oVNJaw@mail.gmail.com> |
T24gVHVlLCBKdWwgMjEsIDIwMjYgYXQgODo1MeKAr1BNIFJheW1vbmQgTWFvIDxyYXltb25kbWFv Y2FAZ21haWwuY29tPiB3cm90ZToKPgo+IEhpIEFudXAsCj4KPiBPbiBGcmksIEp1bCAxNywgMjAy NiBhdCAzOjU04oCvQU0gQW51cCBQYXRlbCA8YW51cEBicmFpbmZhdWx0Lm9yZz4gd3JvdGU6Cj4g Pgo+ID4gT24gVGh1LCBKdWwgMTYsIDIwMjYgYXQgNzowOeKAr1BNIEFudXAgUGF0ZWwgPGFudXBA YnJhaW5mYXVsdC5vcmc+IHdyb3RlOgo+ID4gPgo+ID4gPiBPbiBNb24sIE1heSA0LCAyMDI2IGF0 IDExOjA54oCvUE0gUmF5bW9uZCBNYW8gPHJheW1vbmRtYW9jYUBnbWFpbC5jb20+IHdyb3RlOgo+ ID4gPiA+Cj4gPiA+ID4gRnJvbTogUmF5bW9uZCBNYW8gPHJheW1vbmQubWFvQHJpc2NzdGFyLmNv bT4KPiA+ID4gPgo+ID4gPiA+IEludHJvZHVjZSBhIGdlbmVyaWMgaGFyZHdhcmUtaXNvbGF0aW9u IHJlZ2lzdHJhdGlvbiBhbmQgZGlzcGF0Y2gKPiA+ID4gPiBmcmFtZXdvcmsgZm9yIE9wZW5TQkkg ZG9tYWlucy4KPiA+ID4gPgo+ID4gPiA+IEFkZCBib290LXRpbWUgaW5pdCwgcGVyLWRvbWFpbiBp bml0LCBkb21haW4gZXhpdCwgZG9tYWluIGVudGVyIGFuZAo+ID4gPiA+IGNsZWFudXAgY2FsbGJh Y2tzLCBhbmQgc3RvcmUgcGVyLWRvbWFpbiBtZWNoYW5pc20gY29udGV4dHMgaW4gc3RydWN0Cj4g PiA+ID4gc2JpX2RvbWFpbi4KPiA+ID4gPgo+ID4gPiA+IFRoaXMgZXN0YWJsaXNoZXMgYW4gYWJz dHJhY3Rpb24gdGhhdCBhbGxvd3MgbXVsdGlwbGUgaGFyZHdhcmUKPiA+ID4gPiBpc29sYXRpb24g bWVjaGFuaXNtcyB0byBiZSBjb21wb3NlZCB3aGlsZSBrZWVwaW5nIGNvcmUgZG9tYWluIG1vZGVs Cj4gPiA+ID4gYW5kIGRhdGEgc3RydWN0dXJlcyBpbmRlcGVuZGVudCBmcm9tIGFueSBzaW5nbGUg cGxhdGZvcm0KPiA+ID4gPiBpbXBsZW1lbnRhdGlvbi4KPiA+ID4gPgo+ID4gPiA+IFNpZ25lZC1v ZmYtYnk6IFJheW1vbmQgTWFvIDxyYXltb25kLm1hb0ByaXNjc3Rhci5jb20+Cj4gPiA+Cj4gPiA+ IFdlIGRvbid0IG5lZWQgeWV0IGFub3RoZXIgaGFydC1sZXZlbCBhYnN0cmFjdGlvbiBmb3IgdGhp bmdzIGxpa2UKPiA+ID4gV29ybGRHdWFyZCwgU3VwZXJ2aXNvciBEb21haW4gSUQsIGFuZCBRb1Mg SUQgY29uZmlndXJhdGlvbgo+ID4gPiBhdCBoYXJ0LWxldmVsLgo+ID4gPgo+ID4gPiBUaGUgZXhp c3RpbmcgaGFydCBwcm90ZWN0aW9uIGFic3RyYWN0aW9uIGNhbiBiZSBlYXNpbHkgZXh0ZW5kZWQK PiA+ID4gdG8gc3VwcG9ydCBib3RoIG1lbW9yeSBwcm90ZWN0aW9uIG1lY2hhbmlzbXMgKFBNUCwg ZVBNUCwKPiA+ID4gU21tcHQsIGV0YykgYW5kIElEIGNvbmZpZ3VyYXRpb25zIChXb3JsZEd1YXJk LCBEb21haW4gSUQsIGV0YykuCj4gPiA+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gIGluY2x1ZGUvc2Jp L3NiaV9kb21haW4uaCB8ICAgNCArCj4gPiA+ID4gIGluY2x1ZGUvc2JpL3NiaV9od2lzby5oICB8 ICA1NiArKysrKysrKysrKysrCj4gPiA+ID4gIGxpYi9zYmkvb2JqZWN0cy5tayAgICAgICB8ICAg MSArCj4gPiA+ID4gIGxpYi9zYmkvc2JpX2h3aXNvLmMgICAgICB8IDE3NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMzYg aW5zZXJ0aW9ucygrKQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zYmkvc2Jp X2h3aXNvLmgKPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zYmkvc2JpX2h3aXNvLmMK PiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NiaS9zYmlfZG9tYWluLmggYi9p bmNsdWRlL3NiaS9zYmlfZG9tYWluLmgKPiA+ID4gPiBpbmRleCAwMjc2NTc3Ny4uZmM3MzMwYTYg MTAwNjQ0Cj4gPiA+ID4gLS0tIGEvaW5jbHVkZS9zYmkvc2JpX2RvbWFpbi5oCj4gPiA+ID4gKysr IGIvaW5jbHVkZS9zYmkvc2JpX2RvbWFpbi5oCj4gPiA+ID4gQEAgLTE0LDYgKzE0LDcgQEAKPiA+ ID4gPiAgI2luY2x1ZGUgPHNiaS9zYmlfdHlwZXMuaD4KPiA+ID4gPiAgI2luY2x1ZGUgPHNiaS9z YmlfaGFydG1hc2suaD4KPiA+ID4gPiAgI2luY2x1ZGUgPHNiaS9zYmlfZG9tYWluX2NvbnRleHQu aD4KPiA+ID4gPiArI2luY2x1ZGUgPHNiaS9zYmlfaHdpc28uaD4KPiA+ID4gPiAgI2luY2x1ZGUg PHNiaS9zYmlfcnB4eS5oPgo+ID4gPiA+Cj4gPiA+ID4gIHN0cnVjdCBzYmlfc2NyYXRjaDsKPiA+ ID4gPiBAQCAtMTk5LDYgKzIwMCw5IEBAIHN0cnVjdCBzYmlfZG9tYWluIHsKPiA+ID4gPiAgICAg ICAgIGJvb2wgc3lzdGVtX3Jlc2V0X2FsbG93ZWQ7Cj4gPiA+ID4gICAgICAgICAvKiogSXMgZG9t YWluIGFsbG93ZWQgdG8gc3VzcGVuZCB0aGUgc3lzdGVtICovCj4gPiA+ID4gICAgICAgICBib29s IHN5c3RlbV9zdXNwZW5kX2FsbG93ZWQ7Cj4gPiA+ID4gKyAgICAgICAvKiogSGFyZHdhcmUgaXNv bGF0aW9uIGNvbnRleHRzIGZvciByZWdpc3RlcmVkIG1lY2hhbmlzbXMgKi8KPiA+ID4gPiArICAg ICAgIHN0cnVjdCBzYmlfaHdpc29fZG9tYWluX2N0eCAqaHdpc29fY3R4czsKPiA+ID4gPiArICAg ICAgIHUzMiBod2lzb19jdHhfY291bnQ7Cj4gPiA+Cj4gPiA+IFdlIGFscmVhZHkgaGF2ZSBzYmlf ZG9tYWluX2RhdGEgQVBJcyB0byBhbGxvdyBhbnkgcGFydAo+ID4gPiBvZiBPcGVuU0JJIGNyZWF0 ZSBwZXItZG9tYWluIGRhdGEgc28gd2Ugc2hvdWxkIHJlLXVzZQo+ID4gPiBBUElzIGZvciBhZGRp bmcgbW9yZSBpbmZvcm1hdGlvbiBwYXJzZWQgZnJvbSBEVCBhdCBib290LXRpbWUuCj4gPiA+Cj4g PiA+ID4gICAgICAgICAvKiogSWRlbnRpZmllcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlIGZpcm13 YXJlIHJlZ2lvbiAqLwo+ID4gPiA+ICAgICAgICAgYm9vbCBmd19yZWdpb25faW5pdGVkOwo+ID4g PiA+ICB9Owo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NiaS9zYmlfaHdpc28uaCBiL2lu Y2x1ZGUvc2JpL3NiaV9od2lzby5oCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4g PiBpbmRleCAwMDAwMDAwMC4uMWVmZGI4YzEKPiA+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ID4g KysrIGIvaW5jbHVkZS9zYmkvc2JpX2h3aXNvLmgKPiA+ID4gPiBAQCAtMCwwICsxLDU2IEBACj4g PiA+ID4gKy8qCj4gPiA+ID4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UKPiA+ID4gPiArICoKPiA+ID4gPiArICogU3lzdGVtLWxldmVsIGhhcmR3YXJlIGlzb2xhdGlv biBmcmFtZXdvcmsKPiA+ID4gPiArICoKPiA+ID4gPiArICogQ29weXJpZ2h0IChjKSAyMDI2IFJJ U0NzdGFyIFNvbHV0aW9ucyBDb3Jwb3JhdGlvbi4KPiA+ID4gPiArICoKPiA+ID4gPiArICogQXV0 aG9yOiBSYXltb25kIE1hbyA8cmF5bW9uZC5tYW9AcmlzY3N0YXIuY29tPgo+ID4gPiA+ICsgKi8K PiA+ID4gPiArCj4gPiA+ID4gKyNpZm5kZWYgX19TQklfSFdJU09fSF9fCj4gPiA+ID4gKyNkZWZp bmUgX19TQklfSFdJU09fSF9fCj4gPiA+ID4gKwo+ID4gPiA+ICsjaW5jbHVkZSA8c2JpL3NiaV90 eXBlcy5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8c2JpL3NiaV9kb21haW4uaD4KPiA+ID4gPiArCj4g PiA+ID4gK3N0cnVjdCBzYmlfaHdpc29fb3BzIHsKPiA+ID4gPiArICAgICAgIGNvbnN0IGNoYXIg Km5hbWU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgLyogQm9vdC10aW1lIGluaXQgKi8KPiA+ ID4gPiArICAgICAgIGludCAoKmluaXQpKHZvaWQgKmZkdCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsg ICAgICAgLyogUGVyLWRvbWFpbiBpbml0IChkb21haW5fb2Zmc2V0IHJlZmVycyB0byBkb21haW4g aW5zdGFuY2Ugbm9kZSkgKi8KPiA+ID4gPiArICAgICAgIGludCAoKmRvbWFpbl9pbml0KSh2b2lk ICpmZHQsIGludCBkb21haW5fb2Zmc2V0LAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBzYmlfZG9tYWluICpkb20sIHZvaWQgKipjdHgpOwo+ID4gPiA+ICsKPiA+ID4g PiArICAgICAgIC8qIEJlZm9yZSBzd2l0Y2hpbmcgYXdheSBmcm9tIGEgZG9tYWluICovCj4gPiA+ ID4gKyAgICAgICB2b2lkICgqZG9tYWluX2V4aXQpKGNvbnN0IHN0cnVjdCBzYmlfZG9tYWluICpz cmMsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzYmlf ZG9tYWluICpkc3QsIHZvaWQgKmN0eCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgLyogQWZ0 ZXIgc3dpdGNoaW5nIGludG8gYSBkb21haW4gKi8KPiA+ID4gPiArICAgICAgIHZvaWQgKCpkb21h aW5fZW50ZXIpKGNvbnN0IHN0cnVjdCBzYmlfZG9tYWluICpkc3QsCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2JpX2RvbWFpbiAqc3JjLCB2b2lkICpj dHgpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIC8qIE9wdGlvbmFsIGNsZWFudXAgKi8KPiA+ ID4gPiArICAgICAgIHZvaWQgKCpkb21haW5fY2xlYW51cCkoc3RydWN0IHNiaV9kb21haW4gKmRv bSwgdm9pZCAqY3R4KTsKPiA+ID4gPiArfTsKPiA+ID4gPiArCj4gPiA+ID4gK3N0cnVjdCBzYmlf aHdpc29fZG9tYWluX2N0eCB7Cj4gPiA+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgc2JpX2h3aXNv X29wcyAqb3BzOwo+ID4gPiA+ICsgICAgICAgdm9pZCAqY3R4Owo+ID4gPiA+ICt9Owo+ID4gPiA+ ICsKPiA+ID4gPiAraW50IHNiaV9od2lzb19yZWdpc3Rlcihjb25zdCBzdHJ1Y3Qgc2JpX2h3aXNv X29wcyAqb3BzKTsKPiA+ID4gPiArCj4gPiA+ID4gK2ludCBzYmlfaHdpc29faW5pdCh2b2lkICpm ZHQpOwo+ID4gPiA+ICtpbnQgc2JpX2h3aXNvX2RvbWFpbl9pbml0KHZvaWQgKmZkdCwgaW50IGRv bWFpbl9vZmZzZXQsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Jp X2RvbWFpbiAqZG9tKTsKPiA+ID4gPiArCj4gPiA+ID4gK3ZvaWQgc2JpX2h3aXNvX2RvbWFpbl9l eGl0KGNvbnN0IHN0cnVjdCBzYmlfZG9tYWluICpzcmMsCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNiaV9kb21haW4gKmRzdCk7Cj4gPiA+ID4gK3ZvaWQg c2JpX2h3aXNvX2RvbWFpbl9lbnRlcihjb25zdCBzdHJ1Y3Qgc2JpX2RvbWFpbiAqZHN0LAo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2JpX2RvbWFpbiAq c3JjKTsKPiA+ID4gPiArdm9pZCBzYmlfaHdpc29fZG9tYWluX2NsZWFudXAoc3RydWN0IHNiaV9k b21haW4gKmRvbSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsjZW5kaWYgLyogX19TQklfSFdJU09fSF9f ICovCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9zYmkvb2JqZWN0cy5tayBiL2xpYi9zYmkvb2Jq ZWN0cy5tawo+ID4gPiA+IGluZGV4IGNhMzEyZWUyLi42MDkxNDk5YSAxMDA2NDQKPiA+ID4gPiAt LS0gYS9saWIvc2JpL29iamVjdHMubWsKPiA+ID4gPiArKysgYi9saWIvc2JpL29iamVjdHMubWsK PiA+ID4gPiBAQCAtNzIsNiArNzIsNyBAQCBsaWJzYmktb2Jqcy15ICs9IHNiaV9kb21haW4ubwo+ ID4gPiA+ICBsaWJzYmktb2Jqcy15ICs9IHNiaV9lbXVsYXRlX2Nzci5vCj4gPiA+ID4gIGxpYnNi aS1vYmpzLXkgKz0gc2JpX2ZpZm8ubwo+ID4gPiA+ICBsaWJzYmktb2Jqcy15ICs9IHNiaV9oYXJ0 Lm8KPiA+ID4gPiArbGlic2JpLW9ianMteSArPSBzYmlfaHdpc28ubwo+ID4gPiA+ICBsaWJzYmkt b2Jqcy15ICs9IHNiaV9oZWFwLm8KPiA+ID4gPiAgbGlic2JpLW9ianMteSArPSBzYmlfbWF0aC5v Cj4gPiA+ID4gIGxpYnNiaS1vYmpzLXkgKz0gc2JpX2hmZW5jZS5vCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2xpYi9zYmkvc2JpX2h3aXNvLmMgYi9saWIvc2JpL3NiaV9od2lzby5jCj4gPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiBpbmRleCAwMDAwMDAwMC4uNmM5NmRjM2UKPiA+ID4g PiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gKysrIGIvbGliL3NiaS9zYmlfaHdpc28uYwo+ID4gPiA+ IEBAIC0wLDAgKzEsMTc1IEBACj4gPiA+ID4gKy8qCj4gPiA+ID4gKyAqIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKPiA+ID4gPiArICoKPiA+ID4gPiArICogU3lzdGVtLWxl dmVsIGhhcmR3YXJlIGlzb2xhdGlvbiBmcmFtZXdvcmsKPiA+ID4gPiArICoKPiA+ID4gPiArICog Q29weXJpZ2h0IChjKSAyMDI2IFJJU0NzdGFyIFNvbHV0aW9ucyBDb3Jwb3JhdGlvbi4KPiA+ID4g PiArICoKPiA+ID4gPiArICogQXV0aG9yOiBSYXltb25kIE1hbyA8cmF5bW9uZC5tYW9AcmlzY3N0 YXIuY29tPgo+ID4gPiA+ICsgKi8KPiA+ID4gPiArCj4gPiA+ID4gKyNpbmNsdWRlIDxsaWJmZHQu aD4KPiA+ID4gPiArI2luY2x1ZGUgPHNiaS9zYmlfZXJyb3IuaD4KPiA+ID4gPiArI2luY2x1ZGUg PHNiaS9zYmlfaGVhcC5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8c2JpL3NiaV9od2lzby5oPgo+ID4g PiA+ICsjaW5jbHVkZSA8c2JpL3NiaV9saXN0Lmg+Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdHJ1Y3Qg c2JpX2h3aXNvX25vZGUgewo+ID4gPiA+ICsgICAgICAgY29uc3Qgc3RydWN0IHNiaV9od2lzb19v cHMgKm9wczsKPiA+ID4gPiArICAgICAgIHN0cnVjdCBzYmlfZGxpc3Qgbm9kZTsKPiA+ID4gPiAr fTsKPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBTQklfTElTVF9IRUFEKGh3aXNvX29wc19saXN0 KTsKPiA+ID4gPiArc3RhdGljIHUzMiBod2lzb19vcHNfY291bnQ7Cj4gPiA+ID4gKwo+ID4gPiA+ ICtzdGF0aWMgYm9vbCBod2lzb19vcHNfcmVnaXN0ZXJlZChjb25zdCBzdHJ1Y3Qgc2JpX2h3aXNv X29wcyAqb3BzKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgc2JpX2h3aXNvX25v ZGUgKmVudHJ5Owo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIHNiaV9saXN0X2Zvcl9lYWNoX2Vu dHJ5KGVudHJ5LCAmaHdpc29fb3BzX2xpc3QsIG5vZGUpIHsKPiA+ID4gPiArICAgICAgICAgICAg ICAgaWYgKGVudHJ5LT5vcHMgPT0gb3BzKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiB0cnVlOwo+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAg IHJldHVybiBmYWxzZTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiAraW50IHNiaV9od2lz b19yZWdpc3Rlcihjb25zdCBzdHJ1Y3Qgc2JpX2h3aXNvX29wcyAqb3BzKQo+ID4gPiA+ICt7Cj4g PiA+ID4gKyAgICAgICBzdHJ1Y3Qgc2JpX2h3aXNvX25vZGUgKm5vZGU7Cj4gPiA+ID4gKwo+ID4g PiA+ICsgICAgICAgaWYgKCFvcHMgfHwgIW9wcy0+bmFtZSkKPiA+ID4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIFNCSV9FSU5WQUw7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaWYgKGh3aXNv X29wc19yZWdpc3RlcmVkKG9wcykpCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBTQklf RUFMUkVBRFk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgbm9kZSA9IHNiaV96YWxsb2Moc2l6 ZW9mKCpub2RlKSk7Cj4gPiA+ID4gKyAgICAgICBpZiAoIW5vZGUpCj4gPiA+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiBTQklfRU5PTUVNOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIG5vZGUt Pm9wcyA9IG9wczsKPiA+ID4gPiArICAgICAgIFNCSV9JTklUX0xJU1RfSEVBRCgmbm9kZS0+bm9k ZSk7Cj4gPiA+ID4gKyAgICAgICBzYmlfbGlzdF9hZGRfdGFpbCgmbm9kZS0+bm9kZSwgJmh3aXNv X29wc19saXN0KTsKPiA+ID4gPiArICAgICAgIGh3aXNvX29wc19jb3VudCsrOwo+ID4gPiA+ICsK PiA+ID4gPiArICAgICAgIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtp bnQgc2JpX2h3aXNvX2luaXQodm9pZCAqZmR0KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgICAgICBz dHJ1Y3Qgc2JpX2h3aXNvX25vZGUgKmVudHJ5Owo+ID4gPiA+ICsgICAgICAgaW50IHJjOwo+ID4g PiA+ICsKPiA+ID4gPiArICAgICAgIHNiaV9saXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCAmaHdp c29fb3BzX2xpc3QsIG5vZGUpIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKCFlbnRyeS0+ b3BzLT5pbml0KQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4g PiA+ICsKPiA+ID4gPiArICAgICAgICAgICAgICAgcmMgPSBlbnRyeS0+b3BzLT5pbml0KGZkdCk7 Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGlmIChyYykKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmM7Cj4gPiA+ID4gKyAgICAgICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICsg ICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK2ludCBzYmlfaHdp c29fZG9tYWluX2luaXQodm9pZCAqZmR0LCBpbnQgZG9tYWluX29mZnNldCwKPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzYmlfZG9tYWluICpkb20pCj4gPiA+ID4gK3sK PiA+ID4gPiArICAgICAgIHN0cnVjdCBzYmlfaHdpc29fbm9kZSAqZW50cnk7Cj4gPiA+ID4gKyAg ICAgICBzdHJ1Y3Qgc2JpX2h3aXNvX2RvbWFpbl9jdHggKmN0eHM7Cj4gPiA+ID4gKyAgICAgICB2 b2lkICpjdHg7Cj4gPiA+ID4gKyAgICAgICB1MzIgaWR4ID0gMDsKPiA+ID4gPiArICAgICAgIGlu dCByYzsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBpZiAoIWRvbSkKPiA+ID4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaWYgKCFod2lzb19v cHNfY291bnQpCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPiA+ICsKPiA+ ID4gPiArICAgICAgIGN0eHMgPSBzYmlfY2FsbG9jKHNpemVvZigqY3R4cyksIGh3aXNvX29wc19j b3VudCk7Cj4gPiA+ID4gKyAgICAgICBpZiAoIWN0eHMpCj4gPiA+ID4gKyAgICAgICAgICAgICAg IHJldHVybiBTQklfRU5PTUVNOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIGRvbS0+aHdpc29f Y3R4cyA9IGN0eHM7Cj4gPiA+ID4gKyAgICAgICBkb20tPmh3aXNvX2N0eF9jb3VudCA9IGh3aXNv X29wc19jb3VudDsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBzYmlfbGlzdF9mb3JfZWFjaF9l bnRyeShlbnRyeSwgJmh3aXNvX29wc19saXN0LCBub2RlKSB7Cj4gPiA+ID4gKyAgICAgICAgICAg ICAgIGN0eHNbaWR4XS5vcHMgPSBlbnRyeS0+b3BzOwo+ID4gPiA+ICsgICAgICAgICAgICAgICBj dHhzW2lkeF0uY3R4ID0gTlVMTDsKPiA+ID4gPiArICAgICAgICAgICAgICAgY3R4ID0gTlVMTDsK PiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGlmIChlbnRyeS0+b3BzLT5kb21haW5f aW5pdCkgewo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJjID0gZW50cnktPm9wcy0+ ZG9tYWluX2luaXQoZmR0LCBkb21haW5fb2Zmc2V0LAo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLCAmY3R4KTsKPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBjdHhzW2lkeF0uY3R4ID0gY3R4Owo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChyYykgewo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2JpX2h3aXNvX2RvbWFpbl9jbGVhbnVwKGRvbSk7Cj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgfQo+ID4gPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiA+ID4gKwo+ID4gPiA+ ICsgICAgICAgICAgICAgICBjdHhzW2lkeF0uY3R4ID0gY3R4Owo+ID4gPiA+ICsgICAgICAgICAg ICAgICBpZHgrKzsKPiA+ID4gPiArICAgICAgIH0KPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBy ZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArdm9pZCBzYmlfaHdpc29fZG9t YWluX2V4aXQoY29uc3Qgc3RydWN0IHNiaV9kb21haW4gKnNyYywKPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2JpX2RvbWFpbiAqZHN0KQo+ID4gPiA+ICt7 Cj4gPiA+ID4gKyAgICAgICB1MzIgaTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBpZiAoIXNy YyB8fCAhc3JjLT5od2lzb19jdHhzKQo+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4g PiA+ID4gKwo+ID4gPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+aHdpc29fY3R4X2Nv dW50OyBpKyspIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKCFzcmMtPmh3aXNvX2N0eHNb aV0ub3BzIHx8Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAhc3JjLT5od2lzb19jdHhzW2ld Lm9wcy0+ZG9tYWluX2V4aXQpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICAgICBzcmMtPmh3aXNvX2N0eHNbaV0u b3BzLT5kb21haW5fZXhpdCgKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3JjLCBkc3QsIHNyYy0+aHdpc29fY3R4c1tpXS5jdHgpOwo+ID4gPiA+ICsgICAg ICAgfQo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICt2b2lkIHNiaV9od2lzb19kb21haW5f ZW50ZXIoY29uc3Qgc3RydWN0IHNiaV9kb21haW4gKmRzdCwKPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNiaV9kb21haW4gKnNyYykKPiA+ID4gPiArewo+ ID4gPiA+ICsgICAgICAgdTMyIGk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaWYgKCFkc3Qg fHwgIWRzdC0+aHdpc29fY3R4cykKPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4g PiA+ICsKPiA+ID4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBkc3QtPmh3aXNvX2N0eF9jb3Vu dDsgaSsrKSB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGlmICghZHN0LT5od2lzb19jdHhzW2ld Lm9wcyB8fAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIWRzdC0+aHdpc29fY3R4c1tpXS5v cHMtPmRvbWFpbl9lbnRlcikKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGRzdC0+aHdpc29fY3R4c1tpXS5v cHMtPmRvbWFpbl9lbnRlcigKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZHN0LCBzcmMsIGRzdC0+aHdpc29fY3R4c1tpXS5jdHgpOwo+ID4gPiA+ICsgICAg ICAgfQo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICt2b2lkIHNiaV9od2lzb19kb21haW5f Y2xlYW51cChzdHJ1Y3Qgc2JpX2RvbWFpbiAqZG9tKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgICAg ICB1MzIgaTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBpZiAoIWRvbSB8fCAhZG9tLT5od2lz b19jdHhzKQo+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4gKwo+ID4gPiA+ ICsgICAgICAgZm9yIChpID0gMDsgaSA8IGRvbS0+aHdpc29fY3R4X2NvdW50OyBpKyspIHsKPiA+ ID4gPiArICAgICAgICAgICAgICAgaWYgKCFkb20tPmh3aXNvX2N0eHNbaV0ub3BzIHx8Cj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAhZG9tLT5od2lzb19jdHhzW2ldLm9wcy0+ZG9tYWluX2Ns ZWFudXApCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgICAgICAgICAgICAgICBkb20tPmh3aXNvX2N0eHNbaV0ub3BzLT5kb21haW5f Y2xlYW51cCgKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZG9tLCBkb20tPmh3aXNvX2N0eHNbaV0uY3R4KTsKPiA+ID4gPiArICAgICAgIH0KPiA+ID4gPiAr Cj4gPiA+ID4gKyAgICAgICBzYmlfZnJlZShkb20tPmh3aXNvX2N0eHMpOwo+ID4gPiA+ICsgICAg ICAgZG9tLT5od2lzb19jdHhzID0gTlVMTDsKPiA+ID4gPiArICAgICAgIGRvbS0+aHdpc29fY3R4 X2NvdW50ID0gMDsKPiA+ID4gPiArfQo+ID4gPiA+IC0tCj4gPiA+ID4gMi4yNS4xCj4gPiA+ID4K PiA+ID4KPiA+ID4gTGV0IG1lIHNlbmQgYSBzZXBhcmF0ZSBzZXJpZXMgc2hvd2luZyBob3cgdG8g ZXh0ZW5kCj4gPiA+IHNiaV9oYXJ0X2lzb2xhdGlvbiBhcyBzdWdnZXN0ZWQgYWJvdmUuCj4gPiA+ Cj4gPgo+ID4gSSBqdXN0IHBvc3RlZCB0aGUgc2VyaWVzIHRvIGV4dGVuZCB0aGUgZXhpc3Rpbmcg aGFydCBwcm90ZWN0aW9uCj4gPiBhYnN0cmFjdGlvbi4KPiA+Cj4gPiBSZWZlciwgcGF0Y2ggc2Vy aWVzICJbUEFUQ0ggMC81XSBFeHRlbmQgaGFydCBwcm90ZWN0aW9uIGFic3RyYWN0aW9uCj4gPiBm b3IgSUQgY29uZmlndXJhdGlvbiIKPiA+Cj4KPiBJIGFtIHBsYW5uaW5nIHRvIHBvc3QgYSB2MiB0 byByZWJhc2Ugb24geW91ciBoYXJ0IHByb3RlY3Rpb24KPiBhYnN0cmFjdGlvbiwgYW5kIHNxdWFz aCB0aGUgaG9va3Mgb2YgbXkgdjEgYXMgaGVscGVyIGZ1bmN0aW9ucyBmb3IKPiBpc29sYXRpb24g bWVjaGFuaXNtcyAoZS5nLiBXRywgUE1QLCAuLi4pIHRvIHVzZS4KPiBJcyB0aGlzIHBsYW4gZ29v ZCBmb3IgeW91Pwo+CgpUaGUgc2JpX2RvbWFpbl9kYXRhIGhvb2tzIGFyZSBxdWlldCBzdWl0YWJs ZSBmb3IgV0cgY2hlY2tlcgphbmQgc2JpX2hhcnRfcHJvdGVjdGlvbiBob29rcyBhcmUgcXVpZXQg c3VpdGFibGUgZm9yIFdHIElTQQpzdXBwb3J0LiBJIGRvbid0IGJlbGlldmUgd2UgbmVlZCBhbnkg b3RoZXIgaG9va3MKCkFsc28sIHdlIGhhdmUga2VwdCBGRFQgdXNhZ2UgYW5kIEZEVCBiYXNlZCBk cml2ZXJzCmNvbnRhaW5lZCB1bmRlciBsaWIvdXRpbHMgc28gaG9va3MgaW4gbGliL3NiaSB0YWtp bmcgZmR0CnBhcmFtZXRlciBkb2VzIG5vdCBhbGlnbiB3aXRoIGN1cnJlbnQgd2F5IG9mIGltcGxl bWVudGluZwpGRFQgYmFzZWQgZHJpdmVycy4KClJlZ2FyZHMsCkFudXAKCi0tIApvcGVuc2JpIG1h aWxpbmcgbGlzdApvcGVuc2JpQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuc2JpCg==