Date: Tue, 1 Mar 2016 15:29:57 +0100 From: Marcin Mazurek <mma@semihalf.com> To: freebsd-ppc@freebsd.org, freebsd-current@freebsd.org, freebsd-sparc64@freebsd.org Subject: Testing an importing OF PCI implementations patch Message-ID: <CAF-BqKqfUzuvJRaQH9nhYwFLAnrp-7Xjym7F_fpViBF3PzjZAw@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--047d7bd76bea87df0b052cfd99e4 Content-Type: text/plain; charset=UTF-8 Hello, I am looking for a testers for a patch to import portions of the PowerPC and Sparc64 OF PCI implementations. This extracts common code from PPC's and Sparc64's ofw_pci and moves that to general dev/ofw_pci files. It is currently building successfully on every architecture. I tested it on my arm machine and checked it worked. Unfortunately I do not have any powerpc and sparc hardware to test it on. I tried to use it inside qemu, however I could not run the FBSD on Sparc64 and PPC (I used a "qemu recipes" from the freebsd wiki page). I would like it if this could be tested on these platforms using this code to check if it does not break them. This is very essential patch for me, because it is blocking my other pending commits and I would be very grateful for testing it. Review of this code is here: https://reviews.freebsd.org/D4879 Any comments and feedback are welcome. Thanks, Marcin --047d7bd76bea87df0b052cfd99e4 Content-Type: text/plain; charset=US-ASCII; name="ofw_extract_code.diff" Content-Disposition: attachment; filename="ofw_extract_code.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_il9i6ngp0 ZGlmZiAtLWdpdCBhL3N5cy9jb25mL2ZpbGVzLmFybSBiL3N5cy9jb25mL2ZpbGVzLmFybQppbmRl eCAyNDA3NjE2Li4wNzcwMjYxIDEwMDY0NAotLS0gYS9zeXMvY29uZi9maWxlcy5hcm0KKysrIGIv c3lzL2NvbmYvZmlsZXMuYXJtCkBAIC0xMDMsNiArMTAzLDcgQEAgZGV2L2h3cG1jL2h3cG1jX2Fy bS5jCQlvcHRpb25hbAlod3BtYwogZGV2L2h3cG1jL2h3cG1jX2FybXY3LmMJCW9wdGlvbmFsCWh3 cG1jIGFybXY2CiBkZXYvaWljYnVzL3R3c2kvdHdzaS5jCQlvcHRpb25hbAl0d3NpCiBkZXYvb2Z3 L29md19jcHUuYwkJb3B0aW9uYWwJZmR0CitkZXYvb2Z3L29md19wY2kuYwkJb3B0aW9uYWwgCXBj aSBmZHQKIGRldi9wc2NpL3BzY2kuYwkJCW9wdGlvbmFsCXBzY2kKIGRldi9wc2NpL3BzY2lfYXJt LlMJCW9wdGlvbmFsCXBzY2kKIGRldi9zeXNjb25zL3NjZ2Zicm5kci5jCQlvcHRpb25hbAlzYwpk aWZmIC0tZ2l0IGEvc3lzL2NvbmYvZmlsZXMuYXJtNjQgYi9zeXMvY29uZi9maWxlcy5hcm02NApp bmRleCA4ZjVmMTBhLi5hMzJmNjA5IDEwMDY0NAotLS0gYS9zeXMvY29uZi9maWxlcy5hcm02NAor KysgYi9zeXMvY29uZi9maWxlcy5hcm02NApAQCAtNjYsNiArNjYsNyBAQCBkZXYvaHdwbWMvaHdw bWNfYXJtNjRfbWQuYwlvcHRpb25hbAlod3BtYwogZGV2L21tYy9ob3N0L2R3bW1jLmMJCW9wdGlv bmFsCWR3bW1jCiBkZXYvbW1jL2hvc3QvZHdtbWNfaGlzaS5jCW9wdGlvbmFsCWR3bW1jIHNvY19o aXNpX2hpNjIyMAogZGV2L29mdy9vZndfY3B1LmMJCW9wdGlvbmFsCWZkdAorZGV2L29mdy9vZndf cGNpLmMJCW9wdGlvbmFsCXBjaSBmZHQKIGRldi9wY2kvcGNpX2hvc3RfZ2VuZXJpYy5jCW9wdGlv bmFsCXBjaSBmZHQKIGRldi9wc2NpL3BzY2kuYwkJCW9wdGlvbmFsCXBzY2kKIGRldi9wc2NpL3Bz Y2lfYXJtNjQuUwkJb3B0aW9uYWwJcHNjaQpkaWZmIC0tZ2l0IGEvc3lzL2NvbmYvZmlsZXMuaTM4 NiBiL3N5cy9jb25mL2ZpbGVzLmkzODYKaW5kZXggYjA2NTE2NS4uNTdiYmY1NyAxMDA2NDQKLS0t IGEvc3lzL2NvbmYvZmlsZXMuaTM4NgorKysgYi9zeXMvY29uZi9maWxlcy5pMzg2CkBAIC0yODUs NiArMjg1LDcgQEAgZGV2L252bWUvbnZtZV9zeXNjdGwuYwkJb3B0aW9uYWwgbnZtZQogZGV2L252 bWUvbnZtZV90ZXN0LmMJCW9wdGlvbmFsIG52bWUKIGRldi9udm1lL252bWVfdXRpbC5jCQlvcHRp b25hbCBudm1lCiBkZXYvbnZyYW0vbnZyYW0uYwkJb3B0aW9uYWwgbnZyYW0gaXNhCitkZXYvb2Z3 L29md19wY2kuYwkJb3B0aW9uYWwgcGNpIGZkdAogZGV2L3BjZi9wY2ZfaXNhLmMJCW9wdGlvbmFs IHBjZgogZGV2L3JhbmRvbS9pdnkuYwkJb3B0aW9uYWwgcmRyYW5kX3JuZwogZGV2L3JhbmRvbS9u ZWhlbWlhaC5jCQlvcHRpb25hbCBwYWRsb2NrX3JuZwpkaWZmIC0tZ2l0IGEvc3lzL2NvbmYvZmls ZXMubWlwcyBiL3N5cy9jb25mL2ZpbGVzLm1pcHMKaW5kZXggOTFkNTNhYS4uNjczMzA4MCAxMDA2 NDQKLS0tIGEvc3lzL2NvbmYvZmlsZXMubWlwcworKysgYi9zeXMvY29uZi9maWxlcy5taXBzCkBA IC05MiwzICs5Miw2IEBAIGRldi9udnJhbTJlbnYvbnZyYW0yZW52LmMJCW9wdGlvbmFsCW52cmFt MmVudgogZGV2L2h3cG1jL2h3cG1jX21pcHMuYwkJCW9wdGlvbmFsCWh3cG1jCiBkZXYvaHdwbWMv aHdwbWNfbWlwczI0ay5jCQlvcHRpb25hbAlod3BtY19taXBzMjRrCiBkZXYvaHdwbWMvaHdwbWNf bWlwczc0ay5jCQlvcHRpb25hbAlod3BtY19taXBzNzRrCisKKyMgb2Z3IHN1cHBvcnQKK2Rldi9v Zncvb2Z3X3BjaS5jCQkJb3B0aW9uYWwgCXBjaSBmZHQKZGlmZiAtLWdpdCBhL3N5cy9jb25mL2Zp bGVzLnBvd2VycGMgYi9zeXMvY29uZi9maWxlcy5wb3dlcnBjCmluZGV4IDBhMWU3YzEuLmJkZTQ4 YTMgMTAwNjQ0Ci0tLSBhL3N5cy9jb25mL2ZpbGVzLnBvd2VycGMKKysrIGIvc3lzL2NvbmYvZmls ZXMucG93ZXJwYwpAQCAtNTcsNiArNTcsNyBAQCBkZXYvb2Z3L29md19jb25zb2xlLmMJCW9wdGlv bmFsCWFpbQogZGV2L29mdy9vZndfZGlzay5jCQlvcHRpb25hbAlvZndkIGFpbQogZGV2L29mdy9v ZndfaWljYnVzLmMJCW9wdGlvbmFsCWlpY2J1cyBhaW0KIGRldi9vZncvb2Z3YnVzLmMJCW9wdGlv bmFsCWFpbSB8IGZkdAorZGV2L29mdy9vZndfcGNpLmMJCW9wdGlvbmFsIAlwY2kgZmR0CiBkZXYv b2Z3L29md19zdGFuZGFyZC5jCQlvcHRpb25hbAlhaW0gcG93ZXJwYwogZGV2L29mdy9vZndfc3Vi ci5jCQlvcHRpb25hbAlhaW0gcG93ZXJwYwogZGV2L3Bvd2VybWFjX252cmFtL3Bvd2VybWFjX252 cmFtLmMgb3B0aW9uYWwJcG93ZXJtYWNfbnZyYW0gcG93ZXJtYWMKQEAgLTE0NSw3ICsxNDYsNiBA QCBwb3dlcnBjL21wYzg1eHgvcGNpX21wYzg1eHguYwlvcHRpb25hbAlwY2kgbXBjODV4eCB8IHBj aSBxb3JpcV9kcGFhCiBwb3dlcnBjL21wYzg1eHgvcGNpX21wYzg1eHhfcGNpYi5jCW9wdGlvbmFs CXBjaSBtcGM4NXh4IHwgcGNpIHFvcmlxX2RwYWEKIHBvd2VycGMvbXBjODV4eC9xb3JpcV9ncGlv LmMJb3B0aW9uYWwJbXBjODV4eCBncGlvIHwgcW9yaXFfZHBhYSBncGlvCiBwb3dlcnBjL29mdy9v ZndfbWFjaGRlcC5jCXN0YW5kYXJkCi1wb3dlcnBjL29mdy9vZndfcGNpLmMJCW9wdGlvbmFsCXBj aQogcG93ZXJwYy9vZncvb2Z3X3BjaWJ1cy5jCW9wdGlvbmFsCXBjaQogcG93ZXJwYy9vZncvb2Z3 X3BjaWJfcGNpLmMJb3B0aW9uYWwJcGNpCiBwb3dlcnBjL29mdy9vZndfcmVhbC5jCQlvcHRpb25h bAlhaW0KZGlmZiAtLWdpdCBhL3N5cy9jb25mL2ZpbGVzLnNwYXJjNjQgYi9zeXMvY29uZi9maWxl cy5zcGFyYzY0CmluZGV4IDg0ZjIzZmYuLmM3YzEzOGEgMTAwNjQ0Ci0tLSBhL3N5cy9jb25mL2Zp bGVzLnNwYXJjNjQKKysrIGIvc3lzL2NvbmYvZmlsZXMuc3BhcmM2NApAQCAtNDcsNiArNDcsNyBA QCBkZXYvb2Z3L29md19idXNfaWYubQkJc3RhbmRhcmQKIGRldi9vZncvb2Z3X2J1c19zdWJyLmMJ CXN0YW5kYXJkCiBkZXYvb2Z3L29md19jb25zb2xlLmMJCW9wdGlvbmFsCW9md19jb25zb2xlCiBk ZXYvb2Z3L29md19pZi5tCQlzdGFuZGFyZAorZGV2L29mdy9vZndfcGNpLmMJCW9wdGlvbmFsCXBj aQogZGV2L29mdy9vZndfc3RhbmRhcmQuYwkJc3RhbmRhcmQKIGRldi9vZncvb3BlbmZpcm0uYwkJ c3RhbmRhcmQKIGRldi9vZncvb3BlbmZpcm1pby5jCQlzdGFuZGFyZApAQCAtODIsNyArODMsNyBA QCBzcGFyYzY0L2lzYS9pc2FfZG1hLmMJCW9wdGlvbmFsCWlzYQogc3BhcmM2NC9pc2Evb2Z3X2lz YS5jCQlvcHRpb25hbAllYnVzIHwgaXNhCiBzcGFyYzY0L3BjaS9hcGIuYwkJb3B0aW9uYWwJcGNp CiBzcGFyYzY0L3BjaS9maXJlLmMJCW9wdGlvbmFsCXBjaQotc3BhcmM2NC9wY2kvb2Z3X3BjaS5j CQlvcHRpb25hbAlwY2kKK3NwYXJjNjQvcGNpL3NwYXJjNjRfb2Z3X3BjaS5jCW9wdGlvbmFsCXBj aQogc3BhcmM2NC9wY2kvb2Z3X3BjaWIuYwkJb3B0aW9uYWwJcGNpCiBzcGFyYzY0L3BjaS9vZndf cGNpYl9zdWJyLmMJb3B0aW9uYWwJcGNpCiBzcGFyYzY0L3BjaS9vZndfcGNpYnVzLmMJb3B0aW9u YWwJcGNpCmRpZmYgLS1naXQgYS9zeXMvZGV2L29mdy9vZndfcGNpLmMgYi9zeXMvZGV2L29mdy9v ZndfcGNpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1MmNkNwotLS0g L2Rldi9udWxsCisrKyBiL3N5cy9kZXYvb2Z3L29md19wY2kuYwpAQCAtMCwwICsxLDYzNSBAQAor LyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgTmF0aGFuIFdoaXRlaG9ybgorICogQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CitfX0ZCU0RJRCgiJEZyZWVC U0QkIik7CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+Cisj aW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKyNpbmNsdWRlIDxz eXMvY29uZi5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5o PgorCisjaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3 X2J1cy5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1c19zdWJyLmg+CisjaW5jbHVkZSA8ZGV2 L29mdy9vZndfcGNpLmg+CisKKyNpbmNsdWRlIDxkZXYvcGNpL3BjaXZhci5oPgorI2luY2x1ZGUg PGRldi9wY2kvcGNpcmVnLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgorI2luY2x1ZGUg PG1hY2hpbmUvbWRfdmFyLmg+CisjaW5jbHVkZSA8bWFjaGluZS9yZXNvdXJjZS5oPgorCisjaW5j bHVkZSA8dm0vdm0uaD4KKyNpbmNsdWRlIDx2bS9wbWFwLmg+CisKKyNpbmNsdWRlICJwY2liX2lm LmgiCisKKy8qCisgKiBJZiBpdCBpcyBuZWNlc3NhcnkgdG8gc2V0IGFub3RoZXIgdmFsdWUgb2Yg dGhpcyBmb3IKKyAqIHNvbWUgcGxhdGZvcm1zIGl0IHNob3VsZCBiZSBzZXQgYXQgZmR0LmggZmls ZQorICovCisjaWZuZGVmIFBDSV9NQVBfSU5UUgorI2RlZmluZQlQQ0lfTUFQX0lOVFIJNAorI2Vu ZGlmCisKKyNkZWZpbmUJUENJX0lOVFJfUElOUwk0CisKKy8qCisgKiBidXMgaW50ZXJmYWNlLgor ICovCitzdGF0aWMgaW50IG9md19wY2lfYWN0aXZhdGVfcmVzb3VyY2UoZGV2aWNlX3QsIGRldmlj ZV90LCBpbnQsIGludCwKKyAgICBzdHJ1Y3QgcmVzb3VyY2UgKik7CitzdGF0aWMgaW50IG9md19w Y2lfcmVsZWFzZV9yZXNvdXJjZShkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgaW50LAorICAgIHN0 cnVjdCByZXNvdXJjZSAqKTsKK3N0YXRpYyBpbnQgb2Z3X3BjaV9kZWFjdGl2YXRlX3Jlc291cmNl KGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBpbnQsCisgICAgc3RydWN0IHJlc291cmNlICopOwor CisjaWZkZWYgX19wb3dlcnBjX18KK3N0YXRpYyBidXNfc3BhY2VfdGFnX3Qgb2Z3X3BjaV9idXNf Z2V0X2J1c190YWcoZGV2aWNlX3QsIGRldmljZV90KTsKKyNlbmRpZgorCisvKgorICogcGNpYiBp bnRlcmZhY2UKKyAqLworc3RhdGljIGludCBvZndfcGNpX21heHNsb3RzKGRldmljZV90KTsKKwor LyoKKyAqIERyaXZlciBtZXRob2RzLgorICovCitzdGF0aWMgZGV2aWNlX21ldGhvZF90CW9md19w Y2lfbWV0aG9kc1tdID0geworCisJLyogRGV2aWNlIGludGVyZmFjZSAqLworCURFVk1FVEhPRChk ZXZpY2VfYXR0YWNoLAlvZndfcGNpX2F0dGFjaCksCisKKwkvKiBCdXMgaW50ZXJmYWNlICovCisJ REVWTUVUSE9EKGJ1c19wcmludF9jaGlsZCwJYnVzX2dlbmVyaWNfcHJpbnRfY2hpbGQpLAorCURF Vk1FVEhPRChidXNfcmVhZF9pdmFyLAlvZndfcGNpX3JlYWRfaXZhciksCisJREVWTUVUSE9EKGJ1 c193cml0ZV9pdmFyLAlvZndfcGNpX3dyaXRlX2l2YXIpLAorCURFVk1FVEhPRChidXNfc2V0dXBf aW50ciwJYnVzX2dlbmVyaWNfc2V0dXBfaW50ciksCisJREVWTUVUSE9EKGJ1c190ZWFyZG93bl9p bnRyLAlidXNfZ2VuZXJpY190ZWFyZG93bl9pbnRyKSwKKwlERVZNRVRIT0QoYnVzX2FsbG9jX3Jl c291cmNlLAlvZndfcGNpX2FsbG9jX3Jlc291cmNlKSwKKwlERVZNRVRIT0QoYnVzX3JlbGVhc2Vf cmVzb3VyY2UsCW9md19wY2lfcmVsZWFzZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19hY3Rp dmF0ZV9yZXNvdXJjZSwJb2Z3X3BjaV9hY3RpdmF0ZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1 c19kZWFjdGl2YXRlX3Jlc291cmNlLAlvZndfcGNpX2RlYWN0aXZhdGVfcmVzb3VyY2UpLAorCURF Vk1FVEhPRChidXNfYWRqdXN0X3Jlc291cmNlLAlvZndfcGNpX2FkanVzdF9yZXNvdXJjZSksCisj aWZkZWYgX19wb3dlcnBjX18KKwlERVZNRVRIT0QoYnVzX2dldF9idXNfdGFnLAlvZndfcGNpX2J1 c19nZXRfYnVzX3RhZyksCisjZW5kaWYKKworCS8qIHBjaWIgaW50ZXJmYWNlICovCisJREVWTUVU SE9EKHBjaWJfbWF4c2xvdHMsCW9md19wY2lfbWF4c2xvdHMpLAorCURFVk1FVEhPRChwY2liX3Jv dXRlX2ludGVycnVwdCwJb2Z3X3BjaV9yb3V0ZV9pbnRlcnJ1cHQpLAorCisJLyogb2Z3X2J1cyBp bnRlcmZhY2UgKi8KKwlERVZNRVRIT0Qob2Z3X2J1c19nZXRfbm9kZSwJb2Z3X3BjaV9nZXRfbm9k ZSksCisKKwlERVZNRVRIT0RfRU5ECit9OworCitERUZJTkVfQ0xBU1NfMChvZndfcGNpLCBvZndf cGNpX2RyaXZlciwgb2Z3X3BjaV9tZXRob2RzLCBzaXplb2Yoc3RydWN0IG9md19wY2lfc29mdGMp KTsKKworaW50CitvZndfcGNpX2luaXQoZGV2aWNlX3QgZGV2KQoreworCXN0cnVjdCBvZndfcGNp X3NvZnRjICpzYzsKKwlwaGFuZGxlX3Qgbm9kZTsKKwl1X2ludDMyX3QgYnVzcmFuZ2VbMl07CisJ c3RydWN0IG9md19wY2lfcmFuZ2UgKnJwOworCWludCBlcnJvcjsKKwlzdHJ1Y3Qgb2Z3X3BjaV9j ZWxsX2luZm8gKmNlbGxfaW5mbzsKKworCW5vZGUgPSBvZndfYnVzX2dldF9ub2RlKGRldik7CisJ c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CisJc2MtPnNjX2luaXRpYWxpemVkID0gMTsKKwlz Yy0+c2NfcmFuZ2UgPSBOVUxMOworCisJY2VsbF9pbmZvID0gKHN0cnVjdCBvZndfcGNpX2NlbGxf aW5mbyAqKW1hbGxvYyhzaXplb2YoKmNlbGxfaW5mbyksCisJICAgIE1fREVWQlVGLCBNX1dBSVRP SyB8IE1fWkVSTyk7CisKKwlzYy0+c2NfY2VsbF9pbmZvID0gY2VsbF9pbmZvOworCisJaWYgKE9G X2dldGVuY3Byb3Aobm9kZSwgImJ1cy1yYW5nZSIsIGJ1c3JhbmdlLCBzaXplb2YoYnVzcmFuZ2Up KSAhPSA4KQorCQlidXNyYW5nZVswXSA9IDA7CisKKwlzYy0+c2NfZGV2ID0gZGV2OworCXNjLT5z Y19ub2RlID0gbm9kZTsKKwlzYy0+c2NfYnVzID0gYnVzcmFuZ2VbMF07CisKKwlpZiAoc2MtPnNj X3F1aXJrcyAmIE9GV19QQ0lfUVVJUktfUkFOR0VTX09OX0NISUxEUkVOKSB7CisJCXBoYW5kbGVf dCBjOworCQlpbnQgbiwgaTsKKworCQlzYy0+c2NfbnJhbmdlID0gMDsKKwkJZm9yIChjID0gT0Zf Y2hpbGQobm9kZSk7IGMgIT0gMDsgYyA9IE9GX3BlZXIoYykpIHsKKwkJCW4gPSBvZndfcGNpX25y YW5nZXMoYywgY2VsbF9pbmZvKTsKKwkJCWlmIChuID4gMCkKKwkJCQlzYy0+c2NfbnJhbmdlICs9 IG47CisJCX0KKwkJaWYgKHNjLT5zY19ucmFuZ2UgPT0gMCkgeworCQkJZXJyb3IgPSBFTlhJTzsK KwkJCWdvdG8gb3V0OworCQl9CisJCXNjLT5zY19yYW5nZSA9IG1hbGxvYyhzYy0+c2NfbnJhbmdl ICogc2l6ZW9mKHNjLT5zY19yYW5nZVswXSksCisJCSAgICBNX0RFVkJVRiwgTV9XQUlUT0spOwor CQlpID0gMDsKKwkJZm9yIChjID0gT0ZfY2hpbGQobm9kZSk7IGMgIT0gMDsgYyA9IE9GX3BlZXIo YykpIHsKKwkJCW4gPSBvZndfcGNpX2ZpbGxfcmFuZ2VzKGMsICZzYy0+c2NfcmFuZ2VbaV0pOwor CQkJaWYgKG4gPiAwKQorCQkJCWkgKz0gbjsKKwkJfQorCQlLQVNTRVJUKGkgPT0gc2MtPnNjX25y YW5nZSwgKCJyYW5nZSBjb3VudCBtaXNtYXRjaCIpKTsKKwl9IGVsc2UgeworCQlzYy0+c2NfbnJh bmdlID0gb2Z3X3BjaV9ucmFuZ2VzKG5vZGUsIGNlbGxfaW5mbyk7CisJCWlmIChzYy0+c2NfbnJh bmdlIDw9IDApIHsKKwkJCWRldmljZV9wcmludGYoZGV2LCAiY291bGQgbm90IGdldHJhbmdlc1xu Iik7CisJCQllcnJvciA9IEVOWElPOworCQkJZ290byBvdXQ7CisJCX0KKwkJc2MtPnNjX3Jhbmdl ID0gbWFsbG9jKHNjLT5zY19ucmFuZ2UgKiBzaXplb2Yoc2MtPnNjX3JhbmdlWzBdKSwKKwkJICAg IE1fREVWQlVGLCBNX1dBSVRPSyk7CisJCW9md19wY2lfZmlsbF9yYW5nZXMobm9kZSwgc2MtPnNj X3JhbmdlKTsKKwl9CisKKwlzYy0+c2NfaW9fcm1hbi5ybV90eXBlID0gUk1BTl9BUlJBWTsKKwlz Yy0+c2NfaW9fcm1hbi5ybV9kZXNjciA9ICJQQ0kgSS9PIFBvcnRzIjsKKwllcnJvciA9IHJtYW5f aW5pdCgmc2MtPnNjX2lvX3JtYW4pOworCWlmIChlcnJvcikgeworCQlkZXZpY2VfcHJpbnRmKGRl diwgInJtYW5faW5pdCgpIGZhaWxlZC4gZXJyb3IgPSAlZFxuIiwgZXJyb3IpOworCQlnb3RvIG91 dDsKKwl9CisKKwlzYy0+c2NfbWVtX3JtYW4ucm1fdHlwZSA9IFJNQU5fQVJSQVk7CisJc2MtPnNj X21lbV9ybWFuLnJtX2Rlc2NyID0gIlBDSSBNZW1vcnkiOworCWVycm9yID0gcm1hbl9pbml0KCZz Yy0+c2NfbWVtX3JtYW4pOworCWlmIChlcnJvcikgeworCQlkZXZpY2VfcHJpbnRmKGRldiwgInJt YW5faW5pdCgpIGZhaWxlZC4gZXJyb3IgPSAlZFxuIiwgZXJyb3IpOworCQlnb3RvIG91dDsKKwl9 CisKKwlmb3IgKHJwID0gc2MtPnNjX3JhbmdlOyBycCA8IHNjLT5zY19yYW5nZSArIHNjLT5zY19u cmFuZ2UgJiYKKwkgICAgcnAtPnBjaV9oaSAhPSAwOyBycCsrKSB7CisJCWVycm9yID0gMDsKKwor CQlzd2l0Y2ggKHJwLT5wY2lfaGkgJiBPRldfUENJX1BIWVNfSElfU1BBQ0VNQVNLKSB7CisJCWNh c2UgT0ZXX1BDSV9QSFlTX0hJX1NQQUNFX0NPTkZJRzoKKwkJCWJyZWFrOworCQljYXNlIE9GV19Q Q0lfUEhZU19ISV9TUEFDRV9JTzoKKwkJCWVycm9yID0gcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+ c2NfaW9fcm1hbiwgcnAtPnBjaSwKKwkJCSAgICBycC0+cGNpICsgcnAtPnNpemUgLSAxKTsKKwkJ CWJyZWFrOworCQljYXNlIE9GV19QQ0lfUEhZU19ISV9TUEFDRV9NRU0zMjoKKwkJY2FzZSBPRldf UENJX1BIWVNfSElfU1BBQ0VfTUVNNjQ6CisJCQllcnJvciA9IHJtYW5fbWFuYWdlX3JlZ2lvbigm c2MtPnNjX21lbV9ybWFuLCBycC0+cGNpLAorCQkJICAgIHJwLT5wY2kgKyBycC0+c2l6ZSAtIDEp OworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoZXJyb3IpIHsKKwkJCWRldmljZV9wcmludGYoZGV2 LAorCQkJICAgICJybWFuX21hbmFnZV9yZWdpb24oJXgsICUjangsICUjangpIGZhaWxlZC4gIgor CQkJICAgICJlcnJvciA9ICVkXG4iLCBycC0+cGNpX2hpICYKKwkJCSAgICBPRldfUENJX1BIWVNf SElfU1BBQ0VNQVNLLCBycC0+cGNpLAorCQkJICAgIHJwLT5wY2kgKyBycC0+c2l6ZSAtIDEsIGVy cm9yKTsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJb2Z3X2J1c19zZXR1cF9paW5mbyhub2Rl LCAmc2MtPnNjX3BjaV9paW5mbywgc2l6ZW9mKGNlbGxfdCkpOworCitvdXQ6CisJZnJlZShjZWxs X2luZm8sIE1fREVWQlVGKTsKKwlmcmVlKHNjLT5zY19yYW5nZSwgTV9ERVZCVUYpOworCXJtYW5f ZmluaSgmc2MtPnNjX2lvX3JtYW4pOworCXJtYW5fZmluaSgmc2MtPnNjX21lbV9ybWFuKTsKKwor CXJldHVybiAoZXJyb3IpOworfQorCitpbnQKK29md19wY2lfYXR0YWNoKGRldmljZV90IGRldikK K3sKKwlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2M7CisJaW50IGVycm9yOworCisJc2MgPSBkZXZp Y2VfZ2V0X3NvZnRjKGRldik7CisJaWYgKCFzYy0+c2NfaW5pdGlhbGl6ZWQpIHsKKwkJZXJyb3Ig PSBvZndfcGNpX2luaXQoZGV2KTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIChlcnJvcik7CisJ fQorCisJZGV2aWNlX2FkZF9jaGlsZChkZXYsICJwY2kiLCAtMSk7CisJcmV0dXJuIChidXNfZ2Vu ZXJpY19hdHRhY2goZGV2KSk7Cit9CisKK3N0YXRpYyBpbnQKK29md19wY2lfbWF4c2xvdHMoZGV2 aWNlX3QgZGV2KQoreworCisJcmV0dXJuIChQQ0lfU0xPVE1BWCk7Cit9CisKK2ludAorb2Z3X3Bj aV9yb3V0ZV9pbnRlcnJ1cHQoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBkZXYsIGludCBwaW4pCit7 CisJc3RydWN0IG9md19wY2lfc29mdGMgKnNjOworCXN0cnVjdCBvZndfcGNpX3JlZ2lzdGVyIHJl ZzsKKwl1aW50MzJfdCBwaW50ciwgbWludHJbUENJX01BUF9JTlRSXTsKKwlpbnQgaW50cmNlbGxz OworCXBoYW5kbGVfdCBpcGFyZW50OworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGJ1cyk7CisJ cGludHIgPSBwaW47CisKKwkvKiBGYWJyaWNhdGUgaW1hcCBpbmZvcm1hdGlvbiBpbiBjYXNlIHRo aXMgaXNuJ3QgYW4gT0ZXIGRldmljZSAqLworCWJ6ZXJvKCZyZWcsIHNpemVvZihyZWcpKTsKKwly ZWcucGh5c19oaSA9IChwY2lfZ2V0X2J1cyhkZXYpIDw8IE9GV19QQ0lfUEhZU19ISV9CVVNTSElG VCkgfAorCSAgICAocGNpX2dldF9zbG90KGRldikgPDwgT0ZXX1BDSV9QSFlTX0hJX0RFVklDRVNI SUZUKSB8CisJICAgIChwY2lfZ2V0X2Z1bmN0aW9uKGRldikgPDwgT0ZXX1BDSV9QSFlTX0hJX0ZV TkNUSU9OU0hJRlQpOworCisJaW50cmNlbGxzID0gb2Z3X2J1c19sb29rdXBfaW1hcChvZndfYnVz X2dldF9ub2RlKGRldiksCisJICAgICZzYy0+c2NfcGNpX2lpbmZvLCAmcmVnLCBzaXplb2YocmVn KSwgJnBpbnRyLCBzaXplb2YocGludHIpLAorCSAgICBtaW50ciwgc2l6ZW9mKG1pbnRyKSwgJmlw YXJlbnQpOworCWlmIChpbnRyY2VsbHMgIT0gMCkgeworCQlwaW50ciA9IG9md19idXNfbWFwX2lu dHIoZGV2LCBpcGFyZW50LCBpbnRyY2VsbHMsIG1pbnRyKTsKKwkJcmV0dXJuIChwaW50cik7CisJ fQorCisJLyoKKwkgKiBNYXliZSBpdCdzIGEgcmVhbCBpbnRlcnJ1cHQsIG5vdCBhbiBpbnRwaW4K KwkgKi8KKwlpZiAocGluID4gUENJX0lOVFJfUElOUykKKwkJcmV0dXJuIChwaW4pOworCisJZGV2 aWNlX3ByaW50ZihidXMsICJjb3VsZCBub3Qgcm91dGUgcGluICVkIGZvciBkZXZpY2UgJWQuJWRc biIsCisJICAgIHBpbiwgcGNpX2dldF9zbG90KGRldiksIHBjaV9nZXRfZnVuY3Rpb24oZGV2KSk7 CisJcmV0dXJuIChQQ0lfSU5WQUxJRF9JUlEpOworfQorCitpbnQKK29md19wY2lfcmVhZF9pdmFy KGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB3aGljaCwgdWludHB0cl90ICpyZXN1 bHQpCit7CisJc3RydWN0IG9md19wY2lfc29mdGMgKnNjOworCisJc2MgPSBkZXZpY2VfZ2V0X3Nv ZnRjKGRldik7CisKKwlzd2l0Y2ggKHdoaWNoKSB7CisJY2FzZSBQQ0lCX0lWQVJfRE9NQUlOOgor CQkqcmVzdWx0ID0gZGV2aWNlX2dldF91bml0KGRldik7CisJCXJldHVybiAoMCk7CisJY2FzZSBQ Q0lCX0lWQVJfQlVTOgorCQkqcmVzdWx0ID0gc2MtPnNjX2J1czsKKwkJcmV0dXJuICgwKTsKKwlk ZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlyZXR1cm4gKEVOT0VOVCk7Cit9CisKK2ludAorb2Z3 X3BjaV93cml0ZV9pdmFyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB3aGljaCwg dWludHB0cl90IHZhbHVlKQoreworCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsKKworCXNjID0g ZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCisJc3dpdGNoICh3aGljaCkgeworCWNhc2UgUENJQl9J VkFSX0JVUzoKKwkJc2MtPnNjX2J1cyA9IHZhbHVlOworCQlyZXR1cm4gKDApOworCWRlZmF1bHQ6 CisJCWJyZWFrOworCX0KKworCXJldHVybiAoRU5PRU5UKTsKK30KKworaW50CitvZndfcGNpX25y YW5nZXMocGhhbmRsZV90IG5vZGUsIHN0cnVjdCBvZndfcGNpX2NlbGxfaW5mbyAqaW5mbykKK3sK Kwlzc2l6ZV90IG5iYXNlX3JhbmdlczsKKworCWlmIChpbmZvID09IE5VTEwpCisJCXJldHVybiAo LTEpOworCisJaW5mby0+aG9zdF9hZGRyZXNzX2NlbGxzID0gMTsKKwlpbmZvLT5zaXplX2NlbGxz ID0gMjsKKwlpbmZvLT5wY2lfYWRkcmVzc19jZWxsID0gMzsKKworCU9GX2dldGVuY3Byb3AoT0Zf cGFyZW50KG5vZGUpLCAiI2FkZHJlc3MtY2VsbHMiLAorCSAgICAmKGluZm8tPmhvc3RfYWRkcmVz c19jZWxscyksIHNpemVvZihpbmZvLT5ob3N0X2FkZHJlc3NfY2VsbHMpKTsKKwlPRl9nZXRlbmNw cm9wKG5vZGUsICIjYWRkcmVzcy1jZWxscyIsCisJICAgICYoaW5mby0+cGNpX2FkZHJlc3NfY2Vs bCksIHNpemVvZihpbmZvLT5wY2lfYWRkcmVzc19jZWxsKSk7CisJT0ZfZ2V0ZW5jcHJvcChub2Rl LCAiI3NpemUtY2VsbHMiLCAmKGluZm8tPnNpemVfY2VsbHMpLAorCSAgICBzaXplb2YoaW5mby0+ c2l6ZV9jZWxscykpOworCisJbmJhc2VfcmFuZ2VzID0gT0ZfZ2V0cHJvcGxlbihub2RlLCAicmFu Z2VzIik7CisJaWYgKG5iYXNlX3JhbmdlcyA8PSAwKQorCQlyZXR1cm4gKC0xKTsKKworCXJldHVy biAobmJhc2VfcmFuZ2VzIC8gc2l6ZW9mKGNlbGxfdCkgLworCSAgICAoaW5mby0+cGNpX2FkZHJl c3NfY2VsbCArIGluZm8tPmhvc3RfYWRkcmVzc19jZWxscyArCisJICAgIGluZm8tPnNpemVfY2Vs bHMpKTsKK30KKworc3RydWN0IHJlc291cmNlICoKK29md19wY2lfYWxsb2NfcmVzb3VyY2UoZGV2 aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAorICAgIHJtYW5f cmVzX3Qgc3RhcnQsIHJtYW5fcmVzX3QgZW5kLCBybWFuX3Jlc190IGNvdW50LCB1X2ludCBmbGFn cykKK3sKKwlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2M7CisJc3RydWN0IHJlc291cmNlICpydjsK KwlzdHJ1Y3Qgcm1hbiAqcm07CisJaW50IG5lZWRhY3RpdmF0ZTsKKworCW5lZWRhY3RpdmF0ZSA9 IGZsYWdzICYgUkZfQUNUSVZFOworCWZsYWdzICY9IH5SRl9BQ1RJVkU7CisKKwlzYyA9IGRldmlj ZV9nZXRfc29mdGMoYnVzKTsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgU1lTX1JFU19NRU1P Ulk6CisJCXJtID0gJnNjLT5zY19tZW1fcm1hbjsKKwkJYnJlYWs7CisKKwljYXNlIFNZU19SRVNf SU9QT1JUOgorCQlybSA9ICZzYy0+c2NfaW9fcm1hbjsKKwkJYnJlYWs7CisKKwljYXNlIFNZU19S RVNfSVJROgorCisjaWZkZWYgX19zcGFyYzY0X18KKwkJaWYgKHN0YXJ0ICE9IGVuZCkKKwkJCXBh bmljKCIlczogWFhYOiBpbnRlcnJ1cHQgcmFuZ2UiLCBfX2Z1bmNfXyk7CisJCXJldHVybiAoYnVz X2dlbmVyaWNfYWxsb2NfcmVzb3VyY2UoYnVzLCBjaGlsZCwgdHlwZSwgcmlkLCBzdGFydCwKKwkJ ICAgIGVuZCwgY291bnQsIGZsYWdzKSk7CisjZWxzZQorCQlyZXR1cm4gKGJ1c19hbGxvY19yZXNv dXJjZShidXMsIHR5cGUsIHJpZCwgc3RhcnQsIGVuZCwgY291bnQsCisJCSAgICBmbGFncykpOwor I2VuZGlmCisKKwlkZWZhdWx0OgorCQlkZXZpY2VfcHJpbnRmKGJ1cywgInVua25vd24gcmVzb3Vy Y2UgcmVxdWVzdCBmcm9tICVzXG4iLAorCQkgICAgZGV2aWNlX2dldF9uYW1ldW5pdChjaGlsZCkp OworCQlyZXR1cm4gKE5VTEwpOworCX0KKworCXJ2ID0gcm1hbl9yZXNlcnZlX3Jlc291cmNlKHJt LCBzdGFydCwgZW5kLCBjb3VudCwgZmxhZ3MsIGNoaWxkKTsKKwlpZiAocnYgPT0gTlVMTCkgewor CQlkZXZpY2VfcHJpbnRmKGJ1cywgImZhaWxlZCB0byByZXNlcnZlIHJlc291cmNlIGZvciAlc1xu IiwKKwkJICAgIGRldmljZV9nZXRfbmFtZXVuaXQoY2hpbGQpKTsKKwkJcmV0dXJuIChOVUxMKTsK Kwl9CisKKwlybWFuX3NldF9yaWQocnYsICpyaWQpOworCisJaWYgKG5lZWRhY3RpdmF0ZSkgewor CQlpZiAoYnVzX2FjdGl2YXRlX3Jlc291cmNlKGNoaWxkLCB0eXBlLCAqcmlkLCBydikgIT0gMCkg eworCQkJZGV2aWNlX3ByaW50ZihidXMsCisJCQkgICAgImZhaWxlZCB0byBhY3RpdmF0ZSByZXNv dXJjZSBmb3IgJXNcbiIsCisJCQkgICAgZGV2aWNlX2dldF9uYW1ldW5pdChjaGlsZCkpOworCQkJ cm1hbl9yZWxlYXNlX3Jlc291cmNlKHJ2KTsKKwkJCXJldHVybiAoTlVMTCk7CisJCX0KKwl9CisK KwlyZXR1cm4gKHJ2KTsKK30KKworc3RhdGljIGludAorb2Z3X3BjaV9yZWxlYXNlX3Jlc291cmNl KGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAorICAgIHN0 cnVjdCByZXNvdXJjZSAqcmVzKQoreworCisJaWYgKHJtYW5fZ2V0X2ZsYWdzKHJlcykgJiBSRl9B Q1RJVkUpIHsKKwkJaW50IGVycm9yID0gYnVzX2RlYWN0aXZhdGVfcmVzb3VyY2UoY2hpbGQsIHR5 cGUsIHJpZCwgcmVzKTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOworCX0KKworCXJl dHVybiAocm1hbl9yZWxlYXNlX3Jlc291cmNlKHJlcykpOworfQorCitzdGF0aWMgaW50CitvZndf cGNpX2FjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0 eXBlLCBpbnQgcmlkLAorICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKQoreworCXN0cnVjdCBvZndf cGNpX3NvZnRjICpzYzsKKwlidXNfc3BhY2VfaGFuZGxlX3QgaGFuZGxlOworCWJ1c19zcGFjZV90 YWdfdCB0YWc7CisJaW50IHJ2OworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGJ1cyk7CisKKwlp ZiAodHlwZSA9PSBTWVNfUkVTX0lSUSkgeworCQlyZXR1cm4gKGJ1c19hY3RpdmF0ZV9yZXNvdXJj ZShidXMsIHR5cGUsIHJpZCwgcmVzKSk7CisJfQorCWlmICh0eXBlID09IFNZU19SRVNfTUVNT1JZ IHx8IHR5cGUgPT0gU1lTX1JFU19JT1BPUlQpIHsKKwkJc3RydWN0IG9md19wY2lfcmFuZ2UgKnJw OworCQl2bV9vZmZzZXRfdCBzdGFydDsKKwkJaW50IHNwYWNlOworCisJCXN0YXJ0ID0gKHZtX29m ZnNldF90KXJtYW5fZ2V0X3N0YXJ0KHJlcyk7CisKKwkJLyoKKwkJICogTWFwIHRoaXMgdGhyb3Vn aCB0aGUgcmFuZ2VzIGxpc3QKKwkJICovCisJCWZvciAocnAgPSBzYy0+c2NfcmFuZ2U7IHJwIDwg c2MtPnNjX3JhbmdlICsgc2MtPnNjX25yYW5nZSAmJgorCQkgICAgcnAtPnBjaV9oaSAhPSAwOyBy cCsrKSB7CisJCQlpZiAoc3RhcnQgPCBycC0+cGNpIHx8IHN0YXJ0ID49IHJwLT5wY2kgKyBycC0+ c2l6ZSkKKwkJCQljb250aW51ZTsKKworCQkJc3dpdGNoIChycC0+cGNpX2hpICYgT0ZXX1BDSV9Q SFlTX0hJX1NQQUNFTUFTSykgeworCQkJY2FzZSBPRldfUENJX1BIWVNfSElfU1BBQ0VfSU86CisJ CQkJc3BhY2UgPSBTWVNfUkVTX0lPUE9SVDsKKwkJCQlicmVhazsKKwkJCWNhc2UgT0ZXX1BDSV9Q SFlTX0hJX1NQQUNFX01FTTMyOgorCQkJY2FzZSBPRldfUENJX1BIWVNfSElfU1BBQ0VfTUVNNjQ6 CisJCQkJc3BhY2UgPSBTWVNfUkVTX01FTU9SWTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ CQkJc3BhY2UgPSAtMTsKKwkJCX0KKworCQkJaWYgKHR5cGUgPT0gc3BhY2UpIHsKKwkJCQlzdGFy dCArPSAocnAtPmhvc3QgLSBycC0+cGNpKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlm IChib290dmVyYm9zZSkKKwkJCXByaW50Zigib2Z3X3BjaSBtYXBkZXY6IHN0YXJ0ICV6eCwgbGVu ICVsZFxuIiwgc3RhcnQsCisJCQkgICAgcm1hbl9nZXRfc2l6ZShyZXMpKTsKKworCQl0YWcgPSBC VVNfR0VUX0JVU19UQUcoY2hpbGQsIGNoaWxkKTsKKwkJaWYgKHRhZyA9PSBOVUxMKQorCQkJcmV0 dXJuIChFTk9NRU0pOworCisJCXJtYW5fc2V0X2J1c3RhZyhyZXMsIHRhZyk7CisJCXJ2ID0gYnVz X3NwYWNlX21hcCh0YWcsIHN0YXJ0LAorCQkgICAgcm1hbl9nZXRfc2l6ZShyZXMpLCAwLCAmaGFu ZGxlKTsKKwkJaWYgKHJ2ICE9IDApCisJCQlyZXR1cm4gKEVOT01FTSk7CisKKwkJcm1hbl9zZXRf YnVzaGFuZGxlKHJlcywgaGFuZGxlKTsKKwkJcm1hbl9zZXRfdmlydHVhbChyZXMsICh2b2lkICop aGFuZGxlKTsgLyogWFhYICBmb3IgcG93ZXJwYyBvbmx5ID8gKi8KKwl9CisKKwlyZXR1cm4gKHJt YW5fYWN0aXZhdGVfcmVzb3VyY2UocmVzKSk7Cit9CisKKyNpZmRlZiBfX3Bvd2VycGNfXworc3Rh dGljIGJ1c19zcGFjZV90YWdfdAorb2Z3X3BjaV9idXNfZ2V0X2J1c190YWcoZGV2aWNlX3QgYnVz LCBkZXZpY2VfdCBjaGlsZCkKK3sKKworCXJldHVybiAoJmJzX2xlX3RhZyk7Cit9CisjZW5kaWYK Kworc3RhdGljIGludAorb2Z3X3BjaV9kZWFjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGJ1cywg ZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAorICAgIHN0cnVjdCByZXNvdXJjZSAq cmVzKQoreworCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgbWVtb3J5IHJlc291cmNlLCB1bm1hcCBp dC4KKwkgKi8KKwlpZiAoKHR5cGUgPT0gU1lTX1JFU19NRU1PUlkpIHx8ICh0eXBlID09IFNZU19S RVNfSU9QT1JUKSkgeworCQl1X2ludDMyX3QgcHNpemU7CisKKwkJcHNpemUgPSBybWFuX2dldF9z aXplKHJlcyk7CisKKwkJLyoKKwkJICogWFhYOiBUaGUgaW1wbGVtZW50YXRpb24gaXMgbWFjaGlu ZS1kZXBlbmRlbnQgYW5kCisJCSAqIHNwYXJjNjQgdXNlcyBhIGRpZmZlcmVudCBmdW5jdGlvbiBz aWduYXR1cmUgYXMgd2VsbC4KKwkJICovCisjaWZuZGVmIF9fc3BhcmM2NF9fCisJCXBtYXBfdW5t YXBkZXYoKHZtX29mZnNldF90KXJtYW5fZ2V0X3ZpcnR1YWwocmVzKSwgcHNpemUpOworI2VuZGlm CisJfQorCisJcmV0dXJuIChybWFuX2RlYWN0aXZhdGVfcmVzb3VyY2UocmVzKSk7Cit9CisKK2lu dAorb2Z3X3BjaV9hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwg aW50IHR5cGUsCisgICAgc3RydWN0IHJlc291cmNlICpyZXMsIHJtYW5fcmVzX3Qgc3RhcnQsIHJt YW5fcmVzX3QgZW5kKQoreworCXN0cnVjdCBybWFuICpybSA9IE5VTEw7CisJc3RydWN0IG9md19w Y2lfc29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMpOworCisJS0FTU0VSVCghKHJtYW5f Z2V0X2ZsYWdzKHJlcykgJiBSRl9BQ1RJVkUpLAorCSAgICAoImFjdGl2ZSByZXNvdXJjZXMgY2Fu bm90IGJlIGFkanVzdGVkIikpOworCWlmIChybWFuX2dldF9mbGFncyhyZXMpICYgUkZfQUNUSVZF KQorCQlyZXR1cm4gKEVJTlZBTCk7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIFNZU19SRVNf TUVNT1JZOgorCQlybSA9ICZzYy0+c2NfbWVtX3JtYW47CisJCWJyZWFrOworCWNhc2UgU1lTX1JF U19JT1BPUlQ6CisJCXJtID0gJnNjLT5zY19pb19ybWFuOworCQlicmVhazsKKwljYXNlIFNZU19S RVNfSVJROgorCQlyZXR1cm4gKGJ1c19nZW5lcmljX2FkanVzdF9yZXNvdXJjZShidXMsIGNoaWxk LCB0eXBlLCByZXMsCisJCSAgICBzdGFydCwgZW5kKSk7CisJZGVmYXVsdDoKKwkJcmV0dXJuIChF TlhJTyk7CisJfQorCisJaWYgKCFybWFuX2lzX3JlZ2lvbl9tYW5hZ2VyKHJlcywgcm0pKQorCQly ZXR1cm4gKEVJTlZBTCk7CisKKwlyZXR1cm4gKHJtYW5fYWRqdXN0X3Jlc291cmNlKHJlcywgc3Rh cnQsIGVuZCkpOworfQorCitwaGFuZGxlX3QKK29md19wY2lfZ2V0X25vZGUoZGV2aWNlX3QgYnVz LCBkZXZpY2VfdCBkZXYpCit7CisJc3RydWN0IG9md19wY2lfc29mdGMgKnNjOworCisJc2MgPSBk ZXZpY2VfZ2V0X3NvZnRjKGJ1cyk7CisJLyogV2Ugb25seSBoYXZlIG9uZSBjaGlsZCwgdGhlIFBD SSBidXMsIHdoaWNoIG5lZWRzIG91ciBvd24gbm9kZS4gKi8KKworCXJldHVybiAoc2MtPnNjX25v ZGUpOworfQorCitidXNfZG1hX3RhZ190CitvZndfcGNpX2dldF9kbWFfdGFnKGRldmljZV90IGJ1 cywgZGV2aWNlX3QgY2hpbGQgX191bnVzZWQpCit7CisJc3RydWN0IG9md19wY2lfc29mdGMgKnNj OworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGJ1cyk7CisJcmV0dXJuIChzYy0+c2NfZG1hdCk7 Cit9CisKK2ludAorb2Z3X3BjaV9maWxsX3JhbmdlcyhwaGFuZGxlX3Qgbm9kZSwgc3RydWN0IG9m d19wY2lfcmFuZ2UgKnJhbmdlcykKK3sKKwlzdHJ1Y3Qgb2Z3X3BjaV9jZWxsX2luZm8gKmNlbGxf aW5mbzsKKwlwY2VsbF90ICpiYXNlX3JhbmdlczsKKwlzc2l6ZV90IG5iYXNlX3JhbmdlczsKKwlp bnQgbnJhbmdlczsKKwlpbnQgaSwgaiwgazsKKworCWNlbGxfaW5mbyA9IChzdHJ1Y3Qgb2Z3X3Bj aV9jZWxsX2luZm8gKiltYWxsb2Moc2l6ZW9mKCpjZWxsX2luZm8pLAorCSAgICBNX0RFVkJVRiwg TV9XQUlUT0sgfCBNX1pFUk8pOworCisJbnJhbmdlcyA9IG9md19wY2lfbnJhbmdlcyhub2RlLCBj ZWxsX2luZm8pOworCisJbmJhc2VfcmFuZ2VzID0gT0ZfZ2V0cHJvcGxlbihub2RlLCAicmFuZ2Vz Iik7CisJaWYgKG5iYXNlX3JhbmdlcyA8PSAwKQorCQlyZXR1cm4gKC0xKTsKKwliYXNlX3Jhbmdl cyA9IG1hbGxvYyhuYmFzZV9yYW5nZXMsIE1fREVWQlVGLCBNX1dBSVRPSyk7CisJT0ZfZ2V0ZW5j cHJvcChub2RlLCAicmFuZ2VzIiwgYmFzZV9yYW5nZXMsIG5iYXNlX3Jhbmdlcyk7CisKKwlmb3Ig KGkgPSAwLCBqID0gMDsgaSA8IG5yYW5nZXM7IGkrKykgeworCQlyYW5nZXNbaV0ucGNpX2hpID0g YmFzZV9yYW5nZXNbaisrXTsKKwkJcmFuZ2VzW2ldLnBjaSA9IDA7CisJCWZvciAoayA9IDA7IGsg PCBjZWxsX2luZm8tPnBjaV9hZGRyZXNzX2NlbGwgLSAxOyBrKyspIHsKKwkJCXJhbmdlc1tpXS5w Y2kgPDw9IDMyOworCQkJcmFuZ2VzW2ldLnBjaSB8PSBiYXNlX3Jhbmdlc1tqKytdOworCQl9CisJ CXJhbmdlc1tpXS5ob3N0ID0gMDsKKwkJZm9yIChrID0gMDsgayA8IGNlbGxfaW5mby0+aG9zdF9h ZGRyZXNzX2NlbGxzOyBrKyspIHsKKwkJCXJhbmdlc1tpXS5ob3N0IDw8PSAzMjsKKwkJCXJhbmdl c1tpXS5ob3N0IHw9IGJhc2VfcmFuZ2VzW2orK107CisJCX0KKwkJcmFuZ2VzW2ldLnNpemUgPSAw OworCQlmb3IgKGsgPSAwOyBrIDwgY2VsbF9pbmZvLT5zaXplX2NlbGxzOyBrKyspIHsKKwkJCXJh bmdlc1tpXS5zaXplIDw8PSAzMjsKKwkJCXJhbmdlc1tpXS5zaXplIHw9IGJhc2VfcmFuZ2VzW2or K107CisJCX0KKwl9CisKKwlmcmVlKGJhc2VfcmFuZ2VzLCBNX0RFVkJVRik7CisJcmV0dXJuIChu cmFuZ2VzKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9kZXYvb2Z3L29md19wY2kuaCBiL3N5cy9kZXYv b2Z3L29md19wY2kuaAppbmRleCBlYjYwYzViLi43NDM1NWQyIDEwMDY0NAotLS0gYS9zeXMvZGV2 L29mdy9vZndfcGNpLmgKKysrIGIvc3lzL2Rldi9vZncvb2Z3X3BjaS5oCkBAIC04OSw2ICs4OSw0 NyBAQAogI2RlZmluZSBPRldfUENJX1BIWVNfSElfRlVOQ1RJT04oaGkpIFwKIAkoKChoaSkgJiBP RldfUENJX1BIWVNfSElfRlVOQ1RJT05NQVNLKSA+PiBPRldfUENJX1BIWVNfSElfRlVOQ1RJT05T SElGVCkKIAorI2RlZmluZQlPRldfUENJX1NQQUNFX05VTQkJNAorCisvKgorICogRXhwb3J0IGNs YXNzIGRlZmluaXRpb24gZm9yIGluaGVyaXRhbmNlIHB1cnBvc2VzCisgKi8KK0RFQ0xBUkVfQ0xB U1Mob2Z3X3BjaV9kcml2ZXIpOworCit0eXBlZGVmIHVpbnQzMl90IG9md19wY2lfaW50cl90Owor CisvKiBPRlcgZGV2aWNlIHR5cGVzICovCisjZGVmaW5lCU9GV19UWVBFX1BDSQkJInBjaSIKKyNk ZWZpbmUJT0ZXX1RZUEVfUENJRQkJInBjaWV4IgorCitzdHJ1Y3Qgb2Z3X3BjaV9tc2lfYWRkcl9y YW5nZXMgeworCXVpbnQzMl90CWFkZHIzMl9oaTsKKwl1aW50MzJfdAlhZGRyMzJfbG87CisJdWlu dDMyX3QJYWRkcjMyX3N6OworCXVpbnQzMl90CWFkZHI2NF9oaTsKKwl1aW50MzJfdAlhZGRyNjRf bG87CisJdWludDMyX3QJYWRkcjY0X3N6OworfTsKKworI2RlZmluZQlPRldfUENJX01TSV9BRERS X1JBTkdFXzMyKHIpIFwKKwkoKCh1aW50NjRfdCkociktPmFkZHIzMl9oaSA8PCAzMikgfCAodWlu dDY0X3QpKHIpLT5hZGRyMzJfbG8pCisjZGVmaW5lCU9GV19QQ0lfTVNJX0FERFJfUkFOR0VfNjQo cikgXAorCSgoKHVpbnQ2NF90KShyKS0+YWRkcjY0X2hpIDw8IDMyKSB8ICh1aW50NjRfdCkocikt PmFkZHI2NF9sbykKKworc3RydWN0IG9md19wY2lfbXNpX2VxX3RvX2RldmlubyB7CisJdWludDMy X3QJZXFfZmlyc3Q7CisJdWludDMyX3QJZXFfY291bnQ7CisJdWludDMyX3QJZGV2aW5vX2ZpcnN0 OworfTsKKworc3RydWN0IG9md19wY2lfbXNpX3JhbmdlcyB7CisJdWludDMyX3QJZmlyc3Q7CisJ dWludDMyX3QJY291bnQ7Cit9OworCisvKiBkZWZhdWx0IHZhbHVlcyAqLworI2RlZmluZQlPRldf UENJX0xBVEVOQ1kJNjQKKwogLyoKICAqIFRoaXMgaGFzIHRoZSAzIDMyYml0IGNlbGwgdmFsdWVz LCBwbHVzIDIgbW9yZSB0byBtYWtlIHVwIGEgNjQtYml0IHNpemUuCiAgKi8KQEAgLTEwMCw0ICsx NDEsODcgQEAgc3RydWN0IG9md19wY2lfcmVnaXN0ZXIgewogCXVfaW50MzJfdAlzaXplX2xvOwog fTsKIAorc3RydWN0IG9md19wY2lfY2VsbF9pbmZvIHsKKwlwY2VsbF90IGhvc3RfYWRkcmVzc19j ZWxsczsKKwlwY2VsbF90IHBjaV9hZGRyZXNzX2NlbGw7CisJcGNlbGxfdCBzaXplX2NlbGxzOwor IH07CisKK3N0cnVjdCBvZndfcGNpX3JhbmdlIHsKKwl1aW50MzJfdAlwY2lfaGk7CisJdWludDY0 X3QJcGNpOworCXVpbnQ2NF90CWhvc3Q7CisJdWludDY0X3QJc2l6ZTsKK307CisKKy8qCisgKiBR dWlya3MgZm9yIHNvbWUgYWRhcHRlcnMKKyAqLworZW51bSB7CisJT0ZXX1BDSV9RVUlSS19SQU5H RVNfT05fQ0hJTERSRU4gPSAxLAorfTsKKworLyoKKyAqIEluZGV4IGludG8gdGhlIHNjX2JoW10g YXJyYXksIGl0IGlzCisgKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBQQ0kgc3BhY2UgcmFuZ2VzIHR5 cGUKKyAqLworZW51bSBvZndfcGNpX3Jhbmdlc190eXBlIHsKKwlPRldfUENJX0NPTkZJRyA9IDAs CisJT0ZXX1BDSV9JTywKKwlPRldfUENJX01FTTMyLAorCU9GV19QQ0lfTUVNNjQKK307CisKK3N0 cnVjdCBvZndfcGNpX3NvZnRjIHsKKwlkZXZpY2VfdAlzY19kZXY7CisJcGhhbmRsZV90CXNjX25v ZGU7CisJaW50CQlzY19idXM7CisJaW50CQlzY19pbml0aWFsaXplZDsKKwlpbnQJCXNjX3F1aXJr czsKKwl1aW50OF90CQlzY19zZWNidXM7CisJdWludDhfdAkJc2Nfc3ViYnVzOworCisJc3RydWN0 IG9md19wY2lfcmFuZ2UJCSpzY19yYW5nZTsKKwlpbnQJCQkJc2NfbnJhbmdlOworCXN0cnVjdCBv ZndfcGNpX2NlbGxfaW5mbwkqc2NfY2VsbF9pbmZvOworCisJc3RydWN0IHJtYW4JCQlzY19pb19y bWFuOworCXN0cnVjdCBybWFuCQkJc2NfbWVtX3JtYW47CisJYnVzX3NwYWNlX3RhZ190CQkJc2Nf bWVtdDsKKwlidXNfc3BhY2VfdGFnX3QJCQlzY19jZmd0OworCWJ1c19zcGFjZV90YWdfdAkJCXNj X2lvdDsKKwlidXNfZG1hX3RhZ190CQkJc2NfZG1hdDsKKwlidXNfc3BhY2VfaGFuZGxlX3QJCXNj X2JoW09GV19QQ0lfU1BBQ0VfTlVNXTsKKworCXN0cnVjdCBvZndfYnVzX2lpbmZvCQlzY19wY2lf aWluZm87Cit9OworCitpbnQgb2Z3X3BjaV9pbml0KGRldmljZV90KTsKK2ludCBvZndfcGNpX2F0 dGFjaChkZXZpY2VfdCk7CitpbnQgb2Z3X3BjaV9yZWFkX2l2YXIoZGV2aWNlX3QsIGRldmljZV90 LCBpbnQsIHVpbnRwdHJfdCAqKTsKK2ludCBvZndfcGNpX3dyaXRlX2l2YXIoZGV2aWNlX3QsIGRl dmljZV90LCBpbnQsIHVpbnRwdHJfdCk7CitpbnQgb2Z3X3BjaV9yb3V0ZV9pbnRlcnJ1cHQoZGV2 aWNlX3QsIGRldmljZV90LCBpbnQpOworaW50IG9md19wY2lfbnJhbmdlcyhwaGFuZGxlX3QsIHN0 cnVjdCBvZndfcGNpX2NlbGxfaW5mbyAqKTsKK2ludCBvZndfcGNpX2ZpbGxfcmFuZ2VzKHBoYW5k bGVfdCwgc3RydWN0IG9md19wY2lfcmFuZ2UgKik7CisKK2ludCBvZndfcGNpX2FkanVzdF9yZXNv dXJjZShkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwKKyAgICBzdHJ1Y3QgcmVzb3VyY2UgKiwgdV9s b25nLCB1X2xvbmcpOworc3RydWN0IHJlc291cmNlICogb2Z3X3BjaV9hbGxvY19yZXNvdXJjZShk ZXZpY2VfdCwgZGV2aWNlX3QsCisgICAgaW50LCBpbnQgKiwgdV9sb25nLCB1X2xvbmcsIHVfbG9u ZywgdV9pbnQpOworaW50IHNwYXJjNjRfb2Z3X3BjaV9hY3RpdmF0ZV9yZXNvdXJjZShkZXZpY2Vf dCwgZGV2aWNlX3QsIGludCwgaW50LAorICAgIHN0cnVjdCByZXNvdXJjZSAqKTsKK2ludCBzcGFy YzY0X29md19wY2lfZGVhY3RpdmF0ZV9yZXNvdXJjZShkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwg aW50LAorICAgIHN0cnVjdCByZXNvdXJjZSAqKTsKKworaW50IG9md19wY2lfYXR0YWNoX2NvbW1v bihkZXZpY2VfdCwgYnVzX2RtYV90YWdfdCwgdV9sb25nLCB1X2xvbmcpOwordWludDMyX3Qgb2Z3 X3BjaV9yZWFkX2NvbmZpZ19jb21tb24oZGV2aWNlX3QsIHVfaW50LCB1X2xvbmcsIHVfaW50LCB1 X2ludCwKKyAgICB1X2ludCwgdV9pbnQsIGludCk7Cit2b2lkIG9md19wY2lfd3JpdGVfY29uZmln X2NvbW1vbihkZXZpY2VfdCwgdV9pbnQsIHVfbG9uZywgdV9pbnQsIHVfaW50LAorICAgIHVfaW50 LCB1X2ludCwgdWludDMyX3QsIGludCk7CitvZndfcGNpX2ludHJfdCBvZndfcGNpX3JvdXRlX2lu dGVycnVwdF9jb21tb24oZGV2aWNlX3QsIGRldmljZV90LCBpbnQpOwordm9pZCBvZndfcGNpX2Rt YW1hcF9zeW5jX3N0c3Rfb3JkZXJfY29tbW9uKHZvaWQpOworCitvZndfYnVzX2dldF9ub2RlX3Qg b2Z3X3BjaV9nZXRfbm9kZTsKK2J1c19nZXRfZG1hX3RhZ190IG9md19wY2lfZ2V0X2RtYV90YWc7 CisKICNlbmRpZiAvKiBfREVWX09GV19PRldfUENJX0hfICovCmRpZmYgLS1naXQgYS9zeXMvZGV2 L29mdy9vZndfc3Vici5jIGIvc3lzL2Rldi9vZncvb2Z3X3N1YnIuYwppbmRleCA0ZDE0ZGI3Li5l OWI2NmMyIDEwMDY0NAotLS0gYS9zeXMvZGV2L29mdy9vZndfc3Vici5jCisrKyBiL3N5cy9kZXYv b2Z3L29md19zdWJyLmMKQEAgLTM5LDggKzM5LDkgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwog I2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CiAKICNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+ Ci0jaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfc3Vi ci5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1c19zdWJyLmg+CisjaW5jbHVkZSA8ZGV2L29m dy9vZndfcGNpLmg+CiAKIHN0YXRpYyB2b2lkCiBnZXRfYWRkcl9wcm9wcyhwaGFuZGxlX3Qgbm9k ZSwgdWludDMyX3QgKmFkZHJwLCB1aW50MzJfdCAqc2l6ZXAsIGludCAqcGNpcCkKZGlmZiAtLWdp dCBhL3N5cy9kZXYvdnQvaHcvb2Z3ZmIvb2Z3ZmIuYyBiL3N5cy9kZXYvdnQvaHcvb2Z3ZmIvb2Z3 ZmIuYwppbmRleCAwNzc2YThlLi5mZjQ2N2ZhIDEwMDY0NAotLS0gYS9zeXMvZGV2L3Z0L2h3L29m d2ZiL29md2ZiLmMKKysrIGIvc3lzL2Rldi92dC9ody9vZndmYi9vZndmYi5jCkBAIC0zMSw2ICsz MSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiAj aW5jbHVkZSA8c3lzL3N5c3RtLmg+CiAjaW5jbHVkZSA8c3lzL2ZiaW8uaD4KKyNpbmNsdWRlIDxz eXMvcm1hbi5oPgogCiAjaW5jbHVkZSA8ZGV2L3Z0L3Z0Lmg+CiAjaW5jbHVkZSA8ZGV2L3Z0L2h3 L2ZiL3Z0X2ZiLmg+CkBAIC00Niw2ICs0Nyw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIAog I2luY2x1ZGUgPGRldi9vZncvb3BlbmZpcm0uaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMu aD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19idXNfc3Vici5oPgogI2luY2x1ZGUgPGRldi9vZncv b2Z3X3BjaS5oPgogCiBzdHJ1Y3Qgb2Z3ZmJfc29mdGMgewpkaWZmIC0tZ2l0IGEvc3lzL3Bvd2Vy cGMvbXBjODV4eC9wY2lfbXBjODV4eC5jIGIvc3lzL3Bvd2VycGMvbXBjODV4eC9wY2lfbXBjODV4 eC5jCmluZGV4IDQzOTdhYzAuLmRlNTVhZmMgMTAwNjQ0Ci0tLSBhL3N5cy9wb3dlcnBjL21wYzg1 eHgvcGNpX21wYzg1eHguYworKysgYi9zeXMvcG93ZXJwYy9tcGM4NXh4L3BjaV9tcGM4NXh4LmMK QEAgLTU1LDE1ICs1NSwxMyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8dm0v dm0uaD4KICNpbmNsdWRlIDx2bS9wbWFwLmg+CiAKLSNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2ku aD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19i dXNfc3Vici5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X3BjaS5oPgogI2luY2x1ZGUgPGRldi9w Y2kvcGNpdmFyLmg+CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2lyZWcuaD4KICNpbmNsdWRlIDxkZXYv cGNpL3BjaWJfcHJpdmF0ZS5oPgogCi0jaW5jbHVkZSA8cG93ZXJwYy9vZncvb2Z3X3BjaS5oPgot CiAjaW5jbHVkZSAib2Z3X2J1c19pZi5oIgogI2luY2x1ZGUgInBjaWJfaWYuaCIKIApkaWZmIC0t Z2l0IGEvc3lzL3Bvd2VycGMvb2Z3L29md19tYWNoZGVwLmMgYi9zeXMvcG93ZXJwYy9vZncvb2Z3 X21hY2hkZXAuYwppbmRleCAzMDUxZWIzLi40MDkyMjg4IDEwMDY0NAotLS0gYS9zeXMvcG93ZXJw Yy9vZncvb2Z3X21hY2hkZXAuYworKysgYi9zeXMvcG93ZXJwYy9vZncvb2Z3X21hY2hkZXAuYwpA QCAtNTAsNiArNTAsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAKICNpbmNsdWRlIDxkZXYv ZmR0L2ZkdF9jb21tb24uaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+CisjaW5jbHVk ZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4K ICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19zdWJy Lmg+CmRpZmYgLS1naXQgYS9zeXMvcG93ZXJwYy9vZncvb2Z3X3BjaS5jIGIvc3lzL3Bvd2VycGMv b2Z3L29md19wY2kuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNhNWJjMC4uMDAw MDAwMAotLS0gYS9zeXMvcG93ZXJwYy9vZncvb2Z3X3BjaS5jCisrKyAvZGV2L251bGwKQEAgLTEs NTU4ICswLDAgQEAKLS8qLQotICogQ29weXJpZ2h0IChjKSAyMDExIE5hdGhhbiBXaGl0ZWhvcm4K LSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQu ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK LSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p Ci0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G QlNESUQoIiRGcmVlQlNEJCIpOwotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5 cy9zeXN0bS5oPgotI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4KLSNpbmNsdWRlIDxzeXMvYnVzLmg+ Ci0jaW5jbHVkZSA8c3lzL2NvbmYuaD4KLSNpbmNsdWRlIDxzeXMva2VybmVsLmg+Ci0KLSNpbmNs dWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+Ci0jaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+Ci0j aW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzLmg+Ci0jaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1 YnIuaD4KLQotI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+Ci0jaW5jbHVkZSA8ZGV2L3BjaS9w Y2lyZWcuaD4KLQotI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+Ci0jaW5jbHVkZSA8bWFjaGluZS9p bnRyX21hY2hkZXAuaD4KLSNpbmNsdWRlIDxtYWNoaW5lL21kX3Zhci5oPgotI2luY2x1ZGUgPG1h Y2hpbmUvcGlvLmg+Ci0jaW5jbHVkZSA8bWFjaGluZS9yZXNvdXJjZS5oPgotCi0jaW5jbHVkZSA8 c3lzL3JtYW4uaD4KLQotI2luY2x1ZGUgPHZtL3ZtLmg+Ci0jaW5jbHVkZSA8dm0vcG1hcC5oPgot Ci0jaW5jbHVkZSA8cG93ZXJwYy9vZncvb2Z3X3BjaS5oPgotCi0jaW5jbHVkZSAicGNpYl9pZi5o IgotCi0vKgotICogQnVzIGludGVyZmFjZS4KLSAqLwotc3RhdGljIGludAkJb2Z3X3BjaV9yZWFk X2l2YXIoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsCi0JCQkgICAgdWludHB0cl90ICopOwotc3Rh dGljIHN0cnVjdAkJcmVzb3VyY2UgKiBvZndfcGNpX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGJ1 cywKLQkJCSAgICBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLCBybWFuX3Jlc190 IHN0YXJ0LAotCQkJICAgIHJtYW5fcmVzX3QgZW5kLCBybWFuX3Jlc190IGNvdW50LCB1X2ludCBm bGFncyk7Ci1zdGF0aWMgaW50CQlvZndfcGNpX3JlbGVhc2VfcmVzb3VyY2UoZGV2aWNlX3QgYnVz LCBkZXZpY2VfdCBjaGlsZCwKLSAgICAJCQkgICAgaW50IHR5cGUsIGludCByaWQsIHN0cnVjdCBy ZXNvdXJjZSAqcmVzKTsKLXN0YXRpYyBpbnQJCW9md19wY2lfYWN0aXZhdGVfcmVzb3VyY2UoZGV2 aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKLQkJCSAgICBpbnQgdHlwZSwgaW50IHJpZCwgc3Ry dWN0IHJlc291cmNlICpyZXMpOwotc3RhdGljIGludAkJb2Z3X3BjaV9kZWFjdGl2YXRlX3Jlc291 cmNlKGRldmljZV90IGJ1cywKLSAgICAJCQkgICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBp bnQgcmlkLAotICAgIAkJCSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7Ci1zdGF0aWMgaW50CQlv ZndfcGNpX2FkanVzdF9yZXNvdXJjZShkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLAotCQkJ ICAgIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgcm1hbl9yZXNfdCBzdGFydCwKLQkJ CSAgICBybWFuX3Jlc190IGVuZCk7Ci0KLS8qCi0gKiBwY2liIGludGVyZmFjZS4KLSAqLwotc3Rh dGljIGludAkJb2Z3X3BjaV9tYXhzbG90cyhkZXZpY2VfdCk7Ci1zdGF0aWMgaW50CQlvZndfcGNp X3JvdXRlX2ludGVycnVwdChkZXZpY2VfdCwgZGV2aWNlX3QsIGludCk7Ci0KLS8qCi0gKiBvZndf YnVzIGludGVyZmFjZQotICovCi1zdGF0aWMgcGhhbmRsZV90IG9md19wY2lfZ2V0X25vZGUoZGV2 aWNlX3QgYnVzLCBkZXZpY2VfdCBkZXYpOwotCi0vKgotICogbG9jYWwgbWV0aG9kcwotICovCi0K LXN0YXRpYyBpbnQgb2Z3X3BjaV9ucmFuZ2VzKHBoYW5kbGVfdCBub2RlKTsKLXN0YXRpYyBpbnQg b2Z3X3BjaV9maWxsX3JhbmdlcyhwaGFuZGxlX3Qgbm9kZSwgc3RydWN0IG9md19wY2lfcmFuZ2Ug KnJhbmdlcyk7Ci0KLS8qCi0gKiBEcml2ZXIgbWV0aG9kcy4KLSAqLwotc3RhdGljIGRldmljZV9t ZXRob2RfdAlvZndfcGNpX21ldGhvZHNbXSA9IHsKLQkvKiBEZXZpY2UgaW50ZXJmYWNlICovCi0J REVWTUVUSE9EKGRldmljZV9hdHRhY2gsCW9md19wY2lfYXR0YWNoKSwKLQotCS8qIEJ1cyBpbnRl cmZhY2UgKi8KLQlERVZNRVRIT0QoYnVzX3ByaW50X2NoaWxkLAlidXNfZ2VuZXJpY19wcmludF9j aGlsZCksCi0JREVWTUVUSE9EKGJ1c19yZWFkX2l2YXIsCW9md19wY2lfcmVhZF9pdmFyKSwKLQlE RVZNRVRIT0QoYnVzX3NldHVwX2ludHIsCWJ1c19nZW5lcmljX3NldHVwX2ludHIpLAotCURFVk1F VEhPRChidXNfdGVhcmRvd25faW50ciwJYnVzX2dlbmVyaWNfdGVhcmRvd25faW50ciksCi0JREVW TUVUSE9EKGJ1c19hbGxvY19yZXNvdXJjZSwJb2Z3X3BjaV9hbGxvY19yZXNvdXJjZSksCi0JREVW TUVUSE9EKGJ1c19yZWxlYXNlX3Jlc291cmNlLAlvZndfcGNpX3JlbGVhc2VfcmVzb3VyY2UpLAot CURFVk1FVEhPRChidXNfYWN0aXZhdGVfcmVzb3VyY2UsCW9md19wY2lfYWN0aXZhdGVfcmVzb3Vy Y2UpLAotCURFVk1FVEhPRChidXNfZGVhY3RpdmF0ZV9yZXNvdXJjZSwJb2Z3X3BjaV9kZWFjdGl2 YXRlX3Jlc291cmNlKSwKLQlERVZNRVRIT0QoYnVzX2FkanVzdF9yZXNvdXJjZSwJb2Z3X3BjaV9h ZGp1c3RfcmVzb3VyY2UpLAotCi0JLyogcGNpYiBpbnRlcmZhY2UgKi8KLQlERVZNRVRIT0QocGNp Yl9tYXhzbG90cywJb2Z3X3BjaV9tYXhzbG90cyksCi0JREVWTUVUSE9EKHBjaWJfcm91dGVfaW50 ZXJydXB0LAlvZndfcGNpX3JvdXRlX2ludGVycnVwdCksCi0KLQkvKiBvZndfYnVzIGludGVyZmFj ZSAqLwotCURFVk1FVEhPRChvZndfYnVzX2dldF9ub2RlLCAgICAgb2Z3X3BjaV9nZXRfbm9kZSks Ci0KLQlERVZNRVRIT0RfRU5ECi19OwotCi1ERUZJTkVfQ0xBU1NfMChvZndfcGNpLCBvZndfcGNp X2RyaXZlciwgb2Z3X3BjaV9tZXRob2RzLCAwKTsKLQotaW50Ci1vZndfcGNpX2luaXQoZGV2aWNl X3QgZGV2KQotewotCXN0cnVjdAkJb2Z3X3BjaV9zb2Z0YyAqc2M7Ci0JcGhhbmRsZV90CW5vZGU7 Ci0JdV9pbnQzMl90CWJ1c3JhbmdlWzJdOwotCXN0cnVjdAkJb2Z3X3BjaV9yYW5nZSAqcnA7Ci0J aW50CQllcnJvcjsKLQotCW5vZGUgPSBvZndfYnVzX2dldF9ub2RlKGRldik7Ci0Jc2MgPSBkZXZp Y2VfZ2V0X3NvZnRjKGRldik7Ci0Jc2MtPnNjX2luaXRpYWxpemVkID0gMTsKLQotCWlmIChPRl9n ZXRlbmNwcm9wKG5vZGUsICJidXMtcmFuZ2UiLCBidXNyYW5nZSwgc2l6ZW9mKGJ1c3JhbmdlKSkg IT0gOCkKLQkJYnVzcmFuZ2VbMF0gPSAwOwotCi0Jc2MtPnNjX2RldiA9IGRldjsKLQlzYy0+c2Nf bm9kZSA9IG5vZGU7Ci0Jc2MtPnNjX2J1cyA9IGJ1c3JhbmdlWzBdOwotCi0JaWYgKHNjLT5zY19x dWlya3MgJiBPRldfUENJX1FVSVJLX1JBTkdFU19PTl9DSElMRFJFTikgewotCQlwaGFuZGxlX3Qg YzsKLQkJaW50IG4sIGk7Ci0JCQotCQlzYy0+c2NfbnJhbmdlID0gMDsKLQkJZm9yIChjID0gT0Zf Y2hpbGQobm9kZSk7IGMgIT0gMDsgYyA9IE9GX3BlZXIoYykpIHsKLQkJCW4gPSBvZndfcGNpX25y YW5nZXMoYyk7Ci0JCQlpZiAobiA+IDApCi0JCQkJc2MtPnNjX25yYW5nZSArPSBuOwotCQl9Ci0J CWlmIChzYy0+c2NfbnJhbmdlID09IDApCi0JCQlyZXR1cm4gKEVOWElPKTsKLQkJc2MtPnNjX3Jh bmdlID0gbWFsbG9jKHNjLT5zY19ucmFuZ2UgKiBzaXplb2Yoc2MtPnNjX3JhbmdlWzBdKSwKLQkJ ICAgIE1fREVWQlVGLCBNX1dBSVRPSyk7Ci0JCWkgPSAwOwotCQlmb3IgKGMgPSBPRl9jaGlsZChu b2RlKTsgYyAhPSAwOyBjID0gT0ZfcGVlcihjKSkgewotCQkJbiA9IG9md19wY2lfZmlsbF9yYW5n ZXMoYywgJnNjLT5zY19yYW5nZVtpXSk7Ci0JCQlpZiAobiA+IDApCi0JCQkJaSArPSBuOwotCQl9 Ci0JCUtBU1NFUlQoaSA9PSBzYy0+c2NfbnJhbmdlLCAoInJhbmdlIGNvdW50IG1pc21hdGNoIikp OwotCX0gZWxzZSB7Ci0JCXNjLT5zY19ucmFuZ2UgPSBvZndfcGNpX25yYW5nZXMobm9kZSk7Ci0J CWlmIChzYy0+c2NfbnJhbmdlIDw9IDApIHsKLQkJCWRldmljZV9wcmludGYoZGV2LCAiY291bGQg bm90IGdldCByYW5nZXNcbiIpOwotCQkJcmV0dXJuIChFTlhJTyk7Ci0JCX0KLQkJc2MtPnNjX3Jh bmdlID0gbWFsbG9jKHNjLT5zY19ucmFuZ2UgKiBzaXplb2Yoc2MtPnNjX3JhbmdlWzBdKSwKLQkJ ICAgIE1fREVWQlVGLCBNX1dBSVRPSyk7Ci0JCW9md19wY2lfZmlsbF9yYW5nZXMobm9kZSwgc2Mt PnNjX3JhbmdlKTsKLQl9Ci0JCQotCXNjLT5zY19pb19ybWFuLnJtX3R5cGUgPSBSTUFOX0FSUkFZ OwotCXNjLT5zY19pb19ybWFuLnJtX2Rlc2NyID0gIlBDSSBJL08gUG9ydHMiOwotCWVycm9yID0g cm1hbl9pbml0KCZzYy0+c2NfaW9fcm1hbik7Ci0JaWYgKGVycm9yKSB7Ci0JCWRldmljZV9wcmlu dGYoZGV2LCAicm1hbl9pbml0KCkgZmFpbGVkLiBlcnJvciA9ICVkXG4iLCBlcnJvcik7Ci0JCXJl dHVybiAoZXJyb3IpOwotCX0KLQotCXNjLT5zY19tZW1fcm1hbi5ybV90eXBlID0gUk1BTl9BUlJB WTsKLQlzYy0+c2NfbWVtX3JtYW4ucm1fZGVzY3IgPSAiUENJIE1lbW9yeSI7Ci0JZXJyb3IgPSBy bWFuX2luaXQoJnNjLT5zY19tZW1fcm1hbik7Ci0JaWYgKGVycm9yKSB7Ci0JCWRldmljZV9wcmlu dGYoZGV2LCAicm1hbl9pbml0KCkgZmFpbGVkLiBlcnJvciA9ICVkXG4iLCBlcnJvcik7Ci0JCXJl dHVybiAoZXJyb3IpOwotCX0KLQotCWZvciAocnAgPSBzYy0+c2NfcmFuZ2U7IHJwIDwgc2MtPnNj X3JhbmdlICsgc2MtPnNjX25yYW5nZSAmJgotCSAgICAgICBycC0+cGNpX2hpICE9IDA7IHJwKysp IHsKLQkJZXJyb3IgPSAwOwotCi0JCXN3aXRjaCAocnAtPnBjaV9oaSAmIE9GV19QQ0lfUEhZU19I SV9TUEFDRU1BU0spIHsKLQkJY2FzZSBPRldfUENJX1BIWVNfSElfU1BBQ0VfQ09ORklHOgotCQkJ YnJlYWs7Ci0JCWNhc2UgT0ZXX1BDSV9QSFlTX0hJX1NQQUNFX0lPOgotCQkJZXJyb3IgPSBybWFu X21hbmFnZV9yZWdpb24oJnNjLT5zY19pb19ybWFuLCBycC0+cGNpLAotCQkJICAgIHJwLT5wY2kg KyBycC0+c2l6ZSAtIDEpOwotCQkJYnJlYWs7Ci0JCWNhc2UgT0ZXX1BDSV9QSFlTX0hJX1NQQUNF X01FTTMyOgotCQljYXNlIE9GV19QQ0lfUEhZU19ISV9TUEFDRV9NRU02NDoKLQkJCWVycm9yID0g cm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfbWVtX3JtYW4sIHJwLT5wY2ksCi0JCQkgICAgcnAt PnBjaSArIHJwLT5zaXplIC0gMSk7Ci0JCQlicmVhazsKLQkJfQotCi0JCWlmIChlcnJvcikgewot CQkJZGV2aWNlX3ByaW50ZihkZXYsIAotCQkJICAgICJybWFuX21hbmFnZV9yZWdpb24oJXgsICUj angsICUjangpIGZhaWxlZC4gIgotCQkJICAgICJlcnJvciA9ICVkXG4iLCBycC0+cGNpX2hpICYK LQkJCSAgICBPRldfUENJX1BIWVNfSElfU1BBQ0VNQVNLLCBycC0+cGNpLAotCQkJICAgIHJwLT5w Y2kgKyBycC0+c2l6ZSAtIDEsIGVycm9yKTsKLQkJCXJldHVybiAoZXJyb3IpOwotCQl9Ci0JfQot Ci0Jb2Z3X2J1c19zZXR1cF9paW5mbyhub2RlLCAmc2MtPnNjX3BjaV9paW5mbywgc2l6ZW9mKGNl bGxfdCkpOwotCi0JcmV0dXJuIChlcnJvcik7Ci19Ci0KLWludAotb2Z3X3BjaV9hdHRhY2goZGV2 aWNlX3QgZGV2KQotewotCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsKLQlpbnQgZXJyb3I7Ci0K LQlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKLQlpZiAoIXNjLT5zY19pbml0aWFsaXplZCkg ewotCQllcnJvciA9IG9md19wY2lfaW5pdChkZXYpOwotCQlpZiAoZXJyb3IpCi0JCQlyZXR1cm4g KGVycm9yKTsKLQl9Ci0KLQlkZXZpY2VfYWRkX2NoaWxkKGRldiwgInBjaSIsIC0xKTsKLQlyZXR1 cm4gKGJ1c19nZW5lcmljX2F0dGFjaChkZXYpKTsKLX0KLQotc3RhdGljIGludAotb2Z3X3BjaV9t YXhzbG90cyhkZXZpY2VfdCBkZXYpCi17Ci0KLQlyZXR1cm4gKFBDSV9TTE9UTUFYKTsKLX0KLQot c3RhdGljIGludAotb2Z3X3BjaV9yb3V0ZV9pbnRlcnJ1cHQoZGV2aWNlX3QgYnVzLCBkZXZpY2Vf dCBkZXYsIGludCBwaW4pCi17Ci0Jc3RydWN0IG9md19wY2lfc29mdGMgKnNjOwotCXN0cnVjdCBv ZndfcGNpX3JlZ2lzdGVyIHJlZzsKLQl1aW50MzJfdCBwaW50ciwgbWludHJbMl07Ci0JaW50IGlu dHJjZWxsczsKLQlwaGFuZGxlX3QgaXBhcmVudDsKLQotCXNjID0gZGV2aWNlX2dldF9zb2Z0Yyhi dXMpOwotCXBpbnRyID0gcGluOwotCi0JLyogRmFicmljYXRlIGltYXAgaW5mb3JtYXRpb24gaW4g Y2FzZSB0aGlzIGlzbid0IGFuIE9GVyBkZXZpY2UgKi8KLQliemVybygmcmVnLCBzaXplb2YocmVn KSk7Ci0JcmVnLnBoeXNfaGkgPSAocGNpX2dldF9idXMoZGV2KSA8PCBPRldfUENJX1BIWVNfSElf QlVTU0hJRlQpIHwKLQkgICAgKHBjaV9nZXRfc2xvdChkZXYpIDw8IE9GV19QQ0lfUEhZU19ISV9E RVZJQ0VTSElGVCkgfAotCSAgICAocGNpX2dldF9mdW5jdGlvbihkZXYpIDw8IE9GV19QQ0lfUEhZ U19ISV9GVU5DVElPTlNISUZUKTsKLQotCWludHJjZWxscyA9IG9md19idXNfbG9va3VwX2ltYXAo b2Z3X2J1c19nZXRfbm9kZShkZXYpLAotCSAgICAmc2MtPnNjX3BjaV9paW5mbywgJnJlZywgc2l6 ZW9mKHJlZyksICZwaW50ciwgc2l6ZW9mKHBpbnRyKSwKLQkgICAgbWludHIsIHNpemVvZihtaW50 ciksICZpcGFyZW50KTsKLQlpZiAoaW50cmNlbGxzKSB7Ci0JCXBpbnRyID0gb2Z3X2J1c19tYXBf aW50cihkZXYsIGlwYXJlbnQsIGludHJjZWxscywgbWludHIpOwotCQlyZXR1cm4gKHBpbnRyKTsK LQl9Ci0KLQkvKiBNYXliZSBpdCdzIGEgcmVhbCBpbnRlcnJ1cHQsIG5vdCBhbiBpbnRwaW4gKi8K LQlpZiAocGluID4gNCkKLQkJcmV0dXJuIChwaW4pOwotCi0JZGV2aWNlX3ByaW50ZihidXMsICJj b3VsZCBub3Qgcm91dGUgcGluICVkIGZvciBkZXZpY2UgJWQuJWRcbiIsCi0JICAgIHBpbiwgcGNp X2dldF9zbG90KGRldiksIHBjaV9nZXRfZnVuY3Rpb24oZGV2KSk7Ci0JcmV0dXJuIChQQ0lfSU5W QUxJRF9JUlEpOwotfQotCi1zdGF0aWMgaW50Ci1vZndfcGNpX3JlYWRfaXZhcihkZXZpY2VfdCBk ZXYsIGRldmljZV90IGNoaWxkLCBpbnQgd2hpY2gsIHVpbnRwdHJfdCAqcmVzdWx0KQotewotCXN0 cnVjdAlvZndfcGNpX3NvZnRjICpzYzsKLQotCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOwot Ci0Jc3dpdGNoICh3aGljaCkgewotCWNhc2UgUENJQl9JVkFSX0RPTUFJTjoKLQkJKnJlc3VsdCA9 IGRldmljZV9nZXRfdW5pdChkZXYpOwotCQlyZXR1cm4gKDApOwotCWNhc2UgUENJQl9JVkFSX0JV UzoKLQkJKnJlc3VsdCA9IHNjLT5zY19idXM7Ci0JCXJldHVybiAoMCk7Ci0JfQotCi0JcmV0dXJu IChFTk9FTlQpOwotfQotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlICoKLW9md19wY2lfYWxsb2Nf cmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlk LAotICAgIHJtYW5fcmVzX3Qgc3RhcnQsIHJtYW5fcmVzX3QgZW5kLCBybWFuX3Jlc190IGNvdW50 LCB1X2ludCBmbGFncykKLXsKLQlzdHJ1Y3QJCQlvZndfcGNpX3NvZnRjICpzYzsKLQlzdHJ1Y3QJ CQlyZXNvdXJjZSAqcnY7Ci0Jc3RydWN0CQkJcm1hbiAqcm07Ci0JaW50CQkJbmVlZGFjdGl2YXRl OwotCi0JbmVlZGFjdGl2YXRlID0gZmxhZ3MgJiBSRl9BQ1RJVkU7Ci0JZmxhZ3MgJj0gflJGX0FD VElWRTsKLQotCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMpOwotCi0Jc3dpdGNoICh0eXBlKSB7 Ci0JY2FzZSBTWVNfUkVTX01FTU9SWToKLQkJcm0gPSAmc2MtPnNjX21lbV9ybWFuOwotCQlicmVh azsKLQotCWNhc2UgU1lTX1JFU19JT1BPUlQ6Ci0JCXJtID0gJnNjLT5zY19pb19ybWFuOwotCQli cmVhazsKLQotCWNhc2UgU1lTX1JFU19JUlE6Ci0JCXJldHVybiAoYnVzX2FsbG9jX3Jlc291cmNl KGJ1cywgdHlwZSwgcmlkLCBzdGFydCwgZW5kLCBjb3VudCwKLQkJICAgIGZsYWdzKSk7Ci0KLQlk ZWZhdWx0OgotCQlkZXZpY2VfcHJpbnRmKGJ1cywgInVua25vd24gcmVzb3VyY2UgcmVxdWVzdCBm cm9tICVzXG4iLAotCQkgICAgZGV2aWNlX2dldF9uYW1ldW5pdChjaGlsZCkpOwotCQlyZXR1cm4g KE5VTEwpOwotCX0KLQotCXJ2ID0gcm1hbl9yZXNlcnZlX3Jlc291cmNlKHJtLCBzdGFydCwgZW5k LCBjb3VudCwgZmxhZ3MsIGNoaWxkKTsKLQlpZiAocnYgPT0gTlVMTCkgewotCQlkZXZpY2VfcHJp bnRmKGJ1cywgImZhaWxlZCB0byByZXNlcnZlIHJlc291cmNlIGZvciAlc1xuIiwKLQkJICAgIGRl dmljZV9nZXRfbmFtZXVuaXQoY2hpbGQpKTsKLQkJcmV0dXJuIChOVUxMKTsKLQl9Ci0KLQlybWFu X3NldF9yaWQocnYsICpyaWQpOwotCi0JaWYgKG5lZWRhY3RpdmF0ZSkgewotCQlpZiAoYnVzX2Fj dGl2YXRlX3Jlc291cmNlKGNoaWxkLCB0eXBlLCAqcmlkLCBydikgIT0gMCkgewotCQkJZGV2aWNl X3ByaW50ZihidXMsCi0JCQkgICAgImZhaWxlZCB0byBhY3RpdmF0ZSByZXNvdXJjZSBmb3IgJXNc biIsCi0JCQkgICAgZGV2aWNlX2dldF9uYW1ldW5pdChjaGlsZCkpOwotCQkJcm1hbl9yZWxlYXNl X3Jlc291cmNlKHJ2KTsKLQkJCXJldHVybiAoTlVMTCk7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gKHJ2 KTsKLX0KLQotc3RhdGljIGludAotb2Z3X3BjaV9yZWxlYXNlX3Jlc291cmNlKGRldmljZV90IGJ1 cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAotICAgIHN0cnVjdCByZXNvdXJj ZSAqcmVzKQotewotCWlmIChybWFuX2dldF9mbGFncyhyZXMpICYgUkZfQUNUSVZFKSB7Ci0JCWlu dCBlcnJvciA9IGJ1c19kZWFjdGl2YXRlX3Jlc291cmNlKGNoaWxkLCB0eXBlLCByaWQsIHJlcyk7 Ci0JCWlmIChlcnJvcikKLQkJCXJldHVybiBlcnJvcjsKLQl9Ci0KLQlyZXR1cm4gKHJtYW5fcmVs ZWFzZV9yZXNvdXJjZShyZXMpKTsKLX0KLQotc3RhdGljIGludAotb2Z3X3BjaV9hY3RpdmF0ZV9y ZXNvdXJjZShkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwK LSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKLXsKLQlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2M7 Ci0Jdm9pZAkqcDsKLQotCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMpOwotCi0JaWYgKHR5cGUg PT0gU1lTX1JFU19JUlEpIHsKLQkJcmV0dXJuIChidXNfYWN0aXZhdGVfcmVzb3VyY2UoYnVzLCB0 eXBlLCByaWQsIHJlcykpOwotCX0KLQlpZiAodHlwZSA9PSBTWVNfUkVTX01FTU9SWSB8fCB0eXBl ID09IFNZU19SRVNfSU9QT1JUKSB7Ci0JCXN0cnVjdCBvZndfcGNpX3JhbmdlICpycDsKLQkJdm1f b2Zmc2V0X3Qgc3RhcnQ7Ci0JCWludCBzcGFjZTsKLQotCQlzdGFydCA9ICh2bV9vZmZzZXRfdCly bWFuX2dldF9zdGFydChyZXMpOwotCi0JCS8qCi0JCSAqIE1hcCB0aGlzIHRocm91Z2ggdGhlIHJh bmdlcyBsaXN0Ci0JCSAqLwotCQlmb3IgKHJwID0gc2MtPnNjX3JhbmdlOyBycCA8IHNjLT5zY19y YW5nZSArIHNjLT5zY19ucmFuZ2UgJiYKLQkJICAgICAgIHJwLT5wY2lfaGkgIT0gMDsgcnArKykg ewotCQkJaWYgKHN0YXJ0IDwgcnAtPnBjaSB8fCBzdGFydCA+PSBycC0+cGNpICsgcnAtPnNpemUp Ci0JCQkJY29udGludWU7Ci0KLQkJCXN3aXRjaCAocnAtPnBjaV9oaSAmIE9GV19QQ0lfUEhZU19I SV9TUEFDRU1BU0spIHsKLQkJCWNhc2UgT0ZXX1BDSV9QSFlTX0hJX1NQQUNFX0lPOgotCQkJCXNw YWNlID0gU1lTX1JFU19JT1BPUlQ7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIE9GV19QQ0lfUEhZU19I SV9TUEFDRV9NRU0zMjoKLQkJCWNhc2UgT0ZXX1BDSV9QSFlTX0hJX1NQQUNFX01FTTY0OgotCQkJ CXNwYWNlID0gU1lTX1JFU19NRU1PUlk7Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCXNw YWNlID0gLTE7Ci0JCQl9Ci0KLQkJCWlmICh0eXBlID09IHNwYWNlKSB7Ci0JCQkJc3RhcnQgKz0g KHJwLT5ob3N0IC0gcnAtPnBjaSk7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQotCQlpZiAoYm9v dHZlcmJvc2UpCi0JCQlwcmludGYoIm9md19wY2kgbWFwZGV2OiBzdGFydCAlengsIGxlbiAlbGRc biIsIHN0YXJ0LAotCQkJICAgIHJtYW5fZ2V0X3NpemUocmVzKSk7Ci0KLQkJcCA9IHBtYXBfbWFw ZGV2KHN0YXJ0LCAodm1fc2l6ZV90KXJtYW5fZ2V0X3NpemUocmVzKSk7Ci0JCWlmIChwID09IE5V TEwpCi0JCQlyZXR1cm4gKEVOT01FTSk7Ci0KLQkJcm1hbl9zZXRfdmlydHVhbChyZXMsIHApOwot CQlybWFuX3NldF9idXN0YWcocmVzLCAmYnNfbGVfdGFnKTsKLQkJcm1hbl9zZXRfYnVzaGFuZGxl KHJlcywgKHVfbG9uZylwKTsKLQl9Ci0KLQlyZXR1cm4gKHJtYW5fYWN0aXZhdGVfcmVzb3VyY2Uo cmVzKSk7Ci19Ci0KLXN0YXRpYyBpbnQKLW9md19wY2lfZGVhY3RpdmF0ZV9yZXNvdXJjZShkZXZp Y2VfdCBidXMsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKLSAgICBzdHJ1Y3Qg cmVzb3VyY2UgKnJlcykKLXsKLQkvKgotCSAqIElmIHRoaXMgaXMgYSBtZW1vcnkgcmVzb3VyY2Us IHVubWFwIGl0LgotCSAqLwotCWlmICgodHlwZSA9PSBTWVNfUkVTX01FTU9SWSkgfHwgKHR5cGUg PT0gU1lTX1JFU19JT1BPUlQpKSB7Ci0JCXVfaW50MzJfdCBwc2l6ZTsKLQotCQlwc2l6ZSA9IHJt YW5fZ2V0X3NpemUocmVzKTsKLQkJcG1hcF91bm1hcGRldigodm1fb2Zmc2V0X3Qpcm1hbl9nZXRf dmlydHVhbChyZXMpLCBwc2l6ZSk7Ci0JfQotCi0JcmV0dXJuIChybWFuX2RlYWN0aXZhdGVfcmVz b3VyY2UocmVzKSk7Ci19Ci0KLXN0YXRpYyBpbnQKLW9md19wY2lfYWRqdXN0X3Jlc291cmNlKGRl dmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLAotICAgIHN0cnVjdCByZXNvdXJj ZSAqcmVzLCBybWFuX3Jlc190IHN0YXJ0LCBybWFuX3Jlc190IGVuZCkKLXsKLQlzdHJ1Y3Qgcm1h biAqcm0gPSBOVUxMOwotCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29m dGMoYnVzKTsKLQotCUtBU1NFUlQoIShybWFuX2dldF9mbGFncyhyZXMpICYgUkZfQUNUSVZFKSwK LQkgICAgKCJhY3RpdmUgcmVzb3VyY2VzIGNhbm5vdCBiZSBhZGp1c3RlZCIpKTsKLQlpZiAocm1h bl9nZXRfZmxhZ3MocmVzKSAmIFJGX0FDVElWRSkKLQkJcmV0dXJuIChFSU5WQUwpOwotCi0Jc3dp dGNoICh0eXBlKSB7Ci0JY2FzZSBTWVNfUkVTX01FTU9SWToKLQkJcm0gPSAmc2MtPnNjX21lbV9y bWFuOwotCQlicmVhazsKLQljYXNlIFNZU19SRVNfSU9QT1JUOgotCQlybSA9ICZzYy0+c2NfaW9f cm1hbjsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIChFTlhJTyk7Ci0JfQotCi0JaWYg KCFybWFuX2lzX3JlZ2lvbl9tYW5hZ2VyKHJlcywgcm0pKQotCQlyZXR1cm4gKEVJTlZBTCk7Ci0K LQlyZXR1cm4gKHJtYW5fYWRqdXN0X3Jlc291cmNlKHJlcywgc3RhcnQsIGVuZCkpOwotfQotCQot Ci1zdGF0aWMgcGhhbmRsZV90Ci1vZndfcGNpX2dldF9ub2RlKGRldmljZV90IGJ1cywgZGV2aWNl X3QgZGV2KQotewotCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsKLQotCXNjID0gZGV2aWNlX2dl dF9zb2Z0YyhidXMpOwotCS8qIFdlIG9ubHkgaGF2ZSBvbmUgY2hpbGQsIHRoZSBQQ0kgYnVzLCB3 aGljaCBuZWVkcyBvdXIgb3duIG5vZGUuICovCi0KLQlyZXR1cm4gKHNjLT5zY19ub2RlKTsKLX0K LQotc3RhdGljIGludAotb2Z3X3BjaV9ucmFuZ2VzKHBoYW5kbGVfdCBub2RlKQotewotCWludCBo b3N0X2FkZHJlc3NfY2VsbHMgPSAxLCBwY2lfYWRkcmVzc19jZWxscyA9IDMsIHNpemVfY2VsbHMg PSAyOwotCXNzaXplX3QgbmJhc2VfcmFuZ2VzOwotCi0JT0ZfZ2V0ZW5jcHJvcChPRl9wYXJlbnQo bm9kZSksICIjYWRkcmVzcy1jZWxscyIsICZob3N0X2FkZHJlc3NfY2VsbHMsCi0JICAgIHNpemVv Zihob3N0X2FkZHJlc3NfY2VsbHMpKTsKLQlPRl9nZXRlbmNwcm9wKG5vZGUsICIjYWRkcmVzcy1j ZWxscyIsICZwY2lfYWRkcmVzc19jZWxscywKLQkgICAgc2l6ZW9mKHBjaV9hZGRyZXNzX2NlbGxz KSk7Ci0JT0ZfZ2V0ZW5jcHJvcChub2RlLCAiI3NpemUtY2VsbHMiLCAmc2l6ZV9jZWxscywgc2l6 ZW9mKHNpemVfY2VsbHMpKTsKLQotCW5iYXNlX3JhbmdlcyA9IE9GX2dldHByb3BsZW4obm9kZSwg InJhbmdlcyIpOwotCWlmIChuYmFzZV9yYW5nZXMgPD0gMCkKLQkJcmV0dXJuICgtMSk7Ci0KLQly ZXR1cm4gKG5iYXNlX3JhbmdlcyAvIHNpemVvZihjZWxsX3QpIC8KLQkgICAgKHBjaV9hZGRyZXNz X2NlbGxzICsgaG9zdF9hZGRyZXNzX2NlbGxzICsgc2l6ZV9jZWxscykpOwotfQotCi1zdGF0aWMg aW50Ci1vZndfcGNpX2ZpbGxfcmFuZ2VzKHBoYW5kbGVfdCBub2RlLCBzdHJ1Y3Qgb2Z3X3BjaV9y YW5nZSAqcmFuZ2VzKQotewotCWludCBob3N0X2FkZHJlc3NfY2VsbHMgPSAxLCBwY2lfYWRkcmVz c19jZWxscyA9IDMsIHNpemVfY2VsbHMgPSAyOwotCWNlbGxfdCAqYmFzZV9yYW5nZXM7Ci0Jc3Np emVfdCBuYmFzZV9yYW5nZXM7Ci0JaW50IG5yYW5nZXM7Ci0JaW50IGksIGosIGs7Ci0KLQlPRl9n ZXRlbmNwcm9wKE9GX3BhcmVudChub2RlKSwgIiNhZGRyZXNzLWNlbGxzIiwgJmhvc3RfYWRkcmVz c19jZWxscywKLQkgICAgc2l6ZW9mKGhvc3RfYWRkcmVzc19jZWxscykpOwotCU9GX2dldGVuY3By b3Aobm9kZSwgIiNhZGRyZXNzLWNlbGxzIiwgJnBjaV9hZGRyZXNzX2NlbGxzLAotCSAgICBzaXpl b2YocGNpX2FkZHJlc3NfY2VsbHMpKTsKLQlPRl9nZXRlbmNwcm9wKG5vZGUsICIjc2l6ZS1jZWxs cyIsICZzaXplX2NlbGxzLCBzaXplb2Yoc2l6ZV9jZWxscykpOwotCi0JbmJhc2VfcmFuZ2VzID0g T0ZfZ2V0cHJvcGxlbihub2RlLCAicmFuZ2VzIik7Ci0JaWYgKG5iYXNlX3JhbmdlcyA8PSAwKQot CQlyZXR1cm4gKC0xKTsKLQlucmFuZ2VzID0gbmJhc2VfcmFuZ2VzIC8gc2l6ZW9mKGNlbGxfdCkg LwotCSAgICAocGNpX2FkZHJlc3NfY2VsbHMgKyBob3N0X2FkZHJlc3NfY2VsbHMgKyBzaXplX2Nl bGxzKTsKLQotCWJhc2VfcmFuZ2VzID0gbWFsbG9jKG5iYXNlX3JhbmdlcywgTV9ERVZCVUYsIE1f V0FJVE9LKTsKLQlPRl9nZXRlbmNwcm9wKG5vZGUsICJyYW5nZXMiLCBiYXNlX3JhbmdlcywgbmJh c2VfcmFuZ2VzKTsKLQotCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnJhbmdlczsgaSsrKSB7Ci0J CXJhbmdlc1tpXS5wY2lfaGkgPSBiYXNlX3Jhbmdlc1tqKytdOwotCQlyYW5nZXNbaV0ucGNpID0g MDsKLQkJZm9yIChrID0gMDsgayA8IHBjaV9hZGRyZXNzX2NlbGxzIC0gMTsgaysrKSB7Ci0JCQly YW5nZXNbaV0ucGNpIDw8PSAzMjsKLQkJCXJhbmdlc1tpXS5wY2kgfD0gYmFzZV9yYW5nZXNbaisr XTsKLQkJfQotCQlyYW5nZXNbaV0uaG9zdCA9IDA7Ci0JCWZvciAoayA9IDA7IGsgPCBob3N0X2Fk ZHJlc3NfY2VsbHM7IGsrKykgewotCQkJcmFuZ2VzW2ldLmhvc3QgPDw9IDMyOwotCQkJcmFuZ2Vz W2ldLmhvc3QgfD0gYmFzZV9yYW5nZXNbaisrXTsKLQkJfQotCQlyYW5nZXNbaV0uc2l6ZSA9IDA7 Ci0JCWZvciAoayA9IDA7IGsgPCBzaXplX2NlbGxzOyBrKyspIHsKLQkJCXJhbmdlc1tpXS5zaXpl IDw8PSAzMjsKLQkJCXJhbmdlc1tpXS5zaXplIHw9IGJhc2VfcmFuZ2VzW2orK107Ci0JCX0KLQl9 Ci0KLQlmcmVlKGJhc2VfcmFuZ2VzLCBNX0RFVkJVRik7Ci0JcmV0dXJuIChucmFuZ2VzKTsKLX0K LQpkaWZmIC0tZ2l0IGEvc3lzL3Bvd2VycGMvb2Z3L29md19wY2kuaCBiL3N5cy9wb3dlcnBjL29m dy9vZndfcGNpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiODgzZDQuLjAwMDAw MDAKLS0tIGEvc3lzL3Bvd2VycGMvb2Z3L29md19wY2kuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0 ICswLDAgQEAKLS8qLQotICogQ29weXJpZ2h0IChjKSAyMDExIE5hdGhhbiBXaGl0ZWhvcm4KLSAq IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICog QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAq IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotICogT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0g KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBV U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RgotICogU1VDSCBEQU1BR0UuCi0gKgotICogJEZyZWVCU0QkCi0gKi8KLQotI2lmbmRlZiBQT1dF UlBDX09GV19PRldfUENJX0gKLSNkZWZpbmUgUE9XRVJQQ19PRldfT0ZXX1BDSV9ICi0KLS8qCi0g KiBFeHBvcnQgY2xhc3MgZGVmaW5pdGlvbiBmb3IgaW5oZXJpdGFuY2UgcHVycG9zZXMKLSAqLwot REVDTEFSRV9DTEFTUyhvZndfcGNpX2RyaXZlcik7Ci0KLXN0cnVjdCBvZndfcGNpX3JhbmdlIHsK LQl1aW50MzJfdAlwY2lfaGk7Ci0JdWludDY0X3QJcGNpOwotCXVpbnQ2NF90CWhvc3Q7Ci0JdWlu dDY0X3QJc2l6ZTsKLX07Ci0KLS8qCi0gKiBRdWlya3MgZm9yIHNvbWUgYWRhcHRlcnMKLSAqLwot ZW51bSB7Ci0JT0ZXX1BDSV9RVUlSS19SQU5HRVNfT05fQ0hJTERSRU4gPSAxLAotfTsKLQotc3Ry dWN0IG9md19wY2lfc29mdGMgewotCWRldmljZV90CQlzY19kZXY7Ci0JcGhhbmRsZV90CQlzY19u b2RlOwotCWludAkJCXNjX2J1czsKLQlpbnQJCQlzY19pbml0aWFsaXplZDsKLQotCWludAkJCXNj X3F1aXJrczsKLQotCXN0cnVjdCBvZndfcGNpX3JhbmdlCSpzY19yYW5nZTsKLQlpbnQJCQlzY19u cmFuZ2U7Ci0KLQlzdHJ1Y3Qgcm1hbgkJc2NfaW9fcm1hbjsKLQlzdHJ1Y3Qgcm1hbgkJc2NfbWVt X3JtYW47Ci0JYnVzX3NwYWNlX3RhZ190CQlzY19tZW10OwotCWJ1c19kbWFfdGFnX3QJCXNjX2Rt YXQ7Ci0KLQlzdHJ1Y3Qgb2Z3X2J1c19paW5mbyAgICBzY19wY2lfaWluZm87Ci19OwotCi1pbnQg b2Z3X3BjaV9pbml0KGRldmljZV90IGRldik7Ci1pbnQgb2Z3X3BjaV9hdHRhY2goZGV2aWNlX3Qg ZGV2KTsKLQotI2VuZGlmIC8vIFBPV0VSUENfT0ZXX09GV19QQ0lfSAotCmRpZmYgLS1naXQgYS9z eXMvcG93ZXJwYy9vZncvb2Z3X3BjaWJfcGNpLmMgYi9zeXMvcG93ZXJwYy9vZncvb2Z3X3BjaWJf cGNpLmMKaW5kZXggODIzZjdjOS4uMWMxMDVmYiAxMDA2NDQKLS0tIGEvc3lzL3Bvd2VycGMvb2Z3 L29md19wY2liX3BjaS5jCisrKyBiL3N5cy9wb3dlcnBjL29mdy9vZndfcGNpYl9wY2kuYwpAQCAt MzYsOSArMzYsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8c3lzL2tlcm5l bC5oPgogCiAjaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgotI2luY2x1ZGUgPGRldi9vZncv b2Z3X3BjaS5oPgogI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1cy5oPgogI2luY2x1ZGUgPGRldi9v Zncvb2Z3X2J1c19zdWJyLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAKICNpbmNs dWRlIDxkZXYvcGNpL3BjaXZhci5oPgogI2luY2x1ZGUgPGRldi9wY2kvcGNpcmVnLmg+CmRpZmYg LS1naXQgYS9zeXMvcG93ZXJwYy9vZncvb2Z3X3BjaWJ1cy5jIGIvc3lzL3Bvd2VycGMvb2Z3L29m d19wY2lidXMuYwppbmRleCBjZGUzYzc0Li4xMmFhMjI0IDEwMDY0NAotLS0gYS9zeXMvcG93ZXJw Yy9vZncvb2Z3X3BjaWJ1cy5jCisrKyBiL3N5cy9wb3dlcnBjL29mdy9vZndfcGNpYnVzLmMKQEAg LTU0LDggKzU0LDYgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2luY2x1ZGUgInBjaWJfaWYu aCIKICNpbmNsdWRlICJwY2lfaWYuaCIKIAotdHlwZWRlZiB1aW50MzJfdCBvZndfcGNpX2ludHJf dDsKLQogLyogTWV0aG9kcyAqLwogc3RhdGljIGRldmljZV9wcm9iZV90IG9md19wY2lidXNfcHJv YmU7CiBzdGF0aWMgZGV2aWNlX2F0dGFjaF90IG9md19wY2lidXNfYXR0YWNoOwpkaWZmIC0tZ2l0 IGEvc3lzL3Bvd2VycGMvb2Z3L29md19wY2lidXMuaCBiL3N5cy9wb3dlcnBjL29mdy9vZndfcGNp YnVzLmgKaW5kZXggYzdiODJkNy4uZmFkNGQ2NiAxMDA2NDQKLS0tIGEvc3lzL3Bvd2VycGMvb2Z3 L29md19wY2lidXMuaAorKysgYi9zeXMvcG93ZXJwYy9vZncvb2Z3X3BjaWJ1cy5oCkBAIC0zMyw2 ICszMyw3IEBACiAjaW5jbHVkZSA8c3lzL3BjaWlvLmg+CiAKICNpbmNsdWRlIDxkZXYvb2Z3L29m d19idXMuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19idXNfc3Vici5oPgogI2luY2x1ZGUgPGRl di9vZncvb2Z3X3BjaS5oPgogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CiAKZGlmZiAtLWdp dCBhL3N5cy9wb3dlcnBjL29mdy9vZndfc3lzY29ucy5jIGIvc3lzL3Bvd2VycGMvb2Z3L29md19z eXNjb25zLmMKaW5kZXggYjc2NjQ4NS4uYjQyZjE0MiAxMDA2NDQKLS0tIGEvc3lzL3Bvd2VycGMv b2Z3L29md19zeXNjb25zLmMKKysrIGIvc3lzL3Bvd2VycGMvb2Z3L29md19zeXNjb25zLmMKQEAg LTUzLDYgKzUzLDcgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8ZGV2L29m dy9vcGVuZmlybS5oPgogI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1cy5oPgorI2luY2x1ZGUgPGRl di9vZncvb2Z3X2J1c19zdWJyLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAjaW5j bHVkZSA8cG93ZXJwYy9vZncvb2Z3X3N5c2NvbnMuaD4KIApkaWZmIC0tZ2l0IGEvc3lzL3Bvd2Vy cGMvcG93ZXJtYWMvY3BjaHQuYyBiL3N5cy9wb3dlcnBjL3Bvd2VybWFjL2NwY2h0LmMKaW5kZXgg NzY1ZDk0Ni4uNzM3ZTg3MiAxMDA2NDQKLS0tIGEvc3lzL3Bvd2VycGMvcG93ZXJtYWMvY3BjaHQu YworKysgYi9zeXMvcG93ZXJwYy9wb3dlcm1hYy9jcGNodC5jCkBAIC0zNiw3ICszNiw2IEBAIF9f RkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxzeXMvcm1hbi5oPgogCiAjaW5jbHVkZSA8 ZGV2L29mdy9vcGVuZmlybS5oPgotI2luY2x1ZGUgPGRldi9vZncvb2Z3X3BjaS5oPgogCiAjaW5j bHVkZSA8ZGV2L3BjaS9wY2l2YXIuaD4KICNpbmNsdWRlIDxkZXYvcGNpL3BjaXJlZy5oPgpAQCAt NTEsNyArNTAsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAKICNpbmNsdWRlIDxkZXYvb2Z3 L29md19idXMuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXNfc3Vici5oPgotI2luY2x1ZGUg PHBvd2VycGMvb2Z3L29md19wY2kuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAog I2luY2x1ZGUgPHZtL3ZtLmg+CiAjaW5jbHVkZSA8dm0vcG1hcC5oPgpkaWZmIC0tZ2l0IGEvc3lz L3Bvd2VycGMvcG93ZXJtYWMvZ3JhY2tsZS5jIGIvc3lzL3Bvd2VycGMvcG93ZXJtYWMvZ3JhY2ts ZS5jCmluZGV4IDk1ZDU5YTEuLmYwOTI4ZjMgMTAwNjQ0Ci0tLSBhL3N5cy9wb3dlcnBjL3Bvd2Vy bWFjL2dyYWNrbGUuYworKysgYi9zeXMvcG93ZXJwYy9wb3dlcm1hYy9ncmFja2xlLmMKQEAgLTM3 LDkgKzM3LDkgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2luY2x1ZGUgPHN5cy9wcm9jLmg+ CiAKICNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+Ci0jaW5jbHVkZSA8ZGV2L29mdy9vZndf cGNpLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9v ZndfYnVzX3N1YnIuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2luY2x1ZGUg PGRldi9wY2kvcGNpdmFyLmg+CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2lyZWcuaD4KQEAgLTUyLDcg KzUyLDYgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8c3lzL3JtYW4uaD4K IAotI2luY2x1ZGUgPHBvd2VycGMvb2Z3L29md19wY2kuaD4KICNpbmNsdWRlIDxwb3dlcnBjL3Bv d2VybWFjL2dyYWNrbGV2YXIuaD4KIAogI2luY2x1ZGUgPHZtL3ZtLmg+CmRpZmYgLS1naXQgYS9z eXMvcG93ZXJwYy9wb3dlcm1hYy91bmlub3J0aC5jIGIvc3lzL3Bvd2VycGMvcG93ZXJtYWMvdW5p bm9ydGguYwppbmRleCBlMzRjOWQ4Li4zNTc5MjRhIDEwMDY0NAotLS0gYS9zeXMvcG93ZXJwYy9w b3dlcm1hYy91bmlub3J0aC5jCisrKyBiL3N5cy9wb3dlcnBjL3Bvd2VybWFjL3VuaW5vcnRoLmMK QEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiAKICNpbmNsdWRlIDxk ZXYvb2Z3L29wZW5maXJtLmg+Ci0jaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAjaW5jbHVk ZSA8ZGV2L29mdy9vZndfYnVzLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4K KyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFy Lmg+CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2lyZWcuaD4KZGlmZiAtLWdpdCBhL3N5cy9wb3dlcnBj L3Bvd2VybWFjL3VuaW5vcnRocGNpLmMgYi9zeXMvcG93ZXJwYy9wb3dlcm1hYy91bmlub3J0aHBj aS5jCmluZGV4IDlkYTA2ZmYuLjVjYjIxYzEgMTAwNjQ0Ci0tLSBhL3N5cy9wb3dlcnBjL3Bvd2Vy bWFjL3VuaW5vcnRocGNpLmMKKysrIGIvc3lzL3Bvd2VycGMvcG93ZXJtYWMvdW5pbm9ydGhwY2ku YwpAQCAtMzQsOSArMzQsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8c3lz L2tlcm5lbC5oPgogCiAjaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgotI2luY2x1ZGUgPGRl di9vZncvb2Z3X3BjaS5oPgogI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1cy5oPgogI2luY2x1ZGUg PGRldi9vZncvb2Z3X2J1c19zdWJyLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAK ICNpbmNsdWRlIDxkZXYvcGNpL3BjaXZhci5oPgogI2luY2x1ZGUgPGRldi9wY2kvcGNpcmVnLmg+ CkBAIC00OSw3ICs0OSw2IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIAogI2luY2x1ZGUgPHN5 cy9ybWFuLmg+CiAKLSNpbmNsdWRlIDxwb3dlcnBjL29mdy9vZndfcGNpLmg+CiAjaW5jbHVkZSA8 cG93ZXJwYy9wb3dlcm1hYy91bmlub3J0aHZhci5oPgogCiAjaW5jbHVkZSA8dm0vdm0uaD4KZGlm ZiAtLWdpdCBhL3N5cy9wb3dlcnBjL3Bvd2VybWFjL3VuaW5vcnRodmFyLmggYi9zeXMvcG93ZXJw Yy9wb3dlcm1hYy91bmlub3J0aHZhci5oCmluZGV4IGUwODQ3OGQuLmVmZTE2OWMgMTAwNjQ0Ci0t LSBhL3N5cy9wb3dlcnBjL3Bvd2VybWFjL3VuaW5vcnRodmFyLmgKKysrIGIvc3lzL3Bvd2VycGMv cG93ZXJtYWMvdW5pbm9ydGh2YXIuaApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSA8ZGV2 L29mdy9vZndfYnVzX3N1YnIuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KLSNpbmNs dWRlIDxwb3dlcnBjL29mdy9vZndfcGNpLmg+CiAKIHN0cnVjdCB1bmlub3J0aF9zb2Z0YyB7CiAJ c3RydWN0IG9md19wY2lfc29mdGMJcGNpX3NjOwpkaWZmIC0tZ2l0IGEvc3lzL3Bvd2VycGMvcHNl cmllcy9ydGFzX3BjaS5jIGIvc3lzL3Bvd2VycGMvcHNlcmllcy9ydGFzX3BjaS5jCmluZGV4IGJi NzJiNzEuLjEzNDhmYzggMTAwNjQ0Ci0tLSBhL3N5cy9wb3dlcnBjL3BzZXJpZXMvcnRhc19wY2ku YworKysgYi9zeXMvcG93ZXJwYy9wc2VyaWVzL3J0YXNfcGNpLmMKQEAgLTM0LDkgKzM0LDkgQEAg X19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KIAogI2luY2x1 ZGUgPGRldi9vZncvb3BlbmZpcm0uaD4KLSNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KICNp bmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXNfc3Vi ci5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X3BjaS5oPgogCiAjaW5jbHVkZSA8ZGV2L3BjaS9w Y2l2YXIuaD4KICNpbmNsdWRlIDxkZXYvcGNpL3BjaXJlZy5oPgpAQCAtNTMsNyArNTMsNiBAQCBf X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8dm0vdm0uaD4KICNpbmNsdWRlIDx2bS9w bWFwLmg+CiAKLSNpbmNsdWRlIDxwb3dlcnBjL29mdy9vZndfcGNpLmg+CiAjaW5jbHVkZSA8cG93 ZXJwYy9wc2VyaWVzL3BscGFyX2lvbW11Lmg+CiAKICNpbmNsdWRlICJwY2liX2lmLmgiCmRpZmYg LS1naXQgYS9zeXMvc3BhcmM2NC9lYnVzL2VidXMuYyBiL3N5cy9zcGFyYzY0L2VidXMvZWJ1cy5j CmluZGV4IGE1M2IyMGIuLjZmNzA1YWQgMTAwNjQ0Ci0tLSBhL3N5cy9zcGFyYzY0L2VidXMvZWJ1 cy5jCisrKyBiL3N5cy9zcGFyYzY0L2VidXMvZWJ1cy5jCkBAIC03NCw2ICs3NCw3IEBAIF9fRkJT RElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KICNpbmNsdWRl IDxkZXYvb2Z3L29md19idXNfc3Vici5oPgogI2luY2x1ZGUgPGRldi9vZncvb3BlbmZpcm0uaD4K KyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+ CiAjaWZuZGVmIFNVTjRWCkBAIC04NSw4ICs4Niw2IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsK ICNpbmNsdWRlIDxkZXYvcGNpL3BjaXJlZy5oPgogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+ CiAKLSNpbmNsdWRlIDxzcGFyYzY0L3BjaS9vZndfcGNpLmg+Ci0KIC8qCiAgKiBUaGUgcmVnaXN0 ZXIsIGludGVycnVwdCBtYXAgYW5kIGZvciB0aGUgUENJIHZhcmlhbnQgYWxzbyB0aGUgcmFuZ2Vz CiAgKiBwcm9wZXJ0aWVzIGFyZSBpZGVudGljYWwgdG8gdGhlIElTQSBvbmVzLgpkaWZmIC0tZ2l0 IGEvc3lzL3NwYXJjNjQvaXNhL2lzYS5jIGIvc3lzL3NwYXJjNjQvaXNhL2lzYS5jCmluZGV4IDc0 NjI3YzUuLmNlY2NiOGEgMTAwNjQ0Ci0tLSBhL3N5cy9zcGFyYzY0L2lzYS9pc2EuYworKysgYi9z eXMvc3BhcmM2NC9pc2EvaXNhLmMKQEAgLTQ0LDEzICs0NCwxNCBAQCBfX0ZCU0RJRCgiJEZyZWVC U0QkIik7CiAKICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KICNpbmNsdWRlIDxkZXYvb2Z3 L29wZW5maXJtLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4KKyNpbmNsdWRl IDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2luY2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4KIAog I2luY2x1ZGUgPGRldi9wY2kvcGNpcmVnLmg+CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2l2YXIuaD4K IAotI2luY2x1ZGUgPHNwYXJjNjQvcGNpL29md19wY2kuaD4KICNpbmNsdWRlIDxzcGFyYzY0L2lz YS9vZndfaXNhLmg+CiAKIC8qIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBJU0EgYnVzLCBzbyBpdCBp cyBzYWZlIHRvIHVzZSBnbG9iYWxzLiAqLwpkaWZmIC0tZ2l0IGEvc3lzL3NwYXJjNjQvaXNhL29m d19pc2EuYyBiL3N5cy9zcGFyYzY0L2lzYS9vZndfaXNhLmMKaW5kZXggZGJlNWQ4YS4uMmJlODk0 ZCAxMDA2NDQKLS0tIGEvc3lzL3NwYXJjNjQvaXNhL29md19pc2EuYworKysgYi9zeXMvc3BhcmM2 NC9pc2Evb2Z3X2lzYS5jCkBAIC02NSwxNCArNjUsMTUgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIp OwogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgogI2luY2x1 ZGUgPHN5cy9idXMuaD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5oPgogCiAjaW5jbHVkZSA8ZGV2L29m dy9vZndfYnVzX3N1YnIuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+CisjaW5jbHVk ZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAKICNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgogI2luY2x1 ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4KIAotI2luY2x1ZGUgPHNwYXJjNjQvcGNpL29md19wY2ku aD4KICNpbmNsdWRlIDxzcGFyYzY0L2lzYS9vZndfaXNhLmg+CiAKICNpbmNsdWRlICJwY2liX2lm LmgiCkBAIC04Myw5ICs4NCw5IEBAIG9md19pc2FfcmFuZ2VfcmVzdHlwZShzdHJ1Y3QgaXNhX3Jh bmdlcyAqcmFuZ2UpCiAJaW50IHBzID0gSVNBX1JBTkdFX1BTKHJhbmdlKTsKIAogCXN3aXRjaCAo cHMpIHsKLQljYXNlIE9GV19QQ0lfQ1NfSU86CisJY2FzZSBPRldfUENJX0lPOgogCQlyZXR1cm4g KFNZU19SRVNfSU9QT1JUKTsKLQljYXNlIE9GV19QQ0lfQ1NfTUVNMzI6CisJY2FzZSBPRldfUENJ X01FTTMyOgogCQlyZXR1cm4gKFNZU19SRVNfTUVNT1JZKTsKIAlkZWZhdWx0OgogCQlwYW5pYygi b2Z3X2lzYV9yYW5nZV9yZXN0eXBlOiBpbGxlZ2FsIHNwYWNlICV4IiwgcHMpOwpkaWZmIC0tZ2l0 IGEvc3lzL3NwYXJjNjQvcGNpL2FwYi5jIGIvc3lzL3NwYXJjNjQvcGNpL2FwYi5jCmluZGV4IGJh MzY0M2MuLmY3MDllOWEgMTAwNjQ0Ci0tLSBhL3N5cy9zcGFyYzY0L3BjaS9hcGIuYworKysgYi9z eXMvc3BhcmM2NC9wY2kvYXBiLmMKQEAgLTUzLDYgKzUzLDggQEAgX19GQlNESUQoIiRGcmVlQlNE JCIpOwogCiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9v cGVuZmlybS5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1c19zdWJyLmg+CisjaW5jbHVkZSA8 ZGV2L29mdy9vZndfcGNpLmg+CiAKICNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgogI2luY2x1ZGUg PG1hY2hpbmUvcmVzb3VyY2UuaD4KQEAgLTYzLDcgKzY1LDYgQEAgX19GQlNESUQoIiRGcmVlQlNE JCIpOwogCiAjaW5jbHVkZSAicGNpYl9pZi5oIgogCi0jaW5jbHVkZSA8c3BhcmM2NC9wY2kvb2Z3 X3BjaS5oPgogI2luY2x1ZGUgPHNwYXJjNjQvcGNpL29md19wY2liX3N1YnIuaD4KIAogLyoKZGlm ZiAtLWdpdCBhL3N5cy9zcGFyYzY0L3BjaS9maXJlLmMgYi9zeXMvc3BhcmM2NC9wY2kvZmlyZS5j CmluZGV4IGUwNmFkNTAuLmJkNzk1ZDIgMTAwNjQ0Ci0tLSBhL3N5cy9zcGFyYzY0L3BjaS9maXJl LmMKKysrIGIvc3lzL3NwYXJjNjQvcGNpL2ZpcmUuYwpAQCAtNjAsNiArNjAsOCBAQCBfX0ZCU0RJ RCgiJEZyZWVCU0QkIik7CiAKICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KICNpbmNsdWRl IDxkZXYvb2Z3L29wZW5maXJtLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4K KyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2luY2x1ZGUgPHZtL3ZtLmg+CiAjaW5j bHVkZSA8dm0vcG1hcC5oPgpAQCAtNzQsNyArNzYsNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7 CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2lyZWcuaD4KICNpbmNsdWRlIDxkZXYvcGNpL3BjaXZhci5o PgogCi0jaW5jbHVkZSA8c3BhcmM2NC9wY2kvb2Z3X3BjaS5oPgogI2luY2x1ZGUgPHNwYXJjNjQv cGNpL2ZpcmVyZWcuaD4KICNpbmNsdWRlIDxzcGFyYzY0L3BjaS9maXJldmFyLmg+CiAKQEAgLTEz Niw4ICsxMzcsOCBAQCBzdGF0aWMgZGV2aWNlX21ldGhvZF90IGZpcmVfbWV0aG9kc1tdID0gewog CURFVk1FVEhPRChidXNfc2V0dXBfaW50ciwJZmlyZV9zZXR1cF9pbnRyKSwKIAlERVZNRVRIT0Qo YnVzX3RlYXJkb3duX2ludHIsCWZpcmVfdGVhcmRvd25faW50ciksCiAJREVWTUVUSE9EKGJ1c19h bGxvY19yZXNvdXJjZSwJZmlyZV9hbGxvY19yZXNvdXJjZSksCi0JREVWTUVUSE9EKGJ1c19hY3Rp dmF0ZV9yZXNvdXJjZSwgb2Z3X3BjaV9hY3RpdmF0ZV9yZXNvdXJjZSksCi0JREVWTUVUSE9EKGJ1 c19kZWFjdGl2YXRlX3Jlc291cmNlLCBidXNfZ2VuZXJpY19kZWFjdGl2YXRlX3Jlc291cmNlKSwK KwlERVZNRVRIT0QoYnVzX2FjdGl2YXRlX3Jlc291cmNlLCAgIHNwYXJjNjRfb2Z3X3BjaV9hY3Rp dmF0ZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jlc291cmNlLCBzcGFy YzY0X29md19wY2lfZGVhY3RpdmF0ZV9yZXNvdXJjZSksCiAJREVWTUVUSE9EKGJ1c19hZGp1c3Rf cmVzb3VyY2UsCW9md19wY2lfYWRqdXN0X3Jlc291cmNlKSwKIAlERVZNRVRIT0QoYnVzX3JlbGVh c2VfcmVzb3VyY2UsCWJ1c19nZW5lcmljX3JlbGVhc2VfcmVzb3VyY2UpLAogCURFVk1FVEhPRChi dXNfZ2V0X2RtYV90YWcsCW9md19wY2lfZ2V0X2RtYV90YWcpLApkaWZmIC0tZ2l0IGEvc3lzL3Nw YXJjNjQvcGNpL29md19wY2kuYyBiL3N5cy9zcGFyYzY0L3BjaS9vZndfcGNpLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYWJkNDkuLjAwMDAwMDAKLS0tIGEvc3lzL3NwYXJjNjQv cGNpL29md19wY2kuYworKysgL2Rldi9udWxsCkBAIC0xLDQwNiArMCwwIEBACi0vKi0KLSAqIENv cHlyaWdodCAoYykgMTk5OSwgMjAwMCBNYXR0aGV3IFIuIEdyZWVuCi0gKiBDb3B5cmlnaHQgKGMp IDIwMDEgLSAyMDAzIGJ5IFRob21hcyBNb2VzdGwgPHRtbUBGcmVlQlNELm9yZz4KLSAqIENvcHly aWdodCAoYykgMjAwNSAtIDIwMTUgYnkgTWFyaXVzIFN0cm9ibCA8bWFyaXVzQEZyZWVCU0Qub3Jn PgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIFRoZSBuYW1lIG9mIHRo ZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwot ICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKLSAqIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMKLSAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQVJFIERJU0NMQUlNRUQuCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCi0gKiBJTkNJREVOVEFMLCBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAotICogQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikgSE9XRVZFUiBDQVVTRUQKLSAqIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqCi0gKglmcm9tOiBOZXRCU0Q6IHBzeWNo by5jLHYgMS4zNSAyMDAxLzA5LzEwIDE2OjE3OjA2IGVlaCBFeHAKLSAqLwotCi0jaW5jbHVkZSA8 c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0QkIik7Ci0KLSNpbmNsdWRlICJvcHRfb2Z3 X3BjaS5oIgotCi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3N5c3RtLmg+ Ci0jaW5jbHVkZSA8c3lzL2J1cy5oPgotI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KLSNpbmNsdWRl IDxzeXMvcm1hbi5oPgotCi0jaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzLmg+Ci0jaW5jbHVkZSA8 ZGV2L29mdy9vZndfcGNpLmg+Ci0jaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgotCi0jaW5j bHVkZSA8ZGV2L3BjaS9wY2lyZWcuaD4KLSNpbmNsdWRlIDxkZXYvcGNpL3BjaXZhci5oPgotCi0j aW5jbHVkZSA8bWFjaGluZS9hc2kuaD4KLSNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgotI2luY2x1 ZGUgPG1hY2hpbmUvYnVzX3ByaXZhdGUuaD4KLSNpbmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4K LSNpbmNsdWRlIDxtYWNoaW5lL2Zzci5oPgotI2luY2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4K LQotI2luY2x1ZGUgPHNwYXJjNjQvcGNpL29md19wY2kuaD4KLQotaW50Ci1vZndfcGNpX2F0dGFj aF9jb21tb24oZGV2aWNlX3QgZGV2LCBidXNfZG1hX3RhZ190IGRtYXQsIHVfbG9uZyBpb3NpemUs Ci0gICAgdV9sb25nIG1lbXNpemUpCi17Ci0Jc3RydWN0IG9md19wY2lfc29mdGMgKnNjOwotCXN0 cnVjdCBvZndfcGNpX3JhbmdlcyAqcmFuZ2U7Ci0JcGhhbmRsZV90IG5vZGU7Ci0JdWludDMyX3Qg cHJvcF9hcnJheVsyXTsKLQl1X2ludCBpLCBqLCBucmFuZ2U7Ci0KLQlzYyA9IGRldmljZV9nZXRf c29mdGMoZGV2KTsKLQlub2RlID0gb2Z3X2J1c19nZXRfbm9kZShkZXYpOwotCXNjLT5zY19ub2Rl ID0gbm9kZTsKLQlzYy0+c2NfcGNpX2RtYXQgPSBkbWF0OwotCi0JLyogSW5pdGlhbGl6ZSBtZW1v cnkgYW5kIEkvTyBybWFucy4gKi8KLQlzYy0+c2NfcGNpX2lvX3JtYW4ucm1fdHlwZSA9IFJNQU5f QVJSQVk7Ci0Jc2MtPnNjX3BjaV9pb19ybWFuLnJtX2Rlc2NyID0gIlBDSSBJL08gUG9ydHMiOwot CWlmIChybWFuX2luaXQoJnNjLT5zY19wY2lfaW9fcm1hbikgIT0gMCB8fAotCSAgICBybWFuX21h bmFnZV9yZWdpb24oJnNjLT5zY19wY2lfaW9fcm1hbiwgMCwgaW9zaXplKSAhPSAwKSB7Ci0JCWRl dmljZV9wcmludGYoZGV2LCAiZmFpbGVkIHRvIHNldCB1cCBJL08gcm1hblxuIik7Ci0JCXJldHVy biAoRU5YSU8pOwotCX0KLQlzYy0+c2NfcGNpX21lbV9ybWFuLnJtX3R5cGUgPSBSTUFOX0FSUkFZ OwotCXNjLT5zY19wY2lfbWVtX3JtYW4ucm1fZGVzY3IgPSAiUENJIE1lbW9yeSI7Ci0JaWYgKHJt YW5faW5pdCgmc2MtPnNjX3BjaV9tZW1fcm1hbikgIT0gMCB8fAotCSAgICBybWFuX21hbmFnZV9y ZWdpb24oJnNjLT5zY19wY2lfbWVtX3JtYW4sIDAsIG1lbXNpemUpICE9IDApIHsKLQkJZGV2aWNl X3ByaW50ZihkZXYsICJmYWlsZWQgdG8gc2V0IHVwIG1lbW9yeSBybWFuXG4iKTsKLQkJcmV0dXJu IChFTlhJTyk7Ci0JfQotCi0JLyoKLQkgKiBGaW5kIHRoZSBhZGRyZXNzZXMgb2YgdGhlIHZhcmlv dXMgYnVzIHNwYWNlcy4gIFRoZSBwaHlzaWNhbAotCSAqIHN0YXJ0IGFkZHJlc3NlcyBvZiB0aGUg cmFuZ2VzIGFyZSB0aGUgY29uZmlndXJhdGlvbiwgSS9PIGFuZAotCSAqIG1lbW9yeSBoYW5kbGVz LiAgVGhlcmUgc2hvdWxkIG5vdCBiZSBtdWx0aXBsZSBvbmVzIG9mIG9uZSBraW5kLgotCSAqLwot CW5yYW5nZSA9IE9GX2dldHByb3BfYWxsb2Mobm9kZSwgInJhbmdlcyIsIHNpemVvZigqcmFuZ2Up LAotCSAgICAodm9pZCAqKikmcmFuZ2UpOwotCWZvciAoaSA9IDA7IGkgPCBucmFuZ2U7IGkrKykg ewotCQlqID0gT0ZXX1BDSV9SQU5HRV9DUygmcmFuZ2VbaV0pOwotCQlpZiAoc2MtPnNjX3BjaV9i aFtqXSAhPSAwKSB7Ci0JCQlkZXZpY2VfcHJpbnRmKGRldiwgImR1cGxpY2F0ZSByYW5nZSBmb3Ig c3BhY2UgJWRcbiIsCi0JCQkgICAgaik7Ci0JCQlmcmVlKHJhbmdlLCBNX09GV1BST1ApOwotCQkJ cmV0dXJuIChFSU5WQUwpOwotCQl9Ci0JCXNjLT5zY19wY2lfYmhbal0gPSBPRldfUENJX1JBTkdF X1BIWVMoJnJhbmdlW2ldKTsKLQl9Ci0JZnJlZShyYW5nZSwgTV9PRldQUk9QKTsKLQotCS8qCi0J ICogTWFrZSBzdXJlIHRoYXQgdGhlIGV4cGVjdGVkIHJhbmdlcyBhcmUgYWN0dWFsbHkgcHJlc2Vu dC4KLQkgKiBUaGUgT0ZXX1BDSV9DU19NRU02NCBvbmUgaXMgbm90IGN1cnJlbnRseSB1c2VkLgot CSAqLwotCWlmIChzYy0+c2NfcGNpX2JoW09GV19QQ0lfQ1NfQ09ORklHXSA9PSAwKSB7Ci0JCWRl dmljZV9wcmludGYoZGV2LCAibWlzc2luZyBDT05GSUcgcmFuZ2VcbiIpOwotCQlyZXR1cm4gKEVO WElPKTsKLQl9Ci0JaWYgKHNjLT5zY19wY2lfYmhbT0ZXX1BDSV9DU19JT10gPT0gMCkgewotCQlk ZXZpY2VfcHJpbnRmKGRldiwgIm1pc3NpbmcgSU8gcmFuZ2VcbiIpOwotCQlyZXR1cm4gKEVOWElP KTsKLQl9Ci0JaWYgKHNjLT5zY19wY2lfYmhbT0ZXX1BDSV9DU19NRU0zMl0gPT0gMCkgewotCQlk ZXZpY2VfcHJpbnRmKGRldiwgIm1pc3NpbmcgTUVNMzIgcmFuZ2VcbiIpOwotCQlyZXR1cm4gKEVO WElPKTsKLQl9Ci0KLQkvKiBBbGxvY2F0ZSBvdXIgdGFncy4gKi8KLQlzYy0+c2NfcGNpX2lvdCA9 IHNwYXJjNjRfYWxsb2NfYnVzX3RhZyhOVUxMLCBQQ0lfSU9fQlVTX1NQQUNFKTsKLQlpZiAoc2Mt PnNjX3BjaV9pb3QgPT0gTlVMTCkgewotCQlkZXZpY2VfcHJpbnRmKGRldiwgImNvdWxkIG5vdCBh bGxvY2F0ZSBQQ0kgSS9PIHRhZ1xuIik7Ci0JCXJldHVybiAoRU5YSU8pOwotCX0KLQlzYy0+c2Nf cGNpX2NmZ3QgPSBzcGFyYzY0X2FsbG9jX2J1c190YWcoTlVMTCwgUENJX0NPTkZJR19CVVNfU1BB Q0UpOwotCWlmIChzYy0+c2NfcGNpX2NmZ3QgPT0gTlVMTCkgewotCQlkZXZpY2VfcHJpbnRmKGRl diwKLQkJICAgICJjb3VsZCBub3QgYWxsb2NhdGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgdGFn XG4iKTsKLQkJcmV0dXJuIChFTlhJTyk7Ci0JfQotCi0JLyoKLQkgKiBHZXQgdGhlIGJ1cyByYW5n ZSBmcm9tIHRoZSBmaXJtd2FyZS4KLQkgKi8KLQlpID0gT0ZfZ2V0cHJvcChub2RlLCAiYnVzLXJh bmdlIiwgKHZvaWQgKilwcm9wX2FycmF5LAotCSAgICBzaXplb2YocHJvcF9hcnJheSkpOwotCWlm IChpID09IC0xKSB7Ci0JCWRldmljZV9wcmludGYoZGV2LCAiY291bGQgbm90IGdldCBidXMtcmFu Z2VcbiIpOwotCQlyZXR1cm4gKEVOWElPKTsKLQl9Ci0JaWYgKGkgIT0gc2l6ZW9mKHByb3BfYXJy YXkpKSB7Ci0JCWRldmljZV9wcmludGYoZGV2LCAiYnJva2VuIGJ1cy1yYW5nZSAoJWQpIiwgaSk7 Ci0JCXJldHVybiAoRUlOVkFMKTsKLQl9Ci0Jc2MtPnNjX3BjaV9zZWNidXMgPSBwcm9wX2FycmF5 WzBdOwotCXNjLT5zY19wY2lfc3ViYnVzID0gcHJvcF9hcnJheVsxXTsKLQlpZiAoYm9vdHZlcmJv c2UgIT0gMCkKLQkJZGV2aWNlX3ByaW50ZihkZXYsICJidXMgcmFuZ2UgJXUgdG8gJXU7IFBDSSBi dXMgJWRcbiIsCi0JCSAgICBzYy0+c2NfcGNpX3NlY2J1cywgc2MtPnNjX3BjaV9zdWJidXMsIHNj LT5zY19wY2lfc2VjYnVzKTsKLQotCW9md19idXNfc2V0dXBfaWluZm8obm9kZSwgJnNjLT5zY19w Y2lfaWluZm8sIHNpemVvZihvZndfcGNpX2ludHJfdCkpOwotCi0JcmV0dXJuICgwKTsKLX0KLQot dWludDMyX3QKLW9md19wY2lfcmVhZF9jb25maWdfY29tbW9uKGRldmljZV90IGRldiwgdV9pbnQg cmVnbWF4LCB1X2xvbmcgb2Zmc2V0LAotICAgIHVfaW50IGJ1cywgdV9pbnQgc2xvdCwgdV9pbnQg ZnVuYywgdV9pbnQgcmVnLCBpbnQgd2lkdGgpCi17Ci0Jc3RydWN0IG9md19wY2lfc29mdGMgKnNj OwotCWJ1c19zcGFjZV9oYW5kbGVfdCBiaDsKLQl1aW50MzJfdCByLCB3cmQ7Ci0JaW50IGk7Ci0J dWludDE2X3Qgc2hydDsKLQl1aW50OF90IGJ5dGU7Ci0KLQlzYyA9IGRldmljZV9nZXRfc29mdGMo ZGV2KTsKLQlpZiAoYnVzIDwgc2MtPnNjX3BjaV9zZWNidXMgfHwgYnVzID4gc2MtPnNjX3BjaV9z dWJidXMgfHwKLQkgICAgc2xvdCA+IFBDSV9TTE9UTUFYIHx8IGZ1bmMgPiBQQ0lfRlVOQ01BWCB8 fCByZWcgPiByZWdtYXgpCi0JCXJldHVybiAoLTEpOwotCi0JYmggPSBzYy0+c2NfcGNpX2JoW09G V19QQ0lfQ1NfQ09ORklHXTsKLQlzd2l0Y2ggKHdpZHRoKSB7Ci0JY2FzZSAxOgotCQlpID0gYnVz X3NwYWNlX3BlZWtfMShzYy0+c2NfcGNpX2NmZ3QsIGJoLCBvZmZzZXQsICZieXRlKTsKLQkJciA9 IGJ5dGU7Ci0JCWJyZWFrOwotCWNhc2UgMjoKLQkJaSA9IGJ1c19zcGFjZV9wZWVrXzIoc2MtPnNj X3BjaV9jZmd0LCBiaCwgb2Zmc2V0LCAmc2hydCk7Ci0JCXIgPSBzaHJ0OwotCQlicmVhazsKLQlj YXNlIDQ6Ci0JCWkgPSBidXNfc3BhY2VfcGVla180KHNjLT5zY19wY2lfY2ZndCwgYmgsIG9mZnNl dCwgJndyZCk7Ci0JCXIgPSB3cmQ7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXBhbmljKCIlczog YmFkIHdpZHRoICVkIiwgX19mdW5jX18sIHdpZHRoKTsKLQkJLyogTk9UUkVBQ0hFRCAqLwotCX0K LQotCWlmIChpKSB7Ci0jaWZkZWYgT0ZXX1BDSV9ERUJVRwotCQlwcmludGYoIiVzOiByZWFkIGRh dGEgZXJyb3IgcmVhZGluZzogJWQuJWQuJWQ6IDB4JXhcbiIsCi0JCSAgICBfX2Z1bmNfXywgYnVz LCBzbG90LCBmdW5jLCByZWcpOwotI2VuZGlmCi0JCXIgPSAtMTsKLQl9Ci0JcmV0dXJuIChyKTsK LX0KLQotdm9pZAotb2Z3X3BjaV93cml0ZV9jb25maWdfY29tbW9uKGRldmljZV90IGRldiwgdV9p bnQgcmVnbWF4LCB1X2xvbmcgb2Zmc2V0LAotICAgIHVfaW50IGJ1cywgdV9pbnQgc2xvdCwgdV9p bnQgZnVuYywgdV9pbnQgcmVnLCB1aW50MzJfdCB2YWwsIGludCB3aWR0aCkKLXsKLQlzdHJ1Y3Qg b2Z3X3BjaV9zb2Z0YyAqc2M7Ci0JYnVzX3NwYWNlX2hhbmRsZV90IGJoOwotCi0Jc2MgPSBkZXZp Y2VfZ2V0X3NvZnRjKGRldik7Ci0JaWYgKGJ1cyA8IHNjLT5zY19wY2lfc2VjYnVzIHx8IGJ1cyA+ IHNjLT5zY19wY2lfc3ViYnVzIHx8Ci0JICAgIHNsb3QgPiBQQ0lfU0xPVE1BWCB8fCBmdW5jID4g UENJX0ZVTkNNQVggfHwgcmVnID4gcmVnbWF4KQotCQlyZXR1cm47Ci0KLQliaCA9IHNjLT5zY19w Y2lfYmhbT0ZXX1BDSV9DU19DT05GSUddOwotCXN3aXRjaCAod2lkdGgpIHsKLQljYXNlIDE6Ci0J CWJ1c19zcGFjZV93cml0ZV8xKHNjLT5zY19wY2lfY2ZndCwgYmgsIG9mZnNldCwgdmFsKTsKLQkJ YnJlYWs7Ci0JY2FzZSAyOgotCQlidXNfc3BhY2Vfd3JpdGVfMihzYy0+c2NfcGNpX2NmZ3QsIGJo LCBvZmZzZXQsIHZhbCk7Ci0JCWJyZWFrOwotCWNhc2UgNDoKLQkJYnVzX3NwYWNlX3dyaXRlXzQo c2MtPnNjX3BjaV9jZmd0LCBiaCwgb2Zmc2V0LCB2YWwpOwotCQlicmVhazsKLQlkZWZhdWx0Ogot CQlwYW5pYygiJXM6IGJhZCB3aWR0aCAlZCIsIF9fZnVuY19fLCB3aWR0aCk7Ci0JCS8qIE5PVFJF QUNIRUQgKi8KLQl9Ci19Ci0KLW9md19wY2lfaW50cl90Ci1vZndfcGNpX3JvdXRlX2ludGVycnVw dF9jb21tb24oZGV2aWNlX3QgYnJpZGdlLCBkZXZpY2VfdCBkZXYsIGludCBwaW4pCi17Ci0Jc3Ry dWN0IG9md19wY2lfc29mdGMgKnNjOwotCXN0cnVjdCBvZndfcGNpX3JlZ2lzdGVyIHJlZzsKLQlv ZndfcGNpX2ludHJfdCBwaW50ciwgbWludHI7Ci0KLQlzYyA9IGRldmljZV9nZXRfc29mdGMoYnJp ZGdlKTsKLQlwaW50ciA9IHBpbjsKLQlpZiAob2Z3X2J1c19sb29rdXBfaW1hcChvZndfYnVzX2dl dF9ub2RlKGRldiksICZzYy0+c2NfcGNpX2lpbmZvLAotCSAgICAmcmVnLCBzaXplb2YocmVnKSwg JnBpbnRyLCBzaXplb2YocGludHIpLCAmbWludHIsIHNpemVvZihtaW50ciksCi0JICAgIE5VTEwp ICE9IDApCi0JCXJldHVybiAobWludHIpOwotCXJldHVybiAoUENJX0lOVkFMSURfSVJRKTsKLX0K LQotdm9pZAotb2Z3X3BjaV9kbWFtYXBfc3luY19zdHN0X29yZGVyX2NvbW1vbih2b2lkKQotewot CXN0YXRpYyB1X2NoYXIgYnVmW1ZJU19CTE9DS1NJWkVdIF9fYWxpZ25lZChWSVNfQkxPQ0tTSVpF KTsKLQlyZWdpc3Rlcl90IHJlZywgczsKLQotCXMgPSBpbnRyX2Rpc2FibGUoKTsKLQlyZWcgPSBy ZChmcHJzKTsKLQl3cihmcHJzLCByZWcgfCBGUFJTX0ZFRiwgMCk7Ci0JX19hc20gX192b2xhdGls ZSgic3RkYSAlJWYwLCBbJTBdICUxIgotCSAgICA6IDogInIiIChidWYpLCAibiIgKEFTSV9CTEtf Q09NTUlUX1MpKTsKLQltZW1iYXIoU3luYyk7Ci0Jd3IoZnBycywgcmVnLCAwKTsKLQlpbnRyX3Jl c3RvcmUocyk7Ci19Ci0KLWludAotb2Z3X3BjaV9yZWFkX2l2YXIoZGV2aWNlX3QgZGV2LCBkZXZp Y2VfdCBjaGlsZCBfX3VudXNlZCwgaW50IHdoaWNoLAotICAgIHVpbnRwdHJfdCAqcmVzdWx0KQot ewotCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsKLQotCXN3aXRjaCAod2hpY2gpIHsKLQljYXNl IFBDSUJfSVZBUl9ET01BSU46Ci0JCSpyZXN1bHQgPSBkZXZpY2VfZ2V0X3VuaXQoZGV2KTsKLQkJ cmV0dXJuICgwKTsKLQljYXNlIFBDSUJfSVZBUl9CVVM6Ci0JCXNjID0gZGV2aWNlX2dldF9zb2Z0 YyhkZXYpOwotCQkqcmVzdWx0ID0gc2MtPnNjX3BjaV9zZWNidXM7Ci0JCXJldHVybiAoMCk7Ci0J fQotCXJldHVybiAoRU5PRU5UKTsKLX0KLQotc3RydWN0IHJlc291cmNlICoKLW9md19wY2lfYWxs b2NfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAq cmlkLAotICAgIHJtYW5fcmVzX3Qgc3RhcnQsIHJtYW5fcmVzX3QgZW5kLCBybWFuX3Jlc190IGNv dW50LCB1X2ludCBmbGFncykKLXsKLQlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2M7Ci0Jc3RydWN0 IHJlc291cmNlICpydjsKLQlzdHJ1Y3Qgcm1hbiAqcm07Ci0KLQlzYyA9IGRldmljZV9nZXRfc29m dGMoYnVzKTsKLQlzd2l0Y2ggKHR5cGUpIHsKLQljYXNlIFNZU19SRVNfSVJROgotCQkvKgotCQkg KiBYWFg6IERvbid0IGFjY2VwdCBibGFuayByYW5nZXMgZm9yIG5vdywgb25seSBzaW5nbGUKLQkJ ICogaW50ZXJydXB0cy4gIFRoZSBvdGhlciBjYXNlIHNob3VsZCBub3QgaGFwcGVuIHdpdGgKLQkJ ICogdGhlIE1JIFBDSSBjb2RlIC4uLgotCQkgKiBYWFg6IFRoaXMgbWF5IHJldHVybiBhIHJlc291 cmNlIHRoYXQgaXMgb3V0IG9mIHRoZQotCQkgKiByYW5nZSB0aGF0IHdhcyBzcGVjaWZpZWQuICBJ cyB0aGlzIGNvcnJlY3QgLi4uPwotCQkgKi8KLQkJaWYgKHN0YXJ0ICE9IGVuZCkKLQkJCXBhbmlj KCIlczogWFhYOiBpbnRlcnJ1cHQgcmFuZ2UiLCBfX2Z1bmNfXyk7Ci0JCXJldHVybiAoYnVzX2dl bmVyaWNfYWxsb2NfcmVzb3VyY2UoYnVzLCBjaGlsZCwgdHlwZSwgcmlkLAotCQkgICAgc3RhcnQs IGVuZCwgY291bnQsIGZsYWdzKSk7Ci0JY2FzZSBTWVNfUkVTX01FTU9SWToKLQkJcm0gPSAmc2Mt PnNjX3BjaV9tZW1fcm1hbjsKLQkJYnJlYWs7Ci0JY2FzZSBTWVNfUkVTX0lPUE9SVDoKLQkJcm0g PSAmc2MtPnNjX3BjaV9pb19ybWFuOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gKE5V TEwpOwotCX0KLQotCXJ2ID0gcm1hbl9yZXNlcnZlX3Jlc291cmNlKHJtLCBzdGFydCwgZW5kLCBj b3VudCwgZmxhZ3MgJiB+UkZfQUNUSVZFLAotCSAgICBjaGlsZCk7Ci0JaWYgKHJ2ID09IE5VTEwp Ci0JCXJldHVybiAoTlVMTCk7Ci0Jcm1hbl9zZXRfcmlkKHJ2LCAqcmlkKTsKLQotCWlmICgoZmxh Z3MgJiBSRl9BQ1RJVkUpICE9IDAgJiYgYnVzX2FjdGl2YXRlX3Jlc291cmNlKGNoaWxkLCB0eXBl LAotCSAgICAqcmlkLCBydikgIT0gMCkgewotCQlybWFuX3JlbGVhc2VfcmVzb3VyY2UocnYpOwot CQlyZXR1cm4gKE5VTEwpOwotCX0KLQlyZXR1cm4gKHJ2KTsKLX0KLQotaW50Ci1vZndfcGNpX2Fj dGl2YXRlX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBp bnQgcmlkLAotICAgIHN0cnVjdCByZXNvdXJjZSAqcikKLXsKLQlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0 YyAqc2M7Ci0Jc3RydWN0IGJ1c19zcGFjZV90YWcgKnRhZzsKLQotCXNjID0gZGV2aWNlX2dldF9z b2Z0YyhidXMpOwotCXN3aXRjaCAodHlwZSkgewotCWNhc2UgU1lTX1JFU19JUlE6Ci0JCXJldHVy biAoYnVzX2dlbmVyaWNfYWN0aXZhdGVfcmVzb3VyY2UoYnVzLCBjaGlsZCwgdHlwZSwgcmlkLAot CQkgICAgcikpOwotCWNhc2UgU1lTX1JFU19NRU1PUlk6Ci0JCXRhZyA9IHNwYXJjNjRfYWxsb2Nf YnVzX3RhZyhyLCBQQ0lfTUVNT1JZX0JVU19TUEFDRSk7Ci0JCWlmICh0YWcgPT0gTlVMTCkKLQkJ CXJldHVybiAoRU5PTUVNKTsKLQkJcm1hbl9zZXRfYnVzdGFnKHIsIHRhZyk7Ci0JCXJtYW5fc2V0 X2J1c2hhbmRsZShyLCBzYy0+c2NfcGNpX2JoW09GV19QQ0lfQ1NfTUVNMzJdICsKLQkJICAgIHJt YW5fZ2V0X3N0YXJ0KHIpKTsKLQkJYnJlYWs7Ci0JY2FzZSBTWVNfUkVTX0lPUE9SVDoKLQkJcm1h bl9zZXRfYnVzdGFnKHIsIHNjLT5zY19wY2lfaW90KTsKLQkJcm1hbl9zZXRfYnVzaGFuZGxlKHIs IHNjLT5zY19wY2lfYmhbT0ZXX1BDSV9DU19JT10gKwotCQkgICAgcm1hbl9nZXRfc3RhcnQocikp OwotCQlicmVhazsKLQl9Ci0JcmV0dXJuIChybWFuX2FjdGl2YXRlX3Jlc291cmNlKHIpKTsKLX0K LQotaW50Ci1vZndfcGNpX2FkanVzdF9yZXNvdXJjZShkZXZpY2VfdCBidXMsIGRldmljZV90IGNo aWxkLCBpbnQgdHlwZSwKLSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHJtYW5fcmVzX3Qgc3RhcnQs IHJtYW5fcmVzX3QgZW5kKQotewotCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsKLQlzdHJ1Y3Qg cm1hbiAqcm07Ci0KLQlzYyA9IGRldmljZV9nZXRfc29mdGMoYnVzKTsKLQlzd2l0Y2ggKHR5cGUp IHsKLQljYXNlIFNZU19SRVNfSVJROgotCQlyZXR1cm4gKGJ1c19nZW5lcmljX2FkanVzdF9yZXNv dXJjZShidXMsIGNoaWxkLCB0eXBlLCByLAotCQkgICAgc3RhcnQsIGVuZCkpOwotCWNhc2UgU1lT X1JFU19NRU1PUlk6Ci0JCXJtID0gJnNjLT5zY19wY2lfbWVtX3JtYW47Ci0JCWJyZWFrOwotCWNh c2UgU1lTX1JFU19JT1BPUlQ6Ci0JCXJtID0gJnNjLT5zY19wY2lfaW9fcm1hbjsKLQkJYnJlYWs7 Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIChFSU5WQUwpOwotCX0KLQlpZiAocm1hbl9pc19yZWdpb25f bWFuYWdlcihyLCBybSkgPT0gMCkKLQkJcmV0dXJuIChFSU5WQUwpOwotCXJldHVybiAocm1hbl9h ZGp1c3RfcmVzb3VyY2Uociwgc3RhcnQsIGVuZCkpOwotfQotCi1idXNfZG1hX3RhZ190Ci1vZndf cGNpX2dldF9kbWFfdGFnKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQgX191bnVzZWQpCi17 Ci0Jc3RydWN0IG9md19wY2lfc29mdGMgKnNjOwotCi0Jc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGJ1 cyk7Ci0JcmV0dXJuIChzYy0+c2NfcGNpX2RtYXQpOwotfQotCi1waGFuZGxlX3QKLW9md19wY2lf Z2V0X25vZGUoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCBfX3VudXNlZCkKLXsKLQlzdHJ1 Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2M7Ci0KLQlzYyA9IGRldmljZV9nZXRfc29mdGMoYnVzKTsKLQkv KiBXZSBvbmx5IGhhdmUgb25lIGNoaWxkLCB0aGUgUENJIGJ1cywgd2hpY2ggbmVlZHMgb3VyIG93 biBub2RlLiAqLwotCXJldHVybiAoc2MtPnNjX25vZGUpOwotfQpkaWZmIC0tZ2l0IGEvc3lzL3Nw YXJjNjQvcGNpL29md19wY2kuaCBiL3N5cy9zcGFyYzY0L3BjaS9vZndfcGNpLmgKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMWU1ZDkuLjAwMDAwMDAKLS0tIGEvc3lzL3NwYXJjNjQv cGNpL29md19wY2kuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKi0KLSAqIENv cHlyaWdodCAoYykgMTk5OSwgMjAwMCBNYXR0aGV3IFIuIEdyZWVuCi0gKiBBbGwgcmlnaHRzIHJl c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgotICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJl IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0gKiAgICBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycn IEFORCBBTlkgRVhQUkVTUyBPUgotICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwotICogT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4KLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwKLSAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCi0gKiBCVVQgTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB VVNFRAotICogQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRI SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNV Q0ggREFNQUdFLgotICovCi0KLS8qLQotICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IEVkdWFy ZG8gRS4gSG9ydmF0aAotICogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAzIGJ5IFRob21hcyBNb2Vz dGwgPHRtbUBGcmVlQlNELm9yZz4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g KiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9y IHByb21vdGUgcHJvZHVjdHMKLSAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9S Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU SEUgSU1QTElFRCBXQVJSQU5USUVTCi0gKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgotICogSU4gTk8gRVZFTlQg U0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAotICog SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywKLSAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VECi0gKiBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ VFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ TkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKgotICoJ ZnJvbTogTmV0QlNEOiBwc3ljaG9yZWcuaCx2IDEuMTQgMjAwOC8wNS8zMCAwMjoyOTozNyBtcmcg RXhwCi0gKgotICogJEZyZWVCU0QkCi0gKi8KLQotI2lmbmRlZiBfU1BBUkM2NF9QQ0lfT0ZXX1BD SV9IXwotI2RlZmluZQlfU1BBUkM2NF9QQ0lfT0ZXX1BDSV9IXwotCi0jaW5jbHVkZSA8c3lzL3Jt YW4uaD4KLQotI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1c19zdWJyLmg+Ci0KLSNpbmNsdWRlICJv ZndfcGNpX2lmLmgiCi0KLXR5cGVkZWYgdWludDMyX3Qgb2Z3X3BjaV9pbnRyX3Q7Ci0KLS8qIFBD SSByYW5nZSBjaGlsZCBzcGFjZXMuIFhYWDogYXJlIHRoZXNlIE1JPyAqLwotI2RlZmluZQlPRldf UENJX0NTX0NPTkZJRwkweDAwCi0jZGVmaW5lCU9GV19QQ0lfQ1NfSU8JCTB4MDEKLSNkZWZpbmUJ T0ZXX1BDSV9DU19NRU0zMgkweDAyCi0jZGVmaW5lCU9GV19QQ0lfQ1NfTUVNNjQJMHgwMwotI2Rl ZmluZQlPRldfUENJX05VTV9DUwkJNAotCi0vKiBPRlcgZGV2aWNlIHR5cGVzICovCi0jZGVmaW5l CU9GV19UWVBFX1BDSQkJInBjaSIKLSNkZWZpbmUJT0ZXX1RZUEVfUENJRQkJInBjaWV4IgotCi1z dHJ1Y3Qgb2Z3X3BjaV9tc2lfYWRkcl9yYW5nZXMgewotCXVpbnQzMl90CWFkZHIzMl9oaTsKLQl1 aW50MzJfdAlhZGRyMzJfbG87Ci0JdWludDMyX3QJYWRkcjMyX3N6OwotCXVpbnQzMl90CWFkZHI2 NF9oaTsKLQl1aW50MzJfdAlhZGRyNjRfbG87Ci0JdWludDMyX3QJYWRkcjY0X3N6OwotfTsKLQot I2RlZmluZQlPRldfUENJX01TSV9BRERSX1JBTkdFXzMyKHIpIFwKLQkoKCh1aW50NjRfdCkocikt PmFkZHIzMl9oaSA8PCAzMikgfCAodWludDY0X3QpKHIpLT5hZGRyMzJfbG8pCi0jZGVmaW5lCU9G V19QQ0lfTVNJX0FERFJfUkFOR0VfNjQocikgXAotCSgoKHVpbnQ2NF90KShyKS0+YWRkcjY0X2hp IDw8IDMyKSB8ICh1aW50NjRfdCkociktPmFkZHI2NF9sbykKLQotc3RydWN0IG9md19wY2lfbXNp X2VxX3RvX2RldmlubyB7Ci0JdWludDMyX3QJZXFfZmlyc3Q7Ci0JdWludDMyX3QJZXFfY291bnQ7 Ci0JdWludDMyX3QJZGV2aW5vX2ZpcnN0OwotfTsKLQotc3RydWN0IG9md19wY2lfbXNpX3Jhbmdl cyB7Ci0JdWludDMyX3QJZmlyc3Q7Ci0JdWludDMyX3QJY291bnQ7Ci19OwotCi1zdHJ1Y3Qgb2Z3 X3BjaV9yYW5nZXMgewotCXVpbnQzMl90CWNzcGFjZTsKLQl1aW50MzJfdAljaGlsZF9oaTsKLQl1 aW50MzJfdAljaGlsZF9sbzsKLQl1aW50MzJfdAlwaHlzX2hpOwotCXVpbnQzMl90CXBoeXNfbG87 Ci0JdWludDMyX3QJc2l6ZV9oaTsKLQl1aW50MzJfdAlzaXplX2xvOwotfTsKLQotI2RlZmluZQlP RldfUENJX1JBTkdFX0NISUxEKHIpIFwKLQkoKCh1aW50NjRfdCkociktPmNoaWxkX2hpIDw8IDMy KSB8ICh1aW50NjRfdCkociktPmNoaWxkX2xvKQotI2RlZmluZQlPRldfUENJX1JBTkdFX1BIWVMo cikgXAotCSgoKHVpbnQ2NF90KShyKS0+cGh5c19oaSA8PCAzMikgfCAodWludDY0X3QpKHIpLT5w aHlzX2xvKQotI2RlZmluZQlPRldfUENJX1JBTkdFX1NJWkUocikgXAotCSgoKHVpbnQ2NF90KShy KS0+c2l6ZV9oaSA8PCAzMikgfCAodWludDY0X3QpKHIpLT5zaXplX2xvKQotI2RlZmluZQlPRldf UENJX1JBTkdFX0NTKHIpCSgoKHIpLT5jc3BhY2UgPj4gMjQpICYgMHgwMykKLQotLyogZGVmYXVs dCB2YWx1ZXMgKi8KLSNkZWZpbmUJT0ZXX1BDSV9MQVRFTkNZCTY0Ci0KLS8qCi0gKiBDb21tb24g YW5kIGdlbmVyaWMgcGFydHMgb2YgaG9zdC1QQ0ktYnJpZGdlIHN1cHBvcnQKLSAqLwotCi1zdHJ1 Y3Qgb2Z3X3BjaV9zb2Z0YyB7Ci0Jc3RydWN0IHJtYW4JCXNjX3BjaV9tZW1fcm1hbjsKLQlzdHJ1 Y3Qgcm1hbgkJc2NfcGNpX2lvX3JtYW47Ci0KLQlidXNfc3BhY2VfaGFuZGxlX3QJc2NfcGNpX2Jo W09GV19QQ0lfTlVNX0NTXTsKLQlidXNfc3BhY2VfdGFnX3QJCXNjX3BjaV9jZmd0OwotCWJ1c19z cGFjZV90YWdfdAkJc2NfcGNpX2lvdDsKLQlidXNfZG1hX3RhZ190CQlzY19wY2lfZG1hdDsKLQot CXN0cnVjdCBvZndfYnVzX2lpbmZvCXNjX3BjaV9paW5mbzsKLQotCXBoYW5kbGVfdAkJc2Nfbm9k ZTsKLQotCXVpbnQ4X3QJCQlzY19wY2lfc2VjYnVzOwotCXVpbnQ4X3QJCQlzY19wY2lfc3ViYnVz OwotfTsKLQotaW50IG9md19wY2lfYXR0YWNoX2NvbW1vbihkZXZpY2VfdCBkZXYsIGJ1c19kbWFf dGFnX3QgZG1hdCwgdV9sb25nIGlvc2l6ZSwKLSAgICB1X2xvbmcgbWVtc2l6ZSk7Ci11aW50MzJf dCBvZndfcGNpX3JlYWRfY29uZmlnX2NvbW1vbihkZXZpY2VfdCBkZXYsIHVfaW50IHJlZ21heCwg dV9sb25nIG9mZnNldCwKLSAgICB1X2ludCBidXMsIHVfaW50IHNsb3QsIHVfaW50IGZ1bmMsIHVf aW50IHJlZywgaW50IHdpZHRoKTsKLXZvaWQgb2Z3X3BjaV93cml0ZV9jb25maWdfY29tbW9uKGRl dmljZV90IGRldiwgdV9pbnQgcmVnbWF4LCB1X2xvbmcgb2Zmc2V0LAotICAgIHVfaW50IGJ1cywg dV9pbnQgc2xvdCwgdV9pbnQgZnVuYywgdV9pbnQgcmVnLCB1aW50MzJfdCB2YWwsIGludCB3aWR0 aCk7Ci1vZndfcGNpX2ludHJfdCBvZndfcGNpX3JvdXRlX2ludGVycnVwdF9jb21tb24oZGV2aWNl X3QgYnJpZGdlLCBkZXZpY2VfdCBkZXYsCi0gICAgaW50IHBpbik7Ci0KLXZvaWQgb2Z3X3BjaV9k bWFtYXBfc3luY19zdHN0X29yZGVyX2NvbW1vbih2b2lkKTsKLQotYnVzX2FjdGl2YXRlX3Jlc291 cmNlX3Qgb2Z3X3BjaV9hY3RpdmF0ZV9yZXNvdXJjZTsKLWJ1c19hZGp1c3RfcmVzb3VyY2VfdCBv ZndfcGNpX2FkanVzdF9yZXNvdXJjZTsKLWJ1c19hbGxvY19yZXNvdXJjZV90IG9md19wY2lfYWxs b2NfcmVzb3VyY2U7Ci1idXNfZ2V0X2RtYV90YWdfdCBvZndfcGNpX2dldF9kbWFfdGFnOwotYnVz X3JlYWRfaXZhcl90IG9md19wY2lfcmVhZF9pdmFyOwotCi1vZndfYnVzX2dldF9ub2RlX3Qgb2Z3 X3BjaV9nZXRfbm9kZTsKLQotI2VuZGlmIC8qICEgX1NQQVJDNjRfUENJX09GV19QQ0lfSF8gKi8K ZGlmZiAtLWdpdCBhL3N5cy9zcGFyYzY0L3BjaS9vZndfcGNpYi5jIGIvc3lzL3NwYXJjNjQvcGNp L29md19wY2liLmMKaW5kZXggNzk0NDIzNy4uNmI0MjkwYiAxMDA2NDQKLS0tIGEvc3lzL3NwYXJj NjQvcGNpL29md19wY2liLmMKKysrIGIvc3lzL3NwYXJjNjQvcGNpL29md19wY2liLmMKQEAgLTQ2 LDE0ICs0NiwxNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAKICNpbmNsdWRlIDxkZXYvb2Z3 L29md19idXMuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+CisjaW5jbHVkZSA8ZGV2 L29mdy9vZndfYnVzX3N1YnIuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2lu Y2x1ZGUgPGRldi9wY2kvcGNpcmVnLmg+CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2l2YXIuaD4KICNp bmNsdWRlIDxkZXYvcGNpL3BjaWJfcHJpdmF0ZS5oPgogCiAjaW5jbHVkZSAicGNpYl9pZi5oIgor I2luY2x1ZGUgIm9md19wY2lfaWYuaCIKIAotI2luY2x1ZGUgPHNwYXJjNjQvcGNpL29md19wY2ku aD4KICNpbmNsdWRlIDxzcGFyYzY0L3BjaS9vZndfcGNpYl9zdWJyLmg+CiAKICNkZWZpbmUJUENJ X0RFVklEX0FMSV9NNTI0OQkweDUyNDkxMGI5CmRpZmYgLS1naXQgYS9zeXMvc3BhcmM2NC9wY2kv b2Z3X3BjaWJfc3Vici5jIGIvc3lzL3NwYXJjNjQvcGNpL29md19wY2liX3N1YnIuYwppbmRleCAx NGZhNzJiLi40YzJiMTEzIDEwMDY0NAotLS0gYS9zeXMvc3BhcmM2NC9wY2kvb2Z3X3BjaWJfc3Vi ci5jCisrKyBiL3N5cy9zcGFyYzY0L3BjaS9vZndfcGNpYl9zdWJyLmMKQEAgLTM0LDggKzM0LDkg QEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2luY2x1ZGUgPHN5cy9ybWFuLmg+CiAKICNpbmNs dWRlIDxkZXYvb2Z3L29md19idXMuaD4KLSNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KICNp bmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1 YnIuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KIAogI2luY2x1ZGUgPG1hY2hpbmUv YnVzLmg+CiAKQEAgLTQ1LDcgKzQ2LDYgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5j bHVkZSAicGNpYl9pZi5oIgogCi0jaW5jbHVkZSA8c3BhcmM2NC9wY2kvb2Z3X3BjaS5oPgogI2lu Y2x1ZGUgPHNwYXJjNjQvcGNpL29md19wY2liX3N1YnIuaD4KIAogdm9pZApkaWZmIC0tZ2l0IGEv c3lzL3NwYXJjNjQvcGNpL29md19wY2lidXMuYyBiL3N5cy9zcGFyYzY0L3BjaS9vZndfcGNpYnVz LmMKaW5kZXggOTJiOWY3Ni4uMTc4NjA2YiAxMDA2NDQKLS0tIGEvc3lzL3NwYXJjNjQvcGNpL29m d19wY2lidXMuYworKysgYi9zeXMvc3BhcmM2NC9wY2kvb2Z3X3BjaWJ1cy5jCkBAIC0zOSwxMCAr MzksMTIgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2luY2x1ZGUgPHN5cy9saWJrZXJuLmg+ CiAjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgogI2luY2x1ZGUgPHN5cy9wY2lpby5oPgorI2luY2x1 ZGUgPHN5cy9ybWFuLmg+CiAKICNpbmNsdWRlIDxkZXYvb2Z3L29md19idXMuaD4KLSNpbmNsdWRl IDxkZXYvb2Z3L29md19wY2kuaD4KICNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+CisjaW5j bHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2ku aD4KIAogI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CiAjaWZuZGVmIFNVTjRWCkBAIC01NSwxMCAr NTcsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8ZGV2L3BjaS9wY2l2YXIu aD4KICNpbmNsdWRlIDxkZXYvcGNpL3BjaV9wcml2YXRlLmg+CiAKLSNpbmNsdWRlIDxzcGFyYzY0 L3BjaS9vZndfcGNpLmg+Ci0KICNpbmNsdWRlICJwY2liX2lmLmgiCiAjaW5jbHVkZSAicGNpX2lm LmgiCisjaW5jbHVkZSAib2Z3X3BjaV9pZi5oIgogCiAvKiBIZWxwZXIgZnVuY3Rpb25zICovCiBz dGF0aWMgdm9pZCBvZndfcGNpYnVzX3NldHVwX2RldmljZShkZXZpY2VfdCBicmlkZ2UsIHVpbnQz Ml90IGNsb2NrLApkaWZmIC0tZ2l0IGEvc3lzL3NwYXJjNjQvcGNpL3BzeWNoby5jIGIvc3lzL3Nw YXJjNjQvcGNpL3BzeWNoby5jCmluZGV4IDQ5NmRmOTYuLjM0NDFkMDggMTAwNjQ0Ci0tLSBhL3N5 cy9zcGFyYzY0L3BjaS9wc3ljaG8uYworKysgYi9zeXMvc3BhcmM2NC9wY2kvcHN5Y2hvLmMKQEAg LTU4LDYgKzU4LDggQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8ZGV2L29m dy9vZndfYnVzLmg+CiAjaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgorI2luY2x1ZGUgPGRl di9vZncvb2Z3X2J1c19zdWJyLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAKICNp bmNsdWRlIDxtYWNoaW5lL2J1cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUvYnVzX2NvbW1vbi5oPgpA QCAtNzAsMTEgKzcyLDExIEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxkZXYv cGNpL3BjaXJlZy5oPgogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CiAKLSNpbmNsdWRlIDxz cGFyYzY0L3BjaS9vZndfcGNpLmg+CiAjaW5jbHVkZSA8c3BhcmM2NC9wY2kvcHN5Y2hvcmVnLmg+ CiAjaW5jbHVkZSA8c3BhcmM2NC9wY2kvcHN5Y2hvdmFyLmg+CiAKICNpbmNsdWRlICJwY2liX2lm LmgiCisjaW5jbHVkZSAib2Z3X3BjaV9pZi5oIgogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBzeWNo b19kZXNjICpwc3ljaG9fZmluZF9kZXNjKGNvbnN0IHN0cnVjdCBwc3ljaG9fZGVzYyAqLAogICAg IGNvbnN0IGNoYXIgKik7CkBAIC0xMzAsOCArMTMyLDggQEAgc3RhdGljIGRldmljZV9tZXRob2Rf dCBwc3ljaG9fbWV0aG9kc1tdID0gewogCURFVk1FVEhPRChidXNfc2V0dXBfaW50ciwJcHN5Y2hv X3NldHVwX2ludHIpLAogCURFVk1FVEhPRChidXNfdGVhcmRvd25faW50ciwJYnVzX2dlbmVyaWNf dGVhcmRvd25faW50ciksCiAJREVWTUVUSE9EKGJ1c19hbGxvY19yZXNvdXJjZSwJcHN5Y2hvX2Fs bG9jX3Jlc291cmNlKSwKLQlERVZNRVRIT0QoYnVzX2FjdGl2YXRlX3Jlc291cmNlLCBvZndfcGNp X2FjdGl2YXRlX3Jlc291cmNlKSwKLQlERVZNRVRIT0QoYnVzX2RlYWN0aXZhdGVfcmVzb3VyY2Us IGJ1c19nZW5lcmljX2RlYWN0aXZhdGVfcmVzb3VyY2UpLAorCURFVk1FVEhPRChidXNfYWN0aXZh dGVfcmVzb3VyY2UsICAgc3BhcmM2NF9vZndfcGNpX2FjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZN RVRIT0QoYnVzX2RlYWN0aXZhdGVfcmVzb3VyY2UsIHNwYXJjNjRfb2Z3X3BjaV9kZWFjdGl2YXRl X3Jlc291cmNlKSwKIAlERVZNRVRIT0QoYnVzX2FkanVzdF9yZXNvdXJjZSwJb2Z3X3BjaV9hZGp1 c3RfcmVzb3VyY2UpLAogCURFVk1FVEhPRChidXNfcmVsZWFzZV9yZXNvdXJjZSwJYnVzX2dlbmVy aWNfcmVsZWFzZV9yZXNvdXJjZSksCiAJREVWTUVUSE9EKGJ1c19nZXRfZG1hX3RhZywJb2Z3X3Bj aV9nZXRfZG1hX3RhZyksCkBAIC01NDEsOCArNTQzLDggQEAgcHN5Y2hvX2F0dGFjaChkZXZpY2Vf dCBkZXYpCiAJCXBhbmljKCIlczogb2Z3X3BjaV9hdHRhY2hfY29tbW9uKCkgZmFpbGVkIiwgX19m dW5jX18pOwogCiAJLyogQ2xlYXIgYW55IHBlbmRpbmcgUENJIGVycm9yIGJpdHMuICovCi0JUENJ Ql9XUklURV9DT05GSUcoZGV2LCBzYy0+c2Nfb3BzLnNjX3BjaV9zZWNidXMsIFBDU19ERVZJQ0Us IFBDU19GVU5DLAotCSAgICBQQ0lSX1NUQVRVUywgUENJQl9SRUFEX0NPTkZJRyhkZXYsIHNjLT5z Y19vcHMuc2NfcGNpX3NlY2J1cywKKwlQQ0lCX1dSSVRFX0NPTkZJRyhkZXYsIHNjLT5zY19vcHMu c2Nfc2VjYnVzLCBQQ1NfREVWSUNFLCBQQ1NfRlVOQywKKwkgICAgUENJUl9TVEFUVVMsIFBDSUJf UkVBRF9DT05GSUcoZGV2LCBzYy0+c2Nfb3BzLnNjX3NlY2J1cywKIAkgICAgUENTX0RFVklDRSwg UENTX0ZVTkMsIFBDSVJfU1RBVFVTLCAyKSwgMik7CiAJUENJQ1RMX1dSSVRFOChzYywgUENSX0NT LCBQQ0lDVExfUkVBRDgoc2MsIFBDUl9DUykpOwogCVBDSUNUTF9XUklURTgoc2MsIFBDUl9BRlMs IFBDSUNUTF9SRUFEOChzYywgUENSX0FGUykpOwpAQCAtNjA1LDE5ICs2MDcsMTkgQEAgcHN5Y2hv X2F0dGFjaChkZXZpY2VfdCBkZXYpCiAJICogU2V0IHRoZSBsYXRlbmN5IHRpbWVyIHJlZ2lzdGVy IGFzIHRoaXMgaXNuJ3QgYWx3YXlzIGRvbmUgYnkgdGhlCiAJICogZmlybXdhcmUuCiAJICovCi0J UENJQl9XUklURV9DT05GSUcoZGV2LCBzYy0+c2Nfb3BzLnNjX3BjaV9zZWNidXMsIFBDU19ERVZJ Q0UsIFBDU19GVU5DLAorCVBDSUJfV1JJVEVfQ09ORklHKGRldiwgc2MtPnNjX29wcy5zY19zZWNi dXMsIFBDU19ERVZJQ0UsIFBDU19GVU5DLAogCSAgICBQQ0lSX0xBVFRJTUVSLCBPRldfUENJX0xB VEVOQ1ksIDEpOwogCiAJZm9yIChpID0gUENJUl9WRU5ET1I7IGkgPCBQQ0lSX1NUQVRVUzsgaSAr PSBzaXplb2YodWludDE2X3QpKQogCQlsZTE2ZW5jKCZzYy0+c2NfcGNpX2hwYmNmZ1tpXSwKLQkJ ICAgIGJ1c19zcGFjZV9yZWFkXzIoc2MtPnNjX29wcy5zY19wY2lfY2ZndCwKLQkJICAgIHNjLT5z Y19vcHMuc2NfcGNpX2JoW09GV19QQ0lfQ1NfQ09ORklHXSwKLQkJICAgIFBTWUNIT19DT05GX09G RihzYy0+c2Nfb3BzLnNjX3BjaV9zZWNidXMsIFBDU19ERVZJQ0UsCisJCSAgICBidXNfc3BhY2Vf cmVhZF8yKHNjLT5zY19vcHMuc2NfY2ZndCwKKwkJICAgIHNjLT5zY19vcHMuc2NfYmhbT0ZXX1BD SV9DT05GSUddLAorCQkgICAgUFNZQ0hPX0NPTkZfT0ZGKHNjLT5zY19vcHMuc2Nfc2VjYnVzLCBQ Q1NfREVWSUNFLAogCQkgICAgUENTX0ZVTkMsIGkpKSk7CiAJZm9yIChpID0gUENJUl9SRVZJRDsg aSA8PSBQQ0lSX0JJU1Q7IGkgKz0gc2l6ZW9mKHVpbnQ4X3QpKQotCQlzYy0+c2NfcGNpX2hwYmNm Z1tpXSA9IGJ1c19zcGFjZV9yZWFkXzEoc2MtPnNjX29wcy5zY19wY2lfY2ZndCwKLQkJICAgIHNj LT5zY19vcHMuc2NfcGNpX2JoW09GV19QQ0lfQ1NfQ09ORklHXSwgUFNZQ0hPX0NPTkZfT0ZGKAot CQkgICAgc2MtPnNjX29wcy5zY19wY2lfc2VjYnVzLCBQQ1NfREVWSUNFLCBQQ1NfRlVOQywgaSkp OworCQlzYy0+c2NfcGNpX2hwYmNmZ1tpXSA9IGJ1c19zcGFjZV9yZWFkXzEoc2MtPnNjX29wcy5z Y19jZmd0LAorCQkgICAgc2MtPnNjX29wcy5zY19iaFtPRldfUENJX0NPTkZJR10sIFBTWUNIT19D T05GX09GRigKKwkJICAgIHNjLT5zY19vcHMuc2Nfc2VjYnVzLCBQQ1NfREVWSUNFLCBQQ1NfRlVO QywgaSkpOwogCiAJLyoKIAkgKiBPbiBFMjUwIHRoZSBpbnRlcnJ1cHQgbWFwIGVudHJ5IGZvciB0 aGUgRUJ1cyBicmlkZ2UgaXMgd3JvbmcsCkBAIC04ODIsNyArODg0LDcgQEAgcHN5Y2hvX3JlYWRf Y29uZmlnKGRldmljZV90IGRldiwgdV9pbnQgYnVzLCB1X2ludCBzbG90LCB1X2ludCBmdW5jLCB1 X2ludCByZWcsCiAJICogVGhlIFBzeWNobyBicmlkZ2VzIGNvbnRhaW4gYSBkdXBlIG9mIHRoZWly IGhlYWRlciBhdCAweDgwCiAJICogd2hpY2ggd2UgbnVsbGlmeSB0aGF0IHdheSBhbHNvLgogCSAq LwotCWlmIChidXMgPT0gc2MtPnNjX29wcy5zY19wY2lfc2VjYnVzICYmIHNsb3QgPT0gUENTX0RF VklDRSAmJgorCWlmIChidXMgPT0gc2MtPnNjX29wcy5zY19zZWNidXMgJiYgc2xvdCA9PSBQQ1Nf REVWSUNFICYmCiAJICAgIGZ1bmMgPT0gUENTX0ZVTkMpIHsKIAkJaWYgKHJlZyAlIHdpZHRoICE9 IDApCiAJCQlyZXR1cm4gKC0xKTsKQEAgLTg5Myw5ICs4OTUsOSBAQCBwc3ljaG9fcmVhZF9jb25m aWcoZGV2aWNlX3QgZGV2LCB1X2ludCBidXMsIHVfaW50IHNsb3QsIHVfaW50IGZ1bmMsIHVfaW50 IHJlZywKIAkJaWYgKChyZWcgPCBQQ0lSX1NUQVRVUyAmJiByZWcgKyB3aWR0aCA+IFBDSVJfU1RB VFVTKSB8fAogCQkgICAgcmVnID09IFBDSVJfU1RBVFVTIHx8IHJlZyA9PSBQQ0lSX1NUQVRVUyAr IDEpCiAJCQlsZTE2ZW5jKCZzYy0+c2NfcGNpX2hwYmNmZ1tQQ0lSX1NUQVRVU10sCi0JCQkgICAg YnVzX3NwYWNlX3JlYWRfMihzYy0+c2Nfb3BzLnNjX3BjaV9jZmd0LAotCQkJICAgIHNjLT5zY19v cHMuc2NfcGNpX2JoW09GV19QQ0lfQ1NfQ09ORklHXSwKLQkJCSAgICBQU1lDSE9fQ09ORl9PRkYo c2MtPnNjX29wcy5zY19wY2lfc2VjYnVzLAorCQkJICAgIGJ1c19zcGFjZV9yZWFkXzIoc2MtPnNj X29wcy5zY19jZmd0LAorCQkJICAgIHNjLT5zY19vcHMuc2NfYmhbT0ZXX1BDSV9DT05GSUddLAor CQkJICAgIFBTWUNIT19DT05GX09GRihzYy0+c2Nfb3BzLnNjX3NlY2J1cywKIAkJCSAgICBQQ1Nf REVWSUNFLCBQQ1NfRlVOQywgUENJUl9TVEFUVVMpKSk7CiAKIAkJc3dpdGNoICh3aWR0aCkgewpk aWZmIC0tZ2l0IGEvc3lzL3NwYXJjNjQvcGNpL3NjaGl6by5jIGIvc3lzL3NwYXJjNjQvcGNpL3Nj aGl6by5jCmluZGV4IGE5NjE1NWIuLjhlNDRhNWEgMTAwNjQ0Ci0tLSBhL3N5cy9zcGFyYzY0L3Bj aS9zY2hpem8uYworKysgYi9zeXMvc3BhcmM2NC9wY2kvc2NoaXpvLmMKQEAgLTU4LDYgKzU4LDgg QEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzLmg+ CiAjaW5jbHVkZSA8ZGV2L29mdy9vcGVuZmlybS5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1 c19zdWJyLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfcGNpLmg+CiAKICNpbmNsdWRlIDxtYWNo aW5lL2J1cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUvYnVzX2NvbW1vbi5oPgpAQCAtNjksMTEgKzcx LDExIEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxkZXYvcGNpL3BjaXJlZy5o PgogI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CiAKLSNpbmNsdWRlIDxzcGFyYzY0L3BjaS9v ZndfcGNpLmg+CiAjaW5jbHVkZSA8c3BhcmM2NC9wY2kvc2NoaXpvcmVnLmg+CiAjaW5jbHVkZSA8 c3BhcmM2NC9wY2kvc2NoaXpvdmFyLmg+CiAKICNpbmNsdWRlICJwY2liX2lmLmgiCisjaW5jbHVk ZSAib2Z3X3BjaV9pZi5oIgogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNjaGl6b19kZXNjICpzY2hp em9fZ2V0X2Rlc2MoZGV2aWNlX3QpOwogc3RhdGljIHZvaWQgc2NoaXpvX3NldF9pbnRyKHN0cnVj dCBzY2hpem9fc29mdGMgKiwgdV9pbnQsIHVfaW50LApAQCAtMTI3LDggKzEyOSw4IEBAIHN0YXRp YyBkZXZpY2VfbWV0aG9kX3Qgc2NoaXpvX21ldGhvZHNbXSA9IHsKIAlERVZNRVRIT0QoYnVzX3Nl dHVwX2ludHIsCXNjaGl6b19zZXR1cF9pbnRyKSwKIAlERVZNRVRIT0QoYnVzX3RlYXJkb3duX2lu dHIsCWJ1c19nZW5lcmljX3RlYXJkb3duX2ludHIpLAogCURFVk1FVEhPRChidXNfYWxsb2NfcmVz b3VyY2UsCXNjaGl6b19hbGxvY19yZXNvdXJjZSksCi0JREVWTUVUSE9EKGJ1c19hY3RpdmF0ZV9y ZXNvdXJjZSwgb2Z3X3BjaV9hY3RpdmF0ZV9yZXNvdXJjZSksCi0JREVWTUVUSE9EKGJ1c19kZWFj dGl2YXRlX3Jlc291cmNlLCBidXNfZ2VuZXJpY19kZWFjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZN RVRIT0QoYnVzX2FjdGl2YXRlX3Jlc291cmNlLCAgIHNwYXJjNjRfb2Z3X3BjaV9hY3RpdmF0ZV9y ZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jlc291cmNlLCBzcGFyYzY0X29m d19wY2lfZGVhY3RpdmF0ZV9yZXNvdXJjZSksCiAJREVWTUVUSE9EKGJ1c19hZGp1c3RfcmVzb3Vy Y2UsCW9md19wY2lfYWRqdXN0X3Jlc291cmNlKSwKIAlERVZNRVRIT0QoYnVzX3JlbGVhc2VfcmVz b3VyY2UsCWJ1c19nZW5lcmljX3JlbGVhc2VfcmVzb3VyY2UpLAogCURFVk1FVEhPRChidXNfZ2V0 X2RtYV90YWcsCW9md19wY2lfZ2V0X2RtYV90YWcpLApAQCAtNTQ4LDkgKzU1MCw5IEBAIHNjaGl6 b19hdHRhY2goZGV2aWNlX3QgZGV2KQogCQlwYW5pYygiJXM6IG9md19wY2lfYXR0YWNoX2NvbW1v bigpIGZhaWxlZCIsIF9fZnVuY19fKTsKIAogCS8qIENsZWFyIGFueSBwZW5kaW5nIFBDSSBlcnJv ciBiaXRzLiAqLwotCVBDSUJfV1JJVEVfQ09ORklHKGRldiwgc2MtPnNjX29wcy5zY19wY2lfc2Vj YnVzLCBTVFhfQ1NfREVWSUNFLAorCVBDSUJfV1JJVEVfQ09ORklHKGRldiwgc2MtPnNjX29wcy5z Y19zZWNidXMsIFNUWF9DU19ERVZJQ0UsCiAJICAgIFNUWF9DU19GVU5DLCBQQ0lSX1NUQVRVUywg UENJQl9SRUFEX0NPTkZJRyhkZXYsCi0JICAgIHNjLT5zY19vcHMuc2NfcGNpX3NlY2J1cywgU1RY X0NTX0RFVklDRSwgU1RYX0NTX0ZVTkMsIFBDSVJfU1RBVFVTLAorCSAgICBzYy0+c2Nfb3BzLnNj X3NlY2J1cywgU1RYX0NTX0RFVklDRSwgU1RYX0NTX0ZVTkMsIFBDSVJfU1RBVFVTLAogCSAgICAy KSwgMik7CiAJU0NISVpPX1BDSV9TRVQoc2MsIFNUWF9QQ0lfQ1RSTCwgU0NISVpPX1BDSV9SRUFE Xzgoc2MsIFNUWF9QQ0lfQ1RSTCkpOwogCVNDSElaT19QQ0lfU0VUKHNjLCBTVFhfUENJX0FGU1Is IFNDSElaT19QQ0lfUkVBRF84KHNjLCBTVFhfUENJX0FGU1IpKTsKQEAgLTY3OSw3ICs2ODEsNyBA QCBzY2hpem9fYXR0YWNoKGRldmljZV90IGRldikKIAkgKiBTZXQgdGhlIGxhdGVuY3kgdGltZXIg cmVnaXN0ZXIgYXMgdGhpcyBpc24ndCBhbHdheXMgZG9uZSBieSB0aGUKIAkgKiBmaXJtd2FyZS4K IAkgKi8KLQlQQ0lCX1dSSVRFX0NPTkZJRyhkZXYsIHNjLT5zY19vcHMuc2NfcGNpX3NlY2J1cywg U1RYX0NTX0RFVklDRSwKKwlQQ0lCX1dSSVRFX0NPTkZJRyhkZXYsIHNjLT5zY19vcHMuc2Nfc2Vj YnVzLCBTVFhfQ1NfREVWSUNFLAogCSAgICBTVFhfQ1NfRlVOQywgUENJUl9MQVRUSU1FUiwgT0ZX X1BDSV9MQVRFTkNZLCAxKTsKIAogI2RlZmluZQlTQ0hJWk9fU1lTQ1RMX0FERF9VSU5UKG5hbWUs IGFyZywgZGVzYykJCQkJXApAQCAtODA0LDcgKzgwNiw3IEBAIHNjaGl6b19wY2lfYnVzKHZvaWQg KmFyZykKIAkJeHN0YXQgPSBTQ0hJWk9fUENJX1JFQURfOChzYywgWE1TX1BDSV9YX0VSUl9TVEFU KTsKIAllbHNlCiAJCXhzdGF0ID0gMDsKLQlzdGF0dXMgPSBQQ0lCX1JFQURfQ09ORklHKHNjLT5z Y19kZXYsIHNjLT5zY19vcHMuc2NfcGNpX3NlY2J1cywKKwlzdGF0dXMgPSBQQ0lCX1JFQURfQ09O RklHKHNjLT5zY19kZXYsIHNjLT5zY19vcHMuc2Nfc2VjYnVzLAogCSAgICBTVFhfQ1NfREVWSUNF LCBTVFhfQ1NfRlVOQywgUENJUl9TVEFUVVMsIDIpOwogCiAJLyoKQEAgLTg0NSw3ICs4NDcsNyBA QCBzY2hpem9fcGNpX2J1cyh2b2lkICphcmcpCiAJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW9t bXUsICh1bnNpZ25lZCBsb25nIGxvbmcpeHN0YXQsIHN0YXR1cyk7CiAKIAkvKiBDbGVhciB0aGUg ZXJyb3IgYml0cyB0aGF0IHdlIGNhdWdodC4gKi8KLQlQQ0lCX1dSSVRFX0NPTkZJRyhzYy0+c2Nf ZGV2LCBzYy0+c2Nfb3BzLnNjX3BjaV9zZWNidXMsIFNUWF9DU19ERVZJQ0UsCisJUENJQl9XUklU RV9DT05GSUcoc2MtPnNjX2Rldiwgc2MtPnNjX29wcy5zY19zZWNidXMsIFNUWF9DU19ERVZJQ0Us CiAJICAgIFNUWF9DU19GVU5DLCBQQ0lSX1NUQVRVUywgc3RhdHVzLCAyKTsKIAlTQ0hJWk9fUENJ X1dSSVRFXzgoc2MsIFNUWF9QQ0lfQ1RSTCwgY3NyKTsKIAlTQ0hJWk9fUENJX1dSSVRFXzgoc2Ms IFNUWF9QQ0lfQUZTUiwgYWZzcik7CkBAIC05NzIsNyArOTc0LDcgQEAgc2NoaXpvX3JlYWRfY29u ZmlnKGRldmljZV90IGRldiwgdV9pbnQgYnVzLCB1X2ludCBzbG90LCB1X2ludCBmdW5jLCB1X2lu dCByZWcsCiAJICogVGhlIFNjaGl6byBicmlkZ2VzIGNvbnRhaW4gYSBkdXBlIG9mIHRoZWlyIGhl YWRlciBhdCAweDgwLgogCSAqLwogCWlmIChzYy0+c2NfbW9kZSA9PSBTQ0hJWk9fTU9ERV9TQ1og JiYKLQkgICAgYnVzID09IHNjLT5zY19vcHMuc2NfcGNpX3NlY2J1cyAmJiBzbG90ID09IFNUWF9D U19ERVZJQ0UgJiYKKwkgICAgYnVzID09IHNjLT5zY19vcHMuc2Nfc2VjYnVzICYmIHNsb3QgPT0g U1RYX0NTX0RFVklDRSAmJgogCSAgICBmdW5jID09IFNUWF9DU19GVU5DICYmIHJlZyArIHdpZHRo ID4gMHg4MCkKIAkJcmV0dXJuICgwKTsKIApkaWZmIC0tZ2l0IGEvc3lzL3NwYXJjNjQvcGNpL3Nw YXJjNjRfb2Z3X3BjaS5jIGIvc3lzL3NwYXJjNjQvcGNpL3NwYXJjNjRfb2Z3X3BjaS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOGQ1OTIKLS0tIC9kZXYvbnVsbAorKysg Yi9zeXMvc3BhcmM2NC9wY2kvc3BhcmM2NF9vZndfcGNpLmMKQEAgLTAsMCArMSwzMTcgQEAKKy8q LQorICogQ29weXJpZ2h0IChjKSAxOTk5LCAyMDAwIE1hdHRoZXcgUi4gR3JlZW4KKyAqIENvcHly aWdodCAoYykgMjAwMSAtIDIwMDMgYnkgVGhvbWFzIE1vZXN0bCA8dG1tQEZyZWVCU0Qub3JnPgor ICogQ29weXJpZ2h0IChjKSAyMDA1IC0gMjAxNSBieSBNYXJpdXMgU3Ryb2JsIDxtYXJpdXNARnJl ZUJTRC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5h bWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzCisgKiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgorICogSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg V0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB VVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUws IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs CisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRAorICogQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX QVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqCWZyb206IE5ldEJT RDogcHN5Y2hvLmMsdiAxLjM1IDIwMDEvMDkvMTAgMTY6MTc6MDYgZWVoIEV4cAorICovCisKKyNp bmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUg Im9wdF9vZndfcGNpLmgiCisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMv c3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvYnVzLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgor I2luY2x1ZGUgPHN5cy9ybWFuLmg+CisKKyNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+Cisj aW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1 YnIuaD4KKyNpbmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KKworI2luY2x1ZGUgPGRldi9wY2kv cGNpcmVnLmg+CisjaW5jbHVkZSA8ZGV2L3BjaS9wY2l2YXIuaD4KKworI2luY2x1ZGUgPG1hY2hp bmUvYXNpLmg+CisjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2J1 c19wcml2YXRlLmg+CisjaW5jbHVkZSA8bWFjaGluZS9jcHVmdW5jLmg+CisjaW5jbHVkZSA8bWFj aGluZS9mc3IuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Jlc291cmNlLmg+CisKKyNpbmNsdWRlICJv ZndfcGNpX2lmLmgiCisKK3N0YXRpYyBkZXZpY2VfbWV0aG9kX3QJc3BhcmM2NF9vZndfcGNpX21l dGhvZHNbXSA9IHsKKworCURFVk1FVEhPRChidXNfYWN0aXZhdGVfcmVzb3VyY2UsCXNwYXJjNjRf b2Z3X3BjaV9hY3RpdmF0ZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jl c291cmNlLAlzcGFyYzY0X29md19wY2lfZGVhY3RpdmF0ZV9yZXNvdXJjZSksCisKKwlERVZNRVRI T0RfRU5ECit9OworCitERUZJTkVfQ0xBU1NfMShvZndfcGNpLCBzcGFyYzY0X29md19wY2lfZHJp dmVyLCBzcGFyYzY0X29md19wY2lfbWV0aG9kcywKKyAgICBzaXplb2Yoc3RydWN0IG9md19wY2lf c29mdGMpLCBvZndfcGNpX2RyaXZlcik7CisKK2ludAorb2Z3X3BjaV9hdHRhY2hfY29tbW9uKGRl dmljZV90IGRldiwgYnVzX2RtYV90YWdfdCBkbWF0LCB1X2xvbmcgaW9zaXplLAorICAgIHVfbG9u ZyBtZW1zaXplKQoreworCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsKKwlzdHJ1Y3Qgb2Z3X3Bj aV9yYW5nZSAqcmFuZ2VzOworCXBoYW5kbGVfdCBub2RlOworCXVpbnQzMl90IHByb3BfYXJyYXlb Ml07CisJdV9pbnQgaSwgaiwgbnJhbmdlOworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7 CisJbm9kZSA9IG9md19idXNfZ2V0X25vZGUoZGV2KTsKKwlzYy0+c2Nfbm9kZSA9IG5vZGU7CisJ c2MtPnNjX2RtYXQgPSBkbWF0OworCisJLyogSW5pdGlhbGl6ZSBtZW1vcnkgYW5kIEkvTyBybWFu cy4gKi8KKwlzYy0+c2NfaW9fcm1hbi5ybV90eXBlID0gUk1BTl9BUlJBWTsKKwlzYy0+c2NfaW9f cm1hbi5ybV9kZXNjciA9ICJQQ0kgSS9PIFBvcnRzIjsKKwlpZiAocm1hbl9pbml0KCZzYy0+c2Nf aW9fcm1hbikgIT0gMCB8fAorCSAgICBybWFuX21hbmFnZV9yZWdpb24oJnNjLT5zY19pb19ybWFu LCAwLCBpb3NpemUpICE9IDApIHsKKwkJZGV2aWNlX3ByaW50ZihkZXYsICJmYWlsZWQgdG8gc2V0 IHVwIEkvTyBybWFuXG4iKTsKKwkJcmV0dXJuIChFTlhJTyk7CisJfQorCXNjLT5zY19tZW1fcm1h bi5ybV90eXBlID0gUk1BTl9BUlJBWTsKKwlzYy0+c2NfbWVtX3JtYW4ucm1fZGVzY3IgPSAiUENJ IE1lbW9yeSI7CisJaWYgKHJtYW5faW5pdCgmc2MtPnNjX21lbV9ybWFuKSAhPSAwIHx8CisJICAg IHJtYW5fbWFuYWdlX3JlZ2lvbigmc2MtPnNjX21lbV9ybWFuLCAwLCBtZW1zaXplKSAhPSAwKSB7 CisJCWRldmljZV9wcmludGYoZGV2LCAiZmFpbGVkIHRvIHNldCB1cCBtZW1vcnkgcm1hblxuIik7 CisJCXJldHVybiAoRU5YSU8pOworCX0KKworCS8qCisJICogRmluZCB0aGUgYWRkcmVzc2VzIG9m IHRoZSB2YXJpb3VzIGJ1cyBzcGFjZXMuICBUaGUgcGh5c2ljYWwKKwkgKiBzdGFydCBhZGRyZXNz ZXMgb2YgdGhlIHJhbmdlcyBhcmUgdGhlIGNvbmZpZ3VyYXRpb24sIEkvTyBhbmQKKwkgKiBtZW1v cnkgaGFuZGxlcy4gIFRoZXJlIHNob3VsZCBub3QgYmUgbXVsdGlwbGUgb25lcyBvZiBvbmUga2lu ZC4KKwkgKi8KKwlucmFuZ2UgPSBPRl9nZXRlbmNwcm9wX2FsbG9jKG5vZGUsICJyYW5nZXMiLCBz aXplb2YoKnJhbmdlcyksCisJICAgICh2b2lkICoqKSZyYW5nZXMpOworCWZvciAoaSA9IDA7IGkg PCBucmFuZ2U7IGkrKykgeworCQlqID0gcmFuZ2VzW2ldLnBjaV9oaSAmIE9GV19QQ0lfUEhZU19I SV9TUEFDRU1BU0s7CisJCWlmIChzYy0+c2NfYmhbal0gIT0gMCkgeworCQkJZGV2aWNlX3ByaW50 ZihkZXYsICJkdXBsaWNhdGUgcmFuZ2UgZm9yIHNwYWNlICVkXG4iLAorCQkJICAgIGopOworCQkJ ZnJlZShyYW5nZXMsIE1fT0ZXUFJPUCk7CisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCX0KKwkJc2Mt PnNjX2JoW2pdID0gcmFuZ2VzW2ldLmhvc3Q7CisJfQorCWZyZWUocmFuZ2VzLCBNX09GV1BST1Ap OworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgZXhwZWN0ZWQgcmFuZ2VzIGFyZSBhY3R1 YWxseSBwcmVzZW50LgorCSAqIFRoZSBPRldfUENJX01FTTY0IG9uZSBpcyBub3QgY3VycmVudGx5 IHVzZWQuCisJICovCisJaWYgKHNjLT5zY19iaFtPRldfUENJX0NPTkZJR10gPT0gMCkgeworCQlk ZXZpY2VfcHJpbnRmKGRldiwgIm1pc3NpbmcgQ09ORklHIHJhbmdlXG4iKTsKKwkJcmV0dXJuIChF TlhJTyk7CisJfQorCWlmIChzYy0+c2NfYmhbT0ZXX1BDSV9JT10gPT0gMCkgeworCQlkZXZpY2Vf cHJpbnRmKGRldiwgIm1pc3NpbmcgSU8gcmFuZ2VcbiIpOworCQlyZXR1cm4gKEVOWElPKTsKKwl9 CisJaWYgKHNjLT5zY19iaFtPRldfUENJX01FTTMyXSA9PSAwKSB7CisJCWRldmljZV9wcmludGYo ZGV2LCAibWlzc2luZyBNRU0zMiByYW5nZVxuIik7CisJCXJldHVybiAoRU5YSU8pOworCX0KKwor CS8qIEFsbG9jYXRlIG91ciB0YWdzLiAqLworCXNjLT5zY19pb3QgPSBzcGFyYzY0X2FsbG9jX2J1 c190YWcoTlVMTCwgUENJX0lPX0JVU19TUEFDRSk7CisJaWYgKHNjLT5zY19pb3QgPT0gTlVMTCkg eworCQlkZXZpY2VfcHJpbnRmKGRldiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBQQ0kgSS9PIHRhZ1xu Iik7CisJCXJldHVybiAoRU5YSU8pOworCX0KKwlzYy0+c2NfY2ZndCA9IHNwYXJjNjRfYWxsb2Nf YnVzX3RhZyhOVUxMLCBQQ0lfQ09ORklHX0JVU19TUEFDRSk7CisJaWYgKHNjLT5zY19jZmd0ID09 IE5VTEwpIHsKKwkJZGV2aWNlX3ByaW50ZihkZXYsCisJCSAgICAiY291bGQgbm90IGFsbG9jYXRl IFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHRhZ1xuIik7CisJCXJldHVybiAoRU5YSU8pOworCX0K KworCS8qCisJICogR2V0IHRoZSBidXMgcmFuZ2UgZnJvbSB0aGUgZmlybXdhcmUuCisJICovCisJ aSA9IE9GX2dldHByb3Aobm9kZSwgImJ1cy1yYW5nZSIsICh2b2lkICopcHJvcF9hcnJheSwKKwkg ICAgc2l6ZW9mKHByb3BfYXJyYXkpKTsKKwlpZiAoaSA9PSAtMSkgeworCQlkZXZpY2VfcHJpbnRm KGRldiwgImNvdWxkIG5vdCBnZXQgYnVzLXJhbmdlXG4iKTsKKwkJcmV0dXJuIChFTlhJTyk7CisJ fQorCWlmIChpICE9IHNpemVvZihwcm9wX2FycmF5KSkgeworCQlkZXZpY2VfcHJpbnRmKGRldiwg ImJyb2tlbiBidXMtcmFuZ2UgKCVkKSIsIGkpOworCQlyZXR1cm4gKEVJTlZBTCk7CisJfQorCXNj LT5zY19zZWNidXMgPSBwcm9wX2FycmF5WzBdOworCXNjLT5zY19zdWJidXMgPSBwcm9wX2FycmF5 WzFdOworCWlmIChib290dmVyYm9zZSAhPSAwKQorCQlkZXZpY2VfcHJpbnRmKGRldiwgImJ1cyBy YW5nZSAldSB0byAldTsgUENJIGJ1cyAlZFxuIiwKKwkJICAgIHNjLT5zY19zZWNidXMsIHNjLT5z Y19zdWJidXMsIHNjLT5zY19zZWNidXMpOworCisJb2Z3X2J1c19zZXR1cF9paW5mbyhub2RlLCAm c2MtPnNjX3BjaV9paW5mbywgc2l6ZW9mKG9md19wY2lfaW50cl90KSk7CisKKwlyZXR1cm4gKDAp OworfQorCit1aW50MzJfdAorb2Z3X3BjaV9yZWFkX2NvbmZpZ19jb21tb24oZGV2aWNlX3QgZGV2 LCB1X2ludCByZWdtYXgsIHVfbG9uZyBvZmZzZXQsCisgICAgdV9pbnQgYnVzLCB1X2ludCBzbG90 LCB1X2ludCBmdW5jLCB1X2ludCByZWcsIGludCB3aWR0aCkKK3sKKwlzdHJ1Y3Qgb2Z3X3BjaV9z b2Z0YyAqc2M7CisJYnVzX3NwYWNlX2hhbmRsZV90IGJoOworCXVpbnQzMl90IHIsIHdyZDsKKwlp bnQgaTsKKwl1aW50MTZfdCBzaHJ0OworCXVpbnQ4X3QgYnl0ZTsKKworCXNjID0gZGV2aWNlX2dl dF9zb2Z0YyhkZXYpOworCWlmIChidXMgPCBzYy0+c2Nfc2VjYnVzIHx8IGJ1cyA+IHNjLT5zY19z dWJidXMgfHwKKwkgICAgc2xvdCA+IFBDSV9TTE9UTUFYIHx8IGZ1bmMgPiBQQ0lfRlVOQ01BWCB8 fCByZWcgPiByZWdtYXgpCisJCXJldHVybiAoLTEpOworCisJYmggPSBzYy0+c2NfYmhbT0ZXX1BD SV9DT05GSUddOworCXN3aXRjaCAod2lkdGgpIHsKKwljYXNlIDE6CisJCWkgPSBidXNfc3BhY2Vf cGVla18xKHNjLT5zY19jZmd0LCBiaCwgb2Zmc2V0LCAmYnl0ZSk7CisJCXIgPSBieXRlOworCQli cmVhazsKKwljYXNlIDI6CisJCWkgPSBidXNfc3BhY2VfcGVla18yKHNjLT5zY19jZmd0LCBiaCwg b2Zmc2V0LCAmc2hydCk7CisJCXIgPSBzaHJ0OworCQlicmVhazsKKwljYXNlIDQ6CisJCWkgPSBi dXNfc3BhY2VfcGVla180KHNjLT5zY19jZmd0LCBiaCwgb2Zmc2V0LCAmd3JkKTsKKwkJciA9IHdy ZDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcGFuaWMoIiVzOiBiYWQgd2lkdGggJWQiLCBfX2Z1 bmNfXywgd2lkdGgpOworCQkvKiBOT1RSRUFDSEVEICovCisJfQorCisJaWYgKGkpIHsKKyNpZmRl ZiBPRldfUENJX0RFQlVHCisJCXByaW50ZigiJXM6IHJlYWQgZGF0YSBlcnJvciByZWFkaW5nOiAl ZC4lZC4lZDogMHgleFxuIiwKKwkJICAgIF9fZnVuY19fLCBidXMsIHNsb3QsIGZ1bmMsIHJlZyk7 CisjZW5kaWYKKwkJciA9IC0xOworCX0KKwlyZXR1cm4gKHIpOworfQorCit2b2lkCitvZndfcGNp X3dyaXRlX2NvbmZpZ19jb21tb24oZGV2aWNlX3QgZGV2LCB1X2ludCByZWdtYXgsIHVfbG9uZyBv ZmZzZXQsCisgICAgdV9pbnQgYnVzLCB1X2ludCBzbG90LCB1X2ludCBmdW5jLCB1X2ludCByZWcs IHVpbnQzMl90IHZhbCwgaW50IHdpZHRoKQoreworCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsK KwlidXNfc3BhY2VfaGFuZGxlX3QgYmg7CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsK KwlpZiAoYnVzIDwgc2MtPnNjX3NlY2J1cyB8fCBidXMgPiBzYy0+c2Nfc3ViYnVzIHx8CisJICAg IHNsb3QgPiBQQ0lfU0xPVE1BWCB8fCBmdW5jID4gUENJX0ZVTkNNQVggfHwgcmVnID4gcmVnbWF4 KQorCQlyZXR1cm47CisKKwliaCA9IHNjLT5zY19iaFtPRldfUENJX0NPTkZJR107CisJc3dpdGNo ICh3aWR0aCkgeworCWNhc2UgMToKKwkJYnVzX3NwYWNlX3dyaXRlXzEoc2MtPnNjX2NmZ3QsIGJo LCBvZmZzZXQsIHZhbCk7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJYnVzX3NwYWNlX3dyaXRlXzIo c2MtPnNjX2NmZ3QsIGJoLCBvZmZzZXQsIHZhbCk7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJYnVz X3NwYWNlX3dyaXRlXzQoc2MtPnNjX2NmZ3QsIGJoLCBvZmZzZXQsIHZhbCk7CisJCWJyZWFrOwor CWRlZmF1bHQ6CisJCXBhbmljKCIlczogYmFkIHdpZHRoICVkIiwgX19mdW5jX18sIHdpZHRoKTsK KwkJLyogTk9UUkVBQ0hFRCAqLworCX0KK30KKworb2Z3X3BjaV9pbnRyX3QKK29md19wY2lfcm91 dGVfaW50ZXJydXB0X2NvbW1vbihkZXZpY2VfdCBicmlkZ2UsIGRldmljZV90IGRldiwgaW50IHBp bikKK3sKKwlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2M7CisJc3RydWN0IG9md19wY2lfcmVnaXN0 ZXIgcmVnOworCW9md19wY2lfaW50cl90IHBpbnRyLCBtaW50cjsKKworCXNjID0gZGV2aWNlX2dl dF9zb2Z0YyhicmlkZ2UpOworCXBpbnRyID0gcGluOworCWlmIChvZndfYnVzX2xvb2t1cF9pbWFw KG9md19idXNfZ2V0X25vZGUoZGV2KSwgJnNjLT5zY19wY2lfaWluZm8sCisJICAgICZyZWcsIHNp emVvZihyZWcpLCAmcGludHIsIHNpemVvZihwaW50ciksICZtaW50ciwgc2l6ZW9mKG1pbnRyKSwK KwkgICAgTlVMTCkgIT0gMCkKKwkJcmV0dXJuIChtaW50cik7CisJcmV0dXJuIChQQ0lfSU5WQUxJ RF9JUlEpOworfQorCit2b2lkCitvZndfcGNpX2RtYW1hcF9zeW5jX3N0c3Rfb3JkZXJfY29tbW9u KHZvaWQpCit7CisJc3RhdGljIHVfY2hhciBidWZbVklTX0JMT0NLU0laRV0gX19hbGlnbmVkKFZJ U19CTE9DS1NJWkUpOworCXJlZ2lzdGVyX3QgcmVnLCBzOworCisJcyA9IGludHJfZGlzYWJsZSgp OworCXJlZyA9IHJkKGZwcnMpOworCXdyKGZwcnMsIHJlZyB8IEZQUlNfRkVGLCAwKTsKKwlfX2Fz bSBfX3ZvbGF0aWxlKCJzdGRhICUlZjAsIFslMF0gJTEiCisJICAgIDogOiAiciIgKGJ1ZiksICJu IiAoQVNJX0JMS19DT01NSVRfUykpOworCW1lbWJhcihTeW5jKTsKKwl3cihmcHJzLCByZWcsIDAp OworCWludHJfcmVzdG9yZShzKTsKK30KKworaW50CitzcGFyYzY0X29md19wY2lfYWN0aXZhdGVf cmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCByaWQs CisgICAgc3RydWN0IHJlc291cmNlICpyKQoreworCXN0cnVjdCBvZndfcGNpX3NvZnRjICpzYzsK KwlzdHJ1Y3QgYnVzX3NwYWNlX3RhZyAqdGFnOworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGJ1 cyk7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBTWVNfUkVTX0lSUToKKwkJcmV0dXJuIChidXNf Z2VuZXJpY19hY3RpdmF0ZV9yZXNvdXJjZShidXMsIGNoaWxkLCB0eXBlLCByaWQsCisJCSAgICBy KSk7CisJY2FzZSBTWVNfUkVTX01FTU9SWToKKwkJdGFnID0gc3BhcmM2NF9hbGxvY19idXNfdGFn KHIsIFBDSV9NRU1PUllfQlVTX1NQQUNFKTsKKwkJaWYgKHRhZyA9PSBOVUxMKQorCQkJcmV0dXJu IChFTk9NRU0pOworCQlybWFuX3NldF9idXN0YWcociwgdGFnKTsKKwkJcm1hbl9zZXRfYnVzaGFu ZGxlKHIsIHNjLT5zY19iaFtPRldfUENJX01FTTMyXSArCisJCSAgICBybWFuX2dldF9zdGFydChy KSk7CisJCWJyZWFrOworCWNhc2UgU1lTX1JFU19JT1BPUlQ6CisJCXJtYW5fc2V0X2J1c3RhZyhy LCBzYy0+c2NfaW90KTsKKwkJcm1hbl9zZXRfYnVzaGFuZGxlKHIsIHNjLT5zY19iaFtPRldfUENJ X0lPXSArCisJCSAgICBybWFuX2dldF9zdGFydChyKSk7CisJCWJyZWFrOworCX0KKwlyZXR1cm4g KHJtYW5fYWN0aXZhdGVfcmVzb3VyY2UocikpOworfQorCitpbnQKK3NwYXJjNjRfb2Z3X3BjaV9k ZWFjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsCisgICAgaW50 IHR5cGUsIGludCByaWQsIHN0cnVjdCByZXNvdXJjZSAqcikKK3sKKworICAgICAgICByZXR1cm4g KGJ1c19nZW5lcmljX2RlYWN0aXZhdGVfcmVzb3VyY2UoYnVzLCBjaGlsZCwgdHlwZSwgcmlkLCBy KSk7Cit9CmRpZmYgLS1naXQgYS9zeXMvc3BhcmM2NC9zcGFyYzY0L2pidXNwcG0uYyBiL3N5cy9z cGFyYzY0L3NwYXJjNjQvamJ1c3BwbS5jCmluZGV4IDEyZjlmMGYuLjBiNDEwNTQgMTAwNjQ0Ci0t LSBhL3N5cy9zcGFyYzY0L3NwYXJjNjQvamJ1c3BwbS5jCisrKyBiL3N5cy9zcGFyYzY0L3NwYXJj NjQvamJ1c3BwbS5jCkBAIC0zNSwxMyArMzUsMTQgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwog I2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgogI2luY2x1ZGUgPHN5cy9ybWFuLmg+CiAKKyNpbmNs dWRlIDxkZXYvb2Z3L29md19idXNfc3Vici5oPgogI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1cy5o PgogCiAjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3Jlc291cmNl Lmg+CiAKICNpZiAxCi0jaW5jbHVkZSA8c3BhcmM2NC9wY2kvb2Z3X3BjaS5oPgorI2luY2x1ZGUg PGRldi9vZncvb2Z3X3BjaS5oPgogI2VuZGlmCiAKICNkZWZpbmUJSkJVU1BQTV9OUkVHCTIKZGlm ZiAtLWdpdCBhL3N5cy9zcGFyYzY0L3NwYXJjNjQvb2Z3X21hY2hkZXAuYyBiL3N5cy9zcGFyYzY0 L3NwYXJjNjQvb2Z3X21hY2hkZXAuYwppbmRleCA3ZmNmNWM4Li5hOWI0MGY4IDEwMDY0NAotLS0g YS9zeXMvc3BhcmM2NC9zcGFyYzY0L29md19tYWNoZGVwLmMKKysrIGIvc3lzL3NwYXJjNjQvc3Bh cmM2NC9vZndfbWFjaGRlcC5jCkBAIC0zNCwxMiArMzQsMTQgQEAgX19GQlNESUQoIiRGcmVlQlNE JCIpOwogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9idXMuaD4KICNpbmNs dWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5oPgogCiAjaW5jbHVkZSA8bmV0 L2V0aGVybmV0Lmg+CiAKKyNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+CiAjaW5jbHVkZSA8 ZGV2L29mdy9vZndfYnVzLmg+CisjaW5jbHVkZSA8ZGV2L29mdy9vZndfYnVzX3N1YnIuaD4KICNp bmNsdWRlIDxkZXYvb2Z3L29md19wY2kuaD4KLSNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+ CiAKICNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUvaWRwcm9tLmg+ Cg== --047d7bd76bea87df0b052cfd99e4--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAF-BqKqfUzuvJRaQH9nhYwFLAnrp-7Xjym7F_fpViBF3PzjZAw>