From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v13 1/6] drm/layerscape: Add Freescale DCU DRM driver Date: Wed, 29 Jul 2015 14:54:47 +0800 Message-ID: <1438152892-11256-2-git-send-email-jianwei.wang.chn@gmail.com> References: <1438152892-11256-1-git-send-email-jianwei.wang.chn@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1438152892-11256-1-git-send-email-jianwei.wang.chn@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: devicetree@vger.kernel.org, Xiubo Li , daniel.vetter@ffwll.ch, Alison Wang , linux-kernel@vger.kernel.org, scottwood@freescale.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBmb3IgVHdvIERpbWVuc2lvbmFsIEFuaW1hdGlvbiBhbmQg Q29tcG9zaXRpbmcKRW5naW5lICgyRC1BQ0UpIG9uIHRoZSBGcmVlc2NhbGUgU29Dcy4KCjJELUFD RSBpcyBhIEZyZWVzY2FsZSBkaXNwbGF5IGNvbnRyb2xsZXIuIDJELUFDRSBkZXNjcmliZXMKdGhl IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIG1vZHVsZSBleHRyZW1lbHkgd2VsbCBpdHMgbmFtZSBpcyBh IHZhbHVlCnRoYXQgY2Fubm90IGJlIHVzZWQgYXMgYSB0b2tlbiBpbiBwcm9ncmFtbWluZyBsYW5n dWFnZXMuCkluc3RlYWQgdGhlIHZhbGlkIHRva2VuICJEQ1UiIGlzIHVzZWQgdG8gdGFnIHRoZSBy ZWdpc3RlciBuYW1lcyBhbmQKZnVuY3Rpb24gbmFtZXMuCgpUaGUgRGlzcGxheSBDb250cm9sbGVy IFVuaXQgKERDVSkgbW9kdWxlIGlzIGEgc3lzdGVtIG1hc3RlciB0aGF0CmZldGNoZXMgZ3JhcGhp Y3Mgc3RvcmVkIGluIGludGVybmFsIG9yIGV4dGVybmFsIG1lbW9yeSBhbmQgZGlzcGxheXMKdGhl bSBvbiBhIFRGVCBMQ0QgcGFuZWwuIEEgd2lkZSByYW5nZSBvZiBwYW5lbCBzaXplcyBpcyBzdXBw b3J0ZWQKYW5kIHRoZSB0aW1pbmcgb2YgdGhlIGludGVyZmFjZSBzaWduYWxzIGlzIGhpZ2hseSBj b25maWd1cmFibGUuCkdyYXBoaWNzIGFyZSByZWFkIGRpcmVjdGx5IGZyb20gbWVtb3J5IGFuZCB0 aGVuIGJsZW5kZWQgaW4gcmVhbC10aW1lLAp3aGljaCBhbGxvd3MgZm9yIGR5bmFtaWMgY29udGVu dCBjcmVhdGlvbiB3aXRoIG1pbmltYWwgQ1BVCmludGVydmVudGlvbi4KClRoZSBmZWF0dXJlczoK KDEpIEZ1bGwgUkdCODg4IG91dHB1dCB0byBURlQgTENEIHBhbmVsLgooMikgQmxlbmRpbmcgb2Yg ZWFjaCBwaXhlbCB1c2luZyB1cCB0byA0IHNvdXJjZSBsYXllcnMKZGVwZW5kZW50Cm9uIHNpemUg b2YgcGFuZWwuCigzKSBFYWNoIGdyYXBoaWMgbGF5ZXIgY2FuIGJlIHBsYWNlZCB3aXRoIG9uZSBw aXhlbCByZXNvbHV0aW9uCmluIGVpdGhlciBheGlzLgooNCkgRWFjaCBncmFwaGljIGxheWVyIHN1 cHBvcnQgUkdCNTY1IGFuZCBSR0I4ODggZGlyZWN0IGNvbG9ycwp3aXRob3V0IGFscGhhIGNoYW5u ZWwgYW5kIEJHUkE4ODg4IEJHUkE0NDQ0IEFSR0IxNTU1IGRpcmVjdApjb2xvcnMKd2l0aCBhbiBh bHBoYSBjaGFubmVsIGFuZCBZVVY0MjIgZm9ybWF0LgooNSkgRWFjaCBncmFwaGljIGxheWVyIHN1 cHBvcnQgYWxwaGEgYmxlbmRpbmcgd2l0aCA4LWJpdApyZXNvbHV0aW9uLgoKVGhpcyBpcyBhIHNp bXBsaWZpZWQgdmVyc2lvbiwgb25seSBvbmUgcHJpbWFyeSBwbGFuZSwgb25lCmZyYW1lYnVmZmVy LCBvbmUgY3J0Yywgb25lIGNvbm5lY3RvciBhbmQgb25lIGVuY29kZXIgZm9yIFRGVApMQ0QgcGFu ZWwuCgpTaWduZWQtb2ZmLWJ5OiBBbGlzb24gV2FuZyA8YjE4OTY1QGZyZWVzY2FsZS5jb20+ClNp Z25lZC1vZmYtYnk6IFhpdWJvIExpIDxsaXhpdWJvQGNtc3MuY2hpbmFtb2JpbGUuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBKaWFud2VpIFdhbmcgPGppYW53ZWkud2FuZy5jaG5AZ21haWwuY29tPgpBY2tl ZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KLS0tCiAuLi4vZGV2 aWNldHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGN1LnR4dCAgICAgICAgICB8ICAyMiArKwogZHJp dmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwog ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgfCAg MTggKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg fCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jICAgICAg ICAgfCAyMDggKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2NydGMuaCAgICAgICAgIHwgIDE5ICsKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX2Rydi5jICAgICAgICAgIHwgNDA0ICsrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmggICAgICAgICAgfCAxOTcgKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZmJkZXYuYyAgICAgICAgfCAg MjMgKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jICAgICAgICAg IHwgIDQ1ICsrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0Lmgg ICAgICAgfCAgMzMgKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5l LmMgICAgICAgIHwgMjYxICsrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX3BsYW5lLmggICAgICAgIHwgIDE3ICsKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX3JnYi5jICAgICAgICAgIHwgMTgyICsrKysrKysrKysKIDE1IGZpbGVzIGNo YW5nZWQsIDE0MzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGN1LnR4dAogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRl di5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fa21zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xf ZGN1X2RybV9vdXRwdXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZnNsLGRjdS50eHQgYi9Eb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZnNsLGRjdS50eHQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZWJmMWJlOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGN1LnR4dApAQCAtMCwwICsxLDIy IEBACitEZXZpY2UgVHJlZSBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIERDVSBEUk0gRHJpdmVyCisK K1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlTaG91bGQgYmUgb25lIG9mCisJ KiAiZnNsLGxzMTAyMWEtZGN1Ii4KKwkqICJmc2wsdmY2MTAtZGN1Ii4KKworLSByZWc6CQkJQWRk cmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIGRjdS4KKy0gY2xvY2tzOgkJ RnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogaGFuZGxlIHRvIGRjdSBjbG9jay4KKy0gY2xvY2st bmFtZXM6CQlGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBTaGFsbCBiZSAiZGN1Ii4KKy0gYmln LWVuZGlhbgkJQm9vbGVhbiBwcm9wZXJ0eSwgTFMxMDIxQSBEQ1UgcmVnaXN0ZXJzIGFyZSBiaWct ZW5kaWFuLgorLSBmc2wscGFuZWw6CQlUaGUgcGhhbmRsZSB0byBwYW5lbCBub2RlLgorCitFeGFt cGxlczoKK2RjdTogZGN1QDJjZTAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGxzMTAyMWEtZGN1 IjsKKwlyZWcgPSA8MHgwIDB4MmNlMDAwMCAweDAgMHgxMDAwMD47CisJY2xvY2tzID0gPCZwbGF0 Zm9ybV9jbGsgMD47CisJY2xvY2stbmFtZXMgPSAiZGN1IjsKKwliaWctZW5kaWFuOworCWZzbCxw YW5lbCA9IDwmcGFuZWw+OworfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln IGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggYzQ2Y2EzMS4uOWNmZDE0ZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25m aWcKQEAgLTIzMSw2ICsyMzEsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2Nv bmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWciCiAKK3NvdXJjZSAi ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL2dwdS9k cm0vdGVncmEvS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZp ZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQppbmRleCA1NzEzZDA1Li4xMWNiODFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC03MCwzICs3 MCw0IEBAIG9iai0kKENPTkZJR19EUk1fSU1YKSArPSBpbXgvCiBvYmoteQkJCSs9IGkyYy8KIG9i ai15CQkJKz0gcGFuZWwvCiBvYmoteQkJCSs9IGJyaWRnZS8KK29iai0kKENPTkZJR19EUk1fRlNM X0RDVSkgKz0gZnNsLWRjdS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmM3OGNmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9LY29uZmlnCkBAIC0wLDAgKzEsMTggQEAKK2NvbmZpZyBEUk1fRlNMX0RD VQorCXRyaXN0YXRlICJEUk0gU3VwcG9ydCBmb3IgRnJlZXNjYWxlIERDVSIKKwlkZXBlbmRzIG9u IERSTSAmJiBPRiAmJiBBUk0KKwlzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRQorCXNlbGVj dCBCQUNLTElHSFRfTENEX1NVUFBPUlQKKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlzZWxlY3Qg RFJNX0tNU19DTUFfSEVMUEVSCisJc2VsZWN0IERSTV9LTVNfRkJfSEVMUEVSCisJc2VsZWN0IERS TV9QQU5FTAorCXNlbGVjdCBGQl9TWVNfRklMTFJFQ1QKKwlzZWxlY3QgRkJfU1lTX0NPUFlBUkVB CisJc2VsZWN0IEZCX1NZU19JTUFHRUJMSVQKKwlzZWxlY3QgRkJfU1lTX0ZPUFMKKwlzZWxlY3Qg UkVHTUFQX01NSU8KKwlzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMKKwloZWxwCisJICBDaG9vc2Ug dGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYW4gRnJlZXNjYWxlIERDVSBjaGlwc2V0LgorCSAgSWYg TSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGZzbC1kY3UtZHJtLgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 ZWExNTIzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZp bGUKQEAgLTAsMCArMSw3IEBACitmc2wtZGN1LWRybS15IDo9IGZzbF9kY3VfZHJtX2Rydi5vIFwK KwkJIGZzbF9kY3VfZHJtX2ttcy5vIFwKKwkJIGZzbF9kY3VfZHJtX3JnYi5vIFwKKwkJIGZzbF9k Y3VfZHJtX3BsYW5lLm8gXAorCQkgZnNsX2RjdV9kcm1fY3J0Yy5vIFwKKwkJIGZzbF9kY3VfZHJt X2ZiZGV2Lm8KK29iai0kKENPTkZJR19EUk1fRlNMX0RDVSkJKz0gZnNsLWRjdS1kcm0ubwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjczYWIzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmMKQEAgLTAsMCArMSwyMDggQEAKKy8qCisg KiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZy ZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdt YXAuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisKKyNpbmNsdWRlICJm c2xfZGN1X2RybV9jcnRjLmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVk ZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19h dG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworfQorCitzdGF0aWMgaW50IGZz bF9kY3VfZHJtX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkJ IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKK3sKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZGlzYWJsZV9jcnRjKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owor CXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOwor CWludCByZXQ7CisKKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoZnNsX2Rldi0+cmVnbWFwLCBE Q1VfRENVX01PREUsCisJCQkJIERDVV9NT0RFX0RDVV9NT0RFX01BU0ssCisJCQkJIERDVV9NT0RF X0RDVV9NT0RFKERDVV9NT0RFX09GRikpOworCWlmIChyZXQpCisJCWRldl9lcnIoZnNsX2Rldi0+ ZGV2LCAiRGlzYWJsZSBDUlRDIGZhaWxlZFxuIik7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RFLAorCQkJICAgRENVX1VQREFURV9NT0RFX1JFQURS RUcpOworCWlmIChyZXQpCisJCWRldl9lcnIoZnNsX2Rldi0+ZGV2LCAiRW5hYmxlIENSVEMgZmFp bGVkXG4iKTsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19lbmFibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJaW50IHJldDsKKworCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhmc2xfZGV2LT5yZWdtYXAs IERDVV9EQ1VfTU9ERSwKKwkJCQkgRENVX01PREVfRENVX01PREVfTUFTSywKKwkJCQkgRENVX01P REVfRENVX01PREUoRENVX01PREVfTk9STUFMKSk7CisJaWYgKHJldCkKKwkJZGV2X2Vycihmc2xf ZGV2LT5kZXYsICJFbmFibGUgQ1JUQyBmYWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9S RUFEUkVHKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGZzbF9kZXYtPmRldiwgIkVuYWJsZSBDUlRD IGZhaWxlZFxuIik7Cit9CisKK3N0YXRpYyBib29sIGZzbF9kY3VfZHJtX2NydGNfbW9kZV9maXh1 cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkK K3sKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19tb2Rl X3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBk ZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGMt PnN0YXRlLT5tb2RlOworCXVuc2lnbmVkIGludCBoYnAsIGhmcCwgaHN3LCB2YnAsIHZmcCwgdnN3 LCBkaXYsIGluZGV4OworCXVuc2lnbmVkIGxvbmcgZGN1Y2xrOworCWludCByZXQ7CisKKwlpbmRl eCA9IGRybV9jcnRjX2luZGV4KGNydGMpOworCWRjdWNsayA9IGNsa19nZXRfcmF0ZShmc2xfZGV2 LT5jbGspOworCWRpdiA9IGRjdWNsayAvIG1vZGUtPmNsb2NrIC8gMTAwMDsKKworCS8qIENvbmZp Z3VyZSB0aW1pbmdzOiAqLworCWhicCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsK KwloZnAgPSBtb2RlLT5oc3luY19zdGFydCAtIG1vZGUtPmhkaXNwbGF5OworCWhzdyA9IG1vZGUt PmhzeW5jX2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0OworCXZicCA9IG1vZGUtPnZ0b3RhbCAtIG1v ZGUtPnZzeW5jX2VuZDsKKwl2ZnAgPSBtb2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZkaXNwbGF5 OworCXZzdyA9IG1vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX3N0YXJ0OworCisJcmV0ID0g cmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0hTWU5fUEFSQSwKKwkJCSAgIERDVV9I U1lOX1BBUkFfQlAoaGJwKSB8CisJCQkgICBEQ1VfSFNZTl9QQVJBX1BXKGhzdykgfAorCQkJICAg RENVX0hTWU5fUEFSQV9GUChoZnApKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJ cmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX1ZTWU5fUEFSQSwKKwkJCSAg IERDVV9WU1lOX1BBUkFfQlAodmJwKSB8CisJCQkgICBEQ1VfVlNZTl9QQVJBX1BXKHZzdykgfAor CQkJICAgRENVX1ZTWU5fUEFSQV9GUCh2ZnApKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWls ZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJU1BfU0laRSwK KwkJCSAgIERDVV9ESVNQX1NJWkVfREVMVEFfWShtb2RlLT52ZGlzcGxheSkgfAorCQkJICAgRENV X0RJU1BfU0laRV9ERUxUQV9YKG1vZGUtPmhkaXNwbGF5KSk7CisJaWYgKHJldCkKKwkJZ290byBz ZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9ESVZf UkFUSU8sIGRpdik7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9TWU5fUE9MLAorCQkJICAgRENVX1NZTl9QT0xf SU5WX1ZTX0xPVyB8IERDVV9TWU5fUE9MX0lOVl9IU19MT1cpOworCWlmIChyZXQpCisJCWdvdG8g c2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQkdO RCwgRENVX0JHTkRfUigwKSB8CisJCQkgICBEQ1VfQkdORF9HKDApIHwgRENVX0JHTkRfQigwKSk7 CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xf ZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9ERSwKKwkJCSAgIERDVV9NT0RFX0JMRU5EX0lURVIoMSkg fCBEQ1VfTU9ERV9SQVNURVJfRU4pOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwly ZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVEhSRVNIT0xELAorCQkJICAg RENVX1RIUkVTSE9MRF9MU19CRl9WUyhCRl9WU19WQUwpIHwKKwkJCSAgIERDVV9USFJFU0hPTERf T1VUX0JVRl9ISUdIKEJVRl9NQVhfVkFMKSB8CisJCQkgICBEQ1VfVEhSRVNIT0xEX09VVF9CVUZf TE9XKEJVRl9NSU5fVkFMKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9 IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwKKwkJCSAgIERD VV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJ cmV0dXJuOworc2V0X2ZhaWxlZDoKKwlkZXZfZXJyKGRldi0+ZGV2LCAic2V0IERDVSByZWdpc3Rl ciBmYWlsZWRcbiIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9m dW5jcyBmc2xfZGN1X2RybV9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKKwkuYXRvbWljX2JlZ2luID0g ZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfYmVnaW4sCisJLmF0b21pY19jaGVjayA9IGZzbF9kY3Vf ZHJtX2NydGNfYXRvbWljX2NoZWNrLAorCS5hdG9taWNfZmx1c2ggPSBmc2xfZGN1X2RybV9jcnRj X2F0b21pY19mbHVzaCwKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YywKKwku ZW5hYmxlID0gZnNsX2RjdV9kcm1fY3J0Y19lbmFibGUsCisJLm1vZGVfZml4dXAgPSBmc2xfZGN1 X2RybV9jcnRjX21vZGVfZml4dXAsCisJLm1vZGVfc2V0X25vZmIgPSBmc2xfZGN1X2RybV9jcnRj X21vZGVfc2V0X25vZmIsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNz IGZzbF9kY3VfZHJtX2NydGNfZnVuY3MgPSB7CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUsCisJLmRlc3Ryb3kg PSBkcm1fY3J0Y19jbGVhbnVwLAorCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdl X2ZsaXAsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKKwkuc2V0X2Nv bmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCit9OworCitpbnQgZnNsX2RjdV9k cm1fY3J0Y19jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKK3sKKwlz dHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5OworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZmc2xf ZGV2LT5jcnRjOworCXVuc2lnbmVkIGludCBpLCBqLCByZWdfbnVtOworCWludCByZXQ7CisKKwlw cmltYXJ5ID0gZnNsX2RjdV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUoZnNsX2Rldi0+ZHJtKTsK KwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGZzbF9kZXYtPmRybSwgY3J0YywgcHJp bWFyeSwgTlVMTCwKKwkJCQkJJmZzbF9kY3VfZHJtX2NydGNfZnVuY3MpOworCWlmIChyZXQgPCAw KQorCQlyZXR1cm4gcmV0OworCisJZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAmZnNsX2RjdV9k cm1fY3J0Y19oZWxwZXJfZnVuY3MpOworCisJaWYgKCFzdHJjbXAoZnNsX2Rldi0+c29jLT5uYW1l LCAibHMxMDIxYSIpKQorCQlyZWdfbnVtID0gTFMxMDIxQV9MQVlFUl9SRUdfTlVNOworCWVsc2UK KwkJcmVnX251bSA9IFZGNjEwX0xBWUVSX1JFR19OVU07CisJZm9yIChpID0gMDsgaSA8PSBmc2xf ZGV2LT5zb2MtPnRvdGFsX2xheWVyOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IHJlZ19udW07 IGorKykgeworCQkJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCQkJICAg RENVX0NUUkxERVNDTE4oaSwgaiksIDApOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIGluaXRfZmFp bGVkOworCQl9CisJfQorCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhmc2xfZGV2LT5yZWdtYXAs IERDVV9EQ1VfTU9ERSwKKwkJCQkgRENVX01PREVfRENVX01PREVfTUFTSywKKwkJCQkgRENVX01P REVfRENVX01PREUoRENVX01PREVfT0ZGKSk7CisJaWYgKHJldCkKKwkJZ290byBpbml0X2ZhaWxl ZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUs CisJCQkgICBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZ290byBpbml0 X2ZhaWxlZDsKKworCXJldHVybiAwOworaW5pdF9mYWlsZWQ6CisJZGV2X2Vycihmc2xfZGV2LT5k ZXYsICJpbml0IERDVSByZWdpc3RlciBmYWlsZWRcbiIpOworCXJldHVybiByZXQ7Cit9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmggYi9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNDNkNGRhMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaApAQCAtMCwwICsxLDE5IEBACisvKgorICog Q29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVl c2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ1JUQ19IX18KKyNkZWZpbmUgX19GU0xf RENVX0RSTV9DUlRDX0hfXworCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOworCitpbnQgZnNs X2RjdV9kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rldik7 CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjQwNWNhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9m c2xfZGN1X2RybV9kcnYuYwpAQCAtMCwwICsxLDQwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1 IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0g ZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgorI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1 ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGlu dXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNp bmNsdWRlIDxsaW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNs dWRlIDxsaW51eC9yZWdtYXAuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9kcnYuaCIKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGZzbF9kY3VfcmVn bWFwX2NvbmZpZyA9IHsKKwkucmVnX2JpdHMgPSAzMiwKKwkucmVnX3N0cmlkZSA9IDQsCisJLnZh bF9iaXRzID0gMzIsCisJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9SQlRSRUUsCit9OworCitzdGF0 aWMgaW50IGZzbF9kY3VfZHJtX2lycV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJ dW5zaWduZWQgaW50IHZhbHVlOworCWludCByZXQ7CisKKwlyZXQgPSBkcm1faXJxX2luc3RhbGwo ZGV2LCBmc2xfZGV2LT5pcnEpOworCWlmIChyZXQgPCAwKQorCQlkZXZfZXJyKGRldi0+ZGV2LCAi ZmFpbGVkIHRvIGluc3RhbGwgSVJRIGhhbmRsZXJcbiIpOworCisJcmV0ID0gcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9TVEFUVVMsIDApOworCWlmIChyZXQpCisJCWRldl9l cnIoZGV2LT5kZXYsICJzZXQgRENVX0lOVF9TVEFUVVMgZmFpbGVkXG4iKTsKKwlyZXQgPSByZWdt YXBfcmVhZChmc2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfTUFTSywgJnZhbHVlKTsKKwlpZiAocmV0 KQorCQlkZXZfZXJyKGRldi0+ZGV2LCAicmVhZCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4iKTsKKwl2 YWx1ZSAmPSBEQ1VfSU5UX01BU0tfVkJMQU5LOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2 LT5yZWdtYXAsIERDVV9JTlRfTUFTSywgdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2 LT5kZXYsICJzZXQgRENVX0lOVF9NQVNLIGZhaWxlZFxuIik7CisJcmV0ID0gcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RFLAorCQkJICAgRENVX1VQREFURV9NT0RF X1JFQURSRUcpOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJzZXQgRENVX1VQREFU RV9NT0RFIGZhaWxlZFxuIik7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGZzbF9k Y3VfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25lZCBsb25nIGZsYWdzKQorewor CXN0cnVjdCBkZXZpY2UgKmRldiA9IGRybS0+ZGV2OworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZp Y2UgKmZzbF9kZXYgPSBkcm0tPmRldl9wcml2YXRlOworCWludCByZXQ7CisKKwlyZXQgPSBmc2xf ZGN1X2RybV9tb2Rlc2V0X2luaXQoZnNsX2Rldik7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBtb2RlIHNldHRpbmdcbiIpOworCQlyZXR1cm4g cmV0OworCX0KKworCXJldCA9IGRybV92YmxhbmtfaW5pdChkcm0sIGRybS0+bW9kZV9jb25maWcu bnVtX2NydGMpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGlu aXRpYWxpemUgdmJsYW5rXG4iKTsKKwkJZ290byBkb25lOworCX0KKwlkcm0tPnZibGFua19kaXNh YmxlX2FsbG93ZWQgPSB0cnVlOworCisJcmV0ID0gZnNsX2RjdV9kcm1faXJxX2luaXQoZHJtKTsK KwlpZiAocmV0IDwgMCkKKwkJZ290byBkb25lOworCWRybS0+aXJxX2VuYWJsZWQgPSB0cnVlOwor CisJZnNsX2RjdV9mYmRldl9pbml0KGRybSk7CisKKwlyZXR1cm4gMDsKK2RvbmU6CisJaWYgKHJl dCkgeworCQlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCQlkcm1fdmJsYW5rX2NsZWFu dXAoZHJtKTsKKwkJZHJtX2lycV91bmluc3RhbGwoZHJtKTsKKwkJZHJtLT5kZXZfcHJpdmF0ZSA9 IE5VTEw7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X3VubG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRl dik7CisJZHJtX3ZibGFua19jbGVhbnVwKGRldik7CisJZHJtX2lycV91bmluc3RhbGwoZGV2KTsK KworCWRldi0+ZGV2X3ByaXZhdGUgPSBOVUxMOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIGZzbF9kY3VfZHJtX3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKK3sKK30KKworc3RhdGljIGlycXJldHVybl90IGZzbF9kY3VfZHJtX2ly cShpbnQgaXJxLCB2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFyZzsK KwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK Kwl1bnNpZ25lZCBpbnQgaW50X3N0YXR1czsKKwlpbnQgcmV0OworCisJcmV0ID0gcmVnbWFwX3Jl YWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgJmludF9zdGF0dXMpOworCWlmIChy ZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJzZXQgRENVX0lOVF9TVEFUVVMgZmFpbGVkXG4iKTsK KwlpZiAoaW50X3N0YXR1cyAmIERDVV9JTlRfU1RBVFVTX1ZCTEFOSykKKwkJZHJtX2hhbmRsZV92 YmxhbmsoZGV2LCAwKTsKKworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERD VV9JTlRfU1RBVFVTLCAweGZmZmZmZmZmKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldi0+ZGV2 LCAic2V0IERDVV9JTlRfU1RBVFVTIGZhaWxlZFxuIik7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RFLAorCQkJICAgRENVX1VQREFURV9NT0RFX1JF QURSRUcpOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJzZXQgRENVX1VQREFURV9N T0RFIGZhaWxlZFxuIik7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQg ZnNsX2RjdV9kcm1fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YykKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisJaW50IHJldDsKKworCXJldCA9IHJlZ21hcF9y ZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCAmdmFsdWUpOworCWlmIChyZXQpCisJ CWRldl9lcnIoZGV2LT5kZXYsICJyZWFkIERDVV9JTlRfTUFTSyBmYWlsZWRcbiIpOworCXZhbHVl ICY9IH5EQ1VfSU5UX01BU0tfVkJMQU5LOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9JTlRfTUFTSywgdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LT5k ZXYsICJzZXQgRENVX0lOVF9NQVNLIGZhaWxlZFxuIik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYt PmRldl9wcml2YXRlOworCXVuc2lnbmVkIGludCB2YWx1ZTsKKwlpbnQgcmV0OworCisJcmV0ID0g cmVnbWFwX3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX01BU0ssICZ2YWx1ZSk7CisJaWYg KHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInJlYWQgRENVX0lOVF9NQVNLIGZhaWxlZFxuIik7 CisJdmFsdWUgfD0gRENVX0lOVF9NQVNLX1ZCTEFOSzsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfSU5UX01BU0ssIHZhbHVlKTsKKwlpZiAocmV0KQorCQlkZXZfZXJy KGRldi0+ZGV2LCAic2V0IERDVV9JTlRfTUFTSyBmYWlsZWRcbiIpOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmc2xfZGN1X2RybV9mb3BzID0geworCS5vd25lcgkJ PSBUSElTX01PRFVMRSwKKwkub3BlbgkJPSBkcm1fb3BlbiwKKwkucmVsZWFzZQk9IGRybV9yZWxl YXNlLAorCS51bmxvY2tlZF9pb2N0bAk9IGRybV9pb2N0bCwKKyNpZmRlZiBDT05GSUdfQ09NUEFU CisJLmNvbXBhdF9pb2N0bAk9IGRybV9jb21wYXRfaW9jdGwsCisjZW5kaWYKKwkucG9sbAkJPSBk cm1fcG9sbCwKKwkucmVhZAkJPSBkcm1fcmVhZCwKKwkubGxzZWVrCQk9IG5vX2xsc2VlaywKKwku bW1hcAkJPSBkcm1fZ2VtX2NtYV9tbWFwLAorfTsKKworc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVy IGZzbF9kY3VfZHJtX2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzCT0gRFJJVkVSX0hBVkVf SVJRIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9NT0RFU0VUCisJCQkJfCBEUklWRVJfUFJJTUUgfCBE UklWRVJfQVRPTUlDLAorCS5sb2FkCQkJPSBmc2xfZGN1X2xvYWQsCisJLnVubG9hZAkJCT0gZnNs X2RjdV91bmxvYWQsCisJLnByZWNsb3NlCQk9IGZzbF9kY3VfZHJtX3ByZWNsb3NlLAorCS5pcnFf aGFuZGxlcgkJPSBmc2xfZGN1X2RybV9pcnEsCisJLmdldF92YmxhbmtfY291bnRlcgk9IGRybV92 YmxhbmtfY291bnQsCisJLmVuYWJsZV92YmxhbmsJCT0gZnNsX2RjdV9kcm1fZW5hYmxlX3ZibGFu aywKKwkuZGlzYWJsZV92YmxhbmsJCT0gZnNsX2RjdV9kcm1fZGlzYWJsZV92YmxhbmssCisJLmdl bV9mcmVlX29iamVjdAk9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LAorCS5nZW1fdm1fb3BzCQk9 ICZkcm1fZ2VtX2NtYV92bV9vcHMsCisJLnByaW1lX2hhbmRsZV90b19mZAk9IGRybV9nZW1fcHJp bWVfaGFuZGxlX3RvX2ZkLAorCS5wcmltZV9mZF90b19oYW5kbGUJPSBkcm1fZ2VtX3ByaW1lX2Zk X3RvX2hhbmRsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydAk9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAor CS5nZW1fcHJpbWVfZXhwb3J0CT0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdlbV9wcmltZV9n ZXRfc2dfdGFibGUJPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCisJLmdlbV9wcmlt ZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGUsCisJ LmdlbV9wcmltZV92bWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX3ZtYXAsCisJLmdlbV9wcmltZV92 dW5tYXAJPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCisJLmdlbV9wcmltZV9tbWFwCQk9IGRy bV9nZW1fY21hX3ByaW1lX21tYXAsCisJLmR1bWJfY3JlYXRlCQk9IGRybV9nZW1fY21hX2R1bWJf Y3JlYXRlLAorCS5kdW1iX21hcF9vZmZzZXQJPSBkcm1fZ2VtX2NtYV9kdW1iX21hcF9vZmZzZXQs CisJLmR1bWJfZGVzdHJveQkJPSBkcm1fZ2VtX2R1bWJfZGVzdHJveSwKKwkuZm9wcwkJCT0gJmZz bF9kY3VfZHJtX2ZvcHMsCisJLm5hbWUJCQk9ICJmc2wtZGN1LWRybSIsCisJLmRlc2MJCQk9ICJG cmVlc2NhbGUgRENVIERSTSIsCisJLmRhdGUJCQk9ICIyMDE1MDIxMyIsCisJLm1ham9yCQkJPSAx LAorCS5taW5vcgkJCT0gMCwKK307CisKKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKK3N0YXRpYyBp bnQgZnNsX2RjdV9kcm1fcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0 IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJ aWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gMDsKKworCWRybV9rbXNfaGVscGVyX3BvbGxfZGlzYWJs ZShmc2xfZGV2LT5kcm0pOworCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rldi0+cmVnbWFwLCB0 cnVlKTsKKwlyZWdjYWNoZV9tYXJrX2RpcnR5KGZzbF9kZXYtPnJlZ21hcCk7CisJY2xrX2Rpc2Fi bGUoZnNsX2Rldi0+Y2xrKTsKKwljbGtfdW5wcmVwYXJlKGZzbF9kZXYtPmNsayk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJaWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gMDsK KworCXJldCA9IGNsa19lbmFibGUoZnNsX2Rldi0+Y2xrKTsKKwlpZiAocmV0IDwgMCkgeworCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgZGN1IGNsa1xuIik7CisJCWNsa191bnByZXBh cmUoZnNsX2Rldi0+Y2xrKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0ID0gY2xrX3ByZXBhcmUo ZnNsX2Rldi0+Y2xrKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0 byBwcmVwYXJlIGRjdSBjbGtcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRybV9rbXNfaGVs cGVyX3BvbGxfZW5hYmxlKGZzbF9kZXYtPmRybSk7CisJcmVnY2FjaGVfY2FjaGVfb25seShmc2xf ZGV2LT5yZWdtYXAsIGZhbHNlKTsKKwlyZWdjYWNoZV9zeW5jKGZzbF9kZXYtPnJlZ21hcCk7CisK KwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMg ZnNsX2RjdV9kcm1fcG1fb3BzID0geworCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGZzbF9kY3Vf ZHJtX3BtX3N1c3BlbmQsIGZzbF9kY3VfZHJtX3BtX3Jlc3VtZSkKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZnNsX2RjdV9zb2NfZGF0YSBmc2xfZGN1X2xzMTAyMWFfZGF0YSA9IHsKKwkubmFt ZSA9ICJsczEwMjFhIiwKKwkudG90YWxfbGF5ZXIgPSAxNiwKKwkubWF4X2xheWVyID0gNCwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnNsX2RjdV9zb2NfZGF0YSBmc2xfZGN1X3ZmNjEwX2Rh dGEgPSB7CisJLm5hbWUgPSAidmY2MTAiLAorCS50b3RhbF9sYXllciA9IDY0LAorCS5tYXhfbGF5 ZXIgPSA2LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZnNsX2RjdV9v Zl9tYXRjaFtdID0geworCXsKKwkJLmNvbXBhdGlibGUgPSAiZnNsLGxzMTAyMWEtZGN1IiwKKwkJ LmRhdGEgPSAmZnNsX2RjdV9sczEwMjFhX2RhdGEsCisJfSwgeworCQkuY29tcGF0aWJsZSA9ICJm c2wsdmY2MTAtZGN1IiwKKwkJLmRhdGEgPSAmZnNsX2RjdV92ZjYxMF9kYXRhLAorCX0sIHsKKwl9 LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9kY3Vfb2ZfbWF0Y2gpOworCitzdGF0 aWMgaW50IGZzbF9kY3VfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldjsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtOworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0IHJlc291 cmNlICpyZXM7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXN0cnVjdCBkcm1fZHJpdmVyICpkcml2 ZXIgPSAmZnNsX2RjdV9kcm1fZHJpdmVyOworCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmlk OworCWludCByZXQ7CisKKwlmc2xfZGV2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpmc2xf ZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKwor CXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJ aWYgKCFyZXMpIHsKKwkJZGV2X2VycihkZXYsICJjb3VsZCBub3QgZ2V0IG1lbW9yeSBJTyByZXNv dXJjZVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWJhc2UgPSBkZXZtX2lvcmVtYXBf cmVzb3VyY2UoZGV2LCByZXMpOworCWlmIChJU19FUlIoYmFzZSkpIHsKKwkJcmV0ID0gUFRSX0VS UihiYXNlKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlmc2xfZGV2LT5pcnEgPSBwbGF0Zm9ybV9n ZXRfaXJxKHBkZXYsIDApOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGdldCBpcnFcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWZzbF9kZXYtPmNsayA9IGRl dm1fY2xrX2dldChkZXYsICJkY3UiKTsKKwlpZiAoSVNfRVJSKGZzbF9kZXYtPmNsaykpIHsKKwkJ cmV0ID0gUFRSX0VSUihmc2xfZGV2LT5jbGspOworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBn ZXQgZGN1IGNsb2NrXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0ID0gY2xrX3ByZXBhcmUo ZnNsX2Rldi0+Y2xrKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0 byBwcmVwYXJlIGRjdSBjbGtcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKwlyZXQgPSBjbGtfZW5h YmxlKGZzbF9kZXYtPmNsayk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gZW5hYmxlIGRjdSBjbGtcbiIpOworCQljbGtfdW5wcmVwYXJlKGZzbF9kZXYtPmNsayk7 CisJCXJldHVybiByZXQ7CisJfQorCisJZnNsX2Rldi0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5p dF9tbWlvKGRldiwgYmFzZSwKKwkJCSZmc2xfZGN1X3JlZ21hcF9jb25maWcpOworCWlmIChJU19F UlIoZnNsX2Rldi0+cmVnbWFwKSkgeworCQlkZXZfZXJyKGRldiwgInJlZ21hcCBpbml0IGZhaWxl ZFxuIik7CisJCXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnJlZ21hcCk7CisJfQorCisJaWQgPSBv Zl9tYXRjaF9ub2RlKGZzbF9kY3Vfb2ZfbWF0Y2gsIHBkZXYtPmRldi5vZl9ub2RlKTsKKwlpZiAo IWlkKQorCQlyZXR1cm4gLUVOT0RFVjsKKwlmc2xfZGV2LT5zb2MgPSBpZC0+ZGF0YTsKKworCWRy bSA9IGRybV9kZXZfYWxsb2MoZHJpdmVyLCBkZXYpOworCWlmICghZHJtKQorCQlyZXR1cm4gLUVO T01FTTsKKworCWZzbF9kZXYtPmRldiA9IGRldjsKKwlmc2xfZGV2LT5kcm0gPSBkcm07CisJZnNs X2Rldi0+bnAgPSBkZXYtPm9mX25vZGU7CisJZHJtLT5kZXZfcHJpdmF0ZSA9IGZzbF9kZXY7CisJ ZGV2X3NldF9kcnZkYXRhKGRldiwgZnNsX2Rldik7CisJZHJtX2Rldl9zZXRfdW5pcXVlKGRybSwg ZGV2X25hbWUoZGV2KSk7CisKKwlyZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7CisJaWYg KHJldCA8IDApCisJCWdvdG8gdW5yZWY7CisKKwlEUk1fSU5GTygiSW5pdGlhbGl6ZWQgJXMgJWQu JWQuJWQgJXMgb24gbWlub3IgJWRcbiIsIGRyaXZlci0+bmFtZSwKKwkJIGRyaXZlci0+bWFqb3Is IGRyaXZlci0+bWlub3IsIGRyaXZlci0+cGF0Y2hsZXZlbCwKKwkJIGRyaXZlci0+ZGF0ZSwgZHJt LT5wcmltYXJ5LT5pbmRleCk7CisKKwlyZXR1cm4gMDsKKwordW5yZWY6CisJZHJtX2Rldl91bnJl Zihkcm0pOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Rl dmljZSAqZnNsX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJZHJtX3B1dF9k ZXYoZnNsX2Rldi0+ZHJtKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RyaXZlciBmc2xfZGN1X2RybV9wbGF0Zm9ybV9kcml2ZXIgPSB7CisJLnByb2JlCQk9IGZz bF9kY3VfZHJtX3Byb2JlLAorCS5yZW1vdmUJCT0gZnNsX2RjdV9kcm1fcmVtb3ZlLAorCS5kcml2 ZXIJCT0geworCQkubmFtZQk9ICJmc2wtZGN1IiwKKwkJLnBtCT0gJmZzbF9kY3VfZHJtX3BtX29w cywKKwkJLm9mX21hdGNoX3RhYmxlID0gZnNsX2RjdV9vZl9tYXRjaCwKKwl9LAorfTsKKworbW9k dWxlX3BsYXRmb3JtX2RyaXZlcihmc2xfZGN1X2RybV9wbGF0Zm9ybV9kcml2ZXIpOworCitNT0RV TEVfREVTQ1JJUFRJT04oIkZyZWVzY2FsZSBEQ1UgRFJNIERyaXZlciIpOworTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOWU0Ci0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKQEAgLTAsMCArMSwx OTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5j LgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9EUlZfSF9fCisj ZGVmaW5lIF9fRlNMX0RDVV9EUk1fRFJWX0hfXworCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0 Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX291dHB1dC5oIgorI2luY2x1ZGUgImZzbF9kY3Vf ZHJtX3BsYW5lLmgiCisKKyNkZWZpbmUgRENVX0RDVV9NT0RFCQkJMHgwMDEwCisjZGVmaW5lIERD VV9NT0RFX0JMRU5EX0lURVIoeCkJCSgoeCkgPDwgMjApCisjZGVmaW5lIERDVV9NT0RFX1JBU1RF Ul9FTgkJQklUKDE0KQorI2RlZmluZSBEQ1VfTU9ERV9EQ1VfTU9ERSh4KQkJKHgpCisjZGVmaW5l IERDVV9NT0RFX0RDVV9NT0RFX01BU0sJCTB4MDMKKyNkZWZpbmUgRENVX01PREVfT0ZGCQkJMAor I2RlZmluZSBEQ1VfTU9ERV9OT1JNQUwJCQkxCisjZGVmaW5lIERDVV9NT0RFX1RFU1QJCQkyCisj ZGVmaW5lIERDVV9NT0RFX0NPTE9SQkFSCQkzCisKKyNkZWZpbmUgRENVX0JHTkQJCQkweDAwMTQK KyNkZWZpbmUgRENVX0JHTkRfUih4KQkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9CR05EX0co eCkJCQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9CR05EX0IoeCkJCQkoeCkKKworI2RlZmluZSBE Q1VfRElTUF9TSVpFCQkJMHgwMDE4CisjZGVmaW5lIERDVV9ESVNQX1NJWkVfREVMVEFfWSh4KQko KHgpIDw8IDE2KQorLypSZWdpc2l0ZXIgdmFsdWUgMS8xNiBvZiBob3Jpem9udGFsIHJlc29sdXRp b24qLworI2RlZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1goeCkJKCh4KSA+PiA0KQorCisjZGVm aW5lIERDVV9IU1lOX1BBUkEJCQkweDAwMWMKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9CUCh4KQkJ KCh4KSA8PCAyMikKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKKyNk ZWZpbmUgRENVX0hTWU5fUEFSQV9GUCh4KQkJKHgpCisKKyNkZWZpbmUgRENVX1ZTWU5fUEFSQQkJ CTB4MDAyMAorI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQorI2RlZmlu ZSBEQ1VfVlNZTl9QQVJBX1BXKHgpCQkoKHgpIDw8IDExKQorI2RlZmluZSBEQ1VfVlNZTl9QQVJB X0ZQKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfU1lOX1BPTAkJCTB4MDAyNAorI2RlZmluZSBEQ1Vf U1lOX1BPTF9JTlZfUFhDS19GQUxMCSgwIDw8IDYpCisjZGVmaW5lIERDVV9TWU5fUE9MX05FR19S RU1BSU4JCSgwIDw8IDUpCisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9WU19MT1cJCUJJVCgxKQor I2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZfSFNfTE9XCQlCSVQoMCkKKworI2RlZmluZSBEQ1VfVEhS RVNIT0xECQkJMHgwMDI4CisjZGVmaW5lIERDVV9USFJFU0hPTERfTFNfQkZfVlMoeCkJKCh4KSA8 PCAxNikKKyNkZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJR0goeCkJKCh4KSA8PCA4KQor I2RlZmluZSBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfTE9XKHgpCSh4KQorI2RlZmluZSBCRl9WU19W QUwJCQkweDAzCisjZGVmaW5lIEJVRl9NQVhfVkFMCQkJMHg3OAorI2RlZmluZSBCVUZfTUlOX1ZB TAkJCTB4MGEKKworI2RlZmluZSBEQ1VfSU5UX1NUQVRVUwkJCTB4MDAyQworI2RlZmluZSBEQ1Vf SU5UX1NUQVRVU19WU1lOQwkJQklUKDApCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1VORFJVTgkJ QklUKDEpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0xTQkZWUwkJQklUKDIpCisjZGVmaW5lIERD VV9JTlRfU1RBVFVTX1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0NSQ1JF QURZCQlCSVQoNCkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfQ1JDT1ZFUkZMT1cJQklUKDUpCisj ZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AxRklGT0xPCQlCSVQoNikKKyNkZWZpbmUgRENVX0lOVF9T VEFUVVNfUDFGSUZPSEkJCUJJVCg3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMkZJRk9MTwkJ QklUKDgpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AyRklGT0hJCQlCSVQoOSkKKyNkZWZpbmUg RENVX0lOVF9TVEFUVVNfUFJPR0VORAkJQklUKDEwKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19J UE1FUlJPUgkJQklUKDExKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19MWVJUUkFOUwkJQklUKDEy KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19ETUFUUkFOUwkJQklUKDE0KQorI2RlZmluZSBEQ1Vf SU5UX1NUQVRVU19QM0ZJRk9MTwkJQklUKDE2KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QM0ZJ Rk9ISQkJQklUKDE3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9MTwkJQklUKDE4KQor I2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9ISQkJQklUKDE5KQorI2RlZmluZSBEQ1VfSU5U X1NUQVRVU19QMUVNUFRZCQlCSVQoMjYpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AyRU1QVFkJ CUJJVCgyNykKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDNFTVBUWQkJQklUKDI4KQorI2RlZmlu ZSBEQ1VfSU5UX1NUQVRVU19QNEVNUFRZCQlCSVQoMjkpCisKKyNkZWZpbmUgRENVX0lOVF9NQVNL CQkJMHgwMDMwCisjZGVmaW5lIERDVV9JTlRfTUFTS19WU1lOQwkJQklUKDApCisjZGVmaW5lIERD VV9JTlRfTUFTS19VTkRSVU4JCUJJVCgxKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfTFNCRlZTCQlC SVQoMikKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERDVV9J TlRfTUFTS19DUkNSRUFEWQkJQklUKDQpCisjZGVmaW5lIERDVV9JTlRfTUFTS19DUkNPVkVSRkxP VwlCSVQoNSkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AxRklGT0xPCQlCSVQoNikKKyNkZWZpbmUg RENVX0lOVF9NQVNLX1AxRklGT0hJCQlCSVQoNykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklG T0xPCQlCSVQoOCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklGT0hJCQlCSVQoOSkKKyNkZWZp bmUgRENVX0lOVF9NQVNLX1BST0dFTkQJCUJJVCgxMCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX0lQ TUVSUk9SCQlCSVQoMTEpCisjZGVmaW5lIERDVV9JTlRfTUFTS19MWVJUUkFOUwkJQklUKDEyKQor I2RlZmluZSBEQ1VfSU5UX01BU0tfRE1BVFJBTlMJCUJJVCgxNCkKKyNkZWZpbmUgRENVX0lOVF9N QVNLX1AzRklGT0xPCQlCSVQoMTYpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QM0ZJRk9ISQkJQklU KDE3KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDRGSUZPTE8JCUJJVCgxOCkKKyNkZWZpbmUgRENV X0lOVF9NQVNLX1A0RklGT0hJCQlCSVQoMTkpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMUVNUFRZ CQlCSVQoMjYpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMkVNUFRZCQlCSVQoMjcpCisjZGVmaW5l IERDVV9JTlRfTUFTS19QM0VNUFRZCQlCSVQoMjgpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QNEVN UFRZCQlCSVQoMjkpCisKKyNkZWZpbmUgRENVX0RJVl9SQVRJTwkJCTB4MDA1NAorCisjZGVmaW5l IERDVV9VUERBVEVfTU9ERQkJCTB4MDBjYworI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfTU9ERQkJ QklUKDMxKQorI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRwkJQklUKDMwKQorCisjZGVm aW5lIERDVV9EQ0ZCX01BWAkJCTB4MzAwCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE4obGF5ZXIs IHJlZykJKDB4MjAwICsgKHJlZyAtIDEpICogNCArIChsYXllcikgKiAweDQwKQorCisjZGVmaW5l IERDVV9MQVlFUl9IRUlHSFQoeCkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9MQVlFUl9XSURU SCh4KQkJKHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX1BPU1koeCkJCSgoeCkgPDwgMTYpCisjZGVm aW5lIERDVV9MQVlFUl9QT1NYKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfTEFZRVJfRU4JCQlCSVQo MzEpCisjZGVmaW5lIERDVV9MQVlFUl9USUxFX0VOCQlCSVQoMzApCisjZGVmaW5lIERDVV9MQVlF Ul9EQVRBX1NFTF9DTFVUCQlCSVQoMjkpCisjZGVmaW5lIERDVV9MQVlFUl9TQUZFVFlfRU4JCUJJ VCgyOCkKKyNkZWZpbmUgRENVX0xBWUVSX1RSQU5TKHgpCQkoKHgpIDw8IDIwKQorI2RlZmluZSBE Q1VfTEFZRVJfQlBQKHgpCQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfTEFZRVJfUkxFX0VOCQlC SVQoMTUpCisjZGVmaW5lIERDVV9MQVlFUl9MVU9GRlMoeCkJCSgoeCkgPDwgNCkKKyNkZWZpbmUg RENVX0xBWUVSX0JCX09OCQkJQklUKDIpCisjZGVmaW5lIERDVV9MQVlFUl9BQih4KQkJCSh4KQor CisjZGVmaW5lIERDVV9MQVlFUl9DS01BWF9SKHgpCQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1Vf TEFZRVJfQ0tNQVhfRyh4KQkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1VfTEFZRVJfQ0tNQVhfQih4 KQkJKHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX0NLTUlOX1IoeCkJCSgoeCkgPDwgMTYpCisjZGVm aW5lIERDVV9MQVlFUl9DS01JTl9HKHgpCQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9MQVlFUl9D S01JTl9CKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfTEFZRVJfVElMRV9WRVIoeCkJCSgoeCkgPDwg MTYpCisjZGVmaW5lIERDVV9MQVlFUl9USUxFX0hPUih4KQkJKHgpCisKKyNkZWZpbmUgRENVX0xB WUVSX0ZHX0ZDT0xPUih4KQkJKHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX0JHX0JDT0xPUih4KQkJ KHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX1BPU1RfU0tJUCh4KQkJKCh4KSA8PCAxNikKKyNkZWZp bmUgRENVX0xBWUVSX1BSRV9TS0lQKHgpCQkoeCkKKworI2RlZmluZSBGU0xfRENVX1JHQjU2NQkJ CTQKKyNkZWZpbmUgRlNMX0RDVV9SR0I4ODgJCQk1CisjZGVmaW5lIEZTTF9EQ1VfQVJHQjg4ODgJ CTYKKyNkZWZpbmUgRlNMX0RDVV9BUkdCMTU1NQkJMTEKKyNkZWZpbmUgRlNMX0RDVV9BUkdCNDQ0 NAkJMTIKKyNkZWZpbmUgRlNMX0RDVV9ZVVY0MjIJCQkxNAorCisjZGVmaW5lIFZGNjEwX0xBWUVS X1JFR19OVU0JCTkKKyNkZWZpbmUgTFMxMDIxQV9MQVlFUl9SRUdfTlVNCQkxMAorCitzdHJ1Y3Qg Y2xrOworc3RydWN0IGRldmljZTsKK3N0cnVjdCBkcm1fZGV2aWNlOworCitzdHJ1Y3QgZnNsX2Rj dV9zb2NfZGF0YSB7CisJY29uc3QgY2hhciAqbmFtZTsKKwkvKnRvdGFsIGxheWVyIG51bWJlciov CisJdW5zaWduZWQgaW50IHRvdGFsX2xheWVyOworCS8qbWF4IGxheWVyIG51bWJlciBEQ1Ugc3Vw cG9ydGVkKi8KKwl1bnNpZ25lZCBpbnQgbWF4X2xheWVyOworfTsKKworc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZSB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAq bnA7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCWludCBpcnE7CisJc3RydWN0IGNsayAqY2xr OworCS8qcHJvdGVjdHMgaGFyZHdhcmUgcmVnaXN0ZXIqLworCXNwaW5sb2NrX3QgaXJxX2xvY2s7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKwlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXY7 CisJc3RydWN0IGRybV9jcnRjIGNydGM7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CisJ c3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CisJY29uc3Qgc3RydWN0IGZz bF9kY3Vfc29jX2RhdGEgKnNvYzsKK307CisKK3ZvaWQgZnNsX2RjdV9mYmRldl9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOworaW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KTsKKworI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1f RFJWX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4YjgxOQotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKQEAgLTAs MCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9y LCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9k cnYuaCIKKworLyogaW5pdGlhbGl6ZSBmYmRldiBoZWxwZXIgKi8KK3ZvaWQgZnNsX2RjdV9mYmRl dl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Rl dmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYtPmRldik7CisKKwlmc2xfZGV2LT5m YmRldiA9IGRybV9mYmRldl9jbWFfaW5pdChkZXYsIDI0LCAxLCAxKTsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMGY0YjIwYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1Ug ZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisK KyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o PgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Zi X2NtYV9oZWxwZXIuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRl ICJmc2xfZGN1X2RybV9kcnYuaCIKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25m aWdfZnVuY3MgZnNsX2RjdV9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7CisJLmF0b21pY19jaGVj ayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAorCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21p Y19oZWxwZXJfY29tbWl0LAorCS5mYl9jcmVhdGUgPSBkcm1fZmJfY21hX2NyZWF0ZSwKK307CisK K2ludCBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAq ZnNsX2RldikKK3sKKwlkcm1fbW9kZV9jb25maWdfaW5pdChmc2xfZGV2LT5kcm0pOworCisJZnNs X2Rldi0+ZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOworCWZzbF9kZXYtPmRybS0+bW9k ZV9jb25maWcubWluX2hlaWdodCA9IDA7CisJZnNsX2Rldi0+ZHJtLT5tb2RlX2NvbmZpZy5tYXhf d2lkdGggPSAyMDMxOworCWZzbF9kZXYtPmRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIw NDc7CisJZnNsX2Rldi0+ZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZmc2xfZGN1X2RybV9tb2Rl X2NvbmZpZ19mdW5jczsKKworCWRybV9rbXNfaGVscGVyX3BvbGxfaW5pdChmc2xfZGV2LT5kcm0p OworCWZzbF9kY3VfZHJtX2NydGNfY3JlYXRlKGZzbF9kZXYpOworCWZzbF9kY3VfZHJtX2VuY29k ZXJfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5jcnRjKTsKKwlmc2xfZGN1X2RybV9jb25uZWN0 b3JfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5lbmNvZGVyKTsKKwlkcm1fbW9kZXNldF9sb2Nr X2FsbChmc2xfZGV2LT5kcm0pOworCWRybV9tb2RlX2NvbmZpZ19yZXNldChmc2xfZGV2LT5kcm0p OworCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZnNsX2Rldi0+ZHJtKTsKKworCXJldHVybiAwOwor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0 LmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRwdXQuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDkzMTA5Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0LmgKQEAgLTAsMCArMSwz MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMu CisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9I X18KKyNkZWZpbmUgX19GU0xfRENVX0RSTV9DT05ORUNUT1JfSF9fCisKK3N0cnVjdCBmc2xfZGN1 X2RybV9jb25uZWN0b3IgeworCXN0cnVjdCBkcm1fY29ubmVjdG9yIGJhc2U7CisJc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOworfTsKKworc3Rh dGljIGlubGluZSBzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICoKK3RvX2ZzbF9kY3VfY29u bmVjdG9yKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb24pCit7CisJcmV0dXJuIGNvbiA/IGNvbnRh aW5lcl9vZihjb24sIHN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IsIGJhc2UpCisJCSAgICAg OiBOVUxMOworfQorCitpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpOworaW50IGZzbF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2UgKmZzbF9kZXYsCisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKKworI2Vu ZGlmIC8qIF9fRlNMX0RDVV9EUk1fQ09OTkVDVE9SX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uODJiZTZiOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX3BsYW5lLmMKQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1Ug ZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisK KyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJf Y21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2 LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKworc3RhdGljIGludCBmc2xfZGN1 X2RybV9wbGFuZV9pbmRleChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7CisJdW5z aWduZWQgaW50IHRvdGFsX2xheWVyID0gZnNsX2Rldi0+c29jLT50b3RhbF9sYXllcjsKKwl1bnNp Z25lZCBpbnQgaW5kZXg7CisKKwlpbmRleCA9IGRybV9wbGFuZV9pbmRleChwbGFuZSk7CisJaWYg KGluZGV4IDwgdG90YWxfbGF5ZXIpCisJCXJldHVybiB0b3RhbF9sYXllciAtIGluZGV4IC0gMTsK KworCWRldl9lcnIoZnNsX2Rldi0+ZGV2LCAiTm8gbW9yZSBsYXllciBsZWZ0XG4iKTsKKwlyZXR1 cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfY2hl Y2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+ZmI7CisK Kwlzd2l0Y2ggKGZiLT5waXhlbF9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogor CWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCWNh c2UgRFJNX0ZPUk1BVF9CR1JBNDQ0NDoKKwljYXNlIERSTV9GT1JNQVRfQVJHQjE1NTU6CisJY2Fz ZSBEUk1fRk9STUFUX1lVVjQyMjoKKwkJcmV0dXJuIDA7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfZGlz YWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl diA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGludCBpbmRleCwgdmFsdWUs IHJldDsKKworCWluZGV4ID0gZnNsX2RjdV9kcm1fcGxhbmVfaW5kZXgocGxhbmUpOworCWlmIChp bmRleCA8IDApCisJCXJldHVybjsKKworCXJldCA9IHJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21h cCwgRENVX0NUUkxERVNDTE4oaW5kZXgsIDQpLCAmdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9l cnIoZnNsX2Rldi0+ZGV2LCAicmVhZCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4iKTsKKwl2YWx1ZSAm PSB+RENVX0xBWUVSX0VOOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERD VV9DVFJMREVTQ0xOKGluZGV4LCA0KSwgdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9lcnIoZnNs X2Rldi0+ZGV2LCAic2V0IERDVSByZWdpc3RlciBmYWlsZWRcbiIpOworfQorCitzdGF0aWMgdm9p ZCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAorCQkJCQkgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQorCit7CisJc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRl OworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxhbmUtPnN0YXRlOworCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5mYjsKKwlzdHJ1Y3QgZHJtX2dl bV9jbWFfb2JqZWN0ICpnZW07CisJdW5zaWduZWQgaW50IGFscGhhLCBicHA7CisJaW50IGluZGV4 LCByZXQ7CisKKwlpZiAoIWZiKQorCQlyZXR1cm47CisKKwlpbmRleCA9IGZzbF9kY3VfZHJtX3Bs YW5lX2luZGV4KHBsYW5lKTsKKwlpZiAoaW5kZXggPCAwKQorCQlyZXR1cm47CisKKwlnZW0gPSBk cm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCAwKTsKKworCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1h dCkgeworCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6CisJCWJwcCA9IEZTTF9EQ1VfUkdCNTY1Owor CQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6CisJCWJw cCA9IEZTTF9EQ1VfUkdCODg4OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJN X0ZPUk1BVF9BUkdCODg4ODoKKwkJYnBwID0gRlNMX0RDVV9BUkdCODg4ODsKKwkJYWxwaGEgPSAw eGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfQkdSQTQ0NDQ6CisJCWJwcCA9IEZTTF9E Q1VfQVJHQjQ0NDQ7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFU X0FSR0IxNTU1OgorCQlicHAgPSBGU0xfRENVX0FSR0IxNTU1OworCQlhbHBoYSA9IDB4ZmY7CisJ CWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6CisJCWJwcCA9IEZTTF9EQ1VfWVVWNDIy OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisK KwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRl eCwgMSksCisJCQkgICBEQ1VfTEFZRVJfSEVJR0hUKHN0YXRlLT5jcnRjX2gpIHwKKwkJCSAgIERD VV9MQVlFUl9XSURUSChzdGF0ZS0+Y3J0Y193KSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFp bGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xO KGluZGV4LCAyKSwKKwkJCSAgIERDVV9MQVlFUl9QT1NZKHN0YXRlLT5jcnRjX3kpIHwKKwkJCSAg IERDVV9MQVlFUl9QT1NYKHN0YXRlLT5jcnRjX3gpKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9m YWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCSAgIERDVV9D VFJMREVTQ0xOKGluZGV4LCAzKSwgZ2VtLT5wYWRkcik7CisJaWYgKHJldCkKKwkJZ290byBzZXRf ZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVT Q0xOKGluZGV4LCA0KSwKKwkJCSAgIERDVV9MQVlFUl9FTiB8CisJCQkgICBEQ1VfTEFZRVJfVFJB TlMoYWxwaGEpIHwKKwkJCSAgIERDVV9MQVlFUl9CUFAoYnBwKSB8CisJCQkgICBEQ1VfTEFZRVJf QUIoMCkpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3Jp dGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgNSksCisJCQkgICBEQ1Vf TEFZRVJfQ0tNQVhfUigweEZGKSB8CisJCQkgICBEQ1VfTEFZRVJfQ0tNQVhfRygweEZGKSB8CisJ CQkgICBEQ1VfTEFZRVJfQ0tNQVhfQigweEZGKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFp bGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xO KGluZGV4LCA2KSwKKwkJCSAgIERDVV9MQVlFUl9DS01JTl9SKDApIHwKKwkJCSAgIERDVV9MQVlF Ul9DS01JTl9HKDApIHwKKwkJCSAgIERDVV9MQVlFUl9DS01JTl9CKDApKTsKKwlpZiAocmV0KQor CQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0NUUkxERVNDTE4oaW5kZXgsIDcpLCAwKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWls ZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE4o aW5kZXgsIDgpLAorCQkJICAgRENVX0xBWUVSX0ZHX0ZDT0xPUigwKSk7CisJaWYgKHJldCkKKwkJ Z290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERD VV9DVFJMREVTQ0xOKGluZGV4LCA5KSwKKwkJCSAgIERDVV9MQVlFUl9CR19CQ09MT1IoMCkpOwor CWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlpZiAoIXN0cmNtcChmc2xfZGV2LT5zb2Mt Pm5hbWUsICJsczEwMjFhIikpIHsKKwkJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21h cCwgRENVX0NUUkxERVNDTE4oaW5kZXgsIDEwKSwKKwkJCQkgICBEQ1VfTEFZRVJfUE9TVF9TS0lQ KDApIHwKKwkJCQkgICBEQ1VfTEFZRVJfUFJFX1NLSVAoMCkpOworCQlpZiAocmV0KQorCQkJZ290 byBzZXRfZmFpbGVkOworCX0KKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoZnNsX2Rldi0+cmVn bWFwLCBEQ1VfRENVX01PREUsCisJCQkJIERDVV9NT0RFX0RDVV9NT0RFX01BU0ssCisJCQkJIERD VV9NT0RFX0RDVV9NT0RFKERDVV9NT0RFX05PUk1BTCkpOworCWlmIChyZXQpCisJCWdvdG8gc2V0 X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLAorCQkJICAgRENV X1VQREFURV9NT0RFLCBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZ290 byBzZXRfZmFpbGVkOworCXJldHVybjsKKworc2V0X2ZhaWxlZDoKKwlkZXZfZXJyKGZzbF9kZXYt PmRldiwgInNldCBEQ1UgcmVnaXN0ZXIgZmFpbGVkXG4iKTsKK30KKworc3RhdGljIHZvaWQKK2Zz bF9kY3VfZHJtX3BsYW5lX2NsZWFudXBfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkg ICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpuZXdfc3RhdGUpCit7Cit9CisKK3N0YXRpYyBpbnQKK2ZzbF9kY3VfZHJt X3BsYW5lX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpuZXdfc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7 CisJLmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19jaGVjaywKKwkuYXRv bWljX2Rpc2FibGUgPSBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfZGlzYWJsZSwKKwkuYXRvbWlj X3VwZGF0ZSA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY191cGRhdGUsCisJLmNsZWFudXBfZmIg PSBmc2xfZGN1X2RybV9wbGFuZV9jbGVhbnVwX2ZiLAorCS5wcmVwYXJlX2ZiID0gZnNsX2RjdV9k cm1fcGxhbmVfcHJlcGFyZV9mYiwKK307CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3BsYW5l X2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJZHJtX3BsYW5lX2NsZWFudXAo cGxhbmUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBmc2xfZGN1 X2RybV9wbGFuZV9mdW5jcyA9IHsKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9t aWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAorCS5kZXN0cm95ID0gZnNs X2RjdV9kcm1fcGxhbmVfZGVzdHJveSwKKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVs cGVyX2Rpc2FibGVfcGxhbmUsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVz ZXQsCisJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKK307 CisKK3N0YXRpYyBjb25zdCB1MzIgZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0c1tdID0geworCURS TV9GT1JNQVRfUkdCNTY1LAorCURSTV9GT1JNQVRfUkdCODg4LAorCURSTV9GT1JNQVRfQVJHQjg4 ODgsCisJRFJNX0ZPUk1BVF9BUkdCNDQ0NCwKKwlEUk1fRk9STUFUX0FSR0IxNTU1LAorCURSTV9G T1JNQVRfWVVWNDIyLAorfTsKKworc3RydWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1fcHJpbWFy eV9jcmVhdGVfcGxhbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX3Bs YW5lICpwcmltYXJ5OworCWludCByZXQ7CisKKwlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnBy aW1hcnkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaW1hcnkpIHsKKwkJRFJNX0RFQlVHX0tNUygi RmFpbGVkIHRvIGFsbG9jYXRlIHByaW1hcnkgcGxhbmVcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9 CisKKwkvKiBwb3NzaWJsZV9jcnRjJ3Mgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgYnkgY3J0Y19p bml0ICovCisJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcHJpbWFyeSwgMCwK KwkJCQkgICAgICAgJmZzbF9kY3VfZHJtX3BsYW5lX2Z1bmNzLAorCQkJCSAgICAgICBmc2xfZGN1 X2RybV9wbGFuZV9mb3JtYXRzLAorCQkJCSAgICAgICBBUlJBWV9TSVpFKGZzbF9kY3VfZHJtX3Bs YW5lX2Zvcm1hdHMpLAorCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZiAo cmV0KSB7CisJCWtmcmVlKHByaW1hcnkpOworCQlwcmltYXJ5ID0gTlVMTDsKKwl9CisJZHJtX3Bs YW5lX2hlbHBlcl9hZGQocHJpbWFyeSwgJmZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyk7 CisKKwlyZXR1cm4gcHJpbWFyeTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9wbGFuZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NTdmMDgK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9w bGFuZS5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUg U2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2 ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xf RENVX0RSTV9QTEFORV9IX18KKyNkZWZpbmUgX19GU0xfRENVX0RSTV9QTEFORV9IX18KKworc3Ry dWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX1BMQU5FX0hfXyAqLwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMgYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9yZ2IuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mZThhYjVkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMKQEAgLTAsMCArMSwxODIgQEAKKy8qCisg KiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZy ZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKworI2luY2x1ZGUgPGRy bS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKworI2lu Y2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCitzdGF0aWMgaW50Citmc2xfZGN1X2RybV9lbmNv ZGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJIHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9k Y3VfZHJtX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7Cit9 CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKK3sKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9o ZWxwZXJfZnVuY3MgZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLmF0b21pY19jaGVjayA9IGZz bF9kY3VfZHJtX2VuY29kZXJfYXRvbWljX2NoZWNrLAorCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1f ZW5jb2Rlcl9kaXNhYmxlLAorCS5lbmFibGUgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2VuYWJsZSwK K307CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBlbmNvZGVyX2Z1bmNzID0g eworCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kZXN0cm95LAorfTsKKworaW50IGZz bF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9k ZXYsCisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciA9ICZmc2xfZGV2LT5lbmNvZGVyOworCWludCByZXQ7CisKKwllbmNvZGVy LT5wb3NzaWJsZV9jcnRjcyA9IDE7CisJcmV0ID0gZHJtX2VuY29kZXJfaW5pdChmc2xfZGV2LT5k cm0sIGVuY29kZXIsICZlbmNvZGVyX2Z1bmNzLAorCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJf TFZEUyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlkcm1fZW5jb2Rlcl9oZWxw ZXJfYWRkKGVuY29kZXIsICZlbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVj dG9yKTsKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKK30KKworc3RhdGljIGVu dW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKK2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3Qoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlyZXR1cm4gY29u bmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9mdW5jcyBmc2xfZGN1X2RybV9jb25uZWN0b3JfZnVuY3MgPSB7CisJLmF0b21pY19k dXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kZXN0cm95X3N0YXRlLAorCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ry b3ksCisJLmRldGVjdCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmRwbXMgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxw ZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfcmVzZXQsCit9OworCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoK K2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29uID0g dG9fZnNsX2RjdV9jb25uZWN0b3IoY29ubmVjdG9yKTsKKworCXJldHVybiBmc2xfY29uLT5lbmNv ZGVyOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29u bmVjdG9yICpmc2xfY29ubmVjdG9yOworCWludCAoKmdldF9tb2Rlcykoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpOworCWludCBudW1fbW9kZXMgPSAwOworCisJZnNsX2Nvbm5lY3RvciA9IHRvX2Zz bF9kY3VfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJaWYgKGZzbF9jb25uZWN0b3ItPnBhbmVsICYm IGZzbF9jb25uZWN0b3ItPnBhbmVsLT5mdW5jcyAmJgorCSAgICBmc2xfY29ubmVjdG9yLT5wYW5l bC0+ZnVuY3MtPmdldF9tb2RlcykgeworCQlnZXRfbW9kZXMgPSBmc2xfY29ubmVjdG9yLT5wYW5l bC0+ZnVuY3MtPmdldF9tb2RlczsKKwkJbnVtX21vZGVzID0gZ2V0X21vZGVzKGZzbF9jb25uZWN0 b3ItPnBhbmVsKTsKKwl9CisKKwlyZXR1cm4gbnVtX21vZGVzOworfQorCitzdGF0aWMgaW50IGZz bF9kY3VfZHJtX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCisJCQkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlpZiAo bW9kZS0+aGRpc3BsYXkgJiAweGYpCisJCXJldHVybiBNT0RFX0VSUk9SOworCisJcmV0dXJuIE1P REVfT0s7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MgY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwkuYmVzdF9lbmNvZGVyID0gZnNsX2RjdV9k cm1fY29ubmVjdG9yX2Jlc3RfZW5jb2RlciwKKwkuZ2V0X21vZGVzID0gZnNsX2RjdV9kcm1fY29u bmVjdG9yX2dldF9tb2RlcywKKwkubW9kZV92YWxpZCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9t b2RlX3ZhbGlkLAorfTsKKworaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0 IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCQkgc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmZnNsX2Rldi0+ Y29ubmVjdG9yLmJhc2U7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyBtb2RlX2NvbmZpZyA9IGZz bF9kZXYtPmRybS0+bW9kZV9jb25maWc7CisJc3RydWN0IGRldmljZV9ub2RlICpwYW5lbF9ub2Rl OworCWludCByZXQ7CisKKwlmc2xfZGV2LT5jb25uZWN0b3IuZW5jb2RlciA9IGVuY29kZXI7CisK KwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZnNsX2Rldi0+ZHJtLCBjb25uZWN0b3IsCisJCQkJ ICZmc2xfZGN1X2RybV9jb25uZWN0b3JfZnVuY3MsCisJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9M VkRTKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRybV9jb25uZWN0b3JfaGVs cGVyX2FkZChjb25uZWN0b3IsICZjb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKKwlyZXQgPSBkcm1f Y29ubmVjdG9yX3JlZ2lzdGVyKGNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJy X2NsZWFudXA7CisKKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29u bmVjdG9yLCBlbmNvZGVyKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfc3lzZnM7CisKKwlk cm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCSAgICAg IG1vZGVfY29uZmlnLmRwbXNfcHJvcGVydHksCisJCQkJICAgICAgRFJNX01PREVfRFBNU19PRkYp OworCisJcGFuZWxfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZnNsX2Rldi0+bnAsICJmc2wscGFu ZWwiLCAwKTsKKwlpZiAocGFuZWxfbm9kZSkgeworCQlmc2xfZGV2LT5jb25uZWN0b3IucGFuZWwg PSBvZl9kcm1fZmluZF9wYW5lbChwYW5lbF9ub2RlKTsKKwkJaWYgKCFmc2xfZGV2LT5jb25uZWN0 b3IucGFuZWwpIHsKKwkJCXJldCA9IC1FUFJPQkVfREVGRVI7CisJCQlnb3RvIGVycl9zeXNmczsK KwkJfQorCW9mX25vZGVfcHV0KHBhbmVsX25vZGUpOworCX0KKworCXJldCA9IGRybV9wYW5lbF9h dHRhY2goZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsLCBjb25uZWN0b3IpOworCWlmIChyZXQpIHsK KwkJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIHBhbmVsXG4iKTsKKwkJ Z290byBlcnJfc3lzZnM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl9zeXNmczoKKwlkcm1fY29u bmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKK2Vycl9jbGVhbnVwOgorCWRybV9jb25uZWN0 b3JfY2xlYW51cChjb25uZWN0b3IpOworCXJldHVybiByZXQ7Cit9Ci0tIAoyLjEuMC4yNy5nOTZk YjMyNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK