From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v14 1/6] drm/layerscape: Add Freescale DCU DRM driver Date: Wed, 29 Jul 2015 16:30:00 +0800 Message-ID: <1438158605-28248-2-git-send-email-jianwei.wang.chn@gmail.com> References: <1438158605-28248-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: <1438158605-28248-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 IHwgIDQzICsrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0Lmgg ICAgICAgfCAgMzMgKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5l LmMgICAgICAgIHwgMjYxICsrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX3BsYW5lLmggICAgICAgIHwgIDE3ICsKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX3JnYi5jICAgICAgICAgIHwgMTgyICsrKysrKysrKysKIDE1IGZpbGVzIGNo YW5nZWQsIDE0MzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRp 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 MDAwMDAwMC4uMGVmNTk1OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg 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 b3JfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5lbmNvZGVyKTsKKwlkcm1fbW9kZV9jb25maWdf cmVzZXQoZnNsX2Rldi0+ZHJtKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0LmggYi9kcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRwdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi43MDkzMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fb3V0cHV0LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo dCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERD VSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8K KworI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18KKyNkZWZpbmUgX19GU0xfRENV X0RSTV9DT05ORUNUT1JfSF9fCisKK3N0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgeworCXN0 cnVjdCBkcm1fY29ubmVjdG9yIGJhc2U7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwor CXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZnNs X2RjdV9kcm1fY29ubmVjdG9yICoKK3RvX2ZzbF9kY3VfY29ubmVjdG9yKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb24pCit7CisJcmV0dXJuIGNvbiA/IGNvbnRhaW5lcl9vZihjb24sIHN0cnVjdCBm c2xfZGN1X2RybV9jb25uZWN0b3IsIGJhc2UpCisJCSAgICAgOiBOVUxMOworfQorCitpbnQgZnNs X2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2LAorCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOworaW50IGZzbF9kY3VfZHJt X2VuY29kZXJfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkg ICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKKworI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1f Q09OTkVDVE9SX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3Bs YW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJiZTZiOAotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmMK QEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNv bmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9yZWdt YXAuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9j cnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorI2luY2x1 ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hl bHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNsX2Rj dV9kcm1fcGxhbmUuaCIKKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbGFuZV9pbmRleChzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7CisJdW5zaWduZWQgaW50IHRvdGFsX2xheWVy ID0gZnNsX2Rldi0+c29jLT50b3RhbF9sYXllcjsKKwl1bnNpZ25lZCBpbnQgaW5kZXg7CisKKwlp bmRleCA9IGRybV9wbGFuZV9pbmRleChwbGFuZSk7CisJaWYgKGluZGV4IDwgdG90YWxfbGF5ZXIp CisJCXJldHVybiB0b3RhbF9sYXllciAtIGluZGV4IC0gMTsKKworCWRldl9lcnIoZnNsX2Rldi0+ ZGV2LCAiTm8gbW9yZSBsYXllciBsZWZ0XG4iKTsKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3Rh dGljIGludCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCisJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+ZmI7CisKKwlzd2l0Y2ggKGZiLT5waXhlbF9m b3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCWNhc2UgRFJNX0ZPUk1BVF9SR0I4 ODg6CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9CR1JBNDQ0 NDoKKwljYXNlIERSTV9GT1JNQVRfQVJHQjE1NTU6CisJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoK KwkJcmV0dXJuIDA7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorfQorCitzdGF0 aWMgdm9pZCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKKwkJCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7 CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IHBsYW5lLT5kZXYtPmRldl9w cml2YXRlOworCXVuc2lnbmVkIGludCBpbmRleCwgdmFsdWUsIHJldDsKKworCWluZGV4ID0gZnNs X2RjdV9kcm1fcGxhbmVfaW5kZXgocGxhbmUpOworCWlmIChpbmRleCA8IDApCisJCXJldHVybjsK KworCXJldCA9IHJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE4oaW5k ZXgsIDQpLCAmdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9lcnIoZnNsX2Rldi0+ZGV2LCAicmVh ZCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4iKTsKKwl2YWx1ZSAmPSB+RENVX0xBWUVSX0VOOworCXJl dCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA0 KSwgdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9lcnIoZnNsX2Rldi0+ZGV2LCAic2V0IERDVSBy ZWdpc3RlciBmYWlsZWRcbiIpOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9wbGFuZV9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgICAgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQorCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Rldmlj ZSAqZnNsX2RldiA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnN0YXRlID0gcGxhbmUtPnN0YXRlOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmUtPnN0YXRlLT5mYjsKKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpnZW07CisJ dW5zaWduZWQgaW50IGFscGhhLCBicHA7CisJaW50IGluZGV4LCByZXQ7CisKKwlpZiAoIWZiKQor CQlyZXR1cm47CisKKwlpbmRleCA9IGZzbF9kY3VfZHJtX3BsYW5lX2luZGV4KHBsYW5lKTsKKwlp ZiAoaW5kZXggPCAwKQorCQlyZXR1cm47CisKKwlnZW0gPSBkcm1fZmJfY21hX2dldF9nZW1fb2Jq KGZiLCAwKTsKKworCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1B VF9SR0I1NjU6CisJCWJwcCA9IEZTTF9EQ1VfUkdCNTY1OworCQlhbHBoYSA9IDB4ZmY7CisJCWJy ZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6CisJCWJwcCA9IEZTTF9EQ1VfUkdCODg4Owor CQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwkJ YnBwID0gRlNMX0RDVV9BUkdCODg4ODsKKwkJYWxwaGEgPSAweGZmOworCQlicmVhazsKKwljYXNl IERSTV9GT1JNQVRfQkdSQTQ0NDQ6CisJCWJwcCA9IEZTTF9EQ1VfQVJHQjQ0NDQ7CisJCWFscGhh ID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1OgorCQlicHAgPSBG U0xfRENVX0FSR0IxNTU1OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZP Uk1BVF9ZVVY0MjI6CisJCWJwcCA9IEZTTF9EQ1VfWVVWNDIyOworCQlhbHBoYSA9IDB4ZmY7CisJ CWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisKKwlyZXQgPSByZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgMSksCisJCQkgICBEQ1VfTEFZ RVJfSEVJR0hUKHN0YXRlLT5jcnRjX2gpIHwKKwkJCSAgIERDVV9MQVlFUl9XSURUSChzdGF0ZS0+ Y3J0Y193KSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93 cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCAyKSwKKwkJCSAgIERD VV9MQVlFUl9QT1NZKHN0YXRlLT5jcnRjX3kpIHwKKwkJCSAgIERDVV9MQVlFUl9QT1NYKHN0YXRl LT5jcnRjX3gpKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCSAgIERDVV9DVFJMREVTQ0xOKGluZGV4LCAzKSwg Z2VtLT5wYWRkcik7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA0KSwKKwkJCSAg IERDVV9MQVlFUl9FTiB8CisJCQkgICBEQ1VfTEFZRVJfVFJBTlMoYWxwaGEpIHwKKwkJCSAgIERD VV9MQVlFUl9CUFAoYnBwKSB8CisJCQkgICBEQ1VfTEFZRVJfQUIoMCkpOworCWlmIChyZXQpCisJ CWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBE Q1VfQ1RSTERFU0NMTihpbmRleCwgNSksCisJCQkgICBEQ1VfTEFZRVJfQ0tNQVhfUigweEZGKSB8 CisJCQkgICBEQ1VfTEFZRVJfQ0tNQVhfRygweEZGKSB8CisJCQkgICBEQ1VfTEFZRVJfQ0tNQVhf QigweEZGKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93 cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA2KSwKKwkJCSAgIERD VV9MQVlFUl9DS01JTl9SKDApIHwKKwkJCSAgIERDVV9MQVlFUl9DS01JTl9HKDApIHwKKwkJCSAg IERDVV9MQVlFUl9DS01JTl9CKDApKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJ cmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE4oaW5kZXgs IDcpLCAwKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE4oaW5kZXgsIDgpLAorCQkJICAgRENV X0xBWUVSX0ZHX0ZDT0xPUigwKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJl dCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA5 KSwKKwkJCSAgIERDVV9MQVlFUl9CR19CQ09MT1IoMCkpOworCWlmIChyZXQpCisJCWdvdG8gc2V0 X2ZhaWxlZDsKKwlpZiAoIXN0cmNtcChmc2xfZGV2LT5zb2MtPm5hbWUsICJsczEwMjFhIikpIHsK KwkJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE4oaW5k ZXgsIDEwKSwKKwkJCQkgICBEQ1VfTEFZRVJfUE9TVF9TS0lQKDApIHwKKwkJCQkgICBEQ1VfTEFZ RVJfUFJFX1NLSVAoMCkpOworCQlpZiAocmV0KQorCQkJZ290byBzZXRfZmFpbGVkOworCX0KKwly ZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfRENVX01PREUsCisJ CQkJIERDVV9NT0RFX0RDVV9NT0RFX01BU0ssCisJCQkJIERDVV9NT0RFX0RDVV9NT0RFKERDVV9N T0RFX05PUk1BTCkpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdt YXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLAorCQkJICAgRENVX1VQREFURV9NT0RFLCBEQ1VfVVBE QVRFX01PREVfUkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldHVy bjsKKworc2V0X2ZhaWxlZDoKKwlkZXZfZXJyKGZzbF9kZXYtPmRldiwgInNldCBEQ1UgcmVnaXN0 ZXIgZmFpbGVkXG4iKTsKK30KKworc3RhdGljIHZvaWQKK2ZzbF9kY3VfZHJtX3BsYW5lX2NsZWFu dXBfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfc3Rh dGUpCit7Cit9CisKK3N0YXRpYyBpbnQKK2ZzbF9kY3VfZHJtX3BsYW5lX3ByZXBhcmVfZmIoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LAorCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfc3RhdGUpCit7CisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5j cyBmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7CisJLmF0b21pY19jaGVjayA9IGZz bF9kY3VfZHJtX3BsYW5lX2F0b21pY19jaGVjaywKKwkuYXRvbWljX2Rpc2FibGUgPSBmc2xfZGN1 X2RybV9wbGFuZV9hdG9taWNfZGlzYWJsZSwKKwkuYXRvbWljX3VwZGF0ZSA9IGZzbF9kY3VfZHJt X3BsYW5lX2F0b21pY191cGRhdGUsCisJLmNsZWFudXBfZmIgPSBmc2xfZGN1X2RybV9wbGFuZV9j bGVhbnVwX2ZiLAorCS5wcmVwYXJlX2ZiID0gZnNsX2RjdV9kcm1fcGxhbmVfcHJlcGFyZV9mYiwK K307CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9w bGFuZSAqcGxhbmUpCit7CisJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBmc2xfZGN1X2RybV9wbGFuZV9mdW5jcyA9IHsK KwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxp Y2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9w bGFuZV9kZXN0cm95X3N0YXRlLAorCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJv eSwKKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCisJ LnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCisJLnVwZGF0ZV9wbGFuZSA9 IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKK307CisKK3N0YXRpYyBjb25zdCB1MzIg ZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0c1tdID0geworCURSTV9GT1JNQVRfUkdCNTY1LAorCURS TV9GT1JNQVRfUkdCODg4LAorCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJRFJNX0ZPUk1BVF9BUkdC NDQ0NCwKKwlEUk1fRk9STUFUX0FSR0IxNTU1LAorCURSTV9GT1JNQVRfWVVWNDIyLAorfTsKKwor c3RydWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5OworCWludCBy ZXQ7CisKKwlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnByaW1hcnkpLCBHRlBfS0VSTkVMKTsK KwlpZiAoIXByaW1hcnkpIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGFsbG9jYXRlIHBy aW1hcnkgcGxhbmVcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBwb3NzaWJsZV9jcnRj J3Mgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgYnkgY3J0Y19pbml0ICovCisJcmV0ID0gZHJtX3Vu aXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcHJpbWFyeSwgMCwKKwkJCQkgICAgICAgJmZzbF9kY3Vf ZHJtX3BsYW5lX2Z1bmNzLAorCQkJCSAgICAgICBmc2xfZGN1X2RybV9wbGFuZV9mb3JtYXRzLAor CQkJCSAgICAgICBBUlJBWV9TSVpFKGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHMpLAorCQkJCSAg ICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKHByaW1h cnkpOworCQlwcmltYXJ5ID0gTlVMTDsKKwl9CisJZHJtX3BsYW5lX2hlbHBlcl9hZGQocHJpbWFy eSwgJmZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gcHJpbWFyeTsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5l LmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NTdmMDgKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCkBAIC0wLDAgKzEsMTcg QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgor ICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9QTEFORV9IX18KKyNk ZWZpbmUgX19GU0xfRENVX0RSTV9QTEFORV9IX18KKworc3RydWN0IGRybV9wbGFuZSAqZnNsX2Rj dV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKKyNl bmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX1BMQU5FX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9mc2xfZGN1X2RybV9yZ2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m ZThhYjVkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fcmdiLmMKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVl c2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmlj ZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRl IDxsaW51eC9iYWNrbGlnaHQuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o PgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Ry di5oIgorCitzdGF0aWMgaW50Citmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKKwkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZGlzYWJs ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9k Y3VfZHJtX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgZW5jb2Rlcl9o ZWxwZXJfZnVuY3MgPSB7CisJLmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX2VuY29kZXJfYXRv bWljX2NoZWNrLAorCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kaXNhYmxlLAorCS5l bmFibGUgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2VuYWJsZSwKK307CisKK3N0YXRpYyB2b2lkIGZz bF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7 CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZW5jb2Rlcl9mdW5jcyBlbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gZnNsX2Rj dV9kcm1fZW5jb2Rlcl9kZXN0cm95LAorfTsKKworaW50IGZzbF9kY3VfZHJtX2VuY29kZXJfY3Jl YXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkgICAgICAgc3RydWN0 IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZmc2xf ZGV2LT5lbmNvZGVyOworCWludCByZXQ7CisKKwllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDE7 CisJcmV0ID0gZHJtX2VuY29kZXJfaW5pdChmc2xfZGV2LT5kcm0sIGVuY29kZXIsICZlbmNvZGVy X2Z1bmNzLAorCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJfTFZEUyk7CisJaWYgKHJldCA8IDAp CisJCXJldHVybiByZXQ7CisKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29kZXIsICZlbmNv ZGVyX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikK K3sKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKKwlkcm1fY29ubmVjdG9y X2NsZWFudXAoY29ubmVjdG9yKTsKK30KKworc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0 dXMKK2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBmc2xfZGN1 X2RybV9jb25uZWN0b3JfZnVuY3MgPSB7CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJv eV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorCS5k ZXN0cm95ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCisJLmRldGVjdCA9IGZzbF9k Y3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmRwbXMgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfZHBtcywKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5l Y3Rvcl9tb2RlcywKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQs Cit9OworCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKK2ZzbF9kY3VfZHJtX2Nvbm5lY3Rv cl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1 Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29uID0gdG9fZnNsX2RjdV9jb25uZWN0b3Io Y29ubmVjdG9yKTsKKworCXJldHVybiBmc2xfY29uLT5lbmNvZGVyOworfQorCitzdGF0aWMgaW50 IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29ubmVjdG9y OworCWludCAoKmdldF9tb2Rlcykoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpOworCWludCBudW1f bW9kZXMgPSAwOworCisJZnNsX2Nvbm5lY3RvciA9IHRvX2ZzbF9kY3VfY29ubmVjdG9yKGNvbm5l Y3Rvcik7CisJaWYgKGZzbF9jb25uZWN0b3ItPnBhbmVsICYmIGZzbF9jb25uZWN0b3ItPnBhbmVs LT5mdW5jcyAmJgorCSAgICBmc2xfY29ubmVjdG9yLT5wYW5lbC0+ZnVuY3MtPmdldF9tb2Rlcykg eworCQlnZXRfbW9kZXMgPSBmc2xfY29ubmVjdG9yLT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlczsK KwkJbnVtX21vZGVzID0gZ2V0X21vZGVzKGZzbF9jb25uZWN0b3ItPnBhbmVsKTsKKwl9CisKKwly ZXR1cm4gbnVtX21vZGVzOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9t b2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCSAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlpZiAobW9kZS0+aGRpc3BsYXkgJiAweGYp CisJCXJldHVybiBNT0RFX0VSUk9SOworCisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9m dW5jcyA9IHsKKwkuYmVzdF9lbmNvZGVyID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Jlc3RfZW5j b2RlciwKKwkuZ2V0X21vZGVzID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2dldF9tb2RlcywKKwku bW9kZV92YWxpZCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorfTsKKworaW50 IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAq ZnNsX2RldiwKKwkJCQkgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmZnNsX2Rldi0+Y29ubmVjdG9yLmJhc2U7CisJc3Ry dWN0IGRybV9tb2RlX2NvbmZpZyBtb2RlX2NvbmZpZyA9IGZzbF9kZXYtPmRybS0+bW9kZV9jb25m aWc7CisJc3RydWN0IGRldmljZV9ub2RlICpwYW5lbF9ub2RlOworCWludCByZXQ7CisKKwlmc2xf ZGV2LT5jb25uZWN0b3IuZW5jb2RlciA9IGVuY29kZXI7CisKKwlyZXQgPSBkcm1fY29ubmVjdG9y X2luaXQoZnNsX2Rldi0+ZHJtLCBjb25uZWN0b3IsCisJCQkJICZmc2xfZGN1X2RybV9jb25uZWN0 b3JfZnVuY3MsCisJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTKTsKKwlpZiAocmV0IDwgMCkK KwkJcmV0dXJuIHJldDsKKworCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZj b25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKKwlyZXQgPSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKGNv bm5lY3Rvcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyX2NsZWFudXA7CisKKwlyZXQgPSBk cm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKKwlp ZiAocmV0IDwgMCkKKwkJZ290byBlcnJfc3lzZnM7CisKKwlkcm1fb2JqZWN0X3Byb3BlcnR5X3Nl dF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCSAgICAgIG1vZGVfY29uZmlnLmRwbXNfcHJv cGVydHksCisJCQkJICAgICAgRFJNX01PREVfRFBNU19PRkYpOworCisJcGFuZWxfbm9kZSA9IG9m X3BhcnNlX3BoYW5kbGUoZnNsX2Rldi0+bnAsICJmc2wscGFuZWwiLCAwKTsKKwlpZiAocGFuZWxf bm9kZSkgeworCQlmc2xfZGV2LT5jb25uZWN0b3IucGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChw YW5lbF9ub2RlKTsKKwkJaWYgKCFmc2xfZGV2LT5jb25uZWN0b3IucGFuZWwpIHsKKwkJCXJldCA9 IC1FUFJPQkVfREVGRVI7CisJCQlnb3RvIGVycl9zeXNmczsKKwkJfQorCW9mX25vZGVfcHV0KHBh bmVsX25vZGUpOworCX0KKworCXJldCA9IGRybV9wYW5lbF9hdHRhY2goZnNsX2Rldi0+Y29ubmVj dG9yLnBhbmVsLCBjb25uZWN0b3IpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycihmc2xfZGV2LT5k ZXYsICJmYWlsZWQgdG8gYXR0YWNoIHBhbmVsXG4iKTsKKwkJZ290byBlcnJfc3lzZnM7CisJfQor CisJcmV0dXJuIDA7CisKK2Vycl9zeXNmczoKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29u bmVjdG9yKTsKK2Vycl9jbGVhbnVwOgorCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3Ip OworCXJldHVybiByZXQ7Cit9Ci0tIAoyLjEuMC4yNy5nOTZkYjMyNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK