From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v9 1/4] drm/layerscape: Add Freescale DCU DRM driver Date: Mon, 13 Jul 2015 18:51:29 +0800 Message-ID: <1436784692-40560-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, Jianwei Wang , 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 ZmZlciwgb25lIGNydGMsIG9uZSBjb25uZWN0b3IgYW5kIG9uZSBlbmNvZGVyIGZvciBURlQKTENE IHBhbmVsLgoKU2lnbmVkLW9mZi1ieTogQWxpc29uIFdhbmcgPGIxODk2NUBmcmVlc2NhbGUuY29t PgpTaWduZWQtb2ZmLWJ5OiBYaXVibyBMaSA8bGl4aXVib0BjbXNzLmNoaW5hbW9iaWxlLmNvbT4K U2lnbmVkLW9mZi1ieTogSmlhbndlaSBXYW5nIDxiNTIyNjFAZnJlZXNjYWxlLmNvbT4KQWNrZWQt Ynk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClJldmlld2VkLWJ5OiBB bGlzb24gV2FuZyA8YWxpc29uLndhbmdAZnJlZXNjYWxlLmNvbT4KLS0tCgoKQ2hhbmdlZCBpbiBW OQoKLXB1dCBub2RlIGFmdGVyIGNhbGxpbmcgb2ZfZHJtX2ZpbmRfcGFuZWwKLXNwbGl0IGNsa19w cmVwYXJlX2VuYWJsZSgpIHRvIGNsa19wcmVwYXJlKCkgYW5kIGNsa19lbmFibGUoKSwKIGp1c3Qg Y2FsbCBjbGtfcHJlcGFyZSBvbmNlLCBhbmQgY2hlY2sgcmV0dXJuIHZhbHVlCi1jaGVjayByZWdt YXBfd3JpdGUvcmVnbWFwX3JlYWQgcmV0dXJuIHJldHVybiB2YWx1ZQotcmVtb3ZlIHVzZWxlc3Mg Ii5vd25lciAgICA9IFRISVNfTU9EVUxFLCIKQWxsIGFkdmFuY2VkIGJ5IE1hcmsgWWFvCgpDaGFu Z2VkIGluIFY4CgotIFJlbW92ZSB1c2VsZXNzIGNvZGUKI2RlZmluZSBEUklWRVJfTkFNRSAgICAg ImZzbC1kY3UtZHJtIgpNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmZzbC1kY3UtZHJtIik7CkFkdmlj ZWQgYnkgUGF1bCBCb2xsZQoKQ2hhbmdlZCBpbiBWNwoKLSBSZW1vdmUgcmVkdW5kYW50IGZ1bmN0 aW9ucyBhbmQgcmVwbGFjZSBkZXByZWNhdGVkIGhvb2tlcgpBZHZpY2VkIGJ5IERhbmllbCBWZXR0 ZXIKLSBSZXBsYWNlIGRybV9wbGF0Zm9ybV9pbml0IHdpdGggZHJtX2Rldl9hbGxvYy9yZWdpc3Rl cgpBZHZpY2VkIGJ5IERhbmllbCBWZXR0ZXIKCkNoYW5nZWQgaW4gVjYKCi0gQWRkIE5FQyBubDQ4 MjdoYzE5XzA1YiBwYW5lbCB0byBwYW5lbC1zaW1wbGUuYwpBZHZpY2VkIGJ5IE1hcmsgWWFvCi0g QWRkIERSSVZFUl9BVE9NSUMgZm9yIGRyaXZlcl9mZWF0dXJlcwpBZHZpY2VkIGJ5IE1hcmsgWWFv Ci0gY2hlY2sgZnNsX2RldiBpZiBpdCdzIE5VTEwgYXQgUE0gc3VzcGVuZC9yZXN1bWUKQWR2aWNl ZCBieSBNYXJrIFlhbwoKQ2hhbmdlZCBpbiBWNQoKLSBVcGRhdGUgY29tbWl0IG1lc3NhZ2UKLSBB ZGQgbGF5ZXIgcmVnaXN0ZXJzIGluaXRpYWxpemF0aW9uCi0gUmVtb3ZlIHVudXNlZCBmdW5jdGlv bnMKLSBSZW5hbWUgZHJpdmVyIGZvbGRlcgpBZHZpY2VkIGJ5IFN0ZWZhbiBBZ25lcgotIE1vdmUg cGl4ZWwgY2xvY2sgY29udHJvbCBmdW5jdGlvbnMgdG8gZnNsX2RjdV9kcm1fZHJ2LmMKLSByZW1v dmUgcmVkdW5kYW50IGVuYWJsZSB0aGUgY2xvY2sgaW1wbGljaXRseSB1c2luZyByZWdtYXAKLSBB ZGQgbWFpbnRhaW5lciBtZXNzYWdlCgpDaGFuZ2VkIGluIFY0OgoKLVRoaXMgdmVyc2lvbiBkb2Vz bid0IGhhdmUgZnVuY3Rpb25hbGl0eSBjaGFuZ2VkCkp1c3QgYSBtaW5vciBhZGp1c3RtZW50LgoK Q2hhbmdlZCBpbiBWMzoKCi0gVGVzdCBkcml2ZXIgb24gVnlicmlkIGJvYXJkIGFuZCBhZGQgY29t cGF0aWJsZSBzdHJpbmcKLSBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucwotIHNldCBkZWZhdWx0IGNy dGMgZm9yIGVuY29kZXIKLSByZXBsYWNlIGxlZ2FjeSBmdW5jdGlvbnMgd2l0aCBhdG9taWMgaGVs cCBmdW5jdGlvbnMKQWR2aWNlZCBieSBEYW5pZWwgVmV0dGVyCi0gU2V0IHRoZSB1bmlxdWUgbmFt ZSBvZiB0aGUgRFJNIGRldmljZQotIEltcGxlbWVudCBpcnEgaGFuZGxlIGZ1bmN0aW9uIGZvciB2 YmxhbmsgaW50ZXJydXB0CgpDaGFuZ2VkIGluIHYyOiAKLSBBZGQgYXRvbWljIHN1cHBvcnQKQWR2 aWNlZCBieSBEYW5pZWwgVmV0dGVyCi0gTW9kaWZ5IGJpbmRpbmdzIGZpbGUKLSBSZW5hbWUgbm9k ZSBmb3IgY29tcGF0aWJpbGl0eQotIE1vdmUgcGxhdGZvcm0gcmVsYXRlZCBjb2RlIG91dCBmb3Ig Y29tcGF0aWJpbGl0eQpBZHZpY2VkIGJ5IFN0ZWZhbiBBZ25lcgoKCiBNQUlOVEFJTkVSUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0v S2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAxOCArCiBkcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuYyB8IDE4NyArKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaCB8ICAzMSArKwogZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jICAgICAgfCAyMTIgKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaCAgICAgIHwgIDIy ICsrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYyAgICAgICB8IDQ1 MyArKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9k Y3VfZHJtX2Rydi5oICAgICAgIHwgMjIyICsrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fZmJkZXYuYyAgICAgfCAgMjYgKysKIGRyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jICAgICAgIHwgIDQyICsrKwogZHJpdmVycy9ncHUvZHJt L2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmggICAgICAgfCAgMTcgKwogZHJpdmVycy9ncHUvZHJt L2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYyAgICAgfCAyMjcgKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oICAgICB8ICAyMyArKwogMTYg ZmlsZXMgY2hhbmdlZCwgMTQ5OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2Rydi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fZHJ2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9m c2xfZGN1X2RybV9mYmRldi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fa21zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCgpkaWZmIC0tZ2l0IGEv TUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA2NzYxMzE4Li5mZmZiOGM5IDEwMDY0NAot LS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMzQwNCw2ICszNDA0LDE1IEBA IFM6CU1haW50YWluZWQKIEY6CWRyaXZlcnMvZ3B1L2RybS9pbXgvCiBGOglEb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvZHJtL2lteC8KIAorRFJNIERSSVZFUlMgRk9SIEZSRUVTQ0FM RSBEQ1UKK006CUppYW53ZWkgV2FuZyA8amlhbndlaS53YW5nQGZyZWVzY2FsZS5jb20+CitNOglB bGlzb24gV2FuZyA8YWxpc29uLndhbmdAZnJlZXNjYWxlLmNvbT4KK0w6CWRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvCitGOiAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vZnNsLWRj dS8KK0Y6ICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BhbmVsL25lYyxu bDQ4MjdoYzE5XzA1Yi50eHQKKwogRFJNIERSSVZFUlMgRk9SIE5WSURJQSBURUdSQQogTToJVGhp ZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4KIE06CVRlcmplIEJlcmdzdHLD tm0gPHRiZXJnc3Ryb21AbnZpZGlhLmNvbT4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9L Y29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggYzQ2Y2EzMS4uOWNmZDE0ZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJt L0tjb25maWcKQEAgLTIzMSw2ICsyMzEsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS92aXJ0 aW8vS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWciCiAKK3Nv dXJjZSAiZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJz L2dwdS9kcm0vdGVncmEvS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQppbmRleCA1NzEzZDA1Li4xMWNiODFlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC03 MCwzICs3MCw0IEBAIG9iai0kKENPTkZJR19EUk1fSU1YKSArPSBpbXgvCiBvYmoteQkJCSs9IGky Yy8KIG9iai15CQkJKz0gcGFuZWwvCiBvYmoteQkJCSs9IGJyaWRnZS8KK29iai0kKENPTkZJR19E Uk1fRlNMX0RDVSkgKz0gZnNsLWRjdS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZDQ4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnCkBAIC0wLDAgKzEsMTggQEAKK2NvbmZpZyBEUk1f RlNMX0RDVQorCXRyaXN0YXRlICJEUk0gU3VwcG9ydCBmb3IgRnJlZXNjYWxlIERDVSIKKwlkZXBl bmRzIG9uIERSTSAmJiBPRiAmJiBBUk0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlzZWxlY3Qg RFJNX0tNU19DTUFfSEVMUEVSCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCisJc2VsZWN0IEJB Q0tMSUdIVF9DTEFTU19ERVZJQ0UKKwlzZWxlY3QgQkFDS0xJR0hUX0xDRF9TVVBQT1JUCisJc2Vs ZWN0IFJFR01BUF9NTUlPCisJc2VsZWN0IERSTV9LTVNfRkJfSEVMUEVSCisJc2VsZWN0IEZCX1NZ U19GSUxMUkVDVAorCXNlbGVjdCBGQl9TWVNfQ09QWUFSRUEKKwlzZWxlY3QgRkJfU1lTX0lNQUdF QkxJVAorCXNlbGVjdCBGQl9TWVNfRk9QUworCXNlbGVjdCBEUk1fUEFORUwKKwloZWxwCisJICBD aG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYW4gRnJlZXNjYWxlIERDVSBjaGlwc2V0Lgor CSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGZzbC1kY3UtZHJt LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zMzZiNGE2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv TWFrZWZpbGUKQEAgLTAsMCArMSw3IEBACitmc2wtZGN1LWRybS15IDo9IGZzbF9kY3VfZHJtX2Ry di5vIFwKKwkgICAgICAgZnNsX2RjdV9kcm1fa21zLm8gXAorCSAgICAgICBmc2xfZGN1X2RybV9j b25uZWN0b3IubyBcCisJICAgICAgIGZzbF9kY3VfZHJtX3BsYW5lLm8gXAorCSAgICAgICBmc2xf ZGN1X2RybV9jcnRjLm8gXAorCSAgICAgICBmc2xfZGN1X2RybV9mYmRldi5vCitvYmotJChDT05G SUdfRFJNX0ZTTF9EQ1UpCSs9IGZzbC1kY3UtZHJtLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNDFkZDFkMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29w eXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2Nh bGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqLworCisjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+CisKKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9k cm1fcGFuZWwuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZz bF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVy X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgaW50 Citmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCisJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3Rh dGljIHZvaWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKQoreworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9m dW5jcyBlbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKKwkuZW5hYmxlID0gZnNsX2RjdV9kcm1fZW5j b2Rlcl9lbmFibGUsCisJLmRpc2FibGUgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2Rpc2FibGUsCisJ LmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX2VuY29kZXJfYXRvbWljX2NoZWNrLAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBlbmNvZGVyX2Z1bmNzID0gewor CS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kZXN0cm95LAorfTsKKworaW50IGZzbF9k Y3VfZHJtX2VuY29kZXJfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYs CisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciA9ICZmc2xfZGV2LT5lbmNvZGVyOworCWludCByZXQ7CisKKwllbmNvZGVyLT5w b3NzaWJsZV9jcnRjcyA9IDE7CisJcmV0ID0gZHJtX2VuY29kZXJfaW5pdChmc2xfZGV2LT5kZGV2 LCBlbmNvZGVyLCAmZW5jb2Rlcl9mdW5jcywKKwkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX0xW RFMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJZHJtX2VuY29kZXJfaGVscGVy X2FkZChlbmNvZGVyLCAmZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCWVuY29kZXItPmNydGMgPSBj cnRjOworCisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgdG9fZnNsX2RjdV9jb25uZWN0b3IoY29u bmVjdG9yKSBcCisJY29udGFpbmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IGZzbF9kY3VfZHJtX2Nv bm5lY3RvciwgY29ubmVjdG9yKQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9n ZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZnNs X2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29ubmVjdG9yOworCWludCBudW1fbW9kZXMgPSAwOwor CisJZnNsX2Nvbm5lY3RvciA9IHRvX2ZzbF9kY3VfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJaWYg KGZzbF9jb25uZWN0b3ItPnBhbmVsICYmIGZzbF9jb25uZWN0b3ItPnBhbmVsLT5mdW5jcyAmJgor CSAgICBmc2xfY29ubmVjdG9yLT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlcykKKwkJbnVtX21vZGVz ID0gZnNsX2Nvbm5lY3Rvci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMKKwkJCQkoZnNsX2Nvbm5l Y3Rvci0+cGFuZWwpOworCisJcmV0dXJuIG51bV9tb2RlczsKK30KKworc3RhdGljIGludCBmc2xf ZGN1X2RybV9jb25uZWN0b3JfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAorCQkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJcmV0dXJu IE1PREVfT0s7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKgorZnNsX2RjdV9kcm1f Y29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQor eworCXN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgKmZzbF9jb24gPSB0b19mc2xfZGN1X2Nv bm5lY3Rvcihjb25uZWN0b3IpOworCisJcmV0dXJuIGZzbF9jb24tPmVuY29kZXI7Cit9CisKK3N0 YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCit7CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7 CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzCitmc2xfZGN1X2RybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJcmV0dXJuIGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfZnVuY3MgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Z1bmNzID0geworCS5kcG1zID0gZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX3Jlc2V0LAorCS5kZXRlY3QgPSBmc2xfZGN1X2RybV9jb25uZWN0b3JfZGV0ZWN0 LAorCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVz LAorCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCisJLmF0b21pY19k dXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kZXN0cm95X3N0YXRlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X2hlbHBlcl9mdW5jcyBjb25uZWN0b3JfaGVscGVyX2Z1bmNzID0geworCS5nZXRfbW9kZXMgPSBm c2xfZGN1X2RybV9jb25uZWN0b3JfZ2V0X21vZGVzLAorCS5tb2RlX3ZhbGlkID0gZnNsX2RjdV9k cm1fY29ubmVjdG9yX21vZGVfdmFsaWQsCisJLmJlc3RfZW5jb2RlciA9IGZzbF9kY3VfZHJtX2Nv bm5lY3Rvcl9iZXN0X2VuY29kZXIsCit9OworCitpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Ny ZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJCSBzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9 ICZmc2xfZGV2LT5jb25uZWN0b3IuY29ubmVjdG9yOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFu ZWxfbm9kZTsKKwlpbnQgcmV0OworCisJZnNsX2Rldi0+Y29ubmVjdG9yLmVuY29kZXIgPSBlbmNv ZGVyOworCisJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSAwOworCWNvbm5lY3Rv ci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IDA7CisKKwlyZXQgPSBkcm1fY29ubmVjdG9yX2lu aXQoZnNsX2Rldi0+ZGRldiwgY29ubmVjdG9yLAorCQkJCSAmZnNsX2RjdV9kcm1fY29ubmVjdG9y X2Z1bmNzLAorCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfTFZEUyk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwljb25uZWN0b3ItPmRwbXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKKwlk cm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmY29ubmVjdG9yX2hlbHBlcl9mdW5j cyk7CisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOworCWlmIChyZXQg PCAwKQorCQlnb3RvIGVycl9jbGVhbnVwOworCisJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0 dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8g ZXJyX3N5c2ZzOworCisJY29ubmVjdG9yLT5lbmNvZGVyID0gZW5jb2RlcjsKKworCWRybV9vYmpl Y3RfcHJvcGVydHlfc2V0X3ZhbHVlCisJCSgmY29ubmVjdG9yLT5iYXNlLCBmc2xfZGV2LT5kZGV2 LT5tb2RlX2NvbmZpZy5kcG1zX3Byb3BlcnR5LAorCQlEUk1fTU9ERV9EUE1TX09GRik7CisKKwlw YW5lbF9ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShmc2xfZGV2LT5ucCwgInBhbmVsIiwgMCk7CisJ aWYgKHBhbmVsX25vZGUpIHsKKwkJZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsID0gb2ZfZHJtX2Zp bmRfcGFuZWwocGFuZWxfbm9kZSk7CisJCWlmICghZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsKSB7 CisJCQlvZl9ub2RlX3B1dChwYW5lbF9ub2RlKTsKKwkJCXJldCA9IC1FUFJPQkVfREVGRVI7CisJ CQlnb3RvIGVycl9zeXNmczsKKwkJfQorCX0KKwlvZl9ub2RlX3B1dChwYW5lbF9ub2RlKTsKKwor CXJldCA9IGRybV9wYW5lbF9hdHRhY2goZnNsX2Rldi0+Y29ubmVjdG9yLnBhbmVsLCBjb25uZWN0 b3IpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJmYWlsZWQgdG8gYXR0 YWNoIHBhbmVsXG4iKTsKKwkJZ290byBlcnJfc3lzZnM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vy cl9zeXNmczoKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKK2Vycl9jbGVh bnVwOgorCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworCXJldHVybiByZXQ7Cit9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0 b3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjM2RiYjIKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaApAQCAt MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0 b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ09O TkVDVE9SX0hfXworI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18KKworI2luY2x1 ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSAiZnNs X2RjdV9kcm1fY3J0Yy5oIgorCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOworc3RydWN0IGZz bF9kY3VfZHJtX2Nvbm5lY3RvciB7CisJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwor CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsK K307CisKK2ludCBmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1f ZGV2aWNlICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CitpbnQg ZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpm c2xfZGV2LAorCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOworCisjZW5kaWYgLyog X19GU0xfRENVX0RSTV9DT05ORUNUT1JfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9m c2xfZGN1X2RybV9jcnRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY2 OTYyOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX2NydGMuYwpAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVz Y2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNl IGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUg PGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSA8ZHJt L2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorCisjaW5jbHVkZSAi ZnNsX2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1 ZGUgImZzbF9kY3VfZHJtX3BsYW5lLmgiCisKKyNkZWZpbmUgdG9fZnNsX2RjdV9jcnRjKGMpCWNv bnRhaW5lcl9vZihjLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY3J0YywgY3J0YykKKworc3RhdGljIHZv aWQgZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK K3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBmc2xfZGN1 X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlID0gJmNydGMtPnN0YXRlLT5tb2RlOworCXVpbnQzMl90IGhicCwgaGZw LCBoc3csIHZicCwgdmZwLCB2c3csIGRpdiwgaW5kZXg7CisJaW50IGVycjsKKworCURCRygiOiBz ZXQgbW9kZTogJWQ6XCIlc1wiICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkIDB4JXggMHgl eCIsCisJICAgIG1vZGUtPmJhc2UuaWQsIG1vZGUtPm5hbWUsCisJICAgIG1vZGUtPnZyZWZyZXNo LCBtb2RlLT5jbG9jaywKKwkgICAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPmhzeW5jX3N0YXJ0LAor CSAgICBtb2RlLT5oc3luY19lbmQsIG1vZGUtPmh0b3RhbCwKKwkgICAgbW9kZS0+dmRpc3BsYXks IG1vZGUtPnZzeW5jX3N0YXJ0LAorCSAgICBtb2RlLT52c3luY19lbmQsIG1vZGUtPnZ0b3RhbCwK KwkgICAgbW9kZS0+dHlwZSwgbW9kZS0+ZmxhZ3MpOworCisJaW5kZXggPSBkcm1fY3J0Y19pbmRl eChjcnRjKTsKKwlkaXYgPSAodWludDMyX3QpY2xrX2dldF9yYXRlKGZzbF9kZXYtPmNsaykgLyBt b2RlLT5jbG9jayAvIDEwMDA7CisKKwkvKiBDb25maWd1cmUgdGltaW5nczogKi8KKwloYnAgPSBt b2RlLT5odG90YWwgLSBtb2RlLT5oc3luY19lbmQ7CisJaGZwID0gbW9kZS0+aHN5bmNfc3RhcnQg LSBtb2RlLT5oZGlzcGxheTsKKwloc3cgPSBtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19z dGFydDsKKwl2YnAgPSBtb2RlLT52dG90YWwgLSBtb2RlLT52c3luY19lbmQ7CisJdmZwID0gbW9k ZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheTsKKwl2c3cgPSBtb2RlLT52c3luY19lbmQg LSBtb2RlLT52c3luY19zdGFydDsKKworCWVyciA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9IU1lOX1BBUkEsCisJCQkgICBEQ1VfSFNZTl9QQVJBX0JQKGhicCkgfAorCQkJICAg RENVX0hTWU5fUEFSQV9QVyhoc3cpIHwKKwkJCSAgIERDVV9IU1lOX1BBUkFfRlAoaGZwKSk7CisJ aWYgKGVycikKKwkJZ290byBzZXRfZmFpbGVkOworCWVyciA9IHJlZ21hcF93cml0ZShmc2xfZGV2 LT5yZWdtYXAsIERDVV9WU1lOX1BBUkEsCisJCQkgICBEQ1VfVlNZTl9QQVJBX0JQKHZicCkgfAor CQkJICAgRENVX1ZTWU5fUEFSQV9QVyh2c3cpIHwKKwkJCSAgIERDVV9WU1lOX1BBUkFfRlAodmZw KSk7CisJaWYgKGVycikKKwkJZ290byBzZXRfZmFpbGVkOworCWVyciA9IHJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9ESVNQX1NJWkUsCisJCQkgICBEQ1VfRElTUF9TSVpFX0RFTFRB X1kobW9kZS0+dmRpc3BsYXkpIHwKKwkJCSAgIERDVV9ESVNQX1NJWkVfREVMVEFfWChtb2RlLT5o ZGlzcGxheSkpOworCWlmIChlcnIpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwllcnIgPSByZWdtYXBf d3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfRElWX1JBVElPLCBkaXYpOworCWlmIChlcnIpCisJ CWdvdG8gc2V0X2ZhaWxlZDsKKwllcnIgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBE Q1VfVVBEQVRFX01PREUsCisJCQkgICBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisJaWYgKGVy cikKKwkJZ290byBzZXRfZmFpbGVkOworCXJldHVybjsKK3NldF9mYWlsZWQ6CisJZGV2X2Vycihk ZXYtPmRldiwgInNldCBEQ1UgcmVnaXN0ZXIgZmFpbGVkXG4iKTsKK30KKworc3RhdGljIGJvb2wg ZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkJ Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMg dm9pZCBmc2xfZGN1X2RybV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9 CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9j cnRjICpjcnRjLAorCQkJCQkgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfYmVnaW4oc3Ry dWN0IGRybV9jcnRjICpjcnRjKQoreworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRj X2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyB2b2lk IGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgZnNsX2RjdV9kcm1fY3J0Y19mdW5j cyA9IHsKKwkucGFnZV9mbGlwID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAorCS5zZXRf Y29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKKwkuZGVzdHJveSA9IGRybV9j cnRjX2NsZWFudXAsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKKwku YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRl X3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNf ZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVy X2Z1bmNzIGZzbF9kY3VfZHJtX2NydGNfaGVscGVyX2Z1bmNzID0geworCS5lbmFibGUgPSBmc2xf ZGN1X2RybV9jcnRjX2VuYWJsZSwKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0 YywKKwkubW9kZV9maXh1cCA9IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9maXh1cCwKKwkubW9kZV9z ZXRfbm9mYiA9IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9zZXRfbm9mYiwKKwkuYXRvbWljX2NoZWNr ID0gZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfY2hlY2ssCisJLmF0b21pY19iZWdpbiA9IGZzbF9k Y3VfZHJtX2NydGNfYXRvbWljX2JlZ2luLAorCS5hdG9taWNfZmx1c2ggPSBmc2xfZGN1X2RybV9j cnRjX2F0b21pY19mbHVzaCwKK307CisKK2ludCBmc2xfZGN1X2RybV9jcnRjX2NyZWF0ZShzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KQoreworCXN0cnVjdCBkcm1fcGxhbmUgKnBy aW1hcnk7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmZzbF9kZXYtPmNydGM7CisJaW50IGks IHJldDsKKworCXByaW1hcnkgPSBmc2xfZGN1X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShmc2xf ZGV2LT5kZGV2KTsKKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGZzbF9kZXYtPmRk ZXYsIGNydGMsIHByaW1hcnksIE5VTEwsCisJCQkJCSZmc2xfZGN1X2RybV9jcnRjX2Z1bmNzKTsK KwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0 YywgJmZzbF9kY3VfZHJtX2NydGNfaGVscGVyX2Z1bmNzKTsKKworCWZvciAoaSA9IDA7IGkgPCBE Q1VfVE9UQUxfTEFZRVJfTlVNOyBpKyspIHsKKwkJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYt PnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMShpKSwgMCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGlu aXRfZmFpbGVkOworCQlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RS TERFU0NMTl8yKGkpLCAwKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gaW5pdF9mYWlsZWQ7CisJCXJl dCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzMoaSksIDAp OworCQlpZiAocmV0KQorCQkJZ290byBpbml0X2ZhaWxlZDsKKwkJcmV0ID0gcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNChpKSwgMCk7CisJCWlmIChyZXQpCisJ CQlnb3RvIGluaXRfZmFpbGVkOworCQlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTl81KGkpLCAwKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gaW5pdF9mYWls ZWQ7CisJCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xO XzYoaSksIDApOworCQlpZiAocmV0KQorCQkJZ290byBpbml0X2ZhaWxlZDsKKwkJcmV0ID0gcmVn bWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNyhpKSwgMCk7CisJCWlm IChyZXQpCisJCQlnb3RvIGluaXRfZmFpbGVkOworCQlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl84KGkpLCAwKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8g aW5pdF9mYWlsZWQ7CisJCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9D VFJMREVTQ0xOXzkoaSksIDApOworCQlpZiAocmV0KQorCQkJZ290byBpbml0X2ZhaWxlZDsKKwkJ aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1 IikpIHsKKwkJCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsCisJCQkJCSAgIERD VV9DVFJMREVTQ0xOXzEwKGkpLCAwKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBpbml0X2ZhaWxl ZDsKKwkJfQorCX0KKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfU1lO X1BPTCwKKwkJCSAgIERDVV9TWU5fUE9MX0lOVl9WU19MT1cgfCBEQ1VfU1lOX1BPTF9JTlZfSFNf TE9XKTsKKwlpZiAocmV0KQorCQlnb3RvIGluaXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0 ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9CR05ELCBEQ1VfQkdORF9SKDApIHwKKwkJCSAgIERDVV9C R05EX0coMCkgfCBEQ1VfQkdORF9CKDApKTsKKwlpZiAocmV0KQorCQlnb3RvIGluaXRfZmFpbGVk OworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9ERSwKKwkJ CSAgIERDVV9NT0RFX0JMRU5EX0lURVIoMSkgfCBEQ1VfTU9ERV9SQVNURVJfRU4pOworCWlmIChy ZXQpCisJCWdvdG8gaW5pdF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJl Z21hcCwgRENVX1RIUkVTSE9MRCwKKwkJCSAgIERDVV9USFJFU0hPTERfTFNfQkZfVlMoQkZfVlNf VkFMKSB8CisJCQkgICBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfSElHSChCVUZfTUFYX1ZBTCkgfAor CQkJICAgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xPVyhCVUZfTUlOX1ZBTCkpOworCWlmIChyZXQp CisJCWdvdG8gaW5pdF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYt PnJlZ21hcCwgRENVX0RDVV9NT0RFLAorCQkJCSBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNLLAorCQkJ CSBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9ERV9PRkYpKTsKKwlpZiAocmV0KQorCQlnb3RvIGlu aXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERB VEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKKwlpZiAocmV0KQorCQln b3RvIGluaXRfZmFpbGVkOworCisJcmV0dXJuIDA7Citpbml0X2ZhaWxlZDoKKwlkZXZfZXJyKGZz bF9kZXYtPmRldiwgImluaXQgRENVIHJlZ2lzdGVyIGZhaWxlZFxuIik7CisJcmV0dXJuIHJldDsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMu aCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM3ODVmCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5oCkBAIC0wLDAgKzEsMjIgQEAK Ky8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoK KyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9DUlRDX0hfXworI2RlZmlu ZSBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1 ZGUgPGRybS9kcm1fY3J0Yy5oPgorCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOworCitpbnQg ZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl dik7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjZjNWJiOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9mc2xfZGN1X2RybV9kcnYuYwpAQCAtMCwwICsxLDQ1MyBAQAorLyoKKyAqIENvcHlyaWdodCAy MDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBk cm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICog dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKwor I2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8 bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9v Zl9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1 ZGUgPGxpbnV4L3BtLmg+CisjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1ZGUg PGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KKworI2luY2x1 ZGUgPGRybS9kcm1QLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKKyNpbmNsdWRl ICJmc2xfZGN1X2RybV9jcnRjLmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fa21zLmgiCisKK3N0 YXRpYyBpbnQgZnNsX2RjdV91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlkcm1f bW9kZV9jb25maWdfY2xlYW51cChkZXYpOworCWRybV92YmxhbmtfY2xlYW51cChkZXYpOworCWRy bV9pcnFfdW5pbnN0YWxsKGRldik7CisKKwlkZXYtPmRldl9wcml2YXRlID0gTlVMTDsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHJlZ21hcF9jb25maWcgZnNsX2RjdV9yZWdtYXBf Y29uZmlnID0geworCS5yZWdfYml0cyA9IDMyLAorCS5yZWdfc3RyaWRlID0gNCwKKwkudmFsX2Jp dHMgPSAzMiwKK307CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9ieXBhc3NfdGNvbihzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAq bnApCit7CisJc3RydWN0IGRldmljZV9ub2RlICp0Y29uX25wOworCXN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXY7CisJc3RydWN0IGNsayAqdGNvbl9jbGs7CisJc3RydWN0IHJlc291cmNlICpy ZXM7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCWludCByZXQ7CisKKwl0Y29uX25wID0gb2ZfcGFy c2VfcGhhbmRsZShucCwgInRjb24tY29udHJvbGxlciIsIDApOworCWlmICghdGNvbl9ucCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZSh0Y29uX25w KTsKKwlpZiAoIXBkZXYpCisJCXJldHVybiAtRUlOVkFMOworCisJdGNvbl9jbGsgPSBkZXZtX2Ns a19nZXQoJnBkZXYtPmRldiwgInRjb24iKTsKKwlpZiAoSVNfRVJSKHRjb25fY2xrKSkKKwkJcmV0 dXJuIFBUUl9FUlIodGNvbl9jbGspOworCXJldCA9IGNsa19wcmVwYXJlKHRjb25fY2xrKTsKKwlp ZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gcHJlcGFyZSB0 Y29uIGNsa1xuIik7CisJCXJldHVybiByZXQ7CisJfQorCXJldCA9IGNsa19lbmFibGUodGNvbl9j bGspOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBl bmFibGUgdGNvbiBjbGtcbiIpOworCQljbGtfdW5wcmVwYXJlKHRjb25fY2xrKTsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJD RV9NRU0sIDApOworCWlmICghcmVzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWJhc2UgPSBkZXZt X2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGJhc2UpKQor CQlyZXR1cm4gUFRSX0VSUihiYXNlKTsKKworCWZzbF9kZXYtPnRjb25fcmVnbWFwID0gZGV2bV9y ZWdtYXBfaW5pdF9tbWlvKCZwZGV2LT5kZXYsCisJCQliYXNlLCAmZnNsX2RjdV9yZWdtYXBfY29u ZmlnKTsKKwlpZiAoSVNfRVJSKGZzbF9kZXYtPnRjb25fcmVnbWFwKSkgeworCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJyZWdtYXAgaW5pdCBmYWlsZWRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihmc2xf ZGV2LT50Y29uX3JlZ21hcCk7CisJfQorCisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnRj b25fcmVnbWFwLAorCQkJICAgVENPTl9DVFJMMSwgVENPTl9CWVBBU1NfRU5BQkxFKTsKKwlpZiAo cmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInNldCBUQ09OX0NUUkwxIGZhaWxlZFxuIik7 CisJCXJldHVybiByZXQ7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkY3VfcGl4 Y2xrX2VuYWJsZSh2b2lkKQoreworCXN0cnVjdCByZWdtYXAgKnNjZmdfcmVnbWFwOworCisJc2Nm Z19yZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRpYmxlKCJmc2wsbHMxMDIx YS1zY2ZnIik7CisJaWYgKElTX0VSUihzY2ZnX3JlZ21hcCkpIHsKKwkJcHJfZXJyKCJObyBzeXNj ZmcgcGhhbmRsZSBzcGVjaWZpZWRcbiIpOworCQlyZXR1cm47CisJfQorCisJcmVnbWFwX3dyaXRl KHNjZmdfcmVnbWFwLCBTQ0ZHX1BJWENMS0NSLCBQWENLX0VOQUJMRSk7Cit9CisKK3N0YXRpYyBp bnQgZnNsX2RjdV9kcm1faXJxX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldi0+ZGV2KTsK KwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK Kwl1bnNpZ25lZCBpbnQgaW50X21hc2s7CisJaW50IHJldDsKKworCXJldCA9IGRybV9pcnFfaW5z dGFsbChkZXYsIHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCkpOworCWlmIChyZXQgPCAwKQorCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5zdGFsbCBJUlEgaGFuZGxlclxuIik7CisK KwlkZXYtPmlycV9lbmFibGVkID0gdHJ1ZTsKKwlkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQg PSB0cnVlOworCisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9T VEFUVVMsIDApOworCWlmIChyZXQpCisJCWRldl9lcnIoJnBkZXYtPmRldiwgInNldCBEQ1VfSU5U X1NUQVRVUyBmYWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwg RENVX0lOVF9NQVNLLCAmaW50X21hc2spOworCWlmIChyZXQpCisJCWRldl9lcnIoJnBkZXYtPmRl diwgInJlYWQgRENVX0lOVF9NQVNLIGZhaWxlZFxuIik7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCBpbnRfbWFzayAmCisJCQkgICB+RENVX0lOVF9N QVNLX1ZCTEFOSyk7CisJaWYgKHJldCkKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAic2V0IERDVV9J TlRfTUFTSyBmYWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9VUERBVEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKKwlpZiAo cmV0KQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJzZXQgRENVX1VQREFURV9NT0RFIGZhaWxlZFxu Iik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2xvYWQoc3RydWN0IGRy bV9kZXZpY2UgKmRkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gZGRldi0+ZGV2OworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0 Zm9ybV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2Owor CXN0cnVjdCByZXNvdXJjZSAqcmVzOworCXZvaWQgX19pb21lbSAqYmFzZTsKKwlpbnQgcmV0Owor CisJZnNsX2RldiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZnNsX2RldiksIEdGUF9LRVJO RUwpOworCWlmICghZnNsX2RldikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmc2xfZGV2LT5kZXYg PSBkZXY7CisJZnNsX2Rldi0+ZGRldiA9IGRkZXY7CisJZnNsX2Rldi0+bnAgPSBkZXYtPm9mX25v ZGU7CisJZGRldi0+ZGV2X3ByaXZhdGUgPSBmc2xfZGV2OworCWRldl9zZXRfZHJ2ZGF0YShkZXYs IGZzbF9kZXYpOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VS Q0VfTUVNLCAwKTsKKwlpZiAoIXJlcykgeworCQlkZXZfZXJyKGRldiwgImNvdWxkIG5vdCBnZXQg bWVtb3J5IElPIHJlc291cmNlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJYmFzZSA9 IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUihiYXNlKSkgewor CQlyZXQgPSBQVFJfRVJSKGJhc2UpOworCQlyZXR1cm4gcmV0OworCX0KKworCWZzbF9kZXYtPmNs ayA9IGRldm1fY2xrX2dldChkZXYsICJkY3UiKTsKKwlpZiAoSVNfRVJSKGZzbF9kZXYtPmNsaykp IHsKKwkJcmV0ID0gUFRSX0VSUihmc2xfZGV2LT5jbGspOworCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBnZXQgZGN1IGNsb2NrXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0ID0gY2xrX3By ZXBhcmUoZnNsX2Rldi0+Y2xrKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBwcmVwYXJlIGRjdSBjbGtcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKwlyZXQgPSBj bGtfZW5hYmxlKGZzbF9kZXYtPmNsayk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYs ICJmYWlsZWQgdG8gZW5hYmxlIGRjdSBjbGtcbiIpOworCQljbGtfdW5wcmVwYXJlKGZzbF9kZXYt PmNsayk7CisJCXJldHVybiByZXQ7CisJfQorCisJZnNsX2Rldi0+cmVnbWFwID0gZGV2bV9yZWdt YXBfaW5pdF9tbWlvKGRldiwgYmFzZSwKKwkJCSZmc2xfZGN1X3JlZ21hcF9jb25maWcpOworCWlm IChJU19FUlIoZnNsX2Rldi0+cmVnbWFwKSkgeworCQlkZXZfZXJyKGRldiwgInJlZ21hcCBpbml0 IGZhaWxlZFxuIik7CisJCXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnJlZ21hcCk7CisJfQorCisJ LyogUHV0IFRDT04gaW4gYnlwYXNzIG1vZGUsIHNvIHRoZSBpbnB1dCBzaWduYWxzIGZyb20gRENV IGFyZSBwYXNzZWQKKwkgKiB0aHJvdWdoIFRDT04gdW5jaGFuZ2VkICovCisJZnNsX2RjdV9ieXBh c3NfdGNvbihmc2xfZGV2LCBmc2xfZGV2LT5ucCk7CisKKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBh dGlibGUoZnNsX2Rldi0+bnAsICJmc2wsbHMxMDIxYS1kY3UiKSkKKwkJZGN1X3BpeGNsa19lbmFi bGUoKTsKKwlyZXQgPSBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoZnNsX2Rldik7CisJaWYgKHJl dCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBtb2RlIHNldHRp bmdcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGRybV92YmxhbmtfaW5pdChkZGV2 LCBkZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0Yyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSB2YmxhbmtcbiIpOworCQlnb3RvIGRvbmU7CisJ fQorCisJcmV0ID0gZnNsX2RjdV9kcm1faXJxX2luaXQoZGRldik7CisJaWYgKHJldCA8IDApCisJ CWdvdG8gZG9uZTsKKworCWZzbF9kY3VfZmJkZXZfaW5pdChkZGV2KTsKKworCXJldHVybiAwOwor ZG9uZToKKwlpZiAocmV0KQorCQlmc2xfZGN1X3VubG9hZChkZGV2KTsKKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKK30KKworc3RhdGljIGlycXJldHVybl90 IGZzbF9kY3VfZHJtX2lycShpbnQgaXJxLCB2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGFyZzsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgaW50X3N0YXR1czsKKwlpbnQgcmV0OworCisJ cmVnbWFwX3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgJmludF9zdGF0dXMp OworCWlmIChpbnRfc3RhdHVzICYgRENVX0lOVF9TVEFUVVNfVkJMQU5LKQorCQlkcm1faGFuZGxl X3ZibGFuayhkZXYsIDApOworCisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0lOVF9TVEFUVVMsIDB4ZmZmZmZmZmYpOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LT5k ZXYsICJzZXQgRENVX0lOVF9TVEFUVVMgZmFpbGVkXG4iKTsKKwlyZXQgPSByZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsCisJCQkgICBEQ1VfVVBEQVRFX01PREVf UkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInNldCBEQ1VfVVBEQVRF X01PREUgZmFpbGVkXG4iKTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGlu dCBmc2xfZGN1X2RybV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBj cnRjKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9kaXNhYmxl X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnNsX2RjdV9kcm1fZm9wcyA9IHsKKwkub3du ZXIJCT0gVEhJU19NT0RVTEUsCisJLm9wZW4JCT0gZHJtX29wZW4sCisJLnJlbGVhc2UJPSBkcm1f cmVsZWFzZSwKKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCisjaWZkZWYgQ09ORklHX0NP TVBBVAorCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAorI2VuZGlmCisJLnBvbGwJ CT0gZHJtX3BvbGwsCisJLnJlYWQJCT0gZHJtX3JlYWQsCisJLmxsc2VlawkJPSBub19sbHNlZWss CisJLm1tYXAJCT0gZHJtX2dlbV9jbWFfbW1hcCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Ry aXZlciBmc2xfZGN1X2RybV9kcml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9I QVZFX0lSUSB8IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVAorCQkJCXwgRFJJVkVSX1BSSU1F IHwgRFJJVkVSX0FUT01JQywKKwkubG9hZAkJCT0gZnNsX2RjdV9sb2FkLAorCS51bmxvYWQJCQk9 IGZzbF9kY3VfdW5sb2FkLAorCS5wcmVjbG9zZQkJPSBmc2xfZGN1X2RybV9wcmVjbG9zZSwKKwku aXJxX2hhbmRsZXIJCT0gZnNsX2RjdV9kcm1faXJxLAorCS5nZXRfdmJsYW5rX2NvdW50ZXIJPSBk cm1fdmJsYW5rX2NvdW50LAorCS5lbmFibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2VuYWJsZV92 YmxhbmssCisJLmRpc2FibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJsYW5rLAor CS5nZW1fZnJlZV9vYmplY3QJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKKwkuZ2VtX3ZtX29w cwkJPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5wcmltZV9oYW5kbGVfdG9fZmQJPSBkcm1fZ2Vt X3ByaW1lX2hhbmRsZV90b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dlbV9wcmlt ZV9mZF90b19oYW5kbGUsCisJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1fZ2VtX3ByaW1lX2ltcG9y dCwKKwkuZ2VtX3ByaW1lX2V4cG9ydAk9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJp bWVfZ2V0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1f cHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxl LAorCS5nZW1fcHJpbWVfdm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJp bWVfdnVubWFwCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcAkJ PSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAorCS5kdW1iX2NyZWF0ZQkJPSBkcm1fZ2VtX2NtYV9k dW1iX2NyZWF0ZSwKKwkuZHVtYl9tYXBfb2Zmc2V0CT0gZHJtX2dlbV9jbWFfZHVtYl9tYXBfb2Zm c2V0LAorCS5kdW1iX2Rlc3Ryb3kJCT0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCisJLmZvcHMJCQk9 ICZmc2xfZGN1X2RybV9mb3BzLAorCS5uYW1lCQkJPSAiZnNsLWRjdS1kcm0iLAorCS5kZXNjCQkJ PSAiRnJlZXNjYWxlIERDVSBEUk0iLAorCS5kYXRlCQkJPSAiMjAxNTAyMTMiLAorCS5tYWpvcgkJ CT0gMSwKKwkubWlub3IJCQk9IDAsCit9OworCisjaWZkZWYgQ09ORklHX1BNX1NMRUVQCitzdGF0 aWMgdm9pZCBkY3VfcGl4Y2xrX2Rpc2FibGUodm9pZCkKK3sKKwlzdHJ1Y3QgcmVnbWFwICpzY2Zn X3JlZ21hcDsKKworCXNjZmdfcmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfY29tcGF0 aWJsZSgiZnNsLGxzMTAyMWEtc2NmZyIpOworCWlmIChJU19FUlIoc2NmZ19yZWdtYXApKSB7CisJ CXByX2VycigiTm8gc3lzY2ZnIHBoYW5kbGUgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJuOworCX0K KworCXJlZ21hcF93cml0ZShzY2ZnX3JlZ21hcCwgU0NGR19QSVhDTEtDUiwgUFhDS19ESVNBQkxF KTsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9k cnZkYXRhKGRldik7CisKKwlpZiAoIWZzbF9kZXYpCisJCXJldHVybiAwOworCisJaWYgKG9mX2Rl dmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCWRj dV9waXhjbGtfZGlzYWJsZSgpOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9kaXNhYmxlKGZzbF9k ZXYtPmRkZXYpOworCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rldi0+cmVnbWFwLCB0cnVlKTsK KwlyZWdjYWNoZV9tYXJrX2RpcnR5KGZzbF9kZXYtPnJlZ21hcCk7CisJY2xrX2Rpc2FibGUoZnNs X2Rldi0+Y2xrKTsKKworCWlmIChmc2xfZGV2LT50Y29uX3JlZ21hcCkgeworCQlyZWdjYWNoZV9j YWNoZV9vbmx5KGZzbF9kZXYtPnRjb25fcmVnbWFwLCB0cnVlKTsKKwkJcmVnY2FjaGVfbWFya19k aXJ0eShmc2xfZGV2LT50Y29uX3JlZ21hcCk7CisJCWNsa19kaXNhYmxlKGZzbF9kZXYtPnRjb25f Y2xrKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9y ZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJaWYgKCFmc2xf ZGV2KQorCQlyZXR1cm4gMDsKKworCS8qIEVuYWJsZSBjbG9ja3MgYW5kIHJlc3RvcmUgYWxsIHJl Z2lzdGVycyAqLworCWlmIChmc2xfZGV2LT50Y29uX3JlZ21hcCkgeworCQlyZXQgPSBjbGtfZW5h YmxlKGZzbF9kZXYtPnRjb25fY2xrKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWRldl9lcnIoZGV2 LCAiZmFpbGVkIHRvIGVuYWJsZSB0Y29uIGNsa1xuIik7CisJCQljbGtfdW5wcmVwYXJlKGZzbF9k ZXYtPnRjb25fY2xrKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwkJcmVnY2FjaGVfY2FjaGVfb25s eShmc2xfZGV2LT50Y29uX3JlZ21hcCwgZmFsc2UpOworCQlyZWdjYWNoZV9zeW5jKGZzbF9kZXYt PnRjb25fcmVnbWFwKTsKKwl9CisKKwlyZXQgPSBjbGtfZW5hYmxlKGZzbF9kZXYtPmNsayk7CisJ aWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIGRjdSBjbGtc biIpOworCQljbGtfdW5wcmVwYXJlKGZzbF9kZXYtPmNsayk7CisJCXJldHVybiByZXQ7CisJfQor CisJZHJtX2ttc19oZWxwZXJfcG9sbF9lbmFibGUoZnNsX2Rldi0+ZGRldik7CisJcmVnY2FjaGVf Y2FjaGVfb25seShmc2xfZGV2LT5yZWdtYXAsIGZhbHNlKTsKKwlyZWdjYWNoZV9zeW5jKGZzbF9k ZXYtPnJlZ21hcCk7CisKKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZnNsX2Rldi0+bnAs ICJmc2wsbHMxMDIxYS1kY3UiKSkKKwkJZGN1X3BpeGNsa19lbmFibGUoKTsKKworCXJldHVybiAw OworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmc2xfZGN1X2Ry bV9wbV9vcHMgPSB7CisJU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoZnNsX2RjdV9kcm1fcG1fc3Vz cGVuZCwgZnNsX2RjdV9kcm1fcG1fcmVzdW1lKQorfTsKKworc3RhdGljIGludCBmc2xfZGN1X2Ry bV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkcm1fZHJp dmVyICpkcml2ZXIgPSAmZnNsX2RjdV9kcm1fZHJpdmVyOworCXN0cnVjdCBkcm1fZGV2aWNlICpk cm07CisJaW50IGVycjsKKworCWRybSA9IGRybV9kZXZfYWxsb2MoZHJpdmVyLCAmcGRldi0+ZGV2 KTsKKwlpZiAoIWRybSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkcm1fZGV2X3NldF91bmlxdWUo ZHJtLCBkZXZfbmFtZSgmcGRldi0+ZGV2KSk7CisKKwllcnIgPSBkcm1fZGV2X3JlZ2lzdGVyKGRy bSwgMCk7CisJaWYgKGVyciA8IDApCisJCWdvdG8gdW5yZWY7CisKKwlEUk1fSU5GTygiSW5pdGlh bGl6ZWQgJXMgJWQuJWQuJWQgJXMgb24gbWlub3IgJWRcbiIsIGRyaXZlci0+bmFtZSwKKwkJIGRy aXZlci0+bWFqb3IsIGRyaXZlci0+bWlub3IsIGRyaXZlci0+cGF0Y2hsZXZlbCwKKwkJIGRyaXZl ci0+ZGF0ZSwgZHJtLT5wcmltYXJ5LT5pbmRleCk7CisKKwlyZXR1cm4gMDsKKwordW5yZWY6CisJ ZHJtX2Rldl91bnJlZihkcm0pOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgZnNsX2Rj dV9kcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGZz bF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwor CisJZHJtX3B1dF9kZXYoZnNsX2Rldi0+ZGRldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZnNsX2RjdV9vZl9tYXRjaFtdID0geworCQl7IC5j b21wYXRpYmxlID0gImZzbCxsczEwMjFhLWRjdSIsIH0sCisJCXsgLmNvbXBhdGlibGUgPSAiZnNs LHZmNjEwLWRjdSIsIH0sCisJCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBmc2xf ZGN1X29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNsX2RjdV9k cm1fcGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZQkJPSBmc2xfZGN1X2RybV9wcm9iZSwKKwku cmVtb3ZlCQk9IGZzbF9kY3VfZHJtX3JlbW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAi ZnNsLGRjdSIsCisJCS5wbQk9ICZmc2xfZGN1X2RybV9wbV9vcHMsCisJCS5vZl9tYXRjaF90YWJs ZSA9IGZzbF9kY3Vfb2ZfbWF0Y2gsCisJfSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIo ZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJGcmVl c2NhbGUgRENVIERSTSBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMzM2NzQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJp Z2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUg RENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq LworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fRFJWX0hfXworI2RlZmluZSBfX0ZTTF9EQ1VfRFJN X0RSVl9IX18KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3Nw aW5sb2NrLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8ZHJtL2RybS5oPgorI2lu Y2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorCisjaW5jbHVkZSAi ZnNsX2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX3BsYW5lLmgiCisjaW5j bHVkZSAiZnNsX2RjdV9kcm1fY29ubmVjdG9yLmgiCisKKyNkZWZpbmUgRENVX0RDVV9NT0RFCQkJ MHgwMDEwCisjZGVmaW5lIERDVV9NT0RFX0JMRU5EX0lURVIoeCkJCSgoeCkgPDwgMjApCisjZGVm aW5lIERDVV9NT0RFX1JBU1RFUl9FTgkJQklUKDE0KQorI2RlZmluZSBEQ1VfTU9ERV9EQ1VfTU9E RSh4KQkJKHgpCisjZGVmaW5lIERDVV9NT0RFX0RDVV9NT0RFX01BU0sJCTB4MDMKKyNkZWZpbmUg RENVX01PREVfT0ZGCQkJMAorI2RlZmluZSBEQ1VfTU9ERV9OT1JNQUwJCQkxCisjZGVmaW5lIERD VV9NT0RFX1RFU1QJCQkyCisjZGVmaW5lIERDVV9NT0RFX0NPTE9SQkFSCQkzCisKKyNkZWZpbmUg RENVX0JHTkQJCQkweDAwMTQKKyNkZWZpbmUgRENVX0JHTkRfUih4KQkJCSgoeCkgPDwgMTYpCisj ZGVmaW5lIERDVV9CR05EX0coeCkJCQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9CR05EX0IoeCkJ CQkoeCkKKworI2RlZmluZSBEQ1VfRElTUF9TSVpFCQkJMHgwMDE4CisjZGVmaW5lIERDVV9ESVNQ X1NJWkVfREVMVEFfWSh4KQkoKHgpIDw8IDE2KQorLypSZWdpc2l0ZXIgdmFsdWUgMS8xNiBvZiBo b3Jpem9udGFsIHJlc29sdXRpb24qLworI2RlZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1goeCkJ KCh4KSA+PiA0KQorCisjZGVmaW5lIERDVV9IU1lOX1BBUkEJCQkweDAwMWMKKyNkZWZpbmUgRENV X0hTWU5fUEFSQV9CUCh4KQkJKCh4KSA8PCAyMikKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9QVyh4 KQkJKCh4KSA8PCAxMSkKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9GUCh4KQkJKHgpCisKKyNkZWZp bmUgRENVX1ZTWU5fUEFSQQkJCTB4MDAyMAorI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0JQKHgpCQko KHgpIDw8IDIyKQorI2RlZmluZSBEQ1VfVlNZTl9QQVJBX1BXKHgpCQkoKHgpIDw8IDExKQorI2Rl ZmluZSBEQ1VfVlNZTl9QQVJBX0ZQKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfU1lOX1BPTAkJCTB4 MDAyNAorI2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZfUFhDS19GQUxMCSgwIDw8IDYpCisjZGVmaW5l IERDVV9TWU5fUE9MX05FR19SRU1BSU4JCSgwIDw8IDUpCisjZGVmaW5lIERDVV9TWU5fUE9MX0lO Vl9WU19MT1cJCUJJVCgxKQorI2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZfSFNfTE9XCQlCSVQoMCkK KworI2RlZmluZSBEQ1VfVEhSRVNIT0xECQkJMHgwMDI4CisjZGVmaW5lIERDVV9USFJFU0hPTERf TFNfQkZfVlMoeCkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJ R0goeCkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfTE9XKHgpCSh4 KQorI2RlZmluZSBCRl9WU19WQUwJCQkweDAzCisjZGVmaW5lIEJVRl9NQVhfVkFMCQkJMHg3OAor I2RlZmluZSBCVUZfTUlOX1ZBTAkJCTB4MGEKKworI2RlZmluZSBEQ1VfSU5UX1NUQVRVUwkJCTB4 MDAyQworI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19WU1lOQwkJQklUKDApCisjZGVmaW5lIERDVV9J TlRfU1RBVFVTX1VORFJVTgkJQklUKDEpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0xTQkZWUwkJ QklUKDIpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERD VV9JTlRfU1RBVFVTX0NSQ1JFQURZCQlCSVQoNCkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfQ1JD T1ZFUkZMT1cJQklUKDUpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AxRklGT0xPCQlCSVQoNikK KyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDFGSUZPSEkJCUJJVCg3KQorI2RlZmluZSBEQ1VfSU5U X1NUQVRVU19QMkZJRk9MTwkJQklUKDgpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AyRklGT0hJ CQlCSVQoOSkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUFJPR0VORAkJQklUKDEwKQorI2RlZmlu ZSBEQ1VfSU5UX1NUQVRVU19JUE1FUlJPUgkJQklUKDExKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRV U19MWVJUUkFOUwkJQklUKDEyKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19ETUFUUkFOUwkJQklU KDE0KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QM0ZJRk9MTwkJQklUKDE2KQorI2RlZmluZSBE Q1VfSU5UX1NUQVRVU19QM0ZJRk9ISQkJQklUKDE3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19Q NEZJRk9MTwkJQklUKDE4KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9ISQkJQklUKDE5 KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMUVNUFRZCQlCSVQoMjYpCisjZGVmaW5lIERDVV9J TlRfU1RBVFVTX1AyRU1QVFkJCUJJVCgyNykKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDNFTVBU WQkJQklUKDI4KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEVNUFRZCQlCSVQoMjkpCisKKyNk ZWZpbmUgRENVX0lOVF9NQVNLCQkJMHgwMDMwCisjZGVmaW5lIERDVV9JTlRfTUFTS19WU1lOQwkJ QklUKDApCisjZGVmaW5lIERDVV9JTlRfTUFTS19VTkRSVU4JCUJJVCgxKQorI2RlZmluZSBEQ1Vf SU5UX01BU0tfTFNCRlZTCQlCSVQoMikKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZCTEFOSwkJQklU KDMpCisjZGVmaW5lIERDVV9JTlRfTUFTS19DUkNSRUFEWQkJQklUKDQpCisjZGVmaW5lIERDVV9J TlRfTUFTS19DUkNPVkVSRkxPVwlCSVQoNSkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AxRklGT0xP CQlCSVQoNikKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AxRklGT0hJCQlCSVQoNykKKyNkZWZpbmUg RENVX0lOVF9NQVNLX1AyRklGT0xPCQlCSVQoOCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklG T0hJCQlCSVQoOSkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1BST0dFTkQJCUJJVCgxMCkKKyNkZWZp bmUgRENVX0lOVF9NQVNLX0lQTUVSUk9SCQlCSVQoMTEpCisjZGVmaW5lIERDVV9JTlRfTUFTS19M WVJUUkFOUwkJQklUKDEyKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfRE1BVFJBTlMJCUJJVCgxNCkK KyNkZWZpbmUgRENVX0lOVF9NQVNLX1AzRklGT0xPCQlCSVQoMTYpCisjZGVmaW5lIERDVV9JTlRf TUFTS19QM0ZJRk9ISQkJQklUKDE3KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDRGSUZPTE8JCUJJ VCgxOCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1A0RklGT0hJCQlCSVQoMTkpCisjZGVmaW5lIERD VV9JTlRfTUFTS19QMUVNUFRZCQlCSVQoMjYpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMkVNUFRZ CQlCSVQoMjcpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QM0VNUFRZCQlCSVQoMjgpCisjZGVmaW5l IERDVV9JTlRfTUFTS19QNEVNUFRZCQlCSVQoMjkpCisKKyNkZWZpbmUgRENVX0RJVl9SQVRJTwkJ CTB4MDA1NAorCisjZGVmaW5lIERDVV9VUERBVEVfTU9ERQkJCTB4MDBjYworI2RlZmluZSBEQ1Vf VVBEQVRFX01PREVfTU9ERQkJQklUKDMxKQorI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfUkVBRFJF RwkJQklUKDMwKQorCisjZGVmaW5lIERDVV9EQ0ZCX01BWAkJCTB4MzAwCisKKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fMSh4KQkJKDB4MjAwICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxE RVNDTE5fMV9IRUlHSFQoeCkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMV9X SURUSCh4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8yKHgpCQkoMHgyMDQgKyAoeCkg KiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8yX1BPU1koeCkJKCh4KSA8PCAxNikKKyNk ZWZpbmUgRENVX0NUUkxERVNDTE5fMl9QT1NYKHgpCSh4KQorCisjZGVmaW5lIERDVV9DVFJMREVT Q0xOXzMoeCkJCSgweDIwOCArICh4KSAqIDB4NDApCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5f NCh4KQkJKDB4MjBjICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9FTgkJ QklUKDMxKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1RJTEVfRU4JQklUKDMwKQorI2RlZmlu ZSBEQ1VfQ1RSTERFU0NMTl80X0RBVEFfU0VMX0NMVVQJQklUKDI5KQorI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl80X1NBRkVUWV9FTglCSVQoMjgpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfVFJB TlMoeCkJKCh4KSA8PCAyMCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9CUFAoeCkJCSgoeCkg PDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfUkxFX0VOCQlCSVQoMTUpCisjZGVmaW5l IERDVV9DVFJMREVTQ0xOXzRfTFVPRkZTKHgpCSgoeCkgPDwgNCkKKyNkZWZpbmUgRENVX0NUUkxE RVNDTE5fNF9CQl9PTgkJQklUKDIpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfQUIoeCkJCSh4 KQorCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzUoeCkJCSgweDIxMCArICh4KSAqIDB4NDApCisj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfUih4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBE Q1VfQ1RSTERFU0NMTl81X0NLTUFYX0coeCkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1VfQ1RSTERF U0NMTl81X0NLTUFYX0IoeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNih4KQkJKDB4 MjE0ICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNl9DS01JTl9SKHgpCSgo eCkgPDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fRyh4KQkoKHgpIDw8IDgp CisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fQih4KQkoeCkKKworI2RlZmluZSBEQ1Vf Q1RSTERFU0NMTl83KHgpCQkoMHgyMTggKyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERF U0NMTl83X1RJTEVfVkVSKHgpCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzdf VElMRV9IT1IoeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOCh4KQkJKDB4MjFjICsg KHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOF9GR19GQ09MT1IoeCkJKHgpCisK KyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOSh4KQkJKDB4MjIwICsgKHgpICogMHg0MCkKKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fOV9CR19CQ09MT1IoeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxE RVNDTE5fMTAoeCkJCSgweDIyNCArICh4KSAqIDB4NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzEwX1BPU1RfU0tJUCh4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8xMF9Q UkVfU0tJUCh4KQkoeCkKKworI2lmZGVmIENPTkZJR19TT0NfVkY2MTAKKyNkZWZpbmUgRENVX1RP VEFMX0xBWUVSX05VTSAgICAgICAgICAgICA2NAorI2RlZmluZSBEQ1VfTEFZRVJfTlVNX01BWCAg ICAgICAgICAgICAgIDYKKyNlbHNlCisjZGVmaW5lIERDVV9UT1RBTF9MQVlFUl9OVU0gICAgICAg ICAgICAgMTYKKyNkZWZpbmUgRENVX0xBWUVSX05VTV9NQVggICAgICAgICAgICAgICA0CisjZW5k aWYKKworI2RlZmluZSBGU0xfRENVX1JHQjU2NQkJCTQKKyNkZWZpbmUgRlNMX0RDVV9SR0I4ODgJ CQk1CisjZGVmaW5lIEZTTF9EQ1VfQVJHQjg4ODgJCTYKKyNkZWZpbmUgRlNMX0RDVV9BUkdCMTU1 NQkJMTEKKyNkZWZpbmUgRlNMX0RDVV9BUkdCNDQ0NAkJMTIKKyNkZWZpbmUgRlNMX0RDVV9ZVVY0 MjIJCQkxNAorCisjZGVmaW5lIFRDT05fQ1RSTDEJCQkweDAwMDAKKyNkZWZpbmUgVENPTl9CWVBB U1NfRU5BQkxFCQlCSVQoMjkpCisKKyNkZWZpbmUgU0NGR19QSVhDTEtDUgkJCTB4MjgKKyNkZWZp bmUgUFhDS19FTkFCTEUJCQlCSVQoMzEpCisjZGVmaW5lIFBYQ0tfRElTQUJMRQkJCTAKKworI2Rl ZmluZSBEQkcoZm10LCAuLi4pIERSTV9ERUJVRyhmbXQiXG4iLCAjI19fVkFfQVJHU19fKQorCitz dHJ1Y3QgY2xrOworc3RydWN0IGRldmljZTsKK3N0cnVjdCBkcm1fZGV2aWNlOworCitzdHJ1Y3Qg ZnNsX2RjdV9kcm1fZGV2aWNlIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRldmlj ZV9ub2RlICpucDsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CisJc3RydWN0IHJlZ21hcCAqdGNv bl9yZWdtYXA7CisJdW5zaWduZWQgaW50IGlycTsKKwlzdHJ1Y3QgY2xrICpjbGs7CisJc3RydWN0 IGNsayAqdGNvbl9jbGs7CisJLypwcm90ZWN0cyBoYXJkd2FyZSByZWdpc3RlciovCisJc3Bpbmxv Y2tfdCBpcnFfbG9jazsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsKKwlzdHJ1Y3QgZHJtX2Zi ZGV2X2NtYSAqZmJkZXY7CisJc3RydWN0IGRybV9jcnRjIGNydGM7CisJc3RydWN0IGRybV9lbmNv ZGVyIGVuY29kZXI7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cit9 OworCit2b2lkIGZzbF9kY3VfZmJkZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKwor I2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1fRFJWX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjhlZjBlMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2ZiZGV2LmMKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1 IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAq IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKworI2luY2x1ZGUgImZzbF9kY3Vf ZHJtX2Rydi5oIgorCisvKiBpbml0aWFsaXplIGZiZGV2IGhlbHBlciAqLwordm9pZCBmc2xfZGN1 X2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9k cm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldi0+ZGV2KTsKKworCWZzbF9k ZXYtPmZiZGV2ID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRldiwgMjQsIDEsIDEpOworfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmMgYi9kcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4wZGUyMWM2OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5 cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2Fs ZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hl bHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9k Y3VfZHJtX2Nvbm5lY3Rvci5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBmc2xfZGN1X2RybV9tb2RlX2Nv bmZpZ19mdW5jcyA9IHsKKwkuZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCisJLmF0b21p Y19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAorCS5hdG9taWNfY29tbWl0ID0gZHJt X2F0b21pY19oZWxwZXJfY29tbWl0LAorfTsKKworaW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5p dChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KQoreworCWRybV9tb2RlX2NvbmZp Z19pbml0KGZzbF9kZXYtPmRkZXYpOworCisJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWlu X3dpZHRoID0gMDsKKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsK Kwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSAyMDMxOworCWZzbF9kZXYt PmRkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSAyMDQ3OworCWZzbF9kZXYtPmRkZXYtPm1v ZGVfY29uZmlnLmZ1bmNzID0gJmZzbF9kY3VfZHJtX21vZGVfY29uZmlnX2Z1bmNzOworCisJZHJt X2ttc19oZWxwZXJfcG9sbF9pbml0KGZzbF9kZXYtPmRkZXYpOworCWZzbF9kY3VfZHJtX2NydGNf Y3JlYXRlKGZzbF9kZXYpOworCWZzbF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKGZzbF9kZXYsICZm c2xfZGV2LT5jcnRjKTsKKwlmc2xfZGN1X2RybV9jb25uZWN0b3JfY3JlYXRlKGZzbF9kZXYsICZm c2xfZGV2LT5lbmNvZGVyKTsKKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZnNsX2Rldi0+ZGRldik7 CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21z LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliZDI5OQotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oCkBAIC0w LDAgKzEsMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3Rv ciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9LTVNf SF9fCisjZGVmaW5lIF9fRlNMX0RDVV9EUk1fS01TX0hfXworCitpbnQgZnNsX2RjdV9kcm1fbW9k ZXNldF9pbml0KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpOworCisjZW5kaWYg LyogX19GU0xfRENVX0RSTV9LTVNfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fcGxhbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Ni NTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fcGxhbmUuYwpAQCAtMCwwICsxLDIyNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVz Y2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNl IGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUg PGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVk ZSAiZnNsX2RjdV9kcm1fa21zLmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKwor I2RlZmluZSB0b19mc2xfZGN1X3BsYW5lKHBsYW5lKSBcCisJY29udGFpbmVyX29mKHBsYW5lLCBz dHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUsIHBsYW5lKQorCitzdGF0aWMgaW50Citmc2xfZGN1X2Ry bV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJICAgICBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqbmV3X3N0YXRlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorZnNsX2Rj dV9kcm1fcGxhbmVfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm5ld19zdGF0ZSkKK3sKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCSAgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZz bF9kY3VfZHJtX3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAor CQkJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKK30KKwordm9p ZCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAorCQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVj dCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7CisJc3RydWN0IGRybV9nZW1f Y21hX29iamVjdCAqZ2VtOworCXN0cnVjdCBmc2xfZGN1X2RybV9wbGFuZSAqZnNsX3BsYW5lID0g dG9fZnNsX2RjdV9wbGFuZShwbGFuZSk7CisJdTMyIGluZGV4LCBhbHBoYSwgYnBwOworCWludCBl cnI7CisKKwlpZiAoIWZiKQorCQlyZXR1cm47CisKKwlpbmRleCA9IGZzbF9wbGFuZS0+aW5kZXg7 CisJZ2VtID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7CisKKwlzd2l0Y2ggKGZiLT5w aXhlbF9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCQlicHAgPSBGU0xfRENV X1JHQjU2NTsKKwkJYWxwaGEgPSAweGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfUkdC ODg4OgorCQlicHAgPSBGU0xfRENVX1JHQjg4ODsKKwkJYWxwaGEgPSAweGZmOworCQlicmVhazsK KwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6CisJCWJwcCA9IEZTTF9EQ1VfQVJHQjg4ODg7CisJ CWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX0JHUkE0NDQ0OgorCQli cHAgPSBGU0xfRENVX0FSR0I0NDQ0OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2Ug RFJNX0ZPUk1BVF9BUkdCMTU1NToKKwkJYnBwID0gRlNMX0RDVV9BUkdCMTU1NTsKKwkJYWxwaGEg PSAweGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfWVVWNDIyOgorCQlicHAgPSBGU0xf RENVX1lVVjQyMjsKKwkJYWxwaGEgPSAweGZmOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1 cm47CisJfQorCisJZXJyID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxE RVNDTE5fMShpbmRleCksCisJCQkgICBEQ1VfQ1RSTERFU0NMTl8xX0hFSUdIVChzdGF0ZS0+Y3J0 Y19oKSB8CisJCQkgICBEQ1VfQ1RSTERFU0NMTl8xX1dJRFRIKHN0YXRlLT5jcnRjX3cpKTsKKwlp ZiAoZXJyKQorCQlnb3RvIHNldF9mYWlsZWQ7CisJZXJyID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYt PnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMihpbmRleCksCisJCQkgICBEQ1VfQ1RSTERFU0NMTl8y X1BPU1koc3RhdGUtPmNydGNfeSkgfAorCQkJICAgRENVX0NUUkxERVNDTE5fMl9QT1NYKHN0YXRl LT5jcnRjX3gpKTsKKwlpZiAoZXJyKQorCQlnb3RvIHNldF9mYWlsZWQ7CisJZXJyID0gcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCSAgIERDVV9DVFJMREVTQ0xOXzMoaW5kZXgpLCBn ZW0tPnBhZGRyKTsKKwlpZiAoZXJyKQorCQlnb3RvIHNldF9mYWlsZWQ7CisJZXJyID0gcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNChpbmRleCksCisJCQkgICBE Q1VfQ1RSTERFU0NMTl80X0VOIHwKKwkJCSAgIERDVV9DVFJMREVTQ0xOXzRfVFJBTlMoYWxwaGEp IHwKKwkJCSAgIERDVV9DVFJMREVTQ0xOXzRfQlBQKGJwcCkgfAorCQkJICAgRENVX0NUUkxERVND TE5fNF9BQigwKSk7CisJaWYgKGVycikKKwkJZ290byBzZXRfZmFpbGVkOworCWVyciA9IHJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzUoaW5kZXgpLAorCQkJICAg RENVX0NUUkxERVNDTE5fNV9DS01BWF9SKDB4RkYpIHwKKwkJCSAgIERDVV9DVFJMREVTQ0xOXzVf Q0tNQVhfRygweEZGKSB8CisJCQkgICBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0IoMHhGRikpOwor CWlmIChlcnIpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwllcnIgPSByZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl82KGluZGV4KSwKKwkJCSAgIERDVV9DVFJMREVTQ0xO XzZfQ0tNSU5fUigwKSB8CisJCQkgICBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX0coMCkgfAorCQkJ ICAgRENVX0NUUkxERVNDTE5fNl9DS01JTl9CKDApKTsKKwlpZiAoZXJyKQorCQlnb3RvIHNldF9m YWlsZWQ7CisJZXJyID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVND TE5fNyhpbmRleCksIDApOworCWlmIChlcnIpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwllcnIgPSBy ZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl84KGluZGV4KSwKKwkJ CSAgIERDVV9DVFJMREVTQ0xOXzhfRkdfRkNPTE9SKDApKTsKKwlpZiAoZXJyKQorCQlnb3RvIHNl dF9mYWlsZWQ7CisJZXJyID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxE RVNDTE5fOShpbmRleCksCisJCQkgICBEQ1VfQ1RSTERFU0NMTl85X0JHX0JDT0xPUigwKSk7CisJ aWYgKGVycikKKwkJZ290byBzZXRfZmFpbGVkOworCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJs ZShmc2xfZGV2LT5ucCwgImZzbCxsczEwMjFhLWRjdSIpKSB7CisJCWVyciA9IHJlZ21hcF93cml0 ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzEwKGluZGV4KSwKKwkJCQkgICBEQ1Vf Q1RSTERFU0NMTl8xMF9QT1NUX1NLSVAoMCkgfAorCQkJCSAgIERDVV9DVFJMREVTQ0xOXzEwX1BS RV9TS0lQKDApKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gc2V0X2ZhaWxlZDsKKwl9CisJZXJyID0g cmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAorCQkJCSBE Q1VfTU9ERV9EQ1VfTU9ERV9NQVNLLAorCQkJCSBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9ERV9O T1JNQUwpKTsKKwlpZiAoZXJyKQorCQlnb3RvIHNldF9mYWlsZWQ7CisJZXJyID0gcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCSAgIERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9N T0RFX1JFQURSRUcpOworCWlmIChlcnIpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXR1cm47CisK K3NldF9mYWlsZWQ6CisJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJzZXQgRENVIHJlZ2lzdGVyIGZh aWxlZFxuIik7Cit9CisKK2ludCBmc2xfZGN1X2RybV9wbGFuZV9kaXNhYmxlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lKQoreworCXJldHVybiAwOworfQorCit2b2lkIGZzbF9kY3VfZHJtX3BsYW5l X2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJZnNsX2RjdV9kcm1fcGxhbmVf ZGlzYWJsZShwbGFuZSk7CisJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOworfQorCitzdGF0aWMg Y29uc3QgdWludDMyX3QgZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0c1tdID0geworCURSTV9GT1JN QVRfUkdCNTY1LAorCURSTV9GT1JNQVRfUkdCODg4LAorCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJ RFJNX0ZPUk1BVF9BUkdCNDQ0NCwKKwlEUk1fRk9STUFUX0FSR0IxNTU1LAorCURSTV9GT1JNQVRf WVVWNDIyLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgZnNsX2Rj dV9kcm1fcGxhbmVfZnVuY3MgPSB7CisJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVy X3VwZGF0ZV9wbGFuZSwKKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2Fi bGVfcGxhbmUsCisJLmRlc3Ryb3kgPSBmc2xfZGN1X2RybV9wbGFuZV9kZXN0cm95LAorCS5hdG9t aWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0 YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rl c3Ryb3lfc3RhdGUsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgZnNsX2RjdV9k cm1fcGxhbmVfaGVscGVyX2Z1bmNzID0geworCS5wcmVwYXJlX2ZiID0gZnNsX2RjdV9kcm1fcGxh bmVfcHJlcGFyZV9mYiwKKwkuY2xlYW51cF9mYiA9IGZzbF9kY3VfZHJtX3BsYW5lX2NsZWFudXBf ZmIsCisJLmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19jaGVjaywKKwku YXRvbWljX3VwZGF0ZSA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY191cGRhdGUsCisJLmF0b21p Y19kaXNhYmxlID0gZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2Rpc2FibGUsCit9OworCitzdHJ1 Y3QgZHJtX3BsYW5lICpmc2xfZGN1X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnk7CisJaW50IHJldDsK KworCXByaW1hcnkgPSBremFsbG9jKHNpemVvZigqcHJpbWFyeSksIEdGUF9LRVJORUwpOworCWlm ICghcHJpbWFyeSkgeworCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gYWxsb2NhdGUgcHJpbWFy eSBwbGFuZVxuIik7CisJCXJldHVybiBOVUxMOworCX0KKworCS8qIHBvc3NpYmxlX2NydGMncyB3 aWxsIGJlIGZpbGxlZCBpbiBsYXRlciBieSBjcnRjX2luaXQgKi8KKwlyZXQgPSBkcm1fdW5pdmVy c2FsX3BsYW5lX2luaXQoZGV2LCBwcmltYXJ5LCAwLAorCQkJCSAgICAgICAmZnNsX2RjdV9kcm1f cGxhbmVfZnVuY3MsCisJCQkJICAgICAgIGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHMsCisJCQkJ ICAgICAgIEFSUkFZX1NJWkUoZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0cyksCisJCQkJICAgICAg IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCWlmIChyZXQpIHsKKwkJa2ZyZWUocHJpbWFyeSk7 CisJCXByaW1hcnkgPSBOVUxMOworCX0KKwlkcm1fcGxhbmVfaGVscGVyX2FkZChwcmltYXJ5LCAm ZnNsX2RjdV9kcm1fcGxhbmVfaGVscGVyX2Z1bmNzKTsKKworCXJldHVybiBwcmltYXJ5OworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaCBi L2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NiZmE2MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmgKQEAgLTAsMCArMSwyMyBAQAor LyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgor ICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX1BMQU5FX0hfXworI2RlZmlu ZSBfX0ZTTF9EQ1VfRFJNX1BMQU5FX0hfXworCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOwor c3RydWN0IGZzbF9kY3VfZHJtX3BsYW5lIHsKKwlzdHJ1Y3QgZHJtX3BsYW5lIHBsYW5lOworCXVu c2lnbmVkIGludCBpbmRleDsKK307CisKK3N0cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3VfZHJtX3By aW1hcnlfY3JlYXRlX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5kaWYgLyog X19GU0xfRENVX0RSTV9QTEFORV9IX18gKi8KLS0gCjIuMS4wLjI3Lmc5NmRiMzI0CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=