From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/layerscape: Add fsl dcu DRM driver Date: Sun, 22 Feb 2015 12:35:07 +0100 Message-ID: <20150222113507.GO24485@phenom.ffwll.local> References: <1423825436-47780-1-git-send-email-b52261@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f179.google.com (mail-we0-f179.google.com [74.125.82.179]) by gabe.freedesktop.org (Postfix) with ESMTP id 00CD96E2EA for ; Sun, 22 Feb 2015 03:33:31 -0800 (PST) Received: by wevk48 with SMTP id k48so13156160wev.3 for ; Sun, 22 Feb 2015 03:33:31 -0800 (PST) Content-Disposition: inline In-Reply-To: <1423825436-47780-1-git-send-email-b52261@freescale.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jianwei Wang Cc: Xiubo Li , Alison Wang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, scottwood@freescale.com, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBGZWIgMTMsIDIwMTUgYXQgMDc6MDM6NTRQTSArMDgwMCwgSmlhbndlaSBXYW5nIHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIFR3byBEaW1lbnNpb25hbCBBbmltYXRp b24gYW5kIENvbXBvc2l0aW5nCj4gRW5naW5lICgyRC1BQ0UpIG9uIHRoZSBGcmVlc2NhbGUgTFMx MDJ4IFNvQ3MuCj4gCj4gMkQtQUNFIGlzIGEgRnJlZXNjYWxlIGRpc3BsYXkgY29udHJvbGxlci4g SXQgc3VwcG9ydHMgYXQgbW9zdCBmb3VyCj4gcGxhbmUgYW5kIHByb3ZpZGUgYW4gaGFyZHdhcmUg Y3Vyc29yLgo+IAo+IFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24sIG9ubHkgYSBwcmltYXJ5 IHBsYW5lLCBhIGZiIGNyZWF0ZWQgZm9yCj4gZmJkZXYsIGEgY3J0YywgYSBjb25uZWN0b3IgZm9y IFRGVCBMQ0QgcGFuZWwsIGFuIGVuY29kZXIsIGFuZCB0aGUKPiBlbmNvZGVyIGlzIG5vdCBpbiB1 c2UuIE5vdyB0aGlzIGRydmVyIHN1cHBvcnQgZmJkZXYgb25seS4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBBbGlzb24gV2FuZyA8YjE4OTY1QGZyZWVzY2FsZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogWGl1 Ym8gTGkgPGxpeGl1Ym9AY21zcy5jaGluYW1vYmlsZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlh bndlaSBXYW5nIDxiNTIyNjFAZnJlZXNjYWxlLmNvbT4KCkltbyBhZGRpbmcgYSBuZXcgZHJpdmVy IHdpdGhvdXQgcHJpbWFyeSBwbGFuZSBzdXBwb3J0ICh1c2UKZHJtX2NydGNfaW5pdF93aXRoX3Bs YW5lcykgYW5kIHdpdGhvdXQgYXRvbWljIHN1cHBvcnQgZG9lc24ndCBtYWtlIHNlbnNlCmFueSBt b3JlLgoKQWxzbywgd2hhdCBkbyB5b3UgbWVhbiB3aXRoICJzdXBwb3J0IGZiZGV2IG9ubHkiPwot RGFuaWVsCgo+IC0tLQo+ICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGNmYi50 eHQgICAgICAgICB8ICA1MCArKysKPiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wvS2Nv bmZpZyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsKPiAgZHJpdmVycy9ncHUvZHJtL2Zz bC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9k cm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMuYyAgICAgICAgICAgICB8IDQxMiArKysrKysrKysrKysr KysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9jcnRjLmggICAgICAg ICAgICAgfCAgNDAgKysKPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9kcnYuYyAg ICAgICAgICAgICAgfCAzMjMgKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNs L2ZzbF9kY3VfZHJtX2Rydi5oICAgICAgICAgICAgICB8IDE2NyArKysrKysrKysKPiAgZHJpdmVy cy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9mYmRldi5jICAgICAgICAgICAgfCAgNDMgKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmMgICAgICAgICAgICAgIHwgIDQ1 ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5oICAgICAgICAgICAg ICB8ICAyMiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX3BsYW5lLmMgICAg ICAgICAgICB8IDEyNCArKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1f cGxhbmUuaCAgICAgICAgICAgIHwgIDI4ICsrCj4gIDE0IGZpbGVzIGNoYW5nZWQsIDEyODEgaW5z ZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL3ZpZGVvL2ZzbCxkY2ZiLnR4dAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2ZzbC9LY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZnNsL01ha2VmaWxlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNs L2ZzbF9kY3VfZHJtX2NydGMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2ZzbC9mc2xfZGN1X2RybV9jcnRjLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9mc2wvZnNsX2RjdV9kcm1fZHJ2LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZHJ2LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZmJkZXYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMuaAo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9wbGFuZS5jCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX3BsYW5lLmgKPiAKPiBk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2ZzbCxk Y2ZiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9mc2wsZGNm Yi50eHQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmRlN2RhOTcKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Zp ZGVvL2ZzbCxkY2ZiLnR4dAo+IEBAIC0wLDAgKzEsNTAgQEAKPiArKiBGcmVlc2NhbGUgU2ltcGxl IERpc3BsYXkgQ29udHJvbGxlciBGQiBEcml2ZXIKPiArCj4gK1JlcXVpcmVkIHByb3BlcnRpZXM6 Cj4gKy0gY29tcGF0aWJsZToJCVNob3VsZCBiZSBvbmUgb2YgImZzbCxsczEwMjFhLWRjZmIiLgo+ ICstIHJlZzoJCQlBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgZGNm Yi4KPiArLSBjbG9ja3M6CQlGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBoYW5kbGUgdG8gZGNm YiBjbG9jay4KPiArLSBjbG9jay1uYW1lczoJCUZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IFNo YWxsIGJlICJkY2ZiIi4KPiArLSBkaXNwbGF5OgkJVGhlIHBoYW5kbGUgdG8gZGlzcGxheSBub2Rl Lgo+ICsKPiArT3B0aW9uYWwgcHJvcGVydGllczoKPiArLSBzY2ZnLWNvbnRyb2xsZXI6CVRoZSBw aGFuZGxlIG9mIHNjZmcgbm9kZS4KPiArCj4gK1JlcXVpcmVkIHByb3BlcnRpZXM6Cj4gKy0gYml0 cy1wZXItcGl4ZWw6CTwxNj4gZm9yIFJHQjU2NSwKPiArCQkJPDI0PiBmb3IgUkdCODg4LAo+ICsJ CQk8MzI+IGZvciBSR0I4ODg4Lgo+ICsKPiArUmVxdWlyZWQgdGltaW5nIG5vZGUgZm9yIGRpc3Bw bGF5IHN1Yi1ub2RlOgo+ICstIGRpc3BsYXktdGltaW5nczoJUmVmZXIgdG8gYmluZGluZyBkb2Mg ZGlzcGxheS10aW1pbmcudHh0IGZvciBkZXRhaWxzLgo+ICsKPiArRXhhbXBsZXM6Cj4gK2RjZmI6 IGRjZmJAMmNlMDAwMCB7Cj4gKwljb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWRjZmIiOwo+ICsJ cmVnID0gPDB4MCAweDJjZTAwMDAgMHgwIDB4MTAwMDA+Owo+ICsJY2xvY2tzID0gPCZwbGF0Zm9y bV9jbGsgMD47Cj4gKwljbG9jay1uYW1lcyA9ICJkY2ZiIjsKPiArCXNjZmctY29udHJvbGxlciA9 IDwmc2NmZz47Cj4gKwlkaXNwbGF5ID0gPCZkaXNwbGF5PjsKPiArCj4gKwlkaXNwbGF5OiBkaXNw bGF5QDAgewo+ICsJCWJpdHMtcGVyLXBpeGVsID0gPDI0PjsKPiArCj4gKwkJZGlzcGxheS10aW1p bmdzIHsKPiArCQkJbmF0aXZlLW1vZGUgPSA8JnRpbWluZzA+Owo+ICsJCQl0aW1pbmcwOiBubDQ4 MjdoYzE5IHsKPiArCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDg3MDAwMD47Cj4gKwkJCQloYWN0 aXZlID0gPDQ4MD47Cj4gKwkJCQl2YWN0aXZlID0gPDI3Mj47Cj4gKwkJCQloYmFjay1wb3JjaCA9 IDwyPjsKPiArCQkJCWhmcm9udC1wb3JjaCA9IDwyPjsKPiArCQkJCXZiYWNrLXBvcmNoID0gPDE+ Owo+ICsJCQkJdmZyb250LXBvcmNoID0gPDE+Owo+ICsJCQkJaHN5bmMtbGVuID0gPDQxPjsKPiAr CQkJCXZzeW5jLWxlbiA9IDwyPjsKPiArCQkJCWhzeW5jLWFjdGl2ZSA9IDwxPjsKPiArCQkJCXZz eW5jLWFjdGl2ZSA9IDwxPjsKPiArCQkJfTsKPiArCQl9Owo+ICsJfTsKPiArfTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ IGluZGV4IDE1MWEwNTAuLmE2OTU3YWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tj b25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IEBAIC0xOTksNiArMTk5LDgg QEAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vYm9jaHMvS2NvbmZpZyIKPiAgCj4gIHNvdXJjZSAi ZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIgo+ICAKPiArc291cmNlICJkcml2ZXJzL2dwdS9k cm0vZnNsL0tjb25maWciCj4gKwo+ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS90ZWdyYS9LY29u ZmlnIgo+ICAKPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyIKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCj4gaW5kZXggMmMyMzliOS4uYWI1YjllZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAtNTYsNiAr NTYsNyBAQCBvYmotJChDT05GSUdfRFJNX1VETCkgKz0gdWRsLwo+ICBvYmotJChDT05GSUdfRFJN X0FTVCkgKz0gYXN0Lwo+ICBvYmotJChDT05GSUdfRFJNX0FSTUFEQSkgKz0gYXJtYWRhLwo+ICBv YmotJChDT05GSUdfRFJNX0FUTUVMX0hMQ0RDKQkrPSBhdG1lbC1obGNkYy8KPiArb2JqLSQoQ09O RklHX0RSTV9GU0xfRENVKSArPSBmc2wvCj4gIG9iai0kKENPTkZJR19EUk1fUkNBUl9EVSkgKz0g cmNhci1kdS8KPiAgb2JqLSQoQ09ORklHX0RSTV9TSE1PQklMRSkgKz1zaG1vYmlsZS8KPiAgb2Jq LSQoQ09ORklHX0RSTV9PTUFQKQkrPSBvbWFwZHJtLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZnNsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL0tjb25maWcKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmU0ZjhkZjAKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9LY29uZmlnCj4gQEAgLTAsMCArMSwxNyBAQAo+ICtj b25maWcgRFJNX0ZTTF9EQ1UKPiArCXRyaXN0YXRlICJEUk0gU3VwcG9ydCBmb3IgRnJlZXNjYWxl IERDVSIKPiArCWRlcGVuZHMgb24gRFJNICYmIE9GICYmIEFSTQo+ICsJc2VsZWN0IERSTV9LTVNf SEVMUEVSCj4gKwlzZWxlY3QgRFJNX0tNU19DTUFfSEVMUEVSCj4gKwlzZWxlY3QgVklERU9NT0RF X0hFTFBFUlMKPiArCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCj4gKwlzZWxlY3QgQkFD S0xJR0hUX0xDRF9TVVBQT1JUCj4gKwlzZWxlY3QgUkVHTUFQX01NSU8KPiArCXNlbGVjdCBEUk1f S01TX0ZCX0hFTFBFUgo+ICsJc2VsZWN0IEZCX1NZU19GSUxMUkVDVAo+ICsJc2VsZWN0IEZCX1NZ U19DT1BZQVJFQQo+ICsJc2VsZWN0IEZCX1NZU19JTUFHRUJMSVQKPiArCXNlbGVjdCBGQl9TWVNf Rk9QUwo+ICsJaGVscAo+ICsJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYW4gRnJl ZXNjYWxlIERDVSBjaGlwc2V0Lgo+ICsJICBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2ls bCBiZSBjYWxsZWQgZnNsLWRjdS1kcm0uCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9m c2wvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL01ha2VmaWxlCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41MWMzZTFmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9mc2wvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDcgQEAKPiArZnNsLWRj dS1kcm0teSA6PSBmc2xfZGN1X2RybV9kcnYubyBcCj4gKwkgICAgICAgZnNsX2RjdV9kcm1fa21z Lm8gXAo+ICsJICAgICAgIGZzbF9kY3VfZHJtX3BsYW5lLm8gXAo+ICsJICAgICAgIGZzbF9kY3Vf ZHJtX2NydGMubyBcCj4gKwkgICAgICAgZnNsX2RjdV9kcm1fZmJkZXYubyBcCj4gKwo+ICtvYmot JChDT05GSUdfRFJNX0ZTTF9EQ1UpCSs9IGZzbC1kY3UtZHJtLm8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNs L2ZzbF9kY3VfZHJtX2NydGMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MC4uOWY1YmE4Ngo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2Zz bF9kY3VfZHJtX2NydGMuYwo+IEBAIC0wLDAgKzEsNDEyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdo dCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2Fs ZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsKPiAr I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRj X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5l X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8dmlkZW8vb2ZfZGlzcGxheV90aW1pbmcuaD4KPiArCj4g KyNpbmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9k cnYuaCIKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2ttcy5oIgo+ICsjaW5jbHVkZSAiZnNsX2Rj dV9kcm1fcGxhbmUuaCIKPiArCj4gKyNkZWZpbmUgdG9fZnNsX2RjdV9jcnRjKGMpCWNvbnRhaW5l cl9vZihjLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY3J0YywgY3J0YykKPiArCj4gK3N0YXRpYyB2b2lk IGZzbF9kY3VfZHJtX2NydGNfc3RhcnQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwlm c2xfZGN1X2RybV9wbGFuZV9zZXR1cChjcnRjLT5wcmltYXJ5KTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19zdG9wKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ ICt9Cj4gKwo+ICt2b2lkIGZzbF9kY3VfZHJtX2NydGNfc3VzcGVuZChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gK3sKPiArCWZzbF9kY3VfZHJtX2NydGNfc3RvcChjcnRjKTsKPiArfQo+ICsKPiAr dm9pZCBmc2xfZGN1X2RybV9jcnRjX3Jlc3VtZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sK PiArCXN0cnVjdCBmc2xfZGN1X2RybV9jcnRjICpmc2xfY3J0YyA9IHRvX2ZzbF9kY3VfY3J0Yyhj cnRjKTsKPiArCj4gKwlpZiAoZnNsX2NydGMtPmRwbXMgIT0gRFJNX01PREVfRFBNU19PTikKPiAr CQlyZXR1cm47Cj4gKwo+ICsJZnNsX2RjdV9kcm1fY3J0Y19zdGFydChjcnRjKTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y191cGRhdGVfYmFzZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19k cG1zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50IG1vZGUpCj4gK3sKPiArCXN0cnVjdCBmc2xf ZGN1X2RybV9jcnRjICpmc2xfY3J0YyA9IHRvX2ZzbF9kY3VfY3J0YyhjcnRjKTsKPiArCj4gKwlp ZiAoZnNsX2NydGMtPmRwbXMgPT0gbW9kZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKG1vZGUg PT0gRFJNX01PREVfRFBNU19PTikKPiArCQlmc2xfZGN1X2RybV9jcnRjX3N0YXJ0KGNydGMpOwo+ ICsJZWxzZQo+ICsJCWZzbF9kY3VfZHJtX2NydGNfc3RvcChjcnRjKTsKPiArCj4gKwlmc2xfY3J0 Yy0+ZHBtcyA9IG1vZGU7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGZzbF9kY3VfZHJtX2NydGNf bW9kZV9maXh1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUpCj4gK3sKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBmc2xfZGN1X2RybV9jcnRjX21vZGVfcHJlcGFyZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g K3sKPiArCQlmc2xfZGN1X2RybV9jcnRjX3N0b3AoY3J0Yyk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJ CQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICsJCQkJICAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSwKPiArCQkJCSAgICAgaW50IHgsIGludCB5 LAo+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1f ZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXVpbnQzMl90IGhicCwgaGZw LCBoc3csIHZicCwgdmZwLCB2c3csIGRpdiwgaW5kZXg7Cj4gKwo+ICsJREJHKCI6IHNldCBtb2Rl OiAlZDpcIiVzXCIgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgMHgleCAweCV4IiwKPiAr CSAgICBtb2RlLT5iYXNlLmlkLCBtb2RlLT5uYW1lLAo+ICsJICAgIG1vZGUtPnZyZWZyZXNoLCBt b2RlLT5jbG9jaywKPiArCSAgICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+aHN5bmNfc3RhcnQsCj4g KwkgICAgbW9kZS0+aHN5bmNfZW5kLCBtb2RlLT5odG90YWwsCj4gKwkgICAgbW9kZS0+dmRpc3Bs YXksIG1vZGUtPnZzeW5jX3N0YXJ0LAo+ICsJICAgIG1vZGUtPnZzeW5jX2VuZCwgbW9kZS0+dnRv dGFsLAo+ICsJICAgIG1vZGUtPnR5cGUsIG1vZGUtPmZsYWdzKTsKPiArCj4gKwlpbmRleCA9IGRy bV9jcnRjX2luZGV4KGNydGMpOwo+ICsJZGl2ID0gKHVpbnQzMl90KWNsa19nZXRfcmF0ZShmc2xf ZGV2LT5jbGspIC8gY3J0Yy0+bW9kZS5jbG9jayAvIDEwMDA7Cj4gKwo+ICsJLyogQ29uZmlndXJl IHRpbWluZ3M6ICovCj4gKwloYnAgPSBtb2RlLT5odG90YWwgLSBtb2RlLT5oc3luY19lbmQ7Cj4g KwloZnAgPSBtb2RlLT5oc3luY19zdGFydCAtIG1vZGUtPmhkaXNwbGF5Owo+ICsJaHN3ID0gbW9k ZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7Cj4gKwl2YnAgPSBtb2RlLT52dG90YWwg LSBtb2RlLT52c3luY19lbmQ7Cj4gKwl2ZnAgPSBtb2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZk aXNwbGF5Owo+ICsJdnN3ID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQ7Cj4g Kwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0hTWU5fUEFSQSwKPiArCQkg ICAgIERDVV9IU1lOX1BBUkFfQlAoaGJwKSB8Cj4gKwkJICAgICBEQ1VfSFNZTl9QQVJBX1BXKGhz dykgfAo+ICsJCSAgICAgRENVX0hTWU5fUEFSQV9GUChoZnApKTsKPiArCXJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9WU1lOX1BBUkEsCj4gKwkJICAgICBEQ1VfVlNZTl9QQVJBX0JQ KHZicCkgfAo+ICsJCSAgICAgRENVX1ZTWU5fUEFSQV9QVyh2c3cpIHwKPiArCQkgICAgIERDVV9W U1lOX1BBUkFfRlAodmZwKSk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf RElTUF9TSVpFLAo+ICsJCSAgICAgRENVX0RJU1BfU0laRV9ERUxUQV9ZKG1vZGUtPnZkaXNwbGF5 KSB8Cj4gKwkJICAgICBEQ1VfRElTUF9TSVpFX0RFTFRBX1gobW9kZS0+aGRpc3BsYXkpKTsKPiAr CXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzEoaW5kZXgpLAo+ ICsJCSAgICAgRENVX0NUUkxERVNDTE5fMV9IRUlHSFQobW9kZS0+dmRpc3BsYXkpIHwKPiArCQkg ICAgIERDVV9DVFJMREVTQ0xOXzFfV0lEVEgobW9kZS0+aGRpc3BsYXkpKTsKPiArCXJlZ21hcF93 cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzIoaW5kZXgpLAo+ICsJCSAgICAg RENVX0NUUkxERVNDTE5fMl9QT1NZKHkpIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzJfUE9T WCh4KSk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfRElWX1JBVElPLCBk aXYpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RFLCBE Q1VfVVBEQVRFX01PREVfUkVBRFJFRyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfbW9kZV9jb21taXQoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICt7Cj4gKwkJZnNsX2RjdV9kcm1fY3J0Y19zdGFydChjcnRjKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBmc2xfZGN1X2RybV9jcnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBpbnQgeCwgaW50IHksCj4gKwkJCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpv bGRfZmIpCj4gK3sKPiArCWZzbF9kY3VfZHJtX2NydGNfdXBkYXRlX2Jhc2UoY3J0Yyk7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVs cGVyX2Z1bmNzIGNydGNfaGVscGVyX2Z1bmNzID0gewo+ICsJLmRwbXMgPSBmc2xfZGN1X2RybV9j cnRjX2RwbXMsCj4gKwkubW9kZV9maXh1cCA9IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9maXh1cCwK PiArCS5wcmVwYXJlID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3ByZXBhcmUsCj4gKwkuY29tbWl0 ID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX2NvbW1pdCwKPiArCS5tb2RlX3NldCA9IGZzbF9kY3Vf ZHJtX2NydGNfbW9kZV9zZXQsCj4gKwkubW9kZV9zZXRfYmFzZSA9IGZzbF9kY3VfZHJtX2NydGNf bW9kZV9zZXRfYmFzZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fY3J0Y19w YWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJICAgICAgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsCj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2 ZW50ICpldmVudCwKPiArCQkJCSAgICAgIHVpbnQzMl90IHBhZ2VfZmxpcF9mbGFncykKPiArewo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1 bmNzIGZzbF9kY3VfZHJtX3BsYW5lX2Z1bmNzID0gewo+ICsJLnVwZGF0ZV9wbGFuZSA9IGZzbF9k Y3VfZHJtX3BsYW5lX3VwZGF0ZSwKPiArCS5kaXNhYmxlX3BsYW5lID0gZnNsX2RjdV9kcm1fcGxh bmVfZGlzYWJsZSwKPiArCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveSwKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgY3J0Y19mdW5jcyA9 IHsKPiArCS5kZXN0cm95ID0gZHJtX2NydGNfY2xlYW51cCwKPiArCS5zZXRfY29uZmlnID0gZHJt X2NydGNfaGVscGVyX3NldF9jb25maWcsCj4gKwkucGFnZV9mbGlwID0gZnNsX2RjdV9kcm1fY3J0 Y19wYWdlX2ZsaXAsCj4gK307Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKPiArewo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gJmZzbF9kZXYtPmNydGMuY3J0YzsKPiArCWludCByZXQ7Cj4gKwo+ICsJZnNsX2Rl di0+Y3J0Yy5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7Cj4gKwo+ICsJcmV0ID0gZHJtX2NydGNf aW5pdChmc2xfZGV2LT5kZGV2LCBjcnRjLCAmY3J0Y19mdW5jcyk7Cj4gKwlpZiAocmV0IDwgMCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWNydGMtPnByaW1hcnktPmZ1bmNzID0gJmZzbF9kY3Vf ZHJtX3BsYW5lX2Z1bmNzOwo+ICsKPiArCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJmNydGNf aGVscGVyX2Z1bmNzKTsKPiArCj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf U1lOX1BPTCwKPiArCQkgICAgIERDVV9TWU5fUE9MX0lOVl9WU19MT1cgfCBEQ1VfU1lOX1BPTF9J TlZfSFNfTE9XKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9CR05ELCBE Q1VfQkdORF9SKDApIHwKPiArCQkgICAgIERDVV9CR05EX0coMCkgfCBEQ1VfQkdORF9CKDApKTsK PiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9ERSwKPiArCQkgICAg IERDVV9NT0RFX0JMRU5EX0lURVIoMSkgfCBEQ1VfTU9ERV9SQVNURVJfRU4pOwo+ICsJcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX1RIUkVTSE9MRCwKPiArCQkgICAgIERDVV9USFJF U0hPTERfTFNfQkZfVlMoQkZfVlNfVkFMKSB8Cj4gKwkJICAgICBEQ1VfVEhSRVNIT0xEX09VVF9C VUZfSElHSChCVUZfTUFYX1ZBTCkgfAo+ICsJCSAgICAgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xP VyhCVUZfTUlOX1ZBTCkpOwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwg RENVX0RDVV9NT0RFLAo+ICsJCQkgICBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNLLAo+ICsJCQkgICBE Q1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9ERV9OT1JNQUwpKTsKPiArCXJlZ21hcF93cml0ZShmc2xf ZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qCj4gKyAqIEVuY29kZXIKPiArICovCj4gKwo+ICsj ZGVmaW5lIHRvX2ZzbF9kY3VfZW5jb2RlcihlKSBcCj4gKwljb250YWluZXJfb2YoZSwgc3RydWN0 IGZzbF9kY3VfZHJtX2VuY29kZXIsIGVuY29kZXIpCj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1 X2RybV9lbmNvZGVyX2RwbXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkK PiArewo+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2VuY29kZXIgKmZzbF9lbmMgPSB0b19mc2xfZGN1 X2VuY29kZXIoZW5jb2Rlcik7Cj4gKwo+ICsJaWYgKGZzbF9lbmMtPmRwbXMgPT0gbW9kZSkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJZnNsX2VuYy0+ZHBtcyA9IG1vZGU7Cj4gK30KPiArCj4gK3N0YXRp YyBib29sIGZzbF9kY3VfZHJtX2VuY29kZXJfbW9kZV9maXh1cAo+ICsJCShzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIsCj4gKwkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUs Cj4gKwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9k cm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IgPSAmZnNsX2Rldi0+Y29ubmVjdG9yLmNvbm5lY3RvcjsKPiArCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpwYW5lbF9tb2RlOwo+ICsKPiArCWlmIChsaXN0 X2VtcHR5KCZjb25uZWN0b3ItPm1vZGVzKSkgewo+ICsJCWRldl9kYmcoZGV2LT5kZXYsICJtb2Rl X2ZpeHVwOiBlbXB0eSBtb2RlcyBsaXN0XG4iKTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4g Kwo+ICsJLyogVGhlIGZsYXQgcGFuZWwgbW9kZSBpcyBmaXhlZCwganVzdCBjb3B5IGl0IHRvIHRo ZSBhZGp1c3RlZCBtb2RlLiAqLwo+ICsJcGFuZWxfbW9kZSA9IGxpc3RfZmlyc3RfZW50cnkoJmNv bm5lY3Rvci0+bW9kZXMsCj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSwgaGVh ZCk7Cj4gKwlkcm1fbW9kZV9jb3B5KGFkanVzdGVkX21vZGUsIHBhbmVsX21vZGUpOwo+ICsKPiAr CXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVy X21vZGVfcHJlcGFyZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIsCj4gKwkJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ ICsJCQkJCSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKPiArewo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfY29tbWl0KHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiArewo+ICsJOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBlbmNvZGVyX2hlbHBlcl9mdW5jcyA9 IHsKPiArCS5kcG1zID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kcG1zLAo+ICsJLm1vZGVfZml4dXAg PSBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfZml4dXAsCj4gKwkucHJlcGFyZSA9IGZzbF9kY3Vf ZHJtX2VuY29kZXJfbW9kZV9wcmVwYXJlLAo+ICsJLmNvbW1pdCA9IGZzbF9kY3VfZHJtX2VuY29k ZXJfbW9kZV9jb21taXQsCj4gKwkubW9kZV9zZXQgPSBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVf c2V0LAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9kZXN0cm95 KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiArewo+ICsJZHJtX2VuY29kZXJfY2xlYW51 cChlbmNvZGVyKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9m dW5jcyBlbmNvZGVyX2Z1bmNzID0gewo+ICsJLmRlc3Ryb3kgPSBmc2xfZGN1X2RybV9lbmNvZGVy X2Rlc3Ryb3ksCj4gK307Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVhdGUoc3Ry dWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKPiArewo+ICsJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyID0gJmZzbF9kZXYtPmVuY29kZXIuZW5jb2RlcjsKPiArCWludCByZXQ7Cj4g Kwo+ICsJZnNsX2Rldi0+ZW5jb2Rlci5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7Cj4gKwo+ICsJ ZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOwo+ICsKPiArCXJldCA9IGRybV9lbmNvZGVyX2lu aXQoZnNsX2Rldi0+ZGRldiwgZW5jb2RlciwgJmVuY29kZXJfZnVuY3MsCj4gKwkJCSAgICAgICBE Uk1fTU9ERV9FTkNPREVSX0xWRFMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsK PiArCj4gKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29kZXIsICZlbmNvZGVyX2hlbHBlcl9m dW5jcyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qCj4gKyAqIENvbm5lY3Rvcgo+ ICsgKi8KPiArCj4gKyNkZWZpbmUgdG9fZnNsX2RjdV9jb25uZWN0b3IoYykgXAo+ICsJY29udGFp bmVyX29mKGMsIHN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IsIGNvbm5lY3RvcikKPiArCj4g K3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRpc3BsYXlfbnAsICpucCA9IGRl di0+ZGV2LT5vZl9ub2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBkcm1f bW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+ICsJaW50IG51bV9tb2RlcyA9IDA7Cj4gKwo+ ICsJaWYgKG5wKSB7Cj4gKwkJZGlzcGxheV9ucCA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICJkaXNw bGF5IiwgMCk7Cj4gKwkJaWYgKCFkaXNwbGF5X25wKSB7Cj4gKwkJCWRldl9lcnIoZGV2LT5kZXYs ICJmYWlsZWQgdG8gZmluZCBkaXNwbGF5IHBoYW5kbGVcbiIpOwo+ICsJCQlyZXR1cm4gbnVtX21v ZGVzOwo+ICsJCX0KPiArCQlvZl9nZXRfZHJtX2Rpc3BsYXlfbW9kZShkaXNwbGF5X25wLCBtb2Rl LCBPRl9VU0VfTkFUSVZFX01PREUpOwo+ICsJCW1vZGUtPnR5cGUgfD0gRFJNX01PREVfVFlQRV9E UklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRCwKPiArCQlkcm1fbW9kZV9wcm9iZWRfYWRk KGNvbm5lY3RvciwgbW9kZSk7Cj4gKwkJbnVtX21vZGVzKys7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IG51bV9tb2RlczsKPiArfQo+ICsKPiArc3RhdGljIGludCBmc2xfZGN1X2RybV9jb25uZWN0b3Jf bW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQkJCSAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsJcmV0dXJuIE1PREVfT0s7Cj4g K30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKgo+ICtmc2xfZGN1X2RybV9jb25u ZWN0b3JfYmVzdF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sK PiArCXN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgKmZzbF9jb24gPSB0b19mc2xfZGN1X2Nv bm5lY3Rvcihjb25uZWN0b3IpOwo+ICsKPiArCXJldHVybiBmc2xfY29uLT5lbmNvZGVyOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGNv bm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4gKwkuZ2V0X21vZGVzID0gZnNsX2RjdV9kcm1fY29u bmVjdG9yX2dldF9tb2RlcywKPiArCS5tb2RlX3ZhbGlkID0gZnNsX2RjdV9kcm1fY29ubmVjdG9y X21vZGVfdmFsaWQsCj4gKwkuYmVzdF9lbmNvZGVyID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Jl c3RfZW5jb2RlciwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Nvbm5lY3Rv cl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWRybV9j b25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVw KGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz Cj4gK2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwgYm9vbCBmb3JjZSkKPiArewo+ICsJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29u bmVjdGVkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVu Y3MgY29ubmVjdG9yX2Z1bmNzID0gewo+ICsJLmRwbXMgPSBkcm1faGVscGVyX2Nvbm5lY3Rvcl9k cG1zLAo+ICsJLmRldGVjdCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCj4gKwkuZmls bF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiArCS5k ZXN0cm95ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCj4gK307Cj4gKwo+ICtpbnQg ZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpm c2xfZGV2LAo+ICsJCQkJIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiArewo+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZmc2xfZGV2LT5jb25uZWN0b3IuY29ubmVj dG9yOwo+ICsJaW50IHJldDsKPiArCj4gKwlmc2xfZGV2LT5jb25uZWN0b3IuZW5jb2RlciA9IGVu Y29kZXI7Cj4gKwo+ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSAwOwo+ICsJ Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gMDsKPiArCj4gKwlyZXQgPSBkcm1f Y29ubmVjdG9yX2luaXQoZnNsX2Rldi0+ZGRldiwgY29ubmVjdG9yLCAmY29ubmVjdG9yX2Z1bmNz LAo+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3Rvciwg JmNvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwo+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rl cihjb25uZWN0b3IpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfY2xlYW51cDsKPiAr Cj4gKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdvdG8gZXJyX3N5c2ZzOwo+ICsKPiArCWNv bm5lY3Rvci0+ZW5jb2RlciA9IGVuY29kZXI7Cj4gKwo+ICsJZHJtX2hlbHBlcl9jb25uZWN0b3Jf ZHBtcyhjb25uZWN0b3IsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiArCWRybV9vYmplY3RfcHJvcGVy dHlfc2V0X3ZhbHVlCj4gKwkJKCZjb25uZWN0b3ItPmJhc2UsIGZzbF9kZXYtPmRkZXYtPm1vZGVf Y29uZmlnLmRwbXNfcHJvcGVydHksCj4gKwkJRFJNX01PREVfRFBNU19PRkYpOwo+ICsKPiArCXJl dHVybiAwOwo+ICsKPiArZXJyX3N5c2ZzOgo+ICsJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNv bm5lY3Rvcik7Cj4gK2Vycl9jbGVhbnVwOgo+ICsJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5l Y3Rvcik7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9mc2wvZnNsX2RjdV9kcm1fY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2Ry bV9jcnRjLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmFkNTk5OTIK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9j cnRjLmgKPiBAQCAtMCwwICsxLDQwIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVz Y2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRl dmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiAr ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAr ICovCj4gKwo+ICsjaWZuZGVmIF9fRlNMX0RDVV9EUk1fTU9EU0VUX0hfXwo+ICsjZGVmaW5lIF9f RlNMX0RDVV9EUk1fTU9EU0VUX0hfXwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArCj4gK3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7 Cj4gKwo+ICtzdHJ1Y3QgZnNsX2RjdV9kcm1fY3J0YyB7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgY3J0 YzsKPiArCWludCBkcG1zOwo+ICt9Owo+ICsKPiArc3RydWN0IGZzbF9kY3VfZHJtX2VuY29kZXIg ewo+ICsJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gKwlpbnQgZHBtczsKPiArfTsKPiAr Cj4gK3N0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3Igewo+ICsJc3RydWN0IGRybV9jb25uZWN0 b3IgY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICt9Owo+ICsK PiAraW50IGZzbF9kY3VfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYpOwo+ICtpbnQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVhdGUoc3RydWN0IGZzbF9k Y3VfZHJtX2RldmljZSAqZnNsX2Rldik7Cj4gK2ludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfY3Jl YXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCj4gKwkJCQkgc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyKTsKPiArCj4gKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX01PRFNF VF9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZHJ2LmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjFiY2E0NWEKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9kcnYuYwo+IEBAIC0wLDAgKzEsMzIz IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJ bmMuCj4gKyAqCj4gKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgv bW0uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2Zf cGxhdGZvcm0uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5j bHVkZSA8bGludXgvcG0uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsKPiAr I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiAr I2luY2x1ZGUgImZzbF9kY3VfZHJtX2ttcy5oIgo+ICsKPiArc3RhdGljIGludCBmc2xfZGN1X3Vu bG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlkcm1fbW9kZV9jb25maWdfY2xl YW51cChkZXYpOwo+ICsJZHJtX3ZibGFua19jbGVhbnVwKGRldik7Cj4gKwlkcm1faXJxX3VuaW5z dGFsbChkZXYpOwo+ICsKPiArCWRldi0+ZGV2X3ByaXZhdGUgPSBOVUxMOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHJlZ21hcF9jb25maWcgZnNsX2RjdV9yZWdt YXBfY29uZmlnID0gewo+ICsJLnJlZ19iaXRzID0gMzIsCj4gKwkucmVnX3N0cmlkZSA9IDQsCj4g KwkudmFsX2JpdHMgPSAzMiwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9ieXBhc3Nf dGNvbihzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAo+ICsJCQkgICAgICAgc3Ry dWN0IGRldmljZV9ub2RlICpucCkKPiArewo+ICsJc3RydWN0IGRldmljZV9ub2RlICp0Y29uX25w Owo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiArCXN0cnVjdCBjbGsgKnRjb25f Y2xrOwo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4g Kwo+ICsJdGNvbl9ucCA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICJ0Y29uLWNvbnRyb2xsZXIiLCAw KTsKPiArCWlmICghdGNvbl9ucCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlwZGV2ID0g b2ZfZmluZF9kZXZpY2VfYnlfbm9kZSh0Y29uX25wKTsKPiArCWlmICghcGRldikKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwl0Y29uX2NsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAi dGNvbiIpOwo+ICsJaWYgKElTX0VSUih0Y29uX2NsaykpCj4gKwkJcmV0dXJuIFBUUl9FUlIodGNv bl9jbGspOwo+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKHRjb25fY2xrKTsKPiArCj4gKwlyZXMgPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ICsJaWYgKCFy ZXMpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNv dXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihiYXNlKSkKPiArCQlyZXR1cm4g UFRSX0VSUihiYXNlKTsKPiArCj4gKwlmc2xfZGV2LT50Y29uX3JlZ21hcCA9IGRldm1fcmVnbWFw X2luaXRfbW1pb19jbGsoJnBkZXYtPmRldiwKPiArCQkJInRjb24iLCBiYXNlLCAmZnNsX2RjdV9y ZWdtYXBfY29uZmlnKTsKPiArCWlmIChJU19FUlIoZnNsX2Rldi0+dGNvbl9yZWdtYXApKSB7Cj4g KwkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVnbWFwIGluaXQgZmFpbGVkXG4iKTsKPiArCQlyZXR1 cm4gUFRSX0VSUihmc2xfZGV2LT50Y29uX3JlZ21hcCk7Cj4gKwl9Cj4gKwo+ICsJcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnRjb25fcmVnbWFwLCBUQ09OX0NUUkwxLCBUQ09OX0JZUEFTU19FTkFCTEUp Owo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9zY2ZnX2NvbmZp ZyhzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAo+ICsJCQkgICAgICAgc3RydWN0 IGRldmljZV9ub2RlICpucCkKPiArewo+ICsJc3RydWN0IGRldmljZV9ub2RlICpzY2ZnX25wOwo+ ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiArCXN0cnVjdCByZXNvdXJjZSAqcmVz Owo+ICsJdm9pZCBfX2lvbWVtICpiYXNlOwo+ICsKPiArCXNjZmdfbnAgPSBvZl9wYXJzZV9waGFu ZGxlKG5wLCAic2NmZy1jb250cm9sbGVyIiwgMCk7Cj4gKwlpZiAoIXNjZmdfbnApCj4gKwkJcmV0 dXJuIDA7Cj4gKwo+ICsJcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUoc2NmZ19ucCk7Cj4g KwlpZiAoIXBkZXYpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmVzID0gcGxhdGZvcm1f Z2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCWlmICghcmVzKQo+ICsJ CXJldHVybiAtRU5PREVWOwo+ICsKPiArCWJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBk ZXYtPmRldiwgcmVzKTsKPiArCWlmIChJU19FUlIoYmFzZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIo YmFzZSk7Cj4gKwo+ICsJZnNsX2Rldi0+c2NmZ19yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21t aW9fY2xrKCZwZGV2LT5kZXYsCj4gKwkJCU5VTEwsIGJhc2UsICZmc2xfZGN1X3JlZ21hcF9jb25m aWcpOwo+ICsJaWYgKElTX0VSUihmc2xfZGV2LT5zY2ZnX3JlZ21hcCkpIHsKPiArCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJyZWdtYXAgaW5pdCBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJS KGZzbF9kZXYtPnNjZmdfcmVnbWFwKTsKPiArCX0KPiArCj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+c2NmZ19yZWdtYXAsIDB4MjgsIDB4ODAwMDAwMDApOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGZzbF9kY3VfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 bnNpZ25lZCBsb25nIGZsYWdzKQo+ICt7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 ID0gZGV2LT5wbGF0Zm9ybWRldjsKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9k ZXY7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCXZvaWQgX19pb21lbSAqYmFzZTsKPiAr CWludCByZXQ7Cj4gKwo+ICsJZnNsX2RldiA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXpl b2YoKmZzbF9kZXYpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZnNsX2RldikKPiArCQlyZXR1cm4g LUVOT01FTTsKPiArCj4gKwlmc2xfZGV2LT5kZXYgPSAmcGRldi0+ZGV2Owo+ICsJZnNsX2Rldi0+ ZGRldiA9IGRldjsKPiArCWRldi0+ZGV2X3ByaXZhdGUgPSBmc2xfZGV2Owo+ICsKPiArCXJlcyA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKwliYXNl ID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7Cj4gKwlpZiAoSVNfRVJS KGJhc2UpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihiYXNlKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJ fQo+ICsKPiArCWZzbF9kZXYtPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbygmcGRldi0+ ZGV2LAo+ICsJCQliYXNlLCAmZnNsX2RjdV9yZWdtYXBfY29uZmlnKTsKPiArCWlmIChJU19FUlIo ZnNsX2Rldi0+cmVnbWFwKSkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgInJlZ21hcCBpbml0 IGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoZnNsX2Rldi0+cmVnbWFwKTsKPiArCX0K PiArCj4gKwlyZXQgPSBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoZnNsX2Rldik7Cj4gKwlpZiAo cmV0IDwgMCkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXpl IG1vZGUgc2V0dGluZ1xuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBk cm1fdmJsYW5rX2luaXQoZGV2LCAxKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2Vycigm cGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgdmJsYW5rXG4iKTsKPiArCQlnb3RvIGRv bmU7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJtX2lycV9pbnN0YWxsKGRldiwgcGxhdGZvcm1fZ2V0 X2lycShkZXYtPnBsYXRmb3JtZGV2LCAwKSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWRldl9l cnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBpbnN0YWxsIElSUSBoYW5kbGVyXG4iKTsKPiArCQln b3RvIGRvbmU7Cj4gKwl9Cj4gKwo+ICsJLyogUHV0IFRDT04gaW4gYnlwYXNzIG1vZGUsIHNvIHRo ZSBpbnB1dCBzaWduYWxzIGZyb20gRENVIGFyZSBwYXNzZWQKPiArCSAqIHRocm91Z2ggVENPTiB1 bmNoYW5nZWQgKi8KPiArCWZzbF9kY3VfYnlwYXNzX3Rjb24oZnNsX2RldiwgcGRldi0+ZGV2Lm9m X25vZGUpOwo+ICsJZnNsX2RjdV9zY2ZnX2NvbmZpZyhmc2xfZGV2LCBwZGV2LT5kZXYub2Zfbm9k ZSk7Cj4gKwo+ICsJZnNsX2Rldi0+Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJkY2Zi Iik7Cj4gKwlpZiAoSVNfRVJSKGZzbF9kZXYtPmNsaykpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGZz bF9kZXYtPmNsayk7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY291bGQgbm90IGdldCBjbG9j a1xuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCWNsa19wcmVwYXJlX2VuYWJsZShmc2xf ZGV2LT5jbGspOwo+ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYtPmRldiwgZnNsX2Rldik7Cj4g Kwo+ICsJZnNsX2RjdV9mYmRldl9pbml0KGRldik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK2RvbmU6 Cj4gKwlpZiAocmV0KQo+ICsJCWZzbF9kY3VfdW5sb2FkKGRldik7Cj4gKwo+ICsJcmV0dXJuIHJl dDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fcHJlY2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKwk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBmc2xfZGN1X2RybV9pcnEoaW50IGlycSwgdm9pZCAqYXJn KQo+ICt7Cj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNs X2RjdV9kcm1fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykK PiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rp c2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICt7Cj4gKwk7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZzbF9kY3Vf ZHJtX2ZvcHMgPSB7Cj4gKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gKwkub3BlbgkJPSBkcm1f b3BlbiwKPiArCS5yZWxlYXNlCT0gZHJtX3JlbGVhc2UsCj4gKwkudW5sb2NrZWRfaW9jdGwJPSBk cm1faW9jdGwsCj4gKyNpZmRlZiBDT05GSUdfQ09NUEFUCj4gKwkuY29tcGF0X2lvY3RsCT0gZHJt X2NvbXBhdF9pb2N0bCwKPiArI2VuZGlmCj4gKwkucG9sbAkJPSBkcm1fcG9sbCwKPiArCS5yZWFk CQk9IGRybV9yZWFkLAo+ICsJLmxsc2VlawkJPSBub19sbHNlZWssCj4gKwkubW1hcAkJPSBkcm1f Z2VtX2NtYV9tbWFwLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGZzbF9k Y3VfZHJtX2RyaXZlciA9IHsKPiArCS5kcml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfSEFWRV9JUlEg fCBEUklWRVJfR0VNIHwgRFJJVkVSX01PREVTRVQKPiArCQkJCXwgRFJJVkVSX1BSSU1FLAo+ICsJ LmxvYWQJCQk9IGZzbF9kY3VfbG9hZCwKPiArCS51bmxvYWQJCQk9IGZzbF9kY3VfdW5sb2FkLAo+ ICsJLnByZWNsb3NlCQk9IGZzbF9kY3VfZHJtX3ByZWNsb3NlLAo+ICsJLmlycV9oYW5kbGVyCQk9 IGZzbF9kY3VfZHJtX2lycSwKPiArCS5nZXRfdmJsYW5rX2NvdW50ZXIJPSBkcm1fdmJsYW5rX2Nv dW50LAo+ICsJLmVuYWJsZV92YmxhbmsJCT0gZnNsX2RjdV9kcm1fZW5hYmxlX3ZibGFuaywKPiAr CS5kaXNhYmxlX3ZibGFuawkJPSBmc2xfZGN1X2RybV9kaXNhYmxlX3ZibGFuaywKPiArCS5nZW1f ZnJlZV9vYmplY3QJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKPiArCS5nZW1fdm1fb3BzCQk9 ICZkcm1fZ2VtX2NtYV92bV9vcHMsCj4gKwkucHJpbWVfaGFuZGxlX3RvX2ZkCT0gZHJtX2dlbV9w cmltZV9oYW5kbGVfdG9fZmQsCj4gKwkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dlbV9wcmlt ZV9mZF90b19oYW5kbGUsCj4gKwkuZ2VtX3ByaW1lX2ltcG9ydAk9IGRybV9nZW1fcHJpbWVfaW1w b3J0LAo+ICsJLmdlbV9wcmltZV9leHBvcnQJPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKPiArCS5n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAo+ ICsJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRf c2dfdGFibGUsCj4gKwkuZ2VtX3ByaW1lX3ZtYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdm1hcCwK PiArCS5nZW1fcHJpbWVfdnVubWFwCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAo+ICsJLmdl bV9wcmltZV9tbWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX21tYXAsCj4gKwkuZHVtYl9jcmVhdGUJ CT0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsCj4gKwkuZHVtYl9tYXBfb2Zmc2V0CT0gZHJtX2dl bV9jbWFfZHVtYl9tYXBfb2Zmc2V0LAo+ICsJLmR1bWJfZGVzdHJveQkJPSBkcm1fZ2VtX2R1bWJf ZGVzdHJveSwKPiArCS5mb3BzCQkJPSAmZnNsX2RjdV9kcm1fZm9wcywKPiArCS5uYW1lCQkJPSAi ZnNsLWRjdS1kcm0iLAo+ICsJLmRlc2MJCQk9ICJGcmVlc2NhbGUgRENVIERSTSIsCj4gKwkuZGF0 ZQkJCT0gIjIwMTUwMjEzIiwKPiArCS5tYWpvcgkJCT0gMSwKPiArCS5taW5vcgkJCT0gMCwKPiAr fTsKPiArCj4gKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiArc3RhdGljIGludCBmc2xfZGN1X2Ry bV9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCWRybV9r bXNfaGVscGVyX3BvbGxfZGlzYWJsZShmc2xfZGV2LT5kZGV2KTsKPiArCWZzbF9kY3VfZHJtX2Ny dGNfc3VzcGVuZCgmZnNsX2Rldi0+Y3J0Yyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiAr ewo+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwo+ICsKPiArCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGZzbF9kZXYtPmRkZXYpOwo+ICsJ ZnNsX2RjdV9kcm1fY3J0Y19yZXN1bWUoJmZzbF9kZXYtPmNydGMpOwo+ICsJZHJtX21vZGVzZXRf dW5sb2NrX2FsbChmc2xfZGV2LT5kZGV2KTsKPiArCj4gKwlkcm1fa21zX2hlbHBlcl9wb2xsX2Vu YWJsZShmc2xfZGV2LT5kZGV2KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZzbF9kY3VfZHJtX3BtX29wcyA9IHsKPiAr CVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKGZzbF9kY3VfZHJtX3BtX3N1c3BlbmQsIGZzbF9kY3Vf ZHJtX3BtX3Jlc3VtZSkKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJcmV0dXJuIGRybV9wbGF0Zm9y bV9pbml0KCZmc2xfZGN1X2RybV9kcml2ZXIsIHBkZXYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGZzbF9kY3VfZHJtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4g KwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRh dGEocGRldik7Cj4gKwo+ICsJZHJtX3B1dF9kZXYoZnNsX2Rldi0+ZGRldik7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGZzbF9kY3Vfb2Zf bWF0Y2hbXSA9IHsKPiArCQl7IC5jb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWRjZmIiLCB9LAo+ ICsJCXsgfSwKPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZnNsX2RjdV9vZl9tYXRj aCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfZGN1X2RybV9wbGF0 Zm9ybV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJCT0gZnNsX2RjdV9kcm1fcHJvYmUsCj4gKwkucmVt b3ZlCQk9IGZzbF9kY3VfZHJtX3JlbW92ZSwKPiArCS5kcml2ZXIJCT0gewo+ICsJCS5vd25lcgk9 IFRISVNfTU9EVUxFLAo+ICsJCS5uYW1lCT0gImZzbCxsczEwMjFhLWRjZmIiLAo+ICsJCS5wbQk9 ICZmc2xfZGN1X2RybV9wbV9vcHMsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gZnNsX2RjdV9vZl9t YXRjaCwKPiArCX0sCj4gK307Cj4gKwo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZzbF9kY3Vf ZHJtX3BsYXRmb3JtX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmZzbC1k Y3UtZHJtIik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiRnJlZXNjYWxlIERDVSBEUk0gRHJpdmVy Iik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2ZzbC9mc2xfZGN1X2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9k cm1fZHJ2LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjhkYzdjMTAK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9k cnYuaAo+IEBAIC0wLDAgKzEsMTY3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVz Y2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRl dmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiAr ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAr ICovCj4gKwo+ICsjaWZuZGVmIF9fRlNMX0RDVV9EUk1fRFJWX0hfXwo+ICsjZGVmaW5lIF9fRlNM X0RDVV9EUk1fRFJWX0hfXwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5j bHVkZSA8bGludXgvc3BpbmxvY2suaD4KPiArI2luY2x1ZGUgPHN0ZGRlZi5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fZmJfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Zi X2NtYV9oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCj4gKyNk ZWZpbmUgRFJJVkVSX05BTUUJCQkiZnNsLWRjdS1mYiIKPiArCj4gKyNkZWZpbmUgRENVX0RDVV9N T0RFCQkJMHgwMDEwCj4gKyNkZWZpbmUgRENVX01PREVfQkxFTkRfSVRFUih4KQkJKCh4KSA8PCAy MCkKPiArI2RlZmluZSBEQ1VfTU9ERV9SQVNURVJfRU4JCUJJVCgxNCkKPiArI2RlZmluZSBEQ1Vf TU9ERV9EQ1VfTU9ERSh4KQkJKHgpCj4gKyNkZWZpbmUgRENVX01PREVfRENVX01PREVfTUFTSwkJ MHgwMwo+ICsjZGVmaW5lIERDVV9NT0RFX09GRgkJCTAKPiArI2RlZmluZSBEQ1VfTU9ERV9OT1JN QUwJCQkxCj4gKyNkZWZpbmUgRENVX01PREVfVEVTVAkJCTIKPiArI2RlZmluZSBEQ1VfTU9ERV9D T0xPUkJBUgkJMwo+ICsKPiArI2RlZmluZSBEQ1VfQkdORAkJCTB4MDAxNAo+ICsjZGVmaW5lIERD VV9CR05EX1IoeCkJCQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9CR05EX0coeCkJCQkoKHgp IDw8IDgpCj4gKyNkZWZpbmUgRENVX0JHTkRfQih4KQkJCSh4KQo+ICsKPiArI2RlZmluZSBEQ1Vf RElTUF9TSVpFCQkJMHgwMDE4Cj4gKyNkZWZpbmUgRENVX0RJU1BfU0laRV9ERUxUQV9ZKHgpCSgo eCkgPDwgMTYpCj4gKy8qUmVnaXNpdGVyIHZhbHVlIDEvMTYgb2YgaG9yaXpvbnRhbCByZXNvbHV0 aW9uKi8KPiArI2RlZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1goeCkJKCh4KSA+PiA0KQo+ICsK PiArI2RlZmluZSBEQ1VfSFNZTl9QQVJBCQkJMHgwMDFjCj4gKyNkZWZpbmUgRENVX0hTWU5fUEFS QV9CUCh4KQkJKCh4KSA8PCAyMikKPiArI2RlZmluZSBEQ1VfSFNZTl9QQVJBX1BXKHgpCQkoKHgp IDw8IDExKQo+ICsjZGVmaW5lIERDVV9IU1lOX1BBUkFfRlAoeCkJCSh4KQo+ICsKPiArI2RlZmlu ZSBEQ1VfVlNZTl9QQVJBCQkJMHgwMDIwCj4gKyNkZWZpbmUgRENVX1ZTWU5fUEFSQV9CUCh4KQkJ KCh4KSA8PCAyMikKPiArI2RlZmluZSBEQ1VfVlNZTl9QQVJBX1BXKHgpCQkoKHgpIDw8IDExKQo+ ICsjZGVmaW5lIERDVV9WU1lOX1BBUkFfRlAoeCkJCSh4KQo+ICsKPiArI2RlZmluZSBEQ1VfU1lO X1BPTAkJCTB4MDAyNAo+ICsjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9QWENLX0ZBTEwJKDAgPDwg NikKPiArI2RlZmluZSBEQ1VfU1lOX1BPTF9ORUdfUkVNQUlOCQkoMCA8PCA1KQo+ICsjZGVmaW5l IERDVV9TWU5fUE9MX0lOVl9WU19MT1cJCUJJVCgxKQo+ICsjZGVmaW5lIERDVV9TWU5fUE9MX0lO Vl9IU19MT1cJCSgxKQo+ICsKPiArI2RlZmluZSBEQ1VfVEhSRVNIT0xECQkJMHgwMDI4Cj4gKyNk ZWZpbmUgRENVX1RIUkVTSE9MRF9MU19CRl9WUyh4KQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERD VV9USFJFU0hPTERfT1VUX0JVRl9ISUdIKHgpCSgoeCkgPDwgOCkKPiArI2RlZmluZSBEQ1VfVEhS RVNIT0xEX09VVF9CVUZfTE9XKHgpCSh4KQo+ICsjZGVmaW5lIEJGX1ZTX1ZBTAkJCTB4MDMKPiAr I2RlZmluZSBCVUZfTUFYX1ZBTAkJCTB4NzgKPiArI2RlZmluZSBCVUZfTUlOX1ZBTAkJCTB4MGEK PiArCj4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVMJCQkweDAwMkMKPiArI2RlZmluZSBEQ1VfSU5U X1NUQVRVU19VTkRSVU4JCUJJVCgxKQo+ICsKPiArI2RlZmluZSBEQ1VfSU5UX01BU0sJCQkweDAw MzAKPiArI2RlZmluZSBEQ1VfSU5UX01BU0tfVU5EUlVOCQlCSVQoMSkKPiArI2RlZmluZSBEQ1Vf SU5UX01BU0tfVkJMQU5LCQlCSVQoMykKPiArCj4gKyNkZWZpbmUgRENVX0RJVl9SQVRJTwkJCTB4 MDA1NAo+ICsKPiArI2RlZmluZSBEQ1VfVVBEQVRFX01PREUJCQkweDAwY2MKPiArI2RlZmluZSBE Q1VfVVBEQVRFX01PREVfTU9ERQkJQklUKDMxKQo+ICsjZGVmaW5lIERDVV9VUERBVEVfTU9ERV9S RUFEUkVHCQlCSVQoMzApCj4gKwo+ICsjZGVmaW5lIERDVV9EQ0ZCX01BWAkJCTB4MzAwCj4gKwo+ ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEoeCkJCSgweDIwMCArICh4KSAqIDB4NDApCj4gKyNk ZWZpbmUgRENVX0NUUkxERVNDTE5fMV9IRUlHSFQoeCkJKCh4KSA8PCAxNikKPiArI2RlZmluZSBE Q1VfQ1RSTERFU0NMTl8xX1dJRFRIKHgpCSh4KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl8yKHgpCQkoMHgyMDQgKyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzJf UE9TWSh4KQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzJfUE9TWCh4KQko eCkKPiArCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMyh4KQkJKDB4MjA4ICsgKHgpICogMHg0 MCkKPiArCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNCh4KQkJKDB4MjBjICsgKHgpICogMHg0 MCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0VOCQlCSVQoMzEpCj4gKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fNF9USUxFX0VOCUJJVCgzMCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80 X0RBVEFfU0VMX0NMVVQJQklUKDI5KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfU0FGRVRZ X0VOCUJJVCgyOCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1RSQU5TKHgpCSgoeCkgPDwg MjApCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9CUFAoeCkJCSgoeCkgPDwgMTYpCj4gKyNk ZWZpbmUgRENVX0NUUkxERVNDTE5fNF9STEVfRU4JCUJJVCgxNSkKPiArI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl80X0xVT0ZGUyh4KQkoKHgpIDw8IDQpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5f NF9CQl9PTgkJQklUKDIpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9BQih4KQkJKHgpCj4g Kwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzUoeCkJCSgweDIxMCArICh4KSAqIDB4NDApCj4g KyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9SKHgpCSgoeCkgPDwgMTYpCj4gKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9HKHgpCSgoeCkgPDwgOCkKPiArI2RlZmluZSBEQ1Vf Q1RSTERFU0NMTl81X0NLTUFYX0IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzYoeCkJCSgweDIxNCArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNl9D S01JTl9SKHgpCSgoeCkgPDwgMTYpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNl9DS01JTl9H KHgpCSgoeCkgPDwgOCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX0IoeCkJKHgp Cj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzcoeCkJCSgweDIxOCArICh4KSAqIDB4NDAp Cj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fN19USUxFX1ZFUih4KQkoKHgpIDw8IDE2KQo+ICsj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzdfVElMRV9IT1IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERD VV9DVFJMREVTQ0xOXzgoeCkJCSgweDIxYyArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NU UkxERVNDTE5fOF9GR19GQ09MT1IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzkoeCkJCSgweDIyMCArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOV9C R19CQ09MT1IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwKHgpCQkoMHgy MjQgKyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BPU1RfU0tJUCh4 KQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BSRV9TS0lQKHgpCSh4 KQo+ICsKPiArI2RlZmluZSBGU0xfRENVX1JHQjU2NQkJCTQKPiArI2RlZmluZSBGU0xfRENVX1JH Qjg4OAkJCTUKPiArI2RlZmluZSBGU0xfRENVX0FSR0I4ODg4CQk2Cj4gKyNkZWZpbmUgRlNMX0RD VV9BUkdCMTU1NQkJMTEKPiArI2RlZmluZSBGU0xfRENVX0FSR0I0NDQ0CQkxMgo+ICsjZGVmaW5l IEZTTF9EQ1VfWVVWNDIyCQkJMTQKPiArCj4gKyNkZWZpbmUgVENPTl9DVFJMMQkJCTB4MDAwMAo+ ICsjZGVmaW5lIFRDT05fQllQQVNTX0VOQUJMRQkJQklUKDI5KQo+ICsKPiArI2RlZmluZSBEQkco Zm10LCAuLi4pIERSTV9ERUJVRyhmbXQiXG4iLCAjI19fVkFfQVJHU19fKQo+ICsKPiArc3RydWN0 IGNsazsKPiArc3RydWN0IGRldmljZTsKPiArc3RydWN0IGRybV9kZXZpY2U7Cj4gKwo+ICtzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlIHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXN0cnVj dCByZWdtYXAgKnJlZ21hcDsKPiArCXN0cnVjdCByZWdtYXAgKnRjb25fcmVnbWFwOwo+ICsJc3Ry dWN0IHJlZ21hcCAqc2NmZ19yZWdtYXA7Cj4gKwl1bnNpZ25lZCBpbnQgaXJxOwo+ICsJc3RydWN0 IGNsayAqY2xrOwo+ICsJLypwcm90ZWN0cyBoYXJkd2FyZSByZWdpc3RlciovCj4gKwlzcGlubG9j a190IGlycV9sb2NrOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRkZXY7Cj4gKwlzdHJ1Y3QgZHJt X2ZiZGV2X2NtYSAqZmJkZXY7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY3J0YyBjcnRjOwo+ICsJ c3RydWN0IGZzbF9kY3VfZHJtX2VuY29kZXIgZW5jb2RlcjsKPiArCXN0cnVjdCBmc2xfZGN1X2Ry bV9jb25uZWN0b3IgY29ubmVjdG9yOwo+ICt9Owo+ICsKPiArdm9pZCBmc2xfZGN1X2ZiZGV2X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gKwo+ICsjZW5kaWYgLyogX19GU0xfRENVX0RS TV9EUlZfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9k cm1fZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZmJkZXYuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNjcyOWY5Mgo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ZiZGV2LmMKPiBAQCAt MCwwICsxLDQzIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29u ZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxp c2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0v ZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2ZiX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9j bWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZmIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ICsjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUg PGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2lu Y2x1ZGUgPHZpZGVvL29mX2Rpc3BsYXlfdGltaW5nLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby92aWRl b21vZGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KPiArCj4gKyNpbmNsdWRlICJm c2xfZGN1X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKPiArCj4g Ky8qIGluaXRpYWxpemUgZmJkZXYgaGVscGVyICovCj4gK3ZvaWQgZnNsX2RjdV9mYmRldl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZp Y2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LT5kZXYpOwo+ICsKPiArCWZzbF9kZXYt PmZiZGV2ID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRldiwgMjQsIDEsIDEpOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmMgYi9kcml2ZXJzL2dw dS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi4wZWIwNjUyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wvZnNsX2RjdV9kcm1fa21zLmMKPiBAQCAtMCwwICsxLDQ1IEBACj4gKy8qCj4gKyAqIENv cHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZy ZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5o Igo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCj4gKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9rbXMuaCIKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNz IGZzbF9kY3VfZHJtX21vZGVfY29uZmlnX2Z1bmNzID0gewo+ICsJLmZiX2NyZWF0ZSA9IGRybV9m Yl9jbWFfY3JlYXRlLAo+ICt9Owo+ICsKPiAraW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChz dHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KQo+ICt7Cj4gKwlkcm1fbW9kZV9jb25m aWdfaW5pdChmc2xfZGV2LT5kZGV2KTsKPiArCj4gKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZp Zy5taW5fd2lkdGggPSAwOwo+ICsJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWluX2hlaWdo dCA9IDA7Cj4gKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSAyMDMxOwo+ ICsJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIwNDc7Cj4gKwlmc2xf ZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19m dW5jczsKPiArCj4gKwlmc2xfZGN1X2RybV9jcnRjX2NyZWF0ZShmc2xfZGV2KTsKPiArCWZzbF9k Y3VfZHJtX2VuY29kZXJfY3JlYXRlKGZzbF9kZXYpOwo+ICsJZnNsX2RjdV9kcm1fY29ubmVjdG9y X2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+ZW5jb2Rlci5lbmNvZGVyKTsKPiArCj4gKwlkcm1f a21zX2hlbHBlcl9wb2xsX2luaXQoZnNsX2Rldi0+ZGRldik7Cj4gKwo+ICsJZHJtX2hlbHBlcl9k aXNhYmxlX3VudXNlZF9mdW5jdGlvbnMoZnNsX2Rldi0+ZGRldik7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMu aCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmgKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjlkNWI3OTgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMuaAo+IEBAIC0wLDAgKzEsMjIgQEAK PiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4K PiArICoKPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19GU0xf RENVX0RSTV9LTVNfSF9fCj4gKyNkZWZpbmUgX19GU0xfRENVX0RSTV9LTVNfSF9fCj4gKwo+ICsj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiArCj4gK3N0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3Q7 Cj4gK3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fbW9k ZXNldF9pbml0KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpOwo+ICsKPiArI2Vu ZGlmIC8qIF9fRlNMX0RDVV9EUk1fS01TX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZnNsL2ZzbF9kY3VfZHJtX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9k Y3VfZHJtX3BsYW5lLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmQ3 MjU1OTQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1 X2RybV9wbGFuZS5jCj4gQEAgLTAsMCArMSwxMjQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIw MTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiArICoKPiArICogRnJlZXNjYWxlIERD VSBkcm0gZGV2aWNlIGRyaXZlcgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2Nt YV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsKPiArI2luY2x1ZGUg ImZzbF9kY3VfZHJtX2Rydi5oIgo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fa21zLmgiCj4gKyNp bmNsdWRlICJmc2xfZGN1X2RybV9wbGFuZS5oIgo+ICsKPiArc3RhdGljIHZvaWQgX19mc2xfZGN1 X2RybV9wbGFuZV9zZXR1cChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCSAgICAgIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ICt7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2 aWNlICpmc2xfZGV2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwl1MzIgcGxhbmVfbnVt ID0gMCwgYWxwaGEsIGJwcDsKPiArCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmdlbTsKPiAr Cj4gKwl3aGlsZSAocGxhbmUtPnBvc3NpYmxlX2NydGNzID4+IDEpCj4gKwkJcGxhbmVfbnVtKys7 Cj4gKwo+ICsJZ2VtID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7Cj4gKwo+ICsJc3dp dGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ICsJ CWJwcCA9IEZTTF9EQ1VfUkdCNTY1Owo+ICsJCWFscGhhID0gMHhmZjsKPiArCQlicmVhazsKPiAr CWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6Cj4gKwkJYnBwID0gRlNMX0RDVV9SR0I4ODg7Cj4gKwkJ YWxwaGEgPSAweGZmOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ ICsJCWJwcCA9IEZTTF9EQ1VfQVJHQjg4ODg7Cj4gKwkJYWxwaGEgPSAweGZmOwo+ICsJCWJyZWFr Owo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUkE0NDQ0Ogo+ICsJCWJwcCA9IEZTTF9EQ1VfQVJHQjQ0 NDQ7Cj4gKwkJYWxwaGEgPSAweGZmOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0FS R0IxNTU1Ogo+ICsJCWJwcCA9IEZTTF9EQ1VfQVJHQjE1NTU7Cj4gKwkJYWxwaGEgPSAweGZmOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoKPiArCQlicHAgPSBGU0xfRENV X1lVVjQyMjsKPiArCQlhbHBoYSA9IDB4ZmY7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJ CXJldHVybjsKPiArCX0KPiArCj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf Q1RSTERFU0NMTl8zKHBsYW5lX251bSksIGdlbS0+cGFkZHIpOwo+ICsJcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNChwbGFuZV9udW0pLAo+ICsJCSAgICAgRENV X0NUUkxERVNDTE5fNF9FTiB8Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X1RSQU5TKGFscGhh KSB8Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X0JQUChicHApIHwKPiArCQkgICAgIERDVV9D VFJMREVTQ0xOXzRfQUIoMikpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENV X0NUUkxERVNDTE5fNShwbGFuZV9udW0pLAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNV9DS01B WF9SKDB4RkYpIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfRygweEZGKSB8Cj4g KwkJICAgICBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0IoMHhGRikpOwo+ICsJcmVnbWFwX3dyaXRl KGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNihwbGFuZV9udW0pLAo+ICsJCSAgICAg RENVX0NUUkxERVNDTE5fNl9DS01JTl9SKDApIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzZf Q0tNSU5fRygwKSB8Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX0IoMCkpOwo+ICsJ cmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fOChwbGFuZV9udW0p LAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fOF9GR19GQ09MT1IoMCkpOwo+ICsJcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fOShwbGFuZV9udW0pLAo+ICsJCSAg ICAgRENVX0NUUkxERVNDTE5fOV9CR19CQ09MT1IoMCkpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMTAocGxhbmVfbnVtKSwKPiArCQkgICAgIERDVV9D VFJMREVTQ0xOXzEwX1BPU1RfU0tJUCgwKSB8Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8xMF9Q UkVfU0tJUCgwKSk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRF X01PREUsIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsKPiArfQo+ICsKPiArdm9pZCBmc2xfZGN1 X2RybV9wbGFuZV9zZXR1cChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiArewo+ICsJaWYgKCFw bGFuZS0+ZmIpCj4gKwkJcmV0dXJuOwo+ICsKPiArCV9fZnNsX2RjdV9kcm1fcGxhbmVfc2V0dXAo cGxhbmUsIHBsYW5lLT5mYik7Cj4gK30KPiArCj4gK2ludCBmc2xfZGN1X2RybV9wbGFuZV91cGRh dGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJ ICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNydGNfeCwgaW50IGNydGNfeSwK PiArCQkJICAgIHVuc2lnbmVkIGludCBjcnRjX3csIHVuc2lnbmVkIGludCBjcnRjX2gsCj4gKwkJ CSAgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCj4gKwkJCSAgICB1aW50MzJfdCBz cmNfdywgdWludDMyX3Qgc3JjX2gpCj4gK3sKPiArCV9fZnNsX2RjdV9kcm1fcGxhbmVfc2V0dXAo cGxhbmUsIGZiKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fcGxh bmVfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiArewo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3ZvaWQgZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSkKPiArewo+ICsJZnNsX2RjdV9kcm1fcGxhbmVfZGlzYWJsZShwbGFuZSk7Cj4gKwlk cm1fcGxhbmVfY2xlYW51cChwbGFuZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCB1aW50MzJf dCBmb3JtYXRzW10gPSB7Cj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiArCURSTV9GT1JNQVRfUkdC ODg4LAo+ICsJRFJNX0ZPUk1BVF9BUkdCODg4OCwKPiArCURSTV9GT1JNQVRfQVJHQjQ0NDQsCj4g KwlEUk1fRk9STUFUX0FSR0IxNTU1LAo+ICsJRFJNX0ZPUk1BVF9ZVVY0MjIsCj4gK307Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuaCBiL2RyaXZl cnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMC4uZGE4OGQxYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX3BsYW5lLmgKPiBAQCAtMCwwICsxLDI4IEBACj4gKy8q Cj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAq Cj4gKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fRlNMX0RDVV9E Uk1fUExBTkVfSF9fCj4gKyNkZWZpbmUgX19GU0xfRENVX0RSTV9QTEFORV9IX18KPiArCj4gK3N0 cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7Cj4gKwo+ICt2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX3Nl dHVwKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKPiAraW50IGZzbF9kY3VfZHJtX3BsYW5lX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJICAgICBzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gKwkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gKwkJCSAgICAg aW50IGNydGNfeCwgaW50IGNydGNfeSwKPiArCQkJICAgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1 bnNpZ25lZCBpbnQgY3J0Y19oLAo+ICsJCQkgICAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBz cmNfeSwKPiArCQkJICAgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpOwo+ICtpbnQg ZnNsX2RjdV9kcm1fcGxhbmVfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4gK3Zv aWQgZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4g Kwo+ICsjZW5kaWYgLyogX19GU0xfRENVX0RSTV9QTEFORV9IX18gKi8KPiAtLSAKPiAyLjEuMC4y Ny5nOTZkYjMyNAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29y cG9yYXRpb24KKzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=