Re: [PATCH 1/2] sbi: add hardware isolation abstraction framework
Raymond Mao <[email protected]> Wed, 22 Jul 2026 13:59:29 -0400
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <CAMDkj5x+=hgfCrF2LocS9G=wGbg7kXgQ9CA3szkJf+un95JYHA@mail.gmail.com> |
SGkgQW51cCwKCk9uIFdlZCwgSnVsIDIyLCAyMDI2IGF0IDE6MjPigK9QTSBBbnVwIFBhdGVsIDxh bnVwQGJyYWluZmF1bHQub3JnPiB3cm90ZToKPgo+IE9uIFR1ZSwgSnVsIDIxLCAyMDI2IGF0IDg6 NTHigK9QTSBSYXltb25kIE1hbyA8cmF5bW9uZG1hb2NhQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ ID4gSGkgQW51cCwKPiA+Cj4gPiBPbiBGcmksIEp1bCAxNywgMjAyNiBhdCAzOjU04oCvQU0gQW51 cCBQYXRlbCA8YW51cEBicmFpbmZhdWx0Lm9yZz4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIFRodSwg SnVsIDE2LCAyMDI2IGF0IDc6MDnigK9QTSBBbnVwIFBhdGVsIDxhbnVwQGJyYWluZmF1bHQub3Jn PiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IE9uIE1vbiwgTWF5IDQsIDIwMjYgYXQgMTE6MDnigK9Q TSBSYXltb25kIE1hbyA8cmF5bW9uZG1hb2NhQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gRnJvbTogUmF5bW9uZCBNYW8gPHJheW1vbmQubWFvQHJpc2NzdGFyLmNvbT4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiBJbnRyb2R1Y2UgYSBnZW5lcmljIGhhcmR3YXJlLWlzb2xhdGlvbiBy ZWdpc3RyYXRpb24gYW5kIGRpc3BhdGNoCj4gPiA+ID4gPiBmcmFtZXdvcmsgZm9yIE9wZW5TQkkg ZG9tYWlucy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBBZGQgYm9vdC10aW1lIGluaXQsIHBlci1kb21h aW4gaW5pdCwgZG9tYWluIGV4aXQsIGRvbWFpbiBlbnRlciBhbmQKPiA+ID4gPiA+IGNsZWFudXAg Y2FsbGJhY2tzLCBhbmQgc3RvcmUgcGVyLWRvbWFpbiBtZWNoYW5pc20gY29udGV4dHMgaW4gc3Ry dWN0Cj4gPiA+ID4gPiBzYmlfZG9tYWluLgo+ID4gPiA+ID4KPiA+ID4gPiA+IFRoaXMgZXN0YWJs aXNoZXMgYW4gYWJzdHJhY3Rpb24gdGhhdCBhbGxvd3MgbXVsdGlwbGUgaGFyZHdhcmUKPiA+ID4g PiA+IGlzb2xhdGlvbiBtZWNoYW5pc21zIHRvIGJlIGNvbXBvc2VkIHdoaWxlIGtlZXBpbmcgY29y ZSBkb21haW4gbW9kZWwKPiA+ID4gPiA+IGFuZCBkYXRhIHN0cnVjdHVyZXMgaW5kZXBlbmRlbnQg ZnJvbSBhbnkgc2luZ2xlIHBsYXRmb3JtCj4gPiA+ID4gPiBpbXBsZW1lbnRhdGlvbi4KPiA+ID4g PiA+Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSYXltb25kIE1hbyA8cmF5bW9uZC5tYW9Acmlz Y3N0YXIuY29tPgo+ID4gPiA+Cj4gPiA+ID4gV2UgZG9uJ3QgbmVlZCB5ZXQgYW5vdGhlciBoYXJ0 LWxldmVsIGFic3RyYWN0aW9uIGZvciB0aGluZ3MgbGlrZQo+ID4gPiA+IFdvcmxkR3VhcmQsIFN1 cGVydmlzb3IgRG9tYWluIElELCBhbmQgUW9TIElEIGNvbmZpZ3VyYXRpb24KPiA+ID4gPiBhdCBo YXJ0LWxldmVsLgo+ID4gPiA+Cj4gPiA+ID4gVGhlIGV4aXN0aW5nIGhhcnQgcHJvdGVjdGlvbiBh YnN0cmFjdGlvbiBjYW4gYmUgZWFzaWx5IGV4dGVuZGVkCj4gPiA+ID4gdG8gc3VwcG9ydCBib3Ro IG1lbW9yeSBwcm90ZWN0aW9uIG1lY2hhbmlzbXMgKFBNUCwgZVBNUCwKPiA+ID4gPiBTbW1wdCwg ZXRjKSBhbmQgSUQgY29uZmlndXJhdGlvbnMgKFdvcmxkR3VhcmQsIERvbWFpbiBJRCwgZXRjKS4K PiA+ID4gPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgaW5jbHVkZS9zYmkvc2JpX2RvbWFpbi5o IHwgICA0ICsKPiA+ID4gPiA+ICBpbmNsdWRlL3NiaS9zYmlfaHdpc28uaCAgfCAgNTYgKysrKysr KysrKysrKwo+ID4gPiA+ID4gIGxpYi9zYmkvb2JqZWN0cy5tayAgICAgICB8ICAgMSArCj4gPiA+ ID4gPiAgbGliL3NiaS9zYmlfaHdpc28uYyAgICAgIHwgMTc1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ID4gPiA+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMjM2IGluc2Vy dGlvbnMoKykKPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zYmkvc2JpX2h3 aXNvLmgKPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3NiaS9zYmlfaHdpc28uYwo+ ID4gPiA+ID4KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NiaS9zYmlfZG9tYWluLmgg Yi9pbmNsdWRlL3NiaS9zYmlfZG9tYWluLmgKPiA+ID4gPiA+IGluZGV4IDAyNzY1Nzc3Li5mYzcz MzBhNiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2luY2x1ZGUvc2JpL3NiaV9kb21haW4uaAo+ID4g PiA+ID4gKysrIGIvaW5jbHVkZS9zYmkvc2JpX2RvbWFpbi5oCj4gPiA+ID4gPiBAQCAtMTQsNiAr MTQsNyBAQAo+ID4gPiA+ID4gICNpbmNsdWRlIDxzYmkvc2JpX3R5cGVzLmg+Cj4gPiA+ID4gPiAg I2luY2x1ZGUgPHNiaS9zYmlfaGFydG1hc2suaD4KPiA+ID4gPiA+ICAjaW5jbHVkZSA8c2JpL3Ni aV9kb21haW5fY29udGV4dC5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxzYmkvc2JpX2h3aXNvLmg+ Cj4gPiA+ID4gPiAgI2luY2x1ZGUgPHNiaS9zYmlfcnB4eS5oPgo+ID4gPiA+ID4KPiA+ID4gPiA+ ICBzdHJ1Y3Qgc2JpX3NjcmF0Y2g7Cj4gPiA+ID4gPiBAQCAtMTk5LDYgKzIwMCw5IEBAIHN0cnVj dCBzYmlfZG9tYWluIHsKPiA+ID4gPiA+ICAgICAgICAgYm9vbCBzeXN0ZW1fcmVzZXRfYWxsb3dl ZDsKPiA+ID4gPiA+ICAgICAgICAgLyoqIElzIGRvbWFpbiBhbGxvd2VkIHRvIHN1c3BlbmQgdGhl IHN5c3RlbSAqLwo+ID4gPiA+ID4gICAgICAgICBib29sIHN5c3RlbV9zdXNwZW5kX2FsbG93ZWQ7 Cj4gPiA+ID4gPiArICAgICAgIC8qKiBIYXJkd2FyZSBpc29sYXRpb24gY29udGV4dHMgZm9yIHJl Z2lzdGVyZWQgbWVjaGFuaXNtcyAqLwo+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgc2JpX2h3aXNv X2RvbWFpbl9jdHggKmh3aXNvX2N0eHM7Cj4gPiA+ID4gPiArICAgICAgIHUzMiBod2lzb19jdHhf Y291bnQ7Cj4gPiA+ID4KPiA+ID4gPiBXZSBhbHJlYWR5IGhhdmUgc2JpX2RvbWFpbl9kYXRhIEFQ SXMgdG8gYWxsb3cgYW55IHBhcnQKPiA+ID4gPiBvZiBPcGVuU0JJIGNyZWF0ZSBwZXItZG9tYWlu IGRhdGEgc28gd2Ugc2hvdWxkIHJlLXVzZQo+ID4gPiA+IEFQSXMgZm9yIGFkZGluZyBtb3JlIGlu Zm9ybWF0aW9uIHBhcnNlZCBmcm9tIERUIGF0IGJvb3QtdGltZS4KPiA+ID4gPgo+ID4gPiA+ID4g ICAgICAgICAvKiogSWRlbnRpZmllcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlIGZpcm13YXJlIHJl Z2lvbiAqLwo+ID4gPiA+ID4gICAgICAgICBib29sIGZ3X3JlZ2lvbl9pbml0ZWQ7Cj4gPiA+ID4g PiAgfTsKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NiaS9zYmlfaHdpc28uaCBiL2lu Y2x1ZGUvc2JpL3NiaV9od2lzby5oCj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g PiA+ID4gaW5kZXggMDAwMDAwMDAuLjFlZmRiOGMxCj4gPiA+ID4gPiAtLS0gL2Rldi9udWxsCj4g PiA+ID4gPiArKysgYi9pbmNsdWRlL3NiaS9zYmlfaHdpc28uaAo+ID4gPiA+ID4gQEAgLTAsMCAr MSw1NiBAQAo+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZQo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogU3lzdGVtLWxldmVs IGhhcmR3YXJlIGlzb2xhdGlvbiBmcmFtZXdvcmsKPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAq IENvcHlyaWdodCAoYykgMjAyNiBSSVNDc3RhciBTb2x1dGlvbnMgQ29ycG9yYXRpb24uCj4gPiA+ ID4gPiArICoKPiA+ID4gPiA+ICsgKiBBdXRob3I6IFJheW1vbmQgTWFvIDxyYXltb25kLm1hb0By aXNjc3Rhci5jb20+Cj4gPiA+ID4gPiArICovCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArI2lmbmRl ZiBfX1NCSV9IV0lTT19IX18KPiA+ID4gPiA+ICsjZGVmaW5lIF9fU0JJX0hXSVNPX0hfXwo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gKyNpbmNsdWRlIDxzYmkvc2JpX3R5cGVzLmg+Cj4gPiA+ID4gPiAr I2luY2x1ZGUgPHNiaS9zYmlfZG9tYWluLmg+Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RydWN0 IHNiaV9od2lzb19vcHMgewo+ID4gPiA+ID4gKyAgICAgICBjb25zdCBjaGFyICpuYW1lOwo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgICAvKiBCb290LXRpbWUgaW5pdCAqLwo+ID4gPiA+ID4g KyAgICAgICBpbnQgKCppbml0KSh2b2lkICpmZHQpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAg ICAgICAvKiBQZXItZG9tYWluIGluaXQgKGRvbWFpbl9vZmZzZXQgcmVmZXJzIHRvIGRvbWFpbiBp bnN0YW5jZSBub2RlKSAqLwo+ID4gPiA+ID4gKyAgICAgICBpbnQgKCpkb21haW5faW5pdCkodm9p ZCAqZmR0LCBpbnQgZG9tYWluX29mZnNldCwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzYmlfZG9tYWluICpkb20sIHZvaWQgKipjdHgpOwo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKyAgICAgICAvKiBCZWZvcmUgc3dpdGNoaW5nIGF3YXkgZnJvbSBhIGRvbWFpbiAq Lwo+ID4gPiA+ID4gKyAgICAgICB2b2lkICgqZG9tYWluX2V4aXQpKGNvbnN0IHN0cnVjdCBzYmlf ZG9tYWluICpzcmMsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHNiaV9kb21haW4gKmRzdCwgdm9pZCAqY3R4KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsgICAgICAgLyogQWZ0ZXIgc3dpdGNoaW5nIGludG8gYSBkb21haW4gKi8KPiA+ID4gPiA+ICsg ICAgICAgdm9pZCAoKmRvbWFpbl9lbnRlcikoY29uc3Qgc3RydWN0IHNiaV9kb21haW4gKmRzdCwK PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNiaV9k b21haW4gKnNyYywgdm9pZCAqY3R4KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgLyog T3B0aW9uYWwgY2xlYW51cCAqLwo+ID4gPiA+ID4gKyAgICAgICB2b2lkICgqZG9tYWluX2NsZWFu dXApKHN0cnVjdCBzYmlfZG9tYWluICpkb20sIHZvaWQgKmN0eCk7Cj4gPiA+ID4gPiArfTsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICtzdHJ1Y3Qgc2JpX2h3aXNvX2RvbWFpbl9jdHggewo+ID4gPiA+ ID4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgc2JpX2h3aXNvX29wcyAqb3BzOwo+ID4gPiA+ID4gKyAg ICAgICB2b2lkICpjdHg7Cj4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtpbnQg c2JpX2h3aXNvX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBzYmlfaHdpc29fb3BzICpvcHMpOwo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gK2ludCBzYmlfaHdpc29faW5pdCh2b2lkICpmZHQpOwo+ID4gPiA+ ID4gK2ludCBzYmlfaHdpc29fZG9tYWluX2luaXQodm9pZCAqZmR0LCBpbnQgZG9tYWluX29mZnNl dCwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNiaV9kb21haW4g KmRvbSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArdm9pZCBzYmlfaHdpc29fZG9tYWluX2V4aXQo Y29uc3Qgc3RydWN0IHNiaV9kb21haW4gKnNyYywKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBzYmlfZG9tYWluICpkc3QpOwo+ID4gPiA+ID4gK3ZvaWQg c2JpX2h3aXNvX2RvbWFpbl9lbnRlcihjb25zdCBzdHJ1Y3Qgc2JpX2RvbWFpbiAqZHN0LAo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzYmlfZG9tYWlu ICpzcmMpOwo+ID4gPiA+ID4gK3ZvaWQgc2JpX2h3aXNvX2RvbWFpbl9jbGVhbnVwKHN0cnVjdCBz YmlfZG9tYWluICpkb20pOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyNlbmRpZiAvKiBfX1NCSV9I V0lTT19IX18gKi8KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9saWIvc2JpL29iamVjdHMubWsgYi9s aWIvc2JpL29iamVjdHMubWsKPiA+ID4gPiA+IGluZGV4IGNhMzEyZWUyLi42MDkxNDk5YSAxMDA2 NDQKPiA+ID4gPiA+IC0tLSBhL2xpYi9zYmkvb2JqZWN0cy5tawo+ID4gPiA+ID4gKysrIGIvbGli L3NiaS9vYmplY3RzLm1rCj4gPiA+ID4gPiBAQCAtNzIsNiArNzIsNyBAQCBsaWJzYmktb2Jqcy15 ICs9IHNiaV9kb21haW4ubwo+ID4gPiA+ID4gIGxpYnNiaS1vYmpzLXkgKz0gc2JpX2VtdWxhdGVf Y3NyLm8KPiA+ID4gPiA+ICBsaWJzYmktb2Jqcy15ICs9IHNiaV9maWZvLm8KPiA+ID4gPiA+ICBs aWJzYmktb2Jqcy15ICs9IHNiaV9oYXJ0Lm8KPiA+ID4gPiA+ICtsaWJzYmktb2Jqcy15ICs9IHNi aV9od2lzby5vCj4gPiA+ID4gPiAgbGlic2JpLW9ianMteSArPSBzYmlfaGVhcC5vCj4gPiA+ID4g PiAgbGlic2JpLW9ianMteSArPSBzYmlfbWF0aC5vCj4gPiA+ID4gPiAgbGlic2JpLW9ianMteSAr PSBzYmlfaGZlbmNlLm8KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9saWIvc2JpL3NiaV9od2lzby5j IGIvbGliL3NiaS9zYmlfaHdpc28uYwo+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ ID4gPiA+IGluZGV4IDAwMDAwMDAwLi42Yzk2ZGMzZQo+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbAo+ ID4gPiA+ID4gKysrIGIvbGliL3NiaS9zYmlfaHdpc28uYwo+ID4gPiA+ID4gQEAgLTAsMCArMSwx NzUgQEAKPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UKPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAqIFN5c3RlbS1sZXZlbCBo YXJkd2FyZSBpc29sYXRpb24gZnJhbWV3b3JrCj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMjYgUklTQ3N0YXIgU29sdXRpb25zIENvcnBvcmF0aW9uLgo+ID4gPiA+ ID4gKyAqCj4gPiA+ID4gPiArICogQXV0aG9yOiBSYXltb25kIE1hbyA8cmF5bW9uZC5tYW9Acmlz Y3N0YXIuY29tPgo+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyNpbmNsdWRl IDxsaWJmZHQuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8c2JpL3NiaV9lcnJvci5oPgo+ID4gPiA+ ID4gKyNpbmNsdWRlIDxzYmkvc2JpX2hlYXAuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8c2JpL3Ni aV9od2lzby5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxzYmkvc2JpX2xpc3QuaD4KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICtzdHJ1Y3Qgc2JpX2h3aXNvX25vZGUgewo+ID4gPiA+ID4gKyAgICAgICBj b25zdCBzdHJ1Y3Qgc2JpX2h3aXNvX29wcyAqb3BzOwo+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qg c2JpX2RsaXN0IG5vZGU7Cj4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0 aWMgU0JJX0xJU1RfSEVBRChod2lzb19vcHNfbGlzdCk7Cj4gPiA+ID4gPiArc3RhdGljIHUzMiBo d2lzb19vcHNfY291bnQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGJvb2wgaHdpc29f b3BzX3JlZ2lzdGVyZWQoY29uc3Qgc3RydWN0IHNiaV9od2lzb19vcHMgKm9wcykKPiA+ID4gPiA+ ICt7Cj4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBzYmlfaHdpc29fbm9kZSAqZW50cnk7Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHNiaV9saXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCAm aHdpc29fb3BzX2xpc3QsIG5vZGUpIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAoZW50 cnktPm9wcyA9PSBvcHMpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKPiA+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgICBy ZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK2ludCBzYmlf aHdpc29fcmVnaXN0ZXIoY29uc3Qgc3RydWN0IHNiaV9od2lzb19vcHMgKm9wcykKPiA+ID4gPiA+ ICt7Cj4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBzYmlfaHdpc29fbm9kZSAqbm9kZTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsgICAgICAgaWYgKCFvcHMgfHwgIW9wcy0+bmFtZSkKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gU0JJX0VJTlZBTDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsgICAgICAgaWYgKGh3aXNvX29wc19yZWdpc3RlcmVkKG9wcykpCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgcmV0dXJuIFNCSV9FQUxSRUFEWTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAg ICAgbm9kZSA9IHNiaV96YWxsb2Moc2l6ZW9mKCpub2RlKSk7Cj4gPiA+ID4gPiArICAgICAgIGlm ICghbm9kZSkKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gU0JJX0VOT01FTTsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgbm9kZS0+b3BzID0gb3BzOwo+ID4gPiA+ID4gKyAg ICAgICBTQklfSU5JVF9MSVNUX0hFQUQoJm5vZGUtPm5vZGUpOwo+ID4gPiA+ID4gKyAgICAgICBz YmlfbGlzdF9hZGRfdGFpbCgmbm9kZS0+bm9kZSwgJmh3aXNvX29wc19saXN0KTsKPiA+ID4gPiA+ ICsgICAgICAgaHdpc29fb3BzX2NvdW50Kys7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAg IHJldHVybiAwOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtpbnQgc2JpX2h3 aXNvX2luaXQodm9pZCAqZmR0KQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsgICAgICAgc3RydWN0 IHNiaV9od2lzb19ub2RlICplbnRyeTsKPiA+ID4gPiA+ICsgICAgICAgaW50IHJjOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKyAgICAgICBzYmlfbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmh3 aXNvX29wc19saXN0LCBub2RlKSB7Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKCFlbnRy eS0+b3BzLT5pbml0KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmMgPSBlbnRyeS0+b3BzLT5p bml0KGZkdCk7Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKHJjKQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwo+ID4gPiA+ID4gKyAgICAgICB9Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICtpbnQgc2JpX2h3aXNvX2RvbWFpbl9pbml0KHZvaWQgKmZkdCwgaW50IGRv bWFpbl9vZmZzZXQsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz YmlfZG9tYWluICpkb20pCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgc2Jp X2h3aXNvX25vZGUgKmVudHJ5Owo+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgc2JpX2h3aXNvX2Rv bWFpbl9jdHggKmN0eHM7Cj4gPiA+ID4gPiArICAgICAgIHZvaWQgKmN0eDsKPiA+ID4gPiA+ICsg ICAgICAgdTMyIGlkeCA9IDA7Cj4gPiA+ID4gPiArICAgICAgIGludCByYzsKPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICsgICAgICAgaWYgKCFkb20pCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIGlmICghaHdpc29fb3BzX2NvdW50 KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKyAgICAgICBjdHhzID0gc2JpX2NhbGxvYyhzaXplb2YoKmN0eHMpLCBod2lzb19vcHNfY291 bnQpOwo+ID4gPiA+ID4gKyAgICAgICBpZiAoIWN0eHMpCj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIFNCSV9FTk9NRU07Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIGRvbS0+ aHdpc29fY3R4cyA9IGN0eHM7Cj4gPiA+ID4gPiArICAgICAgIGRvbS0+aHdpc29fY3R4X2NvdW50 ID0gaHdpc29fb3BzX2NvdW50Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgICBzYmlfbGlz dF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmh3aXNvX29wc19saXN0LCBub2RlKSB7Cj4gPiA+ID4g PiArICAgICAgICAgICAgICAgY3R4c1tpZHhdLm9wcyA9IGVudHJ5LT5vcHM7Cj4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgY3R4c1tpZHhdLmN0eCA9IE5VTEw7Cj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgY3R4ID0gTlVMTDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBp ZiAoZW50cnktPm9wcy0+ZG9tYWluX2luaXQpIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJjID0gZW50cnktPm9wcy0+ZG9tYWluX2luaXQoZmR0LCBkb21haW5fb2Zmc2V0LAo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb20sICZjdHgpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY3R4c1tp ZHhdLmN0eCA9IGN0eDsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYykg ewo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmlfaHdpc29fZG9t YWluX2NsZWFudXAoZG9tKTsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHJjOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgIH0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICBjdHhzW2lkeF0uY3R4ID0gY3R4Owo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGlkeCsrOwo+ ID4gPiA+ID4gKyAgICAgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHJldHVybiAw Owo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICt2b2lkIHNiaV9od2lzb19kb21h aW5fZXhpdChjb25zdCBzdHJ1Y3Qgc2JpX2RvbWFpbiAqc3JjLAo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNiaV9kb21haW4gKmRzdCkKPiA+ID4gPiA+ ICt7Cj4gPiA+ID4gPiArICAgICAgIHUzMiBpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAg ICBpZiAoIXNyYyB8fCAhc3JjLT5od2lzb19jdHhzKQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IHJldHVybjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHNy Yy0+aHdpc29fY3R4X2NvdW50OyBpKyspIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAo IXNyYy0+aHdpc29fY3R4c1tpXS5vcHMgfHwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg IXNyYy0+aHdpc29fY3R4c1tpXS5vcHMtPmRvbWFpbl9leGl0KQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgc3JjLT5od2lzb19jdHhzW2ldLm9wcy0+ZG9tYWluX2V4aXQoCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QsIHNyYy0+aHdpc29f Y3R4c1tpXS5jdHgpOwo+ID4gPiA+ID4gKyAgICAgICB9Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gK3ZvaWQgc2JpX2h3aXNvX2RvbWFpbl9lbnRlcihjb25zdCBzdHJ1Y3Qgc2Jp X2RvbWFpbiAqZHN0LAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBzYmlfZG9tYWluICpzcmMpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKyAgICAgICB1 MzIgaTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgaWYgKCFkc3QgfHwgIWRzdC0+aHdp c29fY3R4cykKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBkc3QtPmh3aXNvX2N0eF9jb3VudDsgaSsr KSB7Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKCFkc3QtPmh3aXNvX2N0eHNbaV0ub3Bz IHx8Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICFkc3QtPmh3aXNvX2N0eHNbaV0ub3Bz LT5kb21haW5fZW50ZXIpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBkc3QtPmh3aXNvX2N0eHNb aV0ub3BzLT5kb21haW5fZW50ZXIoCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZHN0LCBzcmMsIGRzdC0+aHdpc29fY3R4c1tpXS5jdHgpOwo+ID4gPiA+ ID4gKyAgICAgICB9Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3ZvaWQgc2Jp X2h3aXNvX2RvbWFpbl9jbGVhbnVwKHN0cnVjdCBzYmlfZG9tYWluICpkb20pCj4gPiA+ID4gPiAr ewo+ID4gPiA+ID4gKyAgICAgICB1MzIgaTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAg aWYgKCFkb20gfHwgIWRvbS0+aHdpc29fY3R4cykKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm47Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBkb20t Pmh3aXNvX2N0eF9jb3VudDsgaSsrKSB7Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgaWYgKCFk b20tPmh3aXNvX2N0eHNbaV0ub3BzIHx8Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICFk b20tPmh3aXNvX2N0eHNbaV0ub3BzLT5kb21haW5fY2xlYW51cCkKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgIGRvbS0+aHdpc29fY3R4c1tpXS5vcHMtPmRvbWFpbl9jbGVhbnVwKAo+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbSwgZG9tLT5od2lzb19j dHhzW2ldLmN0eCk7Cj4gPiA+ID4gPiArICAgICAgIH0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsg ICAgICAgc2JpX2ZyZWUoZG9tLT5od2lzb19jdHhzKTsKPiA+ID4gPiA+ICsgICAgICAgZG9tLT5o d2lzb19jdHhzID0gTlVMTDsKPiA+ID4gPiA+ICsgICAgICAgZG9tLT5od2lzb19jdHhfY291bnQg PSAwOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiAyLjI1LjEKPiA+ID4gPiA+ Cj4gPiA+ID4KPiA+ID4gPiBMZXQgbWUgc2VuZCBhIHNlcGFyYXRlIHNlcmllcyBzaG93aW5nIGhv dyB0byBleHRlbmQKPiA+ID4gPiBzYmlfaGFydF9pc29sYXRpb24gYXMgc3VnZ2VzdGVkIGFib3Zl Lgo+ID4gPiA+Cj4gPiA+Cj4gPiA+IEkganVzdCBwb3N0ZWQgdGhlIHNlcmllcyB0byBleHRlbmQg dGhlIGV4aXN0aW5nIGhhcnQgcHJvdGVjdGlvbgo+ID4gPiBhYnN0cmFjdGlvbi4KPiA+ID4KPiA+ ID4gUmVmZXIsIHBhdGNoIHNlcmllcyAiW1BBVENIIDAvNV0gRXh0ZW5kIGhhcnQgcHJvdGVjdGlv biBhYnN0cmFjdGlvbgo+ID4gPiBmb3IgSUQgY29uZmlndXJhdGlvbiIKPiA+ID4KPiA+Cj4gPiBJ IGFtIHBsYW5uaW5nIHRvIHBvc3QgYSB2MiB0byByZWJhc2Ugb24geW91ciBoYXJ0IHByb3RlY3Rp b24KPiA+IGFic3RyYWN0aW9uLCBhbmQgc3F1YXNoIHRoZSBob29rcyBvZiBteSB2MSBhcyBoZWxw ZXIgZnVuY3Rpb25zIGZvcgo+ID4gaXNvbGF0aW9uIG1lY2hhbmlzbXMgKGUuZy4gV0csIFBNUCwg Li4uKSB0byB1c2UuCj4gPiBJcyB0aGlzIHBsYW4gZ29vZCBmb3IgeW91Pwo+ID4KPgo+IFRoZSBz YmlfZG9tYWluX2RhdGEgaG9va3MgYXJlIHF1aWV0IHN1aXRhYmxlIGZvciBXRyBjaGVja2VyCj4g YW5kIHNiaV9oYXJ0X3Byb3RlY3Rpb24gaG9va3MgYXJlIHF1aWV0IHN1aXRhYmxlIGZvciBXRyBJ U0EKPiBzdXBwb3J0LiBJIGRvbid0IGJlbGlldmUgd2UgbmVlZCBhbnkgb3RoZXIgaG9va3MKPgo+ IEFsc28sIHdlIGhhdmUga2VwdCBGRFQgdXNhZ2UgYW5kIEZEVCBiYXNlZCBkcml2ZXJzCj4gY29u dGFpbmVkIHVuZGVyIGxpYi91dGlscyBzbyBob29rcyBpbiBsaWIvc2JpIHRha2luZyBmZHQKPiBw YXJhbWV0ZXIgZG9lcyBub3QgYWxpZ24gd2l0aCBjdXJyZW50IHdheSBvZiBpbXBsZW1lbnRpbmcK PiBGRFQgYmFzZWQgZHJpdmVycy4KPgoKSSBtZWFuLCB0aGUgcmV3b3JrIHNlcmllcyB3aWxsIGlt cGxlbWVudCB0aGUgcmV1c2FibGUgaGVscGVycyBvbiB0b3AKb2Ygc2JpX2RvbWFpbl9kYXRhIGFu ZCBzYmlfaGFydF9wcm90ZWN0aW9uLCBjb3ZlcmluZyBjb21tb24KZG9tYWluLWRhdGEgcmVnaXN0 cmF0aW9uLCBkb21haW4tdG8taGFydCBtZW1iZXJzaGlwIGNoZWNrcy4KVGhlc2UgaGVscGVycyB3 aWxsIGNvbGxlY3QgYWxsIHJldXNhYmxlIGxvZ2ljcyBmb3IgbXVsdGlwbGUgbWVjaGFuaXNtcwp0 byB1c2Ugc2JpX2RvbWFpbl9kYXRhIGFuZCBzYmlfaGFydF9wcm90ZWN0aW9uIG90aGVyIHRoYW4g b25seSBmb3IgV0cuCkFuZCB5ZXMsIHRoZSBkb21haW4gRFQgbm9kZSBsb29rdXAgYW5kIGdlbmVy aWMgdTMyL3UzMi1saXN0IHByb3BlcnR5CnBhcnNpbmcgd2lsbCByZW1haW4gdW5kZXIgbGliL3V0 aWxzLCBub3QgbGliL3NiaS4KClJheW1vbmQKCj4gUmVnYXJkcywKPiBBbnVwCgotLSAKb3BlbnNi aSBtYWlsaW5nIGxpc3QKb3BlbnNiaUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vb3BlbnNiaQo=