From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v8 1/4] drm/layerscape: Add Freescale DCU DRM driver Date: Mon, 13 Jul 2015 14:00:08 +0800 Message-ID: <1436767211-38571-1-git-send-email-jianwei.wang@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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, Jianwei Wang , 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 KDEpIEZ1bGwgUkdCODg4IG91dHB1dCB0byBURlQgTENEIHBhbmVsLgooMikgRm9yIHRoZSBjdXJy ZW50IExDRCBwYW5lbCwgV1FWR0EgIjQ4MHgyNzIiIGlzIHN1cHBvcnRlZC4KKDMpIEJsZW5kaW5n IG9mIGVhY2ggcGl4ZWwgdXNpbmcgdXAgdG8gNCBzb3VyY2UgbGF5ZXJzCmRlcGVuZGVudCBvbiBz aXplIG9mIHBhbmVsLgooNCkgRWFjaCBncmFwaGljIGxheWVyIGNhbiBiZSBwbGFjZWQgd2l0aCBv bmUgcGl4ZWwgcmVzb2x1dGlvbgppbiBlaXRoZXIgYXhpcy4KKDUpIEVhY2ggZ3JhcGhpYyBsYXll ciBzdXBwb3J0IFJHQjU2NSBhbmQgUkdCODg4IGRpcmVjdCBjb2xvcnMKd2l0aG91dCBhbHBoYQpj aGFubmVsIGFuZCBCR1JBODg4OCBCR1JBNDQ0NCBBUkdCMTU1NSBkaXJlY3QgY29sb3JzIHdpdGgg YW4KYWxwaGEgY2hhbm5lbCBhbmQgWVVWNDIyIGZvcm1hdC4KKDYpIEVhY2ggZ3JhcGhpYyBsYXll ciBzdXBwb3J0IGFscGhhIGJsZW5kaW5nIHdpdGggOC1iaXQKcmVzb2x1dGlvbi4KClRoaXMgaXMg YSBzaW1wbGlmaWVkIHZlcnNpb24sIG9ubHkgb25lIHByaW1hcnkgcGxhbmUsIG9uZQpmcmFtZWJ1 ZmZlciwgb25lIGNydGMsIG9uZSBjb25uZWN0b3IgYW5kIG9uZSBlbmNvZGVyIGZvciBURlQgTENE IHBhbmVsLgoKU2lnbmVkLW9mZi1ieTogQWxpc29uIFdhbmcgPGIxODk2NUBmcmVlc2NhbGUuY29t PgpTaWduZWQtb2ZmLWJ5OiBYaXVibyBMaSA8bGl4aXVib0BjbXNzLmNoaW5hbW9iaWxlLmNvbT4K U2lnbmVkLW9mZi1ieTogSmlhbndlaSBXYW5nIDxqaWFud2VpLndhbmdAZnJlZXNjYWxlLmNvbT4K QWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClJldmlld2Vk LWJ5OiBBbGlzb24gV2FuZyA8YWxpc29uLndhbmdAZnJlZXNjYWxlLmNvbT4KLS0tCgoKaGFuZ2Vk IGluIFY4Ci0gUmVtb3ZlIHVzZWxlc3MgY29kZQogICNkZWZpbmUgRFJJVkVSX05BTUUgICAgICJm c2wtZGN1LWRybSIKICBNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmZzbC1kY3UtZHJtIik7CkFkdmlj ZWQgYnkgUGF1bCBCb2xsZQoKQ2hhbmdlZCBpbiBWNwoKLSBSZW1vdmUgcmVkdW5kYW50IGZ1bmN0 aW9ucyBhbmQgcmVwbGFjZSBkZXByZWNhdGVkIGhvb2tlcgpBZHZpY2VkIGJ5IERhbmllbCBWZXR0 ZXIKLSBSZXBsYWNlIGRybV9wbGF0Zm9ybV9pbml0IHdpdGggZHJtX2Rldl9hbGxvYy9yZWdpc3Rl cgpBZHZpY2VkIGJ5IERhbmllbCBWZXR0ZXIKCkNoYW5nZWQgaW4gVjYKCi0gQWRkIE5FQyBubDQ4 MjdoYzE5XzA1YiBwYW5lbCB0byBwYW5lbC1zaW1wbGUuYwpBZHZpY2VkIGJ5IE1hcmsgWWFvCi0g QWRkIERSSVZFUl9BVE9NSUMgZm9yIGRyaXZlcl9mZWF0dXJlcwpBZHZpY2VkIGJ5IE1hcmsgWWFv Ci0gY2hlY2sgZnNsX2RldiBpZiBpdCdzIE5VTEwgYXQgUE0gc3VzcGVuZC9yZXN1bWUKQWR2aWNl ZCBieSBNYXJrIFlhbwoKQ2hhbmdlZCBpbiBWNQoKLSBVcGRhdGUgY29tbWl0IG1lc3NhZ2UKLSBB ZGQgbGF5ZXIgcmVnaXN0ZXJzIGluaXRpYWxpemF0aW9uCi0gUmVtb3ZlIHVudXNlZCBmdW5jdGlv bnMKLSBSZW5hbWUgZHJpdmVyIGZvbGRlcgpBZHZpY2VkIGJ5IFN0ZWZhbiBBZ25lcgotIE1vdmUg cGl4ZWwgY2xvY2sgY29udHJvbCBmdW5jdGlvbnMgdG8gZnNsX2RjdV9kcm1fZHJ2LmMKLSByZW1v dmUgcmVkdW5kYW50IGVuYWJsZSB0aGUgY2xvY2sgaW1wbGljaXRseSB1c2luZyByZWdtYXAKQWR2 aWNlZCBieSBTdGVmYW4gQWduZXIKLSBBZGQgbWFpbnRhaW5lciBtZXNzYWdlCgpDaGFuZ2VkIGlu IFY0OgoKLVRoaXMgdmVyc2lvbiBkb2Vzbid0IGhhdmUgZnVuY3Rpb25hbGl0eSBjaGFuZ2VkCiBK dXN0IGEgbWlub3IgYWRqdXN0bWVudC4KCkNoYW5nZWQgaW4gVjM6CgotIFRlc3QgZHJpdmVyIG9u IFZ5YnJpZCBib2FyZCBhbmQgYWRkIGNvbXBhdGlibGUgc3RyaW5nCi0gUmVtb3ZlIHVudXNlZCBm dW5jdGlvbnMKLSBzZXQgZGVmYXVsdCBjcnRjIGZvciBlbmNvZGVyCi0gcmVwbGFjZSBsZWdhY3kg ZnVuY3Rpb25zIHdpdGggYXRvbWljIGhlbHAgZnVuY3Rpb25zCkFkdmljZWQgYnkgRGFuaWVsIFZl dHRlcgotIFNldCB0aGUgdW5pcXVlIG5hbWUgb2YgdGhlIERSTSBkZXZpY2UKLSBJbXBsZW1lbnQg aXJxIGhhbmRsZSBmdW5jdGlvbiBmb3IgdmJsYW5rIGludGVycnVwdAoKQ2hhbmdlZCBpbiB2Mjog Ci0gQWRkIGF0b21pYyBzdXBwb3J0CkFkdmljZWQgYnkgRGFuaWVsIFZldHRlcgotIE1vZGlmeSBi aW5kaW5ncyBmaWxlCi0gUmVuYW1lIG5vZGUgZm9yIGNvbXBhdGliaWxpdHkKLSBNb3ZlIHBsYXRm b3JtIHJlbGF0ZWQgY29kZSBvdXQgZm9yIGNvbXBhdGliaWxpdHkKQWR2aWNlZCBieSBTdGVmYW4g QWduZXIKCgogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZyAgICAgICAgICAgICAgICAg fCAgMTggKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L01ha2VmaWxlICAgICAgICAgICAgICAg IHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5j IHwgMTgzICsrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9j b25uZWN0b3IuaCB8ICAzMSArKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1f Y3J0Yy5jICAgICAgfCAxNTkgKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fY3J0Yy5oICAgICAgfCAgMjIgKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2Rydi5jICAgICAgIHwgNDAwICsrKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmggICAgICAgfCAyMjIgKysrKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZmJkZXYuYyAgICAg fCAgMjYgKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jICAgICAg IHwgIDQyICsrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmggICAg ICAgfCAgMTcgKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYyAg ICAgfCAxOTUgKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2Ry bV9wbGFuZS5oICAgICB8ICAyMyArKwogMTYgZmlsZXMgY2hhbmdlZCwgMTM1NSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L01ha2VmaWxlCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY29ubmVj dG9yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9jb25uZWN0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2NydGMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRldi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3Bs YW5lLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9wbGFuZS5oCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRl eCA2NzYxMzE4Li5iMjViOTQ4IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJ TkVSUwpAQCAtMzQwNCw2ICszNDA0LDEzIEBAIFM6CU1haW50YWluZWQKIEY6CWRyaXZlcnMvZ3B1 L2RybS9pbXgvCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZHJtL2lteC8K IAorRFJNIERSSVZFUlMgRk9SIEZSRUVTQ0FMRSBEQ1UKK006CUppYW53ZWkgV2FuZyA8amlhbndl aS53YW5nQGZyZWVzY2FsZS5jb20+CitNOglBbGlzb24gV2FuZyA8YWxpc29uLndhbmdAZnJlZXNj YWxlLmNvbT4KK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1cHBvcnRl ZAorRjoJZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvCisKIERSTSBEUklWRVJTIEZPUiBOVklESUEg VEVHUkEKIE06CVRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+CiBNOglU ZXJqZSBCZXJnc3Ryw7ZtIDx0YmVyZ3N0cm9tQG52aWRpYS5jb20+CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4IGM0NmNh MzEuLjljZmQxNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0yMzEsNiArMjMxLDggQEAgc291cmNlICJkcml2ZXJz L2dwdS9kcm0vdmlydGlvL0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL21zbS9L Y29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L0tjb25maWciCisKIHNv dXJjZSAiZHJpdmVycy9ncHUvZHJtL3RlZ3JhL0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9n cHUvZHJtL3BhbmVsL0tjb25maWciCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggNTcxM2QwNS4uMTFjYjgxZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQpAQCAtNzAsMyArNzAsNCBAQCBvYmotJChDT05GSUdfRFJNX0lNWCkgKz0gaW14Lwog b2JqLXkJCQkrPSBpMmMvCiBvYmoteQkJCSs9IHBhbmVsLwogb2JqLXkJCQkrPSBicmlkZ2UvCitv YmotJChDT05GSUdfRFJNX0ZTTF9EQ1UpICs9IGZzbC1kY3UvCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZp ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmQ0ODRiCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZwpAQCAtMCwwICsxLDE4IEBA Citjb25maWcgRFJNX0ZTTF9EQ1UKKwl0cmlzdGF0ZSAiRFJNIFN1cHBvcnQgZm9yIEZyZWVzY2Fs ZSBEQ1UiCisJZGVwZW5kcyBvbiBEUk0gJiYgT0YgJiYgQVJNCisJc2VsZWN0IERSTV9LTVNfSEVM UEVSCisJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgorCXNlbGVjdCBWSURFT01PREVfSEVMUEVS UworCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCisJc2VsZWN0IEJBQ0tMSUdIVF9MQ0Rf U1VQUE9SVAorCXNlbGVjdCBSRUdNQVBfTU1JTworCXNlbGVjdCBEUk1fS01TX0ZCX0hFTFBFUgor CXNlbGVjdCBGQl9TWVNfRklMTFJFQ1QKKwlzZWxlY3QgRkJfU1lTX0NPUFlBUkVBCisJc2VsZWN0 IEZCX1NZU19JTUFHRUJMSVQKKwlzZWxlY3QgRkJfU1lTX0ZPUFMKKwlzZWxlY3QgRFJNX1BBTkVM CisJaGVscAorCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFuIEZyZWVzY2FsZSBE Q1UgY2hpcHNldC4KKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxl ZCBmc2wtZGN1LWRybS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMzM2YjRhNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L01ha2VmaWxlCkBAIC0wLDAgKzEsNyBAQAorZnNsLWRjdS1kcm0teSA6PSBm c2xfZGN1X2RybV9kcnYubyBcCisJICAgICAgIGZzbF9kY3VfZHJtX2ttcy5vIFwKKwkgICAgICAg ZnNsX2RjdV9kcm1fY29ubmVjdG9yLm8gXAorCSAgICAgICBmc2xfZGN1X2RybV9wbGFuZS5vIFwK KwkgICAgICAgZnNsX2RjdV9kcm1fY3J0Yy5vIFwKKwkgICAgICAgZnNsX2RjdV9kcm1fZmJkZXYu bworb2JqLSQoQ09ORklHX0RSTV9GU0xfRENVKQkrPSBmc2wtZGN1LWRybS5vCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuYyBiL2RyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYjdkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuYwpAQCAtMCwwICsxLDE4MyBA QAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisg KgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgorCisjaW5j bHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIK KyNpbmNsdWRlICJmc2xfZGN1X2RybV9jb25uZWN0b3IuaCIKKworc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKK30K Kworc3RhdGljIGludAorZnNsX2RjdV9kcm1fZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCisJCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQoreworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2Rlc3Ryb3koc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rl cik7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcikKK3sKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9oZWxwZXJfZnVuY3MgZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLmVuYWJsZSA9IGZz bF9kY3VfZHJtX2VuY29kZXJfZW5hYmxlLAorCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1fZW5jb2Rl cl9kaXNhYmxlLAorCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21pY19j aGVjaywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZW5jb2Rl cl9mdW5jcyA9IHsKKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveSwKK307 CisKK2ludCBmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2 aWNlICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZnNsX2Rldi0+ZW5jb2RlcjsKKwlpbnQgcmV0Owor CisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOworCXJldCA9IGRybV9lbmNvZGVyX2luaXQo ZnNsX2Rldi0+ZGRldiwgZW5jb2RlciwgJmVuY29kZXJfZnVuY3MsCisJCQkgICAgICAgRFJNX01P REVfRU5DT0RFUl9MVkRTKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRybV9l bmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmVuY29kZXJfaGVscGVyX2Z1bmNzKTsKKwllbmNv ZGVyLT5jcnRjID0gY3J0YzsKKworCXJldHVybiAwOworfQorCisjZGVmaW5lIHRvX2ZzbF9kY3Vf Y29ubmVjdG9yKGNvbm5lY3RvcikgXAorCWNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCBm c2xfZGN1X2RybV9jb25uZWN0b3IsIGNvbm5lY3RvcikKKworc3RhdGljIGludCBmc2xfZGN1X2Ry bV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7 CisJc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqZnNsX2Nvbm5lY3RvcjsKKwlpbnQgbnVt X21vZGVzID0gMDsKKworCWZzbF9jb25uZWN0b3IgPSB0b19mc2xfZGN1X2Nvbm5lY3Rvcihjb25u ZWN0b3IpOworCWlmIChmc2xfY29ubmVjdG9yLT5wYW5lbCAmJiBmc2xfY29ubmVjdG9yLT5wYW5l bC0+ZnVuY3MgJiYKKwkgICAgZnNsX2Nvbm5lY3Rvci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMp CisJCW51bV9tb2RlcyA9IGZzbF9jb25uZWN0b3ItPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVzCisJ CQkJKGZzbF9jb25uZWN0b3ItPnBhbmVsKTsKKworCXJldHVybiBudW1fbW9kZXM7Cit9CisKK3N0 YXRpYyBpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl KQoreworCXJldHVybiBNT0RFX09LOworfQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoK K2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29uID0g dG9fZnNsX2RjdV9jb25uZWN0b3IoY29ubmVjdG9yKTsKKworCXJldHVybiBmc2xfY29uLT5lbmNv ZGVyOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jb25uZWN0b3JfZGVzdHJveShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rl cihjb25uZWN0b3IpOworCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworfQorCitz dGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cworZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rl dGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQoreworCXJl dHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX2Z1bmNzIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwku ZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAorCS5yZXNldCA9IGRybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwKKwkuZGV0ZWN0ID0gZnNsX2RjdV9kcm1fY29u bmVjdG9yX2RldGVjdCwKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nv bm5lY3Rvcl9tb2RlcywKKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95 LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9y X2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwku Z2V0X21vZGVzID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2dldF9tb2RlcywKKwkubW9kZV92YWxp ZCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorCS5iZXN0X2VuY29kZXIgPSBm c2xfZGN1X2RybV9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLAorfTsKKworaW50IGZzbF9kY3VfZHJt X2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJ CQkgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IgPSAmZnNsX2Rldi0+Y29ubmVjdG9yLmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKnBhbmVsX25vZGU7CisJaW50IHJldDsKKworCWZzbF9kZXYtPmNvbm5lY3Rvci5l bmNvZGVyID0gZW5jb2RlcjsKKworCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0g MDsKKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAwOworCisJcmV0ID0gZHJt X2Nvbm5lY3Rvcl9pbml0KGZzbF9kZXYtPmRkZXYsIGNvbm5lY3RvciwKKwkJCQkgJmZzbF9kY3Vf ZHJtX2Nvbm5lY3Rvcl9mdW5jcywKKwkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0xWRFMpOworCWlm IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJY29ubmVjdG9yLT5kcG1zID0gRFJNX01PREVf RFBNU19PRkY7CisJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmNvbm5lY3Rv cl9oZWxwZXJfZnVuY3MpOworCXJldCA9IGRybV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVjdG9y KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfY2xlYW51cDsKKworCXJldCA9IGRybV9tb2Rl X2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpOworCWlmIChyZXQg PCAwKQorCQlnb3RvIGVycl9zeXNmczsKKworCWNvbm5lY3Rvci0+ZW5jb2RlciA9IGVuY29kZXI7 CisKKwlkcm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZQorCQkoJmNvbm5lY3Rvci0+YmFzZSwg ZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcuZHBtc19wcm9wZXJ0eSwKKwkJRFJNX01PREVfRFBN U19PRkYpOworCisJcGFuZWxfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZnNsX2Rldi0+bnAsICJw YW5lbCIsIDApOworCWlmIChwYW5lbF9ub2RlKSB7CisJCWZzbF9kZXYtPmNvbm5lY3Rvci5wYW5l bCA9IG9mX2RybV9maW5kX3BhbmVsKHBhbmVsX25vZGUpOworCQlpZiAoIWZzbF9kZXYtPmNvbm5l Y3Rvci5wYW5lbCkKKwkJCXJldHVybiAtRVBST0JFX0RFRkVSOworCX0KKworCXJldCA9IGRybV9w YW5lbF9hdHRhY2goZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsLCBjb25uZWN0b3IpOworCWlmIChy ZXQpIHsKKwkJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIHBhbmVsXG4i KTsKKwkJZ290byBlcnJfc3lzZnM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl9zeXNmczoKKwlk cm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKK2Vycl9jbGVhbnVwOgorCWRybV9j b25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaCBiL2RyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjM2RiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaApAQCAtMCwwICsxLDMxIEBA CisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAq CisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ09OTkVDVE9SX0hfXwor I2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18KKworI2luY2x1ZGUgPGRybS9kcm1Q Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0 Yy5oIgorCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOworc3RydWN0IGZzbF9kY3VfZHJtX2Nv bm5lY3RvciB7CisJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOworCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKK307CisKK2ludCBm c2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CitpbnQgZnNsX2RjdV9kcm1f Y29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJ CSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOworCisjZW5kaWYgLyogX19GU0xfRENVX0RS TV9DT05ORUNUT1JfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9m c2xfZGN1X2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9j cnRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY4ODNhNQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYwpA QCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29u ZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3JlZ21h cC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBl ci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1f Y3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZzbF9kY3Vf ZHJtX3BsYW5lLmgiCisKKyNkZWZpbmUgdG9fZnNsX2RjdV9jcnRjKGMpCWNvbnRhaW5lcl9vZihj LCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY3J0YywgY3J0YykKKworc3RhdGljIHZvaWQgZnNsX2RjdV9k cm1fY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlID0gJmNydGMtPnN0YXRlLT5tb2RlOworCXVpbnQzMl90IGhicCwgaGZwLCBoc3csIHZicCwg dmZwLCB2c3csIGRpdiwgaW5kZXg7CisKKwlEQkcoIjogc2V0IG1vZGU6ICVkOlwiJXNcIiAlZCAl ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAweCV4IDB4JXgiLAorCSAgICBtb2RlLT5iYXNlLmlk LCBtb2RlLT5uYW1lLAorCSAgICBtb2RlLT52cmVmcmVzaCwgbW9kZS0+Y2xvY2ssCisJICAgIG1v ZGUtPmhkaXNwbGF5LCBtb2RlLT5oc3luY19zdGFydCwKKwkgICAgbW9kZS0+aHN5bmNfZW5kLCBt b2RlLT5odG90YWwsCisJICAgIG1vZGUtPnZkaXNwbGF5LCBtb2RlLT52c3luY19zdGFydCwKKwkg ICAgbW9kZS0+dnN5bmNfZW5kLCBtb2RlLT52dG90YWwsCisJICAgIG1vZGUtPnR5cGUsIG1vZGUt PmZsYWdzKTsKKworCWluZGV4ID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CisJZGl2ID0gKHVpbnQz Ml90KWNsa19nZXRfcmF0ZShmc2xfZGV2LT5jbGspIC8gbW9kZS0+Y2xvY2sgLyAxMDAwOworCisJ LyogQ29uZmlndXJlIHRpbWluZ3M6ICovCisJaGJwID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+aHN5 bmNfZW5kOworCWhmcCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN3 ID0gbW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJdmJwID0gbW9kZS0+dnRv dGFsIC0gbW9kZS0+dnN5bmNfZW5kOworCXZmcCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+ dmRpc3BsYXk7CisJdnN3ID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQ7CisK KwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSFNZTl9QQVJBLAorCQkgICAgIERD VV9IU1lOX1BBUkFfQlAoaGJwKSB8CisJCSAgICAgRENVX0hTWU5fUEFSQV9QVyhoc3cpIHwKKwkJ ICAgICBEQ1VfSFNZTl9QQVJBX0ZQKGhmcCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9WU1lOX1BBUkEsCisJCSAgICAgRENVX1ZTWU5fUEFSQV9CUCh2YnApIHwKKwkJICAg ICBEQ1VfVlNZTl9QQVJBX1BXKHZzdykgfAorCQkgICAgIERDVV9WU1lOX1BBUkFfRlAodmZwKSk7 CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJU1BfU0laRSwKKwkJICAgICBE Q1VfRElTUF9TSVpFX0RFTFRBX1kobW9kZS0+dmRpc3BsYXkpIHwKKwkJICAgICBEQ1VfRElTUF9T SVpFX0RFTFRBX1gobW9kZS0+aGRpc3BsYXkpKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVn bWFwLCBEQ1VfRElWX1JBVElPLCBkaXYpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOworfQorCitzdGF0aWMg Ym9vbCBmc2xfZGN1X2RybV9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAor CQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0 YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK K3sKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCisJCQkJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19iZWdp bihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJt X2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKK30KKworc3RhdGlj IHZvaWQgZnNsX2RjdV9kcm1fZGlzYWJsZV9jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBmc2xfZGN1X2RybV9jcnRj X2Z1bmNzID0geworCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCisJ LnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLAorCS5kZXN0cm95ID0g ZHJtX2NydGNfY2xlYW51cCwKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0 LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBs aWNhdGVfc3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJf Y3J0Y19kZXN0cm95X3N0YXRlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19o ZWxwZXJfZnVuY3MgZnNsX2RjdV9kcm1fY3J0Y19oZWxwZXJfZnVuY3MgPSB7CisJLmVuYWJsZSA9 IGZzbF9kY3VfZHJtX2NydGNfZW5hYmxlLAorCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1fZGlzYWJs ZV9jcnRjLAorCS5tb2RlX2ZpeHVwID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2ZpeHVwLAorCS5t b2RlX3NldF9ub2ZiID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3NldF9ub2ZiLAorCS5hdG9taWNf Y2hlY2sgPSBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19jaGVjaywKKwkuYXRvbWljX2JlZ2luID0g ZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfYmVnaW4sCisJLmF0b21pY19mbHVzaCA9IGZzbF9kY3Vf ZHJtX2NydGNfYXRvbWljX2ZsdXNoLAorfTsKKworaW50IGZzbF9kY3VfZHJtX2NydGNfY3JlYXRl KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpCit7CisJc3RydWN0IGRybV9wbGFu ZSAqcHJpbWFyeTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmZnNsX2Rldi0+Y3J0YzsKKwlp bnQgaSwgcmV0OworCisJcHJpbWFyeSA9IGZzbF9kY3VfZHJtX3ByaW1hcnlfY3JlYXRlX3BsYW5l KGZzbF9kZXYtPmRkZXYpOworCXJldCA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZnNsX2Rl di0+ZGRldiwgY3J0YywgcHJpbWFyeSwgTlVMTCwKKwkJCQkJJmZzbF9kY3VfZHJtX2NydGNfZnVu Y3MpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJZHJtX2NydGNfaGVscGVyX2Fk ZChjcnRjLCAmZnNsX2RjdV9kcm1fY3J0Y19oZWxwZXJfZnVuY3MpOworCisJZm9yIChpID0gMDsg aSA8IERDVV9UT1RBTF9MQVlFUl9OVU07IGkrKykgeworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+ cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8xKGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYt PnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMihpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2 LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzMoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl80KGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNShpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xf ZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzYoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl83KGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fOChpKSwgMCk7CisJCXJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzkoaSksIDApOworCQlpZiAob2ZfZGV2aWNl X2lzX2NvbXBhdGlibGUoZnNsX2Rldi0+bnAsICJmc2wsbHMxMDIxYS1kY3UiKSkKKwkJCXJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzEwKGkpLCAwKTsKKwl9CisJ cmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX1NZTl9QT0wsCisJCSAgICAgRENVX1NZ Tl9QT0xfSU5WX1ZTX0xPVyB8IERDVV9TWU5fUE9MX0lOVl9IU19MT1cpOworCXJlZ21hcF93cml0 ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9CR05ELCBEQ1VfQkdORF9SKDApIHwKKwkJICAgICBEQ1Vf QkdORF9HKDApIHwgRENVX0JHTkRfQigwKSk7CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21h cCwgRENVX0RDVV9NT0RFLAorCQkgICAgIERDVV9NT0RFX0JMRU5EX0lURVIoMSkgfCBEQ1VfTU9E RV9SQVNURVJfRU4pOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9USFJFU0hP TEQsCisJCSAgICAgRENVX1RIUkVTSE9MRF9MU19CRl9WUyhCRl9WU19WQUwpIHwKKwkJICAgICBE Q1VfVEhSRVNIT0xEX09VVF9CVUZfSElHSChCVUZfTUFYX1ZBTCkgfAorCQkgICAgIERDVV9USFJF U0hPTERfT1VUX0JVRl9MT1coQlVGX01JTl9WQUwpKTsKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfRENVX01PREUsCisJCQkgICBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNL LAorCQkJICAgRENVX01PREVfRENVX01PREUoRENVX01PREVfT0ZGKSk7CisJcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RFLCBEQ1VfVVBEQVRFX01PREVfUkVBRFJF Ryk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2NydGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM3ODVmCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5o CkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNv bmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RS TV9DUlRDX0hfXworI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fCisKKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorCitzdHJ1Y3QgZnNsX2RjdV9k cm1fZGV2aWNlOworCitpbnQgZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZSAqZnNsX2Rldik7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9f ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0N2YwOGYyZQotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jCkBAIC0wLDAgKzEsNDAwIEBA CisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAq CisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGlu dXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgorI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcG0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbV9y dW50aW1lLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvbWZk L3N5c2Nvbi5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKworI2luY2x1ZGUgImZzbF9kY3Vf ZHJtX2Rydi5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJmc2xf ZGN1X2RybV9rbXMuaCIKKworc3RhdGljIGludCBmc2xfZGN1X3VubG9hZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQoreworCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7CisJZHJtX3ZibGFu a19jbGVhbnVwKGRldik7CisJZHJtX2lycV91bmluc3RhbGwoZGV2KTsKKworCWRldi0+ZGV2X3By aXZhdGUgPSBOVUxMOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcmVnbWFwX2Nv bmZpZyBmc2xfZGN1X3JlZ21hcF9jb25maWcgPSB7CisJLnJlZ19iaXRzID0gMzIsCisJLnJlZ19z dHJpZGUgPSA0LAorCS52YWxfYml0cyA9IDMyLAorfTsKKworc3RhdGljIGludCBmc2xfZGN1X2J5 cGFzc190Y29uKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkgICAgICAg c3RydWN0IGRldmljZV9ub2RlICpucCkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnRjb25fbnA7 CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKKwlzdHJ1Y3QgY2xrICp0Y29uX2NsazsK KwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisKKwl0Y29uX25w ID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgInRjb24tY29udHJvbGxlciIsIDApOworCWlmICghdGNv bl9ucCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9k ZSh0Y29uX25wKTsKKwlpZiAoIXBkZXYpCisJCXJldHVybiAtRUlOVkFMOworCisJdGNvbl9jbGsg PSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgInRjb24iKTsKKwlpZiAoSVNfRVJSKHRjb25fY2xr KSkKKwkJcmV0dXJuIFBUUl9FUlIodGNvbl9jbGspOworCWNsa19wcmVwYXJlX2VuYWJsZSh0Y29u X2Nsayk7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9N RU0sIDApOworCWlmICghcmVzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWJhc2UgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGJhc2UpKQorCQly ZXR1cm4gUFRSX0VSUihiYXNlKTsKKworCWZzbF9kZXYtPnRjb25fcmVnbWFwID0gZGV2bV9yZWdt YXBfaW5pdF9tbWlvKCZwZGV2LT5kZXYsCisJCQliYXNlLCAmZnNsX2RjdV9yZWdtYXBfY29uZmln KTsKKwlpZiAoSVNfRVJSKGZzbF9kZXYtPnRjb25fcmVnbWFwKSkgeworCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJyZWdtYXAgaW5pdCBmYWlsZWRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihmc2xfZGV2 LT50Y29uX3JlZ21hcCk7CisJfQorCisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnRjb25fcmVnbWFw LCBUQ09OX0NUUkwxLCBUQ09OX0JZUEFTU19FTkFCTEUpOworCXJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZCBkY3VfcGl4Y2xrX2VuYWJsZSh2b2lkKQoreworCXN0cnVjdCByZWdtYXAgKnNjZmdf cmVnbWFwOworCisJc2NmZ19yZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRp YmxlKCJmc2wsbHMxMDIxYS1zY2ZnIik7CisJaWYgKElTX0VSUihzY2ZnX3JlZ21hcCkpIHsKKwkJ cHJfZXJyKCJObyBzeXNjZmcgcGhhbmRsZSBzcGVjaWZpZWRcbiIpOworCQlyZXR1cm47CisJfQor CisJcmVnbWFwX3dyaXRlKHNjZmdfcmVnbWFwLCBTQ0ZHX1BJWENMS0NSLCBQWENLX0VOQUJMRSk7 Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1faXJxX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2 aWNlKGRldi0+ZGV2KTsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgaW50X21hc2s7CisJaW50IHJldDsKKworCXJl dCA9IGRybV9pcnFfaW5zdGFsbChkZXYsIHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCkpOworCWlm IChyZXQgPCAwKQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5zdGFsbCBJUlEg aGFuZGxlclxuIik7CisKKwlkZXYtPmlycV9lbmFibGVkID0gdHJ1ZTsKKwlkZXYtPnZibGFua19k aXNhYmxlX2FsbG93ZWQgPSB0cnVlOworCisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0lOVF9TVEFUVVMsIDApOworCXJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lO VF9NQVNLLCAmaW50X21hc2spOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9J TlRfTUFTSywgaW50X21hc2sgJgorCQkgICAgIH5EQ1VfSU5UX01BU0tfVkJMQU5LKTsKKwlyZWdt YXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsIERDVV9VUERBVEVfTU9E RV9SRUFEUkVHKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfbG9hZChz dHJ1Y3QgZHJtX2RldmljZSAqZGRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSBkZGV2LT5kZXY7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9 IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZz bF9kZXY7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCWlu dCByZXQ7CisKKwlmc2xfZGV2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpmc2xfZGV2KSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZzbF9k ZXYtPmRldiA9IGRldjsKKwlmc2xfZGV2LT5kZGV2ID0gZGRldjsKKwlmc2xfZGV2LT5ucCA9IGRl di0+b2Zfbm9kZTsKKwlkZGV2LT5kZXZfcHJpdmF0ZSA9IGZzbF9kZXY7CisJZGV2X3NldF9kcnZk YXRhKGRldiwgZnNsX2Rldik7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwg SU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVzKSB7CisJCWRldl9lcnIoZGV2LCAiY291bGQg bm90IGdldCBtZW1vcnkgSU8gcmVzb3VyY2VcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisK KwliYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGJh c2UpKSB7CisJCXJldCA9IFBUUl9FUlIoYmFzZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJZnNs X2Rldi0+Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImRjdSIpOworCWlmIChJU19FUlIoZnNsX2Rl di0+Y2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKGZzbF9kZXYtPmNsayk7CisJCWRldl9lcnIoZGV2 LCAiY291bGQgbm90IGdldCBjbG9ja1xuIik7CisJCXJldHVybiByZXQ7CisJfQorCWNsa19wcmVw YXJlX2VuYWJsZShmc2xfZGV2LT5jbGspOworCWZzbF9kZXYtPnJlZ21hcCA9IGRldm1fcmVnbWFw X2luaXRfbW1pbyhkZXYsIGJhc2UsCisJCQkmZnNsX2RjdV9yZWdtYXBfY29uZmlnKTsKKwlpZiAo SVNfRVJSKGZzbF9kZXYtPnJlZ21hcCkpIHsKKwkJZGV2X2VycihkZXYsICJyZWdtYXAgaW5pdCBm YWlsZWRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihmc2xfZGV2LT5yZWdtYXApOworCX0KKworCS8q IFB1dCBUQ09OIGluIGJ5cGFzcyBtb2RlLCBzbyB0aGUgaW5wdXQgc2lnbmFscyBmcm9tIERDVSBh cmUgcGFzc2VkCisJICogdGhyb3VnaCBUQ09OIHVuY2hhbmdlZCAqLworCWZzbF9kY3VfYnlwYXNz X3Rjb24oZnNsX2RldiwgZnNsX2Rldi0+bnApOworCisJaWYgKG9mX2RldmljZV9pc19jb21wYXRp YmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCWRjdV9waXhjbGtfZW5hYmxl KCk7CisJcmV0ID0gZnNsX2RjdV9kcm1fbW9kZXNldF9pbml0KGZzbF9kZXYpOworCWlmIChyZXQg PCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgbW9kZSBzZXR0aW5n XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZGRldiwg ZGRldi0+bW9kZV9jb25maWcubnVtX2NydGMpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIo ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgdmJsYW5rXG4iKTsKKwkJZ290byBkb25lOworCX0K KworCXJldCA9IGZzbF9kY3VfZHJtX2lycV9pbml0KGRkZXYpOworCWlmIChyZXQgPCAwKQorCQln b3RvIGRvbmU7CisKKwlmc2xfZGN1X2ZiZGV2X2luaXQoZGRldik7CisKKwlyZXR1cm4gMDsKK2Rv bmU6CisJaWYgKHJldCkKKwkJZnNsX2RjdV91bmxvYWQoZGRldik7CisKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBm c2xfZGN1X2RybV9pcnEoaW50IGlycSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBhcmc7CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJdW5zaWduZWQgaW50IGludF9zdGF0dXM7CisKKwlyZWdtYXBfcmVhZChm c2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfU1RBVFVTLCAmaW50X3N0YXR1cyk7CisJaWYgKGludF9z dGF0dXMgJiBEQ1VfSU5UX1NUQVRVU19WQkxBTkspCisJCWRybV9oYW5kbGVfdmJsYW5rKGRldiwg MCk7CisKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgMHhm ZmZmZmZmZik7CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RF LCBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisK K3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgY3J0YykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9k cm1fZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCit7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZzbF9kY3VfZHJtX2ZvcHMg PSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGRybV9vcGVuLAorCS5yZWxl YXNlCT0gZHJtX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsCT0gZHJtX2lvY3RsLAorI2lmZGVm IENPTkZJR19DT01QQVQKKwkuY29tcGF0X2lvY3RsCT0gZHJtX2NvbXBhdF9pb2N0bCwKKyNlbmRp ZgorCS5wb2xsCQk9IGRybV9wb2xsLAorCS5yZWFkCQk9IGRybV9yZWFkLAorCS5sbHNlZWsJCT0g bm9fbGxzZWVrLAorCS5tbWFwCQk9IGRybV9nZW1fY21hX21tYXAsCit9OworCitzdGF0aWMgc3Ry dWN0IGRybV9kcml2ZXIgZnNsX2RjdV9kcm1fZHJpdmVyID0geworCS5kcml2ZXJfZmVhdHVyZXMJ PSBEUklWRVJfSEFWRV9JUlEgfCBEUklWRVJfR0VNIHwgRFJJVkVSX01PREVTRVQKKwkJCQl8IERS SVZFUl9QUklNRSB8IERSSVZFUl9BVE9NSUMsCisJLmxvYWQJCQk9IGZzbF9kY3VfbG9hZCwKKwku dW5sb2FkCQkJPSBmc2xfZGN1X3VubG9hZCwKKwkucHJlY2xvc2UJCT0gZnNsX2RjdV9kcm1fcHJl Y2xvc2UsCisJLmlycV9oYW5kbGVyCQk9IGZzbF9kY3VfZHJtX2lycSwKKwkuZ2V0X3ZibGFua19j b3VudGVyCT0gZHJtX3ZibGFua19jb3VudCwKKwkuZW5hYmxlX3ZibGFuawkJPSBmc2xfZGN1X2Ry bV9lbmFibGVfdmJsYW5rLAorCS5kaXNhYmxlX3ZibGFuawkJPSBmc2xfZGN1X2RybV9kaXNhYmxl X3ZibGFuaywKKwkuZ2VtX2ZyZWVfb2JqZWN0CT0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCisJ LmdlbV92bV9vcHMJCT0gJmRybV9nZW1fY21hX3ZtX29wcywKKwkucHJpbWVfaGFuZGxlX3RvX2Zk CT0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCisJLnByaW1lX2ZkX3RvX2hhbmRsZQk9IGRy bV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAorCS5nZW1fcHJpbWVfaW1wb3J0CT0gZHJtX2dlbV9w cmltZV9pbXBvcnQsCisJLmdlbV9wcmltZV9leHBvcnQJPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwK KwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJs ZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9y dF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX3ZtYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdm1hcCwK KwkuZ2VtX3ByaW1lX3Z1bm1hcAk9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwKKwkuZ2VtX3By aW1lX21tYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCwKKwkuZHVtYl9jcmVhdGUJCT0gZHJt X2dlbV9jbWFfZHVtYl9jcmVhdGUsCisJLmR1bWJfbWFwX29mZnNldAk9IGRybV9nZW1fY21hX2R1 bWJfbWFwX29mZnNldCwKKwkuZHVtYl9kZXN0cm95CQk9IGRybV9nZW1fZHVtYl9kZXN0cm95LAor CS5mb3BzCQkJPSAmZnNsX2RjdV9kcm1fZm9wcywKKwkubmFtZQkJCT0gImZzbC1kY3UtZHJtIiwK KwkuZGVzYwkJCT0gIkZyZWVzY2FsZSBEQ1UgRFJNIiwKKwkuZGF0ZQkJCT0gIjIwMTUwMjEzIiwK KwkubWFqb3IJCQk9IDEsCisJLm1pbm9yCQkJPSAwLAorfTsKKworI2lmZGVmIENPTkZJR19QTV9T TEVFUAorc3RhdGljIHZvaWQgZGN1X3BpeGNsa19kaXNhYmxlKHZvaWQpCit7CisJc3RydWN0IHJl Z21hcCAqc2NmZ19yZWdtYXA7CisKKwlzY2ZnX3JlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3Vw X2J5X2NvbXBhdGlibGUoImZzbCxsczEwMjFhLXNjZmciKTsKKwlpZiAoSVNfRVJSKHNjZmdfcmVn bWFwKSkgeworCQlwcl9lcnIoIk5vIHN5c2NmZyBwaGFuZGxlIHNwZWNpZmllZFxuIik7CisJCXJl dHVybjsKKwl9CisKKwlyZWdtYXBfd3JpdGUoc2NmZ19yZWdtYXAsIFNDRkdfUElYQ0xLQ1IsIFBY Q0tfRElTQUJMRSk7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcG1fc3VzcGVuZChzdHJ1 Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJaWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gMDsKKwor CWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShmc2xfZGV2LT5ucCwgImZzbCxsczEwMjFhLWRj dSIpKQorCQlkY3VfcGl4Y2xrX2Rpc2FibGUoKTsKKworCWRybV9rbXNfaGVscGVyX3BvbGxfZGlz YWJsZShmc2xfZGV2LT5kZGV2KTsKKwlyZWdjYWNoZV9jYWNoZV9vbmx5KGZzbF9kZXYtPnJlZ21h cCwgdHJ1ZSk7CisJcmVnY2FjaGVfbWFya19kaXJ0eShmc2xfZGV2LT5yZWdtYXApOworCWNsa19k aXNhYmxlX3VucHJlcGFyZShmc2xfZGV2LT5jbGspOworCisJaWYgKGZzbF9kZXYtPnRjb25fcmVn bWFwKSB7CisJCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rldi0+dGNvbl9yZWdtYXAsIHRydWUp OworCQlyZWdjYWNoZV9tYXJrX2RpcnR5KGZzbF9kZXYtPnRjb25fcmVnbWFwKTsKKwkJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKGZzbF9kZXYtPnRjb25fY2xrKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQor eworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKKworCWlmICghZnNsX2RldikKKwkJcmV0dXJuIDA7CisKKwkvKiBFbmFibGUgY2xvY2tz IGFuZCByZXN0b3JlIGFsbCByZWdpc3RlcnMgKi8KKwlpZiAoZnNsX2Rldi0+dGNvbl9yZWdtYXAp IHsKKwkJY2xrX3ByZXBhcmVfZW5hYmxlKGZzbF9kZXYtPnRjb25fY2xrKTsKKwkJcmVnY2FjaGVf Y2FjaGVfb25seShmc2xfZGV2LT50Y29uX3JlZ21hcCwgZmFsc2UpOworCQlyZWdjYWNoZV9zeW5j KGZzbF9kZXYtPnRjb25fcmVnbWFwKTsKKwl9CisKKwljbGtfcHJlcGFyZV9lbmFibGUoZnNsX2Rl di0+Y2xrKTsKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2VuYWJsZShmc2xfZGV2LT5kZGV2KTsKKwly ZWdjYWNoZV9jYWNoZV9vbmx5KGZzbF9kZXYtPnJlZ21hcCwgZmFsc2UpOworCXJlZ2NhY2hlX3N5 bmMoZnNsX2Rldi0+cmVnbWFwKTsKKworCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShmc2xf ZGV2LT5ucCwgImZzbCxsczEwMjFhLWRjdSIpKQorCQlkY3VfcGl4Y2xrX2VuYWJsZSgpOworCisJ cmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZz bF9kY3VfZHJtX3BtX29wcyA9IHsKKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhmc2xfZGN1X2Ry bV9wbV9zdXNwZW5kLCBmc2xfZGN1X2RybV9wbV9yZXN1bWUpCit9OworCitzdGF0aWMgaW50IGZz bF9kY3VfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0 IGRybV9kcml2ZXIgKmRyaXZlciA9ICZmc2xfZGN1X2RybV9kcml2ZXI7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRybTsKKwlpbnQgZXJyOworCisJZHJtID0gZHJtX2Rldl9hbGxvYyhkcml2ZXIsICZw ZGV2LT5kZXYpOworCWlmICghZHJtKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRybV9kZXZfc2V0 X3VuaXF1ZShkcm0sIGRldl9uYW1lKCZwZGV2LT5kZXYpKTsKKworCWVyciA9IGRybV9kZXZfcmVn aXN0ZXIoZHJtLCAwKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byB1bnJlZjsKKworCURSTV9JTkZP KCJJbml0aWFsaXplZCAlcyAlZC4lZC4lZCAlcyBvbiBtaW5vciAlZFxuIiwgZHJpdmVyLT5uYW1l LAorCQkgZHJpdmVyLT5tYWpvciwgZHJpdmVyLT5taW5vciwgZHJpdmVyLT5wYXRjaGxldmVsLAor CQkgZHJpdmVyLT5kYXRlLCBkcm0tPnByaW1hcnktPmluZGV4KTsKKworCXJldHVybiAwOworCit1 bnJlZjoKKwlkcm1fZGV2X3VucmVmKGRybSk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGlu dCBmc2xfZGN1X2RybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlz dHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7CisKKwlkcm1fcHV0X2Rldihmc2xfZGV2LT5kZGV2KTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBmc2xfZGN1X29mX21hdGNoW10gPSB7 CisJCXsgLmNvbXBhdGlibGUgPSAiZnNsLGxzMTAyMWEtZGN1IiwgfSwKKwkJeyAuY29tcGF0aWJs ZSA9ICJmc2wsdmY2MTAtZGN1IiwgfSwKKwkJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUo b2YsIGZzbF9kY3Vfb2ZfbWF0Y2gpOworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBm c2xfZGN1X2RybV9wbGF0Zm9ybV9kcml2ZXIgPSB7CisJLnByb2JlCQk9IGZzbF9kY3VfZHJtX3By b2JlLAorCS5yZW1vdmUJCT0gZnNsX2RjdV9kcm1fcmVtb3ZlLAorCS5kcml2ZXIJCT0geworCQku b3duZXIJPSBUSElTX01PRFVMRSwKKwkJLm5hbWUJPSAiZnNsLGRjdSIsCisJCS5wbQk9ICZmc2xf ZGN1X2RybV9wbV9vcHMsCisJCS5vZl9tYXRjaF90YWJsZSA9IGZzbF9kY3Vfb2ZfbWF0Y2gsCisJ fSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJp dmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJGcmVlc2NhbGUgRENVIERSTSBEcml2ZXIiKTsK K01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fZHJ2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2NzQ0ZQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5o CkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWlj b25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9E Uk1fRFJWX0hfXworI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18KKworI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8c3Rk ZGVmLmg+CisjaW5jbHVkZSA8ZHJtL2RybS5oPgorI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVy Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9k cm1fZmJfY21hX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgorI2lu Y2x1ZGUgImZzbF9kY3VfZHJtX3BsYW5lLmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY29ubmVj dG9yLmgiCisKKyNkZWZpbmUgRENVX0RDVV9NT0RFCQkJMHgwMDEwCisjZGVmaW5lIERDVV9NT0RF X0JMRU5EX0lURVIoeCkJCSgoeCkgPDwgMjApCisjZGVmaW5lIERDVV9NT0RFX1JBU1RFUl9FTgkJ QklUKDE0KQorI2RlZmluZSBEQ1VfTU9ERV9EQ1VfTU9ERSh4KQkJKHgpCisjZGVmaW5lIERDVV9N T0RFX0RDVV9NT0RFX01BU0sJCTB4MDMKKyNkZWZpbmUgRENVX01PREVfT0ZGCQkJMAorI2RlZmlu ZSBEQ1VfTU9ERV9OT1JNQUwJCQkxCisjZGVmaW5lIERDVV9NT0RFX1RFU1QJCQkyCisjZGVmaW5l IERDVV9NT0RFX0NPTE9SQkFSCQkzCisKKyNkZWZpbmUgRENVX0JHTkQJCQkweDAwMTQKKyNkZWZp bmUgRENVX0JHTkRfUih4KQkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9CR05EX0coeCkJCQko KHgpIDw8IDgpCisjZGVmaW5lIERDVV9CR05EX0IoeCkJCQkoeCkKKworI2RlZmluZSBEQ1VfRElT UF9TSVpFCQkJMHgwMDE4CisjZGVmaW5lIERDVV9ESVNQX1NJWkVfREVMVEFfWSh4KQkoKHgpIDw8 IDE2KQorLypSZWdpc2l0ZXIgdmFsdWUgMS8xNiBvZiBob3Jpem9udGFsIHJlc29sdXRpb24qLwor I2RlZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1goeCkJKCh4KSA+PiA0KQorCisjZGVmaW5lIERD VV9IU1lOX1BBUkEJCQkweDAwMWMKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9CUCh4KQkJKCh4KSA8 PCAyMikKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKKyNkZWZpbmUg RENVX0hTWU5fUEFSQV9GUCh4KQkJKHgpCisKKyNkZWZpbmUgRENVX1ZTWU5fUEFSQQkJCTB4MDAy MAorI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQorI2RlZmluZSBEQ1Vf VlNZTl9QQVJBX1BXKHgpCQkoKHgpIDw8IDExKQorI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0ZQKHgp CQkoeCkKKworI2RlZmluZSBEQ1VfU1lOX1BPTAkJCTB4MDAyNAorI2RlZmluZSBEQ1VfU1lOX1BP TF9JTlZfUFhDS19GQUxMCSgwIDw8IDYpCisjZGVmaW5lIERDVV9TWU5fUE9MX05FR19SRU1BSU4J CSgwIDw8IDUpCisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9WU19MT1cJCUJJVCgxKQorI2RlZmlu ZSBEQ1VfU1lOX1BPTF9JTlZfSFNfTE9XCQlCSVQoMCkKKworI2RlZmluZSBEQ1VfVEhSRVNIT0xE CQkJMHgwMDI4CisjZGVmaW5lIERDVV9USFJFU0hPTERfTFNfQkZfVlMoeCkJKCh4KSA8PCAxNikK KyNkZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJR0goeCkJKCh4KSA8PCA4KQorI2RlZmlu ZSBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfTE9XKHgpCSh4KQorI2RlZmluZSBCRl9WU19WQUwJCQkw eDAzCisjZGVmaW5lIEJVRl9NQVhfVkFMCQkJMHg3OAorI2RlZmluZSBCVUZfTUlOX1ZBTAkJCTB4 MGEKKworI2RlZmluZSBEQ1VfSU5UX1NUQVRVUwkJCTB4MDAyQworI2RlZmluZSBEQ1VfSU5UX1NU QVRVU19WU1lOQwkJQklUKDApCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1VORFJVTgkJQklUKDEp CisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0xTQkZWUwkJQklUKDIpCisjZGVmaW5lIERDVV9JTlRf U1RBVFVTX1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0NSQ1JFQURZCQlC SVQoNCkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfQ1JDT1ZFUkZMT1cJQklUKDUpCisjZGVmaW5l IERDVV9JTlRfU1RBVFVTX1AxRklGT0xPCQlCSVQoNikKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNf UDFGSUZPSEkJCUJJVCg3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMkZJRk9MTwkJQklUKDgp CisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AyRklGT0hJCQlCSVQoOSkKKyNkZWZpbmUgRENVX0lO VF9TVEFUVVNfUFJPR0VORAkJQklUKDEwKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19JUE1FUlJP UgkJQklUKDExKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19MWVJUUkFOUwkJQklUKDEyKQorI2Rl ZmluZSBEQ1VfSU5UX1NUQVRVU19ETUFUUkFOUwkJQklUKDE0KQorI2RlZmluZSBEQ1VfSU5UX1NU QVRVU19QM0ZJRk9MTwkJQklUKDE2KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QM0ZJRk9ISQkJ QklUKDE3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9MTwkJQklUKDE4KQorI2RlZmlu ZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9ISQkJQklUKDE5KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRV U19QMUVNUFRZCQlCSVQoMjYpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AyRU1QVFkJCUJJVCgy NykKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDNFTVBUWQkJQklUKDI4KQorI2RlZmluZSBEQ1Vf SU5UX1NUQVRVU19QNEVNUFRZCQlCSVQoMjkpCisKKyNkZWZpbmUgRENVX0lOVF9NQVNLCQkJMHgw MDMwCisjZGVmaW5lIERDVV9JTlRfTUFTS19WU1lOQwkJQklUKDApCisjZGVmaW5lIERDVV9JTlRf TUFTS19VTkRSVU4JCUJJVCgxKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfTFNCRlZTCQlCSVQoMikK KyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERDVV9JTlRfTUFT S19DUkNSRUFEWQkJQklUKDQpCisjZGVmaW5lIERDVV9JTlRfTUFTS19DUkNPVkVSRkxPVwlCSVQo NSkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AxRklGT0xPCQlCSVQoNikKKyNkZWZpbmUgRENVX0lO VF9NQVNLX1AxRklGT0hJCQlCSVQoNykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklGT0xPCQlC SVQoOCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklGT0hJCQlCSVQoOSkKKyNkZWZpbmUgRENV X0lOVF9NQVNLX1BST0dFTkQJCUJJVCgxMCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX0lQTUVSUk9S CQlCSVQoMTEpCisjZGVmaW5lIERDVV9JTlRfTUFTS19MWVJUUkFOUwkJQklUKDEyKQorI2RlZmlu ZSBEQ1VfSU5UX01BU0tfRE1BVFJBTlMJCUJJVCgxNCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1Az RklGT0xPCQlCSVQoMTYpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QM0ZJRk9ISQkJQklUKDE3KQor I2RlZmluZSBEQ1VfSU5UX01BU0tfUDRGSUZPTE8JCUJJVCgxOCkKKyNkZWZpbmUgRENVX0lOVF9N QVNLX1A0RklGT0hJCQlCSVQoMTkpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMUVNUFRZCQlCSVQo MjYpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMkVNUFRZCQlCSVQoMjcpCisjZGVmaW5lIERDVV9J TlRfTUFTS19QM0VNUFRZCQlCSVQoMjgpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QNEVNUFRZCQlC SVQoMjkpCisKKyNkZWZpbmUgRENVX0RJVl9SQVRJTwkJCTB4MDA1NAorCisjZGVmaW5lIERDVV9V UERBVEVfTU9ERQkJCTB4MDBjYworI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfTU9ERQkJQklUKDMx KQorI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRwkJQklUKDMwKQorCisjZGVmaW5lIERD VV9EQ0ZCX01BWAkJCTB4MzAwCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMSh4KQkJKDB4MjAw ICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMV9IRUlHSFQoeCkJKCh4KSA8 PCAxNikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMV9XSURUSCh4KQkoeCkKKworI2RlZmluZSBE Q1VfQ1RSTERFU0NMTl8yKHgpCQkoMHgyMDQgKyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl8yX1BPU1koeCkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMl9Q T1NYKHgpCSh4KQorCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzMoeCkJCSgweDIwOCArICh4KSAq IDB4NDApCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNCh4KQkJKDB4MjBjICsgKHgpICogMHg0 MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9FTgkJQklUKDMxKQorI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl80X1RJTEVfRU4JQklUKDMwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0RBVEFf U0VMX0NMVVQJQklUKDI5KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1NBRkVUWV9FTglCSVQo MjgpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfVFJBTlMoeCkJKCh4KSA8PCAyMCkKKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fNF9CUFAoeCkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9DVFJM REVTQ0xOXzRfUkxFX0VOCQlCSVQoMTUpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfTFVPRkZT KHgpCSgoeCkgPDwgNCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9CQl9PTgkJQklUKDIpCisj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfQUIoeCkJCSh4KQorCisjZGVmaW5lIERDVV9DVFJMREVT Q0xOXzUoeCkJCSgweDIxMCArICh4KSAqIDB4NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzVf Q0tNQVhfUih4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0co eCkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0IoeCkJKHgpCisK KyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNih4KQkJKDB4MjE0ICsgKHgpICogMHg0MCkKKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fNl9DS01JTl9SKHgpCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9D VFJMREVTQ0xOXzZfQ0tNSU5fRyh4KQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzZfQ0tNSU5fQih4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl83KHgpCQkoMHgyMTgg KyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl83X1RJTEVfVkVSKHgpCSgoeCkg PDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzdfVElMRV9IT1IoeCkJKHgpCisKKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fOCh4KQkJKDB4MjFjICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fOF9GR19GQ09MT1IoeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5f OSh4KQkJKDB4MjIwICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOV9CR19C Q09MT1IoeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMTAoeCkJCSgweDIyNCArICh4 KSAqIDB4NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BPU1RfU0tJUCh4KQkoKHgpIDw8 IDE2KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8xMF9QUkVfU0tJUCh4KQkoeCkKKworI2lmZGVm IENPTkZJR19TT0NfVkY2MTAKKyNkZWZpbmUgRENVX1RPVEFMX0xBWUVSX05VTSAgICAgICAgICAg ICA2NAorI2RlZmluZSBEQ1VfTEFZRVJfTlVNX01BWCAgICAgICAgICAgICAgIDYKKyNlbHNlCisj ZGVmaW5lIERDVV9UT1RBTF9MQVlFUl9OVU0gICAgICAgICAgICAgMTYKKyNkZWZpbmUgRENVX0xB WUVSX05VTV9NQVggICAgICAgICAgICAgICA0CisjZW5kaWYKKworI2RlZmluZSBGU0xfRENVX1JH QjU2NQkJCTQKKyNkZWZpbmUgRlNMX0RDVV9SR0I4ODgJCQk1CisjZGVmaW5lIEZTTF9EQ1VfQVJH Qjg4ODgJCTYKKyNkZWZpbmUgRlNMX0RDVV9BUkdCMTU1NQkJMTEKKyNkZWZpbmUgRlNMX0RDVV9B UkdCNDQ0NAkJMTIKKyNkZWZpbmUgRlNMX0RDVV9ZVVY0MjIJCQkxNAorCisjZGVmaW5lIFRDT05f Q1RSTDEJCQkweDAwMDAKKyNkZWZpbmUgVENPTl9CWVBBU1NfRU5BQkxFCQlCSVQoMjkpCisKKyNk ZWZpbmUgU0NGR19QSVhDTEtDUgkJCTB4MjgKKyNkZWZpbmUgUFhDS19FTkFCTEUJCQlCSVQoMzEp CisjZGVmaW5lIFBYQ0tfRElTQUJMRQkJCTAKKworI2RlZmluZSBEQkcoZm10LCAuLi4pIERSTV9E RUJVRyhmbXQiXG4iLCAjI19fVkFfQVJHU19fKQorCitzdHJ1Y3QgY2xrOworc3RydWN0IGRldmlj ZTsKK3N0cnVjdCBkcm1fZGV2aWNlOworCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlIHsKKwlz dHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKwlzdHJ1Y3QgcmVn bWFwICpyZWdtYXA7CisJc3RydWN0IHJlZ21hcCAqdGNvbl9yZWdtYXA7CisJdW5zaWduZWQgaW50 IGlycTsKKwlzdHJ1Y3QgY2xrICpjbGs7CisJc3RydWN0IGNsayAqdGNvbl9jbGs7CisJLypwcm90 ZWN0cyBoYXJkd2FyZSByZWdpc3RlciovCisJc3BpbmxvY2tfdCBpcnFfbG9jazsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGRldjsKKwlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXY7CisJc3RydWN0 IGRybV9jcnRjIGNydGM7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CisJc3RydWN0IGZz bF9kY3VfZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cit9OworCit2b2lkIGZzbF9kY3VfZmJkZXZf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKworI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1f RFJWX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhlZjBlMQotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKQEAgLTAs MCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9y LCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICog dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQK KyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgor ICoKKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCisvKiBpbml0aWFs aXplIGZiZGV2IGhlbHBlciAqLwordm9pZCBmc2xfZGN1X2ZiZGV2X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2 X2dldF9kcnZkYXRhKGRldi0+ZGV2KTsKKworCWZzbF9kZXYtPmZiZGV2ID0gZHJtX2ZiZGV2X2Nt YV9pbml0KGRldiwgMjQsIDEsIDEpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9rbXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGUyMWM2OQot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2tt cy5jCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2Vt aWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIK KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNs X2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgorI2lu Y2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2Rl X2NvbmZpZ19mdW5jcyBmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKKwkuZmJfY3Jl YXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCisJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVs cGVyX2NoZWNrLAorCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAor fTsKKworaW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2 aWNlICpmc2xfZGV2KQoreworCWRybV9tb2RlX2NvbmZpZ19pbml0KGZzbF9kZXYtPmRkZXYpOwor CisJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKKwlmc2xfZGV2LT5k ZGV2LT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsKKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2Nv bmZpZy5tYXhfd2lkdGggPSAyMDMxOworCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLm1heF9o ZWlnaHQgPSAyMDQ3OworCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLmZ1bmNzID0gJmZzbF9k Y3VfZHJtX21vZGVfY29uZmlnX2Z1bmNzOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGZz bF9kZXYtPmRkZXYpOworCWZzbF9kY3VfZHJtX2NydGNfY3JlYXRlKGZzbF9kZXYpOworCWZzbF9k Y3VfZHJtX2VuY29kZXJfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5jcnRjKTsKKwlmc2xfZGN1 X2RybV9jb25uZWN0b3JfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5lbmNvZGVyKTsKKwlkcm1f bW9kZV9jb25maWdfcmVzZXQoZnNsX2Rldi0+ZGRldik7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oIGIvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYjliZDI5OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiBDb3B5 cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2Fs ZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9LTVNfSF9fCisjZGVmaW5lIF9fRlNMX0RDVV9E Uk1fS01TX0hfXworCitpbnQgZnNsX2RjdV9kcm1fbW9kZXNldF9pbml0KHN0cnVjdCBmc2xfZGN1 X2RybV9kZXZpY2UgKmZzbF9kZXYpOworCisjZW5kaWYgLyogX19GU0xfRENVX0RSTV9LTVNfSF9f ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Y4NzljCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwpAQCAtMCwwICsxLDE5 NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMu CisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1 ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9o ZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3Bs YW5lX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorCisjaW5j bHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fa21zLmgiCisj aW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKworI2RlZmluZSB0b19mc2xfZGN1X3BsYW5l KHBsYW5lKSBcCisJY29udGFpbmVyX29mKHBsYW5lLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUs IHBsYW5lKQorCitzdGF0aWMgaW50Citmc2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK KwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKQoreworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZAorZnNsX2RjdV9kcm1fcGxhbmVfY2xlYW51cF9mYihz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKK3sK K30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCisJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19k aXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgICAgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKK30KKwordm9pZCBmc2xfZGN1X2RybV9wbGFuZV9hdG9t aWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICAgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZz bF9kZXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpzdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lLT5zdGF0ZS0+ZmI7CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqZ2VtOworCXN0cnVj dCBmc2xfZGN1X2RybV9wbGFuZSAqZnNsX3BsYW5lID0gdG9fZnNsX2RjdV9wbGFuZShwbGFuZSk7 CisJdTMyIGluZGV4LCBhbHBoYSwgYnBwOworCisJaWYgKCFmYikKKwkJcmV0dXJuOworCisJaW5k ZXggPSBmc2xfcGxhbmUtPmluZGV4OworCWdlbSA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIs IDApOworCisJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1JH QjU2NToKKwkJYnBwID0gRlNMX0RDVV9SR0I1NjU7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7 CisJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKKwkJYnBwID0gRlNMX0RDVV9SR0I4ODg7CisJCWFs cGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCQlicHAg PSBGU0xfRENVX0FSR0I4ODg4OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJN X0ZPUk1BVF9CR1JBNDQ0NDoKKwkJYnBwID0gRlNMX0RDVV9BUkdCNDQ0NDsKKwkJYWxwaGEgPSAw eGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfQVJHQjE1NTU6CisJCWJwcCA9IEZTTF9E Q1VfQVJHQjE1NTU7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFU X1lVVjQyMjoKKwkJYnBwID0gRlNMX0RDVV9ZVVY0MjI7CisJCWFscGhhID0gMHhmZjsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuOworCX0KKworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9DVFJMREVTQ0xOXzEoaW5kZXgpLAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzFf SEVJR0hUKHN0YXRlLT5jcnRjX2gpIHwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8xX1dJRFRIKHN0 YXRlLT5jcnRjX3cpKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERF U0NMTl8yKGluZGV4KSwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8yX1BPU1koc3RhdGUtPmNydGNf eSkgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzJfUE9TWChzdGF0ZS0+Y3J0Y194KSk7CisJcmVn bWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMyhpbmRleCksIGdlbS0+ cGFkZHIpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzQo aW5kZXgpLAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzRfRU4gfAorCQkgICAgIERDVV9DVFJMREVT Q0xOXzRfVFJBTlMoYWxwaGEpIHwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X0JQUChicHApIHwK KwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X0FCKDApKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+ cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl81KGluZGV4KSwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl81 X0NLTUFYX1IoMHhGRikgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfRygweEZGKSB8 CisJCSAgICAgRENVX0NUUkxERVNDTE5fNV9DS01BWF9CKDB4RkYpKTsKKwlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl82KGluZGV4KSwKKwkJICAgICBEQ1VfQ1RS TERFU0NMTl82X0NLTUlOX1IoMCkgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fRygw KSB8CisJCSAgICAgRENVX0NUUkxERVNDTE5fNl9DS01JTl9CKDApKTsKKwlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl83KGluZGV4KSwgMCk7CisJcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fOChpbmRleCksCisJCSAgICAgRENV X0NUUkxERVNDTE5fOF9GR19GQ09MT1IoMCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9DVFJMREVTQ0xOXzkoaW5kZXgpLAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzlfQkdf QkNPTE9SKDApKTsKKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZnNsX2Rldi0+bnAsICJm c2wsbHMxMDIxYS1kY3UiKSkKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NU UkxERVNDTE5fMTAoaW5kZXgpLAorCQkJICAgICBEQ1VfQ1RSTERFU0NMTl8xMF9QT1NUX1NLSVAo MCkgfAorCQkJICAgICBEQ1VfQ1RSTERFU0NMTl8xMF9QUkVfU0tJUCgwKSk7CisJcmVnbWFwX3Vw ZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAorCQkJICAgRENVX01PREVf RENVX01PREVfTUFTSywKKwkJCSAgIERDVV9NT0RFX0RDVV9NT0RFKERDVV9NT0RFX05PUk1BTCkp OworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwgRENVX1VQ REFURV9NT0RFX1JFQURSRUcpOworfQorCitpbnQgZnNsX2RjdV9kcm1fcGxhbmVfZGlzYWJsZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlyZXR1cm4gMDsKK30KKwordm9pZCBmc2xfZGN1 X2RybV9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCWZzbF9kY3Vf ZHJtX3BsYW5lX2Rpc2FibGUocGxhbmUpOworCWRybV9wbGFuZV9jbGVhbnVwKHBsYW5lKTsKK30K Kworc3RhdGljIGNvbnN0IHVpbnQzMl90IGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHNbXSA9IHsK KwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX1JHQjg4OCwKKwlEUk1fRk9STUFUX0FS R0I4ODg4LAorCURSTV9GT1JNQVRfQVJHQjQ0NDQsCisJRFJNX0ZPUk1BVF9BUkdCMTU1NSwKKwlE Uk1fRk9STUFUX1lVVjQyMiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1 bmNzIGZzbF9kY3VfZHJtX3BsYW5lX2Z1bmNzID0geworCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRv bWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCisJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hl bHBlcl9kaXNhYmxlX3BsYW5lLAorCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJv eSwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1 cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9wbGFuZV9kZXN0cm95X3N0YXRlLAorCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5l X3Jlc2V0LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNz IGZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKKwkucHJlcGFyZV9mYiA9IGZzbF9k Y3VfZHJtX3BsYW5lX3ByZXBhcmVfZmIsCisJLmNsZWFudXBfZmIgPSBmc2xfZGN1X2RybV9wbGFu ZV9jbGVhbnVwX2ZiLAorCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNf Y2hlY2ssCisJLmF0b21pY191cGRhdGUgPSBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfdXBkYXRl LAorCS5hdG9taWNfZGlzYWJsZSA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19kaXNhYmxlLAor fTsKKworc3RydWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUo c3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5Owor CWludCByZXQ7CisKKwlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnByaW1hcnkpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIXByaW1hcnkpIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGFsbG9j YXRlIHByaW1hcnkgcGxhbmVcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBwb3NzaWJs ZV9jcnRjJ3Mgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgYnkgY3J0Y19pbml0ICovCisJcmV0ID0g ZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcHJpbWFyeSwgMCwKKwkJCQkgICAgICAgJmZz bF9kY3VfZHJtX3BsYW5lX2Z1bmNzLAorCQkJCSAgICAgICBmc2xfZGN1X2RybV9wbGFuZV9mb3Jt YXRzLAorCQkJCSAgICAgICBBUlJBWV9TSVpFKGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHMpLAor CQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZiAocmV0KSB7CisJCWtmcmVl KHByaW1hcnkpOworCQlwcmltYXJ5ID0gTlVMTDsKKwl9CisJZHJtX3BsYW5lX2hlbHBlcl9hZGQo cHJpbWFyeSwgJmZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gcHJp bWFyeTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X3BsYW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYmZhNjEKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCkBAIC0wLDAg KzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3Rvciwg SW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9QTEFORV9I X18KKyNkZWZpbmUgX19GU0xfRENVX0RSTV9QTEFORV9IX18KKworc3RydWN0IGZzbF9kY3VfZHJt X2RldmljZTsKK3N0cnVjdCBmc2xfZGN1X2RybV9wbGFuZSB7CisJc3RydWN0IGRybV9wbGFuZSBw bGFuZTsKKwl1bnNpZ25lZCBpbnQgaW5kZXg7Cit9OworCitzdHJ1Y3QgZHJtX3BsYW5lICpmc2xf ZGN1X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKwor I2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fICovCi0tIAoyLjEuMC4yNy5nOTZkYjMy NAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK