[PATCH v9 2/5] riscv: add support for SBI Supervisor Software Events extension
Zhanpeng Zhang <[email protected]> Thu, 30 Jul 2026 21:33:33 +0800
| 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,org.kernel.vger.linux-perf-users |
|---|---|
| Message-ID | <[email protected]> |
RnJvbTogQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgoKVGhlIFNCSSBTU0Ug ZXh0ZW5zaW9uIGFsbG93cyB0aGUgc3VwZXJ2aXNvciBzb2Z0d2FyZSB0byBiZSBub3RpZmllZCBi eQp0aGUgU0JJIG9mIHNwZWNpZmljIGV2ZW50cyB0aGF0IGFyZSBub3QgbWFza2FibGUuIFRoZSBj b250ZXh0IHN3aXRjaCBpcwpoYW5kbGVkIHBhcnRpYWxseSBieSB0aGUgZmlybXdhcmUgd2hpY2gg d2lsbCBzYXZlIHJlZ2lzdGVycyBhNiBhbmQgYTcuCldoZW4gZW50ZXJpbmcga2VybmVsIHdlIGNh biByZWx5IG9uIHRoZXNlIDIgcmVnaXN0ZXJzIHRvIHNldHVwIHRoZSBzdGFjawphbmQgc2F2ZSBh bGwgdGhlIHJlZ2lzdGVycy4KClNpbmNlIFNTRSBldmVudHMgY2FuIGJlIGRlbGl2ZXJlZCBhdCBh bnkgdGltZSB0byB0aGUga2VybmVsLCBpbmNsdWRpbmcKZHVyaW5nIGV4Y2VwdGlvbiBoYW5kbGlu Zywgd2UgbmVlZCBhIHdheSB0byBsb2NhdGUgdGhlIGN1cnJlbnRfdGFzayBmb3IKY29udGV4dCB0 cmFja2luZy4gT24gUklTQy1WLCBpdCBpcyBzdG9yZWQgaW4gc2NyYXRjaCB3aGVuIGluIHVzZXIg c3BhY2UKb3IgdHAgd2hlbiBpbiBrZXJuZWwgc3BhY2UgKGluIHdoaWNoIGNhc2UgU1NDUkFUQ0gg aXMgemVybykuIEJ1dCBhdCB0aGUKYmVnaW5uaW5nIG9mIGV4Y2VwdGlvbiBoYW5kbGluZywgU1ND UkFUQ0ggaXMgdXNlZCB0byBzd2FwIHRwIGFuZApjaGVjayB0aGUgb3JpZ2luIG9mIHRoZSBleGNl cHRpb24uIElmIGludGVycnVwdGVkIGF0IHRoYXQgcG9pbnQsIHRoZW4sCnRoZXJlIGlzIG5vIHdh eSB0byByZWxpYWJseSBrbm93IHdoZXJlIGlzIGxvY2F0ZWQgdGhlIGN1cnJlbnQKdGFza19zdHJ1 Y3QuIEV2ZW4gY2hlY2tpbmcgdGhlIGludGVycnVwdGlvbiBsb2NhdGlvbiB3b24ndCB3b3JrIGFz IFNTRQpldmVudCBjYW4gYmUgbmVzdGVkIG9uIHRvcCBvZiBlYWNoIG90aGVyIHNvIHRoZSBvcmln aW5hbCBpbnRlcnJ1cHRpb24Kc2l0ZSBtaWdodCBiZSBsb3N0IGF0IHNvbWUgcG9pbnQuIEluIG9y ZGVyIHRvIHJldHJpZXZlIGl0IHJlbGlhYmx5LApzdG9yZSB0aGUgY3VycmVudCB0YXNrIGluIGFu IGFkZGl0aW9uYWwgX19zc2VfZW50cnlfdGFzayBwZXJfY3B1IGFycmF5LgpUaGlzIGFycmF5IGlz IHRoZW4gdXNlZCB0byByZXRyaWV2ZSB0aGUgY3VycmVudCB0YXNrIGJhc2VkIG9uIHRoZQpoYXJ0 IElEIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBTU0UgZXZlbnQgaGFuZGxlciBpbiBhNi4KClRoYXQg YmVpbmcgc2FpZCwgdGhlIHdheSB0aGUgY3VycmVudCB0YXNrIHN0cnVjdCBpcyBzdG9yZWQgc2hv dWxkCnByb2JhYmx5IGJlIHJld29ya2VkIHRvIGZpbmQgYSBiZXR0ZXIgcmVsaWFibGUgYWx0ZXJu YXRpdmUuCgpTaW5jZSBlYWNoIGV2ZW50IChhbmQgZWFjaCBDUFUgZm9yIGxvY2FsIGV2ZW50cykg aGF2ZSB0aGVpciBvd24KY29udGV4dCBhbmQgY2FuIHByZWVtcHQgZWFjaCBvdGhlciwgYWxsb2Nh dGUgYSBzdGFjayAoYW5kIGEgc2hhZG93IHN0YWNrCmlmIG5lZWRlZCkgZm9yIGVhY2ggb2YgdGhl bSAoYW5kIGZvciBlYWNoIGNwdSBmb3IgbG9jYWwgZXZlbnRzKS4KClRoZSBTU0UgaGFuZGxlciBy dW5zIGFzIGEgc3ludGhldGljIGhhbmRsZXIgZXBpc29kZSwgYnV0IGNvbXBsZXRpb24gbXVzdApy ZXN1bWUgdGhlIGNvbnRleHQgdGhhdCB3YXMgaW50ZXJydXB0ZWQgYnkgdGhlIFNTRSBldmVudC4g IFByZXNlcnZlIHN0dmVjCmFuZCwgd2hlbiB0aGUgaHlwZXJ2aXNvciBleHRlbnNpb24gaXMgcHJl c2VudCwgaHN0YXR1cyBhY3Jvc3MgZG9fc3NlKCkgc28KdGhlIGhhbmRsZXIgZXBpc29kZSBkb2Vz IG5vdCBsZWFrIHRyYXAtdmVjdG9yIG9yIHZpcnR1YWxpemF0aW9uIHN0YXRlIGludG8KdGhlIGlu dGVycnVwdGVkIGNvbnRleHQuCgpXaGVuIGNvbXBsZXRpbmcgdGhlIGV2ZW50LCBpZiB3ZSB3ZXJl IGNvbWluZyBmcm9tIGtlcm5lbCB3aXRoIGludGVycnVwdHMKZGlzYWJsZWQsIHNpbXBseSByZXR1 cm4gdGhlcmUuIElmIGNvbWluZyBmcm9tIHVzZXJzcGFjZSBvciBrZXJuZWwgd2l0aAppbnRlcnJ1 cHRzIGVuYWJsZWQsIHNpbXVsYXRlIGFuIGludGVycnVwdCBleGNlcHRpb24gYnkgc2V0dGluZyBJ RV9TSUUgaW4KQ1NSX0lQIHRvIGFsbG93IGRlbGl2ZXJ5IG9mIHNpZ25hbHMgdG8gdXNlciB0YXNr LiBGb3IgaW5zdGFuY2UgdGhpcyBjYW4KaGFwcGVuIHdoZW4gYSBSQVMgZXZlbnQgaGFzIGJlZW4g Z2VuZXJhdGVkIGJ5IGEgdXNlciBhcHBsaWNhdGlvbiBhbmQgYQpTSUdCVVMgaGFzIGJlZW4gc2Vu dCB0byBhIHRhc2suCgpTaWduZWQtb2ZmLWJ5OiBDbMOpbWVudCBMw6lnZXIgPGNsZWdlckByaXZv c2luYy5jb20+CkNvLWRldmVsb3BlZC1ieTogWmhhbnBlbmcgWmhhbmcgPHpoYW5nemhhbnBlbmcu amFzcGVyQGJ5dGVkYW5jZS5jb20+ClNpZ25lZC1vZmYtYnk6IFpoYW5wZW5nIFpoYW5nIDx6aGFu Z3poYW5wZW5nLmphc3BlckBieXRlZGFuY2UuY29tPgotLS0KVGhhbmtzIGZvciByZXBvcnRpbmcg dGhpcy4gUGxlYXNlIGZpbmQgYSBjb3JyZWN0ZWQgcmVwbGFjZW1lbnQgZm9yIHY5IHBhdGNoCjIv NSBiZWxvdy4gSXQgZml4ZXMgdGhlIHRydW5jYXRlZCBzYmlfc3NlX2VudHJ5LlM7IHBhdGNoZXMg My81IHRocm91Z2ggNS81CmFwcGx5IHVuY2hhbmdlZC4KCkkgYW0gc3RpbGwgd29ya2luZyB0aHJv dWdoIHRoZSBmaW5hbCByZXZpZXcgYW5kIHRlc3RpbmcgZm9yIHYxMC4gU29ycnkgZm9yCmtlZXBp bmcgeW91IHdhaXRpbmcuCgogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaCAgICAgICAgIHwg IDE0ICstCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Njcy5oICAgICAgICAgfCAgIDcgKwogYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9zc2UuaCAgICAgICAgIHwgIDQ3ICsrKysrKysKIGFyY2gvcmlz Y3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggICB8ICAxNCArKwogYXJjaC9yaXNjdi9pbmNsdWRl L2FzbS90aHJlYWRfaW5mby5oIHwgICAxICsKIGFyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlICAg ICAgICAgICB8ICAgMSArCiBhcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jICAgICAgfCAg MTQgKysKIGFyY2gvcmlzY3Yva2VybmVsL3NiaV9zc2UuYyAgICAgICAgICB8IDE2MiArKysrKysr KysrKysrKysrKysrKysrCiBhcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlX2VudHJ5LlMgICAgfCAy MDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDQ1NyBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yv aW5jbHVkZS9hc20vc3NlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9z Ymlfc3NlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlX2Vu dHJ5LlMKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oIGIvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9hc20uaAppbmRleCBlOWU4YmE4M2U2MzIuLjUwYmFjZTAwMDUzYyAx MDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaAorKysgYi9hcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL2FzbS5oCkBAIC05MCwxNiArOTAsMjQgQEAKIC5lbmRtCiAKICNpZmRlZiBD T05GSUdfU01QCi0ubWFjcm8gYXNtX3Blcl9jcHUgZHN0IHN5bSB0bXAKLQlsdyAgICBcdG1wLCBU QVNLX1RJX0NQVV9OVU0odHApCi0Jc2xsaSAgXHRtcCwgXHRtcCwgUklTQ1ZfTEdQVFIKKy5tYWNy byBhc21fcGVyX2NwdV93aXRoX2NwdSBkc3Qgc3ltIHRtcCBjcHUKKwlzbGxpICBcdG1wLCBcY3B1 LCBSSVNDVl9MR1BUUgogCWxhICAgIFxkc3QsIF9fcGVyX2NwdV9vZmZzZXQKIAlhZGQgICBcZHN0 LCBcZHN0LCBcdG1wCiAJUkVHX0wgXHRtcCwgMChcZHN0KQogCWxhICAgIFxkc3QsIFxzeW0KIAlh ZGQgICBcZHN0LCBcZHN0LCBcdG1wCiAuZW5kbQorCisubWFjcm8gYXNtX3Blcl9jcHUgZHN0IHN5 bSB0bXAKKwlsdyBcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApCisJYXNtX3Blcl9jcHVfd2l0aF9j cHUgXGRzdCBcc3ltIFx0bXAgXHRtcAorLmVuZG0KICNlbHNlIC8qIENPTkZJR19TTVAgKi8KKy5t YWNybyBhc21fcGVyX2NwdV93aXRoX2NwdSBkc3Qgc3ltIHRtcCBjcHUKKwlsYSAgICBcZHN0LCBc c3ltCisuZW5kbQorCiAubWFjcm8gYXNtX3Blcl9jcHUgZHN0IHN5bSB0bXAKIAlsYSAgICBcZHN0 LCBcc3ltCiAuZW5kbQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zY3MuaCBi L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2NzLmgKaW5kZXggMDIzYTQxMmZlMzhkLi4wZDcwYTM1 YmMwMWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2NzLmgKKysrIGIvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9zY3MuaApAQCAtMTcsNiArMTcsMTEgQEAKIAlsb2FkX3Blcl9j cHUgZ3AsIGlycV9zaGFkb3dfY2FsbF9zdGFja19wdHIsIFx0bXAKIC5lbmRtCiAKKy8qIExvYWQg dGhlIHBlci1DUFUgSVJRIHNoYWRvdyBjYWxsIHN0YWNrIHRvIGdwLiAqLworLm1hY3JvIHNjc19s b2FkX3NzZV9zdGFjayByZWdfZXZ0CisJUkVHX0wgZ3AsIFNTRV9SRUdfRVZUX1NIQURPV19TVEFD SyhccmVnX2V2dCkKKy5lbmRtCisKIC8qIExvYWQgdGFza19zY3Nfc3AoY3VycmVudCkgdG8gZ3Au ICovCiAubWFjcm8gc2NzX2xvYWRfY3VycmVudAogCVJFR19MCWdwLCBUQVNLX1RJX1NDU19TUCh0 cCkKQEAgLTQwLDYgKzQ1LDggQEAKIC5lbmRtCiAubWFjcm8gc2NzX2xvYWRfaXJxX3N0YWNrIHRt cAogLmVuZG0KKy5tYWNybyBzY3NfbG9hZF9zc2Vfc3RhY2sgcmVnX2V2dAorLmVuZG0KIC5tYWNy byBzY3NfbG9hZF9jdXJyZW50CiAuZW5kbQogLm1hY3JvIHNjc19sb2FkX2N1cnJlbnRfaWZfdGFz a19jaGFuZ2VkIHByZXYKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3NlLmgg Yi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uZDNjZThjMmI1MjIxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNj di9pbmNsdWRlL2FzbS9zc2UuaApAQCAtMCwwICsxLDQ3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IFJpdm9z IEluYy4KKyAqLworI2lmbmRlZiBfX0FTTV9TU0VfSAorI2RlZmluZSBfX0FTTV9TU0VfSAorCisj aW5jbHVkZSA8YXNtL3NiaS5oPgorCisjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9TU0UKKworc3Ry dWN0IHNzZV9ldmVudF9pbnRlcnJ1cHRlZF9zdGF0ZSB7CisJdW5zaWduZWQgbG9uZyBhNjsKKwl1 bnNpZ25lZCBsb25nIGE3OworfTsKKworc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgeworCXZv aWQgKnN0YWNrOworCXZvaWQgKnNoYWRvd19zdGFjazsKKwl1bnNpZ25lZCBsb25nIHRtcDsKKwlz dHJ1Y3Qgc3NlX2V2ZW50X2ludGVycnVwdGVkX3N0YXRlIGludGVycnVwdGVkOworCXVuc2lnbmVk IGxvbmcgaW50ZXJydXB0ZWRfcGh5czsKKwl1MzIgZXZ0X2lkOworCXVuc2lnbmVkIGludCBoYXJ0 X2lkOworCXVuc2lnbmVkIGludCBjcHVfaWQ7Cit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgc3Nl X2V2ZW50X2lzX2dsb2JhbCh1MzIgZXZ0KQoreworCXJldHVybiAhIShldnQgJiBTQklfU1NFX0VW RU5UX0dMT0JBTCk7Cit9CisKK3ZvaWQgYXJjaF9zc2VfZXZlbnRfdXBkYXRlX2NwdShzdHJ1Y3Qg c3NlX2V2ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQsIGludCBjcHUpOworaW50IGFyY2hfc3NlX2lu aXRfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCB1MzIgZXZ0X2lk LAorCQkJaW50IGNwdSk7Cit2b2lkIGFyY2hfc3NlX2ZyZWVfZXZlbnQoc3RydWN0IHNzZV9ldmVu dF9hcmNoX2RhdGEgKmFyY2hfZXZ0KTsKK2ludCBhcmNoX3NzZV9yZWdpc3Rlcl9ldmVudChzdHJ1 Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQpOworCit2b2lkIHNzZV9oYW5kbGVfZXZl bnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LAorCQkgICAgICBzdHJ1Y3Qg cHRfcmVncyAqcmVncyk7Cithc21saW5rYWdlIHZvaWQgaGFuZGxlX3NzZSh2b2lkKTsKK2FzbWxp bmthZ2Ugdm9pZCBkb19zc2Uoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LAor CQkgICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZyk7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL3N3aXRjaF90by5oCmluZGV4IDBlNzFlYjgyZjkyMC4uZGVkOGRjNDQwYjEyIDEw MDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oCisrKyBiL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTg4LDYgKzg4LDE5IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBfX3N3aXRjaF90b19lbnZjZmcoc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KQog CQkJOjogInIiIChuZXh0LT50aHJlYWQuZW52Y2ZnKSA6ICJtZW1vcnkiKTsKIH0KIAorI2lmZGVm IENPTkZJR19SSVNDVl9TQklfU1NFCitERUNMQVJFX1BFUl9DUFUoc3RydWN0IHRhc2tfc3RydWN0 ICosIF9fc2JpX3NzZV9lbnRyeV90YXNrKTsKKworc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNo X3NiaV9zc2VfZW50cnlfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCit7CisJX190aGlz X2NwdV93cml0ZShfX3NiaV9zc2VfZW50cnlfdGFzaywgbmV4dCk7Cit9CisjZWxzZQorc3RhdGlj IGlubGluZSB2b2lkIF9fc3dpdGNoX3NiaV9zc2VfZW50cnlfdGFzayhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKm5leHQpCit7Cit9CisjZW5kaWYKKwogZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19z d2l0Y2hfdG8oc3RydWN0IHRhc2tfc3RydWN0ICosCiAJCQkJICAgICAgIHN0cnVjdCB0YXNrX3N0 cnVjdCAqKTsKIApAQCAtMTIyLDYgKzEzNSw3IEBAIGRvIHsJCQkJCQkJXAogCWlmIChzd2l0Y2hf dG9fc2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKQlcCiAJCWxvY2FsX2ZsdXNoX2ljYWNoZV9h bGwoKTsJCVwKIAlfX3N3aXRjaF90b19lbnZjZmcoX19uZXh0KTsJCQlcCisJX19zd2l0Y2hfc2Jp X3NzZV9lbnRyeV90YXNrKF9fbmV4dCk7CQlcCiAJKChsYXN0KSA9IF9fc3dpdGNoX3RvKF9fcHJl diwgX19uZXh0KSk7CQlcCiB9IHdoaWxlICgwKQogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9p bmZvLmgKaW5kZXggNTUwMTlmZGZhOWVjLi5kMTRiNDU2MTBjNzMgMTAwNjQ0Ci0tLSBhL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAorKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL3RocmVhZF9pbmZvLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNkZWZpbmUgT1ZFUkZMT1dfU1RB Q0tfU0laRSAgICAgU1pfNEsKIAogI2RlZmluZSBJUlFfU1RBQ0tfU0laRQkJVEhSRUFEX1NJWkUK KyNkZWZpbmUgU1NFX1NUQUNLX1NJWkUJCVRIUkVBRF9TSVpFCiAKICNpZm5kZWYgX19BU1NFTUJM RVJfXwogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZSBiL2FyY2gvcmlz Y3Yva2VybmVsL01ha2VmaWxlCmluZGV4IGNhYmI5OWNhZGZiNi4uOGQ0YWVkNjM2OGE2IDEwMDY0 NAotLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZQorKysgYi9hcmNoL3Jpc2N2L2tlcm5l bC9NYWtlZmlsZQpAQCAtMTAxLDYgKzEwMSw3IEBAIG9iai0kKENPTkZJR19EWU5BTUlDX0ZUUkFD RSkJKz0gbWNvdW50LWR5bi5vCiBvYmotJChDT05GSUdfUEVSRl9FVkVOVFMpCSs9IHBlcmZfY2Fs bGNoYWluLm8KIG9iai0kKENPTkZJR19IQVZFX1BFUkZfUkVHUykJKz0gcGVyZl9yZWdzLm8KIG9i ai0kKENPTkZJR19SSVNDVl9TQkkpCQkrPSBzYmkubyBzYmlfZWNhbGwubworb2JqLSQoQ09ORklH X1JJU0NWX1NCSV9TU0UpCSs9IHNiaV9zc2UubyBzYmlfc3NlX2VudHJ5Lm8KIGlmZXEgKCQoQ09O RklHX1JJU0NWX1NCSSksIHkpCiBvYmotJChDT05GSUdfU01QKQkJKz0gc2JpLWlwaS5vCiBvYmot JChDT05GSUdfU01QKSArPSBjcHVfb3BzX3NiaS5vCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tl cm5lbC9hc20tb2Zmc2V0cy5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRl eCBhZjgyNzQ0OGE2MDkuLjdjYzAzZjVhMDY3MyAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rZXJu ZWwvYXNtLW9mZnNldHMuYworKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jCkBA IC0xNSw2ICsxNSw4IEBACiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgogI2luY2x1ZGUgPGFzbS9j cHVfb3BzX3NiaS5oPgogI2luY2x1ZGUgPGFzbS9zdGFja3RyYWNlLmg+CisjaW5jbHVkZSA8YXNt L3NiaS5oPgorI2luY2x1ZGUgPGFzbS9zc2UuaD4KICNpbmNsdWRlIDxhc20vc3VzcGVuZC5oPgog CiB2b2lkIGFzbV9vZmZzZXRzKHZvaWQpOwpAQCAtNTMzLDYgKzUzNSwxOCBAQCB2b2lkIGFzbV9v ZmZzZXRzKHZvaWQpCiAJREVGSU5FKEZSRUdTX0E2LAkgICAgb2Zmc2V0b2Yoc3RydWN0IF9fYXJj aF9mdHJhY2VfcmVncywgYTYpKTsKIAlERUZJTkUoRlJFR1NfQTcsCSAgICBvZmZzZXRvZihzdHJ1 Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCBhNykpOwogI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfUklT Q1ZfU0JJX1NTRQorCU9GRlNFVChTU0VfUkVHX0VWVF9TVEFDSywgc3NlX2V2ZW50X2FyY2hfZGF0 YSwgc3RhY2spOworCU9GRlNFVChTU0VfUkVHX0VWVF9TSEFET1dfU1RBQ0ssIHNzZV9ldmVudF9h cmNoX2RhdGEsIHNoYWRvd19zdGFjayk7CisJT0ZGU0VUKFNTRV9SRUdfRVZUX1RNUCwgc3NlX2V2 ZW50X2FyY2hfZGF0YSwgdG1wKTsKKwlPRkZTRVQoU1NFX1JFR19IQVJUX0lELCBzc2VfZXZlbnRf YXJjaF9kYXRhLCBoYXJ0X2lkKTsKKwlPRkZTRVQoU1NFX1JFR19DUFVfSUQsIHNzZV9ldmVudF9h cmNoX2RhdGEsIGNwdV9pZCk7CisKKwlERUZJTkUoU0JJX0VYVF9TU0UsIFNCSV9FWFRfU1NFKTsK KwlERUZJTkUoU0JJX1NTRV9FVkVOVF9DT01QTEVURSwgU0JJX1NTRV9FVkVOVF9DT01QTEVURSk7 CisJREVGSU5FKEFTTV9OUl9DUFVTLCBDT05GSUdfTlJfQ1BVUyk7CisjZW5kaWYKICNpZmRlZiBD T05GSUdfUklTQ1ZfU0JJCiAJREVGSU5FKFNCSV9FWFRfRldGVCwgU0JJX0VYVF9GV0ZUKTsKIAlE RUZJTkUoU0JJX0VYVF9GV0ZUX1NFVCwgU0JJX0VYVF9GV0ZUX1NFVCk7CmRpZmYgLS1naXQgYS9h cmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMzBhZTlmZjc3YzkKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMKQEAgLTAsMCArMSwx NjIgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCisvKgor ICogQ29weXJpZ2h0IChDKSAyMDI1IFJpdm9zIEluYy4KKyAqLworI2luY2x1ZGUgPGxpbnV4L25t aS5oPgorI2luY2x1ZGUgPGxpbnV4L3Njcy5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+ CisjaW5jbHVkZSA8bGludXgvcGVyY3B1LWRlZnMuaD4KKworI2luY2x1ZGUgPGFzbS9hc20tcHJv dG90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9zd2l0Y2hfdG8uaD4KKyNpbmNsdWRlIDxhc20vaXJx X3N0YWNrLmg+CisjaW5jbHVkZSA8YXNtL3NiaS5oPgorI2luY2x1ZGUgPGFzbS9zc2UuaD4KKwor REVGSU5FX1BFUl9DUFUoc3RydWN0IHRhc2tfc3RydWN0ICosIF9fc2JpX3NzZV9lbnRyeV90YXNr KTsKKwordm9pZCBfX3dlYWsgc3NlX2hhbmRsZV9ldmVudChzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hf ZGF0YSAqYXJjaF9ldnQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworfQorCit2b2lkIGRvX3Nz ZShzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQsIHN0cnVjdCBwdF9yZWdzICpy ZWdzKQoreworCW5taV9lbnRlcigpOworCisJLyogUmV0cmlldmUgbWlzc2luZyBHUFJzIGZyb20g U0JJICovCisJc2JpX2VjYWxsKFNCSV9FWFRfU1NFLCBTQklfU1NFX0VWRU5UX0FUVFJfUkVBRCwg YXJjaF9ldnQtPmV2dF9pZCwKKwkJICBTQklfU1NFX0FUVFJfSU5URVJSVVBURURfQTYsCisJCSAg KFNCSV9TU0VfQVRUUl9JTlRFUlJVUFRFRF9BNyAtIFNCSV9TU0VfQVRUUl9JTlRFUlJVUFRFRF9B NikgKyAxLAorCQkgIGFyY2hfZXZ0LT5pbnRlcnJ1cHRlZF9waHlzLCAwLCAwKTsKKworCW1lbWNw eSgmcmVncy0+YTYsICZhcmNoX2V2dC0+aW50ZXJydXB0ZWQsIHNpemVvZihhcmNoX2V2dC0+aW50 ZXJydXB0ZWQpKTsKKworCXNzZV9oYW5kbGVfZXZlbnQoYXJjaF9ldnQsIHJlZ3MpOworCisJbm1p X2V4aXQoKTsKK30KKworc3RhdGljIHZvaWQgKmFsbG9jX3RvX3N0YWNrX3BvaW50ZXIodm9pZCAq YWxsb2MpCit7CisJcmV0dXJuIGFsbG9jID8gYWxsb2MgKyBTU0VfU1RBQ0tfU0laRSA6IE5VTEw7 Cit9CisKK3N0YXRpYyB2b2lkICpzdGFja19wb2ludGVyX3RvX2FsbG9jKHZvaWQgKnN0YWNrKQor eworCXJldHVybiBzdGFjayAtIFNTRV9TVEFDS19TSVpFOworfQorCisjaWZkZWYgQ09ORklHX1ZN QVBfU1RBQ0sKK3N0YXRpYyB2b2lkICpzc2Vfc3RhY2tfYWxsb2ModW5zaWduZWQgaW50IGNwdSkK K3sKKwl2b2lkICpzdGFjayA9IGFyY2hfYWxsb2Nfdm1hcF9zdGFjayhTU0VfU1RBQ0tfU0laRSwg Y3B1X3RvX25vZGUoY3B1KSk7CisKKwlyZXR1cm4gYWxsb2NfdG9fc3RhY2tfcG9pbnRlcihzdGFj ayk7Cit9CisKK3N0YXRpYyB2b2lkIHNzZV9zdGFja19mcmVlKHZvaWQgKnN0YWNrKQoreworCXZm cmVlKHN0YWNrX3BvaW50ZXJfdG9fYWxsb2Moc3RhY2spKTsKK30KKworc3RhdGljIHZvaWQgYXJj aF9zc2Vfc3RhY2tfY3B1X3N5bmMoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0 KQoreworCXZvaWQgKnBfc3RhY2sgPSBhcmNoX2V2dC0+c3RhY2s7CisJdW5zaWduZWQgbG9uZyBz dGFjayA9ICh1bnNpZ25lZCBsb25nKXN0YWNrX3BvaW50ZXJfdG9fYWxsb2MocF9zdGFjayk7CisJ dW5zaWduZWQgbG9uZyBzdGFja19lbmQgPSBzdGFjayArIFNTRV9TVEFDS19TSVpFOworCisJLyoK KwkgKiBGbHVzaCB0aGUgdGxiIHRvIGF2b2lkIHRha2luZyBhbnkgZXhjZXB0aW9uIHdoZW4gYWNj ZXNzaW5nIHRoZQorCSAqIHZtYXBwZWQgc3RhY2sgaW5zaWRlIHRoZSBTU0UgaGFuZGxlcgorCSAq LworCWlmIChzc2VfZXZlbnRfaXNfZ2xvYmFsKGFyY2hfZXZ0LT5ldnRfaWQpKQorCQlmbHVzaF90 bGJfa2VybmVsX3JhbmdlKHN0YWNrLCBzdGFja19lbmQpOworCWVsc2UKKwkJbG9jYWxfZmx1c2hf dGxiX2tlcm5lbF9yYW5nZShzdGFjaywgc3RhY2tfZW5kKTsKK30KKyNlbHNlIC8qIENPTkZJR19W TUFQX1NUQUNLICovCitzdGF0aWMgdm9pZCAqc3NlX3N0YWNrX2FsbG9jKHVuc2lnbmVkIGludCBj cHUpCit7CisJdm9pZCAqc3RhY2sgPSBrbWFsbG9jKFNTRV9TVEFDS19TSVpFLCBHRlBfS0VSTkVM KTsKKworCXJldHVybiBhbGxvY190b19zdGFja19wb2ludGVyKHN0YWNrKTsKK30KKworc3RhdGlj IHZvaWQgc3NlX3N0YWNrX2ZyZWUodm9pZCAqc3RhY2spCit7CisJa2ZyZWUoc3RhY2tfcG9pbnRl cl90b19hbGxvYyhzdGFjaykpOworfQorCitzdGF0aWMgdm9pZCBhcmNoX3NzZV9zdGFja19jcHVf c3luYyhzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQpIHt9CisjZW5kaWYgLyog Q09ORklHX1ZNQVBfU1RBQ0sgKi8KKworc3RhdGljIGludCBzc2VfaW5pdF9zY3MoaW50IGNwdSwg c3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0KQoreworCXZvaWQgKnN0YWNrOwor CisJaWYgKCFzY3NfaXNfZW5hYmxlZCgpKQorCQlyZXR1cm4gMDsKKworCXN0YWNrID0gc2NzX2Fs bG9jKGNwdV90b19ub2RlKGNwdSkpOworCWlmICghc3RhY2spCisJCXJldHVybiAtRU5PTUVNOwor CisJYXJjaF9ldnQtPnNoYWRvd19zdGFjayA9IHN0YWNrOworCisJcmV0dXJuIDA7Cit9CisKK3Zv aWQgYXJjaF9zc2VfZXZlbnRfdXBkYXRlX2NwdShzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0YSAq YXJjaF9ldnQsIGludCBjcHUpCit7CisJYXJjaF9ldnQtPmNwdV9pZCA9IGNwdTsKKwlhcmNoX2V2 dC0+aGFydF9pZCA9IGNwdWlkX3RvX2hhcnRpZF9tYXAoY3B1KTsKK30KKworaW50IGFyY2hfc3Nl X2luaXRfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCB1MzIgZXZ0 X2lkLAorCQkJaW50IGNwdSkKK3sKKwl2b2lkICpzdGFjazsKKworCWFyY2hfZXZ0LT5ldnRfaWQg PSBldnRfaWQ7CisJc3RhY2sgPSBzc2Vfc3RhY2tfYWxsb2MoY3B1KTsKKwlpZiAoIXN0YWNrKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWFyY2hfZXZ0LT5zdGFjayA9IHN0YWNrOworCisJaWYgKHNz ZV9pbml0X3NjcyhjcHUsIGFyY2hfZXZ0KSkgeworCQlzc2Vfc3RhY2tfZnJlZShhcmNoX2V2dC0+ c3RhY2spOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpZiAoc3NlX2V2ZW50X2lzX2dsb2Jh bChldnRfaWQpKSB7CisJCWFyY2hfZXZ0LT5pbnRlcnJ1cHRlZF9waHlzID0KKwkJCQkJdmlydF90 b19waHlzKCZhcmNoX2V2dC0+aW50ZXJydXB0ZWQpOworCX0gZWxzZSB7CisJCWFyY2hfZXZ0LT5p bnRlcnJ1cHRlZF9waHlzID0KKwkJCQlwZXJfY3B1X3B0cl90b19waHlzKCZhcmNoX2V2dC0+aW50 ZXJydXB0ZWQpOworCX0KKworCWFyY2hfc3NlX2V2ZW50X3VwZGF0ZV9jcHUoYXJjaF9ldnQsIGNw dSk7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBhcmNoX3NzZV9mcmVlX2V2ZW50KHN0cnVjdCBz c2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCkKK3sKKwlzY3NfZnJlZShhcmNoX2V2dC0+c2hh ZG93X3N0YWNrKTsKKwlzc2Vfc3RhY2tfZnJlZShhcmNoX2V2dC0+c3RhY2spOworfQorCitpbnQg YXJjaF9zc2VfcmVnaXN0ZXJfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hf ZXZ0KQoreworCXN0cnVjdCBzYmlyZXQgc3JldDsKKworCWFyY2hfc3NlX3N0YWNrX2NwdV9zeW5j KGFyY2hfZXZ0KTsKKworCXNyZXQgPSBzYmlfZWNhbGwoU0JJX0VYVF9TU0UsIFNCSV9TU0VfRVZF TlRfUkVHSVNURVIsIGFyY2hfZXZ0LT5ldnRfaWQsCisJCQkgKHVuc2lnbmVkIGxvbmcpaGFuZGxl X3NzZSwgKHVuc2lnbmVkIGxvbmcpYXJjaF9ldnQsIDAsCisJCQkgMCwgMCk7CisKKwlyZXR1cm4g c2JpX2Vycl9tYXBfbGludXhfZXJybm8oc3JldC5lcnJvcik7Cit9CmRpZmYgLS1naXQgYS9hcmNo L3Jpc2N2L2tlcm5lbC9zYmlfc3NlX2VudHJ5LlMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3Nl X2VudHJ5LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNWMxY2I1 NDQzYjYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlX2VudHJ5 LlMKQEAgLTAsMCArMSwyMDAgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9yLWxhdGVyICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDI1IFJpdm9zIEluYy4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKwor I2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS1tYWNyb3MuaD4KKyNpbmNsdWRlIDxhc20vYXNtLmg+ CisjaW5jbHVkZSA8YXNtL2Nzci5oPgorI2luY2x1ZGUgPGFzbS9od2NhcC5oPgorI2luY2x1ZGUg PGFzbS9zY3MuaD4KKworLyogV2hlbiBlbnRlcmluZyBoYW5kbGVfc3NlLCB0aGUgZm9sbG93aW5n IHJlZ2lzdGVycyBhcmUgc2V0OgorICogYTY6IGNvbnRhaW5zIHRoZSBoYXJ0aWQKKyAqIGE3OiBj b250YWlucyBhIHNzZV9ldmVudF9hcmNoX2RhdGEgc3RydWN0IHBvaW50ZXIKKyAqLworU1lNX0NP REVfU1RBUlQoaGFuZGxlX3NzZSkKKwkvKiBTYXZlIHN0YWNrIHRlbXBvcmFyaWx5ICovCisJUkVH X1Mgc3AsIFNTRV9SRUdfRVZUX1RNUChhNykKKwkvKiBTZXQgZW50cnkgc3RhY2sgKi8KKwlSRUdf TCBzcCwgU1NFX1JFR19FVlRfU1RBQ0soYTcpCisKKwlhZGRpIHNwLCBzcCwgLShQVF9TSVpFX09O X1NUQUNLKQorCVJFR19TIHJhLCBQVF9SQShzcCkKKwlSRUdfUyBzMCwgUFRfUzAoc3ApCisJUkVH X1MgczEsIFBUX1MxKHNwKQorCVJFR19TIHMyLCBQVF9TMihzcCkKKwlSRUdfUyBzMywgUFRfUzMo c3ApCisJUkVHX1MgczQsIFBUX1M0KHNwKQorCVJFR19TIHM1LCBQVF9TNShzcCkKKwlSRUdfUyBz NiwgUFRfUzYoc3ApCisJUkVHX1MgczcsIFBUX1M3KHNwKQorCVJFR19TIHM4LCBQVF9TOChzcCkK KwlSRUdfUyBzOSwgUFRfUzkoc3ApCisJUkVHX1MgczEwLCBQVF9TMTAoc3ApCisJUkVHX1MgczEx LCBQVF9TMTEoc3ApCisJUkVHX1MgdHAsIFBUX1RQKHNwKQorCVJFR19TIHQwLCBQVF9UMChzcCkK KwlSRUdfUyB0MSwgUFRfVDEoc3ApCisJUkVHX1MgdDIsIFBUX1QyKHNwKQorCVJFR19TIHQzLCBQ VF9UMyhzcCkKKwlSRUdfUyB0NCwgUFRfVDQoc3ApCisJUkVHX1MgdDUsIFBUX1Q1KHNwKQorCVJF R19TIHQ2LCBQVF9UNihzcCkKKwlSRUdfUyBncCwgUFRfR1Aoc3ApCisJUkVHX1MgYTAsIFBUX0Ew KHNwKQorCVJFR19TIGExLCBQVF9BMShzcCkKKwlSRUdfUyBhMiwgUFRfQTIoc3ApCisJUkVHX1Mg YTMsIFBUX0EzKHNwKQorCVJFR19TIGE0LCBQVF9BNChzcCkKKwlSRUdfUyBhNSwgUFRfQTUoc3Ap CisKKwkvKiBSZXRyaWV2ZSBlbnRyeSBzcCAqLworCVJFR19MIGE0LCBTU0VfUkVHX0VWVF9UTVAo YTcpCisJLyogU2F2ZSBDU1JzICovCisJY3NyciBhMCwgQ1NSX0VQQworCWNzcnIgYTEsIENTUl9T U1RBVFVTCisJY3NyciBhMiwgQ1NSX1NUVkFMCisJY3NyciBhMywgQ1NSX1NDQVVTRQorCisJUkVH X1MgYTAsIFBUX0VQQyhzcCkKKwlSRUdfUyBhMSwgUFRfU1RBVFVTKHNwKQorCVJFR19TIGEyLCBQ VF9CQURBRERSKHNwKQorCVJFR19TIGEzLCBQVF9DQVVTRShzcCkKKwlSRUdfUyBhNCwgUFRfU1Ao c3ApCisKKwkvKiBEaXNhYmxlIHVzZXIgbWVtb3J5IGFjY2VzcyBhbmQgZmxvYXRpbmcvdmVjdG9y IGNvbXB1dGluZyAqLworCWxpIHQwLCBTUl9TVU0gfCBTUl9GU19WUworCWNzcmMgQ1NSX1NUQVRV UywgdDAKKworCWxvYWRfZ2xvYmFsX3BvaW50ZXIKKwlzY3NfbG9hZF9zc2Vfc3RhY2sgYTcKKwor I2lmZGVmIENPTkZJR19TTVAKKwlsdyB0NCwgU1NFX1JFR19IQVJUX0lEKGE3KQorCWx3IHQzLCBT U0VfUkVHX0NQVV9JRChhNykKKworCWJuZSB0NCwgYTYsIC5MZmluZF9oYXJ0X2lkX3Nsb3dwYXRo CisKKy5MY3B1X2lkX2ZvdW5kOgorI2Vsc2UKKwltdiB0MywgemVybworI2VuZGlmCisKKwlhc21f cGVyX2NwdV93aXRoX2NwdSB0MiBfX3NiaV9zc2VfZW50cnlfdGFzayB0MSB0MworCVJFR19MIHRw LCAwKHQyKQorCisJbXYgYTEsIHNwIC8qIHB0X3JlZ3Mgb24gc3RhY2sgKi8KKworCS8qCisJICog UnVuIHRoZSBTU0UgaGFuZGxlciB3aXRoIHRoZSBub3JtYWwgZXhjZXB0aW9uIHZlY3RvciwgYnV0 IHJlc3RvcmUgdGhlCisJICogaW50ZXJydXB0ZWQgc3R2ZWMgYmVmb3JlIGNvbXBsZXRpbmcgdGhl IGV2ZW50LiBTU0UgY2FuIGFycml2ZSB3aGlsZQorCSAqIHRoZSBrZXJuZWwgaXMgdXNpbmcgYSB0 ZW1wb3JhcnkgdHJhcCB2ZWN0b3IgaW4gYSBzZW5zaXRpdmUgZW50cnkgcGF0aC4KKwkgKi8KKwlj c3JyIHMzLCBDU1JfU1RWRUMKKwlsYSB0MCwgaGFuZGxlX2V4Y2VwdGlvbgorCWNzcncgQ1NSX1NU VkVDLCB0MAorCisJLyoKKwkgKiBQcmVzZXJ2ZSB0aGUgZnVsbCBIUy1tb2RlIHZpcnR1YWxpemF0 aW9uIHN0YXRlIGFjcm9zcyB0aGUgaGFuZGxlci4KKwkgKiBoc3RhdHVzIGlzIGxpdmUgc3VwZXJ2 aXNvciBzdGF0ZSByYXRoZXIgdGhhbiBhbiBTU0UgaW50ZXJydXB0ZWQKKwkgKiBhdHRyaWJ1dGUs IGFuZCBPcGVuU0JJIGNvbnN1bWVzIGhzdGF0dXMuU1BWIGR1cmluZyBldmVudCBjb21wbGV0aW9u LgorCSAqIFNhdmluZyB0aGUgd2hvbGUgQ1NSIGtlZXBzIHRoZSBoYW5kbGVyIGVwaXNvZGUgdHJh bnNwYXJlbnQgdG8gS1ZNIGFuZAorCSAqIGF2b2lkcyBoYXZpbmcgdG8gaW5mZXIgd2hpY2ggaHN0 YXR1cyBiaXRzIG1heSBtYXR0ZXIgdG8gYSBndWVzdCByZXN1bWUuCisJICovCisJQUxURVJOQVRJ VkUoIm5vcCIsICJjc3JyIHM1LCBoc3RhdHVzIiwgMCwgUklTQ1ZfSVNBX0VYVF9oLCAxKQorCisJ LyoKKwkgKiBTYXZlIHNzY3JhdGNoIGZvciByZXN0b3JhdGlvbiBzaW5jZSB3ZSBtaWdodCBoYXZl IGludGVycnVwdGVkIHRoZQorCSAqIGtlcm5lbCBpbiBlYXJseSBleGNlcHRpb24gcGF0aCBhbmQg dGh1cywgd2UgZG9uJ3Qga25vdyB0aGUgY29udGVudCBvZgorCSAqIHNzY3JhdGNoLgorCSAqLwor CWNzcnJ3IHM0LCBDU1JfU1NDUkFUQ0gsIHgwCisKKwltdiBhMCwgYTcKKworCWNhbGwgZG9fc3Nl CisKKwljc3J3IENTUl9TU0NSQVRDSCwgczQKKwlBTFRFUk5BVElWRSgibm9wIiwgImNzcncgaHN0 YXR1cywgczUiLCAwLCBSSVNDVl9JU0FfRVhUX2gsIDEpCisJY3NydyBDU1JfU1RWRUMsIHMzCisK KwlSRUdfTCBhMCwgUFRfU1RBVFVTKHNwKQorCVJFR19MIGExLCBQVF9FUEMoc3ApCisJUkVHX0wg YTIsIFBUX0JBREFERFIoc3ApCisJUkVHX0wgYTMsIFBUX0NBVVNFKHNwKQorCWNzcncgQ1NSX1NT VEFUVVMsIGEwCisJY3NydyBDU1JfRVBDLCBhMQorCWNzcncgQ1NSX1NUVkFMLCBhMgorCWNzcncg Q1NSX1NDQVVTRSwgYTMKKworCVJFR19MIHJhLCBQVF9SQShzcCkKKwlSRUdfTCBzMCwgUFRfUzAo c3ApCisJUkVHX0wgczEsIFBUX1MxKHNwKQorCVJFR19MIHMyLCBQVF9TMihzcCkKKwlSRUdfTCBz MywgUFRfUzMoc3ApCisJUkVHX0wgczQsIFBUX1M0KHNwKQorCVJFR19MIHM1LCBQVF9TNShzcCkK KwlSRUdfTCBzNiwgUFRfUzYoc3ApCisJUkVHX0wgczcsIFBUX1M3KHNwKQorCVJFR19MIHM4LCBQ VF9TOChzcCkKKwlSRUdfTCBzOSwgUFRfUzkoc3ApCisJUkVHX0wgczEwLCBQVF9TMTAoc3ApCisJ UkVHX0wgczExLCBQVF9TMTEoc3ApCisJUkVHX0wgdHAsIFBUX1RQKHNwKQorCVJFR19MIHQwLCBQ VF9UMChzcCkKKwlSRUdfTCB0MSwgUFRfVDEoc3ApCisJUkVHX0wgdDIsIFBUX1QyKHNwKQorCVJF R19MIHQzLCBQVF9UMyhzcCkKKwlSRUdfTCB0NCwgUFRfVDQoc3ApCisJUkVHX0wgdDUsIFBUX1Q1 KHNwKQorCVJFR19MIHQ2LCBQVF9UNihzcCkKKwlSRUdfTCBncCwgUFRfR1Aoc3ApCisJUkVHX0wg YTAsIFBUX0EwKHNwKQorCVJFR19MIGExLCBQVF9BMShzcCkKKwlSRUdfTCBhMiwgUFRfQTIoc3Ap CisJUkVHX0wgYTMsIFBUX0EzKHNwKQorCVJFR19MIGE0LCBQVF9BNChzcCkKKwlSRUdfTCBhNSwg UFRfQTUoc3ApCisKKwlSRUdfTCBzcCwgUFRfU1Aoc3ApCisKKwlsaSBhNywgU0JJX0VYVF9TU0UK KwlsaSBhNiwgU0JJX1NTRV9FVkVOVF9DT01QTEVURQorCWVjYWxsCisKKyNpZmRlZiBDT05GSUdf U01QCisuTGZpbmRfaGFydF9pZF9zbG93cGF0aDoKKworCS8qIFJlc3RvcmUgY3VycmVudCB0YXNr IHN0cnVjdCBmcm9tIF9fc2JpX3NzZV9lbnRyeV90YXNrICovCisJbGkgdDEsIEFTTV9OUl9DUFVT CisJLyogU2xvd3BhdGggdG8gZmluZCB0aGUgQ1BVIGlkIGFzc29jaWF0ZWQgdG8gdGhlIGhhcnQg aWQgKi8KKwlsYSB0MCwgX19jcHVpZF90b19oYXJ0aWRfbWFwCisKKy5MaGFydF9pZF9sb29wOgor CVJFR19MIHQyLCAwKHQwKQorCWJlcSB0MiwgYTYsIC5MY3B1X2lkX2ZvdW5kCisKKwkvKiBJbmNy ZW1lbnQgcG9pbnRlciBhbmQgQ1BVIG51bWJlciAqLworCWFkZGkgdDMsIHQzLCAxCisJYWRkaSB0 MCwgdDAsIFJJU0NWX1NaUFRSCisJYmx0dSB0MywgdDEsIC5MaGFydF9pZF9sb29wCisKKwkvKgor CSAqIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBzaW5jZSB3ZSBleHBlY3QgdGhlIGhhcnRfaWQg dG8gbWF0Y2ggb25lCisJICogb2Ygb3VyIENQVSwgYnV0IGJldHRlciBiZSBzYWZlIHRoYW4gc29y cnkKKwkgKi8KKwlsYSB0cCwgaW5pdF90YXNrCisJbGEgYTAsIHNzZV9oYXJ0X2lkX3BhbmljX3N0 cmluZworCWxhIHQwLCBwYW5pYworCWphbHIgdDAKKyNlbmRpZgorCitTWU1fQ09ERV9FTkQoaGFu ZGxlX3NzZSkKKworU1lNX0RBVEFfU1RBUlRfTE9DQUwoc3NlX2hhcnRfaWRfcGFuaWNfc3RyaW5n KQorICAgIC5hc2NpaSAiVW5hYmxlIHRvIG1hdGNoIGhhcnRfaWQgd2l0aCBjcHVcMCIKK1NZTV9E QVRBX0VORChzc2VfaGFydF9pZF9wYW5pY19zdHJpbmcpCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0x NTUpCgotLSAKa3ZtLXJpc2N2IG1haWxpbmcgbGlzdAprdm0tcmlzY3ZAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2t2bS1yaXNj dgo=