From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v10 1/5] drm/layerscape: Add Freescale DCU DRM driver Date: Fri, 17 Jul 2015 18:38:59 +0800 Message-ID: <1437129543-8037-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, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogSmlhbndlaSBXYW5nIDxqaWFud2VpLndhbmcuY2huQGdtYWlsLmNvbT4KClRoaXMgcGF0 Y2ggYWRkIHN1cHBvcnQgZm9yIFR3byBEaW1lbnNpb25hbCBBbmltYXRpb24gYW5kIENvbXBvc2l0 aW5nCkVuZ2luZSAoMkQtQUNFKSBvbiB0aGUgRnJlZXNjYWxlIFNvQ3MuCgoyRC1BQ0UgaXMgYSBG cmVlc2NhbGUgZGlzcGxheSBjb250cm9sbGVyLiAyRC1BQ0UgZGVzY3JpYmVzCnRoZSBmdW5jdGlv bmFsaXR5IG9mIHRoZSBtb2R1bGUgZXh0cmVtZWx5IHdlbGwgaXRzIG5hbWUgaXMgYSB2YWx1ZQp0 aGF0IGNhbm5vdCBiZSB1c2VkIGFzIGEgdG9rZW4gaW4gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLgpJ bnN0ZWFkIHRoZSB2YWxpZCB0b2tlbiAiRENVIiBpcyB1c2VkIHRvIHRhZyB0aGUgcmVnaXN0ZXIg bmFtZXMgYW5kCmZ1bmN0aW9uIG5hbWVzLgoKVGhlIERpc3BsYXkgQ29udHJvbGxlciBVbml0IChE Q1UpIG1vZHVsZSBpcyBhIHN5c3RlbSBtYXN0ZXIgdGhhdApmZXRjaGVzIGdyYXBoaWNzIHN0b3Jl ZCBpbiBpbnRlcm5hbCBvciBleHRlcm5hbCBtZW1vcnkgYW5kIGRpc3BsYXlzCnRoZW0gb24gYSBU RlQgTENEIHBhbmVsLiBBIHdpZGUgcmFuZ2Ugb2YgcGFuZWwgc2l6ZXMgaXMgc3VwcG9ydGVkCmFu ZCB0aGUgdGltaW5nIG9mIHRoZSBpbnRlcmZhY2Ugc2lnbmFscyBpcyBoaWdobHkgY29uZmlndXJh YmxlLgpHcmFwaGljcyBhcmUgcmVhZCBkaXJlY3RseSBmcm9tIG1lbW9yeSBhbmQgdGhlbiBibGVu ZGVkIGluIHJlYWwtdGltZSwKd2hpY2ggYWxsb3dzIGZvciBkeW5hbWljIGNvbnRlbnQgY3JlYXRp b24gd2l0aCBtaW5pbWFsIENQVQppbnRlcnZlbnRpb24uCgpUaGUgZmVhdHVyZXM6CigxKSBGdWxs IFJHQjg4OCBvdXRwdXQgdG8gVEZUIExDRCBwYW5lbC4KKDIpIEJsZW5kaW5nIG9mIGVhY2ggcGl4 ZWwgdXNpbmcgdXAgdG8gNCBzb3VyY2UgbGF5ZXJzCmRlcGVuZGVudApvbiBzaXplIG9mIHBhbmVs LgooMykgRWFjaCBncmFwaGljIGxheWVyIGNhbiBiZSBwbGFjZWQgd2l0aCBvbmUgcGl4ZWwgcmVz b2x1dGlvbgppbiBlaXRoZXIgYXhpcy4KKDQpIEVhY2ggZ3JhcGhpYyBsYXllciBzdXBwb3J0IFJH QjU2NSBhbmQgUkdCODg4IGRpcmVjdCBjb2xvcnMKd2l0aG91dCBhbHBoYSBjaGFubmVsIGFuZCBC R1JBODg4OCBCR1JBNDQ0NCBBUkdCMTU1NSBkaXJlY3QKY29sb3JzCndpdGggYW4gYWxwaGEgY2hh bm5lbCBhbmQgWVVWNDIyIGZvcm1hdC4KKDUpIEVhY2ggZ3JhcGhpYyBsYXllciBzdXBwb3J0IGFs cGhhIGJsZW5kaW5nIHdpdGggOC1iaXQKcmVzb2x1dGlvbi4KClRoaXMgaXMgYSBzaW1wbGlmaWVk IHZlcnNpb24sIG9ubHkgb25lIHByaW1hcnkgcGxhbmUsIG9uZQpmcmFtZWJ1ZmZlciwgb25lIGNy dGMsIG9uZSBjb25uZWN0b3IgYW5kIG9uZSBlbmNvZGVyIGZvciBURlQKTENEIHBhbmVsLgoKU2ln bmVkLW9mZi1ieTogQWxpc29uIFdhbmcgPGIxODk2NUBmcmVlc2NhbGUuY29tPgpTaWduZWQtb2Zm LWJ5OiBYaXVibyBMaSA8bGl4aXVib0BjbXNzLmNoaW5hbW9iaWxlLmNvbT4KU2lnbmVkLW9mZi1i eTogSmlhbndlaSBXYW5nIDxqaWFud2VpLndhbmcuY2huQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClJldmlld2VkLWJ5OiBBbGlzb24g V2FuZyA8YWxpc29uLndhbmdAZnJlZXNjYWxlLmNvbT4KLS0tCgoKQ2hhbmdlZCBpbiBWMTAKLWFk anVzdCBjb21taXQgbG9nLCByZW1vdmUgbWVhbmluZ2xlc3Mgc3RhdGVtZW50Ci1jbGVhbnVwIGNv ZGUgZm9yIGl0J3MgZm9ybWF0IGFuZCBzdHlsZS4KLXJlbW92ZSBwbGF0Zm9ybSByZWxhdGVkIGNv ZGUgb3V0LCBpbmNsdWRpbmcgb2YgdGNvbih2ZjYxMCkgYW5kIHNjZmcobHMxMDIxYSkKLXJlbW92 ZSB1c2VsZXNzIHNlbnRlbmNlczogZW5jb2Rlci0+Y3J0YyA9IGNydGM7IGFuZCBjb25uZWN0b3It PmVuY29kZXIgPSBlbmNvZGVyOyBhbmQgc28gb24KLWFkZCB2ZW5kb3IgcHJlZml4IGZvciBwYW5l bCBwYW5kbGUKLW1ha2UgYSBEQ1VfQ1RSTERFU0NMTih4LCB5KSAgdG8gYXZvaWQgaGlnaCByZXBl dGl0aW9uCi1pbnRyb2R1Y2UgcGVyLVNvQyBjYXBhYmlsaXR5IHN0cnVjdHVyZSB0byBhdm9pZCBj aGVjayBvbiB0aGUgT0Ygbm9kZSdzIGNvbXBhdGlibGUgc3RyaW5nCi1JbXBsZW1lbnQgc29tZSBm dW5jdGlvbnM6IGNydGMgZW5hYmxlIGFuZCBkaXNhYmxlLCBlbmFibGUgYW5kIGRpc2FibGUgVkJM QU5LLCBwbGFuZQogYXRvbWljX2Rpc2FibGUgYW5kIGF0b21pY19lbmFibGUgLWF0b21pY19jaGVj ayBhbmQgc28gb24KLW1vdmUgRENVIGNvbmZpZyBzZW50ZW5jZSB0byB0aGUgcmlnaHQgcGxhY2UK LW1vdmUgZ2V0IHJlc291cmNlcyBmdW5jdGlvbnMgdG8gIC0+cHJvYmUoKQotbW92ZSBmc2wsZGN1 LnR4dCB0byB2aWRlby8gZm9sZGVyCi1hZGQgYmlnLWVuZGlhbiBkZXNjcmliZQpBbGwgYWR2YWNl ZCBieSBUaGllcnJ5IFJlZGluZwoKQ2hhbmdlZCBpbiBWOQoKLXB1dCBub2RlIGFmdGVyIGNhbGxp bmcgb2ZfZHJtX2ZpbmRfcGFuZWwKLXNwbGl0IGNsa19wcmVwYXJlX2VuYWJsZSgpIHRvIGNsa19w cmVwYXJlKCkgYW5kIGNsa19lbmFibGUoKSwKIGp1c3QgY2FsbCBjbGtfcHJlcGFyZSBvbmNlLCBh bmQgY2hlY2sgcmV0dXJuIHZhbHVlCi1jaGVjayByZWdtYXBfd3JpdGUvcmVnbWFwX3JlYWQgcmV0 dXJuIHJldHVybiB2YWx1ZQotcmVtb3ZlIHVzZWxlc3MgIi5vd25lciAgICA9IFRISVNfTU9EVUxF LCIKQWxsIGFkdmFuY2VkIGJ5IE1hcmsgWWFvCgpDaGFuZ2VkIGluIFY4CgotIFJlbW92ZSB1c2Vs ZXNzIGNvZGUKICNkZWZpbmUgRFJJVkVSX05BTUUgICAgICJmc2wtZGN1LWRybSIKIE1PRFVMRV9B TElBUygicGxhdGZvcm06ZnNsLWRjdS1kcm0iKTsKQWR2aWNlZCBieSBQYXVsIEJvbGxlCgpDaGFu Z2VkIGluIFY3CgotIFJlbW92ZSByZWR1bmRhbnQgZnVuY3Rpb25zIGFuZCByZXBsYWNlIGRlcHJl Y2F0ZWQgaG9va2VyCkFkdmljZWQgYnkgRGFuaWVsIFZldHRlcgotIFJlcGxhY2UgZHJtX3BsYXRm b3JtX2luaXQgd2l0aCBkcm1fZGV2X2FsbG9jL3JlZ2lzdGVyCkFkdmljZWQgYnkgRGFuaWVsIFZl dHRlcgoKQ2hhbmdlZCBpbiBWNgoKLSBBZGQgTkVDIG5sNDgyN2hjMTlfMDViIHBhbmVsIHRvIHBh bmVsLXNpbXBsZS5jCkFkdmljZWQgYnkgTWFyayBZYW8KLSBBZGQgRFJJVkVSX0FUT01JQyBmb3Ig ZHJpdmVyX2ZlYXR1cmVzCkFkdmljZWQgYnkgTWFyayBZYW8KLSBjaGVjayBmc2xfZGV2IGlmIGl0 J3MgTlVMTCBhdCBQTSBzdXNwZW5kL3Jlc3VtZQpBZHZpY2VkIGJ5IE1hcmsgWWFvCgpDaGFuZ2Vk IGluIFY1CgotIFVwZGF0ZSBjb21taXQgbWVzc2FnZQotIEFkZCBsYXllciByZWdpc3RlcnMgaW5p dGlhbGl6YXRpb24KLSBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucwotIFJlbmFtZSBkcml2ZXIgZm9s ZGVyCkFkdmljZWQgYnkgU3RlZmFuIEFnbmVyCi0gTW92ZSBwaXhlbCBjbG9jayBjb250cm9sIGZ1 bmN0aW9ucyB0byBmc2xfZGN1X2RybV9kcnYuYwotIHJlbW92ZSByZWR1bmRhbnQgZW5hYmxlIHRo ZSBjbG9jayBpbXBsaWNpdGx5IHVzaW5nIHJlZ21hcAotIEFkZCBtYWludGFpbmVyIG1lc3NhZ2UK CkNoYW5nZWQgaW4gVjQ6CgotVGhpcyB2ZXJzaW9uIGRvZXNuJ3QgaGF2ZSBmdW5jdGlvbmFsaXR5 IGNoYW5nZWQKIEp1c3QgYSBtaW5vciBhZGp1c3RtZW50LgoKQ2hhbmdlZCBpbiBWMzoKCi0gVGVz dCBkcml2ZXIgb24gVnlicmlkIGJvYXJkIGFuZCBhZGQgY29tcGF0aWJsZSBzdHJpbmcKLSBSZW1v dmUgdW51c2VkIGZ1bmN0aW9ucwotIHNldCBkZWZhdWx0IGNydGMgZm9yIGVuY29kZXIKLSByZXBs YWNlIGxlZ2FjeSBmdW5jdGlvbnMgd2l0aCBhdG9taWMgaGVscCBmdW5jdGlvbnMKQWR2aWNlZCBi eSBEYW5pZWwgVmV0dGVyCi0gU2V0IHRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgRFJNIGRldmljZQot IEltcGxlbWVudCBpcnEgaGFuZGxlIGZ1bmN0aW9uIGZvciB2YmxhbmsgaW50ZXJydXB0CgpDaGFu Z2VkIGluIHYyOgotIEFkZCBhdG9taWMgc3VwcG9ydApBZHZpY2VkIGJ5IERhbmllbCBWZXR0ZXIK LSBNb2RpZnkgYmluZGluZ3MgZmlsZQotIFJlbmFtZSBub2RlIGZvciBjb21wYXRpYmlsaXR5Ci0g TW92ZSBwbGF0Zm9ybSByZWxhdGVkIGNvZGUgb3V0IGZvciBjb21wYXRpYmlsaXR5CkFkdmljZWQg YnkgU3RlZmFuIEFnbmVyCgoKIC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2ZzbCxkY3Uu dHh0ICAgICAgICAgIHwgIDIyICsrCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9L Y29uZmlnICAgICAgICAgICAgICAgICAgICB8ICAxOCArCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9jcnRjLmMgICAgICAgICB8IDIwOCArKysrKysrKysrKwogZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5oICAgICAgICAgfCAgMTkgKwogZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmMgICAgICAgICAgfCA0MDIgKysr KysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9k cnYuaCAgICAgICAgICB8IDE5NyArKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9m c2xfZGN1X2RybV9mYmRldi5jICAgICAgICB8ICAyMyArKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fa21zLmMgICAgICAgICAgfCAgNDMgKysrCiBkcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRwdXQuaCAgICAgICB8ICAzMyArKwogZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYyAgICAgICAgfCAyNjEgKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaCAgICAgICAgfCAg MTcgKwogZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMgICAgICAgICAg fCAxODIgKysrKysrKysrKwogMTYgZmlsZXMgY2hhbmdlZCwgMTQ0MyBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVv L2ZzbCxkY3UudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv S2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L01ha2Vm aWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fY3J0Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fY3J0Yy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fZHJ2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1dC5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5l LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2Ry bV9yZ2IuYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92 aWRlby9mc2wsZGN1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRl by9mc2wsZGN1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmYxYmU5 Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Zp ZGVvL2ZzbCxkY3UudHh0CkBAIC0wLDAgKzEsMjIgQEAKK0RldmljZSBUcmVlIGJpbmRpbmdzIGZv ciBGcmVlc2NhbGUgRENVIERSTSBEcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29t cGF0aWJsZToJCVNob3VsZCBiZSBvbmUgb2YKKwkqICJmc2wsbHMxMDIxYS1kY3UiLgorCSogImZz bCx2ZjYxMC1kY3UiLgorCistIHJlZzoJCQlBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lz dGVyIHNldCBmb3IgZGN1LgorLSBjbG9ja3M6CQlGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBo YW5kbGUgdG8gZGN1IGNsb2NrLgorLSBjbG9jay1uYW1lczoJCUZyb20gY29tbW9uIGNsb2NrIGJp bmRpbmc6IFNoYWxsIGJlICJkY3UiLgorLSBiaWctZW5kaWFuCQlCb29sZWFuIHByb3BlcnR5LCBM UzEwMjFBIERDVSByZWdpc3RlcnMgYXJlIGJpZy1lbmRpYW4uCistIGZzbCxwYW5lbDoJCVRoZSBw aGFuZGxlIHRvIHBhbmVsIG5vZGUuCisKK0V4YW1wbGVzOgorZGN1OiBkY3VAMmNlMDAwMCB7CisJ Y29tcGF0aWJsZSA9ICJmc2wsbHMxMDIxYS1kY3UiOworCXJlZyA9IDwweDAgMHgyY2UwMDAwIDB4 MCAweDEwMDAwPjsKKwljbG9ja3MgPSA8JnBsYXRmb3JtX2NsayAwPjsKKwljbG9jay1uYW1lcyA9 ICJkY3UiOworCWJpZy1lbmRpYW47CisJZnNsLHBhbmVsID0gPCZwYW5lbD47Cit9OwpkaWZmIC0t Z2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA2NzYxMzE4Li5kNGRmZTE0IDEw MDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMzM5Nyw2ICszMzk3 LDE0IEBAIEY6CWRyaXZlcnMvZ3B1L2RybS9leHlub3MvCiBGOglpbmNsdWRlL2RybS9leHlub3Mq CiBGOglpbmNsdWRlL3VhcGkvZHJtL2V4eW5vcyoKIAorRFJNIERSSVZFUlMgRk9SIEZSRUVTQ0FM RSBEQ1UKK006CUppYW53ZWkgV2FuZyA8amlhbndlaS53YW5nLmNobkBnbWFpbC5jb20+CitNOglB bGlzb24gV2FuZyA8YWxpc29uLndhbmdAZnJlZXNjYWxlLmNvbT4KK0w6CWRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZnNsLGRjdS50 eHQKKwogRFJNIERSSVZFUlMgRk9SIEZSRUVTQ0FMRSBJTVgKIE06CVBoaWxpcHAgWmFiZWwgPHAu emFiZWxAcGVuZ3V0cm9uaXguZGU+CiBMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9L Y29uZmlnCmluZGV4IGM0NmNhMzEuLjljZmQxNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0yMzEsNiArMjMxLDgg QEAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWciCiAKIHNvdXJjZSAiZHJp dmVycy9ncHUvZHJtL21zbS9LY29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L0tjb25maWciCisKIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3RlZ3JhL0tjb25maWciCiAK IHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWciCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggNTcx M2QwNS4uMTFjYjgxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtNzAsMyArNzAsNCBAQCBvYmotJChDT05GSUdf RFJNX0lNWCkgKz0gaW14Lwogb2JqLXkJCQkrPSBpMmMvCiBvYmoteQkJCSs9IHBhbmVsLwogb2Jq LXkJCQkrPSBicmlkZ2UvCitvYmotJChDT05GSUdfRFJNX0ZTTF9EQ1UpICs9IGZzbC1kY3UvCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j NzhjZjNmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZp ZwpAQCAtMCwwICsxLDE4IEBACitjb25maWcgRFJNX0ZTTF9EQ1UKKwl0cmlzdGF0ZSAiRFJNIFN1 cHBvcnQgZm9yIEZyZWVzY2FsZSBEQ1UiCisJZGVwZW5kcyBvbiBEUk0gJiYgT0YgJiYgQVJNCisJ c2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwlzZWxlY3QgQkFDS0xJR0hUX0xDRF9TVVBQ T1JUCisJc2VsZWN0IERSTV9LTVNfSEVMUEVSCisJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgor CXNlbGVjdCBEUk1fS01TX0ZCX0hFTFBFUgorCXNlbGVjdCBEUk1fUEFORUwKKwlzZWxlY3QgRkJf U1lTX0ZJTExSRUNUCisJc2VsZWN0IEZCX1NZU19DT1BZQVJFQQorCXNlbGVjdCBGQl9TWVNfSU1B R0VCTElUCisJc2VsZWN0IEZCX1NZU19GT1BTCisJc2VsZWN0IFJFR01BUF9NTUlPCisJc2VsZWN0 IFZJREVPTU9ERV9IRUxQRVJTCisJaGVscAorCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBo YXZlIGFuIEZyZWVzY2FsZSBEQ1UgY2hpcHNldC4KKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1v ZHVsZSB3aWxsIGJlIGNhbGxlZCBmc2wtZGN1LWRybS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmOWM1OAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L01ha2VmaWxlCkBAIC0wLDAgKzEsNyBAQAor ZnNsLWRjdS1kcm0teSA6PSBmc2xfZGN1X2RybV9kcnYubyBcCisJCSBmc2xfZGN1X2RybV9rbXMu byBcCisJCSBmc2xfZGN1X2RybV9yZ2IubyBcCisJCSBmc2xfZGN1X2RybV9wbGFuZS5vIFwKKwkJ IGZzbF9kY3VfZHJtX2NydGMubyBcCisJCSBmc2xfZGN1X2RybV9mYmRldi5vCitvYmotJChDT05G SUdfRFJNX0ZTTF9EQ1UpCSs9IGZzbC1kY3UtZHJtLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX2NydGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j NzEyM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fY3J0Yy5jCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJl ZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZp Y2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVk ZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisKKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgor I2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX3BsYW5l LmgiCisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKK3sKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9jcnRjX2F0b21p Y19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJCSBzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKnN0YXRlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9j cnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyB2 b2lkIGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1f ZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0OworCisJcmV0ID0g cmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAorCQkJCSBE Q1VfTU9ERV9EQ1VfTU9ERV9NQVNLLAorCQkJCSBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9ERV9P RkYpKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGZzbF9kZXYtPmRldiwgIkRpc2FibGUgQ1JUQyBm YWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERB VEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKKwlpZiAocmV0KQorCQlk ZXZfZXJyKGZzbF9kZXYtPmRldiwgIkVuYWJsZSBDUlRDIGZhaWxlZFxuIik7Cit9CisKK3N0YXRp YyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBmc2xfZGN1X2Ry bV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCByZXQ7CisKKwlyZXQg PSByZWdtYXBfdXBkYXRlX2JpdHMoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfRENVX01PREUsCisJCQkJ IERDVV9NT0RFX0RDVV9NT0RFX01BU0ssCisJCQkJIERDVV9NT0RFX0RDVV9NT0RFKERDVV9NT0RF X05PUk1BTCkpOworCWlmIChyZXQpCisJCWRldl9lcnIoZnNsX2Rldi0+ZGV2LCAiRW5hYmxlIENS VEMgZmFpbGVkXG4iKTsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf VVBEQVRFX01PREUsCisJCQkgICBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisJaWYgKHJldCkK KwkJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJFbmFibGUgQ1JUQyBmYWlsZWRcbiIpOworfQorCitz dGF0aWMgYm9vbCBmc2xfZGN1X2RybV9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpj cnRjLAorCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9 CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlz dHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5zdGF0ZS0+bW9kZTsKKwl1aW50 MzJfdCBoYnAsIGhmcCwgaHN3LCB2YnAsIHZmcCwgdnN3LCBkaXYsIGluZGV4OworCXVuc2lnbmVk IGxvbmcgZGN1Y2xrOworCWludCByZXQ7CisKKwlpbmRleCA9IGRybV9jcnRjX2luZGV4KGNydGMp OworCWRjdWNsayA9IGNsa19nZXRfcmF0ZShmc2xfZGV2LT5jbGspOworCWRpdiA9IGRjdWNsayAv IG1vZGUtPmNsb2NrIC8gMTAwMDsKKworCS8qIENvbmZpZ3VyZSB0aW1pbmdzOiAqLworCWhicCA9 IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloZnAgPSBtb2RlLT5oc3luY19zdGFy dCAtIG1vZGUtPmhkaXNwbGF5OworCWhzdyA9IG1vZGUtPmhzeW5jX2VuZCAtIG1vZGUtPmhzeW5j X3N0YXJ0OworCXZicCA9IG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZzeW5jX2VuZDsKKwl2ZnAgPSBt b2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZkaXNwbGF5OworCXZzdyA9IG1vZGUtPnZzeW5jX2Vu ZCAtIG1vZGUtPnZzeW5jX3N0YXJ0OworCisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJl Z21hcCwgRENVX0hTWU5fUEFSQSwKKwkJCSAgIERDVV9IU1lOX1BBUkFfQlAoaGJwKSB8CisJCQkg ICBEQ1VfSFNZTl9QQVJBX1BXKGhzdykgfAorCQkJICAgRENVX0hTWU5fUEFSQV9GUChoZnApKTsK KwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX1ZTWU5fUEFSQSwKKwkJCSAgIERDVV9WU1lOX1BBUkFfQlAodmJwKSB8 CisJCQkgICBEQ1VfVlNZTl9QQVJBX1BXKHZzdykgfAorCQkJICAgRENVX1ZTWU5fUEFSQV9GUCh2 ZnApKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJU1BfU0laRSwKKwkJCSAgIERDVV9ESVNQX1NJWkVfREVM VEFfWShtb2RlLT52ZGlzcGxheSkgfAorCQkJICAgRENVX0RJU1BfU0laRV9ERUxUQV9YKG1vZGUt PmhkaXNwbGF5KSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9ESVZfUkFUSU8sIGRpdik7CisJaWYgKHJldCkK KwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9TWU5fUE9MLAorCQkJICAgRENVX1NZTl9QT0xfSU5WX1ZTX0xPVyB8IERDVV9TWU5fUE9M X0lOVl9IU19MT1cpOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdt YXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQkdORCwgRENVX0JHTkRfUigwKSB8CisJCQkg ICBEQ1VfQkdORF9HKDApIHwgRENVX0JHTkRfQigwKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRf ZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9E RSwKKwkJCSAgIERDVV9NT0RFX0JMRU5EX0lURVIoMSkgfCBEQ1VfTU9ERV9SQVNURVJfRU4pOwor CWlmIChyZXQpCisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfVEhSRVNIT0xELAorCQkJICAgRENVX1RIUkVTSE9MRF9MU19CRl9WUyhC Rl9WU19WQUwpIHwKKwkJCSAgIERDVV9USFJFU0hPTERfT1VUX0JVRl9ISUdIKEJVRl9NQVhfVkFM KSB8CisJCQkgICBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfTE9XKEJVRl9NSU5fVkFMKSk7CisJaWYg KHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9VUERBVEVfTU9ERSwKKwkJCSAgIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsK KwlpZiAocmV0KQorCQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0dXJuOworc2V0X2ZhaWxlZDoKKwlk ZXZfZXJyKGRldi0+ZGV2LCAic2V0IERDVSByZWdpc3RlciBmYWlsZWRcbiIpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBmc2xfZGN1X2RybV9jcnRjX2hl bHBlcl9mdW5jcyA9IHsKKwkuYXRvbWljX2JlZ2luID0gZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNf YmVnaW4sCisJLmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX2NydGNfYXRvbWljX2NoZWNrLAor CS5hdG9taWNfZmx1c2ggPSBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19mbHVzaCwKKwkuZGlzYWJs ZSA9IGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YywKKwkuZW5hYmxlID0gZnNsX2RjdV9kcm1fY3J0 Y19lbmFibGUsCisJLm1vZGVfZml4dXAgPSBmc2xfZGN1X2RybV9jcnRjX21vZGVfZml4dXAsCisJ Lm1vZGVfc2V0X25vZmIgPSBmc2xfZGN1X2RybV9jcnRjX21vZGVfc2V0X25vZmIsCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGZzbF9kY3VfZHJtX2NydGNfZnVuY3Mg PSB7CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1 cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9jcnRjX2Rlc3Ryb3lfc3RhdGUsCisJLmRlc3Ryb3kgPSBkcm1fY3J0Y19jbGVhbnVwLAorCS5w YWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCisJLnJlc2V0ID0gZHJtX2F0 b21pY19oZWxwZXJfY3J0Y19yZXNldCwKKwkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVy X3NldF9jb25maWcsCit9OworCitpbnQgZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGZz bF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKK3sKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5 OworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZmc2xfZGV2LT5jcnRjOworCXVuc2lnbmVkIGlu dCBpLCBqLCByZWdfbnVtOworCWludCByZXQ7CisKKwlwcmltYXJ5ID0gZnNsX2RjdV9kcm1fcHJp bWFyeV9jcmVhdGVfcGxhbmUoZnNsX2Rldi0+ZHJtKTsKKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dp dGhfcGxhbmVzKGZzbF9kZXYtPmRybSwgY3J0YywgcHJpbWFyeSwgTlVMTCwKKwkJCQkJJmZzbF9k Y3VfZHJtX2NydGNfZnVuY3MpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJZHJt X2NydGNfaGVscGVyX2FkZChjcnRjLCAmZnNsX2RjdV9kcm1fY3J0Y19oZWxwZXJfZnVuY3MpOwor CisJaWYgKCFzdHJjbXAoZnNsX2Rldi0+c29jLT5uYW1lLCAibHMxMDIxYSIpKQorCQlyZWdfbnVt ID0gTFMxMDIxQV9MQVlFUl9SRUdfTlVNOworCWVsc2UKKwkJcmVnX251bSA9IFZGNjEwX0xBWUVS X1JFR19OVU07CisJZm9yIChpID0gMDsgaSA8PSBmc2xfZGV2LT5zb2MtPnRvdGFsX2xheWVyOyBp KyspIHsKKwkJZm9yIChqID0gMDsgaiA8IHJlZ19udW07IGorKykgeworCQkJcmV0ID0gcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwKKwkJCQkJICAgRENVX0NUUkxERVNDTE4oaSwgaiksIDAp OworCQkJaWYgKHJldCkKKwkJCQlnb3RvIGluaXRfZmFpbGVkOworCQl9CisJfQorCXJldCA9IHJl Z21hcF91cGRhdGVfYml0cyhmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9ERSwKKwkJCQkgRENV X01PREVfRENVX01PREVfTUFTSywKKwkJCQkgRENVX01PREVfRENVX01PREUoRENVX01PREVfT0ZG KSk7CisJaWYgKHJldCkKKwkJZ290byBpbml0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsCisJCQkgICBEQ1VfVVBEQVRFX01PREVf UkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZ290byBpbml0X2ZhaWxlZDsKKworCXJldHVybiAwOwor aW5pdF9mYWlsZWQ6CisJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJpbml0IERDVSByZWdpc3RlciBm YWlsZWRcbiIpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xf ZGN1X2RybV9jcnRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkNGRh MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2NydGMuaApAQCAtMCwwICsxLDE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxl IFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJp dmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICog KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNM X0RDVV9EUk1fQ1JUQ19IX18KKyNkZWZpbmUgX19GU0xfRENVX0RSTV9DUlRDX0hfXworCitzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOworCitpbnQgZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rldik7CisKKyNlbmRpZiAvKiBfX0ZTTF9EQ1Vf RFJNX0NSVENfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xf ZGN1X2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNDhkNzcKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYwpAQCAtMCww ICsxLDQwMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9y LCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2lu Y2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5j bHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wbS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKwor I2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5o PgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJt X2Rydi5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgZnNsX2RjdV9yZWdt YXBfY29uZmlnID0geworCS5yZWdfYml0cyA9IDMyLAorCS5yZWdfc3RyaWRlID0gNCwKKwkudmFs X2JpdHMgPSAzMiwKK307CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1faXJxX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisJaW50IHJldDsKKwor CXJldCA9IGRybV9pcnFfaW5zdGFsbChkZXYsIGZzbF9kZXYtPmlycSk7CisJaWYgKHJldCA8IDAp CisJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5zdGFsbCBJUlEgaGFuZGxlclxuIik7 CisKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywg MCk7CisJaWYgKHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInNldCBEQ1VfSU5UX1NUQVRVUyBm YWlsZWRcbiIpOworCXJldCA9IHJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9N QVNLLCAmdmFsdWUpOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJyZWFkIERDVV9J TlRfTUFTSyBmYWlsZWRcbiIpOworCXZhbHVlICY9IERDVV9JTlRfTUFTS19WQkxBTks7CisJcmV0 ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCB2YWx1ZSk7CisJ aWYgKHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInNldCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4i KTsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUs CisJCQkgICBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZGV2X2Vycihk ZXYtPmRldiwgInNldCBEQ1VfVVBEQVRFX01PREUgZmFpbGVkXG4iKTsKKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHVu c2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gZHJtLT5kZXY7CisJ c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRybS0+ZGV2X3ByaXZhdGU7CisJ aW50IHJldDsKKworCXJldCA9IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChmc2xfZGV2KTsKKwlp ZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIG1vZGUg c2V0dGluZ1xuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gZHJtX3ZibGFua19pbml0 KGRybSwgZHJtLT5tb2RlX2NvbmZpZy5udW1fY3J0Yyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2 X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSB2YmxhbmtcbiIpOworCQlnb3RvIGRvbmU7 CisJfQorCWRybS0+dmJsYW5rX2Rpc2FibGVfYWxsb3dlZCA9IHRydWU7CisKKwlyZXQgPSBmc2xf ZGN1X2RybV9pcnFfaW5pdChkcm0pOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGRvbmU7CisJZHJt LT5pcnFfZW5hYmxlZCA9IHRydWU7CisKKwlmc2xfZGN1X2ZiZGV2X2luaXQoZHJtKTsKKworCXJl dHVybiAwOworZG9uZToKKwlpZiAocmV0KSB7CisJCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRy bSk7CisJCWRybV92YmxhbmtfY2xlYW51cChkcm0pOworCQlkcm1faXJxX3VuaW5zdGFsbChkcm0p OworCQlkcm0tPmRldl9wcml2YXRlID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50IGZzbF9kY3VfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZHJt X21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKKwlkcm1fdmJsYW5rX2NsZWFudXAoZGV2KTsKKwlk cm1faXJxX3VuaW5zdGFsbChkZXYpOworCisJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fcHJlY2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworfQorCitzdGF0aWMgaXJx cmV0dXJuX3QgZnNsX2RjdV9kcm1faXJxKGludCBpcnEsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gYXJnOworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9k ZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGludCBpbnRfc3RhdHVzOworCWludCBy ZXQ7CisKKwlyZXQgPSByZWdtYXBfcmVhZChmc2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfU1RBVFVT LCAmaW50X3N0YXR1cyk7CisJaWYgKHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInNldCBEQ1Vf SU5UX1NUQVRVUyBmYWlsZWRcbiIpOworCWlmIChpbnRfc3RhdHVzICYgRENVX0lOVF9TVEFUVVNf VkJMQU5LKQorCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIDApOworCisJcmV0ID0gcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9TVEFUVVMsIDB4ZmZmZmZmZmYpOworCWlmIChy ZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJzZXQgRENVX0lOVF9TVEFUVVMgZmFpbGVkXG4iKTsK KwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsCisJ CQkgICBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRyk7CisJaWYgKHJldCkKKwkJZGV2X2VycihkZXYt PmRldiwgInNldCBEQ1VfVVBEQVRFX01PREUgZmFpbGVkXG4iKTsKKworCXJldHVybiBJUlFfSEFO RExFRDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9lbmFibGVfdmJsYW5rKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVkIGludCB2YWx1ZTsKKwlpbnQg cmV0OworCisJcmV0ID0gcmVnbWFwX3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX01BU0ss ICZ2YWx1ZSk7CisJaWYgKHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInJlYWQgRENVX0lOVF9N QVNLIGZhaWxlZFxuIik7CisJdmFsdWUgJj0gfkRDVV9JTlRfTUFTS19WQkxBTks7CisJcmV0ID0g cmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCB2YWx1ZSk7CisJaWYg KHJldCkKKwkJZGV2X2VycihkZXYtPmRldiwgInNldCBEQ1VfSU5UX01BU0sgZmFpbGVkXG4iKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZGlzYWJsZV92Ymxhbmso c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCit7CisJc3RydWN0IGZzbF9kY3VfZHJt X2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdW5zaWduZWQgaW50IHZhbHVl OworCWludCByZXQ7CisKKwlyZXQgPSByZWdtYXBfcmVhZChmc2xfZGV2LT5yZWdtYXAsIERDVV9J TlRfTUFTSywgJnZhbHVlKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKGRldi0+ZGV2LCAicmVhZCBE Q1VfSU5UX01BU0sgZmFpbGVkXG4iKTsKKwl2YWx1ZSB8PSBEQ1VfSU5UX01BU0tfVkJMQU5LOwor CXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfTUFTSywgdmFsdWUp OworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LT5kZXYsICJzZXQgRENVX0lOVF9NQVNLIGZhaWxl ZFxuIik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZzbF9kY3Vf ZHJtX2ZvcHMgPSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGRybV9vcGVu LAorCS5yZWxlYXNlCT0gZHJtX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsCT0gZHJtX2lvY3Rs LAorI2lmZGVmIENPTkZJR19DT01QQVQKKwkuY29tcGF0X2lvY3RsCT0gZHJtX2NvbXBhdF9pb2N0 bCwKKyNlbmRpZgorCS5wb2xsCQk9IGRybV9wb2xsLAorCS5yZWFkCQk9IGRybV9yZWFkLAorCS5s bHNlZWsJCT0gbm9fbGxzZWVrLAorCS5tbWFwCQk9IGRybV9nZW1fY21hX21tYXAsCit9OworCitz dGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZnNsX2RjdV9kcm1fZHJpdmVyID0geworCS5kcml2ZXJf ZmVhdHVyZXMJPSBEUklWRVJfSEFWRV9JUlEgfCBEUklWRVJfR0VNIHwgRFJJVkVSX01PREVTRVQK KwkJCQl8IERSSVZFUl9QUklNRSB8IERSSVZFUl9BVE9NSUMsCisJLmxvYWQJCQk9IGZzbF9kY3Vf bG9hZCwKKwkudW5sb2FkCQkJPSBmc2xfZGN1X3VubG9hZCwKKwkucHJlY2xvc2UJCT0gZnNsX2Rj dV9kcm1fcHJlY2xvc2UsCisJLmlycV9oYW5kbGVyCQk9IGZzbF9kY3VfZHJtX2lycSwKKwkuZ2V0 X3ZibGFua19jb3VudGVyCT0gZHJtX3ZibGFua19jb3VudCwKKwkuZW5hYmxlX3ZibGFuawkJPSBm c2xfZGN1X2RybV9lbmFibGVfdmJsYW5rLAorCS5kaXNhYmxlX3ZibGFuawkJPSBmc2xfZGN1X2Ry bV9kaXNhYmxlX3ZibGFuaywKKwkuZ2VtX2ZyZWVfb2JqZWN0CT0gZHJtX2dlbV9jbWFfZnJlZV9v YmplY3QsCisJLmdlbV92bV9vcHMJCT0gJmRybV9nZW1fY21hX3ZtX29wcywKKwkucHJpbWVfaGFu ZGxlX3RvX2ZkCT0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCisJLnByaW1lX2ZkX3RvX2hh bmRsZQk9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAorCS5nZW1fcHJpbWVfaW1wb3J0CT0g ZHJtX2dlbV9wcmltZV9pbXBvcnQsCisJLmdlbV9wcmltZV9leHBvcnQJPSBkcm1fZ2VtX3ByaW1l X2V4cG9ydCwKKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3ByaW1lX2dl dF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3By aW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX3ZtYXAJCT0gZHJtX2dlbV9jbWFfcHJp bWVfdm1hcCwKKwkuZ2VtX3ByaW1lX3Z1bm1hcAk9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwK KwkuZ2VtX3ByaW1lX21tYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCwKKwkuZHVtYl9jcmVh dGUJCT0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsCisJLmR1bWJfbWFwX29mZnNldAk9IGRybV9n ZW1fY21hX2R1bWJfbWFwX29mZnNldCwKKwkuZHVtYl9kZXN0cm95CQk9IGRybV9nZW1fZHVtYl9k ZXN0cm95LAorCS5mb3BzCQkJPSAmZnNsX2RjdV9kcm1fZm9wcywKKwkubmFtZQkJCT0gImZzbC1k Y3UtZHJtIiwKKwkuZGVzYwkJCT0gIkZyZWVzY2FsZSBEQ1UgRFJNIiwKKwkuZGF0ZQkJCT0gIjIw MTUwMjEzIiwKKwkubWFqb3IJCQk9IDEsCisJLm1pbm9yCQkJPSAwLAorfTsKKworI2lmZGVmIENP TkZJR19QTV9TTEVFUAorc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9zdXNwZW5kKHN0cnVjdCBk ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2 X2dldF9kcnZkYXRhKGRldik7CisKKwlpZiAoIWZzbF9kZXYpCisJCXJldHVybiAwOworCisJZHJt X2ttc19oZWxwZXJfcG9sbF9kaXNhYmxlKGZzbF9kZXYtPmRybSk7CisJcmVnY2FjaGVfY2FjaGVf b25seShmc2xfZGV2LT5yZWdtYXAsIHRydWUpOworCXJlZ2NhY2hlX21hcmtfZGlydHkoZnNsX2Rl di0+cmVnbWFwKTsKKwljbGtfZGlzYWJsZShmc2xfZGV2LT5jbGspOworCWNsa191bnByZXBhcmUo ZnNsX2Rldi0+Y2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJt X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Rl dmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQ7CisKKwlpZiAo IWZzbF9kZXYpCisJCXJldHVybiAwOworCisJcmV0ID0gY2xrX2VuYWJsZShmc2xfZGV2LT5jbGsp OworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBkY3Ug Y2xrXG4iKTsKKwkJY2xrX3VucHJlcGFyZShmc2xfZGV2LT5jbGspOworCQlyZXR1cm4gcmV0Owor CX0KKwlyZXQgPSBjbGtfcHJlcGFyZShmc2xfZGV2LT5jbGspOworCWlmIChyZXQgPCAwKSB7CisJ CWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHByZXBhcmUgZGN1IGNsa1xuIik7CisJCXJldHVybiBy ZXQ7CisJfQorCisJZHJtX2ttc19oZWxwZXJfcG9sbF9lbmFibGUoZnNsX2Rldi0+ZHJtKTsKKwly ZWdjYWNoZV9jYWNoZV9vbmx5KGZzbF9kZXYtPnJlZ21hcCwgZmFsc2UpOworCXJlZ2NhY2hlX3N5 bmMoZnNsX2Rldi0+cmVnbWFwKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmc2xfZGN1X2RybV9wbV9vcHMgPSB7CisJU0VUX1NZU1RF TV9TTEVFUF9QTV9PUFMoZnNsX2RjdV9kcm1fcG1fc3VzcGVuZCwgZnNsX2RjdV9kcm1fcG1fcmVz dW1lKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBmc2xfZGN1X3NvY19kYXRhIGZzbF9kY3Vf bHMxMDIxYV9kYXRhID0geworCS5uYW1lID0gImxzMTAyMWEiLAorCS50b3RhbF9sYXllciA9IDE2 LAorCS5tYXhfbGF5ZXIgPSA0LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBmc2xfZGN1X3Nv Y19kYXRhIGZzbF9kY3VfdmY2MTBfZGF0YSA9IHsKKwkubmFtZSA9ICJ2ZjYxMCIsCisJLnRvdGFs X2xheWVyID0gNjQsCisJLm1heF9sYXllciA9IDYsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBmc2xfZGN1X29mX21hdGNoW10gPSB7CisJeworCQkuY29tcGF0aWJsZSA9 ICJmc2wsbHMxMDIxYS1kY3UiLAorCQkuZGF0YSA9ICZmc2xfZGN1X2xzMTAyMWFfZGF0YSwKKwl9 LCB7CisJCS5jb21wYXRpYmxlID0gImZzbCx2ZjYxMC1kY3UiLAorCQkuZGF0YSA9ICZmc2xfZGN1 X3ZmNjEwX2RhdGEsCisJfSwgeworCX0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZnNs X2RjdV9vZl9tYXRjaCk7CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBk ZXYtPmRldjsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisJ c3RydWN0IGRybV9kcml2ZXIgKmRyaXZlciA9ICZmc2xfZGN1X2RybV9kcml2ZXI7CisJY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCAqaWQ7CisJaW50IHJldDsKKworCWZzbF9kZXYgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKmZzbF9kZXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZzbF9kZXYp CisJCXJldHVybiAtRU5PTUVNOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYs IElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpZiAoIXJlcykgeworCQlkZXZfZXJyKGRldiwgImNvdWxk IG5vdCBnZXQgbWVtb3J5IElPIHJlc291cmNlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQor CisJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUihi YXNlKSkgeworCQlyZXQgPSBQVFJfRVJSKGJhc2UpOworCQlyZXR1cm4gcmV0OworCX0KKworCWZz bF9kZXYtPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKHJldCA8IDApIHsK KwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGlycVxuIik7CisJCXJldHVybiByZXQ7CisJ fQorCisJZnNsX2Rldi0+Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImRjdSIpOworCWlmIChJU19F UlIoZnNsX2Rldi0+Y2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKGZzbF9kZXYtPmNsayk7CisJCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBkY3UgY2xvY2tcbiIpOworCQlyZXR1cm4gcmV0Owor CX0KKwlyZXQgPSBjbGtfcHJlcGFyZShmc2xfZGV2LT5jbGspOworCWlmIChyZXQgPCAwKSB7CisJ CWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHByZXBhcmUgZGN1IGNsa1xuIik7CisJCXJldHVybiBy ZXQ7CisJfQorCXJldCA9IGNsa19lbmFibGUoZnNsX2Rldi0+Y2xrKTsKKwlpZiAocmV0IDwgMCkg eworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgZGN1IGNsa1xuIik7CisJCWNsa191 bnByZXBhcmUoZnNsX2Rldi0+Y2xrKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlmc2xfZGV2LT5y ZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCBiYXNlLAorCQkJJmZzbF9kY3VfcmVn bWFwX2NvbmZpZyk7CisJaWYgKElTX0VSUihmc2xfZGV2LT5yZWdtYXApKSB7CisJCWRldl9lcnIo ZGV2LCAicmVnbWFwIGluaXQgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZnNsX2Rldi0+ cmVnbWFwKTsKKwl9CisKKwlpZCA9IG9mX21hdGNoX25vZGUoZnNsX2RjdV9vZl9tYXRjaCwgcGRl di0+ZGV2Lm9mX25vZGUpOworCWlmICghaWQpCisJCXJldHVybiAtRU5PREVWOworCWZzbF9kZXYt PnNvYyA9IGlkLT5kYXRhOworCisJZHJtID0gZHJtX2Rldl9hbGxvYyhkcml2ZXIsIGRldik7CisJ aWYgKCFkcm0pCisJCXJldHVybiAtRU5PTUVNOworCisJZnNsX2Rldi0+ZGV2ID0gZGV2OworCWZz bF9kZXYtPmRybSA9IGRybTsKKwlmc2xfZGV2LT5ucCA9IGRldi0+b2Zfbm9kZTsKKwlkcm0tPmRl dl9wcml2YXRlID0gZnNsX2RldjsKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBmc2xfZGV2KTsKKwlk cm1fZGV2X3NldF91bmlxdWUoZHJtLCBkZXZfbmFtZShkZXYpKTsKKworCXJldCA9IGRybV9kZXZf cmVnaXN0ZXIoZHJtLCAwKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byB1bnJlZjsKKworCURSTV9J TkZPKCJJbml0aWFsaXplZCAlcyAlZC4lZC4lZCAlcyBvbiBtaW5vciAlZFxuIiwgZHJpdmVyLT5u YW1lLAorCQkgZHJpdmVyLT5tYWpvciwgZHJpdmVyLT5taW5vciwgZHJpdmVyLT5wYXRjaGxldmVs LAorCQkgZHJpdmVyLT5kYXRlLCBkcm0tPnByaW1hcnktPmluZGV4KTsKKworCXJldHVybiAwOwor Cit1bnJlZjoKKwlkcm1fZGV2X3VucmVmKGRybSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBmc2xfZGN1X2RybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sK KwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRh dGEocGRldik7CisKKwlkcm1fcHV0X2Rldihmc2xfZGV2LT5kcm0pOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZzbF9kY3VfZHJtX3BsYXRmb3JtX2Ry aXZlciA9IHsKKwkucHJvYmUJCT0gZnNsX2RjdV9kcm1fcHJvYmUsCisJLnJlbW92ZQkJPSBmc2xf ZGN1X2RybV9yZW1vdmUsCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCT0gImZzbC1kY3UiLAorCQku cG0JPSAmZnNsX2RjdV9kcm1fcG1fb3BzLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBmc2xfZGN1X29m X21hdGNoLAorCX0sCit9OworCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZzbF9kY3VfZHJtX3Bs YXRmb3JtX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiRnJlZXNjYWxlIERDVSBEUk0g RHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX2Rydi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3 OWI5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9kcnYuaApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVz Y2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNl IGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBf X0ZTTF9EQ1VfRFJNX0RSVl9IX18KKyNkZWZpbmUgX19GU0xfRENVX0RSTV9EUlZfSF9fCisKKyNp bmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fb3V0cHV0 LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKworI2RlZmluZSBEQ1VfRENVX01P REUJCQkweDAwMTAKKyNkZWZpbmUgRENVX01PREVfQkxFTkRfSVRFUih4KQkJKCh4KSA8PCAyMCkK KyNkZWZpbmUgRENVX01PREVfUkFTVEVSX0VOCQlCSVQoMTQpCisjZGVmaW5lIERDVV9NT0RFX0RD VV9NT0RFKHgpCQkoeCkKKyNkZWZpbmUgRENVX01PREVfRENVX01PREVfTUFTSwkJMHgwMworI2Rl ZmluZSBEQ1VfTU9ERV9PRkYJCQkwCisjZGVmaW5lIERDVV9NT0RFX05PUk1BTAkJCTEKKyNkZWZp bmUgRENVX01PREVfVEVTVAkJCTIKKyNkZWZpbmUgRENVX01PREVfQ09MT1JCQVIJCTMKKworI2Rl ZmluZSBEQ1VfQkdORAkJCTB4MDAxNAorI2RlZmluZSBEQ1VfQkdORF9SKHgpCQkJKCh4KSA8PCAx NikKKyNkZWZpbmUgRENVX0JHTkRfRyh4KQkJCSgoeCkgPDwgOCkKKyNkZWZpbmUgRENVX0JHTkRf Qih4KQkJCSh4KQorCisjZGVmaW5lIERDVV9ESVNQX1NJWkUJCQkweDAwMTgKKyNkZWZpbmUgRENV X0RJU1BfU0laRV9ERUxUQV9ZKHgpCSgoeCkgPDwgMTYpCisvKlJlZ2lzaXRlciB2YWx1ZSAxLzE2 IG9mIGhvcml6b250YWwgcmVzb2x1dGlvbiovCisjZGVmaW5lIERDVV9ESVNQX1NJWkVfREVMVEFf WCh4KQkoKHgpID4+IDQpCisKKyNkZWZpbmUgRENVX0hTWU5fUEFSQQkJCTB4MDAxYworI2RlZmlu ZSBEQ1VfSFNZTl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQorI2RlZmluZSBEQ1VfSFNZTl9QQVJB X1BXKHgpCQkoKHgpIDw8IDExKQorI2RlZmluZSBEQ1VfSFNZTl9QQVJBX0ZQKHgpCQkoeCkKKwor I2RlZmluZSBEQ1VfVlNZTl9QQVJBCQkJMHgwMDIwCisjZGVmaW5lIERDVV9WU1lOX1BBUkFfQlAo eCkJCSgoeCkgPDwgMjIpCisjZGVmaW5lIERDVV9WU1lOX1BBUkFfUFcoeCkJCSgoeCkgPDwgMTEp CisjZGVmaW5lIERDVV9WU1lOX1BBUkFfRlAoeCkJCSh4KQorCisjZGVmaW5lIERDVV9TWU5fUE9M CQkJMHgwMDI0CisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9QWENLX0ZBTEwJKDAgPDwgNikKKyNk ZWZpbmUgRENVX1NZTl9QT0xfTkVHX1JFTUFJTgkJKDAgPDwgNSkKKyNkZWZpbmUgRENVX1NZTl9Q T0xfSU5WX1ZTX0xPVwkJQklUKDEpCisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9IU19MT1cJCUJJ VCgwKQorCisjZGVmaW5lIERDVV9USFJFU0hPTEQJCQkweDAwMjgKKyNkZWZpbmUgRENVX1RIUkVT SE9MRF9MU19CRl9WUyh4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfVEhSRVNIT0xEX09VVF9C VUZfSElHSCh4KQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9USFJFU0hPTERfT1VUX0JVRl9MT1co eCkJKHgpCisjZGVmaW5lIEJGX1ZTX1ZBTAkJCTB4MDMKKyNkZWZpbmUgQlVGX01BWF9WQUwJCQkw eDc4CisjZGVmaW5lIEJVRl9NSU5fVkFMCQkJMHgwYQorCisjZGVmaW5lIERDVV9JTlRfU1RBVFVT CQkJMHgwMDJDCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1ZTWU5DCQlCSVQoMCkKKyNkZWZpbmUg RENVX0lOVF9TVEFUVVNfVU5EUlVOCQlCSVQoMSkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfTFNC RlZTCQlCSVQoMikKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfVkJMQU5LCQlCSVQoMykKKyNkZWZp bmUgRENVX0lOVF9TVEFUVVNfQ1JDUkVBRFkJCUJJVCg0KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRV U19DUkNPVkVSRkxPVwlCSVQoNSkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDFGSUZPTE8JCUJJ VCg2KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMUZJRk9ISQkJQklUKDcpCisjZGVmaW5lIERD VV9JTlRfU1RBVFVTX1AyRklGT0xPCQlCSVQoOCkKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDJG SUZPSEkJCUJJVCg5KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QUk9HRU5ECQlCSVQoMTApCisj ZGVmaW5lIERDVV9JTlRfU1RBVFVTX0lQTUVSUk9SCQlCSVQoMTEpCisjZGVmaW5lIERDVV9JTlRf U1RBVFVTX0xZUlRSQU5TCQlCSVQoMTIpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0RNQVRSQU5T CQlCSVQoMTQpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AzRklGT0xPCQlCSVQoMTYpCisjZGVm aW5lIERDVV9JTlRfU1RBVFVTX1AzRklGT0hJCQlCSVQoMTcpCisjZGVmaW5lIERDVV9JTlRfU1RB VFVTX1A0RklGT0xPCQlCSVQoMTgpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1A0RklGT0hJCQlC SVQoMTkpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AxRU1QVFkJCUJJVCgyNikKKyNkZWZpbmUg RENVX0lOVF9TVEFUVVNfUDJFTVBUWQkJQklUKDI3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19Q M0VNUFRZCQlCSVQoMjgpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1A0RU1QVFkJCUJJVCgyOSkK KworI2RlZmluZSBEQ1VfSU5UX01BU0sJCQkweDAwMzAKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZT WU5DCQlCSVQoMCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1VORFJVTgkJQklUKDEpCisjZGVmaW5l IERDVV9JTlRfTUFTS19MU0JGVlMJCUJJVCgyKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfVkJMQU5L CQlCSVQoMykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX0NSQ1JFQURZCQlCSVQoNCkKKyNkZWZpbmUg RENVX0lOVF9NQVNLX0NSQ09WRVJGTE9XCUJJVCg1KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDFG SUZPTE8JCUJJVCg2KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDFGSUZPSEkJCUJJVCg3KQorI2Rl ZmluZSBEQ1VfSU5UX01BU0tfUDJGSUZPTE8JCUJJVCg4KQorI2RlZmluZSBEQ1VfSU5UX01BU0tf UDJGSUZPSEkJCUJJVCg5KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUFJPR0VORAkJQklUKDEwKQor I2RlZmluZSBEQ1VfSU5UX01BU0tfSVBNRVJST1IJCUJJVCgxMSkKKyNkZWZpbmUgRENVX0lOVF9N QVNLX0xZUlRSQU5TCQlCSVQoMTIpCisjZGVmaW5lIERDVV9JTlRfTUFTS19ETUFUUkFOUwkJQklU KDE0KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDNGSUZPTE8JCUJJVCgxNikKKyNkZWZpbmUgRENV X0lOVF9NQVNLX1AzRklGT0hJCQlCSVQoMTcpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QNEZJRk9M TwkJQklUKDE4KQorI2RlZmluZSBEQ1VfSU5UX01BU0tfUDRGSUZPSEkJCUJJVCgxOSkKKyNkZWZp bmUgRENVX0lOVF9NQVNLX1AxRU1QVFkJCUJJVCgyNikKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1Ay RU1QVFkJCUJJVCgyNykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AzRU1QVFkJCUJJVCgyOCkKKyNk ZWZpbmUgRENVX0lOVF9NQVNLX1A0RU1QVFkJCUJJVCgyOSkKKworI2RlZmluZSBEQ1VfRElWX1JB VElPCQkJMHgwMDU0CisKKyNkZWZpbmUgRENVX1VQREFURV9NT0RFCQkJMHgwMGNjCisjZGVmaW5l IERDVV9VUERBVEVfTU9ERV9NT0RFCQlCSVQoMzEpCisjZGVmaW5lIERDVV9VUERBVEVfTU9ERV9S RUFEUkVHCQlCSVQoMzApCisKKyNkZWZpbmUgRENVX0RDRkJfTUFYCQkJMHgzMDAKKworI2RlZmlu ZSBEQ1VfQ1RSTERFU0NMTihsYXllciwgcmVnKQkoMHgyMDAgKyAocmVnIC0gMSkgKiA0ICsgKGxh eWVyKSAqIDB4NDApCisKKyNkZWZpbmUgRENVX0xBWUVSX0hFSUdIVCh4KQkJKCh4KSA8PCAxNikK KyNkZWZpbmUgRENVX0xBWUVSX1dJRFRIKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfTEFZRVJfUE9T WSh4KQkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0xBWUVSX1BPU1goeCkJCSh4KQorCisjZGVm aW5lIERDVV9MQVlFUl9FTgkJCUJJVCgzMSkKKyNkZWZpbmUgRENVX0xBWUVSX1RJTEVfRU4JCUJJ VCgzMCkKKyNkZWZpbmUgRENVX0xBWUVSX0RBVEFfU0VMX0NMVVQJCUJJVCgyOSkKKyNkZWZpbmUg RENVX0xBWUVSX1NBRkVUWV9FTgkJQklUKDI4KQorI2RlZmluZSBEQ1VfTEFZRVJfVFJBTlMoeCkJ CSgoeCkgPDwgMjApCisjZGVmaW5lIERDVV9MQVlFUl9CUFAoeCkJCSgoeCkgPDwgMTYpCisjZGVm aW5lIERDVV9MQVlFUl9STEVfRU4JCUJJVCgxNSkKKyNkZWZpbmUgRENVX0xBWUVSX0xVT0ZGUyh4 KQkJKCh4KSA8PCA0KQorI2RlZmluZSBEQ1VfTEFZRVJfQkJfT04JCQlCSVQoMikKKyNkZWZpbmUg RENVX0xBWUVSX0FCKHgpCQkJKHgpCisKKyNkZWZpbmUgRENVX0xBWUVSX0NLTUFYX1IoeCkJCSgo eCkgPDwgMTYpCisjZGVmaW5lIERDVV9MQVlFUl9DS01BWF9HKHgpCQkoKHgpIDw8IDgpCisjZGVm aW5lIERDVV9MQVlFUl9DS01BWF9CKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfTEFZRVJfQ0tNSU5f Uih4KQkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0xBWUVSX0NLTUlOX0coeCkJCSgoeCkgPDwg OCkKKyNkZWZpbmUgRENVX0xBWUVSX0NLTUlOX0IoeCkJCSh4KQorCisjZGVmaW5lIERDVV9MQVlF Ul9USUxFX1ZFUih4KQkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0xBWUVSX1RJTEVfSE9SKHgp CQkoeCkKKworI2RlZmluZSBEQ1VfTEFZRVJfRkdfRkNPTE9SKHgpCQkoeCkKKworI2RlZmluZSBE Q1VfTEFZRVJfQkdfQkNPTE9SKHgpCQkoeCkKKworI2RlZmluZSBEQ1VfTEFZRVJfUE9TVF9TS0lQ KHgpCQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfTEFZRVJfUFJFX1NLSVAoeCkJCSh4KQorCisj ZGVmaW5lIEZTTF9EQ1VfUkdCNTY1CQkJNAorI2RlZmluZSBGU0xfRENVX1JHQjg4OAkJCTUKKyNk ZWZpbmUgRlNMX0RDVV9BUkdCODg4OAkJNgorI2RlZmluZSBGU0xfRENVX0FSR0IxNTU1CQkxMQor I2RlZmluZSBGU0xfRENVX0FSR0I0NDQ0CQkxMgorI2RlZmluZSBGU0xfRENVX1lVVjQyMgkJCTE0 CisKKyNkZWZpbmUgVkY2MTBfTEFZRVJfUkVHX05VTQkJOQorI2RlZmluZSBMUzEwMjFBX0xBWUVS X1JFR19OVU0JCTEwCisKK3N0cnVjdCBjbGs7CitzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGRybV9k ZXZpY2U7CisKK3N0cnVjdCBmc2xfZGN1X3NvY19kYXRhIHsKKwljb25zdCBjaGFyICpuYW1lOwor CS8qdG90YWwgbGF5ZXIgbnVtYmVyKi8KKwl1bnNpZ25lZCBpbnQgdG90YWxfbGF5ZXI7CisJLypt YXggbGF5ZXIgbnVtYmVyIERDVSBzdXBwb3J0ZWQqLworCXVuc2lnbmVkIGludCBtYXhfbGF5ZXI7 Cit9OworCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7 CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CisJaW50 IGlycTsKKwlzdHJ1Y3QgY2xrICpjbGs7CisJLypwcm90ZWN0cyBoYXJkd2FyZSByZWdpc3Rlciov CisJc3BpbmxvY2tfdCBpcnFfbG9jazsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOworCXN0cnVj dCBkcm1fZmJkZXZfY21hICpmYmRldjsKKwlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKKwlzdHJ1Y3Qg ZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yIGNvbm5l Y3RvcjsKKwljb25zdCBzdHJ1Y3QgZnNsX2RjdV9zb2NfZGF0YSAqc29jOworfTsKKwordm9pZCBm c2xfZGN1X2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQgZnNsX2RjdV9k cm1fbW9kZXNldF9pbml0KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpOworCisj ZW5kaWYgLyogX19GU0xfRENVX0RSTV9EUlZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fZmJkZXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44YjhiODE5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fZmJkZXYuYwpAQCAtMCwwICsxLDIzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUg RnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBk ZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5j bHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKwor I2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCisvKiBpbml0aWFsaXplIGZiZGV2IGhlbHBl ciAqLwordm9pZCBmc2xfZGN1X2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sK KwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRl di0+ZGV2KTsKKworCWZzbF9kZXYtPmZiZGV2ID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRldiwgMjQs IDEsIDEpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWY1OTU5Ci0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmMKQEAgLTAsMCArMSw0 MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMu CisgKgorICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o PgorI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2Rj dV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19m dW5jcyA9IHsKKwkuYXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCisJLmF0 b21pY19jb21taXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQsCisJLmZiX2NyZWF0ZSA9IGRy bV9mYl9jbWFfY3JlYXRlLAorfTsKKworaW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KQoreworCWRybV9tb2RlX2NvbmZpZ19pbml0 KGZzbF9kZXYtPmRybSk7CisKKwlmc2xfZGV2LT5kcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9 IDA7CisJZnNsX2Rldi0+ZHJtLT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsKKwlmc2xfZGV2 LT5kcm0tPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDIwMzE7CisJZnNsX2Rldi0+ZHJtLT5tb2Rl X2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjA0NzsKKwlmc2xfZGV2LT5kcm0tPm1vZGVfY29uZmlnLmZ1 bmNzID0gJmZzbF9kY3VfZHJtX21vZGVfY29uZmlnX2Z1bmNzOworCisJZHJtX2ttc19oZWxwZXJf cG9sbF9pbml0KGZzbF9kZXYtPmRybSk7CisJZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoZnNsX2Rl dik7CisJZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVhdGUoZnNsX2RldiwgJmZzbF9kZXYtPmNydGMp OworCWZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoZnNsX2RldiwgJmZzbF9kZXYtPmVuY29k ZXIpOworCWRybV9tb2RlX2NvbmZpZ19yZXNldChmc2xfZGV2LT5kcm0pOworCisJcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRw dXQuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1dC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOTMxMDkKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRwdXQuaApAQCAtMCwwICsx LDMzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIElu Yy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ09OTkVDVE9S X0hfXworI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18KKworc3RydWN0IGZzbF9k Y3VfZHJtX2Nvbm5lY3RvciB7CisJc3RydWN0IGRybV9jb25uZWN0b3IgYmFzZTsKKwlzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cit9OworCitz dGF0aWMgaW5saW5lIHN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgKgordG9fZnNsX2RjdV9j b25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbikKK3sKKwlyZXR1cm4gY29uID8gY29u dGFpbmVyX29mKGNvbiwgc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciwgYmFzZSkKKwkJICAg ICA6IE5VTEw7Cit9CisKK2ludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfY3JlYXRlKHN0cnVjdCBm c2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkJIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2Rlcik7CitpbnQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJt X2RldmljZSAqZnNsX2RldiwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOworCisj ZW5kaWYgLyogX19GU0xfRENVX0RSTV9DT05ORUNUT1JfSF9fICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJt L2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yMzdjMjgzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fcGxhbmUuYwpAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdo dCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERD VSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9m Yl9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9k cnYuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9wbGFuZS5oIgorCitzdGF0aWMgaW50IGZzbF9k Y3VfZHJtX3BsYW5lX2luZGV4KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCBm c2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwl1 bnNpZ25lZCBpbnQgdG90YWxfbGF5ZXIgPSBmc2xfZGV2LT5zb2MtPnRvdGFsX2xheWVyOworCXVu c2lnbmVkIGludCBpbmRleDsKKworCWluZGV4ID0gZHJtX3BsYW5lX2luZGV4KHBsYW5lKTsKKwlp ZiAoaW5kZXggPCB0b3RhbF9sYXllcikKKwkJcmV0dXJuIHRvdGFsX2xheWVyIC0gaW5kZXggLSAx OworCisJZGV2X2Vycihmc2xfZGV2LT5kZXYsICJObyBtb3JlIGxheWVyIGxlZnRcbiIpOworCXJl dHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19j aGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJICBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5mYjsK KworCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6 CisJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKKwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6CisJ Y2FzZSBEUk1fRk9STUFUX0JHUkE0NDQ0OgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTU1NToKKwlj YXNlIERSTV9GT1JNQVRfWVVWNDIyOgorCQlyZXR1cm4gMDsKKwlkZWZhdWx0OgorCQlyZXR1cm4g LUVJTlZBTDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19k aXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgICAgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7CisJdW5zaWduZWQgaW50IGluZGV4LCB2YWx1 ZSwgcmV0OworCisJaW5kZXggPSBmc2xfZGN1X2RybV9wbGFuZV9pbmRleChwbGFuZSk7CisJaWYg KGluZGV4IDwgMCkKKwkJcmV0dXJuOworCisJcmV0ID0gcmVnbWFwX3JlYWQoZnNsX2Rldi0+cmVn bWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgNCksICZ2YWx1ZSk7CisJaWYgKHJldCkKKwkJZGV2 X2Vycihmc2xfZGV2LT5kZXYsICJyZWFkIERDVV9JTlRfTUFTSyBmYWlsZWRcbiIpOworCXZhbHVl ICY9IH5EQ1VfTEFZRVJfRU47CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0NUUkxERVNDTE4oaW5kZXgsIDQpLCB2YWx1ZSk7CisJaWYgKHJldCkKKwkJZGV2X2Vycihm c2xfZGV2LT5kZXYsICJzZXQgRENVIHJlZ2lzdGVyIGZhaWxlZFxuIik7Cit9CisKK3N0YXRpYyB2 b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCisJCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCisKK3sKKwlz dHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZh dGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7CisJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOworCXN0cnVjdCBkcm1f Z2VtX2NtYV9vYmplY3QgKmdlbTsKKwl1bnNpZ25lZCBpbnQgYWxwaGEsIGJwcDsKKwlpbnQgaW5k ZXgsIHJldDsKKworCWlmICghZmIpCisJCXJldHVybjsKKworCWluZGV4ID0gZnNsX2RjdV9kcm1f cGxhbmVfaW5kZXgocGxhbmUpOworCWlmIChpbmRleCA8IDApCisJCXJldHVybjsKKworCWdlbSA9 IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIDApOworCisJc3dpdGNoIChmYi0+cGl4ZWxfZm9y bWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKKwkJYnBwID0gRlNMX0RDVV9SR0I1NjU7 CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKKwkJ YnBwID0gRlNMX0RDVV9SR0I4ODg7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBE Uk1fRk9STUFUX0FSR0I4ODg4OgorCQlicHAgPSBGU0xfRENVX0FSR0I4ODg4OworCQlhbHBoYSA9 IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9CR1JBNDQ0NDoKKwkJYnBwID0gRlNM X0RDVV9BUkdCNDQ0NDsKKwkJYWxwaGEgPSAweGZmOworCQlicmVhazsKKwljYXNlIERSTV9GT1JN QVRfQVJHQjE1NTU6CisJCWJwcCA9IEZTTF9EQ1VfQVJHQjE1NTU7CisJCWFscGhhID0gMHhmZjsK KwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoKKwkJYnBwID0gRlNMX0RDVV9ZVVY0 MjI7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuOworCX0K KworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGlu ZGV4LCAxKSwKKwkJCSAgIERDVV9MQVlFUl9IRUlHSFQoc3RhdGUtPmNydGNfaCkgfAorCQkJICAg RENVX0xBWUVSX1dJRFRIKHN0YXRlLT5jcnRjX3cpKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9m YWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVND TE4oaW5kZXgsIDIpLAorCQkJICAgRENVX0xBWUVSX1BPU1koc3RhdGUtPmNydGNfeSkgfAorCQkJ ICAgRENVX0xBWUVSX1BPU1goc3RhdGUtPmNydGNfeCkpOworCWlmIChyZXQpCisJCWdvdG8gc2V0 X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLAorCQkJICAgRENV X0NUUkxERVNDTE4oaW5kZXgsIDMpLCBnZW0tPnBhZGRyKTsKKwlpZiAocmV0KQorCQlnb3RvIHNl dF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxE RVNDTE4oaW5kZXgsIDQpLAorCQkJICAgRENVX0xBWUVSX0VOIHwKKwkJCSAgIERDVV9MQVlFUl9U UkFOUyhhbHBoYSkgfAorCQkJICAgRENVX0xBWUVSX0JQUChicHApIHwKKwkJCSAgIERDVV9MQVlF Ul9BQigwKSk7CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93 cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOKGluZGV4LCA1KSwKKwkJCSAgIERD VV9MQVlFUl9DS01BWF9SKDB4RkYpIHwKKwkJCSAgIERDVV9MQVlFUl9DS01BWF9HKDB4RkYpIHwK KwkJCSAgIERDVV9MQVlFUl9DS01BWF9CKDB4RkYpKTsKKwlpZiAocmV0KQorCQlnb3RvIHNldF9m YWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVND TE4oaW5kZXgsIDYpLAorCQkJICAgRENVX0xBWUVSX0NLTUlOX1IoMCkgfAorCQkJICAgRENVX0xB WUVSX0NLTUlOX0coMCkgfAorCQkJICAgRENVX0xBWUVSX0NLTUlOX0IoMCkpOworCWlmIChyZXQp CisJCWdvdG8gc2V0X2ZhaWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgNyksIDApOworCWlmIChyZXQpCisJCWdvdG8gc2V0X2Zh aWxlZDsKKwlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NM TihpbmRleCwgOCksCisJCQkgICBEQ1VfTEFZRVJfRkdfRkNPTE9SKDApKTsKKwlpZiAocmV0KQor CQlnb3RvIHNldF9mYWlsZWQ7CisJcmV0ID0gcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0NUUkxERVNDTE4oaW5kZXgsIDkpLAorCQkJICAgRENVX0xBWUVSX0JHX0JDT0xPUigwKSk7 CisJaWYgKHJldCkKKwkJZ290byBzZXRfZmFpbGVkOworCWlmICghc3RyY21wKGZzbF9kZXYtPnNv Yy0+bmFtZSwgImxzMTAyMWEiKSkgeworCQlyZXQgPSByZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVn bWFwLCBEQ1VfQ1RSTERFU0NMTihpbmRleCwgMTApLAorCQkJCSAgIERDVV9MQVlFUl9QT1NUX1NL SVAoMCkgfAorCQkJCSAgIERDVV9MQVlFUl9QUkVfU0tJUCgwKSk7CisJCWlmIChyZXQpCisJCQln b3RvIHNldF9mYWlsZWQ7CisJfQorCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhmc2xfZGV2LT5y ZWdtYXAsIERDVV9EQ1VfTU9ERSwKKwkJCQkgRENVX01PREVfRENVX01PREVfTUFTSywKKwkJCQkg RENVX01PREVfRENVX01PREUoRENVX01PREVfTk9STUFMKSk7CisJaWYgKHJldCkKKwkJZ290byBz ZXRfZmFpbGVkOworCXJldCA9IHJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsCisJCQkgICBE Q1VfVVBEQVRFX01PREUsIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKKwlpZiAocmV0KQorCQln b3RvIHNldF9mYWlsZWQ7CisJcmV0dXJuOworCitzZXRfZmFpbGVkOgorCWRldl9lcnIoZnNsX2Rl di0+ZGV2LCAic2V0IERDVSByZWdpc3RlciBmYWlsZWRcbiIpOworfQorCitzdGF0aWMgdm9pZAor ZnNsX2RjdV9kcm1fcGxhbmVfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJ CSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKK3sKK30KKworc3RhdGljIGludAorZnNsX2RjdV9k cm1fcGxhbmVfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKm5ld19zdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyA9 IHsKKwkuYXRvbWljX2NoZWNrID0gZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2NoZWNrLAorCS5h dG9taWNfZGlzYWJsZSA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19kaXNhYmxlLAorCS5hdG9t aWNfdXBkYXRlID0gZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX3VwZGF0ZSwKKwkuY2xlYW51cF9m YiA9IGZzbF9kY3VfZHJtX3BsYW5lX2NsZWFudXBfZmIsCisJLnByZXBhcmVfZmIgPSBmc2xfZGN1 X2RybV9wbGFuZV9wcmVwYXJlX2ZiLAorfTsKKworc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fcGxh bmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlkcm1fcGxhbmVfY2xlYW51 cChwbGFuZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGZzbF9k Y3VfZHJtX3BsYW5lX2Z1bmNzID0geworCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0 ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCisJLmRlc3Ryb3kgPSBm c2xfZGN1X2RybV9wbGFuZV9kZXN0cm95LAorCS5kaXNhYmxlX3BsYW5lID0gZHJtX2F0b21pY19o ZWxwZXJfZGlzYWJsZV9wbGFuZSwKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9y ZXNldCwKKwkudXBkYXRlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAor fTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHNbXSA9 IHsKKwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX1JHQjg4OCwKKwlEUk1fRk9STUFU X0FSR0I4ODg4LAorCURSTV9GT1JNQVRfQVJHQjQ0NDQsCisJRFJNX0ZPUk1BVF9BUkdCMTU1NSwK KwlEUk1fRk9STUFUX1lVVjQyMiwKK307CisKK3N0cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3VfZHJt X3ByaW1hcnlfY3JlYXRlX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0 IGRybV9wbGFuZSAqcHJpbWFyeTsKKwlpbnQgcmV0OworCisJcHJpbWFyeSA9IGt6YWxsb2Moc2l6 ZW9mKCpwcmltYXJ5KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcmltYXJ5KSB7CisJCURSTV9ERUJV R19LTVMoIkZhaWxlZCB0byBhbGxvY2F0ZSBwcmltYXJ5IHBsYW5lXG4iKTsKKwkJcmV0dXJuIE5V TEw7CisJfQorCisJLyogcG9zc2libGVfY3J0YydzIHdpbGwgYmUgZmlsbGVkIGluIGxhdGVyIGJ5 IGNydGNfaW5pdCAqLworCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChkZXYsIHByaW1h cnksIDAsCisJCQkJICAgICAgICZmc2xfZGN1X2RybV9wbGFuZV9mdW5jcywKKwkJCQkgICAgICAg ZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0cywKKwkJCQkgICAgICAgQVJSQVlfU0laRShmc2xfZGN1 X2RybV9wbGFuZV9mb3JtYXRzKSwKKwkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7 CisJaWYgKHJldCkgeworCQlrZnJlZShwcmltYXJ5KTsKKwkJcHJpbWFyeSA9IE5VTEw7CisJfQor CWRybV9wbGFuZV9oZWxwZXJfYWRkKHByaW1hcnksICZmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJf ZnVuY3MpOworCisJcmV0dXJuIHByaW1hcnk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fcGxhbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k NjU3ZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fcGxhbmUuaApAQCAtMCwwICsxLDE3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJl ZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZp Y2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVm IF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fCisjZGVmaW5lIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9f CisKK3N0cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3VfZHJtX3ByaW1hcnlfY3JlYXRlX3BsYW5lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5kaWYgLyogX19GU0xfRENVX0RSTV9QTEFORV9I X18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3Jn Yi5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU4YWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3JnYi5jCkBAIC0wLDAgKzEsMTgyIEBA CisvKgorICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAq CisgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+CisKKyNpbmNs dWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+ CisKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKKworc3RhdGljIGludAorZnNsX2RjdV9k cm1fZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJ CSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkJIHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBmc2xfZGN1X2RybV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQoreworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Vu Y29kZXJfaGVscGVyX2Z1bmNzIGVuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hl Y2sgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2F0b21pY19jaGVjaywKKwkuZGlzYWJsZSA9IGZzbF9k Y3VfZHJtX2VuY29kZXJfZGlzYWJsZSwKKwkuZW5hYmxlID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9l bmFibGUsCit9OworCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2Rlc3Ryb3koc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rl cik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZW5jb2Rlcl9m dW5jcyA9IHsKKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveSwKK307CisK K2ludCBmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNl ICpmc2xfZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZnNsX2Rldi0+ZW5jb2RlcjsKKwlpbnQgcmV0OworCisJ ZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOworCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZnNs X2Rldi0+ZHJtLCBlbmNvZGVyLCAmZW5jb2Rlcl9mdW5jcywKKwkJCSAgICAgICBEUk1fTU9ERV9F TkNPREVSX0xWRFMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJZHJtX2VuY29k ZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVy KGNvbm5lY3Rvcik7CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cit9CisKK3N0 YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCitmc2xfZGN1X2RybV9jb25uZWN0b3JfZGV0 ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJcmV0 dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9jb25uZWN0b3JfZnVuY3MgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Z1bmNzID0geworCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxp Y2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rv cl9kZXN0cm95LAorCS5kZXRlY3QgPSBmc2xfZGN1X2RybV9jb25uZWN0b3JfZGV0ZWN0LAorCS5k cG1zID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCisJLmZpbGxfbW9kZXMgPSBk cm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLnJlc2V0ID0gZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAorfTsKKworc3RhdGljIHN0cnVjdCBkcm1fZW5j b2RlciAqCitmc2xfZGN1X2RybV9jb25uZWN0b3JfYmVzdF9lbmNvZGVyKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqZnNs X2NvbiA9IHRvX2ZzbF9kY3VfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisKKwlyZXR1cm4gZnNsX2Nv bi0+ZW5jb2RlcjsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGZzbF9kY3Vf ZHJtX2Nvbm5lY3RvciAqZnNsX2Nvbm5lY3RvcjsKKwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBk cm1fcGFuZWwgKnBhbmVsKTsKKwlpbnQgbnVtX21vZGVzID0gMDsKKworCWZzbF9jb25uZWN0b3Ig PSB0b19mc2xfZGN1X2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCWlmIChmc2xfY29ubmVjdG9yLT5w YW5lbCAmJiBmc2xfY29ubmVjdG9yLT5wYW5lbC0+ZnVuY3MgJiYKKwkgICAgZnNsX2Nvbm5lY3Rv ci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMpIHsKKwkJZ2V0X21vZGVzID0gZnNsX2Nvbm5lY3Rv ci0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXM7CisJCW51bV9tb2RlcyA9IGdldF9tb2Rlcyhmc2xf Y29ubmVjdG9yLT5wYW5lbCk7CisJfQorCisJcmV0dXJuIG51bV9tb2RlczsKK30KKworc3RhdGlj IGludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAorCQkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7 CisJaWYgKG1vZGUtPmhkaXNwbGF5ICYgMHhmKQorCQlyZXR1cm4gTU9ERV9FUlJPUjsKKworCXJl dHVybiBNT0RFX09LOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVs cGVyX2Z1bmNzIGNvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmJlc3RfZW5jb2RlciA9IGZz bF9kY3VfZHJtX2Nvbm5lY3Rvcl9iZXN0X2VuY29kZXIsCisJLmdldF9tb2RlcyA9IGZzbF9kY3Vf ZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQgPSBmc2xfZGN1X2RybV9jb25u ZWN0b3JfbW9kZV92YWxpZCwKK307CisKK2ludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfY3JlYXRl KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkJIHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmZz bF9kZXYtPmNvbm5lY3Rvci5iYXNlOworCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgbW9kZV9jb25m aWcgPSBmc2xfZGV2LT5kcm0tPm1vZGVfY29uZmlnOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFu ZWxfbm9kZTsKKwlpbnQgcmV0OworCisJZnNsX2Rldi0+Y29ubmVjdG9yLmVuY29kZXIgPSBlbmNv ZGVyOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGZzbF9kZXYtPmRybSwgY29ubmVjdG9y LAorCQkJCSAmZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Z1bmNzLAorCQkJCSBEUk1fTU9ERV9DT05O RUNUT1JfTFZEUyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlkcm1fY29ubmVj dG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJcmV0 ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOworCWlmIChyZXQgPCAwKQorCQln b3RvIGVycl9jbGVhbnVwOworCisJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNv ZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyX3N5c2Zz OworCisJZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKKwkJ CQkgICAgICBtb2RlX2NvbmZpZy5kcG1zX3Byb3BlcnR5LAorCQkJCSAgICAgIERSTV9NT0RFX0RQ TVNfT0ZGKTsKKworCXBhbmVsX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKGZzbF9kZXYtPm5wLCAi ZnNsLHBhbmVsIiwgMCk7CisJaWYgKHBhbmVsX25vZGUpIHsKKwkJZnNsX2Rldi0+Y29ubmVjdG9y LnBhbmVsID0gb2ZfZHJtX2ZpbmRfcGFuZWwocGFuZWxfbm9kZSk7CisJCWlmICghZnNsX2Rldi0+ Y29ubmVjdG9yLnBhbmVsKSB7CisJCQlyZXQgPSAtRVBST0JFX0RFRkVSOworCQkJZ290byBlcnJf c3lzZnM7CisJCX0KKwlvZl9ub2RlX3B1dChwYW5lbF9ub2RlKTsKKwl9CisKKwlyZXQgPSBkcm1f cGFuZWxfYXR0YWNoKGZzbF9kZXYtPmNvbm5lY3Rvci5wYW5lbCwgY29ubmVjdG9yKTsKKwlpZiAo cmV0KSB7CisJCWRldl9lcnIoZnNsX2Rldi0+ZGV2LCAiZmFpbGVkIHRvIGF0dGFjaCBwYW5lbFxu Iik7CisJCWdvdG8gZXJyX3N5c2ZzOworCX0KKworCXJldHVybiAwOworCitlcnJfc3lzZnM6CisJ ZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7CitlcnJfY2xlYW51cDoKKwlkcm1f Y29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKKwlyZXR1cm4gcmV0OworfQotLSAKMi4xLjAu MjcuZzk2ZGIzMjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==