Re: [PATCH v5 2/6] lib: utils/irqchip/aplic: add MSI mode support with IMSIC parent linking
Anup Patel <[email protected]> Wed, 22 Jul 2026 12:02:48 +0530
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <CABBgwmvoVvkAPiYZfwmMzipqhRX8yjKDCzLKLupdHTvf7g1uxQ@mail.gmail.com> |
T24gV2VkLCBKdWwgMjIsIDIwMjYgYXQgMzo0OOKAr0FNIFBhd2FuZGVlcCBPemEKPHBhd2FuZGVl cC5vemFAb3NzLnF1YWxjb21tLmNvbT4gd3JvdGU6Cj4KPiBBZGQgcGFyZW50X3VuaXF1ZV9pZCBm aWVsZHMgdG8gc3RydWN0IGFwbGljX2RhdGEgZm9yCj4gSU1TSUMgcGFyZW50IGxpbmtpbmcgaW4g TVNJIG1vZGUuIFN0b3JlIHBhcmVudCBJTVNJQyB1bmlxdWVfaWQKPiBkdXJpbmcgRkRUIHBhcnNp bmcgb2YgdGhlIEFQTElDIG5vZGUuCj4KPiBBZGQgYXBsaWNfaXNfbXNpX21vZGUoKSBjb21wbGVt ZW50aW5nIGFwbGljX2lzX2RpcmVjdF9tb2RlKCkgdG8KPiBjb25zb2xpZGF0ZSBkZWxpdmVyeSBt b2RlIGRldGVjdGlvbi4gQWRkIEFQTElDX1RBUkdFVF9FSUlEKCkgbWFjcm8KPiBmb3IgcGFja2lu ZyB0aGUgRUlJRCBmaWVsZCBpbnRvIHRoZSBUQVJHRVQgcmVnaXN0ZXIuCj4KPiBBZGQgcGFyZW50 X3VuaXF1ZV9pZCBhbmQgcGFyZW50X2lycV9tYXAgZmllbGRzIHRvIHN0cnVjdCBhcGxpY19kYXRh Lgo+IHBhcmVudF91bmlxdWVfaWQgaWRlbnRpZmllcyB0aGUgdXBzdHJlYW0gSU1TSUMgaXJxY2hp cCBkZXZpY2UgcmVzb2x2ZWQKPiB2aWEgc2JpX2lycWNoaXBfZmluZF9kZXZpY2UoKSBkdXJpbmcg aHdpcnFfc2V0dXAuIHBhcmVudF9pcnFfbWFwIGlzCj4gYSBwZXItc291cmNlIGFycmF5IGFsbG9j YXRlZCBhdCBjb2xkIGluaXQgdGltZSB0byB0cmFjayB0aGUgRUlJRAo+IGFzc2lnbmVkIGJ5IHRo ZSBJTVNJQyBmb3IgZWFjaCBBUExJQyBzb3VyY2UuCj4KPiBSZXN0b3JlIGFwbGljX3dyaXRlbF9t c2ljZmcoKSBhbmQgcmUtaW50cm9kdWNlIE1TSSBhZGRyZXNzIHJlZ2lzdGVyCj4gcHJvZ3JhbW1p bmcgaW4gYXBsaWNfaW5pdCgpLCBnYXRlZCBvbiBhcGxpY19pc19tc2lfbW9kZSgpLiBTZXQgdGhl Cj4gRE9NQUlOQ0ZHX0RNIGJpdCB0byBzd2l0Y2ggdGhlIGhhcmR3YXJlIHRvIE1TSSBkZWxpdmVy eSBtb2RlIHdoZW4KPiBubyBJREMgc3RydWN0dXJlcyBhcmUgcHJlc2VudC4KPgo+IEFkZCBhcGxp Y19wcm9ncmFtX21zaV90YXJnZXQoKSB0byBwYWNrIGhhcnRfaW5kZXgsIGd1ZXN0X2luZGV4LCBh bmQKPiBFSUlEIGludG8gdGhlIEFQTElDX1RBUkdFVCByZWdpc3Rlci4gQWRkIGFwbGljX3dyaXRl X21zaSgpIGFzIHRoZQo+IHNiaV9pcnFjaGlwIHdyaXRlX21zaSBjYWxsYmFjayB0aGF0IGV4dHJh Y3RzIEVJSUQgYW5kIGhhcnRfaW5kZXggZnJvbQo+IHRoZSBNU0kgbWVzc2FnZSBhbmQgY2FsbHMg YXBsaWNfcHJvZ3JhbV9tc2lfdGFyZ2V0KCkuIEFkZAo+IGFwbGljX21zaV9jYWxsYmFjaygpIGFz IHRoZSBNU0kgcmVjZWl2ZSBjYWxsYmFjayB0aGF0IGRpc3BhdGNoZXMgdG8KPiBzYmlfaXJxY2hp cF9wcm9jZXNzX2h3aXJxKCkgb24gdGhlIEFQTElDIGNoaXAuCj4KPiBFeHRlbmQgYXBsaWNfaHdp cnFfc2V0dXAoKSB3aXRoIGFuIE1TSSBwYXRoIHRoYXQgcmVzb2x2ZXMgdGhlIHBhcmVudAo+IElN U0lDIGNoaXAgYnkgcGFyZW50X3VuaXF1ZV9pZCwgcmVnaXN0ZXJzIGFuIE1TSSByb3V0ZSB2aWEK PiBzYmlfaXJxY2hpcF9yZWdpc3Rlcl9tc2koKSwgYW5kIHN0b3JlcyB0aGUgYWxsb2NhdGVkIEVJ SUQgaW4KPiBwYXJlbnRfaXJxX21hcCBmb3IgdGhlIHNvdXJjZSBiZWluZyBjb25maWd1cmVkLgo+ Cj4gRXh0ZW5kIGFwbGljX2h3aXJxX3NldF9hZmZpbml0eSgpIHdpdGggYW4gTVNJIHBhdGggdGhh dCBkZWxlZ2F0ZXMKPiBhZmZpbml0eSByZXByb2dyYW1taW5nIHRvIHRoZSBwYXJlbnQgSU1TSUMg Y2hpcCB2aWEKPiBzYmlfaXJxY2hpcF9zZXRfYWZmaW5pdHkoKSB1c2luZyB0aGUgc3RvcmVkIHBh cmVudF9pcnFfbWFwIGVudHJ5Lgo+Cj4gR3VhcmQgd2FybV9pbml0LCBwcm9jZXNzX2h3aXJxcywg YW5kIGh3aXJxX2VvaSB3aXRoIGVhcmx5IHJldHVybnMgaW4KPiBNU0kgbW9kZSBhcyBpbnRlcnJ1 cHQgZGVsaXZlcnkgYW5kIGFja25vd2xlZGdlbWVudCBhcmUgaGFuZGxlZCBieSB0aGUKPiBJTVNJ QyBpbiB0aGF0IGNvbmZpZ3VyYXRpb24uCj4KPiBTaWduZWQtb2ZmLWJ5OiBPemEgUGF3YW5kZWVw IDxwYXdhbmRlZXAub3phQG9zcy5xdWFsY29tbS5jb20+Cj4gLS0tCj4gIGluY2x1ZGUvc2JpL3Ni aV9pcnFjaGlwLmggICAgICAgICB8ICAgNiArCj4gIGluY2x1ZGUvc2JpX3V0aWxzL2lycWNoaXAv YXBsaWMuaCB8ICAgMSArCj4gIGxpYi9zYmkvc2JpX2lycWNoaXAuYyAgICAgICAgICAgICB8ICAz NCArKysrCj4gIGxpYi91dGlscy9mZHQvZmR0X2hlbHBlci5jICAgICAgICB8ICAgMSArCj4gIGxp Yi91dGlscy9pcnFjaGlwL2FwbGljLmMgICAgICAgICB8IDI1NiArKysrKysrKysrKysrKysrKysr KysrKysrKystLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyNzYgaW5zZXJ0aW9ucygrKSwgMjIgZGVs ZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zYmkvc2JpX2lycWNoaXAuaCBiL2lu Y2x1ZGUvc2JpL3NiaV9pcnFjaGlwLmgKPiBpbmRleCBlNzc4ZDc0Ny4uZWEwMTI2MzUgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9zYmkvc2JpX2lycWNoaXAuaAo+ICsrKyBiL2luY2x1ZGUvc2JpL3Ni aV9pcnFjaGlwLmgKPiBAQCAtMTA3LDYgKzEwNywxMiBAQCBpbnQgc2JpX2lycWNoaXBfdW5tYXNr X2h3aXJxKHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZpY2UgKmNoaXAsIHUzMiBod2lycSk7Cj4gIC8q KiBNYXNrIGEgaGFyZHdhcmUgaW50ZXJydXB0ICovCj4gIGludCBzYmlfaXJxY2hpcF9tYXNrX2h3 aXJxKHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZpY2UgKmNoaXAsIHUzMiBod2lycSk7Cj4KPiArLyoq IEhlbHBlciB0byBzZXQgcHJpdmF0ZSBkYXRhIGluIHNiaV9pcnFjaGlwX2h3aXJxX2RhdGEgKi8K PiAraW50IHNiaV9pcnFjaGlwX3NldF9od2lycV9wcml2KHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZp Y2UgKmNoaXAsIHUzMiBod2lycSwgdm9pZCAqcHJpdik7Cj4gKwo+ICsvKiogSGVscGVyIHRvIHJl dHJpZXZlIGRhdGEgZnJvbSBzYmlfaXJxY2hpcF9od2lycV9kYXRhICovCj4gK3ZvaWQgKnNiaV9p cnFjaGlwX2dldF9od2lycV9wcml2KHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZpY2UgKmNoaXAsIHUz MiBod2lycSk7Cj4gKwo+ICAvKiogRGVmYXVsdCByYXcgaGFyZHdhcmUgaW50ZXJydXB0IGhhbmRs ZXIgKi8KPiAgaW50IHNiaV9pcnFjaGlwX3Jhd19oYW5kbGVyX2RlZmF1bHQoc3RydWN0IHNiaV9p cnFjaGlwX2RldmljZSAqY2hpcCwgdTMyIGh3aXJxKTsKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L3NiaV91dGlscy9pcnFjaGlwL2FwbGljLmggYi9pbmNsdWRlL3NiaV91dGlscy9pcnFjaGlwL2Fw bGljLmgKPiBpbmRleCAzNDYxZDFjNy4uOGQ2ZDg3MWUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9z YmlfdXRpbHMvaXJxY2hpcC9hcGxpYy5oCj4gKysrIGIvaW5jbHVkZS9zYmlfdXRpbHMvaXJxY2hp cC9hcGxpYy5oCj4gQEAgLTM2LDYgKzM2LDcgQEAgc3RydWN0IGFwbGljX2RhdGEgewo+ICAgICAg ICAgc3RydWN0IHNiaV9kbGlzdCBub2RlOwo+ICAgICAgICAgLyogUHVibGljIG1lbWJlcnMgKi8K PiAgICAgICAgIHUzMiB1bmlxdWVfaWQ7Cj4gKyAgICAgICB1MzIgcGFyZW50X3VuaXF1ZV9pZDsK PiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcjsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6 ZTsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtX2lkYzsKPiBkaWZmIC0tZ2l0IGEvbGliL3Ni aS9zYmlfaXJxY2hpcC5jIGIvbGliL3NiaS9zYmlfaXJxY2hpcC5jCj4gaW5kZXggNmQwZGYwMmUu LjEyZDRlMjcyIDEwMDY0NAo+IC0tLSBhL2xpYi9zYmkvc2JpX2lycWNoaXAuYwo+ICsrKyBiL2xp Yi9zYmkvc2JpX2lycWNoaXAuYwo+IEBAIC0yMiw2ICsyMiw5IEBAIHN0cnVjdCBzYmlfaXJxY2hp cF9od2lycV9kYXRhIHsKPgo+ICAgICAgICAgLyoqIHRhcmdldCBoYXJ0IGluZGV4ICovCj4gICAg ICAgICB1MzIgaGFydF9pbmRleDsKPiArCj4gKyAgICAgICAvKiogY2hpcCdzIHByaXZhdGUgZGF0 YSAqLwo+ICsgICAgICAgdm9pZCAqcHJpdjsKPiAgfTsKPgo+ICAvKiogSW50ZXJuYWwgaXJxY2hp cCBpbnRlcnJ1cHQgaGFuZGxlciAqLwo+IEBAIC0xMTMsNiArMTE2LDM3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc2JpX2lycWNoaXBfaGFuZGxlciAqc2JpX2lycWNoaXBfZmluZF9oYW5kbGVyKHN0cnVjdCBz YmlfaXJxY2hpcF9kCj4gICAgICAgICByZXR1cm4gTlVMTDsKPiAgfQo+Cj4gK2ludCBzYmlfaXJx Y2hpcF9zZXRfaHdpcnFfcHJpdihzdHJ1Y3Qgc2JpX2lycWNoaXBfZGV2aWNlICpjaGlwLCB1MzIg aHdpcnEsIHZvaWQgKnByaXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBzYmlfaXJxY2hpcF9od2ly cV9kYXRhICpkYXRhOwo+ICsKPiArICAgICAgIGlmICghY2hpcCB8fCBjaGlwLT5udW1faHdpcnEg PD0gaHdpcnEpCj4gKyAgICAgICAgICAgIHJldHVybiBTQklfRUlOVkFMOwo+ICsKPiArICAgICAg IGRhdGEgPSAmY2hpcC0+aHdpcnFzW2h3aXJxXTsKPiArICAgICAgIGRhdGEtPnByaXYgPSBwcml2 Owo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkICpzYmlfaXJxY2hpcF9n ZXRfaHdpcnFfcHJpdihzdHJ1Y3Qgc2JpX2lycWNoaXBfZGV2aWNlICpjaGlwLCB1MzIgaHdpcnEp Cj4gK3sKPiArICAgICAgIHN0cnVjdCBzYmlfaXJxY2hpcF9od2lycV9kYXRhICpkYXRhOwo+ICsg ICAgICAgaWYgKCFjaGlwIHx8IGNoaXAtPm51bV9od2lycSA8PSBod2lycSkKPiArICAgICAgICAg ICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICAgICBkYXRhID0gJmNoaXAtPmh3aXJxc1tod2lycV07 Cj4gKwo+ICsgICAgICAgcmV0dXJuIGRhdGEtPnByaXY7Cj4gK30KPiArCj4gK3N0cnVjdCBhcGxp Y19tc2lfZGF0YSAqc2JpX2lycWNoaXBfZ2V0X2hhbmRsZXJfcHJpdihzdHJ1Y3Qgc2JpX2lycWNo aXBfZGV2aWNlICpjaGlwLCB1MzIgaHdpcnEpCj4gK3sKPiArICAgICAgIHN0cnVjdCBzYmlfaXJx Y2hpcF9oYW5kbGVyICpoYW5kbGVyID0gc2JpX2lycWNoaXBfZmluZF9oYW5kbGVyKGNoaXAsIGh3 aXJxKTsKPiArCj4gKyAgICAgICByZXR1cm4gKHN0cnVjdCBhcGxpY19tc2lfZGF0YSAqKSBoYW5k bGVyLT5wcml2Owo+ICt9Cj4gKwoKWW91IGZvcmdvdCB0byBkcm9wIHNiaV9pcnFjaGlwX2dldF9o YW5kbGVyX3ByaXYoKSBpbXBsZW1lbnRhdGlvbi4gSQp3aWxsIHRha2UgY2FyZSBvZiBpdCBhdCB0 aGUgdGltZSBvZiBtZXJnaW5nIHRoaXMgcGF0Y2guCgo+ICBpbnQgc2JpX2lycWNoaXBfcmF3X2hh bmRsZXJfZGVmYXVsdChzdHJ1Y3Qgc2JpX2lycWNoaXBfZGV2aWNlICpjaGlwLCB1MzIgaHdpcnEp Cj4gIHsKPiAgICAgICAgIHN0cnVjdCBzYmlfaXJxY2hpcF9oYW5kbGVyICpoOwo+IGRpZmYgLS1n aXQgYS9saWIvdXRpbHMvZmR0L2ZkdF9oZWxwZXIuYyBiL2xpYi91dGlscy9mZHQvZmR0X2hlbHBl ci5jCj4gaW5kZXggYWQ0ZWZhYWYuLjc0N2JhMDI4IDEwMDY0NAo+IC0tLSBhL2xpYi91dGlscy9m ZHQvZmR0X2hlbHBlci5jCj4gKysrIGIvbGliL3V0aWxzL2ZkdC9mZHRfaGVscGVyLmMKPiBAQCAt NjY0LDYgKzY2NCw3IEBAIGludCBmZHRfcGFyc2VfYXBsaWNfbm9kZShjb25zdCB2b2lkICpmZHQs IGludCBub2Rlb2ZmLCBzdHJ1Y3QgYXBsaWNfZGF0YSAqYXBsaWMpCj4KPiAgICAgICAgIHJjID0g ZmR0X2FwbGljX2ZpbmRfaW1zaWNfbm9kZShmZHQsIG5vZGVvZmYsICZpbXNpYywgdHJ1ZSk7Cj4g ICAgICAgICBpZiAoIXJjKSB7Cj4gKyAgICAgICAgICAgICAgIGFwbGljLT5wYXJlbnRfdW5pcXVl X2lkID0gaW1zaWMudW5pcXVlX2lkOwo+ICAgICAgICAgICAgICAgICBhcGxpYy0+dGFyZ2V0c19t bW9kZSA9IHRydWU7Cj4gICAgICAgICAgICAgICAgIGFwbGljLT5oYXNfbXNpY2ZnX21tb2RlID0g dHJ1ZTsKPiAgICAgICAgICAgICAgICAgYXBsaWMtPm1zaWNmZ19tbW9kZS5saHhzID0gaW1zaWMu Z3Vlc3RfaW5kZXhfYml0czsKPiBkaWZmIC0tZ2l0IGEvbGliL3V0aWxzL2lycWNoaXAvYXBsaWMu YyBiL2xpYi91dGlscy9pcnFjaGlwL2FwbGljLmMKPiBpbmRleCBlZmMyNTU1NS4uMDFjMmRlNGUg MTAwNjQ0Cj4gLS0tIGEvbGliL3V0aWxzL2lycWNoaXAvYXBsaWMuYwo+ICsrKyBiL2xpYi91dGls cy9pcnFjaGlwL2FwbGljLmMKPiBAQCAtMTIsNiArMTIsNyBAQAo+ICAjaW5jbHVkZSA8c2JpL3Ni aV9jb25zb2xlLmg+Cj4gICNpbmNsdWRlIDxzYmkvc2JpX2RvbWFpbi5oPgo+ICAjaW5jbHVkZSA8 c2JpL3NiaV9lcnJvci5oPgo+ICsjaW5jbHVkZSA8c2JpL3NiaV9oZWFwLmg+Cj4gICNpbmNsdWRl IDxzYmlfdXRpbHMvaXJxY2hpcC9hcGxpYy5oPgo+Cj4gICNkZWZpbmUgQVBMSUNfTUFYX0lEQyAg ICAgICAgICAgICAgICAgICgxVUwgPDwgMTQpCj4gQEAgLTczLDYgKzc0LDggQEAKPiAgI2RlZmlu ZSBBUExJQ19UQVJHRVRfR1VFU1RfSURYKF9fZ2lkeCkgXAo+ICAgICAgICAgKCgoKHUzMikoX19n aWR4KSkgJiBBUExJQ19UQVJHRVRfR1VFU1RfSURYX01BU0spIDw8IFwKPiAgICAgICAgICBBUExJ Q19UQVJHRVRfR1VFU1RfSURYX1NISUZUKQo+ICsjZGVmaW5lIEFQTElDX1RBUkdFVF9FSUlEKF9f ZWlpZCkgXAo+ICsgICAgICAgKCgodTMyKShfX2VpaWQpKSAmIEFQTElDX1RBUkdFVF9FSUlEX01B U0spCj4KPiAgI2RlZmluZSBBUExJQ19TRVRJUF9CQVNFICAgICAgICAgICAgICAgMHgxYzAwCj4g ICNkZWZpbmUgQVBMSUNfU0VUSVBOVU0gICAgICAgICAgICAgICAgIDB4MWNkYwo+IEBAIC0xMjUs NiArMTI4LDEyIEBACj4gICNkZWZpbmUgQVBMSUNfRElTQUJMRV9JVEhSRVNIT0xEICAgICAgIDEK PiAgI2RlZmluZSBBUExJQ19FTkFCTEVfSVRIUkVTSE9MRCAgICAgICAgICAgICAgICAwCj4KPiAr c3RydWN0IGFwbGljX21zaV9kYXRhIHsKPiArICAgICAgIHN0cnVjdCBhcGxpY19kYXRhICphcGxp YzsKPiArICAgICAgIHUzMiBod2lycTsKPiArICAgICAgIHUzMiBwYXJlbnRfaHdpcnE7Cj4gK307 Cj4gKwo+ICBzdGF0aWMgU0JJX0xJU1RfSEVBRChhcGxpY19saXN0KTsKPiAgc3RhdGljIHZvaWQg YXBsaWNfd3JpdGVsX21zaWNmZyhzdHJ1Y3QgYXBsaWNfbXNpY2ZnX2RhdGEgKm1zaWNmZywKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm1zaWNmZ2FkZHIsIHZvaWQgKm1z aWNmZ2FkZHJIKTsKPiBAQCAtMTY5LDYgKzE3OCwyMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBs aWNfaXJxX2NscmlwKHN0cnVjdCBhcGxpY19kYXRhICphcGxpYywgdTMyIGh3aXJxKQo+ICAgICAg ICAgd3JpdGVsKGh3aXJxLCAodm9pZCAqKShhcGxpYy0+YWRkciArIEFQTElDX0NMUklQTlVNKSk7 Cj4gIH0KPgo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXBsaWNfbXNpX2lycV9yZXRyaWdnZXJfbGV2 ZWwoc3RydWN0IGFwbGljX2RhdGEgKmFwbGljLCB1MzIgaHdpcnEpCj4gK3sKPiArICAgICAgIC8q Cj4gKyAgICAgICAgKiBUaGUgc2VjdGlvbiAiNC45LjIgU3BlY2lhbCBjb25zaWRlcmF0aW9uIGZv ciBsZXZlbC1zZW5zaXRpdmUgaW50ZXJydXB0Cj4gKyAgICAgICAgKiBzb3VyY2VzIiBvZiB0aGUg UklTQy1WIEFJQSBzcGVjaWZpY2F0aW9uIHNheXM6Cj4gKyAgICAgICAgKgo+ICsgICAgICAgICog QSBzZWNvbmQgb3B0aW9uIGlzIGZvciB0aGUgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSB0byB3 cml0ZSB0aGUKPiArICAgICAgICAqIEFQTElD4oCZcyBzb3VyY2UgaWRlbnRpdHkgbnVtYmVyIGZv ciB0aGUgaW50ZXJydXB0IHRvIHRoZSBkb21haW7igJlzCj4gKyAgICAgICAgKiBzZXRpcG51bSBy ZWdpc3RlciBqdXN0IGJlZm9yZSBleGl0aW5nLiBUaGlzIHdpbGwgY2F1c2UgdGhlIGludGVycnVw dOKAmXMKPiArICAgICAgICAqIHBlbmRpbmcgYml0IHRvIGJlIHNldCB0byBvbmUgYWdhaW4gaWYg dGhlIHNvdXJjZSBpcyBzdGlsbCBhc3NlcnRpbmcKPiArICAgICAgICAqIGFuIGludGVycnVwdCwg YnV0IG5vdCBpZiB0aGUgc291cmNlIGlzIG5vdCBhc3NlcnRpbmcgYW4gaW50ZXJydXB0Lgo+ICsg ICAgICAgICovCj4gKyAgICAgICB3cml0ZWwoaHdpcnEsICh2b2lkICopKGFwbGljLT5hZGRyICsg QVBMSUNfU0VUSVBOVU1fTEUpKTsKPiArfQo+ICsKPiAgc3RhdGljIGlubGluZSB2b2lkICphcGxp Y19pZGNfYmFzZShzdHJ1Y3QgYXBsaWNfZGF0YSAqYXBsaWMsIHUzMiBpZGNfaW5kZXgpCj4gIHsK PiAgICAgICAgIHJldHVybiAodm9pZCAqKShhcGxpYy0+YWRkciArIEFQTElDX0lEQ19CQVNFICsK PiBAQCAtMjkyLDYgKzMxNiw4IEBAIHN0YXRpYyB2b2lkIGFwbGljX2luaXQoc3RydWN0IGFwbGlj X2RhdGEgKmFwbGljKQo+ICAgICAgICAgfQo+Cj4gICAgICAgICBkb21haW5jZmcgPSBBUExJQ19E T01BSU5DRkdfSUU7Cj4gKyAgICAgICBpZiAoIWFwbGljX2lzX2RpcmVjdF9tb2RlKGFwbGljKSkK PiArICAgICAgICAgICAgICAgZG9tYWluY2ZnIHw9IEFQTElDX0RPTUFJTkNGR19ETTsKPgo+ICAg ICAgICAgd3JpdGVsKGRvbWFpbmNmZywgKHZvaWQgKikoYXBsaWMtPmFkZHIgKyBBUExJQ19ET01B SU5DRkcpKTsKPiAgfQo+IEBAIC0zNTcsNiArMzgzLDggQEAgc3RhdGljIGludCBhcGxpY193YXJt X2luaXQoc3RydWN0IHNiaV9pcnFjaGlwX2RldmljZSAqY2hpcCkKPiAgICAgICAgIGludCBpZGNf aW5kZXg7Cj4KPiAgICAgICAgIGFwbGljID0gY29udGFpbmVyX29mKGNoaXAsIHN0cnVjdCBhcGxp Y19kYXRhLCBpcnFjaGlwKTsKPiArICAgICAgIGlmICghYXBsaWNfaXNfZGlyZWN0X21vZGUoYXBs aWMpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPgo+ICAgICAgICAgaGFydF9pbmRleCA9 IGN1cnJlbnRfaGFydGluZGV4KCk7Cj4gICAgICAgICBpZGNfaW5kZXggID0gYXBsaWNfZmluZF9p ZGNfaW5kZXgoYXBsaWMsIGhhcnRfaW5kZXgpOwo+IEBAIC0zNzcsNyArNDA1LDEwIEBAIHN0YXRp YyBpbnQgYXBsaWNfcHJvY2Vzc19od2lycXMoc3RydWN0IHNiaV9pcnFjaGlwX2RldmljZSAqY2hp cCkKPiAgICAgIHUzMiBoYXJ0X2luZGV4LCBjbGFpbWksIGh3aXJxOwo+ICAgICAgaW50IGlkY19p bmRleCwgcmMgPSAwLCB0bXA7Cj4KPiAtICAgIGFwbGljID0gY29udGFpbmVyX29mKGNoaXAsIHN0 cnVjdCBhcGxpY19kYXRhLCBpcnFjaGlwKTsKPiArICAgICAgIGFwbGljID0gY29udGFpbmVyX29m KGNoaXAsIHN0cnVjdCBhcGxpY19kYXRhLCBpcnFjaGlwKTsKPiArCj4gKyAgICAgICBpZiAoIWFw bGljX2lzX2RpcmVjdF9tb2RlKGFwbGljKSkKPiArICAgICAgICAgICAgICAgc2JpX3BhbmljKCJh cGxpY19wcm9jZXNzX2h3aXJxcyBjYWxsZWQgaW4gTVNJIG1vZGUuXG4iKTsKPgo+ICAgICAgaGFy dF9pbmRleCA9IGN1cnJlbnRfaGFydGluZGV4KCk7Cj4gICAgICBpZGNfaW5kZXggID0gYXBsaWNf ZmluZF9pZGNfaW5kZXgoYXBsaWMsIGhhcnRfaW5kZXgpOwo+IEBAIC00MDIsMzggKzQzMywxNjAg QEAgc3RhdGljIGludCBhcGxpY19wcm9jZXNzX2h3aXJxcyhzdHJ1Y3Qgc2JpX2lycWNoaXBfZGV2 aWNlICpjaGlwKQo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4KPiArc3RhdGljIHZvaWQgYXBsaWNf aHdpcnFfZW9pKHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZpY2UgKmNoaXAsIHUzMiBod2lycSkKPiAr ewo+ICsgICAgICAgc3RydWN0IGFwbGljX2RhdGEgKmFwbGljOwo+ICsgICAgdTMyIHNtOwo+ICsK PiArICAgICAgIGFwbGljID0gY29udGFpbmVyX29mKGNoaXAsIHN0cnVjdCBhcGxpY19kYXRhLCBp cnFjaGlwKTsKPiArICAgIGlmIChhcGxpY19pc19kaXJlY3RfbW9kZShhcGxpYykpCj4gKyAgICAg ICAgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBzbSA9IGFwbGljX3NvdXJjZWNmZ19yZWFkKGFw bGljLCBod2lycSkgJiBBUExJQ19TT1VSQ0VDRkdfU01fTUFTSzsKPiArICAgIGlmIChzbSA9PSBB UExJQ19TT1VSQ0VDRkdfU01fTEVWRUxfSElHSCB8fAo+ICsgICAgICAgIHNtID09IEFQTElDX1NP VVJDRUNGR19TTV9MRVZFTF9MT1cpCj4gKyAgICAgICAgYXBsaWNfbXNpX2lycV9yZXRyaWdnZXJf bGV2ZWwoYXBsaWMsIGh3aXJxKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXBsaWNfcHJvZ3Jh bV9tc2lfdGFyZ2V0KHN0cnVjdCBhcGxpY19kYXRhICphcGxpYywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdTMyIGh3aXJxLCB1MzIgaGFydF9pbmRleCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGd1ZXN0X2luZGV4LCB1MzIgZWlpZCkK PiArewo+ICsgICAgICAgdTMyIHRhcmdldDsKPiArCj4gKyAgICAgICB0YXJnZXQgPSBBUExJQ19U QVJHRVRfSEFSVF9JRFgoaGFydF9pbmRleCkgfAo+ICsgICAgICAgICAgICAgICAgQVBMSUNfVEFS R0VUX0dVRVNUX0lEWChndWVzdF9pbmRleCkgfAo+ICsgICAgICAgICAgICAgICAgQVBMSUNfVEFS R0VUX0VJSUQoZWlpZCk7Cj4gKwo+ICsgICAgICAgYXBsaWNfdGFyZ2V0X3dyaXRlKGFwbGljLCBo d2lycSwgdGFyZ2V0KTsKPiArfQo+ICsKPiArc3RhdGljIHUzMiBkZXJpdmVfaGFydF9pbmRleChz dHJ1Y3QgYXBsaWNfbXNpY2ZnX2RhdGEgKm1zaWNmZywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3Qgc2JpX2lycWNoaXBfbXNpX21zZyAqbXNnKQo+ICt7Cj4gKyAg ICAgICB1NjQgYWRkciA9ICgodTY0KW1zZy0+YWRkcmVzc19oaSA8PCAzMikgfCBtc2ctPmFkZHJl c3NfbG87Cj4gKyAgICAgICB1NjQgdHBwbiA9IGFkZHIgPj4gQVBMSUNfeE1TSUNGR0FERFJfUFBO X1NISUZUOwo+ICsgICAgICAgdTMyIGdyb3VwX2luZGV4LCBoYXJ0X2luZGV4Owo+ICsKPiArICAg ICAgIGdyb3VwX2luZGV4ID0gKHRwcG4gPj4gQVBMSUNfeE1TSUNGR0FERFJfUFBOX0hIWF9TSElG VChtc2ljZmctPmhoeHMpKSAmCj4gKyAgICAgICAgICAgICAgICAgICAgIEFQTElDX3hNU0lDRkdB RERSX1BQTl9ISFhfTUFTSyhtc2ljZmctPmhoeHcpOwo+ICsKPiArICAgICAgIGhhcnRfaW5kZXgg PSAodHBwbiA+PiBtc2ljZmctPmxoeHMpICYKPiArICAgICAgICAgICAgICAgICAgICAoKDFVTCA8 PCBtc2ljZmctPmxoeHcpIC0gMSk7Cj4gKwo+ICsgICAgICAgaGFydF9pbmRleCB8PSAoZ3JvdXBf aW5kZXggPDwgbXNpY2ZnLT5saHh3KTsKPiArCj4gKyAgICAgICByZXR1cm4gaGFydF9pbmRleDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXBsaWNfd3JpdGVfbXNpKHUzMiBwYXJlbnRfaHdpcnEs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzYmlfaXJxY2hpcF9t c2lfbXNnICptc2csCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnByaXYpCj4g K3sKPiArICAgICAgIHN0cnVjdCBhcGxpY19tc2lfZGF0YSAqbXNpX2RhdGEgPSBwcml2Owo+ICsg ICAgICAgdTMyIGd1ZXN0X2luZGV4ID0gMDsKPiArICAgICAgIHUzMiBlaWlkOwo+ICsKPiArICAg ICAgIGVpaWQgPSBtc2ctPmRhdGE7Cj4gKyAgICAgICBpZiAoIWVpaWQgfHwgZWlpZCA+IEFQTElD X1RBUkdFVF9FSUlEX01BU0spCj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPiArCj4gKyAgICAg ICBhcGxpY19wcm9ncmFtX21zaV90YXJnZXQobXNpX2RhdGEtPmFwbGljLCBtc2lfZGF0YS0+aHdp cnEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVfaGFydF9pbmRleCgm bXNpX2RhdGEtPmFwbGljLT5tc2ljZmdfbW1vZGUsIG1zZyksCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndWVzdF9pbmRleCwgZWlpZCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg YXBsaWNfbXNpX2NhbGxiYWNrKHUzMiBwYXJlbnRfaHdpcnEsIHZvaWQgKnByaXYpCj4gK3sKPiAr ICAgICAgIHN0cnVjdCBhcGxpY19tc2lfZGF0YSAqbXNpX2RhdGEgPSBwcml2Owo+ICsgICAgICAg aW50IHJjOwo+ICsKPiArICAgICAgIHJjID0gc2JpX2lycWNoaXBfcHJvY2Vzc19od2lycSgmbXNp X2RhdGEtPmFwbGljLT5pcnFjaGlwLCBtc2lfZGF0YS0+aHdpcnEpOwo+ICsgICAgICAgaWYgKHJj ICYmIHJjICE9IFNCSV9FTk9FTlQpCj4gKyAgICAgICAgICAgICAgIHNiaV9wcmludGYoIiVzOiBo d2lycT0lbHUgZmFpbGVkIHJjPSVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9fZnVu Y19fLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXBhcmVudF9od2ly cSwgcmMpOwo+ICsKPiArICAgICAgIHJldHVybiByYzsKPiArfQo+ICsKPiArc3RhdGljIGludCBh cGxpY19zZXR1cF9tc2koc3RydWN0IGFwbGljX2RhdGEgKmFwbGljLCB1MzIgaHdpcnEpCj4gK3sK PiArICAgICAgIHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZpY2UgKnBhcmVudDsKPiArICAgICAgIHUz MiBmaXJzdF9od2lycTsKPiArICAgICAgIHN0cnVjdCBhcGxpY19tc2lfZGF0YSAqbXNpX2RhdGE7 Cj4gKyAgICAgICBpbnQgcmM7Cj4gKwo+ICsgICAgcGFyZW50ID0gc2JpX2lycWNoaXBfZmluZF9k ZXZpY2UoYXBsaWMtPnBhcmVudF91bmlxdWVfaWQpOwo+ICsgICAgaWYgKCFwYXJlbnQpIHsKPiAr ICAgICAgICAgICAgICAgc2JpX3ByaW50ZigiJXM6IG1zaV9wYXJlbnQgaXMgTlVMTCBod2lycT0l bHVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sICh1bnNpZ25lZCBsb25n KWh3aXJxKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIFNCSV9FSU5WQUw7Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgbXNpX2RhdGEgPSBzYmlfemFsbG9jKHNpemVvZihzdHJ1Y3QgYXBsaWNf bXNpX2RhdGEpKTsKPiArICAgICAgIGlmICghbXNpX2RhdGEpCj4gKyAgICAgICAgICAgICAgIHJl dHVybiBTQklfRU5PTUVNOwo+ICsKPiArICAgICAgIG1zaV9kYXRhLT5hcGxpYyA9IGFwbGljOwo+ ICsgICAgICAgbXNpX2RhdGEtPmh3aXJxID0gaHdpcnE7Cj4gKwo+ICsgICAgICAgcmMgPSBzYmlf aXJxY2hpcF9yZWdpc3Rlcl9tc2kocGFyZW50LCAxLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcGxpY193cml0ZV9tc2ksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFwbGljX21zaV9jYWxsYmFjaywKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbXNpX2RhdGEsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZmaXJzdF9od2lycSk7Cj4gKyAgICAgICBpZiAocmMpIHsKPiAr ICAgICAgICAgICAgICAgc2JpX3ByaW50ZigiJXM6IHJlZ2lzdGVyX21zaSBmYWlsZWQgaHdpcnE9 JWx1IHJjPSVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAodW5zaWdu ZWQgbG9uZylod2lycSwgcmMpOwo+ICsgICAgICAgICAgICAgICBzYmlfZnJlZShtc2lfZGF0YSk7 Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByYzsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBt c2lfZGF0YS0+cGFyZW50X2h3aXJxID0gZmlyc3RfaHdpcnE7Cj4gKyAgICAgICBzYmlfaXJxY2hp cF9zZXRfaHdpcnFfcHJpdigmYXBsaWMtPmlycWNoaXAsIGh3aXJxLCBtc2lfZGF0YSk7Cj4gKwo+ ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgYXBsaWNfaHdpcnFfc2V0dXAo c3RydWN0IHNiaV9pcnFjaGlwX2RldmljZSAqY2hpcCwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHUzMiBod2lycSwgdTMyIGh3aXJxX2ZsYWdzKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3Qg YXBsaWNfZGF0YSAqYXBsaWM7Cj4gLSAgICAgICB1MzIgc291cmNlY2ZnOwo+ICsgICAgICAgdTMy IHNvdXJjZWNmZzsKPgo+ICAgICAgICAgYXBsaWMgPSBjb250YWluZXJfb2YoY2hpcCwgc3RydWN0 IGFwbGljX2RhdGEsIGlycWNoaXApOwo+Cj4gICAgICAgICBzb3VyY2VjZmcgPSBhcGxpY19od2ly cV9mbGFnc190b19zb3VyY2VjZmcoaHdpcnFfZmxhZ3MpOwo+ICAgICAgICAgaWYgKHNvdXJjZWNm ZyA9PSBBUExJQ19TT1VSQ0VDRkdfU01fSU5BQ1RJVkUpIHsKPiAtICAgICAgICAgICAgICAgc2Jp X3ByaW50ZigiYXBsaWNfaHdpcnFfc2V0dXA6IHVuc3VwcG9ydGVkIGZsYWdzPTB4JWx4IGh3aXJx PSVsdVxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylod2ly cV9mbGFncywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylod2ly cSk7Cj4gKyAgICAgICAgICAgICAgIHNiaV9wcmludGYoIiVzOiB1bnN1cHBvcnRlZCBmbGFncz0w eCVseCBod2lycT0lbHVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpaHdpcnFfZmxhZ3MsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpaHdpcnEpOwo+ICAgICAgICAgICAg ICAgICByZXR1cm4gU0JJX0VJTlZBTDsKPiAgICAgICAgIH0KPiArCj4gICAgICAgICBhcGxpY19z b3VyY2VjZmdfd3JpdGUoYXBsaWMsIGh3aXJxLCBzb3VyY2VjZmcpOwo+Cj4gICAgICAgICBpZiAo YXBsaWNfaHdpcnFfaXNfZGVsZWdhdGVkKGFwbGljLCBod2lycSkpIHsKPiAtICAgICAgICAgICAg ICAgc2JpX3ByaW50ZigiYXBsaWNfaHdpcnFfc2V0dXA6IGh3aXJxPSVsdSBpcyBkZWxlZ2F0ZWRc biIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpaHdpcnEpOwo+ ICsgICAgICAgICAgICAgICBzYmlfcHJpbnRmKCIlczogaHdpcnE9JWx1IGlzIGRlbGVnYXRlZFxu IiwKPiArICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKHVuc2lnbmVkIGxvbmcpaHdp cnEpOwo+ICAgICAgICAgICAgICAgICByZXR1cm4gU0JJX0VOT1RTVVBQOwo+ICAgICAgICAgfQo+ Cj4gICAgICAgICBhcGxpY19pcnFfY2xyaWUoYXBsaWMsIGh3aXJxKTsKPiAgICAgICAgIGFwbGlj X2lycV9jbHJpcChhcGxpYywgaHdpcnEpOwo+Cj4gKyAgICAgICBpZiAoIWFwbGljX2lzX2RpcmVj dF9tb2RlKGFwbGljKSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIGFwbGljX3NldHVwX21zaShh cGxpYywgaHdpcnEpOwo+ICsKPiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAgc3RhdGljIHZv aWQgYXBsaWNfaHdpcnFfY2xlYW51cChzdHJ1Y3Qgc2JpX2lycWNoaXBfZGV2aWNlICpjaGlwLCB1 MzIgaHdpcnEpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBhcGxpY19kYXRhICphcGxpYzsKPiArICAg ICAgIHN0cnVjdCBhcGxpY19tc2lfZGF0YSAqbXNpX2RhdGE7Cj4KPiAgICAgICAgIGFwbGljID0g Y29udGFpbmVyX29mKGNoaXAsIHN0cnVjdCBhcGxpY19kYXRhLCBpcnFjaGlwKTsKPiAgICAgICAg IGlmIChhcGxpY19od2lycV9pc19kZWxlZ2F0ZWQoYXBsaWMsIGh3aXJxKSkKPiBAQCAtNDQzLDE4 ICs1OTYsNDIgQEAgc3RhdGljIHZvaWQgYXBsaWNfaHdpcnFfY2xlYW51cChzdHJ1Y3Qgc2JpX2ly cWNoaXBfZGV2aWNlICpjaGlwLCB1MzIgaHdpcnEpCj4gICAgICAgICBhcGxpY19pcnFfY2xyaXAo YXBsaWMsIGh3aXJxKTsKPiAgICAgICAgIGFwbGljX3NvdXJjZWNmZ193cml0ZShhcGxpYywgaHdp cnEsIEFQTElDX1NPVVJDRUNGR19TTV9JTkFDVElWRSk7Cj4gICAgICAgICBhcGxpY190YXJnZXRf d3JpdGUoYXBsaWMsIGh3aXJxLCBBUExJQ19ERUZBVUxUX1BSSU9SSVRZKTsKPiArICAgICAgIG1z aV9kYXRhID0gKHN0cnVjdCBhcGxpY19tc2lfZGF0YSAqKSBzYmlfaXJxY2hpcF9nZXRfaHdpcnFf cHJpdihjaGlwLCBod2lycSk7Cj4gKyAgICAgICBpZiAobXNpX2RhdGEpCj4gKyAgICAgICAgICAg ICAgIHNiaV9mcmVlKG1zaV9kYXRhKTsKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgYXBsaWNfaHdpcnFf c2V0X2FmZmluaXR5KHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZpY2UgKmNoaXAsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGh3aXJxLCB1MzIgaGFydF9pbmRleCkKPiAg ewo+ICAgICAgICAgc3RydWN0IGFwbGljX2RhdGEgKmFwbGljOwo+ICsgICAgICAgc3RydWN0IGFw bGljX21zaV9kYXRhICptc2lfZGF0YTsKPiArICAgICAgIHN0cnVjdCBzYmlfaXJxY2hpcF9kZXZp Y2UgKnBhcmVudDsKPiAgICAgICAgIGludCBpZGNfaW5kZXg7Cj4gKyAgICAgICBpbnQgcmM7Cj4K PiAgICAgICAgIGFwbGljID0gY29udGFpbmVyX29mKGNoaXAsIHN0cnVjdCBhcGxpY19kYXRhLCBp cnFjaGlwKTsKPiAgICAgICAgIGlmIChhcGxpY19od2lycV9pc19kZWxlZ2F0ZWQoYXBsaWMsIGh3 aXJxKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIFNCSV9FTk9UU1VQUDsKPgo+ICsgICAgICAg aWYgKCFhcGxpY19pc19kaXJlY3RfbW9kZShhcGxpYykpIHsKPiArICAgICAgICAgICAgICAgcGFy ZW50ID0gc2JpX2lycWNoaXBfZmluZF9kZXZpY2UoYXBsaWMtPnBhcmVudF91bmlxdWVfaWQpOwo+ ICsgICAgICAgICAgICAgICBpZiAoIXBhcmVudCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAg IHNiaV9wcmludGYoIiVzOiBtc2lfcGFyZW50IGlzIE5VTEwgaHdpcnE9JWx1XG4iLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sICh1bnNpZ25lZCBsb25nKWh3aXJx KTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0JJX0VJTlZBTDsKPiArICAgICAg ICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgbXNpX2RhdGEgPSBzYmlfaXJxY2hpcF9n ZXRfaHdpcnFfcHJpdihjaGlwLCBod2lycSk7Cj4gKyAgICAgICAgICAgICAgIHJjID0gc2JpX2ly cWNoaXBfc2V0X2FmZmluaXR5KHBhcmVudCwgbXNpX2RhdGEtPnBhcmVudF9od2lycSwgaGFydF9p bmRleCk7Cj4gKyAgICAgICAgICAgICAgIGlmIChyYykgewo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHNiaV9wcmludGYoIiVzOiBzYmlfaXJxY2hpcF9zZXRfYWZmaW5pdHkgZmFpbGVkIGh3aXJx PSVsdSByYz0lZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCAodW5zaWduZWQgbG9uZylod2lycSwgcmMpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiByYzsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsK PiArICAgICAgIH0KPiArCj4gICAgICAgICBpZGNfaW5kZXggPSBhcGxpY19maW5kX2lkY19pbmRl eChhcGxpYywgaGFydF9pbmRleCk7Cj4gICAgICAgICBpZiAoaWRjX2luZGV4IDwgMCkKPiAgICAg ICAgICAgICAgICAgcmV0dXJuIFNCSV9FSU5WQUw7Cj4gQEAgLTQ4OSwxMiArNjY2LDEzIEBAIHN0 YXRpYyB2b2lkIGFwbGljX2h3aXJxX3VubWFzayhzdHJ1Y3Qgc2JpX2lycWNoaXBfZGV2aWNlICpj aGlwLCB1MzIgaHdpcnEpCj4gIH0KPgo+ICBzdGF0aWMgc3RydWN0IHNiaV9pcnFjaGlwX2Rldmlj ZSBhcGxpY19pcnFjaGlwX3RlbXBsYXRlID0gewo+IC0gICAgICAgLndhcm1faW5pdCAgICAgICAg ICAgICAgPSBhcGxpY193YXJtX2luaXQsCj4gKyAgICAgICAud2FybV9pbml0ICAgICAgICAgICAg ICAgICAgICAgID0gYXBsaWNfd2FybV9pbml0LAo+ICAgICAgICAgLnByb2Nlc3NfaHdpcnFzICAg ICAgICAgPSBhcGxpY19wcm9jZXNzX2h3aXJxcywKPiArICAgICAgIC5od2lycV9lb2kgICAgICAg ICAgICAgICAgICAgICAgPSBhcGxpY19od2lycV9lb2ksCj4gICAgICAgICAuaHdpcnFfc2V0dXAg ICAgICAgICAgICA9IGFwbGljX2h3aXJxX3NldHVwLAo+ICAgICAgICAgLmh3aXJxX2NsZWFudXAg ICAgICAgICAgPSBhcGxpY19od2lycV9jbGVhbnVwLAo+ICAgICAgICAgLmh3aXJxX3NldF9hZmZp bml0eSAgICAgPSBhcGxpY19od2lycV9zZXRfYWZmaW5pdHksCj4gLSAgICAgICAuaHdpcnFfbWFz ayAgICAgICAgICAgICA9IGFwbGljX2h3aXJxX21hc2ssCj4gKyAgICAgICAuaHdpcnFfbWFzayAg ICAgICAgICAgICAgICAgICAgID0gYXBsaWNfaHdpcnFfbWFzaywKPiAgICAgICAgIC5od2lycV91 bm1hc2sgICAgICAgICAgID0gYXBsaWNfaHdpcnFfdW5tYXNrLAo+ICB9Owo+Cj4gQEAgLTUwMywy MSArNjgxLDQ2IEBAIGludCBhcGxpY19jb2xkX2lycWNoaXBfaW5pdChzdHJ1Y3QgYXBsaWNfZGF0 YSAqYXBsaWMpCj4gICAgICAgICBpbnQgcmM7Cj4gICAgICAgICBzdHJ1Y3QgYXBsaWNfZGVsZWdh dGVfZGF0YSAqZGVsZWc7Cj4gICAgICAgICB1MzIgZmlyc3RfZGVsZWdfaXJxLCBsYXN0X2RlbGVn X2lycSwgaTsKPiArICAgICAgIGJvb2wgbXNpX21vZGU7Cj4gKwo+ICsgICAgICAgbXNpX21vZGUg PSAhYXBsaWNfaXNfZGlyZWN0X21vZGUoYXBsaWMpOwo+ICsgICAgICAgaWYgKCFhcGxpYy0+bnVt X3NvdXJjZSkgewo+ICsgICAgICAgICAgICAgICBzYmlfcHJpbnRmKCIlczogbnVtX3NvdXJjZSBp cyB6ZXJvXG4iLCBfX2Z1bmNfXyk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBTQklfRUlOVkFM Owo+ICsgICAgICAgfQo+Cj4gLSAgICAgICAvKiBTYW5pdHkgY2hlY2tzICovCj4gLSAgICAgICBp ZiAoIWFwbGljIHx8Cj4gLSAgICAgICAgICAgIWFwbGljLT5udW1fc291cmNlIHx8IEFQTElDX01B WF9TT1VSQ0UgPD0gYXBsaWMtPm51bV9zb3VyY2UgfHwKPiAtICAgICAgICAgICBBUExJQ19NQVhf SURDIDw9IGFwbGljLT5udW1faWRjKQo+ICsgICAgICAgaWYgKEFQTElDX01BWF9TT1VSQ0UgPD0g YXBsaWMtPm51bV9zb3VyY2UpIHsKPiArICAgICAgICAgICAgICAgc2JpX3ByaW50ZigiJXM6IG51 bV9zb3VyY2U9JWx1IGV4Y2VlZHMgbWF4PSVsdVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXywKPiArICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylhcGxp Yy0+bnVtX3NvdXJjZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylB UExJQ19NQVhfU09VUkNFKTsKPiAgICAgICAgICAgICAgICAgcmV0dXJuIFNCSV9FSU5WQUw7Cj4g KyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKCFtc2lfbW9kZSAmJiBBUExJQ19NQVhfSURDIDw9 IGFwbGljLT5udW1faWRjKSB7Cj4gKyAgICAgICAgICAgICAgIHNiaV9wcmludGYoIiVzOiBudW1f aWRjPSVsdSBleGNlZWRzIG1heD0lbHVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgX19m dW5jX18sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpYXBsaWMtPm51 bV9pZGMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpQVBMSUNfTUFY X0lEQyk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBTQklfRUlOVkFMOwo+ICsgICAgICAgfQo+ ICsKPiAgICAgICAgIGlmIChhcGxpYy0+dGFyZ2V0c19tbW9kZSAmJiBhcGxpYy0+aGFzX21zaWNm Z19tbW9kZSkgewo+ICAgICAgICAgICAgICAgICByYyA9IGFwbGljX2NoZWNrX21zaWNmZygmYXBs aWMtPm1zaWNmZ19tbW9kZSk7Cj4gLSAgICAgICAgICAgICAgIGlmIChyYykKPiArICAgICAgICAg ICAgICAgaWYgKHJjKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2JpX3ByaW50ZigiJXM6 IGludmFsaWQgTS1tb2RlIG1zaWNmZyByYz0lZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fZnVuY19fLCByYyk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJjOwo+ICsgICAgICAgICAgICAgICB9Cj4gICAgICAgICB9Cj4gKwo+ICAgICAgICAgaWYgKGFw bGljLT50YXJnZXRzX21tb2RlICYmIGFwbGljLT5oYXNfbXNpY2ZnX3Ntb2RlKSB7Cj4gICAgICAg ICAgICAgICAgIHJjID0gYXBsaWNfY2hlY2tfbXNpY2ZnKCZhcGxpYy0+bXNpY2ZnX3Ntb2RlKTsK PiAtICAgICAgICAgICAgICAgaWYgKHJjKQo+ICsgICAgICAgICAgICAgICBpZiAocmMpIHsKPiAr ICAgICAgICAgICAgICAgICAgICAgICBzYmlfcHJpbnRmKCIlczogaW52YWxpZCBTLW1vZGUgbXNp Y2ZnIHJjPSVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18s IHJjKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4gKyAgICAgICAgICAg ICAgIH0KPiAgICAgICAgIH0KPgo+ICAgICAgICAgLyogSW5pdCB0aGUgQVBMSUMgcmVnaXN0ZXJz ICovCj4gQEAgLTU1MCwyMiArNzUzLDMxIEBAIGludCBhcGxpY19jb2xkX2lycWNoaXBfaW5pdChz dHJ1Y3QgYXBsaWNfZGF0YSAqYXBsaWMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJjOwo+ICAgICAgICAgfQo+Cj4gLSAgICAgICBpZiAoKGFwbGljLT50YXJnZXRzX21tb2RlKSAm JiBhcGxpY19pc19kaXJlY3RfbW9kZShhcGxpYykpIHsKPiArICAgICAgIGlmICgoYXBsaWMtPnRh cmdldHNfbW1vZGUpKSB7Cj4gICAgICAgICAgICAgICAgIGFwbGljLT5pcnFjaGlwICAgICAgICAg ICA9IGFwbGljX2lycWNoaXBfdGVtcGxhdGU7Cj4gICAgICAgICAgICAgICAgIGFwbGljLT5pcnFj aGlwLmlkICAgICAgICA9IGFwbGljLT51bmlxdWVfaWQ7Cj4gICAgICAgICAgICAgICAgIGFwbGlj LT5pcnFjaGlwLmNhcHMgPSBTQklfSVJRQ0hJUF9DQVBTX1dJUkVEOwo+ICAgICAgICAgICAgICAg ICBhcGxpYy0+aXJxY2hpcC5udW1faHdpcnEgPSBhcGxpYy0+bnVtX3NvdXJjZSArIDE7Cj4KPiAt ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFwbGljLT5udW1faWRjOyBpKyspCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgc2JpX2hhcnRtYXNrX3NldF9oYXJ0aW5kZXgoYXBsaWMtPmlk Y19tYXBbaV0sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmFwbGljLT5pcnFjaGlwLnRhcmdldF9oYXJ0cyk7Cj4gKyAgICAgICAgICAgICAgIGlm IChtc2lfbW9kZSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFwbGljLT5pcnFjaGlwLndh cm1faW5pdCAgICAgID0gTlVMTDsKPiArICAgICAgICAgICAgICAgICAgICAgICBhcGxpYy0+aXJx Y2hpcC5wcm9jZXNzX2h3aXJxcyA9IE5VTEw7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXBs aWMtPmlycWNoaXAuaHdpcnFfZW9pICAgICAgPSBOVUxMOwo+ICsgICAgICAgICAgICAgICB9Cj4g Kwo+ICsgICAgICAgICAgICAgICBpZiAobXNpX21vZGUpCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgc2JpX2hhcnRtYXNrX3NldF9hbGwoJmFwbGljLT5pcnFjaGlwLnRhcmdldF9oYXJ0cyk7Cj4g KyAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgYXBsaWMtPm51bV9pZGM7IGkrKykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNiaV9oYXJ0bWFza19zZXRfaGFydGluZGV4KGFwbGljLT5pZGNfbWFwW2ldLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFw bGljLT5pcnFjaGlwLnRhcmdldF9oYXJ0cyk7Cj4KPiAgICAgICAgICAgICAgICAgcmMgPSBzYmlf aXJxY2hpcF9hZGRfZGV2aWNlKCZhcGxpYy0+aXJxY2hpcCk7Cj4gICAgICAgICAgICAgICAgIGlm IChyYykgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIHNiaV9wcmludGYoImFwbGljX2NvbGRf aXJxY2hpcF9pbml0OiBzYmlfaXJxY2hpcF9hZGRfZGV2aWNlIGZhaWxlZCByYz0lZCBpZD0lbHUg bW9kZT0lcyB0YXJnZXRfd2VpZ2h0PSVsdVxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNiaV9wcmludGYoIiVzOiBzYmlf aXJxY2hpcF9hZGRfZGV2aWNlIGZhaWxlZCByYz0lZCBpZD0lbHUgbW9kZT0lcyB0YXJnZXRfd2Vp Z2h0PSVsdVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBy YywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWFwbGlj LT5pcnFjaGlwLmlkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdCIs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2lfbW9kZSA/ICJtc2kiIDogImRp cmVjdCIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylz YmlfaGFydG1hc2tfd2VpZ2h0KAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmYXBsaWMtPmlycWNoaXAudGFyZ2V0X2hhcnRzKSk7Cj4gICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHJjOwo+IC0tCj4gMi40My4wCj4KPgo+IC0tCj4gb3BlbnNiaSBtYWlsaW5n IGxpc3QKPiBvcGVuc2JpQGxpc3RzLmluZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29wZW5zYmkKCk90aGVyd2lzZSwgdGhpcyBsb29rcyBn b29kIHRvIG1lLgoKUmV2aWV3ZWQtYnk6IEFudXAgUGF0ZWwgPGFudXBAYnJhaW5mYXVsdC5vcmc+ CgpUaGFua3MsCkFudXAKCi0tIApvcGVuc2JpIG1haWxpbmcgbGlzdApvcGVuc2JpQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9v cGVuc2JpCg==