From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v6 1/4] drm/layerscape: Add Freescale DCU DRM driver Date: Fri, 10 Jul 2015 15:26:52 +0800 Message-ID: <1436513215-43423-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 YW4KYWxwaGEgY2hhbm5lbCBhbmQKWVVWNDIyIGZvcm1hdC4KKDYpIEVhY2ggZ3JhcGhpYyBsYXll ciBzdXBwb3J0IGFscGhhIGJsZW5kaW5nIHdpdGggOC1iaXQKcmVzb2x1dGlvbi4KClRoaXMgaXMg YSBzaW1wbGlmaWVkIHZlcnNpb24sIG9ubHkgb25lIHByaW1hcnkgcGxhbmUsIG9uZQpmcmFtZWJ1 ZmZlciBjcmVhdGVkIGZvcgpmYmRldiwgb25lIGNydGMsIG9uZSBjb25uZWN0b3IgZm9yIFRGVCBM Q0QgcGFuZWwsIGFuIGVuY29kZXIuCgpTaWduZWQtb2ZmLWJ5OiBBbGlzb24gV2FuZyA8YjE4OTY1 QGZyZWVzY2FsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFhpdWJvIExpIDxsaXhpdWJvQGNtc3MuY2hp bmFtb2JpbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWFud2VpIFdhbmcgPGppYW53ZWkud2FuZ0Bm cmVlc2NhbGUuY29tPgotLS0KCgpDaGFuZ2VkIGluIFY2CgotIEFkZCBORUMgbmw0ODI3aGMxOV8w NWIgcGFuZWwgdG8gcGFuZWwtc2ltcGxlLmMKQWR2aWNlZCBieSBNYXJrIFlhbwotIEFkZCBEUklW RVJfQVRPTUlDIGZvciBkcml2ZXJfZmVhdHVyZXMKQWR2aWNlZCBieSBNYXJrIFlhbwotIGNoZWNr IGZzbF9kZXYgaWYgaXQncyBOVUxMIGF0IFBNIHN1c3BlbmQvcmVzdW1lCkFkdmljZWQgYnkgTWFy ayBZYW8KCkNoYW5nZWQgaW4gVjUKCi0gVXBkYXRlIGNvbW1pdCBtZXNzYWdlCi0gQWRkIGxheWVy IHJlZ2lzdGVycyBpbml0aWFsaXphdGlvbgotIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zCi0gUmVu YW1lIGRyaXZlciBmb2xkZXIKQWR2aWNlZCBieSBTdGVmYW4gQWduZXIKLSBNb3ZlIHBpeGVsIGNs b2NrIGNvbnRyb2wgZnVuY3Rpb25zIHRvIGZzbF9kY3VfZHJtX2Rydi5jCi0gcmVtb3ZlIHJlZHVu ZGFudCBlbmFibGUgdGhlIGNsb2NrIGltcGxpY2l0bHkgdXNpbmcgcmVnbWFwCi0gQWRkIG1haW50 YWluZXIgbWVzc2FnZQoKQ2hhbmdlZCBpbiBWNDoKCi1UaGlzIHZlcnNpb24gZG9lc24ndCBoYXZl IGZ1bmN0aW9uYWxpdHkgY2hhbmdlZApKdXN0IGEgbWlub3IgYWRqdXN0bWVudC4KCkNoYW5nZWQg aW4gVjM6CgotIFRlc3QgZHJpdmVyIG9uIFZ5YnJpZCBib2FyZCBhbmQgYWRkIGNvbXBhdGlibGUg c3RyaW5nCi0gUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMKLSBzZXQgZGVmYXVsdCBjcnRjIGZvciBl bmNvZGVyCi0gcmVwbGFjZSBsZWdhY3kgZnVuY3Rpb25zIHdpdGggYXRvbWljIGhlbHAgZnVuY3Rp b25zCkFkdmljZWQgYnkgRGFuaWVsIFZldHRlcgotIFNldCB0aGUgdW5pcXVlIG5hbWUgb2YgdGhl IERSTSBkZXZpY2UKLSBJbXBsZW1lbnQgaXJxIGhhbmRsZSBmdW5jdGlvbiBmb3IgdmJsYW5rIGlu dGVycnVwdAoKQ2hhbmdlZCBpbiB2MjogCi0gQWRkIGF0b21pYyBzdXBwb3J0CkFkdmljZWQgYnkg RGFuaWVsIFZldHRlcgotIE1vZGlmeSBiaW5kaW5ncyBmaWxlCi0gUmVuYW1lIG5vZGUgZm9yIGNv bXBhdGliaWxpdHkKLSBNb3ZlIHBsYXRmb3JtIHJlbGF0ZWQgY29kZSBvdXQgZm9yIGNvbXBhdGli aWxpdHkKQWR2aWNlZCBieSBTdGVmYW4gQWduZXIKCgogTUFJTlRBSU5FUlMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL0tjb25maWcg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv S2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgMTggKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jIHwgMjAwICsrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIHwgIDMxICsrCiBkcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmMgICAgICB8IDE3MiArKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5oICAgICAgfCAgMjIgKysK IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jICAgICAgIHwgMzc5ICsr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fZHJ2LmggICAgICAgfCAyMjMgKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMgICAgIHwgIDI2ICsrCiBkcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9rbXMuYyAgICAgICB8ICA0MiArKysKIGRyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oICAgICAgIHwgIDE3ICsrCiBkcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jICAgICB8IDE5NSArKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmggICAgIHwgIDIzICsrCiAxNiBm aWxlcyBjaGFuZ2VkLCAxMzY1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1f ZHJ2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9kcnYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2ZiZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9rbXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmgKCmRpZmYgLS1naXQgYS9N QUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDY3NjEzMTguLmIyNWI5NDggMTAwNjQ0Ci0t LSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0zNDA0LDYgKzM0MDQsMTMgQEAg UzoJTWFpbnRhaW5lZAogRjoJZHJpdmVycy9ncHUvZHJtL2lteC8KIEY6CURvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vaW14LwogCitEUk0gRFJJVkVSUyBGT1IgRlJFRVNDQUxF IERDVQorTToJSmlhbndlaSBXYW5nIDxqaWFud2VpLndhbmdAZnJlZXNjYWxlLmNvbT4KK006CUFs aXNvbiBXYW5nIDxhbGlzb24ud2FuZ0BmcmVlc2NhbGUuY29tPgorTDoJZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS8KKwogRFJNIERSSVZFUlMgRk9SIE5WSURJQSBURUdSQQogTToJVGhpZXJyeSBSZWRpbmcgPHRo aWVycnkucmVkaW5nQGdtYWlsLmNvbT4KIE06CVRlcmplIEJlcmdzdHLDtm0gPHRiZXJnc3Ryb21A bnZpZGlhLmNvbT4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVy cy9ncHUvZHJtL0tjb25maWcKaW5kZXggYzQ2Y2EzMS4uOWNmZDE0ZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTIz MSw2ICsyMzEsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZyIKIAog c291cmNlICJkcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWciCiAKK3NvdXJjZSAiZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vdGVncmEv S2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyIKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQppbmRleCA1NzEzZDA1Li4xMWNiODFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC03MCwzICs3MCw0IEBAIG9i ai0kKENPTkZJR19EUk1fSU1YKSArPSBpbXgvCiBvYmoteQkJCSs9IGkyYy8KIG9iai15CQkJKz0g cGFuZWwvCiBvYmoteQkJCSs9IGJyaWRnZS8KK29iai0kKENPTkZJR19EUk1fRlNMX0RDVSkgKz0g ZnNsLWRjdS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmJmZDQ4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9LY29uZmlnCkBAIC0wLDAgKzEsMTggQEAKK2NvbmZpZyBEUk1fRlNMX0RDVQorCXRyaXN0 YXRlICJEUk0gU3VwcG9ydCBmb3IgRnJlZXNjYWxlIERDVSIKKwlkZXBlbmRzIG9uIERSTSAmJiBP RiAmJiBBUk0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlzZWxlY3QgRFJNX0tNU19DTUFfSEVM UEVSCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCisJc2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19E RVZJQ0UKKwlzZWxlY3QgQkFDS0xJR0hUX0xDRF9TVVBQT1JUCisJc2VsZWN0IFJFR01BUF9NTUlP CisJc2VsZWN0IERSTV9LTVNfRkJfSEVMUEVSCisJc2VsZWN0IEZCX1NZU19GSUxMUkVDVAorCXNl bGVjdCBGQl9TWVNfQ09QWUFSRUEKKwlzZWxlY3QgRkJfU1lTX0lNQUdFQkxJVAorCXNlbGVjdCBG Ql9TWVNfRk9QUworCXNlbGVjdCBEUk1fUEFORUwKKwloZWxwCisJICBDaG9vc2UgdGhpcyBvcHRp b24gaWYgeW91IGhhdmUgYW4gRnJlZXNjYWxlIERDVSBjaGlwc2V0LgorCSAgSWYgTSBpcyBzZWxl Y3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGZzbC1kY3UtZHJtLgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzZiNGE2Ci0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUKQEAgLTAs MCArMSw3IEBACitmc2wtZGN1LWRybS15IDo9IGZzbF9kY3VfZHJtX2Rydi5vIFwKKwkgICAgICAg ZnNsX2RjdV9kcm1fa21zLm8gXAorCSAgICAgICBmc2xfZGN1X2RybV9jb25uZWN0b3IubyBcCisJ ICAgICAgIGZzbF9kY3VfZHJtX3BsYW5lLm8gXAorCSAgICAgICBmc2xfZGN1X2RybV9jcnRjLm8g XAorCSAgICAgICBmc2xfZGN1X2RybV9mYmRldi5vCitvYmotJChDT05GSUdfRFJNX0ZTTF9EQ1Up CSs9IGZzbC1kY3UtZHJtLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fY29ubmVjdG9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmZTBl MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2Nvbm5lY3Rvci5jCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJl ZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZp Y2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVk ZSA8bGludXgvYmFja2xpZ2h0Lmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKwor I2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Nvbm5l Y3Rvci5oIgorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2RwbXMoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkKK3sKK30KKworc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fZW5jb2Rlcl9tb2RlX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQor eworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl LAorCQkJCQkgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7Cit9CisK K3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfbW9kZV9jb21taXQoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVy X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgaW50 Citmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCisJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgZW5jb2Rlcl9oZWxwZXJf ZnVuY3MgPSB7CisJLmRwbXMgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2RwbXMsCisJLnByZXBhcmUg PSBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfcHJlcGFyZSwKKwkuY29tbWl0ID0gZnNsX2RjdV9k cm1fZW5jb2Rlcl9tb2RlX2NvbW1pdCwKKwkubW9kZV9zZXQgPSBmc2xfZGN1X2RybV9lbmNvZGVy X21vZGVfc2V0LAorCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kaXNhYmxlLAorCS5h dG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21pY19jaGVjaywKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZW5jb2Rlcl9mdW5jcyA9IHsKKwku ZGVzdHJveSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveSwKK307CisKK2ludCBmc2xfZGN1 X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAor CQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIgPSAmZnNsX2Rldi0+ZW5jb2RlcjsKKwlpbnQgcmV0OworCisJZW5jb2Rlci0+cG9z c2libGVfY3J0Y3MgPSAxOworCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZnNsX2Rldi0+ZGRldiwg ZW5jb2RlciwgJmVuY29kZXJfZnVuY3MsCisJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9MVkRT KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRybV9lbmNvZGVyX2hlbHBlcl9h ZGQoZW5jb2RlciwgJmVuY29kZXJfaGVscGVyX2Z1bmNzKTsKKwllbmNvZGVyLT5jcnRjID0gY3J0 YzsKKworCXJldHVybiAwOworfQorCisjZGVmaW5lIHRvX2ZzbF9kY3VfY29ubmVjdG9yKGNvbm5l Y3RvcikgXAorCWNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCBmc2xfZGN1X2RybV9jb25u ZWN0b3IsIGNvbm5lY3RvcikKKworc3RhdGljIGludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfZ2V0 X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGZzbF9k Y3VfZHJtX2Nvbm5lY3RvciAqZnNsX2Nvbm5lY3RvcjsKKwlpbnQgbnVtX21vZGVzID0gMDsKKwor CWZzbF9jb25uZWN0b3IgPSB0b19mc2xfZGN1X2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCWlmIChm c2xfY29ubmVjdG9yLT5wYW5lbCAmJiBmc2xfY29ubmVjdG9yLT5wYW5lbC0+ZnVuY3MgJiYKKwkg ICAgZnNsX2Nvbm5lY3Rvci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMpCisJCW51bV9tb2RlcyA9 IGZzbF9jb25uZWN0b3ItPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVzCisJCQkJKGZzbF9jb25uZWN0 b3ItPnBhbmVsKTsKKworCXJldHVybiBudW1fbW9kZXM7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2Rj dV9kcm1fY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKKwkJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXJldHVybiBN T0RFX09LOworfQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKK2ZzbF9kY3VfZHJtX2Nv bm5lY3Rvcl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK KwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29uID0gdG9fZnNsX2RjdV9jb25u ZWN0b3IoY29ubmVjdG9yKTsKKworCXJldHVybiBmc2xfY29uLT5lbmNvZGVyOworfQorCitzdGF0 aWMgdm9pZCBmc2xfZGN1X2RybV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQoreworCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwor CWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworfQorCitzdGF0aWMgZW51bSBkcm1f Y29ubmVjdG9yX3N0YXR1cworZnNsX2RjdV9kcm1fY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQoreworCXJldHVybiBjb25uZWN0b3Jf c3RhdHVzX2Nvbm5lY3RlZDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X2Z1bmNzIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuZHBtcyA9IGRybV9hdG9t aWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAorCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9yZXNldCwKKwkuZGV0ZWN0ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2RldGVjdCwK KwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywK KwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LAorCS5hdG9taWNfZHVw bGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0 ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwkuZ2V0X21vZGVzID0gZnNs X2RjdV9kcm1fY29ubmVjdG9yX2dldF9tb2RlcywKKwkubW9kZV92YWxpZCA9IGZzbF9kY3VfZHJt X2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorCS5iZXN0X2VuY29kZXIgPSBmc2xfZGN1X2RybV9jb25u ZWN0b3JfYmVzdF9lbmNvZGVyLAorfTsKKworaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVh dGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCQkgc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAm ZnNsX2Rldi0+Y29ubmVjdG9yLmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBhbmVs X25vZGU7CisJaW50IHJldDsKKworCWZzbF9kZXYtPmNvbm5lY3Rvci5lbmNvZGVyID0gZW5jb2Rl cjsKKworCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gMDsKKwljb25uZWN0b3It PmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAwOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0 KGZzbF9kZXYtPmRkZXYsIGNvbm5lY3RvciwKKwkJCQkgJmZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9m dW5jcywKKwkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0xWRFMpOworCWlmIChyZXQgPCAwKQorCQly ZXR1cm4gcmV0OworCisJY29ubmVjdG9yLT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7CisJZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmNvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mp OworCXJldCA9IGRybV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVjdG9yKTsKKwlpZiAocmV0IDwg MCkKKwkJZ290byBlcnJfY2xlYW51cDsKKworCXJldCA9IGRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRh Y2hfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVy cl9zeXNmczsKKworCWNvbm5lY3Rvci0+ZW5jb2RlciA9IGVuY29kZXI7CisKKwlkcm1fb2JqZWN0 X3Byb3BlcnR5X3NldF92YWx1ZQorCQkoJmNvbm5lY3Rvci0+YmFzZSwgZnNsX2Rldi0+ZGRldi0+ bW9kZV9jb25maWcuZHBtc19wcm9wZXJ0eSwKKwkJRFJNX01PREVfRFBNU19PRkYpOworCisJcGFu ZWxfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZnNsX2Rldi0+bnAsICJwYW5lbCIsIDApOworCWlm IChwYW5lbF9ub2RlKSB7CisJCWZzbF9kZXYtPmNvbm5lY3Rvci5wYW5lbCA9IG9mX2RybV9maW5k X3BhbmVsKHBhbmVsX25vZGUpOworCQlpZiAoIWZzbF9kZXYtPmNvbm5lY3Rvci5wYW5lbCkKKwkJ CXJldHVybiAtRVBST0JFX0RFRkVSOworCX0KKworCXJldCA9IGRybV9wYW5lbF9hdHRhY2goZnNs X2Rldi0+Y29ubmVjdG9yLnBhbmVsLCBjb25uZWN0b3IpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vy cihmc2xfZGV2LT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIHBhbmVsXG4iKTsKKwkJZ290byBlcnJf c3lzZnM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl9zeXNmczoKKwlkcm1fY29ubmVjdG9yX3Vu cmVnaXN0ZXIoY29ubmVjdG9yKTsKK2Vycl9jbGVhbnVwOgorCWRybV9jb25uZWN0b3JfY2xlYW51 cChjb25uZWN0b3IpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjFjM2RiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJp Z2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUg RENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq LworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ09OTkVDVE9SX0hfXworI2RlZmluZSBfX0ZTTF9E Q1VfRFJNX0NPTk5FQ1RPUl9IX18KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgorCitzdHJ1Y3Qg ZnNsX2RjdV9kcm1fZGV2aWNlOworc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciB7CisJc3Ry dWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cjsKKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKK307CisKK2ludCBmc2xfZGN1X2RybV9lbmNv ZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJICAgICAg IHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CitpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0 ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJCSBzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIpOworCisjZW5kaWYgLyogX19GU0xfRENVX0RSTV9DT05ORUNUT1JfSF9f ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA2NWE3YwotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYwpAQCAtMCwwICsxLDE3MiBA QAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisg KgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUg PGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUg PGRybS9kcm1fY3J0Yy5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1 ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX3BsYW5lLmgiCisK KyNkZWZpbmUgdG9fZnNsX2RjdV9jcnRjKGMpCWNvbnRhaW5lcl9vZihjLCBzdHJ1Y3QgZnNsX2Rj dV9kcm1fY3J0YywgY3J0YykKKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3Nl dF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYt PmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGMtPnN0 YXRlLT5tb2RlOworCXVpbnQzMl90IGhicCwgaGZwLCBoc3csIHZicCwgdmZwLCB2c3csIGRpdiwg aW5kZXg7CisKKwlEQkcoIjogc2V0IG1vZGU6ICVkOlwiJXNcIiAlZCAlZCAlZCAlZCAlZCAlZCAl ZCAlZCAlZCAlZCAweCV4IDB4JXgiLAorCSAgICBtb2RlLT5iYXNlLmlkLCBtb2RlLT5uYW1lLAor CSAgICBtb2RlLT52cmVmcmVzaCwgbW9kZS0+Y2xvY2ssCisJICAgIG1vZGUtPmhkaXNwbGF5LCBt b2RlLT5oc3luY19zdGFydCwKKwkgICAgbW9kZS0+aHN5bmNfZW5kLCBtb2RlLT5odG90YWwsCisJ ICAgIG1vZGUtPnZkaXNwbGF5LCBtb2RlLT52c3luY19zdGFydCwKKwkgICAgbW9kZS0+dnN5bmNf ZW5kLCBtb2RlLT52dG90YWwsCisJICAgIG1vZGUtPnR5cGUsIG1vZGUtPmZsYWdzKTsKKworCWlu ZGV4ID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CisJZGl2ID0gKHVpbnQzMl90KWNsa19nZXRfcmF0 ZShmc2xfZGV2LT5jbGspIC8gbW9kZS0+Y2xvY2sgLyAxMDAwOworCisJLyogQ29uZmlndXJlIHRp bWluZ3M6ICovCisJaGJwID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+aHN5bmNfZW5kOworCWhmcCA9 IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN3ID0gbW9kZS0+aHN5bmNf ZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJdmJwID0gbW9kZS0+dnRvdGFsIC0gbW9kZS0+dnN5 bmNfZW5kOworCXZmcCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7CisJdnN3 ID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQ7CisKKwlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSFNZTl9QQVJBLAorCQkgICAgIERDVV9IU1lOX1BBUkFfQlAo aGJwKSB8CisJCSAgICAgRENVX0hTWU5fUEFSQV9QVyhoc3cpIHwKKwkJICAgICBEQ1VfSFNZTl9Q QVJBX0ZQKGhmcCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9WU1lOX1BB UkEsCisJCSAgICAgRENVX1ZTWU5fUEFSQV9CUCh2YnApIHwKKwkJICAgICBEQ1VfVlNZTl9QQVJB X1BXKHZzdykgfAorCQkgICAgIERDVV9WU1lOX1BBUkFfRlAodmZwKSk7CisJcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJU1BfU0laRSwKKwkJICAgICBEQ1VfRElTUF9TSVpFX0RF TFRBX1kobW9kZS0+dmRpc3BsYXkpIHwKKwkJICAgICBEQ1VfRElTUF9TSVpFX0RFTFRBX1gobW9k ZS0+aGRpc3BsYXkpKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfRElWX1JB VElPLCBkaXYpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9E RSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOworfQorCitzdGF0aWMgYm9vbCBmc2xfZGN1X2Ry bV9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCQljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9k Y3VfZHJtX2NydGNfcHJlcGFyZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKKy8qIE5v dyBlbmFibGUgdGhlIGNsb2NrcywgcGxhbmUsIHBpcGUsIGFuZCBjb25uZWN0b3JzIHRoYXQgd2Ug c2V0IHVwLiAqLworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2NvbW1pdChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fY3J0Y19h dG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCQkgc3RydWN0IGRybV9jcnRj X3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9k cm1fY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworfQorCitzdGF0 aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCit7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfZHBt cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQoreworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9jcnRjX2Z1bmNzIGZzbF9kY3VfZHJtX2NydGNfZnVuY3MgPSB7CisJLnBhZ2Vf ZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKKwkuc2V0X2NvbmZpZyA9IGRybV9h dG9taWNfaGVscGVyX3NldF9jb25maWcsCisJLmRlc3Ryb3kgPSBkcm1fY3J0Y19jbGVhbnVwLAor CS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsCisJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRv bWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUs Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBmc2xfZGN1 X2RybV9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2Rpc2Fi bGVfY3J0YywKKwkubW9kZV9maXh1cCA9IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9maXh1cCwKKwku bW9kZV9zZXQgPSBkcm1faGVscGVyX2NydGNfbW9kZV9zZXQsCisJLm1vZGVfc2V0X25vZmIgPSBm c2xfZGN1X2RybV9jcnRjX21vZGVfc2V0X25vZmIsCisJLm1vZGVfc2V0X2Jhc2UgPSBkcm1faGVs cGVyX2NydGNfbW9kZV9zZXRfYmFzZSwKKwkucHJlcGFyZSA9IGZzbF9kY3VfZHJtX2NydGNfcHJl cGFyZSwKKwkuY29tbWl0ID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2NvbW1pdCwKKwkuYXRvbWlj X2NoZWNrID0gZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfY2hlY2ssCisJLmF0b21pY19iZWdpbiA9 IGZzbF9kY3VfZHJtX2NydGNfYXRvbWljX2JlZ2luLAorCS5hdG9taWNfZmx1c2ggPSBmc2xfZGN1 X2RybV9jcnRjX2F0b21pY19mbHVzaCwKKwkuZHBtcyA9IGZzbF9kY3VfZHJtX2NydGNfZHBtcywK K307CisKK2ludCBmc2xfZGN1X2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2 aWNlICpmc2xfZGV2KQoreworCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnk7CisJc3RydWN0IGRy bV9jcnRjICpjcnRjID0gJmZzbF9kZXYtPmNydGM7CisJaW50IGksIHJldDsKKworCXByaW1hcnkg PSBmc2xfZGN1X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShmc2xfZGV2LT5kZGV2KTsKKwlyZXQg PSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGZzbF9kZXYtPmRkZXYsIGNydGMsIHByaW1hcnks IE5VTEwsCisJCQkJCSZmc2xfZGN1X2RybV9jcnRjX2Z1bmNzKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJmZzbF9kY3VfZHJtX2Ny dGNfaGVscGVyX2Z1bmNzKTsKKworCWZvciAoaSA9IDA7IGkgPCBEQ1VfVE9UQUxfTEFZRVJfTlVN OyBpKyspIHsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5f MShpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xO XzIoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NM Tl8zKGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVND TE5fNChpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVT Q0xOXzUoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERF U0NMTl82KGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxE RVNDTE5fNyhpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJM REVTQ0xOXzgoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RS TERFU0NMTl85KGkpLCAwKTsKKwkJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYt Pm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTl8xMChpKSwgMCk7CisJfQorCXJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9TWU5fUE9MLAorCQkgICAgIERDVV9TWU5fUE9MX0lOVl9WU19MT1cgfCBEQ1Vf U1lOX1BPTF9JTlZfSFNfTE9XKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf QkdORCwgRENVX0JHTkRfUigwKSB8CisJCSAgICAgRENVX0JHTkRfRygwKSB8IERDVV9CR05EX0Io MCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9ERSwKKwkJICAg ICBEQ1VfTU9ERV9CTEVORF9JVEVSKDEpIHwgRENVX01PREVfUkFTVEVSX0VOKTsKKwlyZWdtYXBf d3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVEhSRVNIT0xELAorCQkgICAgIERDVV9USFJFU0hP TERfTFNfQkZfVlMoQkZfVlNfVkFMKSB8CisJCSAgICAgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJ R0goQlVGX01BWF9WQUwpIHwKKwkJICAgICBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfTE9XKEJVRl9N SU5fVkFMKSk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9N T0RFLAorCQkJICAgRENVX01PREVfRENVX01PREVfTUFTSywKKwkJCSAgIERDVV9NT0RFX0RDVV9N T0RFKERDVV9NT0RFX09GRikpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9V UERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOworCisJcmV0dXJuIDA7Cit9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmggYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMTkzNzg1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaApAQCAtMCwwICsxLDIyIEBACisvKgor ICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBG cmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ1JUQ19IX18KKyNkZWZpbmUgX19G U0xfRENVX0RSTV9DUlRDX0hfXworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2NydGMuaD4KKworc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZTsKKworaW50IGZzbF9k Y3VfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpOwor CisjZW5kaWYgLyogX19GU0xfRENVX0RSTV9DUlRDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9kcnYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hMDZlNGVlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fZHJ2LmMKQEAgLTAsMCArMSwzNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBG cmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRl dmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNs dWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4 L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxh dGZvcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxs aW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+CisKKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNs X2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2ttcy5oIgorCitzdGF0aWMg aW50IGZzbF9kY3VfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZHJtX21vZGVf Y29uZmlnX2NsZWFudXAoZGV2KTsKKwlkcm1fdmJsYW5rX2NsZWFudXAoZGV2KTsKKwlkcm1faXJx X3VuaW5zdGFsbChkZXYpOworCisJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHN0cnVjdCByZWdtYXBfY29uZmlnIGZzbF9kY3VfcmVnbWFwX2NvbmZp ZyA9IHsKKwkucmVnX2JpdHMgPSAzMiwKKwkucmVnX3N0cmlkZSA9IDQsCisJLnZhbF9iaXRzID0g MzIsCit9OworCitzdGF0aWMgaW50IGZzbF9kY3VfYnlwYXNzX3Rjb24oc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQor eworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqdGNvbl9ucDsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2OworCXN0cnVjdCBjbGsgKnRjb25fY2xrOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOwor CXZvaWQgX19pb21lbSAqYmFzZTsKKworCXRjb25fbnAgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCAi dGNvbi1jb250cm9sbGVyIiwgMCk7CisJaWYgKCF0Y29uX25wKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHRjb25fbnApOworCWlmICghcGRldikK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwl0Y29uX2NsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2 LCAidGNvbiIpOworCWlmIChJU19FUlIodGNvbl9jbGspKQorCQlyZXR1cm4gUFRSX0VSUih0Y29u X2Nsayk7CisJY2xrX3ByZXBhcmVfZW5hYmxlKHRjb25fY2xrKTsKKworCXJlcyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpCisJCXJl dHVybiAtRU5PREVWOworCisJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2 LCByZXMpOworCWlmIChJU19FUlIoYmFzZSkpCisJCXJldHVybiBQVFJfRVJSKGJhc2UpOworCisJ ZnNsX2Rldi0+dGNvbl9yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oJnBkZXYtPmRldiwK KwkJCWJhc2UsICZmc2xfZGN1X3JlZ21hcF9jb25maWcpOworCWlmIChJU19FUlIoZnNsX2Rldi0+ dGNvbl9yZWdtYXApKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInJlZ21hcCBpbml0IGZhaWxl ZFxuIik7CisJCXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnRjb25fcmVnbWFwKTsKKwl9CisKKwly ZWdtYXBfd3JpdGUoZnNsX2Rldi0+dGNvbl9yZWdtYXAsIFRDT05fQ1RSTDEsIFRDT05fQllQQVNT X0VOQUJMRSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRjdV9waXhjbGtfZW5hYmxl KHZvaWQpCit7CisJc3RydWN0IHJlZ21hcCAqc2NmZ19yZWdtYXA7CisKKwlzY2ZnX3JlZ21hcCA9 IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X2NvbXBhdGlibGUoImZzbCxsczEwMjFhLXNjZmciKTsK KwlpZiAoSVNfRVJSKHNjZmdfcmVnbWFwKSkgeworCQlwcl9lcnIoIk5vIHN5c2NmZyBwaGFuZGxl IHNwZWNpZmllZFxuIik7CisJCXJldHVybjsKKwl9CisKKwlyZWdtYXBfd3JpdGUoc2NmZ19yZWdt YXAsIFNDRkdfUElYQ0xLQ1IsIFBYQ0tfRU5BQkxFKTsKK30KKworc3RhdGljIGludCBmc2xfZGN1 X2RybV9pcnFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYgPSBkZXYtPnBsYXRmb3JtZGV2OworCXN0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGludCBpbnRfbWFz azsKKwlpbnQgcmV0OworCisJcmV0ID0gZHJtX2lycV9pbnN0YWxsKGRldiwgcGxhdGZvcm1fZ2V0 X2lycShkZXYtPnBsYXRmb3JtZGV2LCAwKSk7CisJaWYgKHJldCA8IDApCisJCWRldl9lcnIoJnBk ZXYtPmRldiwgImZhaWxlZCB0byBpbnN0YWxsIElSUSBoYW5kbGVyXG4iKTsKKworCWRldi0+aXJx X2VuYWJsZWQgPSB0cnVlOworCWRldi0+dmJsYW5rX2Rpc2FibGVfYWxsb3dlZCA9IHRydWU7CisK KwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgMCk7CisJcmVn bWFwX3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX01BU0ssICZpbnRfbWFzayk7CisJcmVn bWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCBpbnRfbWFzayAmCisJCSAg ICAgfkRDVV9JTlRfTUFTS19WQkxBTkspOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRl di0+cGxhdGZvcm1kZXY7CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldjsKKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisJaW50IHJldDsKKwor CWZzbF9kZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpmc2xfZGV2KSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZzbF9kZXYt PmRldiA9ICZwZGV2LT5kZXY7CisJZnNsX2Rldi0+ZGRldiA9IGRldjsKKwlmc2xfZGV2LT5ucCA9 IHBkZXYtPmRldi5vZl9ub2RlOworCWRldi0+ZGV2X3ByaXZhdGUgPSBmc2xfZGV2OworCWRldl9z ZXRfZHJ2ZGF0YShkZXYtPmRldiwgZnNsX2Rldik7CisJZHJtX2Rldl9zZXRfdW5pcXVlKGRldiwg ZGV2X25hbWUoZGV2LT5kZXYpKTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2 LCAiY291bGQgbm90IGdldCBtZW1vcnkgSU8gcmVzb3VyY2VcbiIpOworCQlyZXR1cm4gLUVOT0RF VjsKKwl9CisKKwliYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7 CisJaWYgKElTX0VSUihiYXNlKSkgeworCQlyZXQgPSBQVFJfRVJSKGJhc2UpOworCQlyZXR1cm4g cmV0OworCX0KKworCWZzbF9kZXYtPmNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAiZGN1 Iik7CisJaWYgKElTX0VSUihmc2xfZGV2LT5jbGspKSB7CisJCXJldCA9IFBUUl9FUlIoZnNsX2Rl di0+Y2xrKTsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY291bGQgbm90IGdldCBjbG9ja1xuIik7 CisJCXJldHVybiByZXQ7CisJfQorCWNsa19wcmVwYXJlX2VuYWJsZShmc2xfZGV2LT5jbGspOwor CWZzbF9kZXYtPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbygmcGRldi0+ZGV2LCBiYXNl LAorCQkJJmZzbF9kY3VfcmVnbWFwX2NvbmZpZyk7CisJaWYgKElTX0VSUihmc2xfZGV2LT5yZWdt YXApKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInJlZ21hcCBpbml0IGZhaWxlZFxuIik7CisJ CXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnJlZ21hcCk7CisJfQorCisJLyogUHV0IFRDT04gaW4g YnlwYXNzIG1vZGUsIHNvIHRoZSBpbnB1dCBzaWduYWxzIGZyb20gRENVIGFyZSBwYXNzZWQKKwkg KiB0aHJvdWdoIFRDT04gdW5jaGFuZ2VkICovCisJZnNsX2RjdV9ieXBhc3NfdGNvbihmc2xfZGV2 LCBmc2xfZGV2LT5ucCk7CisKKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZnNsX2Rldi0+ bnAsICJmc2wsbHMxMDIxYS1kY3UiKSkKKwkJZGN1X3BpeGNsa19lbmFibGUoKTsKKwlyZXQgPSBm c2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoZnNsX2Rldik7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2 X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgbW9kZSBzZXR0aW5nXG4iKTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZGV2LCBkZXYtPm1v ZGVfY29uZmlnLm51bV9jcnRjKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSB2YmxhbmtcbiIpOworCQlnb3RvIGRvbmU7CisJfQor CisJcmV0ID0gZnNsX2RjdV9kcm1faXJxX2luaXQoZGV2KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290 byBkb25lOworCisJZnNsX2RjdV9mYmRldl9pbml0KGRldik7CisKKwlyZXR1cm4gMDsKK2RvbmU6 CisJaWYgKHJldCkKKwkJZnNsX2RjdV91bmxvYWQoZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKK30KKworc3RhdGljIGlycXJldHVybl90IGZzbF9k Y3VfZHJtX2lycShpbnQgaXJxLCB2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGFyZzsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgaW50X3N0YXR1czsKKworCXJlZ21hcF9yZWFkKGZzbF9k ZXYtPnJlZ21hcCwgRENVX0lOVF9TVEFUVVMsICZpbnRfc3RhdHVzKTsKKwlpZiAoaW50X3N0YXR1 cyAmIERDVV9JTlRfU1RBVFVTX1ZCTEFOSykKKwkJZHJtX2hhbmRsZV92YmxhbmsoZGV2LCAwKTsK KworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfU1RBVFVTLCAweGZmZmZm ZmZmKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsIERD VV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3Rh dGljIGludCBmc2xfZGN1X2RybV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9k aXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnNsX2RjdV9kcm1fZm9wcyA9IHsK Kwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLm9wZW4JCT0gZHJtX29wZW4sCisJLnJlbGVhc2UJ PSBkcm1fcmVsZWFzZSwKKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCisjaWZkZWYgQ09O RklHX0NPTVBBVAorCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAorI2VuZGlmCisJ LnBvbGwJCT0gZHJtX3BvbGwsCisJLnJlYWQJCT0gZHJtX3JlYWQsCisJLmxsc2VlawkJPSBub19s bHNlZWssCisJLm1tYXAJCT0gZHJtX2dlbV9jbWFfbW1hcCwKK307CisKK3N0YXRpYyBzdHJ1Y3Qg ZHJtX2RyaXZlciBmc2xfZGN1X2RybV9kcml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJlcwk9IERS SVZFUl9IQVZFX0lSUSB8IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVAorCQkJCXwgRFJJVkVS X1BSSU1FIHwgRFJJVkVSX0FUT01JQywKKwkubG9hZAkJCT0gZnNsX2RjdV9sb2FkLAorCS51bmxv YWQJCQk9IGZzbF9kY3VfdW5sb2FkLAorCS5wcmVjbG9zZQkJPSBmc2xfZGN1X2RybV9wcmVjbG9z ZSwKKwkuaXJxX2hhbmRsZXIJCT0gZnNsX2RjdV9kcm1faXJxLAorCS5nZXRfdmJsYW5rX2NvdW50 ZXIJPSBkcm1fdmJsYW5rX2NvdW50LAorCS5lbmFibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2Vu YWJsZV92YmxhbmssCisJLmRpc2FibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJs YW5rLAorCS5nZW1fZnJlZV9vYmplY3QJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKKwkuZ2Vt X3ZtX29wcwkJPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5wcmltZV9oYW5kbGVfdG9fZmQJPSBk cm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dl bV9wcmltZV9mZF90b19oYW5kbGUsCisJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1fZ2VtX3ByaW1l X2ltcG9ydCwKKwkuZ2VtX3ByaW1lX2V4cG9ydAk9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAor CS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3Nn X3RhYmxlLAorCS5nZW1fcHJpbWVfdm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5n ZW1fcHJpbWVfdnVubWFwCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVf bW1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAorCS5kdW1iX2NyZWF0ZQkJPSBkcm1fZ2Vt X2NtYV9kdW1iX2NyZWF0ZSwKKwkuZHVtYl9tYXBfb2Zmc2V0CT0gZHJtX2dlbV9jbWFfZHVtYl9t YXBfb2Zmc2V0LAorCS5kdW1iX2Rlc3Ryb3kJCT0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCisJLmZv cHMJCQk9ICZmc2xfZGN1X2RybV9mb3BzLAorCS5uYW1lCQkJPSAiZnNsLWRjdS1kcm0iLAorCS5k ZXNjCQkJPSAiRnJlZXNjYWxlIERDVSBEUk0iLAorCS5kYXRlCQkJPSAiMjAxNTAyMTMiLAorCS5t YWpvcgkJCT0gMSwKKwkubWlub3IJCQk9IDAsCit9OworCisjaWZkZWYgQ09ORklHX1BNX1NMRUVQ CitzdGF0aWMgdm9pZCBkY3VfcGl4Y2xrX2Rpc2FibGUodm9pZCkKK3sKKwlzdHJ1Y3QgcmVnbWFw ICpzY2ZnX3JlZ21hcDsKKworCXNjZmdfcmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlf Y29tcGF0aWJsZSgiZnNsLGxzMTAyMWEtc2NmZyIpOworCWlmIChJU19FUlIoc2NmZ19yZWdtYXAp KSB7CisJCXByX2VycigiTm8gc3lzY2ZnIHBoYW5kbGUgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJu OworCX0KKworCXJlZ21hcF93cml0ZShzY2ZnX3JlZ21hcCwgU0NGR19QSVhDTEtDUiwgUFhDS19E SVNBQkxFKTsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9zdXNwZW5kKHN0cnVjdCBk ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2 X2dldF9kcnZkYXRhKGRldik7CisKKwlpZiAoIWZzbF9kZXYpCisJCXJldHVybiAwOworCisJaWYg KG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1Iikp CisJCWRjdV9waXhjbGtfZGlzYWJsZSgpOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9kaXNhYmxl KGZzbF9kZXYtPmRkZXYpOworCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rldi0+cmVnbWFwLCB0 cnVlKTsKKwlyZWdjYWNoZV9tYXJrX2RpcnR5KGZzbF9kZXYtPnJlZ21hcCk7CisJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKGZzbF9kZXYtPmNsayk7CisKKwlpZiAoZnNsX2Rldi0+dGNvbl9yZWdtYXAp IHsKKwkJcmVnY2FjaGVfY2FjaGVfb25seShmc2xfZGV2LT50Y29uX3JlZ21hcCwgdHJ1ZSk7CisJ CXJlZ2NhY2hlX21hcmtfZGlydHkoZnNsX2Rldi0+dGNvbl9yZWdtYXApOworCQljbGtfZGlzYWJs ZV91bnByZXBhcmUoZnNsX2Rldi0+dGNvbl9jbGspOworCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGZzbF9kY3VfZHJtX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OworCisJaWYgKCFmc2xfZGV2KQorCQlyZXR1cm4gMDsKKworCS8qIEVuYWJsZSBjbG9ja3MgYW5k IHJlc3RvcmUgYWxsIHJlZ2lzdGVycyAqLworCWlmIChmc2xfZGV2LT50Y29uX3JlZ21hcCkgewor CQljbGtfcHJlcGFyZV9lbmFibGUoZnNsX2Rldi0+dGNvbl9jbGspOworCQlyZWdjYWNoZV9jYWNo ZV9vbmx5KGZzbF9kZXYtPnRjb25fcmVnbWFwLCBmYWxzZSk7CisJCXJlZ2NhY2hlX3N5bmMoZnNs X2Rldi0+dGNvbl9yZWdtYXApOworCX0KKworCWNsa19wcmVwYXJlX2VuYWJsZShmc2xfZGV2LT5j bGspOworCWRybV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlKGZzbF9kZXYtPmRkZXYpOworCXJlZ2Nh Y2hlX2NhY2hlX29ubHkoZnNsX2Rldi0+cmVnbWFwLCBmYWxzZSk7CisJcmVnY2FjaGVfc3luYyhm c2xfZGV2LT5yZWdtYXApOworCisJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYt Pm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCWRjdV9waXhjbGtfZW5hYmxlKCk7CisKKwlyZXR1 cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgZnNsX2Rj dV9kcm1fcG1fb3BzID0geworCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGZzbF9kY3VfZHJtX3Bt X3N1c3BlbmQsIGZzbF9kY3VfZHJtX3BtX3Jlc3VtZSkKK307CisKK3N0YXRpYyBpbnQgZnNsX2Rj dV9kcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlyZXR1cm4gZHJt X3BsYXRmb3JtX2luaXQoJmZzbF9kY3VfZHJtX2RyaXZlciwgcGRldik7Cit9CisKK3N0YXRpYyBp bnQgZnNsX2RjdV9kcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJ c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRh KHBkZXYpOworCisJZHJtX3B1dF9kZXYoZnNsX2Rldi0+ZGRldik7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZnNsX2RjdV9vZl9tYXRjaFtdID0g eworCQl7IC5jb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWRjdSIsIH0sCisJCXsgLmNvbXBhdGli bGUgPSAiZnNsLHZmNjEwLWRjdSIsIH0sCisJCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxF KG9mLCBmc2xfZGN1X29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg ZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZQkJPSBmc2xfZGN1X2RybV9w cm9iZSwKKwkucmVtb3ZlCQk9IGZzbF9kY3VfZHJtX3JlbW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJ Lm93bmVyCT0gVEhJU19NT0RVTEUsCisJCS5uYW1lCT0gImZzbCxkY3UiLAorCQkucG0JPSAmZnNs X2RjdV9kcm1fcG1fb3BzLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBmc2xfZGN1X29mX21hdGNoLAor CX0sCit9OworCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZzbF9kY3VfZHJtX3BsYXRmb3JtX2Ry aXZlcik7CisKK01PRFVMRV9BTElBUygicGxhdGZvcm06ZnNsLWRjdS1kcm0iKTsKK01PRFVMRV9E RVNDUklQVElPTigiRnJlZXNjYWxlIERDVSBEUk0gRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgi R1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZGYxYzUKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaApAQCAtMCwwICsxLDIyMyBA QAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisg KgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18KKyNkZWZp bmUgX19GU0xfRENVX0RSTV9EUlZfSF9fCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNp bmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUg PGRybS9kcm0uaD4KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJf aGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRy bS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIu aD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9wbGFuZS5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgorI2RlZmluZSBE UklWRVJfTkFNRQkJCSJmc2wtZGN1LWRybSIKKworI2RlZmluZSBEQ1VfRENVX01PREUJCQkweDAw MTAKKyNkZWZpbmUgRENVX01PREVfQkxFTkRfSVRFUih4KQkJKCh4KSA8PCAyMCkKKyNkZWZpbmUg RENVX01PREVfUkFTVEVSX0VOCQlCSVQoMTQpCisjZGVmaW5lIERDVV9NT0RFX0RDVV9NT0RFKHgp CQkoeCkKKyNkZWZpbmUgRENVX01PREVfRENVX01PREVfTUFTSwkJMHgwMworI2RlZmluZSBEQ1Vf TU9ERV9PRkYJCQkwCisjZGVmaW5lIERDVV9NT0RFX05PUk1BTAkJCTEKKyNkZWZpbmUgRENVX01P REVfVEVTVAkJCTIKKyNkZWZpbmUgRENVX01PREVfQ09MT1JCQVIJCTMKKworI2RlZmluZSBEQ1Vf QkdORAkJCTB4MDAxNAorI2RlZmluZSBEQ1VfQkdORF9SKHgpCQkJKCh4KSA8PCAxNikKKyNkZWZp bmUgRENVX0JHTkRfRyh4KQkJCSgoeCkgPDwgOCkKKyNkZWZpbmUgRENVX0JHTkRfQih4KQkJCSh4 KQorCisjZGVmaW5lIERDVV9ESVNQX1NJWkUJCQkweDAwMTgKKyNkZWZpbmUgRENVX0RJU1BfU0la RV9ERUxUQV9ZKHgpCSgoeCkgPDwgMTYpCisvKlJlZ2lzaXRlciB2YWx1ZSAxLzE2IG9mIGhvcml6 b250YWwgcmVzb2x1dGlvbiovCisjZGVmaW5lIERDVV9ESVNQX1NJWkVfREVMVEFfWCh4KQkoKHgp ID4+IDQpCisKKyNkZWZpbmUgRENVX0hTWU5fUEFSQQkJCTB4MDAxYworI2RlZmluZSBEQ1VfSFNZ Tl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQorI2RlZmluZSBEQ1VfSFNZTl9QQVJBX1BXKHgpCQko KHgpIDw8IDExKQorI2RlZmluZSBEQ1VfSFNZTl9QQVJBX0ZQKHgpCQkoeCkKKworI2RlZmluZSBE Q1VfVlNZTl9QQVJBCQkJMHgwMDIwCisjZGVmaW5lIERDVV9WU1lOX1BBUkFfQlAoeCkJCSgoeCkg PDwgMjIpCisjZGVmaW5lIERDVV9WU1lOX1BBUkFfUFcoeCkJCSgoeCkgPDwgMTEpCisjZGVmaW5l IERDVV9WU1lOX1BBUkFfRlAoeCkJCSh4KQorCisjZGVmaW5lIERDVV9TWU5fUE9MCQkJMHgwMDI0 CisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9QWENLX0ZBTEwJKDAgPDwgNikKKyNkZWZpbmUgRENV X1NZTl9QT0xfTkVHX1JFTUFJTgkJKDAgPDwgNSkKKyNkZWZpbmUgRENVX1NZTl9QT0xfSU5WX1ZT X0xPVwkJQklUKDEpCisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9IU19MT1cJCUJJVCgwKQorCisj ZGVmaW5lIERDVV9USFJFU0hPTEQJCQkweDAwMjgKKyNkZWZpbmUgRENVX1RIUkVTSE9MRF9MU19C Rl9WUyh4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfSElHSCh4 KQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9USFJFU0hPTERfT1VUX0JVRl9MT1coeCkJKHgpCisj ZGVmaW5lIEJGX1ZTX1ZBTAkJCTB4MDMKKyNkZWZpbmUgQlVGX01BWF9WQUwJCQkweDc4CisjZGVm aW5lIEJVRl9NSU5fVkFMCQkJMHgwYQorCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTCQkJMHgwMDJD CisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1ZTWU5DCQlCSVQoMCkKKyNkZWZpbmUgRENVX0lOVF9T VEFUVVNfVU5EUlVOCQlCSVQoMSkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfTFNCRlZTCQlCSVQo MikKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfVkJMQU5LCQlCSVQoMykKKyNkZWZpbmUgRENVX0lO VF9TVEFUVVNfQ1JDUkVBRFkJCUJJVCg0KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19DUkNPVkVS RkxPVwlCSVQoNSkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDFGSUZPTE8JCUJJVCg2KQorI2Rl ZmluZSBEQ1VfSU5UX1NUQVRVU19QMUZJRk9ISQkJQklUKDcpCisjZGVmaW5lIERDVV9JTlRfU1RB VFVTX1AyRklGT0xPCQlCSVQoOCkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDJGSUZPSEkJCUJJ VCg5KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QUk9HRU5ECQlCSVQoMTApCisjZGVmaW5lIERD VV9JTlRfU1RBVFVTX0lQTUVSUk9SCQlCSVQoMTEpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0xZ UlRSQU5TCQlCSVQoMTIpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0RNQVRSQU5TCQlCSVQoMTQp CisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AzRklGT0xPCQlCSVQoMTYpCisjZGVmaW5lIERDVV9J TlRfU1RBVFVTX1AzRklGT0hJCQlCSVQoMTcpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1A0RklG T0xPCQlCSVQoMTgpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1A0RklGT0hJCQlCSVQoMTkpCisj ZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AxRU1QVFkJCUJJVCgyNikKKyNkZWZpbmUgRENVX0lOVF9T VEFUVVNfUDJFTVBUWQkJQklUKDI3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QM0VNUFRZCQlC SVQoMjgpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1A0RU1QVFkJCUJJVCgyOSkKKworI2RlZmlu ZSBEQ1VfSU5UX01BU0sJCQkweDAwMzAKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZTWU5DCQlCSVQo MCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1VORFJVTgkJQklUKDEpCisjZGVmaW5lIERDVV9JTlRf TUFTS19MU0JGVlMJCUJJVCgyKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfVkJMQU5LCQlCSVQoMykK KyNkZWZpbmUgRENVX0lOVF9NQVNLX0NSQ1JFQURZCQlCSVQoNCkKKyNkZWZpbmUgRENVX0lOVF9N QVNLX0NSQ09WRVJGTE9XCUJJVCg1KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDFGSUZPTE8JCUJJ VCg2KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDFGSUZPSEkJCUJJVCg3KQorI2RlZmluZSBEQ1Vf SU5UX01BU0tfUDJGSUZPTE8JCUJJVCg4KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDJGSUZPSEkJ CUJJVCg5KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUFJPR0VORAkJQklUKDEwKQorI2RlZmluZSBE Q1VfSU5UX01BU0tfSVBNRVJST1IJCUJJVCgxMSkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX0xZUlRS QU5TCQlCSVQoMTIpCisjZGVmaW5lIERDVV9JTlRfTUFTS19ETUFUUkFOUwkJQklUKDE0KQorI2Rl ZmluZSBEQ1VfSU5UX01BU0tfUDNGSUZPTE8JCUJJVCgxNikKKyNkZWZpbmUgRENVX0lOVF9NQVNL X1AzRklGT0hJCQlCSVQoMTcpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QNEZJRk9MTwkJQklUKDE4 KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDRGSUZPSEkJCUJJVCgxOSkKKyNkZWZpbmUgRENVX0lO VF9NQVNLX1AxRU1QVFkJCUJJVCgyNikKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRU1QVFkJCUJJ VCgyNykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AzRU1QVFkJCUJJVCgyOCkKKyNkZWZpbmUgRENV X0lOVF9NQVNLX1A0RU1QVFkJCUJJVCgyOSkKKworI2RlZmluZSBEQ1VfRElWX1JBVElPCQkJMHgw MDU0CisKKyNkZWZpbmUgRENVX1VQREFURV9NT0RFCQkJMHgwMGNjCisjZGVmaW5lIERDVV9VUERB VEVfTU9ERV9NT0RFCQlCSVQoMzEpCisjZGVmaW5lIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHCQlC SVQoMzApCisKKyNkZWZpbmUgRENVX0RDRkJfTUFYCQkJMHgzMDAKKworI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl8xKHgpCQkoMHgyMDAgKyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl8xX0hFSUdIVCh4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8xX1dJRFRI KHgpCSh4KQorCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzIoeCkJCSgweDIwNCArICh4KSAqIDB4 NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzJfUE9TWSh4KQkoKHgpIDw8IDE2KQorI2RlZmlu ZSBEQ1VfQ1RSTERFU0NMTl8yX1BPU1goeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5f Myh4KQkJKDB4MjA4ICsgKHgpICogMHg0MCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80KHgp CQkoMHgyMGMgKyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0VOCQlCSVQo MzEpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfVElMRV9FTglCSVQoMzApCisjZGVmaW5lIERD VV9DVFJMREVTQ0xOXzRfREFUQV9TRUxfQ0xVVAlCSVQoMjkpCisjZGVmaW5lIERDVV9DVFJMREVT Q0xOXzRfU0FGRVRZX0VOCUJJVCgyOCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9UUkFOUyh4 KQkoKHgpIDw8IDIwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0JQUCh4KQkJKCh4KSA8PCAx NikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9STEVfRU4JCUJJVCgxNSkKKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fNF9MVU9GRlMoeCkJKCh4KSA8PCA0KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl80X0JCX09OCQlCSVQoMikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9BQih4KQkJKHgpCisK KyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNSh4KQkJKDB4MjEwICsgKHgpICogMHg0MCkKKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9SKHgpCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9D VFJMREVTQ0xOXzVfQ0tNQVhfRyh4KQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzVfQ0tNQVhfQih4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82KHgpCQkoMHgyMTQg KyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX1IoeCkJKCh4KSA8 PCAxNikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNl9DS01JTl9HKHgpCSgoeCkgPDwgOCkKKyNk ZWZpbmUgRENVX0NUUkxERVNDTE5fNl9DS01JTl9CKHgpCSh4KQorCisjZGVmaW5lIERDVV9DVFJM REVTQ0xOXzcoeCkJCSgweDIxOCArICh4KSAqIDB4NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzdfVElMRV9WRVIoeCkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fN19USUxF X0hPUih4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl84KHgpCQkoMHgyMWMgKyAoeCkg KiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl84X0ZHX0ZDT0xPUih4KQkoeCkKKworI2Rl ZmluZSBEQ1VfQ1RSTERFU0NMTl85KHgpCQkoMHgyMjAgKyAoeCkgKiAweDQwKQorI2RlZmluZSBE Q1VfQ1RSTERFU0NMTl85X0JHX0JDT0xPUih4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl8xMCh4KQkJKDB4MjI0ICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMTBf UE9TVF9TS0lQKHgpCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BSRV9T S0lQKHgpCSh4KQorCisjaWZkZWYgQ09ORklHX1NPQ19WRjYxMAorI2RlZmluZSBEQ1VfVE9UQUxf TEFZRVJfTlVNICAgICAgICAgICAgIDY0CisjZGVmaW5lIERDVV9MQVlFUl9OVU1fTUFYICAgICAg ICAgICAgICAgNgorI2Vsc2UKKyNkZWZpbmUgRENVX1RPVEFMX0xBWUVSX05VTSAgICAgICAgICAg ICAxNgorI2RlZmluZSBEQ1VfTEFZRVJfTlVNX01BWCAgICAgICAgICAgICAgIDQKKyNlbmRpZgor CisjZGVmaW5lIEZTTF9EQ1VfUkdCNTY1CQkJNAorI2RlZmluZSBGU0xfRENVX1JHQjg4OAkJCTUK KyNkZWZpbmUgRlNMX0RDVV9BUkdCODg4OAkJNgorI2RlZmluZSBGU0xfRENVX0FSR0IxNTU1CQkx MQorI2RlZmluZSBGU0xfRENVX0FSR0I0NDQ0CQkxMgorI2RlZmluZSBGU0xfRENVX1lVVjQyMgkJ CTE0CisKKyNkZWZpbmUgVENPTl9DVFJMMQkJCTB4MDAwMAorI2RlZmluZSBUQ09OX0JZUEFTU19F TkFCTEUJCUJJVCgyOSkKKworI2RlZmluZSBTQ0ZHX1BJWENMS0NSCQkJMHgyOAorI2RlZmluZSBQ WENLX0VOQUJMRQkJCUJJVCgzMSkKKyNkZWZpbmUgUFhDS19ESVNBQkxFCQkJMAorCisjZGVmaW5l IERCRyhmbXQsIC4uLikgRFJNX0RFQlVHKGZtdCJcbiIsICMjX19WQV9BUkdTX18pCisKK3N0cnVj dCBjbGs7CitzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGRybV9kZXZpY2U7CisKK3N0cnVjdCBmc2xf ZGN1X2RybV9kZXZpY2UgeworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wOworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlzdHJ1Y3QgcmVnbWFwICp0Y29uX3Jl Z21hcDsKKwl1bnNpZ25lZCBpbnQgaXJxOworCXN0cnVjdCBjbGsgKmNsazsKKwlzdHJ1Y3QgY2xr ICp0Y29uX2NsazsKKwkvKnByb3RlY3RzIGhhcmR3YXJlIHJlZ2lzdGVyKi8KKwlzcGlubG9ja190 IGlycV9sb2NrOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2OworCXN0cnVjdCBkcm1fZmJkZXZf Y21hICpmYmRldjsKKwlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIg ZW5jb2RlcjsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKK307CisK K3ZvaWQgZnNsX2RjdV9mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5k aWYgLyogX19GU0xfRENVX0RSTV9EUlZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fZmJkZXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m OGVmMGUxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fZmJkZXYuYwpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJl ZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIg YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y CisgKiBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1f ZHJ2LmgiCisKKy8qIGluaXRpYWxpemUgZmJkZXYgaGVscGVyICovCit2b2lkIGZzbF9kY3VfZmJk ZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LT5kZXYpOworCisJZnNsX2Rldi0+ ZmJkZXYgPSBkcm1fZmJkZXZfY21hX2luaXQoZGV2LCAyNCwgMSwgMSk7Cit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjBkZTIxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9rbXMuYwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0 IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENV IGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLwor CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIu aD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9jb25uZWN0b3IuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKKworc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgZnNsX2RjdV9kcm1fbW9kZV9jb25maWdf ZnVuY3MgPSB7CisJLmZiX2NyZWF0ZSA9IGRybV9mYl9jbWFfY3JlYXRlLAorCS5hdG9taWNfY2hl Y2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9t aWNfaGVscGVyX2NvbW1pdCwKK307CisKK2ludCBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKK3sKKwlkcm1fbW9kZV9jb25maWdfaW5p dChmc2xfZGV2LT5kZGV2KTsKKworCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLm1pbl93aWR0 aCA9IDA7CisJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7CisJZnNs X2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gMjAzMTsKKwlmc2xfZGV2LT5kZGV2 LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjA0NzsKKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2Nv bmZpZy5mdW5jcyA9ICZmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19mdW5jczsKKworCWRybV9rbXNf aGVscGVyX3BvbGxfaW5pdChmc2xfZGV2LT5kZGV2KTsKKwlmc2xfZGN1X2RybV9jcnRjX2NyZWF0 ZShmc2xfZGV2KTsKKwlmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rl di0+Y3J0Yyk7CisJZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rl di0+ZW5jb2Rlcik7CisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGZzbF9kZXYtPmRkZXYpOworCisJ cmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YmQyOTkKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuaApAQCAtMCwwICsx LDE3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIElu Yy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fS01TX0hfXwor I2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0tNU19IX18KKworaW50IGZzbF9kY3VfZHJtX21vZGVzZXRf aW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KTsKKworI2VuZGlmIC8qIF9f RlNMX0RDVV9EUk1fS01TX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX3BsYW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdmODc5Ywot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3Bs YW5lLmMKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUg U2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2 ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxkcm0v ZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Y19oZWxwZXIuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZz bF9kY3VfZHJtX2ttcy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX3BsYW5lLmgiCisKKyNkZWZp bmUgdG9fZnNsX2RjdV9wbGFuZShwbGFuZSkgXAorCWNvbnRhaW5lcl9vZihwbGFuZSwgc3RydWN0 IGZzbF9kY3VfZHJtX3BsYW5lLCBwbGFuZSkKKworc3RhdGljIGludAorZnNsX2RjdV9kcm1fcGxh bmVfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg Km5ld19zdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2ZzbF9kY3VfZHJt X3BsYW5lX2NsZWFudXBfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpuZXdfc3RhdGUpCit7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcGxhbmVfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnN0YXRlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1 X2RybV9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJ ICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7Cit9CisKK3ZvaWQgZnNs X2RjdV9kcm1fcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJ CQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7CisJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7CisJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOworCXN0cnVjdCBkcm1fZ2VtX2NtYV9v YmplY3QgKmdlbTsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUgKmZzbF9wbGFuZSA9IHRvX2Zz bF9kY3VfcGxhbmUocGxhbmUpOworCXUzMiBpbmRleCwgYWxwaGEsIGJwcDsKKworCWlmICghZmIp CisJCXJldHVybjsKKworCWluZGV4ID0gZnNsX3BsYW5lLT5pbmRleDsKKwlnZW0gPSBkcm1fZmJf Y21hX2dldF9nZW1fb2JqKGZiLCAwKTsKKworCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgewor CWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6CisJCWJwcCA9IEZTTF9EQ1VfUkdCNTY1OworCQlhbHBo YSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6CisJCWJwcCA9IEZT TF9EQ1VfUkdCODg4OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1B VF9BUkdCODg4ODoKKwkJYnBwID0gRlNMX0RDVV9BUkdCODg4ODsKKwkJYWxwaGEgPSAweGZmOwor CQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfQkdSQTQ0NDQ6CisJCWJwcCA9IEZTTF9EQ1VfQVJH QjQ0NDQ7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX0FSR0Ix NTU1OgorCQlicHAgPSBGU0xfRENVX0FSR0IxNTU1OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFr OworCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6CisJCWJwcCA9IEZTTF9EQ1VfWVVWNDIyOworCQlh bHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisKKwlyZWdt YXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8xKGluZGV4KSwKKwkJICAg ICBEQ1VfQ1RSTERFU0NMTl8xX0hFSUdIVChzdGF0ZS0+Y3J0Y19oKSB8CisJCSAgICAgRENVX0NU UkxERVNDTE5fMV9XSURUSChzdGF0ZS0+Y3J0Y193KSk7CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYt PnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMihpbmRleCksCisJCSAgICAgRENVX0NUUkxERVNDTE5f Ml9QT1NZKHN0YXRlLT5jcnRjX3kpIHwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8yX1BPU1goc3Rh dGUtPmNydGNfeCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVT Q0xOXzMoaW5kZXgpLCBnZW0tPnBhZGRyKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTl80KGluZGV4KSwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X0VOIHwK KwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X1RSQU5TKGFscGhhKSB8CisJCSAgICAgRENVX0NUUkxE RVNDTE5fNF9CUFAoYnBwKSB8CisJCSAgICAgRENVX0NUUkxERVNDTE5fNF9BQigwKSk7CisJcmVn bWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNShpbmRleCksCisJCSAg ICAgRENVX0NUUkxERVNDTE5fNV9DS01BWF9SKDB4RkYpIHwKKwkJICAgICBEQ1VfQ1RSTERFU0NM Tl81X0NLTUFYX0coMHhGRikgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfQigweEZG KSk7CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNihpbmRl eCksCisJCSAgICAgRENVX0NUUkxERVNDTE5fNl9DS01JTl9SKDApIHwKKwkJICAgICBEQ1VfQ1RS TERFU0NMTl82X0NLTUlOX0coMCkgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fQigw KSk7CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNyhpbmRl eCksIDApOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzgo aW5kZXgpLAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzhfRkdfRkNPTE9SKDApKTsKKwlyZWdtYXBf d3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl85KGluZGV4KSwKKwkJICAgICBE Q1VfQ1RSTERFU0NMTl85X0JHX0JDT0xPUigwKSk7CisJaWYgKG9mX2RldmljZV9pc19jb21wYXRp YmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCXJlZ21hcF93cml0ZShmc2xf ZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzEwKGluZGV4KSwKKwkJCSAgICAgRENVX0NUUkxE RVNDTE5fMTBfUE9TVF9TS0lQKDApIHwKKwkJCSAgICAgRENVX0NUUkxERVNDTE5fMTBfUFJFX1NL SVAoMCkpOworCXJlZ21hcF91cGRhdGVfYml0cyhmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9E RSwKKwkJCSAgIERDVV9NT0RFX0RDVV9NT0RFX01BU0ssCisJCQkgICBEQ1VfTU9ERV9EQ1VfTU9E RShEQ1VfTU9ERV9OT1JNQUwpKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf VVBEQVRFX01PREUsIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKK30KKworaW50IGZzbF9kY3Vf ZHJtX3BsYW5lX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQgZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSkKK3sKKwlmc2xfZGN1X2RybV9wbGFuZV9kaXNhYmxlKHBsYW5lKTsKKwlkcm1fcGxhbmVf Y2xlYW51cChwbGFuZSk7Cit9CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBmc2xfZGN1X2RybV9w bGFuZV9mb3JtYXRzW10gPSB7CisJRFJNX0ZPUk1BVF9SR0I1NjUsCisJRFJNX0ZPUk1BVF9SR0I4 ODgsCisJRFJNX0ZPUk1BVF9BUkdCODg4OCwKKwlEUk1fRk9STUFUX0FSR0I0NDQ0LAorCURSTV9G T1JNQVRfQVJHQjE1NTUsCisJRFJNX0ZPUk1BVF9ZVVY0MjIsCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9mdW5jcyBmc2xfZGN1X2RybV9wbGFuZV9mdW5jcyA9IHsKKwkudXBk YXRlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAorCS5kaXNhYmxlX3Bs YW5lID0gZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFuZSwKKwkuZGVzdHJveSA9IGZzbF9k Y3VfZHJtX3BsYW5lX2Rlc3Ryb3ksCisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRv bWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRl ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwKKwkucmVzZXQgPSBkcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX2hlbHBlcl9mdW5jcyBmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7CisJ LnByZXBhcmVfZmIgPSBmc2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiLAorCS5jbGVhbnVwX2Zi ID0gZnNsX2RjdV9kcm1fcGxhbmVfY2xlYW51cF9mYiwKKwkuYXRvbWljX2NoZWNrID0gZnNsX2Rj dV9kcm1fcGxhbmVfYXRvbWljX2NoZWNrLAorCS5hdG9taWNfdXBkYXRlID0gZnNsX2RjdV9kcm1f cGxhbmVfYXRvbWljX3VwZGF0ZSwKKwkuYXRvbWljX2Rpc2FibGUgPSBmc2xfZGN1X2RybV9wbGFu ZV9hdG9taWNfZGlzYWJsZSwKK307CisKK3N0cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3VfZHJtX3By aW1hcnlfY3JlYXRlX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRy bV9wbGFuZSAqcHJpbWFyeTsKKwlpbnQgcmV0OworCisJcHJpbWFyeSA9IGt6YWxsb2Moc2l6ZW9m KCpwcmltYXJ5KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcmltYXJ5KSB7CisJCURSTV9ERUJVR19L TVMoIkZhaWxlZCB0byBhbGxvY2F0ZSBwcmltYXJ5IHBsYW5lXG4iKTsKKwkJcmV0dXJuIE5VTEw7 CisJfQorCisJLyogcG9zc2libGVfY3J0YydzIHdpbGwgYmUgZmlsbGVkIGluIGxhdGVyIGJ5IGNy dGNfaW5pdCAqLworCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChkZXYsIHByaW1hcnks IDAsCisJCQkJICAgICAgICZmc2xfZGN1X2RybV9wbGFuZV9mdW5jcywKKwkJCQkgICAgICAgZnNs X2RjdV9kcm1fcGxhbmVfZm9ybWF0cywKKwkJCQkgICAgICAgQVJSQVlfU0laRShmc2xfZGN1X2Ry bV9wbGFuZV9mb3JtYXRzKSwKKwkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJ aWYgKHJldCkgeworCQlrZnJlZShwcmltYXJ5KTsKKwkJcHJpbWFyeSA9IE5VTEw7CisJfQorCWRy bV9wbGFuZV9oZWxwZXJfYWRkKHByaW1hcnksICZmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJfZnVu Y3MpOworCisJcmV0dXJuIHByaW1hcnk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fcGxhbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2Jm YTYxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fcGxhbmUuaApAQCAtMCwwICsxLDIzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNj YWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2Ug ZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9f RlNMX0RDVV9EUk1fUExBTkVfSF9fCisjZGVmaW5lIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fCisK K3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7CitzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUgewor CXN0cnVjdCBkcm1fcGxhbmUgcGxhbmU7CisJdW5zaWduZWQgaW50IGluZGV4OworfTsKKworc3Ry dWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX1BMQU5FX0hfXyAqLwot LSAKMi4xLjAuMjcuZzk2ZGIzMjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==