From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v12 1/6] drm/layerscape: Add Freescale DCU DRM driver Date: Fri, 24 Jul 2015 18:34:09 +0800 Message-ID: <1437734054-36163-2-git-send-email-jianwei.wang.chn@gmail.com> References: <1437734054-36163-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: <1437734054-36163-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 MDAuLmVmMDVkYWQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9m c2xfZGN1X2RybV9kcnYuYwpAQCAtMCwwICsxLDQwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1 IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0g ZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgorI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1 ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGlu dXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNp bmNsdWRlIDxsaW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNs dWRlIDxsaW51eC9yZWdtYXAuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9kcnYuaCIKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGZzbF9kY3VfcmVn bWFwX2NvbmZpZyA9IHsKKwkucmVnX2JpdHMgPSAzMiwKKwkucmVnX3N0cmlkZSA9IDQsCisJLnZh bF9iaXRzID0gMzIsCisJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9GTEFULAorfTsKKworc3RhdGlj IGludCBmc2xfZGN1X2RybV9pcnFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0 cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVu c2lnbmVkIGludCB2YWx1ZTsKKwlpbnQgcmV0OworCisJcmV0ID0gZHJtX2lycV9pbnN0YWxsKGRl diwgZnNsX2Rldi0+aXJxKTsKKwlpZiAocmV0IDwgMCkKKwkJZGV2X2VycihkZXYtPmRldiwgImZh aWxlZCB0byBpbnN0YWxsIElSUSBoYW5kbGVyXG4iKTsKKworCXJldCA9IHJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfU1RBVFVTLCAwKTsKKwlpZiAocmV0KQorCQlkZXZfZXJy KGRldi0+ZGV2LCAic2V0IERDVV9JTlRfU1RBVFVTIGZhaWxlZFxuIik7CisJcmV0ID0gcmVnbWFw X3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX01BU0ssICZ2YWx1ZSk7CisJaWYgKHJldCkK KwkJZGV2X2VycihkZXYtPmRldiwgInJlYWQgRENVX0lOVF9NQVNLIGZhaWxlZFxuIik7CisJdmFs dWUgJj0gRENVX0lOVF9NQVNLX1ZCTEFOSzsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+ cmVnbWFwLCBEQ1VfSU5UX01BU0ssIHZhbHVlKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldi0+ ZGV2LCAic2V0IERDVV9JTlRfTUFTSyBmYWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9S RUFEUkVHKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldi0+ZGV2LCAic2V0IERDVV9VUERBVEVf TU9ERSBmYWlsZWRcbiIpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBmc2xfZGN1 X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSBkcm0tPmRldjsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNl ICpmc2xfZGV2ID0gZHJtLT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0OworCisJcmV0ID0gZnNsX2Rj dV9kcm1fbW9kZXNldF9pbml0KGZzbF9kZXYpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIo ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgbW9kZSBzZXR0aW5nXG4iKTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZHJtLCBkcm0tPm1vZGVfY29uZmlnLm51 bV9jcnRjKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0 aWFsaXplIHZibGFua1xuIik7CisJCWdvdG8gZG9uZTsKKwl9CisJZHJtLT52YmxhbmtfZGlzYWJs ZV9hbGxvd2VkID0gdHJ1ZTsKKworCXJldCA9IGZzbF9kY3VfZHJtX2lycV9pbml0KGRybSk7CisJ aWYgKHJldCA8IDApCisJCWdvdG8gZG9uZTsKKwlkcm0tPmlycV9lbmFibGVkID0gdHJ1ZTsKKwor CWZzbF9kY3VfZmJkZXZfaW5pdChkcm0pOworCisJcmV0dXJuIDA7Citkb25lOgorCWlmIChyZXQp IHsKKwkJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKKwkJZHJtX3ZibGFua19jbGVhbnVw KGRybSk7CisJCWRybV9pcnFfdW5pbnN0YWxsKGRybSk7CisJCWRybS0+ZGV2X3ByaXZhdGUgPSBO VUxMOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV91bmxvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkZXYp OworCWRybV92YmxhbmtfY2xlYW51cChkZXYpOworCWRybV9pcnFfdW5pbnN0YWxsKGRldik7CisK KwlkZXYtPmRldl9wcml2YXRlID0gTlVMTDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBmc2xfZGN1X2RybV9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCit7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBmc2xfZGN1X2RybV9pcnEo aW50IGlycSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBhcmc7CisJ c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJ dW5zaWduZWQgaW50IGludF9zdGF0dXM7CisJaW50IHJldDsKKworCXJldCA9IHJlZ21hcF9yZWFk KGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9TVEFUVVMsICZpbnRfc3RhdHVzKTsKKwlpZiAocmV0 KQorCQlkZXZfZXJyKGRldi0+ZGV2LCAic2V0IERDVV9JTlRfU1RBVFVTIGZhaWxlZFxuIik7CisJ aWYgKGludF9zdGF0dXMgJiBEQ1VfSU5UX1NUQVRVU19WQkxBTkspCisJCWRybV9oYW5kbGVfdmJs YW5rKGRldiwgMCk7CisKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf SU5UX1NUQVRVUywgMHhmZmZmZmZmZik7CisJaWYgKHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwg InNldCBEQ1VfSU5UX1NUQVRVUyBmYWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xf ZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9SRUFE UkVHKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldi0+ZGV2LCAic2V0IERDVV9VUERBVEVfTU9E RSBmYWlsZWRcbiIpOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaW50IGZz bF9kY3VfZHJtX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMp Cit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJdW5zaWduZWQgaW50IHZhbHVlOworCWludCByZXQ7CisKKwlyZXQgPSByZWdtYXBfcmVh ZChmc2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfTUFTSywgJnZhbHVlKTsKKwlpZiAocmV0KQorCQlk ZXZfZXJyKGRldi0+ZGV2LCAicmVhZCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4iKTsKKwl2YWx1ZSAm PSB+RENVX0lOVF9NQVNLX1ZCTEFOSzsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVn bWFwLCBEQ1VfSU5UX01BU0ssIHZhbHVlKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldi0+ZGV2 LCAic2V0IERDVV9JTlRfTUFTSyBmYWlsZWRcbiIpOworCXJldHVybiAwOworfQorCitzdGF0aWMg dm9pZCBmc2xfZGN1X2RybV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YykKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisJaW50IHJldDsKKworCXJldCA9IHJl Z21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCAmdmFsdWUpOworCWlmIChy ZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJyZWFkIERDVV9JTlRfTUFTSyBmYWlsZWRcbiIpOwor CXZhbHVlIHw9IERDVV9JTlRfTUFTS19WQkxBTks7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCB2YWx1ZSk7CisJaWYgKHJldCkKKwkJZGV2X2Vycihk ZXYtPmRldiwgInNldCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4iKTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnNsX2RjdV9kcm1fZm9wcyA9IHsKKwkub3duZXIJCT0g VEhJU19NT0RVTEUsCisJLm9wZW4JCT0gZHJtX29wZW4sCisJLnJlbGVhc2UJPSBkcm1fcmVsZWFz ZSwKKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCisjaWZkZWYgQ09ORklHX0NPTVBBVAor CS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAorI2VuZGlmCisJLnBvbGwJCT0gZHJt X3BvbGwsCisJLnJlYWQJCT0gZHJtX3JlYWQsCisJLmxsc2VlawkJPSBub19sbHNlZWssCisJLm1t YXAJCT0gZHJtX2dlbV9jbWFfbW1hcCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBm c2xfZGN1X2RybV9kcml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9IQVZFX0lS USB8IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVAorCQkJCXwgRFJJVkVSX1BSSU1FIHwgRFJJ VkVSX0FUT01JQywKKwkubG9hZAkJCT0gZnNsX2RjdV9sb2FkLAorCS51bmxvYWQJCQk9IGZzbF9k Y3VfdW5sb2FkLAorCS5wcmVjbG9zZQkJPSBmc2xfZGN1X2RybV9wcmVjbG9zZSwKKwkuaXJxX2hh bmRsZXIJCT0gZnNsX2RjdV9kcm1faXJxLAorCS5nZXRfdmJsYW5rX2NvdW50ZXIJPSBkcm1fdmJs YW5rX2NvdW50LAorCS5lbmFibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2VuYWJsZV92Ymxhbmss CisJLmRpc2FibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJsYW5rLAorCS5nZW1f ZnJlZV9vYmplY3QJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKKwkuZ2VtX3ZtX29wcwkJPSAm ZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5wcmltZV9oYW5kbGVfdG9fZmQJPSBkcm1fZ2VtX3ByaW1l X2hhbmRsZV90b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dlbV9wcmltZV9mZF90 b19oYW5kbGUsCisJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwku Z2VtX3ByaW1lX2V4cG9ydAk9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJpbWVfZ2V0 X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVf aW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAorCS5n ZW1fcHJpbWVfdm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJpbWVfdnVu bWFwCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcAkJPSBkcm1f Z2VtX2NtYV9wcmltZV9tbWFwLAorCS5kdW1iX2NyZWF0ZQkJPSBkcm1fZ2VtX2NtYV9kdW1iX2Ny ZWF0ZSwKKwkuZHVtYl9tYXBfb2Zmc2V0CT0gZHJtX2dlbV9jbWFfZHVtYl9tYXBfb2Zmc2V0LAor CS5kdW1iX2Rlc3Ryb3kJCT0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCisJLmZvcHMJCQk9ICZmc2xf ZGN1X2RybV9mb3BzLAorCS5uYW1lCQkJPSAiZnNsLWRjdS1kcm0iLAorCS5kZXNjCQkJPSAiRnJl ZXNjYWxlIERDVSBEUk0iLAorCS5kYXRlCQkJPSAiMjAxNTAyMTMiLAorCS5tYWpvcgkJCT0gMSwK KwkubWlub3IJCQk9IDAsCit9OworCisjaWZkZWYgQ09ORklHX1BNX1NMRUVQCitzdGF0aWMgaW50 IGZzbF9kY3VfZHJtX3BtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBm c2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCWlm ICghZnNsX2RldikKKwkJcmV0dXJuIDA7CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2Rpc2FibGUo ZnNsX2Rldi0+ZHJtKTsKKwlyZWdjYWNoZV9jYWNoZV9vbmx5KGZzbF9kZXYtPnJlZ21hcCwgdHJ1 ZSk7CisJcmVnY2FjaGVfbWFya19kaXJ0eShmc2xfZGV2LT5yZWdtYXApOworCWNsa19kaXNhYmxl KGZzbF9kZXYtPmNsayk7CisJY2xrX3VucHJlcGFyZShmc2xfZGV2LT5jbGspOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9k cnZkYXRhKGRldik7CisJaW50IHJldDsKKworCWlmICghZnNsX2RldikKKwkJcmV0dXJuIDA7CisK KwlyZXQgPSBjbGtfZW5hYmxlKGZzbF9kZXYtPmNsayk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2 X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIGRjdSBjbGtcbiIpOworCQljbGtfdW5wcmVwYXJl KGZzbF9kZXYtPmNsayk7CisJCXJldHVybiByZXQ7CisJfQorCXJldCA9IGNsa19wcmVwYXJlKGZz bF9kZXYtPmNsayk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g cHJlcGFyZSBkY3UgY2xrXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcm1fa21zX2hlbHBl cl9wb2xsX2VuYWJsZShmc2xfZGV2LT5kcm0pOworCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rl di0+cmVnbWFwLCBmYWxzZSk7CisJcmVnY2FjaGVfc3luYyhmc2xfZGV2LT5yZWdtYXApOworCisJ cmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZz bF9kY3VfZHJtX3BtX29wcyA9IHsKKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhmc2xfZGN1X2Ry bV9wbV9zdXNwZW5kLCBmc2xfZGN1X2RybV9wbV9yZXN1bWUpCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IGZzbF9kY3Vfc29jX2RhdGEgZnNsX2RjdV9sczEwMjFhX2RhdGEgPSB7CisJLm5hbWUg PSAibHMxMDIxYSIsCisJLnRvdGFsX2xheWVyID0gMTYsCisJLm1heF9sYXllciA9IDQsCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGZzbF9kY3Vfc29jX2RhdGEgZnNsX2RjdV92ZjYxMF9kYXRh ID0geworCS5uYW1lID0gInZmNjEwIiwKKwkudG90YWxfbGF5ZXIgPSA2NCwKKwkubWF4X2xheWVy ID0gNiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGZzbF9kY3Vfb2Zf bWF0Y2hbXSA9IHsKKwl7CisJCS5jb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWRjdSIsCisJCS5k YXRhID0gJmZzbF9kY3VfbHMxMDIxYV9kYXRhLAorCX0sIHsKKwkJLmNvbXBhdGlibGUgPSAiZnNs LHZmNjEwLWRjdSIsCisJCS5kYXRhID0gJmZzbF9kY3VfdmY2MTBfZGF0YSwKKwl9LCB7CisJfSwK K307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBmc2xfZGN1X29mX21hdGNoKTsKKworc3RhdGlj IGludCBmc2xfZGN1X2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQorewor CXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXY7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRybTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCByZXNvdXJj ZSAqcmVzOworCXZvaWQgX19pb21lbSAqYmFzZTsKKwlzdHJ1Y3QgZHJtX2RyaXZlciAqZHJpdmVy ID0gJmZzbF9kY3VfZHJtX2RyaXZlcjsKKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICppZDsK KwlpbnQgcmV0OworCisJZnNsX2RldiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZnNsX2Rl diksIEdGUF9LRVJORUwpOworCWlmICghZnNsX2RldikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwly ZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlm ICghcmVzKSB7CisJCWRldl9lcnIoZGV2LCAiY291bGQgbm90IGdldCBtZW1vcnkgSU8gcmVzb3Vy Y2VcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwliYXNlID0gZGV2bV9pb3JlbWFwX3Jl c291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGJhc2UpKSB7CisJCXJldCA9IFBUUl9FUlIo YmFzZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJZnNsX2Rldi0+aXJxID0gcGxhdGZvcm1fZ2V0 X2lycShwZGV2LCAwKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0 byBnZXQgaXJxXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlmc2xfZGV2LT5jbGsgPSBkZXZt X2Nsa19nZXQoZGV2LCAiZGN1Iik7CisJaWYgKElTX0VSUihmc2xfZGV2LT5jbGspKSB7CisJCXJl dCA9IFBUUl9FUlIoZnNsX2Rldi0+Y2xrKTsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0 IGRjdSBjbG9ja1xuIik7CisJCXJldHVybiByZXQ7CisJfQorCXJldCA9IGNsa19wcmVwYXJlKGZz bF9kZXYtPmNsayk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g cHJlcGFyZSBkY3UgY2xrXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0ID0gY2xrX2VuYWJs ZShmc2xfZGV2LT5jbGspOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGVuYWJsZSBkY3UgY2xrXG4iKTsKKwkJY2xrX3VucHJlcGFyZShmc2xfZGV2LT5jbGspOwor CQlyZXR1cm4gcmV0OworCX0KKworCWZzbF9kZXYtPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRf bW1pbyhkZXYsIGJhc2UsCisJCQkmZnNsX2RjdV9yZWdtYXBfY29uZmlnKTsKKwlpZiAoSVNfRVJS KGZzbF9kZXYtPnJlZ21hcCkpIHsKKwkJZGV2X2VycihkZXYsICJyZWdtYXAgaW5pdCBmYWlsZWRc biIpOworCQlyZXR1cm4gUFRSX0VSUihmc2xfZGV2LT5yZWdtYXApOworCX0KKworCWlkID0gb2Zf bWF0Y2hfbm9kZShmc2xfZGN1X29mX21hdGNoLCBwZGV2LT5kZXYub2Zfbm9kZSk7CisJaWYgKCFp ZCkKKwkJcmV0dXJuIC1FTk9ERVY7CisJZnNsX2Rldi0+c29jID0gaWQtPmRhdGE7CisKKwlkcm0g PSBkcm1fZGV2X2FsbG9jKGRyaXZlciwgZGV2KTsKKwlpZiAoIWRybSkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlmc2xfZGV2LT5kZXYgPSBkZXY7CisJZnNsX2Rldi0+ZHJtID0gZHJtOworCWZzbF9k ZXYtPm5wID0gZGV2LT5vZl9ub2RlOworCWRybS0+ZGV2X3ByaXZhdGUgPSBmc2xfZGV2OworCWRl dl9zZXRfZHJ2ZGF0YShkZXYsIGZzbF9kZXYpOworCWRybV9kZXZfc2V0X3VuaXF1ZShkcm0sIGRl dl9uYW1lKGRldikpOworCisJcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOworCWlmIChy ZXQgPCAwKQorCQlnb3RvIHVucmVmOworCisJRFJNX0lORk8oIkluaXRpYWxpemVkICVzICVkLiVk LiVkICVzIG9uIG1pbm9yICVkXG4iLCBkcml2ZXItPm5hbWUsCisJCSBkcml2ZXItPm1ham9yLCBk cml2ZXItPm1pbm9yLCBkcml2ZXItPnBhdGNobGV2ZWwsCisJCSBkcml2ZXItPmRhdGUsIGRybS0+ cHJpbWFyeS0+aW5kZXgpOworCisJcmV0dXJuIDA7CisKK3VucmVmOgorCWRybV9kZXZfdW5yZWYo ZHJtKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZp Y2UgKmZzbF9kZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWRybV9wdXRfZGV2 KGZzbF9kZXYtPmRybSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZQkJPSBmc2xf ZGN1X2RybV9wcm9iZSwKKwkucmVtb3ZlCQk9IGZzbF9kY3VfZHJtX3JlbW92ZSwKKwkuZHJpdmVy CQk9IHsKKwkJLm5hbWUJPSAiZnNsLWRjdSIsCisJCS5wbQk9ICZmc2xfZGN1X2RybV9wbV9vcHMs CisJCS5vZl9tYXRjaF90YWJsZSA9IGZzbF9kY3Vfb2ZfbWF0Y2gsCisJfSwKK307CisKK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVyKTsKKworTU9EVUxF X0RFU0NSSVBUSU9OKCJGcmVlc2NhbGUgRENVIERSTSBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNF KCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjllNAotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oCkBAIC0wLDAgKzEsMTk3 IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4K KyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fRFJWX0hfXworI2Rl ZmluZSBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMu aCIKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9vdXRwdXQuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9wbGFuZS5oIgorCisjZGVmaW5lIERDVV9EQ1VfTU9ERQkJCTB4MDAxMAorI2RlZmluZSBEQ1Vf TU9ERV9CTEVORF9JVEVSKHgpCQkoKHgpIDw8IDIwKQorI2RlZmluZSBEQ1VfTU9ERV9SQVNURVJf RU4JCUJJVCgxNCkKKyNkZWZpbmUgRENVX01PREVfRENVX01PREUoeCkJCSh4KQorI2RlZmluZSBE Q1VfTU9ERV9EQ1VfTU9ERV9NQVNLCQkweDAzCisjZGVmaW5lIERDVV9NT0RFX09GRgkJCTAKKyNk ZWZpbmUgRENVX01PREVfTk9STUFMCQkJMQorI2RlZmluZSBEQ1VfTU9ERV9URVNUCQkJMgorI2Rl ZmluZSBEQ1VfTU9ERV9DT0xPUkJBUgkJMworCisjZGVmaW5lIERDVV9CR05ECQkJMHgwMDE0Cisj ZGVmaW5lIERDVV9CR05EX1IoeCkJCQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfQkdORF9HKHgp CQkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1VfQkdORF9CKHgpCQkJKHgpCisKKyNkZWZpbmUgRENV X0RJU1BfU0laRQkJCTB4MDAxOAorI2RlZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1koeCkJKCh4 KSA8PCAxNikKKy8qUmVnaXNpdGVyIHZhbHVlIDEvMTYgb2YgaG9yaXpvbnRhbCByZXNvbHV0aW9u Ki8KKyNkZWZpbmUgRENVX0RJU1BfU0laRV9ERUxUQV9YKHgpCSgoeCkgPj4gNCkKKworI2RlZmlu ZSBEQ1VfSFNZTl9QQVJBCQkJMHgwMDFjCisjZGVmaW5lIERDVV9IU1lOX1BBUkFfQlAoeCkJCSgo eCkgPDwgMjIpCisjZGVmaW5lIERDVV9IU1lOX1BBUkFfUFcoeCkJCSgoeCkgPDwgMTEpCisjZGVm aW5lIERDVV9IU1lOX1BBUkFfRlAoeCkJCSh4KQorCisjZGVmaW5lIERDVV9WU1lOX1BBUkEJCQkw eDAwMjAKKyNkZWZpbmUgRENVX1ZTWU5fUEFSQV9CUCh4KQkJKCh4KSA8PCAyMikKKyNkZWZpbmUg RENVX1ZTWU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKKyNkZWZpbmUgRENVX1ZTWU5fUEFSQV9G UCh4KQkJKHgpCisKKyNkZWZpbmUgRENVX1NZTl9QT0wJCQkweDAwMjQKKyNkZWZpbmUgRENVX1NZ Tl9QT0xfSU5WX1BYQ0tfRkFMTAkoMCA8PCA2KQorI2RlZmluZSBEQ1VfU1lOX1BPTF9ORUdfUkVN QUlOCQkoMCA8PCA1KQorI2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZfVlNfTE9XCQlCSVQoMSkKKyNk ZWZpbmUgRENVX1NZTl9QT0xfSU5WX0hTX0xPVwkJQklUKDApCisKKyNkZWZpbmUgRENVX1RIUkVT SE9MRAkJCTB4MDAyOAorI2RlZmluZSBEQ1VfVEhSRVNIT0xEX0xTX0JGX1ZTKHgpCSgoeCkgPDwg MTYpCisjZGVmaW5lIERDVV9USFJFU0hPTERfT1VUX0JVRl9ISUdIKHgpCSgoeCkgPDwgOCkKKyNk ZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xPVyh4KQkoeCkKKyNkZWZpbmUgQkZfVlNfVkFM CQkJMHgwMworI2RlZmluZSBCVUZfTUFYX1ZBTAkJCTB4NzgKKyNkZWZpbmUgQlVGX01JTl9WQUwJ CQkweDBhCisKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVMJCQkweDAwMkMKKyNkZWZpbmUgRENVX0lO VF9TVEFUVVNfVlNZTkMJCUJJVCgwKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19VTkRSVU4JCUJJ VCgxKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19MU0JGVlMJCUJJVCgyKQorI2RlZmluZSBEQ1Vf SU5UX1NUQVRVU19WQkxBTksJCUJJVCgzKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19DUkNSRUFE WQkJQklUKDQpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0NSQ09WRVJGTE9XCUJJVCg1KQorI2Rl ZmluZSBEQ1VfSU5UX1NUQVRVU19QMUZJRk9MTwkJQklUKDYpCisjZGVmaW5lIERDVV9JTlRfU1RB VFVTX1AxRklGT0hJCQlCSVQoNykKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDJGSUZPTE8JCUJJ VCg4KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMkZJRk9ISQkJQklUKDkpCisjZGVmaW5lIERD VV9JTlRfU1RBVFVTX1BST0dFTkQJCUJJVCgxMCkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfSVBN RVJST1IJCUJJVCgxMSkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfTFlSVFJBTlMJCUJJVCgxMikK KyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfRE1BVFJBTlMJCUJJVCgxNCkKKyNkZWZpbmUgRENVX0lO VF9TVEFUVVNfUDNGSUZPTE8JCUJJVCgxNikKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDNGSUZP SEkJCUJJVCgxNykKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDRGSUZPTE8JCUJJVCgxOCkKKyNk ZWZpbmUgRENVX0lOVF9TVEFUVVNfUDRGSUZPSEkJCUJJVCgxOSkKKyNkZWZpbmUgRENVX0lOVF9T VEFUVVNfUDFFTVBUWQkJQklUKDI2KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMkVNUFRZCQlC SVQoMjcpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AzRU1QVFkJCUJJVCgyOCkKKyNkZWZpbmUg RENVX0lOVF9TVEFUVVNfUDRFTVBUWQkJQklUKDI5KQorCisjZGVmaW5lIERDVV9JTlRfTUFTSwkJ CTB4MDAzMAorI2RlZmluZSBEQ1VfSU5UX01BU0tfVlNZTkMJCUJJVCgwKQorI2RlZmluZSBEQ1Vf SU5UX01BU0tfVU5EUlVOCQlCSVQoMSkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX0xTQkZWUwkJQklU KDIpCisjZGVmaW5lIERDVV9JTlRfTUFTS19WQkxBTksJCUJJVCgzKQorI2RlZmluZSBEQ1VfSU5U X01BU0tfQ1JDUkVBRFkJCUJJVCg0KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfQ1JDT1ZFUkZMT1cJ QklUKDUpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMUZJRk9MTwkJQklUKDYpCisjZGVmaW5lIERD VV9JTlRfTUFTS19QMUZJRk9ISQkJQklUKDcpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMkZJRk9M TwkJQklUKDgpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMkZJRk9ISQkJQklUKDkpCisjZGVmaW5l IERDVV9JTlRfTUFTS19QUk9HRU5ECQlCSVQoMTApCisjZGVmaW5lIERDVV9JTlRfTUFTS19JUE1F UlJPUgkJQklUKDExKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfTFlSVFJBTlMJCUJJVCgxMikKKyNk ZWZpbmUgRENVX0lOVF9NQVNLX0RNQVRSQU5TCQlCSVQoMTQpCisjZGVmaW5lIERDVV9JTlRfTUFT S19QM0ZJRk9MTwkJQklUKDE2KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDNGSUZPSEkJCUJJVCgx NykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1A0RklGT0xPCQlCSVQoMTgpCisjZGVmaW5lIERDVV9J TlRfTUFTS19QNEZJRk9ISQkJQklUKDE5KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDFFTVBUWQkJ QklUKDI2KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDJFTVBUWQkJQklUKDI3KQorI2RlZmluZSBE Q1VfSU5UX01BU0tfUDNFTVBUWQkJQklUKDI4KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDRFTVBU WQkJQklUKDI5KQorCisjZGVmaW5lIERDVV9ESVZfUkFUSU8JCQkweDAwNTQKKworI2RlZmluZSBE Q1VfVVBEQVRFX01PREUJCQkweDAwY2MKKyNkZWZpbmUgRENVX1VQREFURV9NT0RFX01PREUJCUJJ VCgzMSkKKyNkZWZpbmUgRENVX1VQREFURV9NT0RFX1JFQURSRUcJCUJJVCgzMCkKKworI2RlZmlu ZSBEQ1VfRENGQl9NQVgJCQkweDMwMAorCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOKGxheWVyLCBy ZWcpCSgweDIwMCArIChyZWcgLSAxKSAqIDQgKyAobGF5ZXIpICogMHg0MCkKKworI2RlZmluZSBE Q1VfTEFZRVJfSEVJR0hUKHgpCQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfTEFZRVJfV0lEVEgo eCkJCSh4KQorCisjZGVmaW5lIERDVV9MQVlFUl9QT1NZKHgpCQkoKHgpIDw8IDE2KQorI2RlZmlu ZSBEQ1VfTEFZRVJfUE9TWCh4KQkJKHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX0VOCQkJQklUKDMx KQorI2RlZmluZSBEQ1VfTEFZRVJfVElMRV9FTgkJQklUKDMwKQorI2RlZmluZSBEQ1VfTEFZRVJf REFUQV9TRUxfQ0xVVAkJQklUKDI5KQorI2RlZmluZSBEQ1VfTEFZRVJfU0FGRVRZX0VOCQlCSVQo MjgpCisjZGVmaW5lIERDVV9MQVlFUl9UUkFOUyh4KQkJKCh4KSA8PCAyMCkKKyNkZWZpbmUgRENV X0xBWUVSX0JQUCh4KQkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0xBWUVSX1JMRV9FTgkJQklU KDE1KQorI2RlZmluZSBEQ1VfTEFZRVJfTFVPRkZTKHgpCQkoKHgpIDw8IDQpCisjZGVmaW5lIERD VV9MQVlFUl9CQl9PTgkJCUJJVCgyKQorI2RlZmluZSBEQ1VfTEFZRVJfQUIoeCkJCQkoeCkKKwor I2RlZmluZSBEQ1VfTEFZRVJfQ0tNQVhfUih4KQkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0xB WUVSX0NLTUFYX0coeCkJCSgoeCkgPDwgOCkKKyNkZWZpbmUgRENVX0xBWUVSX0NLTUFYX0IoeCkJ CSh4KQorCisjZGVmaW5lIERDVV9MQVlFUl9DS01JTl9SKHgpCQkoKHgpIDw8IDE2KQorI2RlZmlu ZSBEQ1VfTEFZRVJfQ0tNSU5fRyh4KQkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1VfTEFZRVJfQ0tN SU5fQih4KQkJKHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX1RJTEVfVkVSKHgpCQkoKHgpIDw8IDE2 KQorI2RlZmluZSBEQ1VfTEFZRVJfVElMRV9IT1IoeCkJCSh4KQorCisjZGVmaW5lIERDVV9MQVlF Ul9GR19GQ09MT1IoeCkJCSh4KQorCisjZGVmaW5lIERDVV9MQVlFUl9CR19CQ09MT1IoeCkJCSh4 KQorCisjZGVmaW5lIERDVV9MQVlFUl9QT1NUX1NLSVAoeCkJCSgoeCkgPDwgMTYpCisjZGVmaW5l IERDVV9MQVlFUl9QUkVfU0tJUCh4KQkJKHgpCisKKyNkZWZpbmUgRlNMX0RDVV9SR0I1NjUJCQk0 CisjZGVmaW5lIEZTTF9EQ1VfUkdCODg4CQkJNQorI2RlZmluZSBGU0xfRENVX0FSR0I4ODg4CQk2 CisjZGVmaW5lIEZTTF9EQ1VfQVJHQjE1NTUJCTExCisjZGVmaW5lIEZTTF9EQ1VfQVJHQjQ0NDQJ CTEyCisjZGVmaW5lIEZTTF9EQ1VfWVVWNDIyCQkJMTQKKworI2RlZmluZSBWRjYxMF9MQVlFUl9S RUdfTlVNCQk5CisjZGVmaW5lIExTMTAyMUFfTEFZRVJfUkVHX05VTQkJMTAKKworc3RydWN0IGNs azsKK3N0cnVjdCBkZXZpY2U7CitzdHJ1Y3QgZHJtX2RldmljZTsKKworc3RydWN0IGZzbF9kY3Vf c29jX2RhdGEgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJLyp0b3RhbCBsYXllciBudW1iZXIqLwor CXVuc2lnbmVkIGludCB0b3RhbF9sYXllcjsKKwkvKm1heCBsYXllciBudW1iZXIgRENVIHN1cHBv cnRlZCovCisJdW5zaWduZWQgaW50IG1heF9sYXllcjsKK307CisKK3N0cnVjdCBmc2xfZGN1X2Ry bV9kZXZpY2UgeworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5w OworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlpbnQgaXJxOworCXN0cnVjdCBjbGsgKmNsazsK KwkvKnByb3RlY3RzIGhhcmR3YXJlIHJlZ2lzdGVyKi8KKwlzcGlubG9ja190IGlycV9sb2NrOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2Owor CXN0cnVjdCBkcm1fY3J0YyBjcnRjOworCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXN0 cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgY29ubmVjdG9yOworCWNvbnN0IHN0cnVjdCBmc2xf ZGN1X3NvY19kYXRhICpzb2M7Cit9OworCit2b2lkIGZzbF9kY3VfZmJkZXZfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKK2ludCBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoc3RydWN0IGZz bF9kY3VfZHJtX2RldmljZSAqZnNsX2Rldik7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0RS Vl9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRldi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGI4MTkKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRldi5jCkBAIC0wLDAg KzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3Rvciwg SW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1 ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2 LmgiCisKKy8qIGluaXRpYWxpemUgZmJkZXYgaGVscGVyICovCit2b2lkIGZzbF9kY3VfZmJkZXZf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZp Y2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LT5kZXYpOworCisJZnNsX2Rldi0+ZmJk ZXYgPSBkcm1fZmJkZXZfY21hX2luaXQoZGV2LCAyNCwgMSwgMSk7Cit9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjBlZjU5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9mc2xfZGN1X2RybV9rbXMuYwpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IDIw MTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRy bSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisj aW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9j bWFfaGVscGVyLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCisjaW5jbHVkZSAi ZnNsX2RjdV9kcm1fZHJ2LmgiCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmln X2Z1bmNzIGZzbF9kY3VfZHJtX21vZGVfY29uZmlnX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sg PSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdCwKKwkuZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCit9OworCitp bnQgZnNsX2RjdV9kcm1fbW9kZXNldF9pbml0KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZz bF9kZXYpCit7CisJZHJtX21vZGVfY29uZmlnX2luaXQoZnNsX2Rldi0+ZHJtKTsKKworCWZzbF9k ZXYtPmRybS0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKKwlmc2xfZGV2LT5kcm0tPm1vZGVf Y29uZmlnLm1pbl9oZWlnaHQgPSAwOworCWZzbF9kZXYtPmRybS0+bW9kZV9jb25maWcubWF4X3dp ZHRoID0gMjAzMTsKKwlmc2xfZGV2LT5kcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSAyMDQ3 OworCWZzbF9kZXYtPmRybS0+bW9kZV9jb25maWcuZnVuY3MgPSAmZnNsX2RjdV9kcm1fbW9kZV9j b25maWdfZnVuY3M7CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZnNsX2Rldi0+ZHJtKTsK Kwlmc2xfZGN1X2RybV9jcnRjX2NyZWF0ZShmc2xfZGV2KTsKKwlmc2xfZGN1X2RybV9lbmNvZGVy X2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+Y3J0Yyk7CisJZnNsX2RjdV9kcm1fY29ubmVjdG9y X2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+ZW5jb2Rlcik7CisJZHJtX21vZGVfY29uZmlnX3Jl c2V0KGZzbF9kZXYtPmRybSk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1dC5oIGIvZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fb3V0cHV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNzA5MzEwOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX291dHB1dC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1Ug ZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisK KyNpZm5kZWYgX19GU0xfRENVX0RSTV9DT05ORUNUT1JfSF9fCisjZGVmaW5lIF9fRlNMX0RDVV9E Uk1fQ09OTkVDVE9SX0hfXworCitzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yIHsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciBiYXNlOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZzbF9k Y3VfZHJtX2Nvbm5lY3RvciAqCit0b19mc2xfZGN1X2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29uKQoreworCXJldHVybiBjb24gPyBjb250YWluZXJfb2YoY29uLCBzdHJ1Y3QgZnNs X2RjdV9kcm1fY29ubmVjdG9yLCBiYXNlKQorCQkgICAgIDogTlVMTDsKK30KKworaW50IGZzbF9k Y3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl diwKKwkJCQkgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKK2ludCBmc2xfZGN1X2RybV9l bmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJICAg ICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0NP Tk5FQ1RPUl9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9k Y3VfZHJtX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFu ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYmU2YjgKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jCkBA IC0wLDAgKzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25k dWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvcmVnbWFw Lmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxw ZXIuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZzbF9kY3Vf ZHJtX3BsYW5lLmgiCisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcGxhbmVfaW5kZXgoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl diA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGludCB0b3RhbF9sYXllciA9 IGZzbF9kZXYtPnNvYy0+dG90YWxfbGF5ZXI7CisJdW5zaWduZWQgaW50IGluZGV4OworCisJaW5k ZXggPSBkcm1fcGxhbmVfaW5kZXgocGxhbmUpOworCWlmIChpbmRleCA8IHRvdGFsX2xheWVyKQor CQlyZXR1cm4gdG90YWxfbGF5ZXIgLSBpbmRleCAtIDE7CisKKwlkZXZfZXJyKGZzbF9kZXYtPmRl diwgIk5vIG1vcmUgbGF5ZXIgbGVmdFxuIik7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRp YyBpbnQgZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAorCQkJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmZiOworCisJc3dpdGNoIChmYi0+cGl4ZWxfZm9y bWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKKwljYXNlIERSTV9GT1JNQVRfUkdCODg4 OgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwljYXNlIERSTV9GT1JNQVRfQkdSQTQ0NDQ6 CisJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1OgorCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6CisJ CXJldHVybiAwOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKworc3RhdGlj IHZvaWQgZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCisJCQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQorewor CXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJp dmF0ZTsKKwl1bnNpZ25lZCBpbnQgaW5kZXgsIHZhbHVlLCByZXQ7CisKKwlpbmRleCA9IGZzbF9k Y3VfZHJtX3BsYW5lX2luZGV4KHBsYW5lKTsKKwlpZiAoaW5kZXggPCAwKQorCQlyZXR1cm47CisK KwlyZXQgPSByZWdtYXBfcmVhZChmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4 LCA0KSwgJnZhbHVlKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGZzbF9kZXYtPmRldiwgInJlYWQg RENVX0lOVF9NQVNLIGZhaWxlZFxuIik7CisJdmFsdWUgJj0gfkRDVV9MQVlFUl9FTjsKKwlyZXQg PSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgNCks IHZhbHVlKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGZzbF9kZXYtPmRldiwgInNldCBEQ1UgcmVn aXN0ZXIgZmFpbGVkXG4iKTsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fcGxhbmVfYXRv bWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJICAgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKKworeworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpzdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lLT5zdGF0ZS0+ZmI7CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqZ2VtOworCXVu c2lnbmVkIGludCBhbHBoYSwgYnBwOworCWludCBpbmRleCwgcmV0OworCisJaWYgKCFmYikKKwkJ cmV0dXJuOworCisJaW5kZXggPSBmc2xfZGN1X2RybV9wbGFuZV9pbmRleChwbGFuZSk7CisJaWYg KGluZGV4IDwgMCkKKwkJcmV0dXJuOworCisJZ2VtID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihm YiwgMCk7CisKKwlzd2l0Y2ggKGZiLT5waXhlbF9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRf UkdCNTY1OgorCQlicHAgPSBGU0xfRENVX1JHQjU2NTsKKwkJYWxwaGEgPSAweGZmOworCQlicmVh azsKKwljYXNlIERSTV9GT1JNQVRfUkdCODg4OgorCQlicHAgPSBGU0xfRENVX1JHQjg4ODsKKwkJ YWxwaGEgPSAweGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6CisJCWJw cCA9IEZTTF9EQ1VfQVJHQjg4ODg7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBE Uk1fRk9STUFUX0JHUkE0NDQ0OgorCQlicHAgPSBGU0xfRENVX0FSR0I0NDQ0OworCQlhbHBoYSA9 IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTU1NToKKwkJYnBwID0gRlNM X0RDVV9BUkdCMTU1NTsKKwkJYWxwaGEgPSAweGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JN QVRfWVVWNDIyOgorCQlicHAgPSBGU0xfRENVX1lVVjQyMjsKKwkJYWxwaGEgPSAweGZmOworCQli cmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm47CisJfQorCisJcmV0ID0gcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE4oaW5kZXgsIDEpLAorCQkJICAgRENVX0xBWUVS X0hFSUdIVChzdGF0ZS0+Y3J0Y19oKSB8CisJCQkgICBEQ1VfTEFZRVJfV0lEVEgoc3RhdGUtPmNy dGNfdykpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3Jp dGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgMiksCisJCQkgICBEQ1Vf TEFZRVJfUE9TWShzdGF0ZS0+Y3J0Y195KSB8CisJCQkgICBEQ1VfTEFZRVJfUE9TWChzdGF0ZS0+ Y3J0Y194KSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93 cml0ZShmc2xfZGV2LT5yZWdtYXAsCisJCQkgICBEQ1VfQ1RSTERFU0NMTihpbmRleCwgMyksIGdl bS0+cGFkZHIpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBf d3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgNCksCisJCQkgICBE Q1VfTEFZRVJfRU4gfAorCQkJICAgRENVX0xBWUVSX1RSQU5TKGFscGhhKSB8CisJCQkgICBEQ1Vf TEFZRVJfQlBQKGJwcCkgfAorCQkJICAgRENVX0xBWUVSX0FCKDApKTsKKwlpZiAocmV0KQorCQln b3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENV X0NUUkxERVNDTE4oaW5kZXgsIDUpLAorCQkJICAgRENVX0xBWUVSX0NLTUFYX1IoMHhGRikgfAor CQkJICAgRENVX0xBWUVSX0NLTUFYX0coMHhGRikgfAorCQkJICAgRENVX0xBWUVSX0NLTUFYX0Io MHhGRikpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3Jp dGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgNiksCisJCQkgICBEQ1Vf TEFZRVJfQ0tNSU5fUigwKSB8CisJCQkgICBEQ1VfTEFZRVJfQ0tNSU5fRygwKSB8CisJCQkgICBE Q1VfTEFZRVJfQ0tNSU5fQigwKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJl dCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA3 KSwgMCk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0 ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA4KSwKKwkJCSAgIERDVV9M QVlFUl9GR19GQ09MT1IoMCkpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQg PSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgOSks CisJCQkgICBEQ1VfTEFZRVJfQkdfQkNPTE9SKDApKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9m YWlsZWQ7CisJaWYgKCFzdHJjbXAoZnNsX2Rldi0+c29jLT5uYW1lLCAibHMxMDIxYSIpKSB7CisJ CXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4 LCAxMCksCisJCQkJICAgRENVX0xBWUVSX1BPU1RfU0tJUCgwKSB8CisJCQkJICAgRENVX0xBWUVS X1BSRV9TS0lQKDApKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gc2V0X2ZhaWxlZDsKKwl9CisJcmV0 ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAorCQkJ CSBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNLLAorCQkJCSBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9E RV9OT1JNQUwpKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCSAgIERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFU RV9NT0RFX1JFQURSRUcpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXR1cm47 CisKK3NldF9mYWlsZWQ6CisJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJzZXQgRENVIHJlZ2lzdGVy IGZhaWxlZFxuIik7Cit9CisKK3N0YXRpYyB2b2lkCitmc2xfZGN1X2RybV9wbGFuZV9jbGVhbnVw X2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRl KQoreworfQorCitzdGF0aWMgaW50Citmc2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK KwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKQoreworCXJl dHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mg ZnNsX2RjdV9kcm1fcGxhbmVfaGVscGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sgPSBmc2xf ZGN1X2RybV9wbGFuZV9hdG9taWNfY2hlY2ssCisJLmF0b21pY19kaXNhYmxlID0gZnNsX2RjdV9k cm1fcGxhbmVfYXRvbWljX2Rpc2FibGUsCisJLmF0b21pY191cGRhdGUgPSBmc2xfZGN1X2RybV9w bGFuZV9hdG9taWNfdXBkYXRlLAorCS5jbGVhbnVwX2ZiID0gZnNsX2RjdV9kcm1fcGxhbmVfY2xl YW51cF9mYiwKKwkucHJlcGFyZV9mYiA9IGZzbF9kY3VfZHJtX3BsYW5lX3ByZXBhcmVfZmIsCit9 OworCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lKQoreworCWRybV9wbGFuZV9jbGVhbnVwKHBsYW5lKTsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgZnNsX2RjdV9kcm1fcGxhbmVfZnVuY3MgPSB7CisJ LmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNh dGVfc3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfZGVzdHJveV9zdGF0ZSwKKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX3BsYW5lX2Rlc3Ryb3ks CisJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAorCS5y ZXNldCA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0LAorCS51cGRhdGVfcGxhbmUgPSBk cm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCit9OworCitzdGF0aWMgY29uc3QgdTMyIGZz bF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1f Rk9STUFUX1JHQjg4OCwKKwlEUk1fRk9STUFUX0FSR0I4ODg4LAorCURSTV9GT1JNQVRfQVJHQjQ0 NDQsCisJRFJNX0ZPUk1BVF9BUkdCMTU1NSwKKwlEUk1fRk9STUFUX1lVVjQyMiwKK307CisKK3N0 cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3VfZHJtX3ByaW1hcnlfY3JlYXRlX3BsYW5lKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeTsKKwlpbnQgcmV0 OworCisJcHJpbWFyeSA9IGt6YWxsb2Moc2l6ZW9mKCpwcmltYXJ5KSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFwcmltYXJ5KSB7CisJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byBhbGxvY2F0ZSBwcmlt YXJ5IHBsYW5lXG4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogcG9zc2libGVfY3J0Yydz IHdpbGwgYmUgZmlsbGVkIGluIGxhdGVyIGJ5IGNydGNfaW5pdCAqLworCXJldCA9IGRybV91bml2 ZXJzYWxfcGxhbmVfaW5pdChkZXYsIHByaW1hcnksIDAsCisJCQkJICAgICAgICZmc2xfZGN1X2Ry bV9wbGFuZV9mdW5jcywKKwkJCQkgICAgICAgZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0cywKKwkJ CQkgICAgICAgQVJSQVlfU0laRShmc2xfZGN1X2RybV9wbGFuZV9mb3JtYXRzKSwKKwkJCQkgICAg ICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJaWYgKHJldCkgeworCQlrZnJlZShwcmltYXJ5 KTsKKwkJcHJpbWFyeSA9IE5VTEw7CisJfQorCWRybV9wbGFuZV9oZWxwZXJfYWRkKHByaW1hcnks ICZmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJfZnVuY3MpOworCisJcmV0dXJuIHByaW1hcnk7Cit9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5o IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjU3ZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaApAQCAtMCwwICsxLDE3IEBA CisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAq CisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fCisjZGVm aW5lIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fCisKK3N0cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3Vf ZHJtX3ByaW1hcnlfY3JlYXRlX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5k aWYgLyogX19GU0xfRENVX0RSTV9QTEFORV9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3JnYi5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fcmdiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU4 YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX3JnYi5jCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNj YWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2Ug ZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8 bGludXgvYmFja2xpZ2h0Lmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYu aCIKKworc3RhdGljIGludAorZnNsX2RjdV9kcm1fZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCisJCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2Rpc2FibGUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1 X2RybV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGVuY29kZXJfaGVs cGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21p Y19jaGVjaywKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGlzYWJsZSwKKwkuZW5h YmxlID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9lbmFibGUsCit9OworCitzdGF0aWMgdm9pZCBmc2xf ZGN1X2RybV9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorewor CWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2VuY29kZXJfZnVuY3MgZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVzdHJveSA9IGZzbF9kY3Vf ZHJtX2VuY29kZXJfZGVzdHJveSwKK307CisKK2ludCBmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0 ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZnNsX2Rl di0+ZW5jb2RlcjsKKwlpbnQgcmV0OworCisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOwor CXJldCA9IGRybV9lbmNvZGVyX2luaXQoZnNsX2Rldi0+ZHJtLCBlbmNvZGVyLCAmZW5jb2Rlcl9m dW5jcywKKwkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX0xWRFMpOworCWlmIChyZXQgPCAwKQor CQlyZXR1cm4gcmV0OworCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZW5jb2Rl cl9oZWxwZXJfZnVuY3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3Vf ZHJtX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7 CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7CisJZHJtX2Nvbm5lY3Rvcl9j bGVhbnVwKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz Citmc2xfZGN1X2RybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVk OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgZnNsX2RjdV9k cm1fY29ubmVjdG9yX2Z1bmNzID0geworCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKKwkuZGVz dHJveSA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LAorCS5kZXRlY3QgPSBmc2xfZGN1 X2RybV9jb25uZWN0b3JfZGV0ZWN0LAorCS5kcG1zID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2RwbXMsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0 b3JfbW9kZXMsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAor fTsKKworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqCitmc2xfZGN1X2RybV9jb25uZWN0b3Jf YmVzdF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0 IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqZnNsX2NvbiA9IHRvX2ZzbF9kY3VfY29ubmVjdG9yKGNv bm5lY3Rvcik7CisKKwlyZXR1cm4gZnNsX2Nvbi0+ZW5jb2RlcjsKK30KKworc3RhdGljIGludCBm c2xfZGN1X2RybV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqZnNsX2Nvbm5lY3RvcjsK KwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKTsKKwlpbnQgbnVtX21v ZGVzID0gMDsKKworCWZzbF9jb25uZWN0b3IgPSB0b19mc2xfZGN1X2Nvbm5lY3Rvcihjb25uZWN0 b3IpOworCWlmIChmc2xfY29ubmVjdG9yLT5wYW5lbCAmJiBmc2xfY29ubmVjdG9yLT5wYW5lbC0+ ZnVuY3MgJiYKKwkgICAgZnNsX2Nvbm5lY3Rvci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMpIHsK KwkJZ2V0X21vZGVzID0gZnNsX2Nvbm5lY3Rvci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXM7CisJ CW51bV9tb2RlcyA9IGdldF9tb2Rlcyhmc2xfY29ubmVjdG9yLT5wYW5lbCk7CisJfQorCisJcmV0 dXJuIG51bV9tb2RlczsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfbW9k ZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCQkgICAgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJaWYgKG1vZGUtPmhkaXNwbGF5ICYgMHhmKQor CQlyZXR1cm4gTU9ERV9FUlJPUjsKKworCXJldHVybiBNT0RFX09LOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGNvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MgPSB7CisJLmJlc3RfZW5jb2RlciA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9iZXN0X2VuY29k ZXIsCisJLmdldF9tb2RlcyA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCisJLm1v ZGVfdmFsaWQgPSBmc2xfZGN1X2RybV9jb25uZWN0b3JfbW9kZV92YWxpZCwKK307CisKK2ludCBm c2xfZGN1X2RybV9jb25uZWN0b3JfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZz bF9kZXYsCisJCQkJIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmZzbF9kZXYtPmNvbm5lY3Rvci5iYXNlOworCXN0cnVj dCBkcm1fbW9kZV9jb25maWcgbW9kZV9jb25maWcgPSBmc2xfZGV2LT5kcm0tPm1vZGVfY29uZmln OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFuZWxfbm9kZTsKKwlpbnQgcmV0OworCisJZnNsX2Rl di0+Y29ubmVjdG9yLmVuY29kZXIgPSBlbmNvZGVyOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9p bml0KGZzbF9kZXYtPmRybSwgY29ubmVjdG9yLAorCQkJCSAmZnNsX2RjdV9kcm1fY29ubmVjdG9y X2Z1bmNzLAorCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfTFZEUyk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmY29u bmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25u ZWN0b3IpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9jbGVhbnVwOworCisJcmV0ID0gZHJt X21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7CisJaWYg KHJldCA8IDApCisJCWdvdG8gZXJyX3N5c2ZzOworCisJZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRf dmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKKwkJCQkgICAgICBtb2RlX2NvbmZpZy5kcG1zX3Byb3Bl cnR5LAorCQkJCSAgICAgIERSTV9NT0RFX0RQTVNfT0ZGKTsKKworCXBhbmVsX25vZGUgPSBvZl9w YXJzZV9waGFuZGxlKGZzbF9kZXYtPm5wLCAiZnNsLHBhbmVsIiwgMCk7CisJaWYgKHBhbmVsX25v ZGUpIHsKKwkJZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsID0gb2ZfZHJtX2ZpbmRfcGFuZWwocGFu ZWxfbm9kZSk7CisJCWlmICghZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsKSB7CisJCQlyZXQgPSAt RVBST0JFX0RFRkVSOworCQkJZ290byBlcnJfc3lzZnM7CisJCX0KKwlvZl9ub2RlX3B1dChwYW5l bF9ub2RlKTsKKwl9CisKKwlyZXQgPSBkcm1fcGFuZWxfYXR0YWNoKGZzbF9kZXYtPmNvbm5lY3Rv ci5wYW5lbCwgY29ubmVjdG9yKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZnNsX2Rldi0+ZGV2 LCAiZmFpbGVkIHRvIGF0dGFjaCBwYW5lbFxuIik7CisJCWdvdG8gZXJyX3N5c2ZzOworCX0KKwor CXJldHVybiAwOworCitlcnJfc3lzZnM6CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5l Y3Rvcik7CitlcnJfY2xlYW51cDoKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsK KwlyZXR1cm4gcmV0OworfQotLSAKMi4xLjAuMjcuZzk2ZGIzMjQKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==