Re: [PATCH 4/5] lib: sbi: Extend hart protection abstraction to allow ID configuration

Anup Patel <[email protected]> Fri, 24 Jul 2026 20:34:00 +0530
Newsgroups org.infradead.lists.opensbi
Message-ID <CABBgwmt-Ycz46Yh_9e8FGCcRGhampGwWEHhJoDJG4yzShFOWTQ@mail.gmail.com>
T24gV2VkLCBKdWwgMjIsIDIwMjYgYXQgNDo1MuKAr1BNIFJhaHVsIFBhdGhhawo8cmFodWwucGF0
aGFrQG9zcy5xdWFsY29tbS5jb20+IHdyb3RlOgo+Cj4gT24gRnJpLCBKdWwgMTcsIDIwMjYgYXQg
MToxNeKAr1BNIEFudXAgUGF0ZWwgPGFudXAucGF0ZWxAb3NzLnF1YWxjb21tLmNvbT4gd3JvdGU6
Cj4gPgo+ID4gVGhlcmUgYXJlIHZhcmlvdXMgSUQgY29uZmlndXJhdGlvbiBJU0EgZXh0ZW5zaW9u
cyBzdWNoIGFzIFJJU0MtViBXb3JsZHMsCj4gPiBTdXBlcnZpc29yIGRvbWFpbiBJRCwgUW9TIElE
LCBldGMgd2hpY2ggbmVlZCB0byBiZSByZS1jb25maWd1cmVkIHVwb24KPiA+IGRvbWFpbiBjb250
ZXh0IHN3aXRjaCBvbiBhIGhhcnQuIEV4dGVuZCBoYXJ0IHByb3RlY3Rpb24gYWJzdHJhY3Rpb24g
dG8KPiA+IHN1cHBvcnQgYm90aCBtZW1vcnkgcHJvdGVjdGlvbiBhbmQgSUQgY29uZmlndXJhdGlv
biBJU0EgZXh0ZW5zaW9ucy4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnVwIFBhdGVsIDxhbnVw
LnBhdGVsQG9zcy5xdWFsY29tbS5jb20+Cj4gPiAtLS0KPiA+ICBpbmNsdWRlL3NiaS9zYmlfaGFy
dF9wcm90ZWN0aW9uLmggfCAxNiArKysrKy0KPiA+ICBsaWIvc2JpL3NiaV9oYXJ0X3BtcC5jICAg
ICAgICAgICAgfCAgMiArCj4gPiAgbGliL3NiaS9zYmlfaGFydF9wcm90ZWN0aW9uLmMgICAgIHwg
OTQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gIGxpYi9zYmkvc2JpX2luaXQu
YyAgICAgICAgICAgICAgICB8ICAyICstCj4gPiAgcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9laWM3
NzB4LmMgIHwgIDEgKwo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgMTcg
ZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2JpL3NiaV9oYXJ0X3By
b3RlY3Rpb24uaCBiL2luY2x1ZGUvc2JpL3NiaV9oYXJ0X3Byb3RlY3Rpb24uaAo+ID4gaW5kZXgg
NWUxNzBmMDUuLjEzNThiNWJlIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9zYmkvc2JpX2hhcnRf
cHJvdGVjdGlvbi5oCj4gPiArKysgYi9pbmNsdWRlL3NiaS9zYmlfaGFydF9wcm90ZWN0aW9uLmgK
PiA+IEBAIC0xMyw2ICsxMywxMyBAQAo+ID4gIHN0cnVjdCBzYmlfc2NyYXRjaDsKPiA+ICBzdHJ1
Y3Qgc2JpX2RvbWFpbjsKPiA+Cj4gPiArLyoqIERpZmZlcmVudCB0eXBlcyBvZiBoYXJ0IHByb3Rl
Y3Rpb24gbWVjaGFuaXNtcyAqLwo+ID4gK2VudW0gc2JpX2hhcnRfcHJvdGVjdGlvbl90eXBlIHsK
PiA+ICsgICAgICAgU0JJX0hBUlRfUFJPVEVDVElPTl9UWVBFX01FTU9SWSA9IDAsCj4gPiArICAg
ICAgIFNCSV9IQVJUX1BST1RFQ1RJT05fVFlQRV9JRCwKPiA+ICsgICAgICAgU0JJX0hBUlRfUFJP
VEVDVElPbl9UWVBFX01BWAo+IFR5cG8gaGVyZSAibiIKCk9rYXksIEkgd2lsbCB1cGRhdGUuCgo+
Cj4gPiArfTsKPiA+ICsKPiA+ICAvKiogUmVwcmVzZW50YXRpb24gb2YgaGFydCBwcm90ZWN0aW9u
IG1lY2hhbmlzbSAqLwo+ID4gIHN0cnVjdCBzYmlfaGFydF9wcm90ZWN0aW9uIHsKPiA+ICAgICAg
ICAgLyoqIExpc3QgaGVhZCAqLwo+ID4gQEAgLTIxLDYgKzI4LDkgQEAgc3RydWN0IHNiaV9oYXJ0
X3Byb3RlY3Rpb24gewo+ID4gICAgICAgICAvKiogTmFtZSBvZiB0aGUgaGFydCBwcm90ZWN0aW9u
IG1lY2hhbmlzbSAqLwo+ID4gICAgICAgICBjaGFyIG5hbWVbMzJdOwo+ID4KPiA+ICsgICAgICAg
LyoqIFR5cGUgb2YgdGhlIGhhcnQgcHJvdGVjdGlvbiBtZWNoYW5pc20gKi8KPiA+ICsgICAgICAg
ZW51bSBzYmlfaGFydF9wcm90ZWN0aW9uX3R5cGUgdHlwZTsKPiA+ICsKPiA+ICAgICAgICAgLyoq
IFJhdGluZ3Mgb2YgdGhlIGhhcnQgcHJvdGVjdGlvbiBtZWNoYW5pc20gKGhpZ2hlciBpcyBiZXR0
ZXIpICovCj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmF0aW5nOwo+ID4KPiA+IEBAIC00MCwx
MSArNTAsMTEgQEAgc3RydWN0IHNiaV9oYXJ0X3Byb3RlY3Rpb24gewo+ID4gIH07Cj4gPgo+ID4g
IC8qKgo+ID4gLSAqIEdldCB0aGUgYmVzdCBoYXJ0IHByb3RlY3Rpb24gbWVjaGFuaXNtCj4gPiAr
ICogR2V0IHRoZSBiZXN0IGhhcnQgbWVtb3J5IHByb3RlY3Rpb24gbWVjaGFuaXNtCj4gPiAgICoK
PiA+IC0gKiBAcmV0dXJuIHBvaW50ZXIgdG8gYmVzdCBoYXJ0IHByb3RlY3Rpb24gbWVjaGFuaXNt
Cj4gPiArICogQHJldHVybiBwb2ludGVyIHRvIGJlc3QgaGFydCBtZW1vcnkgcHJvdGVjdGlvbiBt
ZWNoYW5pc20KPiA+ICAgKi8KPiA+IC1zdHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiAqc2JpX2hh
cnRfcHJvdGVjdGlvbl9iZXN0KHZvaWQpOwo+ID4gK3N0cnVjdCBzYmlfaGFydF9wcm90ZWN0aW9u
ICpzYmlfaGFydF9tZW1vcnlfcHJvdGVjdGlvbl9iZXN0KHZvaWQpOwo+ID4KPiA+ICAvKioKPiA+
ICAgKiBSZWdpc3RlciBhIGhhcnQgcHJvdGVjdGlvbiBtZWNoYW5pc20KPiA+IGRpZmYgLS1naXQg
YS9saWIvc2JpL3NiaV9oYXJ0X3BtcC5jIGIvbGliL3NiaS9zYmlfaGFydF9wbXAuYwo+ID4gaW5k
ZXggNWVkZTNjYzEuLmMwYTRjZTFiIDEwMDY0NAo+ID4gLS0tIGEvbGliL3NiaS9zYmlfaGFydF9w
bXAuYwo+ID4gKysrIGIvbGliL3NiaS9zYmlfaGFydF9wbXAuYwo+ID4gQEAgLTQyNSw2ICs0MjUs
NyBAQCBzdGF0aWMgdm9pZCBzYmlfaGFydF9wbXBfdW5jb25maWd1cmUoc3RydWN0IHNiaV9zY3Jh
dGNoICpzY3JhdGNoLAo+ID4gIHN0YXRpYyBzdHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiBwbXBf
cHJvdGVjdGlvbiA9IHsKPiA+ICAgICAgICAgLm5hbWUgPSAicG1wIiwKPiA+ICAgICAgICAgLnJh
dGluZyA9IDEwMCwKPiA+ICsgICAgICAgLnR5cGUgPSBTQklfSEFSVF9QUk9URUNUSU9OX1RZUEVf
TUVNT1JZLAo+ID4gICAgICAgICAuY29uZmlndXJlID0gc2JpX2hhcnRfb2xkcG1wX2NvbmZpZ3Vy
ZSwKPiA+ICAgICAgICAgLnVuY29uZmlndXJlID0gc2JpX2hhcnRfcG1wX3VuY29uZmlndXJlLAo+
ID4gIH07Cj4gPiBAQCAtNDMyLDYgKzQzMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2JpX2hhcnRfcHJv
dGVjdGlvbiBwbXBfcHJvdGVjdGlvbiA9IHsKPiA+ICBzdGF0aWMgc3RydWN0IHNiaV9oYXJ0X3By
b3RlY3Rpb24gZXBtcF9wcm90ZWN0aW9uID0gewo+ID4gICAgICAgICAubmFtZSA9ICJlcG1wIiwK
PiA+ICAgICAgICAgLnJhdGluZyA9IDIwMCwKPiA+ICsgICAgICAgLnR5cGUgPSBTQklfSEFSVF9Q
Uk9URUNUSU9OX1RZUEVfTUVNT1JZLAo+ID4gICAgICAgICAuY29uZmlndXJlID0gc2JpX2hhcnRf
c21lcG1wX2NvbmZpZ3VyZSwKPiA+ICAgICAgICAgLnVuY29uZmlndXJlID0gc2JpX2hhcnRfcG1w
X3VuY29uZmlndXJlLAo+ID4gICAgICAgICAubWFwX3JhbmdlID0gc2JpX2hhcnRfc21lcG1wX21h
cF9yYW5nZSwKPiA+IGRpZmYgLS1naXQgYS9saWIvc2JpL3NiaV9oYXJ0X3Byb3RlY3Rpb24uYyBi
L2xpYi9zYmkvc2JpX2hhcnRfcHJvdGVjdGlvbi5jCj4gPiBpbmRleCBmZWNlZmRlOC4uZDMxZTk5
MzggMTAwNjQ0Cj4gPiAtLS0gYS9saWIvc2JpL3NiaV9oYXJ0X3Byb3RlY3Rpb24uYwo+ID4gKysr
IGIvbGliL3NiaS9zYmlfaGFydF9wcm90ZWN0aW9uLmMKPiA+IEBAIC0xMCwxMiArMTAsMTYgQEAK
PiA+Cj4gPiAgc3RhdGljIFNCSV9MSVNUX0hFQUQoaGFydF9wcm90ZWN0aW9uX2xpc3QpOwo+ID4K
PiA+IC1zdHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiAqc2JpX2hhcnRfcHJvdGVjdGlvbl9iZXN0
KHZvaWQpCj4gPiArc3RydWN0IHNiaV9oYXJ0X3Byb3RlY3Rpb24gKnNiaV9oYXJ0X21lbW9yeV9w
cm90ZWN0aW9uX2Jlc3Qodm9pZCkKPiA+ICB7Cj4gPiAtICAgICAgIGlmIChzYmlfbGlzdF9lbXB0
eSgmaGFydF9wcm90ZWN0aW9uX2xpc3QpKQo+ID4gLSAgICAgICAgICAgICAgIHJldHVybiBOVUxM
Owo+ID4gKyAgICAgICBzdHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiAqcG9zOwo+ID4KPiA+IC0g
ICAgICAgcmV0dXJuIHNiaV9saXN0X2ZpcnN0X2VudHJ5KCZoYXJ0X3Byb3RlY3Rpb25fbGlzdCwg
c3RydWN0IHNiaV9oYXJ0X3Byb3RlY3Rpb24sIGhlYWQpOwo+ID4gKyAgICAgICBzYmlfbGlzdF9m
b3JfZWFjaF9lbnRyeShwb3MsICZoYXJ0X3Byb3RlY3Rpb25fbGlzdCwgaGVhZCkgewo+ID4gKyAg
ICAgICAgICAgICAgIGlmIChwb3MtPnR5cGUgPT0gU0JJX0hBUlRfUFJPVEVDVElPTl9UWVBFX01F
TU9SWSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3M7Cj4gPiArICAgICAg
IH0KPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiAgfQo+ID4KPiA+ICBpbnQgc2Jp
X2hhcnRfcHJvdGVjdGlvbl9yZWdpc3RlcihzdHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiAqaHBy
b3QpCj4gPiBAQCAtNzQsMzMgKzc4LDk3IEBAIHN0YXRpYyB2b2lkIF9faGFydF9wcm90ZWN0aW9u
X3VuY29uZmlndXJlKHN0cnVjdCBzYmlfc2NyYXRjaCAqc2NyYXRjaCwKPiA+ICBpbnQgc2JpX2hh
cnRfcHJvdGVjdGlvbl9jb25maWd1cmUoc3RydWN0IHNiaV9zY3JhdGNoICpzY3JhdGNoLAo+ID4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzYmlfZG9tYWluICpkb20p
Cj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gX19oYXJ0X3Byb3RlY3Rpb25fY29uZmlndXJlKHNj
cmF0Y2gsIHNiaV9oYXJ0X3Byb3RlY3Rpb25fYmVzdCgpLCBkb20pOwo+ID4gKyAgICAgICBib29s
IGRvX2NvbmZpZ3VyZSwgbWVtb3J5X3Byb3RlY3RfZG9uZSA9IGZhbHNlOwo+ID4gKyAgICAgICBz
dHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiAqaHByb3Q7Cj4gPiArICAgICAgIGludCByZXQ7Cj4g
PiArCj4gPiArICAgICAgIHNiaV9saXN0X2Zvcl9lYWNoX2VudHJ5KGhwcm90LCAmaGFydF9wcm90
ZWN0aW9uX2xpc3QsIGhlYWQpIHsKPiA+ICsgICAgICAgICAgICAgICBkb19jb25maWd1cmUgPSBm
YWxzZTsKPiA+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKGhwcm90LT50eXBlKSB7Cj4gV2hpbGUg
cmVhZGluZyB0aGUgY29kZSBmb3VuZCB0aGF0IGhwcm90LT50eXBlIGNoZWNraW5nIGlzIG5vdCBk
b25lCj4gaW4gdGhlIGVhcmx5IHN0YWdlIGluIHNiaV9oYXJ0X3Byb3RlY3Rpb25fcmVnaXN0ZXIg
aXRzZWxmLiBJZiBmaXJtd2FyZQo+IGhhcyB0byBleHBsaWNpdGx5IGNoZWNrIGFuZCBmYWlsIHVw
b24gaW52YWxpZCB0eXBlIHRoZW4gd2h5IG5vdCBmYWlsCj4gd2hpbGUgcmVnaXN0ZXJpbmcgdGhl
IHByb3RlY3Rpb24gbWVjaGFuaXNtIGl0c2VsZi4KCkluZGVlZCwgdGhlIHNiaV9oYXJ0X3Byb3Rl
Y3Rpb25fcmVnaXN0ZXIgKCkgc2hvdWxkIGFsc28gY2hlY2sgdHlwZS4KCj4KPgo+ID4gKyAgICAg
ICAgICAgICAgIGNhc2UgU0JJX0hBUlRfUFJPVEVDVElPTl9UWVBFX01FTU9SWToKPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgIGRvX2NvbmZpZ3VyZSA9ICFtZW1vcnlfcHJvdGVjdF9kb25lOwo+
ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3Byb3RlY3RfZG9uZSA9IHRydWU7Cj4g
PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICAgICBjYXNl
IFNCSV9IQVJUX1BST1RFQ1RJT05fVFlQRV9JRDoKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
IGRvX2NvbmZpZ3VyZSA9IHRydWU7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
PiA+ICsgICAgICAgICAgICAgICBkZWZhdWx0Ogo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKyAgICAgICAgICAgICAgIGlmICghZG9f
Y29uZmlndXJlKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4g
PiArICAgICAgICAgICAgICAgcmV0ID0gX19oYXJ0X3Byb3RlY3Rpb25fY29uZmlndXJlKHNjcmF0
Y2gsIGhwcm90LCBkb20pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAg
ICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAgdm9pZCBzYmlfaGFydF9wcm90ZWN0aW9uX3Vu
Y29uZmlndXJlKHN0cnVjdCBzYmlfc2NyYXRjaCAqc2NyYXRjaCwKPiA+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2JpX2RvbWFpbiAqZG9tKQo+ID4gIHsKPiA+
IC0gICAgICAgX19oYXJ0X3Byb3RlY3Rpb25fdW5jb25maWd1cmUoc2NyYXRjaCwgc2JpX2hhcnRf
cHJvdGVjdGlvbl9iZXN0KCksIGRvbSk7Cj4gPiArCj4gPiArICAgICAgIGJvb2wgZG9fdW5jb25m
aWd1cmUsIG1lbW9yeV9wcm90ZWN0X2RvbmUgPSBmYWxzZTsKPiA+ICsgICAgICAgc3RydWN0IHNi
aV9oYXJ0X3Byb3RlY3Rpb24gKmhwcm90Owo+ID4gKwo+ID4gKyAgICAgICBzYmlfbGlzdF9mb3Jf
ZWFjaF9lbnRyeShocHJvdCwgJmhhcnRfcHJvdGVjdGlvbl9saXN0LCBoZWFkKSB7Cj4gPiArICAg
ICAgICAgICAgICAgZG9fdW5jb25maWd1cmUgPSBmYWxzZTsKPiA+ICsgICAgICAgICAgICAgICBz
d2l0Y2ggKGhwcm90LT50eXBlKSB7Cj4gPiArICAgICAgICAgICAgICAgY2FzZSBTQklfSEFSVF9Q
Uk9URUNUSU9OX1RZUEVfTUVNT1JZOgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZG9fdW5j
b25maWd1cmUgPSAhbWVtb3J5X3Byb3RlY3RfZG9uZTsKPiA+ICsgICAgICAgICAgICAgICAgICAg
ICAgIG1lbW9yeV9wcm90ZWN0X2RvbmUgPSB0cnVlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Cj4gPiArICAgICAgICAgICAgICAgY2FzZSBTQklfSEFSVF9QUk9URUNUSU9OX1RZ
UEVfSUQ6Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkb191bmNvbmZpZ3VyZSA9IHRydWU7
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICAgICBk
ZWZhdWx0Ogo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICAg
ICAgICAgfQo+ID4gKyAgICAgICAgICAgICAgIGlmICghZG9fdW5jb25maWd1cmUpCj4gPiArICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBf
X2hhcnRfcHJvdGVjdGlvbl91bmNvbmZpZ3VyZShzY3JhdGNoLCBocHJvdCwgZG9tKTsKPiA+ICsg
ICAgICAgfQo+ID4gIH0KPiA+Cj4gPiAgaW50IHNiaV9oYXJ0X3Byb3RlY3Rpb25fcmVjb25maWd1
cmUoc3RydWN0IHNiaV9zY3JhdGNoICpzY3JhdGNoLAo+ID4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHNiaV9kb21haW4gKmN1cnJlbnRfZG9tLAo+ID4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNiaV9kb21haW4gKm5leHRfZG9t
KQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IHNiaV9oYXJ0X3Byb3RlY3Rpb24gKmhwcm90ID0g
c2JpX2hhcnRfcHJvdGVjdGlvbl9iZXN0KCk7Cj4gPiArICAgICAgIGJvb2wgZG9fcmVjb25maWd1
cmUsIG1lbW9yeV9wcm90ZWN0X2RvbmUgPSBmYWxzZTsKPiA+ICsgICAgICAgc3RydWN0IHNiaV9o
YXJ0X3Byb3RlY3Rpb24gKmhwcm90Owo+ID4gICAgICAgICBpbnQgcmV0Owo+ID4KPiA+IC0gICAg
ICAgX19oYXJ0X3Byb3RlY3Rpb25fdW5jb25maWd1cmUoc2NyYXRjaCwgaHByb3QsIGN1cnJlbnRf
ZG9tKTsKPiA+IC0gICAgICAgcmV0ID0gX19oYXJ0X3Byb3RlY3Rpb25fY29uZmlndXJlKHNjcmF0
Y2gsIGhwcm90LCBuZXh0X2RvbSk7Cj4gPiAtICAgICAgIGlmIChyZXQpCj4gPiAtICAgICAgICAg
ICAgICAgcmV0dXJuIHJldDsKPiA+ICsgICAgICAgc2JpX2xpc3RfZm9yX2VhY2hfZW50cnkoaHBy
b3QsICZoYXJ0X3Byb3RlY3Rpb25fbGlzdCwgaGVhZCkgewo+ID4gKyAgICAgICAgICAgICAgIGRv
X3JlY29uZmlndXJlID0gZmFsc2U7Cj4gPiArICAgICAgICAgICAgICAgc3dpdGNoIChocHJvdC0+
dHlwZSkgewo+ID4gKyAgICAgICAgICAgICAgIGNhc2UgU0JJX0hBUlRfUFJPVEVDVElPTl9UWVBF
X01FTU9SWToKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRvX3JlY29uZmlndXJlID0gIW1l
bW9yeV9wcm90ZWN0X2RvbmU7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfcHJv
dGVjdF9kb25lID0gdHJ1ZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4g
KyAgICAgICAgICAgICAgIGNhc2UgU0JJX0hBUlRfUFJPVEVDVElPTl9UWVBFX0lEOgo+ID4gKyAg
ICAgICAgICAgICAgICAgICAgICAgZG9fcmVjb25maWd1cmUgPSB0cnVlOwo+ID4gKyAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICAgICAgICAgZGVmYXVsdDoKPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsg
ICAgICAgICAgICAgICBpZiAoIWRvX3JlY29uZmlndXJlKQo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgX19oYXJ0X3Byb3RlY3Rp
b25fdW5jb25maWd1cmUoc2NyYXRjaCwgaHByb3QsIGN1cnJlbnRfZG9tKTsKPiA+ICsgICAgICAg
ICAgICAgICByZXQgPSBfX2hhcnRfcHJvdGVjdGlvbl9jb25maWd1cmUoc2NyYXRjaCwgaHByb3Qs
IG5leHRfZG9tKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsgICAgICAgfQo+ID4KPiA+ICAgICAgICAgcmV0
dXJuIDA7Cj4gPiAgfQo+ID4KPiA+ICBpbnQgc2JpX2hhcnRfcHJvdGVjdGlvbl9tYXBfcmFuZ2Uo
dW5zaWduZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBsb25nIHNpemUpCj4gPiAgewo+ID4gLSAgICAg
ICBzdHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiAqaHByb3QgPSBzYmlfaGFydF9wcm90ZWN0aW9u
X2Jlc3QoKTsKPiA+ICsgICAgICAgc3RydWN0IHNiaV9oYXJ0X3Byb3RlY3Rpb24gKmhwcm90ID0g
c2JpX2hhcnRfbWVtb3J5X3Byb3RlY3Rpb25fYmVzdCgpOwo+ID4KPiA+ICAgICAgICAgaWYgKCFo
cHJvdCB8fCAhaHByb3QtPm1hcF9yYW5nZSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
PiA+IEBAIC0xMTAsNyArMTc4LDcgQEAgaW50IHNiaV9oYXJ0X3Byb3RlY3Rpb25fbWFwX3Jhbmdl
KHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgbG9uZyBzaXplKQo+ID4KPiA+ICBpbnQgc2Jp
X2hhcnRfcHJvdGVjdGlvbl91bm1hcF9yYW5nZSh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVk
IGxvbmcgc2l6ZSkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBzYmlfaGFydF9wcm90ZWN0aW9u
ICpocHJvdCA9IHNiaV9oYXJ0X3Byb3RlY3Rpb25fYmVzdCgpOwo+ID4gKyAgICAgICBzdHJ1Y3Qg
c2JpX2hhcnRfcHJvdGVjdGlvbiAqaHByb3QgPSBzYmlfaGFydF9tZW1vcnlfcHJvdGVjdGlvbl9i
ZXN0KCk7Cj4gPgo+ID4gICAgICAgICBpZiAoIWhwcm90IHx8ICFocHJvdC0+dW5tYXBfcmFuZ2Up
Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiBkaWZmIC0tZ2l0IGEvbGliL3NiaS9z
YmlfaW5pdC5jIGIvbGliL3NiaS9zYmlfaW5pdC5jCj4gPiBpbmRleCBkNzRkYzY3Yy4uM2YxZjEz
NmEgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvc2JpL3NiaV9pbml0LmMKPiA+ICsrKyBiL2xpYi9zYmkv
c2JpX2luaXQuYwo+ID4gQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgc2JpX2Jvb3RfcHJp
bnRfZ2VuZXJhbChzdHJ1Y3Qgc2JpX3NjcmF0Y2ggKnNjcmF0Y2gpCj4gPiAgICAgICAgIHNiaV9w
cmludGYoIlBsYXRmb3JtIEZlYXR1cmVzICAgICAgICAgICA6ICVzXG4iLCBzdHIpOwo+ID4gICAg
ICAgICBzYmlfcHJpbnRmKCJQbGF0Zm9ybSBIQVJUIENvdW50ICAgICAgICAgOiAldVxuIiwKPiA+
ICAgICAgICAgICAgICAgICAgICBzYmlfcGxhdGZvcm1faGFydF9jb3VudChwbGF0KSk7Cj4gPiAt
ICAgICAgIGhwcm90ID0gc2JpX2hhcnRfcHJvdGVjdGlvbl9iZXN0KCk7Cj4gPiArICAgICAgIGhw
cm90ID0gc2JpX2hhcnRfbWVtb3J5X3Byb3RlY3Rpb25fYmVzdCgpOwo+ID4gICAgICAgICBzYmlf
cHJpbnRmKCJQbGF0Zm9ybSBIQVJUIFByb3RlY3Rpb24gICAgOiAlc1xuIiwKPiA+ICAgICAgICAg
ICAgICAgICAgICAoaHByb3QpID8gaHByb3QtPm5hbWUgOiAiLS0tIik7Cj4gPiAgICAgICAgIGlk
ZXYgPSBzYmlfaXBpX2dldF9kZXZpY2UoKTsKPiA+IGRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5l
cmljL2Vzd2luL2VpYzc3MHguYyBiL3BsYXRmb3JtL2dlbmVyaWMvZXN3aW4vZWljNzcweC5jCj4g
PiBpbmRleCBkYTRkMGUzNC4uYzcxMTk4YTggMTAwNjQ0Cj4gPiAtLS0gYS9wbGF0Zm9ybS9nZW5l
cmljL2Vzd2luL2VpYzc3MHguYwo+ID4gKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9laWM3
NzB4LmMKPiA+IEBAIC00NzAsNiArNDcwLDcgQEAgc3RhdGljIHZvaWQgZXN3aW5fZWljNzcwMF9w
bXBfdW5jb25maWd1cmUoc3RydWN0IHNiaV9zY3JhdGNoICpzY3JhdGNoLAo+ID4gIHN0YXRpYyBz
dHJ1Y3Qgc2JpX2hhcnRfcHJvdGVjdGlvbiBlc3dpbl9laWM3NzAwX3BtcF9wcm90ZWN0aW9uID0g
ewo+ID4gICAgICAgICAubmFtZSA9ICJlaWM3NzAwX3BtcCIsCj4gPiAgICAgICAgIC5yYXRpbmcg
PSAtMVVMLAo+ID4gKyAgICAgICAudHlwZSA9IFNCSV9IQVJUX1BST1RFQ1RJT05fVFlQRV9NRU1P
UlksCj4gPiAgICAgICAgIC5jb25maWd1cmUgPSBlc3dpbl9laWM3NzAwX3BtcF9jb25maWd1cmUs
Cj4gPiAgICAgICAgIC51bmNvbmZpZ3VyZSA9IGVzd2luX2VpYzc3MDBfcG1wX3VuY29uZmlndXJl
LAo+ID4gIH07Cj4gPiAtLQo+ID4gMi40My4wCj4gPgo+ID4KPiA+IC0tCj4gPiBvcGVuc2JpIG1h
aWxpbmcgbGlzdAo+ID4gb3BlbnNiaUBsaXN0cy5pbmZyYWRlYWQub3JnCj4gPiBodHRwOi8vbGlz
dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29wZW5zYmkKClJlZ2FyZHMsCkFudXAK
Ci0tIApvcGVuc2JpIG1haWxpbmcgbGlzdApvcGVuc2JpQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0
cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuc2JpCg==