From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei Wang Subject: [PATCH v7 1/4] drm/layerscape: Add Freescale DCU DRM driver Date: Fri, 10 Jul 2015 19:17:40 +0800 Message-ID: <1436527063-44762-1-git-send-email-jianwei.wang@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: devicetree@vger.kernel.org, Xiubo Li , daniel.vetter@ffwll.ch, Alison Wang , linux-kernel@vger.kernel.org, scottwood@freescale.com, Jianwei Wang , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBmb3IgVHdvIERpbWVuc2lvbmFsIEFuaW1hdGlvbiBhbmQg Q29tcG9zaXRpbmcKRW5naW5lICgyRC1BQ0UpIG9uIHRoZSBGcmVlc2NhbGUgU29Dcy4KCjJELUFD RSBpcyBhIEZyZWVzY2FsZSBkaXNwbGF5IGNvbnRyb2xsZXIuIDJELUFDRSBkZXNjcmliZXMKdGhl IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIG1vZHVsZSBleHRyZW1lbHkgd2VsbCBpdHMgbmFtZSBpcyBh IHZhbHVlCnRoYXQgY2Fubm90IGJlIHVzZWQgYXMgYSB0b2tlbiBpbiBwcm9ncmFtbWluZyBsYW5n dWFnZXMuCkluc3RlYWQgdGhlIHZhbGlkIHRva2VuICJEQ1UiIGlzIHVzZWQgdG8gdGFnIHRoZSBy ZWdpc3RlciBuYW1lcyBhbmQKZnVuY3Rpb24gbmFtZXMuCgpUaGUgRGlzcGxheSBDb250cm9sbGVy IFVuaXQgKERDVSkgbW9kdWxlIGlzIGEgc3lzdGVtIG1hc3RlciB0aGF0CmZldGNoZXMgZ3JhcGhp Y3Mgc3RvcmVkIGluIGludGVybmFsIG9yIGV4dGVybmFsIG1lbW9yeSBhbmQgZGlzcGxheXMKdGhl bSBvbiBhIFRGVCBMQ0QgcGFuZWwuIEEgd2lkZSByYW5nZSBvZiBwYW5lbCBzaXplcyBpcyBzdXBw b3J0ZWQKYW5kIHRoZSB0aW1pbmcgb2YgdGhlIGludGVyZmFjZSBzaWduYWxzIGlzIGhpZ2hseSBj b25maWd1cmFibGUuCkdyYXBoaWNzIGFyZSByZWFkIGRpcmVjdGx5IGZyb20gbWVtb3J5IGFuZCB0 aGVuIGJsZW5kZWQgaW4gcmVhbC10aW1lLAp3aGljaCBhbGxvd3MgZm9yIGR5bmFtaWMgY29udGVu dCBjcmVhdGlvbiB3aXRoIG1pbmltYWwgQ1BVCmludGVydmVudGlvbi4KClRoZSBmZWF0dXJlczoK KDEpIEZ1bGwgUkdCODg4IG91dHB1dCB0byBURlQgTENEIHBhbmVsLgooMikgRm9yIHRoZSBjdXJy ZW50IExDRCBwYW5lbCwgV1FWR0EgIjQ4MHgyNzIiIGlzIHN1cHBvcnRlZC4KKDMpIEJsZW5kaW5n IG9mIGVhY2ggcGl4ZWwgdXNpbmcgdXAgdG8gNCBzb3VyY2UgbGF5ZXJzCmRlcGVuZGVudCBvbiBz aXplIG9mIHBhbmVsLgooNCkgRWFjaCBncmFwaGljIGxheWVyIGNhbiBiZSBwbGFjZWQgd2l0aCBv bmUgcGl4ZWwgcmVzb2x1dGlvbgppbiBlaXRoZXIgYXhpcy4KKDUpIEVhY2ggZ3JhcGhpYyBsYXll ciBzdXBwb3J0IFJHQjU2NSBhbmQgUkdCODg4IGRpcmVjdCBjb2xvcnMKd2l0aG91dCBhbHBoYQpj aGFubmVsIGFuZCBCR1JBODg4OCBCR1JBNDQ0NCBBUkdCMTU1NSBkaXJlY3QgY29sb3JzIHdpdGgg YW4KYWxwaGEgY2hhbm5lbCBhbmQKWVVWNDIyIGZvcm1hdC4KKDYpIEVhY2ggZ3JhcGhpYyBsYXll ciBzdXBwb3J0IGFscGhhIGJsZW5kaW5nIHdpdGggOC1iaXQKcmVzb2x1dGlvbi4KClRoaXMgaXMg YSBzaW1wbGlmaWVkIHZlcnNpb24sIG9ubHkgb25lIHByaW1hcnkgcGxhbmUsIG9uZQpmcmFtZWJ1 ZmZlciBjcmVhdGVkIGZvcgpmYmRldiwgb25lIGNydGMsIG9uZSBjb25uZWN0b3IgZm9yIFRGVCBM Q0QgcGFuZWwsIGFuIGVuY29kZXIuCgpTaWduZWQtb2ZmLWJ5OiBBbGlzb24gV2FuZyA8YjE4OTY1 QGZyZWVzY2FsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFhpdWJvIExpIDxsaXhpdWJvQGNtc3MuY2hp bmFtb2JpbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWFud2VpIFdhbmcgPGppYW53ZWkud2FuZ0Bm cmVlc2NhbGUuY29tPgotLS0KCgpDaGFuZ2VkIGluIFY3CgotIFJlbW92ZSByZWR1bmRhbnQgZnVu Y3Rpb25zIGFuZCByZXBsYWNlIGRlcHJlY2F0ZWQgaG9va2VyCkFkdmljZWQgYnkgRGFuaWVsIFZl dHRlcgotIFJlcGxhY2UgZHJtX3BsYXRmb3JtX2luaXQgd2l0aCBkcm1fZGV2X2FsbG9jL3JlZ2lz dGVyCkFkdmljZWQgYnkgRGFuaWVsIFZldHRlcgoKQ2hhbmdlZCBpbiBWNgoKLSBBZGQgTkVDIG5s NDgyN2hjMTlfMDViIHBhbmVsIHRvIHBhbmVsLXNpbXBsZS5jCkFkdmljZWQgYnkgTWFyayBZYW8K LSBBZGQgRFJJVkVSX0FUT01JQyBmb3IgZHJpdmVyX2ZlYXR1cmVzCkFkdmljZWQgYnkgTWFyayBZ YW8KLSBjaGVjayBmc2xfZGV2IGlmIGl0J3MgTlVMTCBhdCBQTSBzdXNwZW5kL3Jlc3VtZQpBZHZp Y2VkIGJ5IE1hcmsgWWFvCgpDaGFuZ2VkIGluIFY1CgotIFVwZGF0ZSBjb21taXQgbWVzc2FnZQot IEFkZCBsYXllciByZWdpc3RlcnMgaW5pdGlhbGl6YXRpb24KLSBSZW1vdmUgdW51c2VkIGZ1bmN0 aW9ucwotIFJlbmFtZSBkcml2ZXIgZm9sZGVyCkFkdmljZWQgYnkgU3RlZmFuIEFnbmVyCi0gTW92 ZSBwaXhlbCBjbG9jayBjb250cm9sIGZ1bmN0aW9ucyB0byBmc2xfZGN1X2RybV9kcnYuYwotIHJl bW92ZSByZWR1bmRhbnQgZW5hYmxlIHRoZSBjbG9jayBpbXBsaWNpdGx5IHVzaW5nIHJlZ21hcAot IEFkZCBtYWludGFpbmVyIG1lc3NhZ2UKCkNoYW5nZWQgaW4gVjQ6CgotVGhpcyB2ZXJzaW9uIGRv ZXNuJ3QgaGF2ZSBmdW5jdGlvbmFsaXR5IGNoYW5nZWQKSnVzdCBhIG1pbm9yIGFkanVzdG1lbnQu CgpDaGFuZ2VkIGluIFYzOgoKLSBUZXN0IGRyaXZlciBvbiBWeWJyaWQgYm9hcmQgYW5kIGFkZCBj b21wYXRpYmxlIHN0cmluZwotIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zCi0gc2V0IGRlZmF1bHQg Y3J0YyBmb3IgZW5jb2RlcgotIHJlcGxhY2UgbGVnYWN5IGZ1bmN0aW9ucyB3aXRoIGF0b21pYyBo ZWxwIGZ1bmN0aW9ucwpBZHZpY2VkIGJ5IERhbmllbCBWZXR0ZXIKLSBTZXQgdGhlIHVuaXF1ZSBu YW1lIG9mIHRoZSBEUk0gZGV2aWNlCi0gSW1wbGVtZW50IGlycSBoYW5kbGUgZnVuY3Rpb24gZm9y IHZibGFuayBpbnRlcnJ1cHQKCkNoYW5nZWQgaW4gdjI6IAotIEFkZCBhdG9taWMgc3VwcG9ydApB ZHZpY2VkIGJ5IERhbmllbCBWZXR0ZXIKLSBNb2RpZnkgYmluZGluZ3MgZmlsZQotIFJlbmFtZSBu b2RlIGZvciBjb21wYXRpYmlsaXR5Ci0gTW92ZSBwbGF0Zm9ybSByZWxhdGVkIGNvZGUgb3V0IGZv ciBjb21wYXRpYmlsaXR5CkFkdmljZWQgYnkgU3RlZmFuIEFnbmVyCgoKIE1BSU5UQUlORVJTICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIGRyaXZlcnMvZ3B1L2Ry bS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L0tjb25maWcgICAgICAgICAgICAgICAgIHwgIDE4ICsrCiBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuYyB8IDE4MyArKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmggfCAgMzEgKysKIGRy aXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYyAgICAgIHwgMTU5ICsrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaCAgICAgIHwg IDIyICsrCiBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuYyAgICAgICB8 IDQwMSArKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2Rydi5oICAgICAgIHwgMjIzICsrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMgICAgIHwgIDI2ICsrCiBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYyAgICAgICB8ICA0MiArKysKIGRyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oICAgICAgIHwgIDE3ICsKIGRyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5lLmMgICAgIHwgMTk1ICsrKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaCAgICAgfCAgMjMgKysK IDE2IGZpbGVzIGNoYW5nZWQsIDEzNTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9j cnRjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1 X2RybV9kcnYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2Rydi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fZmJkZXYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaAoKZGlmZiAtLWdp dCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggNjc2MTMxOC4uYjI1Yjk0OCAxMDA2 NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTM0MDQsNiArMzQwNCwx MyBAQCBTOglNYWludGFpbmVkCiBGOglkcml2ZXJzL2dwdS9kcm0vaW14LwogRjoJRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9pbXgvCiAKK0RSTSBEUklWRVJTIEZPUiBGUkVF U0NBTEUgRENVCitNOglKaWFud2VpIFdhbmcgPGppYW53ZWkud2FuZ0BmcmVlc2NhbGUuY29tPgor TToJQWxpc29uIFdhbmcgPGFsaXNvbi53YW5nQGZyZWVzY2FsZS5jb20+CitMOglkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9m c2wtZGN1LworCiBEUk0gRFJJVkVSUyBGT1IgTlZJRElBIFRFR1JBCiBNOglUaGllcnJ5IFJlZGlu ZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwuY29tPgogTToJVGVyamUgQmVyZ3N0csO2bSA8dGJlcmdz dHJvbUBudmlkaWEuY29tPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCBjNDZjYTMxLi45Y2ZkMTRlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpA QCAtMjMxLDYgKzIzMSw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmln IgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9tc20vS2NvbmZpZyIKIAorc291cmNlICJkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnIgorCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS90 ZWdyYS9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnIgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01h a2VmaWxlCmluZGV4IDU3MTNkMDUuLjExY2I4MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTcwLDMgKzcwLDQg QEAgb2JqLSQoQ09ORklHX0RSTV9JTVgpICs9IGlteC8KIG9iai15CQkJKz0gaTJjLwogb2JqLXkJ CQkrPSBwYW5lbC8KIG9iai15CQkJKz0gYnJpZGdlLworb2JqLSQoQ09ORklHX0RSTV9GU0xfRENV KSArPSBmc2wtZGN1LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYmZkNDg0YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wtZGN1L0tjb25maWcKQEAgLTAsMCArMSwxOCBAQAorY29uZmlnIERSTV9GU0xfRENVCisJ dHJpc3RhdGUgIkRSTSBTdXBwb3J0IGZvciBGcmVlc2NhbGUgRENVIgorCWRlcGVuZHMgb24gRFJN ICYmIE9GICYmIEFSTQorCXNlbGVjdCBEUk1fS01TX0hFTFBFUgorCXNlbGVjdCBEUk1fS01TX0NN QV9IRUxQRVIKKwlzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMKKwlzZWxlY3QgQkFDS0xJR0hUX0NM QVNTX0RFVklDRQorCXNlbGVjdCBCQUNLTElHSFRfTENEX1NVUFBPUlQKKwlzZWxlY3QgUkVHTUFQ X01NSU8KKwlzZWxlY3QgRFJNX0tNU19GQl9IRUxQRVIKKwlzZWxlY3QgRkJfU1lTX0ZJTExSRUNU CisJc2VsZWN0IEZCX1NZU19DT1BZQVJFQQorCXNlbGVjdCBGQl9TWVNfSU1BR0VCTElUCisJc2Vs ZWN0IEZCX1NZU19GT1BTCisJc2VsZWN0IERSTV9QQU5FTAorCWhlbHAKKwkgIENob29zZSB0aGlz IG9wdGlvbiBpZiB5b3UgaGF2ZSBhbiBGcmVlc2NhbGUgRENVIGNoaXBzZXQuCisJICBJZiBNIGlz IHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZnNsLWRjdS1kcm0uCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNmI0 YTYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9NYWtlZmlsZQpA QCAtMCwwICsxLDcgQEAKK2ZzbC1kY3UtZHJtLXkgOj0gZnNsX2RjdV9kcm1fZHJ2Lm8gXAorCSAg ICAgICBmc2xfZGN1X2RybV9rbXMubyBcCisJICAgICAgIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5v IFwKKwkgICAgICAgZnNsX2RjdV9kcm1fcGxhbmUubyBcCisJICAgICAgIGZzbF9kY3VfZHJtX2Ny dGMubyBcCisJICAgICAgIGZzbF9kY3VfZHJtX2ZiZGV2Lm8KK29iai0kKENPTkZJR19EUk1fRlNM X0RDVSkJKz0gZnNsLWRjdS1kcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xf ZGN1X2RybV9jb25uZWN0b3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i Y2I3ZGZlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fY29ubmVjdG9yLmMKQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx NSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJt IGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNp bmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5o PgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1f Y29ubmVjdG9yLmgiCisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZGlzYWJsZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7Cit9CisKK3N0YXRpYyBpbnQKK2ZzbF9kY3Vf ZHJtX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJ CQkgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKK3sKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOworfQorCitzdGF0aWMgdm9pZCBm c2xfZGN1X2RybV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGVuY29k ZXJfaGVscGVyX2Z1bmNzID0geworCS5lbmFibGUgPSBmc2xfZGN1X2RybV9lbmNvZGVyX2VuYWJs ZSwKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGlzYWJsZSwKKwkuYXRvbWljX2No ZWNrID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9hdG9taWNfY2hlY2ssCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGVuY29kZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kg PSBmc2xfZGN1X2RybV9lbmNvZGVyX2Rlc3Ryb3ksCit9OworCitpbnQgZnNsX2RjdV9kcm1fZW5j b2Rlcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCSAgICAg ICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy ID0gJmZzbF9kZXYtPmVuY29kZXI7CisJaW50IHJldDsKKworCWVuY29kZXItPnBvc3NpYmxlX2Ny dGNzID0gMTsKKwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGZzbF9kZXYtPmRkZXYsIGVuY29kZXIs ICZlbmNvZGVyX2Z1bmNzLAorCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJfTFZEUyk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29k ZXIsICZlbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisJZW5jb2Rlci0+Y3J0YyA9IGNydGM7CisKKwly ZXR1cm4gMDsKK30KKworI2RlZmluZSB0b19mc2xfZGN1X2Nvbm5lY3Rvcihjb25uZWN0b3IpIFwK Kwljb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yLCBj b25uZWN0b3IpCisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2dldF9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9j b25uZWN0b3IgKmZzbF9jb25uZWN0b3I7CisJaW50IG51bV9tb2RlcyA9IDA7CisKKwlmc2xfY29u bmVjdG9yID0gdG9fZnNsX2RjdV9jb25uZWN0b3IoY29ubmVjdG9yKTsKKwlpZiAoZnNsX2Nvbm5l Y3Rvci0+cGFuZWwgJiYgZnNsX2Nvbm5lY3Rvci0+cGFuZWwtPmZ1bmNzICYmCisJICAgIGZzbF9j b25uZWN0b3ItPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVzKQorCQludW1fbW9kZXMgPSBmc2xfY29u bmVjdG9yLT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlcworCQkJCShmc2xfY29ubmVjdG9yLT5wYW5l bCk7CisKKwlyZXR1cm4gbnVtX21vZGVzOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2Nv bm5lY3Rvcl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJ CSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlyZXR1cm4gTU9ERV9PSzsK K30KKworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqCitmc2xfZGN1X2RybV9jb25uZWN0b3Jf YmVzdF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0 IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqZnNsX2NvbiA9IHRvX2ZzbF9kY3VfY29ubmVjdG9yKGNv bm5lY3Rvcik7CisKKwlyZXR1cm4gZnNsX2Nvbi0+ZW5jb2RlcjsKK30KKworc3RhdGljIHZvaWQg ZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcikKK3sKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKKwlkcm1fY29u bmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKK30KKworc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rv cl9zdGF0dXMKK2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19j b25uZWN0ZWQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBm c2xfZGN1X2RybV9jb25uZWN0b3JfZnVuY3MgPSB7CisJLmRwbXMgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZHBtcywKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf cmVzZXQsCisJLmRldGVjdCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmZpbGxf bW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmRlc3Ry b3kgPSBmc2xfZGN1X2RybV9jb25uZWN0b3JfZGVzdHJveSwKKwkuYXRvbWljX2R1cGxpY2F0ZV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCisJLmF0 b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lf c3RhdGUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1 bmNzIGNvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IGZzbF9kY3VfZHJt X2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQgPSBmc2xfZGN1X2RybV9jb25uZWN0 b3JfbW9kZV92YWxpZCwKKwkuYmVzdF9lbmNvZGVyID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Jl c3RfZW5jb2RlciwKK307CisKK2ludCBmc2xfZGN1X2RybV9jb25uZWN0b3JfY3JlYXRlKHN0cnVj dCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCisJCQkJIHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmZzbF9kZXYt PmNvbm5lY3Rvci5jb25uZWN0b3I7CisJc3RydWN0IGRldmljZV9ub2RlICpwYW5lbF9ub2RlOwor CWludCByZXQ7CisKKwlmc2xfZGV2LT5jb25uZWN0b3IuZW5jb2RlciA9IGVuY29kZXI7CisKKwlj b25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IDA7CisJY29ubmVjdG9yLT5kaXNwbGF5 X2luZm8uaGVpZ2h0X21tID0gMDsKKworCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChmc2xfZGV2 LT5kZGV2LCBjb25uZWN0b3IsCisJCQkJICZmc2xfZGN1X2RybV9jb25uZWN0b3JfZnVuY3MsCisJ CQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJl dDsKKworCWNvbm5lY3Rvci0+ZHBtcyA9IERSTV9NT0RFX0RQTVNfT0ZGOworCWRybV9jb25uZWN0 b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZjb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKKwlyZXQg PSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKGNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApCisJCWdv dG8gZXJyX2NsZWFudXA7CisKKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29k ZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfc3lzZnM7 CisKKwljb25uZWN0b3ItPmVuY29kZXIgPSBlbmNvZGVyOworCisJZHJtX29iamVjdF9wcm9wZXJ0 eV9zZXRfdmFsdWUKKwkJKCZjb25uZWN0b3ItPmJhc2UsIGZzbF9kZXYtPmRkZXYtPm1vZGVfY29u ZmlnLmRwbXNfcHJvcGVydHksCisJCURSTV9NT0RFX0RQTVNfT0ZGKTsKKworCXBhbmVsX25vZGUg PSBvZl9wYXJzZV9waGFuZGxlKGZzbF9kZXYtPm5wLCAicGFuZWwiLCAwKTsKKwlpZiAocGFuZWxf bm9kZSkgeworCQlmc2xfZGV2LT5jb25uZWN0b3IucGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChw YW5lbF9ub2RlKTsKKwkJaWYgKCFmc2xfZGV2LT5jb25uZWN0b3IucGFuZWwpCisJCQlyZXR1cm4g LUVQUk9CRV9ERUZFUjsKKwl9CisKKwlyZXQgPSBkcm1fcGFuZWxfYXR0YWNoKGZzbF9kZXYtPmNv bm5lY3Rvci5wYW5lbCwgY29ubmVjdG9yKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZnNsX2Rl di0+ZGV2LCAiZmFpbGVkIHRvIGF0dGFjaCBwYW5lbFxuIik7CisJCWdvdG8gZXJyX3N5c2ZzOwor CX0KKworCXJldHVybiAwOworCitlcnJfc3lzZnM6CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVy KGNvbm5lY3Rvcik7CitlcnJfY2xlYW51cDoKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVj dG9yKTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xf ZGN1X2RybV9jb25uZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x YzNkYmIyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fY29ubmVjdG9yLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1 IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogRnJlZXNjYWxlIERDVSBkcm0g ZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lm bmRlZiBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18KKyNkZWZpbmUgX19GU0xfRENVX0RSTV9D T05ORUNUT1JfSF9fCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1f Y3J0Yy5oPgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKworc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZTsKK3N0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgeworCXN0cnVjdCBkcm1f Y29ubmVjdG9yIGNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CisJc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWw7Cit9OworCitpbnQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9jcmVh dGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCSAgICAgICBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpOworaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0 IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCQkgc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKTsKKworI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1fQ09OTkVDVE9SX0hfXyAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmFmODgzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmMKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisg KiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZy ZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9j bGsuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJmc2xf ZGN1X2RybV9kcnYuaCIKKyNpbmNsdWRlICJmc2xfZGN1X2RybV9wbGFuZS5oIgorCisjZGVmaW5l IHRvX2ZzbF9kY3VfY3J0YyhjKQljb250YWluZXJfb2YoYywgc3RydWN0IGZzbF9kY3VfZHJtX2Ny dGMsIGNydGMpCisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfbW9kZV9zZXRfbm9mYihz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmRldjsKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5zdGF0ZS0+bW9k ZTsKKwl1aW50MzJfdCBoYnAsIGhmcCwgaHN3LCB2YnAsIHZmcCwgdnN3LCBkaXYsIGluZGV4Owor CisJREJHKCI6IHNldCBtb2RlOiAlZDpcIiVzXCIgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg JWQgMHgleCAweCV4IiwKKwkgICAgbW9kZS0+YmFzZS5pZCwgbW9kZS0+bmFtZSwKKwkgICAgbW9k ZS0+dnJlZnJlc2gsIG1vZGUtPmNsb2NrLAorCSAgICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+aHN5 bmNfc3RhcnQsCisJICAgIG1vZGUtPmhzeW5jX2VuZCwgbW9kZS0+aHRvdGFsLAorCSAgICBtb2Rl LT52ZGlzcGxheSwgbW9kZS0+dnN5bmNfc3RhcnQsCisJICAgIG1vZGUtPnZzeW5jX2VuZCwgbW9k ZS0+dnRvdGFsLAorCSAgICBtb2RlLT50eXBlLCBtb2RlLT5mbGFncyk7CisKKwlpbmRleCA9IGRy bV9jcnRjX2luZGV4KGNydGMpOworCWRpdiA9ICh1aW50MzJfdCljbGtfZ2V0X3JhdGUoZnNsX2Rl di0+Y2xrKSAvIG1vZGUtPmNsb2NrIC8gMTAwMDsKKworCS8qIENvbmZpZ3VyZSB0aW1pbmdzOiAq LworCWhicCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloZnAgPSBtb2RlLT5o c3luY19zdGFydCAtIG1vZGUtPmhkaXNwbGF5OworCWhzdyA9IG1vZGUtPmhzeW5jX2VuZCAtIG1v ZGUtPmhzeW5jX3N0YXJ0OworCXZicCA9IG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZzeW5jX2VuZDsK Kwl2ZnAgPSBtb2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZkaXNwbGF5OworCXZzdyA9IG1vZGUt PnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX3N0YXJ0OworCisJcmVnbWFwX3dyaXRlKGZzbF9kZXYt PnJlZ21hcCwgRENVX0hTWU5fUEFSQSwKKwkJICAgICBEQ1VfSFNZTl9QQVJBX0JQKGhicCkgfAor CQkgICAgIERDVV9IU1lOX1BBUkFfUFcoaHN3KSB8CisJCSAgICAgRENVX0hTWU5fUEFSQV9GUCho ZnApKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVlNZTl9QQVJBLAorCQkg ICAgIERDVV9WU1lOX1BBUkFfQlAodmJwKSB8CisJCSAgICAgRENVX1ZTWU5fUEFSQV9QVyh2c3cp IHwKKwkJICAgICBEQ1VfVlNZTl9QQVJBX0ZQKHZmcCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2 LT5yZWdtYXAsIERDVV9ESVNQX1NJWkUsCisJCSAgICAgRENVX0RJU1BfU0laRV9ERUxUQV9ZKG1v ZGUtPnZkaXNwbGF5KSB8CisJCSAgICAgRENVX0RJU1BfU0laRV9ERUxUQV9YKG1vZGUtPmhkaXNw bGF5KSk7CisJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJVl9SQVRJTywgZGl2 KTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsIERDVV9V UERBVEVfTU9ERV9SRUFEUkVHKTsKK30KKworc3RhdGljIGJvb2wgZnNsX2RjdV9kcm1fY3J0Y19t b2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUsCisJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlKQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9j cnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyBpbnQgZnNs X2RjdV9kcm1fY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCQkg c3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRj KQoreworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19mbHVzaChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rpc2Fi bGVfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2NydGNfZnVuY3MgZnNsX2RjdV9kcm1fY3J0Y19mdW5jcyA9IHsKKwkucGFnZV9mbGlw ID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAorCS5zZXRfY29uZmlnID0gZHJtX2F0b21p Y19oZWxwZXJfc2V0X2NvbmZpZywKKwkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsCisJLnJl c2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKKwkuYXRvbWljX2R1cGxpY2F0ZV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGZzbF9kY3VfZHJt X2NydGNfaGVscGVyX2Z1bmNzID0geworCS5lbmFibGUgPSBmc2xfZGN1X2RybV9jcnRjX2VuYWJs ZSwKKwkuZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YywKKwkubW9kZV9maXh1cCA9 IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9maXh1cCwKKwkubW9kZV9zZXRfbm9mYiA9IGZzbF9kY3Vf ZHJtX2NydGNfbW9kZV9zZXRfbm9mYiwKKwkuYXRvbWljX2NoZWNrID0gZnNsX2RjdV9kcm1fY3J0 Y19hdG9taWNfY2hlY2ssCisJLmF0b21pY19iZWdpbiA9IGZzbF9kY3VfZHJtX2NydGNfYXRvbWlj X2JlZ2luLAorCS5hdG9taWNfZmx1c2ggPSBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19mbHVzaCwK K307CisKK2ludCBmc2xfZGN1X2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2 aWNlICpmc2xfZGV2KQoreworCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnk7CisJc3RydWN0IGRy bV9jcnRjICpjcnRjID0gJmZzbF9kZXYtPmNydGM7CisJaW50IGksIHJldDsKKworCXByaW1hcnkg PSBmc2xfZGN1X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShmc2xfZGV2LT5kZGV2KTsKKwlyZXQg PSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGZzbF9kZXYtPmRkZXYsIGNydGMsIHByaW1hcnks IE5VTEwsCisJCQkJCSZmc2xfZGN1X2RybV9jcnRjX2Z1bmNzKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJmZzbF9kY3VfZHJtX2Ny dGNfaGVscGVyX2Z1bmNzKTsKKworCWZvciAoaSA9IDA7IGkgPCBEQ1VfVE9UQUxfTEFZRVJfTlVN OyBpKyspIHsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5f MShpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xO XzIoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NM Tl8zKGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVND TE5fNChpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVT Q0xOXzUoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERF U0NMTl82KGkpLCAwKTsKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxE RVNDTE5fNyhpKSwgMCk7CisJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJM REVTQ0xOXzgoaSksIDApOworCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RS TERFU0NMTl85KGkpLCAwKTsKKwkJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYt Pm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCQlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTl8xMChpKSwgMCk7CisJfQorCXJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9TWU5fUE9MLAorCQkgICAgIERDVV9TWU5fUE9MX0lOVl9WU19MT1cgfCBEQ1Vf U1lOX1BPTF9JTlZfSFNfTE9XKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1Vf QkdORCwgRENVX0JHTkRfUigwKSB8CisJCSAgICAgRENVX0JHTkRfRygwKSB8IERDVV9CR05EX0Io MCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9EQ1VfTU9ERSwKKwkJICAg ICBEQ1VfTU9ERV9CTEVORF9JVEVSKDEpIHwgRENVX01PREVfUkFTVEVSX0VOKTsKKwlyZWdtYXBf d3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVEhSRVNIT0xELAorCQkgICAgIERDVV9USFJFU0hP TERfTFNfQkZfVlMoQkZfVlNfVkFMKSB8CisJCSAgICAgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJ R0goQlVGX01BWF9WQUwpIHwKKwkJICAgICBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfTE9XKEJVRl9N SU5fVkFMKSk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9N T0RFLAorCQkJICAgRENVX01PREVfRENVX01PREVfTUFTSywKKwkJCSAgIERDVV9NT0RFX0RDVV9N T0RFKERDVV9NT0RFX09GRikpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9V UERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOworCisJcmV0dXJuIDA7Cit9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmggYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMTkzNzg1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaApAQCAtMCwwICsxLDIyIEBACisvKgor ICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBG cmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqLworCisjaWZuZGVmIF9fRlNMX0RDVV9EUk1fQ1JUQ19IX18KKyNkZWZpbmUgX19G U0xfRENVX0RSTV9DUlRDX0hfXworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2NydGMuaD4KKworc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZTsKKworaW50IGZzbF9k Y3VfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpOwor CisjZW5kaWYgLyogX19GU0xfRENVX0RSTV9DUlRDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9kcnYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hOGQ4NzU3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fZHJ2LmMKQEAgLTAsMCArMSw0MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBG cmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRl dmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNs dWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4 L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxh dGZvcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxs aW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+CisKKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNs X2RjdV9kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2ttcy5oIgorCitzdGF0aWMg aW50IGZzbF9kY3VfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZHJtX21vZGVf Y29uZmlnX2NsZWFudXAoZGV2KTsKKwlkcm1fdmJsYW5rX2NsZWFudXAoZGV2KTsKKwlkcm1faXJx X3VuaW5zdGFsbChkZXYpOworCisJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHN0cnVjdCByZWdtYXBfY29uZmlnIGZzbF9kY3VfcmVnbWFwX2NvbmZp ZyA9IHsKKwkucmVnX2JpdHMgPSAzMiwKKwkucmVnX3N0cmlkZSA9IDQsCisJLnZhbF9iaXRzID0g MzIsCit9OworCitzdGF0aWMgaW50IGZzbF9kY3VfYnlwYXNzX3Rjb24oc3RydWN0IGZzbF9kY3Vf ZHJtX2RldmljZSAqZnNsX2RldiwKKwkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQor eworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqdGNvbl9ucDsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2OworCXN0cnVjdCBjbGsgKnRjb25fY2xrOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOwor CXZvaWQgX19pb21lbSAqYmFzZTsKKworCXRjb25fbnAgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCAi dGNvbi1jb250cm9sbGVyIiwgMCk7CisJaWYgKCF0Y29uX25wKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHRjb25fbnApOworCWlmICghcGRldikK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwl0Y29uX2NsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2 LCAidGNvbiIpOworCWlmIChJU19FUlIodGNvbl9jbGspKQorCQlyZXR1cm4gUFRSX0VSUih0Y29u X2Nsayk7CisJY2xrX3ByZXBhcmVfZW5hYmxlKHRjb25fY2xrKTsKKworCXJlcyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpCisJCXJl dHVybiAtRU5PREVWOworCisJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2 LCByZXMpOworCWlmIChJU19FUlIoYmFzZSkpCisJCXJldHVybiBQVFJfRVJSKGJhc2UpOworCisJ ZnNsX2Rldi0+dGNvbl9yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oJnBkZXYtPmRldiwK KwkJCWJhc2UsICZmc2xfZGN1X3JlZ21hcF9jb25maWcpOworCWlmIChJU19FUlIoZnNsX2Rldi0+ dGNvbl9yZWdtYXApKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInJlZ21hcCBpbml0IGZhaWxl ZFxuIik7CisJCXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnRjb25fcmVnbWFwKTsKKwl9CisKKwly ZWdtYXBfd3JpdGUoZnNsX2Rldi0+dGNvbl9yZWdtYXAsIFRDT05fQ1RSTDEsIFRDT05fQllQQVNT X0VOQUJMRSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRjdV9waXhjbGtfZW5hYmxl KHZvaWQpCit7CisJc3RydWN0IHJlZ21hcCAqc2NmZ19yZWdtYXA7CisKKwlzY2ZnX3JlZ21hcCA9 IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X2NvbXBhdGlibGUoImZzbCxsczEwMjFhLXNjZmciKTsK KwlpZiAoSVNfRVJSKHNjZmdfcmVnbWFwKSkgeworCQlwcl9lcnIoIk5vIHN5c2NmZyBwaGFuZGxl IHNwZWNpZmllZFxuIik7CisJCXJldHVybjsKKwl9CisKKwlyZWdtYXBfd3JpdGUoc2NmZ19yZWdt YXAsIFNDRkdfUElYQ0xLQ1IsIFBYQ0tfRU5BQkxFKTsKK30KKworc3RhdGljIGludCBmc2xfZGN1 X2RybV9pcnFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2LT5kZXYpOworCXN0cnVjdCBm c2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVuc2lnbmVk IGludCBpbnRfbWFzazsKKwlpbnQgcmV0OworCisJcmV0ID0gZHJtX2lycV9pbnN0YWxsKGRldiwg cGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKSk7CisJaWYgKHJldCA8IDApCisJCWRldl9lcnIoJnBk ZXYtPmRldiwgImZhaWxlZCB0byBpbnN0YWxsIElSUSBoYW5kbGVyXG4iKTsKKworCWRldi0+aXJx X2VuYWJsZWQgPSB0cnVlOworCWRldi0+dmJsYW5rX2Rpc2FibGVfYWxsb3dlZCA9IHRydWU7CisK KwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgMCk7CisJcmVn bWFwX3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX01BU0ssICZpbnRfbWFzayk7CisJcmVn bWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCBpbnRfbWFzayAmCisJCSAg ICAgfkRDVV9JTlRfTUFTS19WQkxBTkspOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LCB1 bnNpZ25lZCBsb25nIGZsYWdzKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRkZXYtPmRldjsK KwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7 CisJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldjsKKwlzdHJ1Y3QgcmVzb3VyY2Ug KnJlczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisJaW50IHJldDsKKworCWZzbF9kZXYgPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKmZzbF9kZXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZzbF9k ZXYpCisJCXJldHVybiAtRU5PTUVNOworCisJZnNsX2Rldi0+ZGV2ID0gZGV2OworCWZzbF9kZXYt PmRkZXYgPSBkZGV2OworCWZzbF9kZXYtPm5wID0gZGV2LT5vZl9ub2RlOworCWRkZXYtPmRldl9w cml2YXRlID0gZnNsX2RldjsKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBmc2xfZGV2KTsKKworCXJl cyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYg KCFyZXMpIHsKKwkJZGV2X2VycihkZXYsICJjb3VsZCBub3QgZ2V0IG1lbW9yeSBJTyByZXNvdXJj ZVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWJhc2UgPSBkZXZtX2lvcmVtYXBfcmVz b3VyY2UoZGV2LCByZXMpOworCWlmIChJU19FUlIoYmFzZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihi YXNlKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlmc2xfZGV2LT5jbGsgPSBkZXZtX2Nsa19nZXQo ZGV2LCAiZGN1Iik7CisJaWYgKElTX0VSUihmc2xfZGV2LT5jbGspKSB7CisJCXJldCA9IFBUUl9F UlIoZnNsX2Rldi0+Y2xrKTsKKwkJZGV2X2VycihkZXYsICJjb3VsZCBub3QgZ2V0IGNsb2NrXG4i KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJY2xrX3ByZXBhcmVfZW5hYmxlKGZzbF9kZXYtPmNsayk7 CisJZnNsX2Rldi0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKGRldiwgYmFzZSwKKwkJ CSZmc2xfZGN1X3JlZ21hcF9jb25maWcpOworCWlmIChJU19FUlIoZnNsX2Rldi0+cmVnbWFwKSkg eworCQlkZXZfZXJyKGRldiwgInJlZ21hcCBpbml0IGZhaWxlZFxuIik7CisJCXJldHVybiBQVFJf RVJSKGZzbF9kZXYtPnJlZ21hcCk7CisJfQorCisJLyogUHV0IFRDT04gaW4gYnlwYXNzIG1vZGUs IHNvIHRoZSBpbnB1dCBzaWduYWxzIGZyb20gRENVIGFyZSBwYXNzZWQKKwkgKiB0aHJvdWdoIFRD T04gdW5jaGFuZ2VkICovCisJZnNsX2RjdV9ieXBhc3NfdGNvbihmc2xfZGV2LCBmc2xfZGV2LT5u cCk7CisKKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZnNsX2Rldi0+bnAsICJmc2wsbHMx MDIxYS1kY3UiKSkKKwkJZGN1X3BpeGNsa19lbmFibGUoKTsKKwlyZXQgPSBmc2xfZGN1X2RybV9t b2Rlc2V0X2luaXQoZnNsX2Rldik7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJm YWlsZWQgdG8gaW5pdGlhbGl6ZSBtb2RlIHNldHRpbmdcbiIpOworCQlyZXR1cm4gcmV0OworCX0K KworCXJldCA9IGRybV92YmxhbmtfaW5pdChkZGV2LCBkZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0 Yyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6 ZSB2YmxhbmtcbiIpOworCQlnb3RvIGRvbmU7CisJfQorCisJcmV0ID0gZnNsX2RjdV9kcm1faXJx X2luaXQoZGRldik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZG9uZTsKKworCWZzbF9kY3VfZmJk ZXZfaW5pdChkZGV2KTsKKworCXJldHVybiAwOworZG9uZToKKwlpZiAocmV0KQorCQlmc2xfZGN1 X3VubG9hZChkZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3Vf ZHJtX3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKK3sKK30KKworc3RhdGljIGlycXJldHVybl90IGZzbF9kY3VfZHJtX2lycShpbnQgaXJxLCB2 b2lkICphcmcpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFyZzsKKwlzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBp bnQgaW50X3N0YXR1czsKKworCXJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9T VEFUVVMsICZpbnRfc3RhdHVzKTsKKwlpZiAoaW50X3N0YXR1cyAmIERDVV9JTlRfU1RBVFVTX1ZC TEFOSykKKwkJZHJtX2hhbmRsZV92YmxhbmsoZGV2LCAwKTsKKworCXJlZ21hcF93cml0ZShmc2xf ZGV2LT5yZWdtYXAsIERDVV9JTlRfU1RBVFVTLCAweGZmZmZmZmZmKTsKKwlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsIERDVV9VUERBVEVfTU9ERV9SRUFEUkVH KTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBmc2xfZGN1X2RybV9l bmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQoreworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3sKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgZnNsX2RjdV9kcm1fZm9wcyA9IHsKKwkub3duZXIJCT0gVEhJU19NT0RV TEUsCisJLm9wZW4JCT0gZHJtX29wZW4sCisJLnJlbGVhc2UJPSBkcm1fcmVsZWFzZSwKKwkudW5s b2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCisjaWZkZWYgQ09ORklHX0NPTVBBVAorCS5jb21wYXRf aW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAorI2VuZGlmCisJLnBvbGwJCT0gZHJtX3BvbGwsCisJ LnJlYWQJCT0gZHJtX3JlYWQsCisJLmxsc2VlawkJPSBub19sbHNlZWssCisJLm1tYXAJCT0gZHJt X2dlbV9jbWFfbW1hcCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBmc2xfZGN1X2Ry bV9kcml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9IQVZFX0lSUSB8IERSSVZF Ul9HRU0gfCBEUklWRVJfTU9ERVNFVAorCQkJCXwgRFJJVkVSX1BSSU1FIHwgRFJJVkVSX0FUT01J QywKKwkubG9hZAkJCT0gZnNsX2RjdV9sb2FkLAorCS51bmxvYWQJCQk9IGZzbF9kY3VfdW5sb2Fk LAorCS5wcmVjbG9zZQkJPSBmc2xfZGN1X2RybV9wcmVjbG9zZSwKKwkuaXJxX2hhbmRsZXIJCT0g ZnNsX2RjdV9kcm1faXJxLAorCS5nZXRfdmJsYW5rX2NvdW50ZXIJPSBkcm1fdmJsYW5rX2NvdW50 LAorCS5lbmFibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2VuYWJsZV92YmxhbmssCisJLmRpc2Fi bGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJsYW5rLAorCS5nZW1fZnJlZV9vYmpl Y3QJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKKwkuZ2VtX3ZtX29wcwkJPSAmZHJtX2dlbV9j bWFfdm1fb3BzLAorCS5wcmltZV9oYW5kbGVfdG9fZmQJPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90 b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUs CisJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1l X2V4cG9ydAk9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxl CT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlID0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVf dm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJpbWVfdnVubWFwCT0gZHJt X2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcAkJPSBkcm1fZ2VtX2NtYV9w cmltZV9tbWFwLAorCS5kdW1iX2NyZWF0ZQkJPSBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZSwKKwku ZHVtYl9tYXBfb2Zmc2V0CT0gZHJtX2dlbV9jbWFfZHVtYl9tYXBfb2Zmc2V0LAorCS5kdW1iX2Rl c3Ryb3kJCT0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCisJLmZvcHMJCQk9ICZmc2xfZGN1X2RybV9m b3BzLAorCS5uYW1lCQkJPSAiZnNsLWRjdS1kcm0iLAorCS5kZXNjCQkJPSAiRnJlZXNjYWxlIERD VSBEUk0iLAorCS5kYXRlCQkJPSAiMjAxNTAyMTMiLAorCS5tYWpvcgkJCT0gMSwKKwkubWlub3IJ CQk9IDAsCit9OworCisjaWZkZWYgQ09ORklHX1BNX1NMRUVQCitzdGF0aWMgdm9pZCBkY3VfcGl4 Y2xrX2Rpc2FibGUodm9pZCkKK3sKKwlzdHJ1Y3QgcmVnbWFwICpzY2ZnX3JlZ21hcDsKKworCXNj ZmdfcmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfY29tcGF0aWJsZSgiZnNsLGxzMTAy MWEtc2NmZyIpOworCWlmIChJU19FUlIoc2NmZ19yZWdtYXApKSB7CisJCXByX2VycigiTm8gc3lz Y2ZnIHBoYW5kbGUgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXJlZ21hcF93cml0 ZShzY2ZnX3JlZ21hcCwgU0NGR19QSVhDTEtDUiwgUFhDS19ESVNBQkxFKTsKK30KKworc3RhdGlj IGludCBmc2xfZGN1X2RybV9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisK KwlpZiAoIWZzbF9kZXYpCisJCXJldHVybiAwOworCisJaWYgKG9mX2RldmljZV9pc19jb21wYXRp YmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCisJCWRjdV9waXhjbGtfZGlzYWJs ZSgpOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9kaXNhYmxlKGZzbF9kZXYtPmRkZXYpOworCXJl Z2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rldi0+cmVnbWFwLCB0cnVlKTsKKwlyZWdjYWNoZV9tYXJr X2RpcnR5KGZzbF9kZXYtPnJlZ21hcCk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGZzbF9kZXYt PmNsayk7CisKKwlpZiAoZnNsX2Rldi0+dGNvbl9yZWdtYXApIHsKKwkJcmVnY2FjaGVfY2FjaGVf b25seShmc2xfZGV2LT50Y29uX3JlZ21hcCwgdHJ1ZSk7CisJCXJlZ2NhY2hlX21hcmtfZGlydHko ZnNsX2Rldi0+dGNvbl9yZWdtYXApOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUoZnNsX2Rldi0+ dGNvbl9jbGspOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJt X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZzbF9kY3VfZHJtX2Rl dmljZSAqZnNsX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJaWYgKCFmc2xfZGV2KQor CQlyZXR1cm4gMDsKKworCS8qIEVuYWJsZSBjbG9ja3MgYW5kIHJlc3RvcmUgYWxsIHJlZ2lzdGVy cyAqLworCWlmIChmc2xfZGV2LT50Y29uX3JlZ21hcCkgeworCQljbGtfcHJlcGFyZV9lbmFibGUo ZnNsX2Rldi0+dGNvbl9jbGspOworCQlyZWdjYWNoZV9jYWNoZV9vbmx5KGZzbF9kZXYtPnRjb25f cmVnbWFwLCBmYWxzZSk7CisJCXJlZ2NhY2hlX3N5bmMoZnNsX2Rldi0+dGNvbl9yZWdtYXApOwor CX0KKworCWNsa19wcmVwYXJlX2VuYWJsZShmc2xfZGV2LT5jbGspOworCWRybV9rbXNfaGVscGVy X3BvbGxfZW5hYmxlKGZzbF9kZXYtPmRkZXYpOworCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rl di0+cmVnbWFwLCBmYWxzZSk7CisJcmVnY2FjaGVfc3luYyhmc2xfZGV2LT5yZWdtYXApOworCisJ aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1 IikpCisJCWRjdV9waXhjbGtfZW5hYmxlKCk7CisKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCitz dGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgZnNsX2RjdV9kcm1fcG1fb3BzID0geworCVNF VF9TWVNURU1fU0xFRVBfUE1fT1BTKGZzbF9kY3VfZHJtX3BtX3N1c3BlbmQsIGZzbF9kY3VfZHJt X3BtX3Jlc3VtZSkKK307CisKK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZHJtX2RyaXZlciAqZHJpdmVyID0gJmZz bF9kY3VfZHJtX2RyaXZlcjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOworCWludCBlcnI7CisK Kwlkcm0gPSBkcm1fZGV2X2FsbG9jKGRyaXZlciwgJnBkZXYtPmRldik7CisJaWYgKCFkcm0pCisJ CXJldHVybiAtRU5PTUVNOworCisJZHJtX2Rldl9zZXRfdW5pcXVlKGRybSwgZGV2X25hbWUoJnBk ZXYtPmRldikpOworCisJZXJyID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOworCWlmIChlcnIg PCAwKQorCQlnb3RvIHVucmVmOworCisJRFJNX0lORk8oIkluaXRpYWxpemVkICVzICVkLiVkLiVk ICVzIG9uIG1pbm9yICVkXG4iLCBkcml2ZXItPm5hbWUsCisJCSBkcml2ZXItPm1ham9yLCBkcml2 ZXItPm1pbm9yLCBkcml2ZXItPnBhdGNobGV2ZWwsCisJCSBkcml2ZXItPmRhdGUsIGRybS0+cHJp bWFyeS0+aW5kZXgpOworCisJcmV0dXJuIDA7CisKK3VucmVmOgorCWRybV9kZXZfdW5yZWYoZHJt KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGZzbF9kY3VfZHJtX3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWRybV9wdXRfZGV2KGZz bF9kZXYtPmRkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGZzbF9kY3Vfb2ZfbWF0Y2hbXSA9IHsKKwkJeyAuY29tcGF0aWJsZSA9ICJmc2ws bHMxMDIxYS1kY3UiLCB9LAorCQl7IC5jb21wYXRpYmxlID0gImZzbCx2ZjYxMC1kY3UiLCB9LAor CQl7IH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZnNsX2RjdV9vZl9tYXRjaCk7CisK K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZzbF9kY3VfZHJtX3BsYXRmb3JtX2RyaXZl ciA9IHsKKwkucHJvYmUJCT0gZnNsX2RjdV9kcm1fcHJvYmUsCisJLnJlbW92ZQkJPSBmc2xfZGN1 X2RybV9yZW1vdmUsCisJLmRyaXZlcgkJPSB7CisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAorCQku bmFtZQk9ICJmc2wsZGN1IiwKKwkJLnBtCT0gJmZzbF9kY3VfZHJtX3BtX29wcywKKwkJLm9mX21h dGNoX3RhYmxlID0gZnNsX2RjdV9vZl9tYXRjaCwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3Jt X2RyaXZlcihmc2xfZGN1X2RybV9wbGF0Zm9ybV9kcml2ZXIpOworCitNT0RVTEVfQUxJQVMoInBs YXRmb3JtOmZzbC1kY3UtZHJtIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkZyZWVzY2FsZSBEQ1Ug RFJNIERyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vZnNs LWRjdS9mc2xfZGN1X2RybV9kcnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li40MGRmMWM1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fZHJ2LmgKQEAgLTAsMCArMSwyMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBG cmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRl dmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5k ZWYgX19GU0xfRENVX0RSTV9EUlZfSF9fCisjZGVmaW5lIF9fRlNMX0RDVV9EUk1fRFJWX0hfXwor CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4K KyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxkcm0vZHJtLmg+CisjaW5jbHVkZSA8ZHJt L2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9k cm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+CisKKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9jcnRjLmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKyNpbmNsdWRlICJmc2xf ZGN1X2RybV9jb25uZWN0b3IuaCIKKyNkZWZpbmUgRFJJVkVSX05BTUUJCQkiZnNsLWRjdS1kcm0i CisKKyNkZWZpbmUgRENVX0RDVV9NT0RFCQkJMHgwMDEwCisjZGVmaW5lIERDVV9NT0RFX0JMRU5E X0lURVIoeCkJCSgoeCkgPDwgMjApCisjZGVmaW5lIERDVV9NT0RFX1JBU1RFUl9FTgkJQklUKDE0 KQorI2RlZmluZSBEQ1VfTU9ERV9EQ1VfTU9ERSh4KQkJKHgpCisjZGVmaW5lIERDVV9NT0RFX0RD VV9NT0RFX01BU0sJCTB4MDMKKyNkZWZpbmUgRENVX01PREVfT0ZGCQkJMAorI2RlZmluZSBEQ1Vf TU9ERV9OT1JNQUwJCQkxCisjZGVmaW5lIERDVV9NT0RFX1RFU1QJCQkyCisjZGVmaW5lIERDVV9N T0RFX0NPTE9SQkFSCQkzCisKKyNkZWZpbmUgRENVX0JHTkQJCQkweDAwMTQKKyNkZWZpbmUgRENV X0JHTkRfUih4KQkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9CR05EX0coeCkJCQkoKHgpIDw8 IDgpCisjZGVmaW5lIERDVV9CR05EX0IoeCkJCQkoeCkKKworI2RlZmluZSBEQ1VfRElTUF9TSVpF CQkJMHgwMDE4CisjZGVmaW5lIERDVV9ESVNQX1NJWkVfREVMVEFfWSh4KQkoKHgpIDw8IDE2KQor LypSZWdpc2l0ZXIgdmFsdWUgMS8xNiBvZiBob3Jpem9udGFsIHJlc29sdXRpb24qLworI2RlZmlu ZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1goeCkJKCh4KSA+PiA0KQorCisjZGVmaW5lIERDVV9IU1lO X1BBUkEJCQkweDAwMWMKKyNkZWZpbmUgRENVX0hTWU5fUEFSQV9CUCh4KQkJKCh4KSA8PCAyMikK KyNkZWZpbmUgRENVX0hTWU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKKyNkZWZpbmUgRENVX0hT WU5fUEFSQV9GUCh4KQkJKHgpCisKKyNkZWZpbmUgRENVX1ZTWU5fUEFSQQkJCTB4MDAyMAorI2Rl ZmluZSBEQ1VfVlNZTl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQorI2RlZmluZSBEQ1VfVlNZTl9Q QVJBX1BXKHgpCQkoKHgpIDw8IDExKQorI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0ZQKHgpCQkoeCkK KworI2RlZmluZSBEQ1VfU1lOX1BPTAkJCTB4MDAyNAorI2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZf UFhDS19GQUxMCSgwIDw8IDYpCisjZGVmaW5lIERDVV9TWU5fUE9MX05FR19SRU1BSU4JCSgwIDw8 IDUpCisjZGVmaW5lIERDVV9TWU5fUE9MX0lOVl9WU19MT1cJCUJJVCgxKQorI2RlZmluZSBEQ1Vf U1lOX1BPTF9JTlZfSFNfTE9XCQlCSVQoMCkKKworI2RlZmluZSBEQ1VfVEhSRVNIT0xECQkJMHgw MDI4CisjZGVmaW5lIERDVV9USFJFU0hPTERfTFNfQkZfVlMoeCkJKCh4KSA8PCAxNikKKyNkZWZp bmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJR0goeCkJKCh4KSA8PCA4KQorI2RlZmluZSBEQ1Vf VEhSRVNIT0xEX09VVF9CVUZfTE9XKHgpCSh4KQorI2RlZmluZSBCRl9WU19WQUwJCQkweDAzCisj ZGVmaW5lIEJVRl9NQVhfVkFMCQkJMHg3OAorI2RlZmluZSBCVUZfTUlOX1ZBTAkJCTB4MGEKKwor I2RlZmluZSBEQ1VfSU5UX1NUQVRVUwkJCTB4MDAyQworI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19W U1lOQwkJQklUKDApCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1VORFJVTgkJQklUKDEpCisjZGVm aW5lIERDVV9JTlRfU1RBVFVTX0xTQkZWUwkJQklUKDIpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVT X1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0NSQ1JFQURZCQlCSVQoNCkK KyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfQ1JDT1ZFUkZMT1cJQklUKDUpCisjZGVmaW5lIERDVV9J TlRfU1RBVFVTX1AxRklGT0xPCQlCSVQoNikKKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDFGSUZP SEkJCUJJVCg3KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMkZJRk9MTwkJQklUKDgpCisjZGVm aW5lIERDVV9JTlRfU1RBVFVTX1AyRklGT0hJCQlCSVQoOSkKKyNkZWZpbmUgRENVX0lOVF9TVEFU VVNfUFJPR0VORAkJQklUKDEwKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19JUE1FUlJPUgkJQklU KDExKQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19MWVJUUkFOUwkJQklUKDEyKQorI2RlZmluZSBE Q1VfSU5UX1NUQVRVU19ETUFUUkFOUwkJQklUKDE0KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19Q M0ZJRk9MTwkJQklUKDE2KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QM0ZJRk9ISQkJQklUKDE3 KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9MTwkJQklUKDE4KQorI2RlZmluZSBEQ1Vf SU5UX1NUQVRVU19QNEZJRk9ISQkJQklUKDE5KQorI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMUVN UFRZCQlCSVQoMjYpCisjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AyRU1QVFkJCUJJVCgyNykKKyNk ZWZpbmUgRENVX0lOVF9TVEFUVVNfUDNFTVBUWQkJQklUKDI4KQorI2RlZmluZSBEQ1VfSU5UX1NU QVRVU19QNEVNUFRZCQlCSVQoMjkpCisKKyNkZWZpbmUgRENVX0lOVF9NQVNLCQkJMHgwMDMwCisj ZGVmaW5lIERDVV9JTlRfTUFTS19WU1lOQwkJQklUKDApCisjZGVmaW5lIERDVV9JTlRfTUFTS19V TkRSVU4JCUJJVCgxKQorI2RlZmluZSBEQ1VfSU5UX01BU0tfTFNCRlZTCQlCSVQoMikKKyNkZWZp bmUgRENVX0lOVF9NQVNLX1ZCTEFOSwkJQklUKDMpCisjZGVmaW5lIERDVV9JTlRfTUFTS19DUkNS RUFEWQkJQklUKDQpCisjZGVmaW5lIERDVV9JTlRfTUFTS19DUkNPVkVSRkxPVwlCSVQoNSkKKyNk ZWZpbmUgRENVX0lOVF9NQVNLX1AxRklGT0xPCQlCSVQoNikKKyNkZWZpbmUgRENVX0lOVF9NQVNL X1AxRklGT0hJCQlCSVQoNykKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklGT0xPCQlCSVQoOCkK KyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklGT0hJCQlCSVQoOSkKKyNkZWZpbmUgRENVX0lOVF9N QVNLX1BST0dFTkQJCUJJVCgxMCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX0lQTUVSUk9SCQlCSVQo MTEpCisjZGVmaW5lIERDVV9JTlRfTUFTS19MWVJUUkFOUwkJQklUKDEyKQorI2RlZmluZSBEQ1Vf SU5UX01BU0tfRE1BVFJBTlMJCUJJVCgxNCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AzRklGT0xP CQlCSVQoMTYpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QM0ZJRk9ISQkJQklUKDE3KQorI2RlZmlu ZSBEQ1VfSU5UX01BU0tfUDRGSUZPTE8JCUJJVCgxOCkKKyNkZWZpbmUgRENVX0lOVF9NQVNLX1A0 RklGT0hJCQlCSVQoMTkpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QMUVNUFRZCQlCSVQoMjYpCisj ZGVmaW5lIERDVV9JTlRfTUFTS19QMkVNUFRZCQlCSVQoMjcpCisjZGVmaW5lIERDVV9JTlRfTUFT S19QM0VNUFRZCQlCSVQoMjgpCisjZGVmaW5lIERDVV9JTlRfTUFTS19QNEVNUFRZCQlCSVQoMjkp CisKKyNkZWZpbmUgRENVX0RJVl9SQVRJTwkJCTB4MDA1NAorCisjZGVmaW5lIERDVV9VUERBVEVf TU9ERQkJCTB4MDBjYworI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfTU9ERQkJQklUKDMxKQorI2Rl ZmluZSBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRwkJQklUKDMwKQorCisjZGVmaW5lIERDVV9EQ0ZC X01BWAkJCTB4MzAwCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMSh4KQkJKDB4MjAwICsgKHgp ICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMV9IRUlHSFQoeCkJKCh4KSA8PCAxNikK KyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMV9XSURUSCh4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl8yKHgpCQkoMHgyMDQgKyAoeCkgKiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl8yX1BPU1koeCkJKCh4KSA8PCAxNikKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMl9QT1NYKHgp CSh4KQorCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzMoeCkJCSgweDIwOCArICh4KSAqIDB4NDAp CisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNCh4KQkJKDB4MjBjICsgKHgpICogMHg0MCkKKyNk ZWZpbmUgRENVX0NUUkxERVNDTE5fNF9FTgkJQklUKDMxKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl80X1RJTEVfRU4JQklUKDMwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0RBVEFfU0VMX0NM VVQJQklUKDI5KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1NBRkVUWV9FTglCSVQoMjgpCisj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfVFJBTlMoeCkJKCh4KSA8PCAyMCkKKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fNF9CUFAoeCkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzRfUkxFX0VOCQlCSVQoMTUpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfTFVPRkZTKHgpCSgo eCkgPDwgNCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9CQl9PTgkJQklUKDIpCisjZGVmaW5l IERDVV9DVFJMREVTQ0xOXzRfQUIoeCkJCSh4KQorCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzUo eCkJCSgweDIxMCArICh4KSAqIDB4NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhf Uih4KQkoKHgpIDw8IDE2KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0coeCkJKCh4 KSA8PCA4KQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0IoeCkJKHgpCisKKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fNih4KQkJKDB4MjE0ICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fNl9DS01JTl9SKHgpCSgoeCkgPDwgMTYpCisjZGVmaW5lIERDVV9DVFJMREVT Q0xOXzZfQ0tNSU5fRyh4KQkoKHgpIDw8IDgpCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzZfQ0tN SU5fQih4KQkoeCkKKworI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl83KHgpCQkoMHgyMTggKyAoeCkg KiAweDQwKQorI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl83X1RJTEVfVkVSKHgpCSgoeCkgPDwgMTYp CisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzdfVElMRV9IT1IoeCkJKHgpCisKKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fOCh4KQkJKDB4MjFjICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxE RVNDTE5fOF9GR19GQ09MT1IoeCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOSh4KQkJ KDB4MjIwICsgKHgpICogMHg0MCkKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOV9CR19CQ09MT1Io eCkJKHgpCisKKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMTAoeCkJCSgweDIyNCArICh4KSAqIDB4 NDApCisjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BPU1RfU0tJUCh4KQkoKHgpIDw8IDE2KQor I2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8xMF9QUkVfU0tJUCh4KQkoeCkKKworI2lmZGVmIENPTkZJ R19TT0NfVkY2MTAKKyNkZWZpbmUgRENVX1RPVEFMX0xBWUVSX05VTSAgICAgICAgICAgICA2NAor I2RlZmluZSBEQ1VfTEFZRVJfTlVNX01BWCAgICAgICAgICAgICAgIDYKKyNlbHNlCisjZGVmaW5l IERDVV9UT1RBTF9MQVlFUl9OVU0gICAgICAgICAgICAgMTYKKyNkZWZpbmUgRENVX0xBWUVSX05V TV9NQVggICAgICAgICAgICAgICA0CisjZW5kaWYKKworI2RlZmluZSBGU0xfRENVX1JHQjU2NQkJ CTQKKyNkZWZpbmUgRlNMX0RDVV9SR0I4ODgJCQk1CisjZGVmaW5lIEZTTF9EQ1VfQVJHQjg4ODgJ CTYKKyNkZWZpbmUgRlNMX0RDVV9BUkdCMTU1NQkJMTEKKyNkZWZpbmUgRlNMX0RDVV9BUkdCNDQ0 NAkJMTIKKyNkZWZpbmUgRlNMX0RDVV9ZVVY0MjIJCQkxNAorCisjZGVmaW5lIFRDT05fQ1RSTDEJ CQkweDAwMDAKKyNkZWZpbmUgVENPTl9CWVBBU1NfRU5BQkxFCQlCSVQoMjkpCisKKyNkZWZpbmUg U0NGR19QSVhDTEtDUgkJCTB4MjgKKyNkZWZpbmUgUFhDS19FTkFCTEUJCQlCSVQoMzEpCisjZGVm aW5lIFBYQ0tfRElTQUJMRQkJCTAKKworI2RlZmluZSBEQkcoZm10LCAuLi4pIERSTV9ERUJVRyhm bXQiXG4iLCAjI19fVkFfQVJHU19fKQorCitzdHJ1Y3QgY2xrOworc3RydWN0IGRldmljZTsKK3N0 cnVjdCBkcm1fZGV2aWNlOworCitzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlIHsKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXY7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKwlzdHJ1Y3QgcmVnbWFwICpy ZWdtYXA7CisJc3RydWN0IHJlZ21hcCAqdGNvbl9yZWdtYXA7CisJdW5zaWduZWQgaW50IGlycTsK KwlzdHJ1Y3QgY2xrICpjbGs7CisJc3RydWN0IGNsayAqdGNvbl9jbGs7CisJLypwcm90ZWN0cyBo YXJkd2FyZSByZWdpc3RlciovCisJc3BpbmxvY2tfdCBpcnFfbG9jazsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGRldjsKKwlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXY7CisJc3RydWN0IGRybV9j cnRjIGNydGM7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CisJc3RydWN0IGZzbF9kY3Vf ZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cit9OworCit2b2lkIGZzbF9kY3VfZmJkZXZfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKworI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1fRFJWX0hf XyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZmJk ZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhlZjBlMQotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKQEAgLTAsMCArMSwy NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMu CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAq LworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxw ZXIuaD4KKworI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgorCisvKiBpbml0aWFsaXplIGZi ZGV2IGhlbHBlciAqLwordm9pZCBmc2xfZGN1X2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9k cnZkYXRhKGRldi0+ZGV2KTsKKworCWZzbF9kZXYtPmZiZGV2ID0gZHJtX2ZiZGV2X2NtYV9pbml0 KGRldiwgMjQsIDEsIDEpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9r bXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGUyMWM2OQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jCkBA IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1 Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgor I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorCisjaW5jbHVkZSAiZnNsX2RjdV9k cm1fY3J0Yy5oIgorI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgorI2luY2x1ZGUg ImZzbF9kY3VfZHJtX2Rydi5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZp Z19mdW5jcyBmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKKwkuZmJfY3JlYXRlID0g ZHJtX2ZiX2NtYV9jcmVhdGUsCisJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2No ZWNrLAorCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAorfTsKKwor aW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpm c2xfZGV2KQoreworCWRybV9tb2RlX2NvbmZpZ19pbml0KGZzbF9kZXYtPmRkZXYpOworCisJZnNs X2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKKwlmc2xfZGV2LT5kZGV2LT5t b2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsKKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5t YXhfd2lkdGggPSAyMDMxOworCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQg PSAyMDQ3OworCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLmZ1bmNzID0gJmZzbF9kY3VfZHJt X21vZGVfY29uZmlnX2Z1bmNzOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGZzbF9kZXYt PmRkZXYpOworCWZzbF9kY3VfZHJtX2NydGNfY3JlYXRlKGZzbF9kZXYpOworCWZzbF9kY3VfZHJt X2VuY29kZXJfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5jcnRjKTsKKwlmc2xfZGN1X2RybV9j b25uZWN0b3JfY3JlYXRlKGZzbF9kZXYsICZmc2xfZGV2LT5lbmNvZGVyKTsKKwlkcm1fbW9kZV9j b25maWdfcmVzZXQoZnNsX2Rldi0+ZGRldik7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYjliZDI5OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wt ZGN1L2ZzbF9kY3VfZHJtX2ttcy5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEZyZWVzY2FsZSBEQ1Ug ZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisK KyNpZm5kZWYgX19GU0xfRENVX0RSTV9LTVNfSF9fCisjZGVmaW5lIF9fRlNMX0RDVV9EUk1fS01T X0hfXworCitpbnQgZnNsX2RjdV9kcm1fbW9kZXNldF9pbml0KHN0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2UgKmZzbF9kZXYpOworCisjZW5kaWYgLyogX19GU0xfRENVX0RSTV9LTVNfSF9fICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Y4NzljCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYwpAQCAtMCwwICsxLDE5NSBAQAor LyoKKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgor ICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRy bS9kcm1fZmJfY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorCisjaW5jbHVkZSAi ZnNsX2RjdV9kcm1fZHJ2LmgiCisjaW5jbHVkZSAiZnNsX2RjdV9kcm1fa21zLmgiCisjaW5jbHVk ZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKKworI2RlZmluZSB0b19mc2xfZGN1X3BsYW5lKHBsYW5l KSBcCisJY29udGFpbmVyX29mKHBsYW5lLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUsIHBsYW5l KQorCitzdGF0aWMgaW50Citmc2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCSAg ICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKQoreworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZAorZnNsX2RjdV9kcm1fcGxhbmVfY2xlYW51cF9mYihzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJ CQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKK3sKK30KKwor c3RhdGljIGludCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCisJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19kaXNhYmxl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKm9sZF9zdGF0ZSkKK3sKK30KKwordm9pZCBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfdXBk YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYg PSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0 ZSA9IHBsYW5lLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5z dGF0ZS0+ZmI7CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqZ2VtOworCXN0cnVjdCBmc2xf ZGN1X2RybV9wbGFuZSAqZnNsX3BsYW5lID0gdG9fZnNsX2RjdV9wbGFuZShwbGFuZSk7CisJdTMy IGluZGV4LCBhbHBoYSwgYnBwOworCisJaWYgKCFmYikKKwkJcmV0dXJuOworCisJaW5kZXggPSBm c2xfcGxhbmUtPmluZGV4OworCWdlbSA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIDApOwor CisJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToK KwkJYnBwID0gRlNMX0RDVV9SR0I1NjU7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2Fz ZSBEUk1fRk9STUFUX1JHQjg4ODoKKwkJYnBwID0gRlNMX0RDVV9SR0I4ODg7CisJCWFscGhhID0g MHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCQlicHAgPSBGU0xf RENVX0FSR0I4ODg4OworCQlhbHBoYSA9IDB4ZmY7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1B VF9CR1JBNDQ0NDoKKwkJYnBwID0gRlNMX0RDVV9BUkdCNDQ0NDsKKwkJYWxwaGEgPSAweGZmOwor CQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfQVJHQjE1NTU6CisJCWJwcCA9IEZTTF9EQ1VfQVJH QjE1NTU7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1lVVjQy MjoKKwkJYnBwID0gRlNMX0RDVV9ZVVY0MjI7CisJCWFscGhhID0gMHhmZjsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJcmV0dXJuOworCX0KKworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9DVFJMREVTQ0xOXzEoaW5kZXgpLAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzFfSEVJR0hU KHN0YXRlLT5jcnRjX2gpIHwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8xX1dJRFRIKHN0YXRlLT5j cnRjX3cpKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8y KGluZGV4KSwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8yX1BPU1koc3RhdGUtPmNydGNfeSkgfAor CQkgICAgIERDVV9DVFJMREVTQ0xOXzJfUE9TWChzdGF0ZS0+Y3J0Y194KSk7CisJcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMyhpbmRleCksIGdlbS0+cGFkZHIp OworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzQoaW5kZXgp LAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzRfRU4gfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzRf VFJBTlMoYWxwaGEpIHwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X0JQUChicHApIHwKKwkJICAg ICBEQ1VfQ1RSTERFU0NMTl80X0FCKDApKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFw LCBEQ1VfQ1RSTERFU0NMTl81KGluZGV4KSwKKwkJICAgICBEQ1VfQ1RSTERFU0NMTl81X0NLTUFY X1IoMHhGRikgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfRygweEZGKSB8CisJCSAg ICAgRENVX0NUUkxERVNDTE5fNV9DS01BWF9CKDB4RkYpKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl82KGluZGV4KSwKKwkJICAgICBEQ1VfQ1RSTERFU0NM Tl82X0NLTUlOX1IoMCkgfAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fRygwKSB8CisJ CSAgICAgRENVX0NUUkxERVNDTE5fNl9DS01JTl9CKDApKTsKKwlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl83KGluZGV4KSwgMCk7CisJcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fOChpbmRleCksCisJCSAgICAgRENVX0NUUkxE RVNDTE5fOF9GR19GQ09MT1IoMCkpOworCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERD VV9DVFJMREVTQ0xOXzkoaW5kZXgpLAorCQkgICAgIERDVV9DVFJMREVTQ0xOXzlfQkdfQkNPTE9S KDApKTsKKwlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZnNsX2Rldi0+bnAsICJmc2wsbHMx MDIxYS1kY3UiKSkKKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVND TE5fMTAoaW5kZXgpLAorCQkJICAgICBEQ1VfQ1RSTERFU0NMTl8xMF9QT1NUX1NLSVAoMCkgfAor CQkJICAgICBEQ1VfQ1RSTERFU0NMTl8xMF9QUkVfU0tJUCgwKSk7CisJcmVnbWFwX3VwZGF0ZV9i aXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAorCQkJICAgRENVX01PREVfRENVX01P REVfTUFTSywKKwkJCSAgIERDVV9NT0RFX0RDVV9NT0RFKERDVV9NT0RFX05PUk1BTCkpOworCXJl Z21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9N T0RFX1JFQURSRUcpOworfQorCitpbnQgZnNsX2RjdV9kcm1fcGxhbmVfZGlzYWJsZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlyZXR1cm4gMDsKK30KKwordm9pZCBmc2xfZGN1X2RybV9w bGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCWZzbF9kY3VfZHJtX3Bs YW5lX2Rpc2FibGUocGxhbmUpOworCWRybV9wbGFuZV9jbGVhbnVwKHBsYW5lKTsKK30KKworc3Rh dGljIGNvbnN0IHVpbnQzMl90IGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHNbXSA9IHsKKwlEUk1f Rk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX1JHQjg4OCwKKwlEUk1fRk9STUFUX0FSR0I4ODg4 LAorCURSTV9GT1JNQVRfQVJHQjQ0NDQsCisJRFJNX0ZPUk1BVF9BUkdCMTU1NSwKKwlEUk1fRk9S TUFUX1lVVjQyMiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGZz bF9kY3VfZHJtX3BsYW5lX2Z1bmNzID0geworCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hl bHBlcl91cGRhdGVfcGxhbmUsCisJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9k aXNhYmxlX3BsYW5lLAorCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveSwKKwku YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0 ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFu ZV9kZXN0cm95X3N0YXRlLAorCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGZzbF9k Y3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKKwkucHJlcGFyZV9mYiA9IGZzbF9kY3VfZHJt X3BsYW5lX3ByZXBhcmVfZmIsCisJLmNsZWFudXBfZmIgPSBmc2xfZGN1X2RybV9wbGFuZV9jbGVh bnVwX2ZiLAorCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfY2hlY2ss CisJLmF0b21pY191cGRhdGUgPSBmc2xfZGN1X2RybV9wbGFuZV9hdG9taWNfdXBkYXRlLAorCS5h dG9taWNfZGlzYWJsZSA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY19kaXNhYmxlLAorfTsKKwor c3RydWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1fcHJpbWFyeV9jcmVhdGVfcGxhbmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5OworCWludCBy ZXQ7CisKKwlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnByaW1hcnkpLCBHRlBfS0VSTkVMKTsK KwlpZiAoIXByaW1hcnkpIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGFsbG9jYXRlIHBy aW1hcnkgcGxhbmVcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBwb3NzaWJsZV9jcnRj J3Mgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgYnkgY3J0Y19pbml0ICovCisJcmV0ID0gZHJtX3Vu aXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcHJpbWFyeSwgMCwKKwkJCQkgICAgICAgJmZzbF9kY3Vf ZHJtX3BsYW5lX2Z1bmNzLAorCQkJCSAgICAgICBmc2xfZGN1X2RybV9wbGFuZV9mb3JtYXRzLAor CQkJCSAgICAgICBBUlJBWV9TSVpFKGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHMpLAorCQkJCSAg ICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKHByaW1h cnkpOworCQlwcmltYXJ5ID0gTlVMTDsKKwl9CisJZHJtX3BsYW5lX2hlbHBlcl9hZGQocHJpbWFy eSwgJmZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gcHJpbWFyeTsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3BsYW5l LmggYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYmZhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCkBAIC0wLDAgKzEsMjMg QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgor ICoKKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19GU0xfRENVX0RSTV9QTEFORV9IX18KKyNk ZWZpbmUgX19GU0xfRENVX0RSTV9QTEFORV9IX18KKworc3RydWN0IGZzbF9kY3VfZHJtX2Rldmlj ZTsKK3N0cnVjdCBmc2xfZGN1X2RybV9wbGFuZSB7CisJc3RydWN0IGRybV9wbGFuZSBwbGFuZTsK Kwl1bnNpZ25lZCBpbnQgaW5kZXg7Cit9OworCitzdHJ1Y3QgZHJtX3BsYW5lICpmc2xfZGN1X2Ry bV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKworI2VuZGlm IC8qIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fICovCi0tIAoyLjEuMC4yNy5nOTZkYjMyNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK