From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from m43-7.mailgun.net ([69.72.43.7]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k69AF-0006fF-Fb for ath11k@lists.infradead.org; Thu, 13 Aug 2020 09:04:53 +0000 From: Kalle Valo Subject: [PATCH 08/10] ath11k: register MHI controller device for QCA6390 Date: Thu, 13 Aug 2020 12:04:24 +0300 Message-Id: <1597309466-19688-9-git-send-email-kvalo@codeaurora.org> In-Reply-To: <1597309466-19688-1-git-send-email-kvalo@codeaurora.org> References: <1597309466-19688-1-git-send-email-kvalo@codeaurora.org> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath11k" Errors-To: ath11k-bounces+kvalo=adurom.com@lists.infradead.org To: ath11k@lists.infradead.org Cc: linux-wireless@vger.kernel.org RnJvbTogR292aW5kIFNpbmdoIDxnb3ZpbmRzQGNvZGVhdXJvcmEub3JnPgoKTW9kZW0gSG9zdCBJ bnRlcmZhY2UgKE1ISSkgaXMgYSBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRvIGNvbW11bmljYXRl IHdpdGgKZXh0ZXJuYWwgUXVhbGNvbW0gbW9kZW1zIGFuZCBXaS1GaSBjaGlwc2V0cyBvdmVyIGhp Z2ggc3BlZWQgcGVyaXBoZXJhbCBidXNlcy4KRXZlbiB0aG91Z2ggTUhJIGRvZXNu4oCZdCBkaWN0 YXRlIHVuZGVybHlpbmcgcGh5c2ljYWwgbGF5ZXIsIHByb3RvY29sIGFuZCBNSEkKc3RhY2sgaXMg c3RydWN0dXJlZCBmb3IgUENJIGJhc2VkIGRldmljZXMuCgpSZWdpc3RlciBkaXJlY3RseSB3aXRo IE1ISSBzdWJzeXN0ZW0gYXMgYSBNSEkgZGV2aWNlIGRyaXZlciBmb3IgZmlybXdhcmUKZG93bmxv YWQgdG8gUUNBNjM5MC4KClRlc3RlZC1vbjogUUNBNjM5MCBodzIuMCBQQ0kgV0xBTi5IU1QuMS4w LjEtMDE3NDAtUUNBSFNUU1dQTFpfVjJfVE9fWDg2LTEKVGVzdGVkLW9uOiBJUFE4MDc0IGh3Mi4w IEFIQiBXTEFOLkhLLjIuMS4wLjEtMDEyMzgtUUNBSEtTV1BMX1NJTElDT05aLTIKClNpZ25lZC1v ZmYtYnk6IEdvdmluZCBTaW5naCA8Z292aW5kc0Bjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1i eTogS2FsbGUgVmFsbyA8a3ZhbG9AY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDExay9LY29uZmlnICB8ICAgMyArCiBkcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoMTFrL01ha2VmaWxlIHwgICAyICstCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo MTFrL2h3LmggICAgIHwgICAxICsKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhp LmMgICAgfCA0MjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDExay9taGkuaCAgICB8ICAyOCArKwogZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDExay9wY2kuYyAgICB8ICA3NyArKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGgxMWsvcGNpLmggICAgfCAgMTQgKwogNyBmaWxlcyBjaGFuZ2VkLCA1NDcgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGgxMWsvbWhpLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDExay9LY29uZmlnIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9L Y29uZmlnCmluZGV4IDJhNzkyZGRkNmZlYS4uN2U1MDk0ZTBlN2JiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDExay9LY29uZmlnCkBAIC0yMSw2ICsyMSw5IEBAIGNvbmZpZyBBVEgxMUtf QUhCCiBjb25maWcgQVRIMTFLX1BDSQogCXRyaXN0YXRlICJBdGhlcm9zIGF0aDExayBQQ0kgc3Vw cG9ydCIKIAlkZXBlbmRzIG9uIEFUSDExSyAmJiBQQ0kKKwlzZWxlY3QgTUhJX0JVUworCXNlbGVj dCBRUlRSCisJc2VsZWN0IFFSVFJfTUhJCiAJaGVscAogCSAgVGhpcyBtb2R1bGUgYWRkcyBzdXBw b3J0IGZvciBQQ0lFIGJ1cwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoMTFrL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmls ZQppbmRleCA0ZDE4MDdmNTJkOTIuLmJjNDkxMWYwMzM5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTFrL01ha2VmaWxlCkBAIC0yOCw3ICsyOCw3IEBAIG9iai0kKENPTkZJR19BVEgx MUtfQUhCKSArPSBhdGgxMWtfYWhiLm8KIGF0aDExa19haGIteSArPSBhaGIubwogCiBvYmotJChD T05GSUdfQVRIMTFLX1BDSSkgKz0gYXRoMTFrX3BjaS5vCi1hdGgxMWtfcGNpLXkgKz0gcGNpLm8K K2F0aDExa19wY2kteSArPSBtaGkubyBwY2kubwogCiAjIGZvciB0cmFjaW5nIGZyYW1ld29yayB0 byBmaW5kIHRyYWNlLmgKIENGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTFrL2h3LmgKaW5kZXggYThjZGY0ZDA4YmU0Li5jMDJmZDAyODM5ZDQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaAorKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUg QVRIMTFLX0JPQVJEX0FQSTJfRklMRQkJImJvYXJkLTIuYmluIgogI2RlZmluZSBBVEgxMUtfREVG QVVMVF9CT0FSRF9GSUxFCSJib2FyZC5iaW4iCiAjZGVmaW5lIEFUSDExS19ERUZBVUxUX0NBTF9G SUxFCQkiY2FsZGF0YS5iaW4iCisjZGVmaW5lIEFUSDExS19BTVNTX0ZJTEUJCSJhbXNzLmJpbiIK IAogZW51bSBhdGgxMWtfaHdfcmF0ZV9jY2sgewogCUFUSDExS19IV19SQVRFX0NDS19MUF8xMU0g PSAwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MmQzOWVmNjc0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5jCkBAIC0wLDAgKzEsNDIzIEBACisv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyCisvKiBDb3B5cmln aHQgKGMpIDIwMjAgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICov CisKKyNpbmNsdWRlIDxsaW51eC9tc2kuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKworI2lu Y2x1ZGUgImNvcmUuaCIKKyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1ZGUgIm1oaS5oIgorCisj ZGVmaW5lIE1ISV9USU1FT1VUX0RFRkFVTFRfTVMJOTAwMDAKKworc3RhdGljIHN0cnVjdCBtaGlf Y2hhbm5lbF9jb25maWcgYXRoMTFrX21oaV9jaGFubmVsc1tdID0geworCXsKKwkJLm51bSA9IDAs CisJCS5uYW1lID0gIkxPT1BCQUNLIiwKKwkJLm51bV9lbGVtZW50cyA9IDMyLAorCQkuZXZlbnRf cmluZyA9IDAsCisJCS5kaXIgPSBETUFfVE9fREVWSUNFLAorCQkuZWVfbWFzayA9IDB4NCwKKwkJ LnBvbGxjZmcgPSAwLAorCQkuZG9vcmJlbGwgPSBNSElfREJfQlJTVF9ESVNBQkxFLAorCQkubHBt X25vdGlmeSA9IGZhbHNlLAorCQkub2ZmbG9hZF9jaGFubmVsID0gZmFsc2UsCisJCS5kb29yYmVs bF9tb2RlX3N3aXRjaCA9IGZhbHNlLAorCQkuYXV0b19xdWV1ZSA9IGZhbHNlLAorCQkuYXV0b19z dGFydCA9IGZhbHNlLAorCX0sCisJeworCQkubnVtID0gMSwKKwkJLm5hbWUgPSAiTE9PUEJBQ0si LAorCQkubnVtX2VsZW1lbnRzID0gMzIsCisJCS5ldmVudF9yaW5nID0gMCwKKwkJLmRpciA9IERN QV9GUk9NX0RFVklDRSwKKwkJLmVlX21hc2sgPSAweDQsCisJCS5wb2xsY2ZnID0gMCwKKwkJLmRv b3JiZWxsID0gTUhJX0RCX0JSU1RfRElTQUJMRSwKKwkJLmxwbV9ub3RpZnkgPSBmYWxzZSwKKwkJ Lm9mZmxvYWRfY2hhbm5lbCA9IGZhbHNlLAorCQkuZG9vcmJlbGxfbW9kZV9zd2l0Y2ggPSBmYWxz ZSwKKwkJLmF1dG9fcXVldWUgPSBmYWxzZSwKKwkJLmF1dG9fc3RhcnQgPSBmYWxzZSwKKwl9LAor CXsKKwkJLm51bSA9IDIwLAorCQkubmFtZSA9ICJJUENSIiwKKwkJLm51bV9lbGVtZW50cyA9IDY0 LAorCQkuZXZlbnRfcmluZyA9IDEsCisJCS5kaXIgPSBETUFfVE9fREVWSUNFLAorCQkuZWVfbWFz ayA9IDB4NCwKKwkJLnBvbGxjZmcgPSAwLAorCQkuZG9vcmJlbGwgPSBNSElfREJfQlJTVF9ESVNB QkxFLAorCQkubHBtX25vdGlmeSA9IGZhbHNlLAorCQkub2ZmbG9hZF9jaGFubmVsID0gZmFsc2Us CisJCS5kb29yYmVsbF9tb2RlX3N3aXRjaCA9IGZhbHNlLAorCQkuYXV0b19xdWV1ZSA9IGZhbHNl LAorCQkuYXV0b19zdGFydCA9IHRydWUsCisJfSwKKwl7CisJCS5udW0gPSAyMSwKKwkJLm5hbWUg PSAiSVBDUiIsCisJCS5udW1fZWxlbWVudHMgPSA2NCwKKwkJLmV2ZW50X3JpbmcgPSAxLAorCQku ZGlyID0gRE1BX0ZST01fREVWSUNFLAorCQkuZWVfbWFzayA9IDB4NCwKKwkJLnBvbGxjZmcgPSAw LAorCQkuZG9vcmJlbGwgPSBNSElfREJfQlJTVF9ESVNBQkxFLAorCQkubHBtX25vdGlmeSA9IGZh bHNlLAorCQkub2ZmbG9hZF9jaGFubmVsID0gZmFsc2UsCisJCS5kb29yYmVsbF9tb2RlX3N3aXRj aCA9IGZhbHNlLAorCQkuYXV0b19xdWV1ZSA9IHRydWUsCisJCS5hdXRvX3N0YXJ0ID0gdHJ1ZSwK Kwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBtaGlfZXZlbnRfY29uZmlnIGF0aDExa19taGlfZXZl bnRzW10gPSB7CisJeworCQkubnVtX2VsZW1lbnRzID0gMzIsCisJCS5pcnFfbW9kZXJhdGlvbl9t cyA9IDAsCisJCS5pcnEgPSAxLAorCQkubW9kZSA9IE1ISV9EQl9CUlNUX0RJU0FCTEUsCisJCS5k YXRhX3R5cGUgPSBNSElfRVJfQ1RSTCwKKwkJLmhhcmR3YXJlX2V2ZW50ID0gZmFsc2UsCisJCS5j bGllbnRfbWFuYWdlZCA9IGZhbHNlLAorCQkub2ZmbG9hZF9jaGFubmVsID0gZmFsc2UsCisJfSwK Kwl7CisJCS5udW1fZWxlbWVudHMgPSAyNTYsCisJCS5pcnFfbW9kZXJhdGlvbl9tcyA9IDEsCisJ CS5pcnEgPSAyLAorCQkubW9kZSA9IE1ISV9EQl9CUlNUX0RJU0FCTEUsCisJCS5wcmlvcml0eSA9 IDEsCisJCS5oYXJkd2FyZV9ldmVudCA9IGZhbHNlLAorCQkuY2xpZW50X21hbmFnZWQgPSBmYWxz ZSwKKwkJLm9mZmxvYWRfY2hhbm5lbCA9IGZhbHNlLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0 IG1oaV9jb250cm9sbGVyX2NvbmZpZyBhdGgxMWtfbWhpX2NvbmZpZyA9IHsKKwkubWF4X2NoYW5u ZWxzID0gMTI4LAorCS50aW1lb3V0X21zID0gMjAwMCwKKwkudXNlX2JvdW5jZV9idWYgPSBmYWxz ZSwKKwkuYnVmX2xlbiA9IDAsCisJLm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoMTFrX21o aV9jaGFubmVscyksCisJLmNoX2NmZyA9IGF0aDExa19taGlfY2hhbm5lbHMsCisJLm51bV9ldmVu dHMgPSBBUlJBWV9TSVpFKGF0aDExa19taGlfZXZlbnRzKSwKKwkuZXZlbnRfY2ZnID0gYXRoMTFr X21oaV9ldmVudHMsCit9OworCitzdGF0aWMgaW50IGF0aDExa19taGlfZ2V0X21zaShzdHJ1Y3Qg YXRoMTFrX3BjaSAqYWJfcGNpKQoreworCXN0cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBhYl9wY2kt PmFiOworCXUzMiB1c2VyX2Jhc2VfZGF0YSwgYmFzZV92ZWN0b3I7CisJaW50IHJldCwgbnVtX3Zl Y3RvcnMsIGk7CisJaW50ICppcnE7CisKKwlyZXQgPSBhdGgxMWtfcGNpX2dldF91c2VyX21zaV9h c3NpZ25tZW50KGFiX3BjaSwKKwkJCQkJCSAiTUhJIiwgJm51bV92ZWN0b3JzLAorCQkJCQkJICZ1 c2VyX2Jhc2VfZGF0YSwgJmJhc2VfdmVjdG9yKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJYXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19QQ0ksICJOdW1iZXIgb2YgYXNzaWduZWQgTVNJ IGZvciBNSEkgaXMgJWQsIGJhc2UgdmVjdG9yIGlzICVkXG4iLAorCQkgICBudW1fdmVjdG9ycywg YmFzZV92ZWN0b3IpOworCisJaXJxID0ga2NhbGxvYyhudW1fdmVjdG9ycywgc2l6ZW9mKGludCks IEdGUF9LRVJORUwpOworCWlmICghaXJxKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAoaSA9 IDA7IGkgPCBudW1fdmVjdG9yczsgaSsrKQorCQlpcnFbaV0gPSBhdGgxMWtfcGNpX2dldF9tc2lf aXJxKGFiLT5kZXYsCisJCQkJCQliYXNlX3ZlY3RvciArIGkpOworCisJYWJfcGNpLT5taGlfY3Ry bC0+aXJxID0gaXJxOworCWFiX3BjaS0+bWhpX2N0cmwtPm5yX2lycXMgPSBudW1fdmVjdG9yczsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0aDExa19taGlfb3BfcnVudGltZV9nZXQo c3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIGF0aDExa19taGlfb3BfcnVudGltZV9wdXQoc3RydWN0IG1oaV9jb250cm9sbGVy ICptaGlfY250cmwpCit7Cit9CisKK3N0YXRpYyB2b2lkIGF0aDExa19taGlfb3Bfc3RhdHVzX2Ni KHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLAorCQkJCSAgICBlbnVtIG1oaV9jYWxs YmFjayBjYikKK3sKK30KKworc3RhdGljIGludCBhdGgxMWtfbWhpX29wX3JlYWRfcmVnKHN0cnVj dCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLAorCQkJCSAgdm9pZCBfX2lvbWVtICphZGRyLAor CQkJCSAgdTMyICpvdXQpCit7CisJKm91dCA9IHJlYWRsKGFkZHIpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIGF0aDExa19taGlfb3Bfd3JpdGVfcmVnKHN0cnVjdCBtaGlfY29udHJv bGxlciAqbWhpX2NudHJsLAorCQkJCSAgICB2b2lkIF9faW9tZW0gKmFkZHIsCisJCQkJICAgIHUz MiB2YWwpCit7CisJd3JpdGVsKHZhbCwgYWRkcik7Cit9CisKK2ludCBhdGgxMWtfbWhpX3JlZ2lz dGVyKHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2kpCit7CisJc3RydWN0IGF0aDExa19iYXNlICph YiA9IGFiX3BjaS0+YWI7CisJc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY3RybDsKKwlpbnQg cmV0OworCisJbWhpX2N0cmwgPSBremFsbG9jKHNpemVvZigqbWhpX2N0cmwpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIW1oaV9jdHJsKQorCQlyZXR1cm4gUFRSX0VSUihtaGlfY3RybCk7CisKKwlhdGgx MWtfY29yZV9jcmVhdGVfZmlybXdhcmVfcGF0aChhYiwgQVRIMTFLX0FNU1NfRklMRSwKKwkJCQkJ IGFiX3BjaS0+YW1zc19wYXRoLAorCQkJCQkgc2l6ZW9mKGFiX3BjaS0+YW1zc19wYXRoKSk7CisK KwlhYl9wY2ktPm1oaV9jdHJsID0gbWhpX2N0cmw7CisJbWhpX2N0cmwtPmNudHJsX2RldiA9IGFi LT5kZXY7CisJbWhpX2N0cmwtPmZ3X2ltYWdlID0gYWJfcGNpLT5hbXNzX3BhdGg7CisJbWhpX2N0 cmwtPnJlZ3MgPSBhYi0+bWVtOworCisJcmV0ID0gYXRoMTFrX21oaV9nZXRfbXNpKGFiX3BjaSk7 CisJaWYgKHJldCkgeworCQlhdGgxMWtfZXJyKGFiLCAiZmFpbGVkIHRvIGdldCBtc2kgZm9yIG1o aVxuIik7CisJCWtmcmVlKG1oaV9jdHJsKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltaGlfY3Ry bC0+aW92YV9zdGFydCA9IDA7CisJbWhpX2N0cmwtPmlvdmFfc3RvcCA9IDB4ZmZmZmZmZmY7CisJ bWhpX2N0cmwtPnNibF9zaXplID0gU1pfNTEySzsKKwltaGlfY3RybC0+c2VnX2xlbiA9IFNaXzUx Mks7CisJbWhpX2N0cmwtPmZiY19kb3dubG9hZCA9IHRydWU7CisJbWhpX2N0cmwtPnJ1bnRpbWVf Z2V0ID0gYXRoMTFrX21oaV9vcF9ydW50aW1lX2dldDsKKwltaGlfY3RybC0+cnVudGltZV9wdXQg PSBhdGgxMWtfbWhpX29wX3J1bnRpbWVfcHV0OworCW1oaV9jdHJsLT5zdGF0dXNfY2IgPSBhdGgx MWtfbWhpX29wX3N0YXR1c19jYjsKKwltaGlfY3RybC0+cmVhZF9yZWcgPSBhdGgxMWtfbWhpX29w X3JlYWRfcmVnOworCW1oaV9jdHJsLT53cml0ZV9yZWcgPSBhdGgxMWtfbWhpX29wX3dyaXRlX3Jl ZzsKKworCXJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsLCAmYXRoMTFrX21o aV9jb25maWcpOworCWlmIChyZXQpIHsKKwkJYXRoMTFrX2VycihhYiwgImZhaWxlZCB0byByZWdp c3RlciB0byBtaGkgYnVzLCBlcnIgPSAlZFxuIiwgcmV0KTsKKwkJa2ZyZWUobWhpX2N0cmwpOwor CQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCit2b2lkIGF0aDExa19taGlfdW5y ZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpKQoreworCXN0cnVjdCBtaGlfY29udHJv bGxlciAqbWhpX2N0cmwgPSBhYl9wY2ktPm1oaV9jdHJsOworCisJbWhpX3VucmVnaXN0ZXJfY29u dHJvbGxlcihtaGlfY3RybCk7CisJa2ZyZWUobWhpX2N0cmwtPmlycSk7Cit9CisKK3N0YXRpYyBj aGFyICphdGgxMWtfbWhpX3N0YXRlX3RvX3N0cihlbnVtIGF0aDExa19taGlfc3RhdGUgbWhpX3N0 YXRlKQoreworCXN3aXRjaCAobWhpX3N0YXRlKSB7CisJY2FzZSBBVEgxMUtfTUhJX0lOSVQ6CisJ CXJldHVybiAiSU5JVCI7CisJY2FzZSBBVEgxMUtfTUhJX0RFSU5JVDoKKwkJcmV0dXJuICJERUlO SVQiOworCWNhc2UgQVRIMTFLX01ISV9QT1dFUl9PTjoKKwkJcmV0dXJuICJQT1dFUl9PTiI7CisJ Y2FzZSBBVEgxMUtfTUhJX1BPV0VSX09GRjoKKwkJcmV0dXJuICJQT1dFUl9PRkYiOworCWNhc2Ug QVRIMTFLX01ISV9GT1JDRV9QT1dFUl9PRkY6CisJCXJldHVybiAiRk9SQ0VfUE9XRVJfT0ZGIjsK KwljYXNlIEFUSDExS19NSElfU1VTUEVORDoKKwkJcmV0dXJuICJTVVNQRU5EIjsKKwljYXNlIEFU SDExS19NSElfUkVTVU1FOgorCQlyZXR1cm4gIlJFU1VNRSI7CisJY2FzZSBBVEgxMUtfTUhJX1RS SUdHRVJfUkRETToKKwkJcmV0dXJuICJUUklHR0VSX1JERE0iOworCWNhc2UgQVRIMTFLX01ISV9S RERNX0RPTkU6CisJCXJldHVybiAiUkRETV9ET05FIjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gIlVO S05PV04iOworCX0KK307CisKK3N0YXRpYyB2b2lkIGF0aDExa19taGlfc2V0X3N0YXRlX2JpdChz dHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLAorCQkJCSAgICAgZW51bSBhdGgxMWtfbWhpX3N0YXRl IG1oaV9zdGF0ZSkKK3sKKwlzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gYWJfcGNpLT5hYjsKKwor CXN3aXRjaCAobWhpX3N0YXRlKSB7CisJY2FzZSBBVEgxMUtfTUhJX0lOSVQ6CisJCXNldF9iaXQo QVRIMTFLX01ISV9JTklULCAmYWJfcGNpLT5taGlfc3RhdGUpOworCQlicmVhazsKKwljYXNlIEFU SDExS19NSElfREVJTklUOgorCQljbGVhcl9iaXQoQVRIMTFLX01ISV9JTklULCAmYWJfcGNpLT5t aGlfc3RhdGUpOworCQlicmVhazsKKwljYXNlIEFUSDExS19NSElfUE9XRVJfT046CisJCXNldF9i aXQoQVRIMTFLX01ISV9QT1dFUl9PTiwgJmFiX3BjaS0+bWhpX3N0YXRlKTsKKwkJYnJlYWs7CisJ Y2FzZSBBVEgxMUtfTUhJX1BPV0VSX09GRjoKKwljYXNlIEFUSDExS19NSElfRk9SQ0VfUE9XRVJf T0ZGOgorCQljbGVhcl9iaXQoQVRIMTFLX01ISV9QT1dFUl9PTiwgJmFiX3BjaS0+bWhpX3N0YXRl KTsKKwkJY2xlYXJfYml0KEFUSDExS19NSElfVFJJR0dFUl9SRERNLCAmYWJfcGNpLT5taGlfc3Rh dGUpOworCQljbGVhcl9iaXQoQVRIMTFLX01ISV9SRERNX0RPTkUsICZhYl9wY2ktPm1oaV9zdGF0 ZSk7CisJCWJyZWFrOworCWNhc2UgQVRIMTFLX01ISV9TVVNQRU5EOgorCQlzZXRfYml0KEFUSDEx S19NSElfU1VTUEVORCwgJmFiX3BjaS0+bWhpX3N0YXRlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEgx MUtfTUhJX1JFU1VNRToKKwkJY2xlYXJfYml0KEFUSDExS19NSElfU1VTUEVORCwgJmFiX3BjaS0+ bWhpX3N0YXRlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEgxMUtfTUhJX1RSSUdHRVJfUkRETToKKwkJ c2V0X2JpdChBVEgxMUtfTUhJX1RSSUdHRVJfUkRETSwgJmFiX3BjaS0+bWhpX3N0YXRlKTsKKwkJ YnJlYWs7CisJY2FzZSBBVEgxMUtfTUhJX1JERE1fRE9ORToKKwkJc2V0X2JpdChBVEgxMUtfTUhJ X1JERE1fRE9ORSwgJmFiX3BjaS0+bWhpX3N0YXRlKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJ YXRoMTFrX2VycihhYiwgInVuaGFuZGxlZCBtaGkgc3RhdGUgKCVkKVxuIiwgbWhpX3N0YXRlKTsK Kwl9Cit9CisKK3N0YXRpYyBpbnQgYXRoMTFrX21oaV9jaGVja19zdGF0ZV9iaXQoc3RydWN0IGF0 aDExa19wY2kgKmFiX3BjaSwKKwkJCQkgICAgICBlbnVtIGF0aDExa19taGlfc3RhdGUgbWhpX3N0 YXRlKQoreworCXN0cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBhYl9wY2ktPmFiOworCisJc3dpdGNo IChtaGlfc3RhdGUpIHsKKwljYXNlIEFUSDExS19NSElfSU5JVDoKKwkJaWYgKCF0ZXN0X2JpdChB VEgxMUtfTUhJX0lOSVQsICZhYl9wY2ktPm1oaV9zdGF0ZSkpCisJCQlyZXR1cm4gMDsKKwkJYnJl YWs7CisJY2FzZSBBVEgxMUtfTUhJX0RFSU5JVDoKKwljYXNlIEFUSDExS19NSElfUE9XRVJfT046 CisJCWlmICh0ZXN0X2JpdChBVEgxMUtfTUhJX0lOSVQsICZhYl9wY2ktPm1oaV9zdGF0ZSkgJiYK KwkJICAgICF0ZXN0X2JpdChBVEgxMUtfTUhJX1BPV0VSX09OLCAmYWJfcGNpLT5taGlfc3RhdGUp KQorCQkJcmV0dXJuIDA7CisJCWJyZWFrOworCWNhc2UgQVRIMTFLX01ISV9GT1JDRV9QT1dFUl9P RkY6CisJCWlmICh0ZXN0X2JpdChBVEgxMUtfTUhJX1BPV0VSX09OLCAmYWJfcGNpLT5taGlfc3Rh dGUpKQorCQkJcmV0dXJuIDA7CisJCWJyZWFrOworCWNhc2UgQVRIMTFLX01ISV9QT1dFUl9PRkY6 CisJY2FzZSBBVEgxMUtfTUhJX1NVU1BFTkQ6CisJCWlmICh0ZXN0X2JpdChBVEgxMUtfTUhJX1BP V0VSX09OLCAmYWJfcGNpLT5taGlfc3RhdGUpICYmCisJCSAgICAhdGVzdF9iaXQoQVRIMTFLX01I SV9TVVNQRU5ELCAmYWJfcGNpLT5taGlfc3RhdGUpKQorCQkJcmV0dXJuIDA7CisJCWJyZWFrOwor CWNhc2UgQVRIMTFLX01ISV9SRVNVTUU6CisJCWlmICh0ZXN0X2JpdChBVEgxMUtfTUhJX1NVU1BF TkQsICZhYl9wY2ktPm1oaV9zdGF0ZSkpCisJCQlyZXR1cm4gMDsKKwkJYnJlYWs7CisJY2FzZSBB VEgxMUtfTUhJX1RSSUdHRVJfUkRETToKKwkJaWYgKHRlc3RfYml0KEFUSDExS19NSElfUE9XRVJf T04sICZhYl9wY2ktPm1oaV9zdGF0ZSkgJiYKKwkJICAgICF0ZXN0X2JpdChBVEgxMUtfTUhJX1RS SUdHRVJfUkRETSwgJmFiX3BjaS0+bWhpX3N0YXRlKSkKKwkJCXJldHVybiAwOworCQlicmVhazsK KwljYXNlIEFUSDExS19NSElfUkRETV9ET05FOgorCQlyZXR1cm4gMDsKKwlkZWZhdWx0OgorCQlh dGgxMWtfZXJyKGFiLCAidW5oYW5kbGVkIG1oaSBzdGF0ZTogJXMoJWQpXG4iLAorCQkJICAgYXRo MTFrX21oaV9zdGF0ZV90b19zdHIobWhpX3N0YXRlKSwgbWhpX3N0YXRlKTsKKwl9CisKKwlhdGgx MWtfZXJyKGFiLCAiZmFpbGVkIHRvIHNldCBtaGkgc3RhdGUgJXMoJWQpIGluIGN1cnJlbnQgbWhp IHN0YXRlICgweCVseClcbiIsCisJCSAgIGF0aDExa19taGlfc3RhdGVfdG9fc3RyKG1oaV9zdGF0 ZSksIG1oaV9zdGF0ZSwKKwkJICAgYWJfcGNpLT5taGlfc3RhdGUpOworCisJcmV0dXJuIC1FSU5W QUw7Cit9CisKK3N0YXRpYyBpbnQgYXRoMTFrX21oaV9zZXRfc3RhdGUoc3RydWN0IGF0aDExa19w Y2kgKmFiX3BjaSwKKwkJCQllbnVtIGF0aDExa19taGlfc3RhdGUgbWhpX3N0YXRlKQoreworCXN0 cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBhYl9wY2ktPmFiOworCWludCByZXQ7CisKKwlyZXQgPSBh dGgxMWtfbWhpX2NoZWNrX3N0YXRlX2JpdChhYl9wY2ksIG1oaV9zdGF0ZSk7CisJaWYgKHJldCkK KwkJZ290byBvdXQ7CisKKwlhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1BDSSwgInNldHRpbmcg bWhpIHN0YXRlOiAlcyglZClcbiIsCisJCSAgIGF0aDExa19taGlfc3RhdGVfdG9fc3RyKG1oaV9z dGF0ZSksIG1oaV9zdGF0ZSk7CisKKwlzd2l0Y2ggKG1oaV9zdGF0ZSkgeworCWNhc2UgQVRIMTFL X01ISV9JTklUOgorCQlyZXQgPSBtaGlfcHJlcGFyZV9mb3JfcG93ZXJfdXAoYWJfcGNpLT5taGlf Y3RybCk7CisJCWJyZWFrOworCWNhc2UgQVRIMTFLX01ISV9ERUlOSVQ6CisJCW1oaV91bnByZXBh cmVfYWZ0ZXJfcG93ZXJfZG93bihhYl9wY2ktPm1oaV9jdHJsKTsKKwkJcmV0ID0gMDsKKwkJYnJl YWs7CisJY2FzZSBBVEgxMUtfTUhJX1BPV0VSX09OOgorCQlyZXQgPSBtaGlfYXN5bmNfcG93ZXJf dXAoYWJfcGNpLT5taGlfY3RybCk7CisJCWJyZWFrOworCWNhc2UgQVRIMTFLX01ISV9QT1dFUl9P RkY6CisJCW1oaV9wb3dlcl9kb3duKGFiX3BjaS0+bWhpX2N0cmwsIHRydWUpOworCQlyZXQgPSAw OworCQlicmVhazsKKwljYXNlIEFUSDExS19NSElfRk9SQ0VfUE9XRVJfT0ZGOgorCQltaGlfcG93 ZXJfZG93bihhYl9wY2ktPm1oaV9jdHJsLCBmYWxzZSk7CisJCXJldCA9IDA7CisJCWJyZWFrOwor CWNhc2UgQVRIMTFLX01ISV9TVVNQRU5EOgorCQlicmVhazsKKwljYXNlIEFUSDExS19NSElfUkVT VU1FOgorCQlicmVhazsKKwljYXNlIEFUSDExS19NSElfVFJJR0dFUl9SRERNOgorCQlyZXQgPSBt aGlfZm9yY2VfcmRkbV9tb2RlKGFiX3BjaS0+bWhpX2N0cmwpOworCQlicmVhazsKKwljYXNlIEFU SDExS19NSElfUkRETV9ET05FOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlhdGgxMWtfZXJyKGFi LCAidW5oYW5kbGVkIE1ISSBzdGF0ZSAoJWQpXG4iLCBtaGlfc3RhdGUpOworCQlyZXQgPSAtRUlO VkFMOworCX0KKworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJYXRoMTFrX21oaV9zZXRfc3Rh dGVfYml0KGFiX3BjaSwgbWhpX3N0YXRlKTsKKworCXJldHVybiAwOworCitvdXQ6CisJYXRoMTFr X2VycihhYiwgImZhaWxlZCB0byBzZXQgbWhpIHN0YXRlOiAlcyglZClcbiIsCisJCSAgIGF0aDEx a19taGlfc3RhdGVfdG9fc3RyKG1oaV9zdGF0ZSksIG1oaV9zdGF0ZSk7CisJcmV0dXJuIHJldDsK K30KKworaW50IGF0aDExa19taGlfc3RhcnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSkKK3sK KwlpbnQgcmV0OworCisJYWJfcGNpLT5taGlfY3RybC0+dGltZW91dF9tcyA9IE1ISV9USU1FT1VU X0RFRkFVTFRfTVM7CisKKwlyZXQgPSBhdGgxMWtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEx S19NSElfSU5JVCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBhdGgxMWtfbWhp X3NldF9zdGF0ZShhYl9wY2ksIEFUSDExS19NSElfUE9XRVJfT04pOworCWlmIChyZXQpCisJCWdv dG8gb3V0OworCisJcmV0dXJuIDA7CisKK291dDoKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGF0 aDExa19taGlfc3RvcChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpKQoreworCWF0aDExa19taGlf c2V0X3N0YXRlKGFiX3BjaSwgQVRIMTFLX01ISV9SRVNVTUUpOworCWF0aDExa19taGlfc2V0X3N0 YXRlKGFiX3BjaSwgQVRIMTFLX01ISV9QT1dFUl9PRkYpOworCWF0aDExa19taGlfc2V0X3N0YXRl KGFiX3BjaSwgQVRIMTFLX01ISV9ERUlOSVQpOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDExay9taGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjOTE4 ODFiNGZiZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgx MWsvbWhpLmgKQEAgLTAsMCArMSwyOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0zLUNsYXVzZS1DbGVhciAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMCBUaGUgTGludXgg Rm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworI2lmbmRlZiBfQVRIMTFLX01I SV9ICisjZGVmaW5lIF9BVEgxMUtfTUhJX0gKKworI2luY2x1ZGUgInBjaS5oIgorCitlbnVtIGF0 aDExa19taGlfc3RhdGUgeworCUFUSDExS19NSElfSU5JVCwKKwlBVEgxMUtfTUhJX0RFSU5JVCwK KwlBVEgxMUtfTUhJX1BPV0VSX09OLAorCUFUSDExS19NSElfUE9XRVJfT0ZGLAorCUFUSDExS19N SElfRk9SQ0VfUE9XRVJfT0ZGLAorCUFUSDExS19NSElfU1VTUEVORCwKKwlBVEgxMUtfTUhJX1JF U1VNRSwKKwlBVEgxMUtfTUhJX1RSSUdHRVJfUkRETSwKKwlBVEgxMUtfTUhJX1JERE0sCisJQVRI MTFLX01ISV9SRERNX0RPTkUsCit9OworCitpbnQgYXRoMTFrX21oaV9zdGFydChzdHJ1Y3QgYXRo MTFrX3BjaSAqYXJfcGNpKTsKK3ZvaWQgYXRoMTFrX21oaV9zdG9wKHN0cnVjdCBhdGgxMWtfcGNp ICphcl9wY2kpOworaW50IGF0aDExa19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDExa19wY2kgKmFy X3BjaSk7Cit2b2lkIGF0aDExa19taGlfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX3BjaSAqYXJf cGNpKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo MTFrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYwppbmRleCBm ZjQwMWQyODcxZjMuLjZmNzc4OWZhMjNkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDExay9wY2kuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFr L3BjaS5jCkBAIC05LDYgKzksOCBAQAogCiAjaW5jbHVkZSAicGNpLmgiCiAjaW5jbHVkZSAiY29y ZS5oIgorI2luY2x1ZGUgImhpZi5oIgorI2luY2x1ZGUgIm1oaS5oIgogI2luY2x1ZGUgImRlYnVn LmgiCiAKICNkZWZpbmUgQVRIMTFLX1BDSV9CQVJfTlVNCQkwCkBAIC0zNCw2ICszNiw0MCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19tc2lfY29uZmlnIG1zaV9jb25maWcgPSB7CiAJfSwK IH07CiAKK2ludCBhdGgxMWtfcGNpX2dldF9tc2lfaXJxKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHZlY3RvcikKK3sKKwlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9k ZXYoZGV2KTsKKworCXJldHVybiBwY2lfaXJxX3ZlY3RvcihwY2lfZGV2LCB2ZWN0b3IpOworfQor CitpbnQgYXRoMTFrX3BjaV9nZXRfdXNlcl9tc2lfYXNzaWdubWVudChzdHJ1Y3QgYXRoMTFrX3Bj aSAqYWJfcGNpLCBjaGFyICp1c2VyX25hbWUsCisJCQkJICAgICAgIGludCAqbnVtX3ZlY3RvcnMs IHUzMiAqdXNlcl9iYXNlX2RhdGEsCisJCQkJICAgICAgIHUzMiAqYmFzZV92ZWN0b3IpCit7CisJ c3RydWN0IGF0aDExa19iYXNlICphYiA9IGFiX3BjaS0+YWI7CisJaW50IGlkeDsKKworCWZvciAo aWR4ID0gMDsgaWR4IDwgbXNpX2NvbmZpZy50b3RhbF91c2VyczsgaWR4KyspIHsKKwkJaWYgKHN0 cmNtcCh1c2VyX25hbWUsIG1zaV9jb25maWcudXNlcnNbaWR4XS5uYW1lKSA9PSAwKSB7CisJCQkq bnVtX3ZlY3RvcnMgPSBtc2lfY29uZmlnLnVzZXJzW2lkeF0ubnVtX3ZlY3RvcnM7CisJCQkqdXNl cl9iYXNlX2RhdGEgPSBtc2lfY29uZmlnLnVzZXJzW2lkeF0uYmFzZV92ZWN0b3IKKwkJCQkrIGFi X3BjaS0+bXNpX2VwX2Jhc2VfZGF0YTsKKwkJCSpiYXNlX3ZlY3RvciA9IG1zaV9jb25maWcudXNl cnNbaWR4XS5iYXNlX3ZlY3RvcjsKKworCQkJYXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19QQ0ks ICJBc3NpZ24gTVNJIHRvIHVzZXI6ICVzLCBudW1fdmVjdG9yczogJWQsIHVzZXJfYmFzZV9kYXRh OiAldSwgYmFzZV92ZWN0b3I6ICV1XG4iLAorCQkJCSAgIHVzZXJfbmFtZSwgKm51bV92ZWN0b3Jz LCAqdXNlcl9iYXNlX2RhdGEsCisJCQkJICAgKmJhc2VfdmVjdG9yKTsKKworCQkJcmV0dXJuIDA7 CisJCX0KKwl9CisKKwlhdGgxMWtfZXJyKGFiLCAiRmFpbGVkIHRvIGZpbmQgTVNJIGFzc2lnbm1l bnQgZm9yICVzIVxuIiwgdXNlcl9uYW1lKTsKKworCXJldHVybiAtRUlOVkFMOworfQorCiBzdGF0 aWMgaW50IGF0aDExa19wY2lfZW5hYmxlX21zaShzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpKQog ewogCXN0cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBhYl9wY2ktPmFiOwpAQCAtMTYxLDYgKzE5Nywz MiBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfcGNpX2ZyZWVfcmVnaW9uKHN0cnVjdCBhdGgxMWtfcGNp ICphYl9wY2kpCiAJCXBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTsKIH0KIAorc3RhdGljIGlu dCBhdGgxMWtfcGNpX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCit7CisJc3RydWN0 IGF0aDExa19wY2kgKmFiX3BjaSA9IGF0aDExa19wY2lfcHJpdihhYik7CisJaW50IHJldDsKKwor CXJldCA9IGF0aDExa19taGlfc3RhcnQoYWJfcGNpKTsKKwlpZiAocmV0KSB7CisJCWF0aDExa19l cnIoYWIsICJmYWlsZWQgdG8gc3RhcnQgbWhpOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYXRoMTFrX3BjaV9wb3dlcl9kb3du KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCit7CisJc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSA9 IGF0aDExa19wY2lfcHJpdihhYik7CisKKwlhdGgxMWtfbWhpX3N0b3AoYWJfcGNpKTsKK30KKwor c3RhdGljIF9fbWF5YmVfdW51c2VkIGNvbnN0IHN0cnVjdCBhdGgxMWtfaGlmX29wcyBhdGgxMWtf cGNpX2hpZl9vcHMgPSB7CisJLnBvd2VyX2Rvd24gPSBhdGgxMWtfcGNpX3Bvd2VyX2Rvd24sCisJ LnBvd2VyX3VwID0gYXRoMTFrX3BjaV9wb3dlcl91cCwKK307CisKIHN0YXRpYyBpbnQgYXRoMTFr X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJCSAgICBjb25zdCBzdHJ1Y3QgcGNp X2RldmljZV9pZCAqcGNpX2RldikKIHsKQEAgLTIxMiw2ICsyNzQsMTIgQEAgc3RhdGljIGludCBh dGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCWlmIChyZXQpCiAJCWdvdG8g ZXJyX3BjaV9kaXNhYmxlX21zaTsKIAorCXJldCA9IGF0aDExa19taGlfcmVnaXN0ZXIoYWJfcGNp KTsKKwlpZiAocmV0KSB7CisJCWF0aDExa19lcnIoYWIsICJmYWlsZWQgdG8gcmVnaXN0ZXIgbWhp OiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfcGNpX2Rpc2FibGVfbXNpOworCX0KKwogCXJldHVy biAwOwogCiBlcnJfcGNpX2Rpc2FibGVfbXNpOgpAQCAtMjMyLDE2ICszMDAsMjUgQEAgc3RhdGlj IHZvaWQgYXRoMTFrX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJc3RydWN0IGF0 aDExa19wY2kgKmFiX3BjaSA9IGF0aDExa19wY2lfcHJpdihhYik7CiAKIAlzZXRfYml0KEFUSDEx S19GTEFHX1VOUkVHSVNURVJJTkcsICZhYi0+ZGV2X2ZsYWdzKTsKKwlhdGgxMWtfbWhpX3VucmVn aXN0ZXIoYWJfcGNpKTsKIAlhdGgxMWtfcGNpX2Rpc2FibGVfbXNpKGFiX3BjaSk7CiAJYXRoMTFr X3BjaV9mcmVlX3JlZ2lvbihhYl9wY2kpOwogCWF0aDExa19jb3JlX2ZyZWUoYWIpOwogfQogCitz dGF0aWMgdm9pZCBhdGgxMWtfcGNpX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQorewor CXN0cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CisKKwlhdGgx MWtfcGNpX3Bvd2VyX2Rvd24oYWIpOworfQorCiBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRo MTFrX3BjaV9kcml2ZXIgPSB7CiAJLm5hbWUgPSAiYXRoMTFrX3BjaSIsCiAJLmlkX3RhYmxlID0g YXRoMTFrX3BjaV9pZF90YWJsZSwKIAkucHJvYmUgPSBhdGgxMWtfcGNpX3Byb2JlLAogCS5yZW1v dmUgPSBhdGgxMWtfcGNpX3JlbW92ZSwKKwkuc2h1dGRvd24gPSBhdGgxMWtfcGNpX3NodXRkb3du LAogfTsKIAogc3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmggYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTFrL3BjaS5oCmluZGV4IGRiNzVlYWUyNmY3MS4uODVlMDMzMDY5ZDdhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5oCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmgKQEAgLTIsNiArMiwxMCBAQAogLyoKICAq IENvcHlyaWdodCAoYykgMjAxOS0yMDIwIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLgogICovCisjaWZuZGVmIF9BVEgxMUtfUENJX0gKKyNkZWZpbmUgX0FUSDExS19Q Q0lfSAorCisjaW5jbHVkZSA8bGludXgvbWhpLmg+CiAKICNpbmNsdWRlICJjb3JlLmgiCiAKQEAg LTIxLDEwICsyNSwyMCBAQCBzdHJ1Y3QgYXRoMTFrX3BjaSB7CiAJc3RydWN0IHBjaV9kZXYgKnBk ZXY7CiAJc3RydWN0IGF0aDExa19iYXNlICphYjsKIAl1MTYgZGV2X2lkOworCWNoYXIgYW1zc19w YXRoWzEwMF07CiAJdTMyIG1zaV9lcF9iYXNlX2RhdGE7CisJc3RydWN0IG1oaV9jb250cm9sbGVy ICptaGlfY3RybDsKKwl1bnNpZ25lZCBsb25nIG1oaV9zdGF0ZTsKIH07CiAKIHN0YXRpYyBpbmxp bmUgc3RydWN0IGF0aDExa19wY2kgKmF0aDExa19wY2lfcHJpdihzdHJ1Y3QgYXRoMTFrX2Jhc2Ug KmFiKQogewogCXJldHVybiAoc3RydWN0IGF0aDExa19wY2kgKilhYi0+ZHJ2X3ByaXY7CiB9CisK K2ludCBhdGgxMWtfcGNpX2dldF91c2VyX21zaV9hc3NpZ25tZW50KHN0cnVjdCBhdGgxMWtfcGNp ICphcl9wY2ksIGNoYXIgKnVzZXJfbmFtZSwKKwkJCQkgICAgICAgaW50ICpudW1fdmVjdG9ycywg dTMyICp1c2VyX2Jhc2VfZGF0YSwKKwkJCQkgICAgICAgdTMyICpiYXNlX3ZlY3Rvcik7CitpbnQg YXRoMTFrX3BjaV9nZXRfbXNpX2lycShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB2 ZWN0b3IpOworCisjZW5kaWYKLS0gCjIuNy40CgoKLS0gCmF0aDExayBtYWlsaW5nIGxpc3QKYXRo MTFrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9hdGgxMWsK