From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFCv2 02/14] drm/i915/gvt: Introduce the basic architecture of GVT-g Date: Thu, 18 Feb 2016 19:42:09 +0800 Message-ID: <1455795741-3487-3-git-send-email-zhi.a.wang@intel.com> References: <1455795741-3487-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id D4E1C6EB68 for ; Thu, 18 Feb 2016 11:44:52 +0000 (UTC) In-Reply-To: <1455795741-3487-1-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com, zhiyuan.lv@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSB2ZXJ5IGJhc2ljIGZyYW1ld29yayBvZiBHVlQtZyBk ZXZpY2UgbW9kZWwsCmluY2x1ZGVzIGJhc2ljIHByb3RvdHlwZXMsIGRlZmluaXRpb25zLCBpbml0 aWFsaXphdGlvbi4KCnYyOgotIEludHJvZHVjZSBpOTE1X2d2dC5jLgpJdCdzIG5lY2Vzc2FyeSB0 byBpbnRyb2R1Y2UgdGhlIHN0dWJzIGJldHdlZW4gaTkxNSBkcml2ZXIgYW5kIEdWVC1nIGhvc3Qs CmFzIEdWVC1nIGNvbXBvbmVudHMgaXMgY29uZmlndXJhYmxlIGluIGtlcm5lbCBjb25maWcuIFdo ZW4gZGlzYWJsZWQsIHRoZQpzdHVicyBoZXJlIGRvIG5vdGhpbmcuCgpUYWtlIEpvb25hcydzIGNv bW1lbnRzOgotIFJlcGxhY2UgYm9vbGVhbiByZXR1cm4gdmFsdWUgd2l0aCBpbnQuCi0gUmVwbGFj ZSBjdXN0b21pemVkIGluZm8vd2Fybi9kZWJ1ZyBtYWNyb3Mgd2l0aCBEUk0gbWFjcm9zLgotIERv Y3VtZW50IGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucyBsaWtlIGk5MTUuCi0gUmVtb3ZlIGVtcHR5 IGFuZCB1bnVzZWQgZnVuY3Rpb25zLgotIFJlcGxhY2UgbWFnaWMgbnVtYmVyIHdpdGggbWFyY29z LgotIFNldCBHVlQtZyBpbiBrZXJuZWwgY29uZmlnIHRvICJuIiBieSBkZWZhdWx0LgoKU2lnbmVk LW9mZi1ieTogWmhpIFdhbmcgPHpoaS5hLndhbmdAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcgICAgICAgICB8ICAxNSArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmls ZSAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaCAgICAgfCAgNTcg KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYyAgICAgICB8IDM5MyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2 dC5oICAgICAgIHwgMTAwICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVy Y2FsbC5oIHwgIDMwICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oICAgICAgIHwg IDM0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jICAgIHwgIDMyICsrKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oICAgIHwgIDM0ICsrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3JlZy5oICAgICAgIHwgIDM0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYyAgICAgIHwgIDE0ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Z0LmMgICAgICB8 ICA5MyArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Z0LmggICAgICB8ICA0 OSArKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgOTA0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9tcHQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9wYXJhbXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9wYXJhbXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9yZWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Z0 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d2dC5oCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L0tjb25maWcKaW5kZXggNGM1OTc5My4uMDgyZTc3ZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmln CkBAIC00NSwzICs0NSwxOCBAQCBjb25maWcgRFJNX0k5MTVfUFJFTElNSU5BUllfSFdfU1VQUE9S VAogCSAgb3B0aW9uIGNoYW5nZXMgdGhlIGRlZmF1bHQgZm9yIHRoYXQgbW9kdWxlIG9wdGlvbi4K IAogCSAgSWYgaW4gZG91YnQsIHNheSAiTiIuCisKK2NvbmZpZyBEUk1fSTkxNV9HVlQKKyAgICAg ICAgdHJpc3RhdGUgIkdWVC1nIGhvc3QgZHJpdmVyIgorICAgICAgICBkZXBlbmRzIG9uIERSTV9J OTE1CisgICAgICAgIGRlZmF1bHQgbgorICAgICAgICBoZWxwCisgICAgICAgICAgRW5hYmxpbmcg R1ZULWcgbWVkaWF0ZWQgZ3JhcGhpY3MgcGFzc3Rocm91Z2ggdGVjaG5pcXVlIGZvciBJbnRlbCBp OTE1CisgICAgICAgICAgYmFzZWQgaW50ZWdyYXRlZCBncmFwaGljcyBjYXJkLiBXaXRoIEdWVC1n LCBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgb25lCisgICAgICAgICAgaW50ZWdyYXRlZCBpOTE1IGRl dmljZSBzaGFyZWQgYnkgbXVsdGlwbGUgVk1zLiBQZXJmb3JtYW5jZSBjcml0aWNhbAorICAgICAg ICAgIG9wdGVyYXRpb25zIHN1Y2ggYXMgYXBwZXJ0dXJlIGFjY2Vzc2VzIGFuZCByaW5nIGJ1ZmZl ciBvcGVyYXRpb25zCisgICAgICAgICAgYXJlIHBhc3MtdGhyb3VnaGVkIHRvIFZNLCB3aXRoIGEg bWluaW1hbCBzZXQgb2YgY29uZmxpY3RpbmcgcmVzb3VyY2VzCisgICAgICAgICAgKGUuZy4gZGlz cGxheSBzZXR0aW5ncykgbWVkaWF0ZWQgYnkgdkdUIGRyaXZlci4gVGhlIGJlbmVmaXQgb2YgdkdU CisgICAgICAgICAgaXMgb24gYm90aCB0aGUgcGVyZm9ybWFuY2UsIGdpdmVuIHRoYXQgZWFjaCBW TSBjb3VsZCBkaXJlY3RseSBvcGVyYXRlCisgICAgICAgICAgaXRzIGFwZXJ0dXJlIHNwYWNlIGFu ZCBzdWJtaXQgY29tbWFuZHMgbGlrZSBydW5uaW5nIG9uIG5hdGl2ZSwgYW5kCisgICAgICAgICAg dGhlIGZlYXR1cmUgY29tcGxldGVuZXNzLCBnaXZlbiB0aGF0IGEgdHJ1ZSBHRU4gaGFyZHdhcmUg aXMgZXhwb3NlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMDg1MWRlMDcuLmM2NTAyNmMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCkBAIC05MSw2ICs5MSw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3 Lm8gXAogCSAgaW50ZWxfc2R2by5vIFwKIAkgIGludGVsX3R2Lm8KIAorb2JqLSQoQ09ORklHX0RS TV9JOTE1X0dWVCkgICs9IGk5MTVfZ3Z0Lm8gZ3Z0LworCiAjIHZpcnR1YWwgZ3B1IGNvZGUKIGk5 MTUteSArPSBpOTE1X3ZncHUubwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5MzA1ZgotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZQpAQCAtMCwwICsxLDUgQEAKK0dWVF9TT1VS Q0UgOj0gZ3Z0Lm8gcGFyYW1zLm8KKworY2NmbGFncy15ICAgICAgICAgICAgICAgICAgICAgICs9 IC1JJChzcmMpIC1JJChzcmMpLy4uIC1XYWxsIC1XZXJyb3IgLVduby11bnVzZWQtZnVuY3Rpb24K K2k5MTVfZ3Z0LXkgICAgICAgICAgICAgICAgICAgICA6PSAkKEdWVF9TT1VSQ0UpCitvYmotJChD T05GSUdfRFJNX0k5MTVfR1ZUKSAgICAgKz0gaTkxNV9ndnQubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVi dWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQ3ZjI4Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKQEAgLTAsMCArMSw1 NyBAQAorLyoKKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNP RlRXQVJFLgorICovCisKKyNpZm5kZWYgX19HVlRfREVCVUdfSF9fCisjZGVmaW5lIF9fR1ZUX0RF QlVHX0hfXworCisjZGVmaW5lIGd2dF9pbmZvKGZtdCwgYXJncy4uLikgXAorCURSTV9JTkZPKCJn dnQ6ICJmbXQiXG4iLCAjI2FyZ3MpCisKKyNkZWZpbmUgZ3Z0X2VycihmbXQsIGFyZ3MuLi4pIFwK KwlEUk1fRVJST1IoImd2dDogImZtdCJcbiIsICMjYXJncykKKworI2RlZmluZSBndnRfd2Fybihj b25kaXRpb24sIGZtdCwgYXJncy4uLikgXAorCVdBUk4oKGNvbmRpdGlvbiksICJndnQ6ICJmbXQi XG4iLCAjI2FyZ3MpCisKKyNkZWZpbmUgZ3Z0X3dhcm5fb25jZShjb25kaXRpb24sIGZtdCwgYXJn cy4uLikgXAorCVdBUk5fT05DRSgoY29uZGl0aW9uKSwgImd2dDogImZtdCJcbiIsICMjYXJncykK KworI2RlZmluZSBndnRfZGJnKGxldmVsLCBmbXQsIGFyZ3MuLi4pIFwKKwlEUk1fREVCVUdfRFJJ VkVSKCJndnQ6ICJmbXQiXG4iLCAjI2FyZ3MpCisKK2VudW0geworCUdWVF9EQkdfQ09SRSA9ICgx IDw8IDApLAorCUdWVF9EQkdfTU0gPSAoMSA8PCAxKSwKKwlHVlRfREJHX0lSUSA9ICgxIDw8IDIp LAorfTsKKworI2RlZmluZSBndnRfZGJnX2NvcmUoZm10LCBhcmdzLi4uKSBcCisJZ3Z0X2RiZyhH VlRfREJHX0NPUkUsIGZtdCwgIyNhcmdzKQorCisjZGVmaW5lIGd2dF9kYmdfbW0oZm10LCBhcmdz Li4uKSBcCisJZ3Z0X2RiZyhHVlRfREJHX01NLCBmbXQsICMjYXJncykKKworI2RlZmluZSBndnRf ZGJnX2lycShmbXQsIGFyZ3MuLi4pIFwKKwlndnRfZGJnKEdWVF9EQkdfSVJRLCBmbXQsICMjYXJn cykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNTJjZmEzMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9ndnQuYwpAQCAtMCwwICsxLDM5MyBAQAorLyoKKyAqIENvcHlyaWdodChjKSAyMDEx LTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICog T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi94ZW4uaD4KKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFk Lmg+CisKKyNpbmNsdWRlICJndnQuaCIKKworc3RydWN0IGd2dF9ob3N0IGd2dF9ob3N0OworCitz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN1cHBvcnRlZF9oeXBlcnZpc29yc1tdID0geworCVtH VlRfSFlQRVJWSVNPUl9UWVBFX1hFTl0gPSAiWGVuIEh5cGVydmlzb3IiLAorCVtHVlRfSFlQRVJW SVNPUl9UWVBFX0tWTV0gPSAiS1ZNIiwKK307CisKK3N0YXRpYyBpbnQgZ3Z0X2luaXRfaG9zdCh2 b2lkKQoreworCXN0cnVjdCBndnRfaG9zdCAqaG9zdCA9ICZndnRfaG9zdDsKKworCWlmICghZ3Z0 LmVuYWJsZSkgeworCQlndnRfZGJnX2NvcmUoIkdWVC1nIGhhcyBiZWVuIGRpc2FibGVkIGJ5IGtl cm5lbCBwYXJhbWV0ZXIiKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGhvc3QtPmlu aXRpYWxpemVkKSB7CisJCWd2dF9lcnIoIkdWVC1nIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6 ZWQhIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFhlbiBET00gVSAqLworCWlmICh4 ZW5fZG9tYWluKCkgJiYgIXhlbl9pbml0aWFsX2RvbWFpbigpKQorCQlyZXR1cm4gLUVOT0RFVjsK KworCWlmICh4ZW5faW5pdGlhbF9kb21haW4oKSkgeworCQkvKiBYZW4gRG9tMCAqLworCQlob3N0 LT5rZG0gPSB0cnlfdGhlbl9yZXF1ZXN0X21vZHVsZSgKKwkJCQlzeW1ib2xfZ2V0KHhlbmd0X2tk bSksICJ4ZW5ndCIpOworCQlob3N0LT5oeXBlcnZpc29yX3R5cGUgPSBHVlRfSFlQRVJWSVNPUl9U WVBFX1hFTjsKKwl9IGVsc2UgeworCQkvKiBub3QgaW4gWGVuLiBUcnkgS1ZNR1QgKi8KKwkJaG9z dC0+a2RtID0gdHJ5X3RoZW5fcmVxdWVzdF9tb2R1bGUoCisJCQkJc3ltYm9sX2dldChrdm1ndF9r ZG0pLCAia3ZtIik7CisJCWhvc3QtPmh5cGVydmlzb3JfdHlwZSA9IEdWVF9IWVBFUlZJU09SX1RZ UEVfS1ZNOworCX0KKworCWlmICghaG9zdC0+a2RtKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlm ICghaHlwZXJ2aXNvcl9kZXRlY3RfaG9zdCgpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWd2dF9p bmZvKCJSdW5uaW5nIHdpdGggaHlwZXJ2aXNvciAlcyBpbiBob3N0IG1vZGUiLAorCQkJc3VwcG9y dGVkX2h5cGVydmlzb3JzW2hvc3QtPmh5cGVydmlzb3JfdHlwZV0pOworCisJaWRyX2luaXQoJmhv c3QtPmRldmljZV9pZHIpOworCW11dGV4X2luaXQoJmhvc3QtPmRldmljZV9pZHJfbG9jayk7CisK Kwlob3N0LT5pbml0aWFsaXplZCA9IHRydWU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg aW5pdF9kZXZpY2VfaW5mbyhzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZ3Z0 X2RldmljZV9pbmZvICppbmZvID0gJnBkZXYtPmRldmljZV9pbmZvOworCisJaWYgKCFJU19CUk9B RFdFTEwocGRldi0+ZGV2X3ByaXYpKSB7CisJCURSTV9ERUJVR19EUklWRVIoIlVuc3VwcG9ydGVk IEdFTiBkZXZpY2UiKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJaWYgKElTX0JST0FEV0VM TChwZGV2LT5kZXZfcHJpdikpIHsKKwkJaW5mby0+bWF4X2d0dF9nbV9zeiA9ICgxVUxMIDw8IDMy KTsgLyogNEdCICovCisJCS8qCisJCSAqIFRoZSBsYXlvdXQgb2YgQkFSMCBpbiBCRFc6CisJCSAq IHw8IC0gTU1JTyAyTUIgLT58PC0gUmVzZXJ2ZWQgNk1CIC0+fDwtIE1BWCBHVFQgOE1CLT58CisJ CSAqCisJCSAqIEdUVCBvZmZzZXQgaW4gQkFSMCBzdGFydHMgZnJvbSA4TUIgdG8gMTZNQiwgYW5k CisJCSAqIFdoYXRldmVyIEdUVCBzaXplIGlzIGNvbmZpZ3VyZWQgaW4gQklPUywKKwkJICogdGhl IHNpemUgb2YgQkFSMCBpcyBhbHdheXMgMTZNQi4gVGhlIGFjdHVhbCBjb25maWd1cmVkCisJCSAq IEdUVCBzaXplIGNhbiBiZSBmb3VuZCBpbiBHTUNIX0NUUkwuCisJCSAqLworCQlpbmZvLT5ndHRf c3RhcnRfb2Zmc2V0ID0gKDFVTCA8PCAyMyk7IC8qIDhNQiAqLworCQlpbmZvLT5tYXhfZ3R0X3Np emUgPSAoMVVMIDw8IDIzKTsgLyogOE1CICovCisJCWluZm8tPmd0dF9lbnRyeV9zaXplID0gODsK KwkJaW5mby0+Z3R0X2VudHJ5X3NpemVfc2hpZnQgPSAzOworCQlpbmZvLT5nbWFkcl9ieXRlc19p bl9jbWQgPSA4OworCQlpbmZvLT5tbWlvX3NpemUgPSAyICogMTAyNCAqIDEwMjQ7IC8qIDJNQiAq LworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpbml0X2luaXRpYWxfY2ZnX3Nw YWNlX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBwY2lfZGV2ICpw Y2lfZGV2ID0gcGRldi0+ZGV2X3ByaXYtPmRldi0+cGRldjsKKwlpbnQgaTsKKworCWd2dF9kYmdf Y29yZSgiaW5pdCBpbml0aWFsIGNmZyBzcGFjZSwgaWQgJWQiLCBwZGV2LT5pZCk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgR1ZUX0NGR19TUEFDRV9TWjsgaSArPSA0KQorCQlwY2lfcmVhZF9jb25maWdf ZHdvcmQocGNpX2RldiwgaSwKKwkJCQkodTMyICopJnBkZXYtPmluaXRpYWxfY2ZnX3NwYWNlW2ld KTsKKworCWZvciAoaSA9IDA7IGkgPCBHVlRfQkFSX05VTTsgaSsrKSB7CisJCXBkZXYtPmJhcl9z aXplW2ldID0gcGNpX3Jlc291cmNlX2xlbihwY2lfZGV2LCBpICogMik7CisJCWd2dF9kYmdfY29y ZSgiYmFyICVkIHNpemU6ICVsbHgiLCBpLCBwZGV2LT5iYXJfc2l6ZVtpXSk7CisJfQorfQorCitz dGF0aWMgdm9pZCBjbGVhbl9pbml0aWFsX21taW9fc3RhdGUoc3RydWN0IHBndF9kZXZpY2UgKnBk ZXYpCit7CisJaWYgKHBkZXYtPmd0dG1taW9fdmEpIHsKKwkJaW91bm1hcChwZGV2LT5ndHRtbWlv X3ZhKTsKKwkJcGRldi0+Z3R0bW1pb192YSA9IE5VTEw7CisJfQorCisJaWYgKHBkZXYtPmdtYWRy X3ZhKSB7CisJCWlvdW5tYXAocGRldi0+Z21hZHJfdmEpOworCQlwZGV2LT5nbWFkcl92YSA9IE5V TEw7CisJfQorfQorCitzdGF0aWMgaW50IGluaXRfaW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBw Z3RfZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBndnRfZGV2aWNlX2luZm8gKmluZm8gPSAmcGRl di0+ZGV2aWNlX2luZm87CisKKwl1NjQgYmFyMCwgYmFyMTsKKwlpbnQgcmM7CisKKwlndnRfZGJn X2NvcmUoImluaXQgaW5pdGlhbCBtbWlvIHN0YXRlLCBpZCAlZCIsIHBkZXYtPmlkKTsKKworCWJh cjAgPSAqKHU2NCAqKSZwZGV2LT5pbml0aWFsX2NmZ19zcGFjZVtHVlRfUkVHX0NGR19TUEFDRV9C QVIwXTsKKwliYXIxID0gKih1NjQgKikmcGRldi0+aW5pdGlhbF9jZmdfc3BhY2VbR1ZUX1JFR19D RkdfU1BBQ0VfQkFSMV07CisKKwlwZGV2LT5ndHRtbWlvX2Jhc2UgPSBiYXIwICYgfjB4ZjsKKwlw ZGV2LT5yZWdfbnVtID0gaW5mby0+bW1pb19zaXplIC8gNDsKKwlwZGV2LT5nbWFkcl9iYXNlID0g YmFyMSAmIH4weGY7CisKKwlwZGV2LT5ndHRtbWlvX3ZhID0gaW9yZW1hcChwZGV2LT5ndHRtbWlv X2Jhc2UsIHBkZXYtPmJhcl9zaXplWzBdKTsKKwlpZiAoIXBkZXYtPmd0dG1taW9fdmEpIHsKKwkJ Z3Z0X2VycigiZmFpbCB0byBtYXAgR1RUTU1JTyBCQVIuIik7CisJCXJldHVybiAtRUZBVUxUOwor CX0KKworCXBkZXYtPmdtYWRyX3ZhID0gaW9yZW1hcChwZGV2LT5nbWFkcl9iYXNlLCBwZGV2LT5i YXJfc2l6ZVsyXSk7CisJaWYgKCFwZGV2LT5nbWFkcl92YSkgeworCQlndnRfZXJyKCJmYWlsIHRv IG1hcCBHTUFEUiBCQVIuIik7CisJCXJjID0gLUVGQVVMVDsKKwkJZ290byBlcnI7CisJfQorCisJ Z3Z0X2RiZ19jb3JlKCJiYXIwOiAweCVsbHgsIGJhcjE6IDB4JWxseCIsIGJhcjAsIGJhcjEpOwor CWd2dF9kYmdfY29yZSgibW1pbyBzaXplOiAleCIsIHBkZXYtPm1taW9fc2l6ZSk7CisJZ3Z0X2Ri Z19jb3JlKCJndHRtbWlvOiAweCVsbHgsIGdtYWRyOiAweCVsbHgiLCBwZGV2LT5ndHRtbWlvX2Jh c2UsCisJCQlwZGV2LT5nbWFkcl9iYXNlKTsKKwlndnRfZGJnX2NvcmUoImd0dG1taW9fdmE6ICVw IiwgcGRldi0+Z3R0bW1pb192YSk7CisJZ3Z0X2RiZ19jb3JlKCJnbWFkcl92YTogJXAiLCBwZGV2 LT5nbWFkcl92YSk7CisKKwlyZXR1cm4gMDsKK2VycjoKKwljbGVhbl9pbml0aWFsX21taW9fc3Rh dGUocGRldik7CisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGd2dF9zZXJ2aWNlX3RocmVh ZCh2b2lkICpkYXRhKQoreworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gKHN0cnVjdCBwZ3Rf ZGV2aWNlICopZGF0YTsKKwlpbnQgcjsKKworCWd2dF9kYmdfY29yZSgic2VydmljZSB0aHJlYWQg c3RhcnQsIHBndCAlZCIsIHBkZXYtPmlkKTsKKworCXdoaWxlICgha3RocmVhZF9zaG91bGRfc3Rv cCgpKSB7CisJCXIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUocGRldi0+c2VydmljZV90aHJl YWRfd3EsCisJCQkJa3RocmVhZF9zaG91bGRfc3RvcCgpIHx8IHBkZXYtPnNlcnZpY2VfcmVxdWVz dCk7CisKKwkJaWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSkKKwkJCWJyZWFrOworCisJCWlmIChn dnRfd2Fybl9vbmNlKHIsCisJCQkic2VydmljZSB0aHJlYWQgaXMgd2FrZW4gdXAgYnkgdW5leHBl Y3RlZCBzaWduYWwuIikpCisJCQljb250aW51ZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgY2xlYW5fc2VydmljZV90aHJlYWQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7 CisJaWYgKHBkZXYtPnNlcnZpY2VfdGhyZWFkKSB7CisJCWt0aHJlYWRfc3RvcChwZGV2LT5zZXJ2 aWNlX3RocmVhZCk7CisJCXBkZXYtPnNlcnZpY2VfdGhyZWFkID0gTlVMTDsKKwl9Cit9CisKK3N0 YXRpYyBpbnQgaW5pdF9zZXJ2aWNlX3RocmVhZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKK3sK Kwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZwZGV2LT5zZXJ2aWNlX3RocmVhZF93cSk7CisKKwlwZGV2 LT5zZXJ2aWNlX3RocmVhZCA9IGt0aHJlYWRfcnVuKGd2dF9zZXJ2aWNlX3RocmVhZCwKKwkJCXBk ZXYsICJndnRfc2VydmljZV90aHJlYWQlZCIsIHBkZXYtPmlkKTsKKworCWlmICghcGRldi0+c2Vy dmljZV90aHJlYWQpIHsKKwkJZ3Z0X2VycigiZmFpbCB0byBzdGFydCBzZXJ2aWNlIHRocmVhZC4i KTsKKwkJcmV0dXJuIC1FTk9TUEM7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IGNsZWFuX3BndF9kZXZpY2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7CisJY2xlYW5fc2Vy dmljZV90aHJlYWQocGRldik7CisJY2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpOworfQor CitzdGF0aWMgaW50IGluaXRfcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJjOworCisJcmMgPSBp bml0X2RldmljZV9pbmZvKHBkZXYpOworCWlmIChyYykKKwkJcmV0dXJuIHJjOworCisJaW5pdF9p bml0aWFsX2NmZ19zcGFjZV9zdGF0ZShwZGV2KTsKKworCXJjID0gaW5pdF9pbml0aWFsX21taW9f c3RhdGUocGRldik7CisJaWYgKHJjKQorCQlnb3RvIGVycjsKKworCXJjID0gaW5pdF9zZXJ2aWNl X3RocmVhZChwZGV2KTsKKwlpZiAocmMpCisJCWdvdG8gZXJyOworCisJcmV0dXJuIDA7CitlcnI6 CisJY2xlYW5fcGd0X2RldmljZShwZGV2KTsKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQg cG9zdF9pbml0X3BndF9kZXZpY2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAq cGRldikKK3sKKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7CisKKwltdXRleF9s b2NrKCZob3N0LT5kZXZpY2VfaWRyX2xvY2spOworCWlkcl9yZW1vdmUoJmhvc3QtPmRldmljZV9p ZHIsIHBkZXYtPmlkKTsKKwltdXRleF91bmxvY2soJmhvc3QtPmRldmljZV9pZHJfbG9jayk7CisK Kwl2ZnJlZShwZGV2KTsKK30KKworc3RhdGljIHN0cnVjdCBwZ3RfZGV2aWNlICphbGxvY19wZ3Rf ZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgZ3Z0 X2hvc3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7CisJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSBOVUxM OworCisJcGRldiA9IHZ6YWxsb2Moc2l6ZW9mKCpwZGV2KSk7CisJaWYgKCFwZGV2KQorCQlyZXR1 cm4gTlVMTDsKKworCW11dGV4X2xvY2soJmhvc3QtPmRldmljZV9pZHJfbG9jayk7CisJcGRldi0+ aWQgPSBpZHJfYWxsb2MoJmhvc3QtPmRldmljZV9pZHIsIHBkZXYsIDAsIDAsIEdGUF9LRVJORUwp OworCW11dGV4X3VubG9jaygmaG9zdC0+ZGV2aWNlX2lkcl9sb2NrKTsKKworCWlmIChwZGV2LT5p ZCA8IDApIHsKKwkJZ3Z0X2VycigiZmFpbCB0byBhbGxvY2F0ZSBwZ3QgZGV2aWNlIGlkLiIpOwor CQlnb3RvIGVycjsKKwl9CisKKwltdXRleF9pbml0KCZwZGV2LT5sb2NrKTsKKwlwZGV2LT5kZXZf cHJpdiA9IGRldl9wcml2OworCWlkcl9pbml0KCZwZGV2LT5pbnN0YW5jZV9pZHIpOworCisJcmV0 dXJuIHBkZXY7CitlcnI6CisJZnJlZV9wZ3RfZGV2aWNlKHBkZXYpOworCXJldHVybiBOVUxMOwor fQorCit2b2lkIGd2dF9kZXN0cm95X3BndF9kZXZpY2Uodm9pZCAqcHJpdmF0ZV9kYXRhKQorewor CXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gKHN0cnVjdCBwZ3RfZGV2aWNlICopcHJpdmF0ZV9k YXRhOworCisJY2xlYW5fcGd0X2RldmljZShwZGV2KTsKKwlmcmVlX3BndF9kZXZpY2UocGRldik7 Cit9CisKKy8qKgorICogZ3Z0X2NyZWF0ZV9wZ3RfZGV2aWNlIC0gY3JlYXRlIGEgR1ZUIHBoeXNp Y2FsIGRldmljZQorICogQGRldjogZHJtIGRldmljZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSwgdG8gY3JlYXRlIGEgcGh5c2ljYWwK KyAqIEdWVCBkZXZpY2UgYW5kIGluaXRpYWxpemUgbmVjZXNzYXJ5IEdWVCBjb21wb25lbnRzIGZv ciBpdC4KKyAqCisgKiBSZXR1cm5zOgorICogcG9pbnRlciB0byB0aGUgcGd0X2RldmljZSBzdHJ1 Y3R1cmUsIE5VTEwgaWYgZmFpbGVkLgorICovCit2b2lkICpndnRfY3JlYXRlX3BndF9kZXZpY2Uo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBwZ3RfZGV2aWNl ICpwZGV2ID0gTlVMTDsKKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7CisJaW50 IHJjOworCisJaWYgKCFob3N0LT5pbml0aWFsaXplZCAmJiAhZ3Z0X2luaXRfaG9zdCgpKSB7CisJ CWd2dF9lcnIoImd2dF9pbml0X2hvc3QgZmFpbCIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwln dnRfZGJnX2NvcmUoImNyZWF0ZSBuZXcgcGd0IGRldmljZSwgaTkxNSBkZXZfcHJpdjogJXAiLCBk ZXZfcHJpdik7CisKKwlwZGV2ID0gYWxsb2NfcGd0X2RldmljZShkZXZfcHJpdik7CisJaWYgKCFw ZGV2KSB7CisJCWd2dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwZ3QgZGV2aWNl LiIpOworCQlnb3RvIGVycjsKKwl9CisKKwlndnRfZGJnX2NvcmUoImluaXQgcGd0IGRldmljZSwg aWQgJWQiLCBwZGV2LT5pZCk7CisKKwlyYyA9IGluaXRfcGd0X2RldmljZShwZGV2LCBkZXZfcHJp dik7CisJaWYgKHJjKSB7CisJCWd2dF9lcnIoImZhaWwgdG8gaW5pdCBwaHlzaWNhbCBkZXZpY2Ug c3RhdGUuIik7CisJCWdvdG8gZXJyOworCX0KKworCWd2dF9kYmdfY29yZSgicGd0IGRldmljZSBj cmVhdGlvbiBkb25lLCBpZCAlZCIsIHBkZXYtPmlkKTsKKworCXJldHVybiBwZGV2OworZXJyOgor CWlmIChwZGV2KSB7CisJCWd2dF9kZXN0cm95X3BndF9kZXZpY2UocGRldik7CisJCXBkZXYgPSBO VUxMOworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworLyoqCisgKiBndnRfcG9zdF9pbml0X3BndF9k ZXZpY2UgLSBwb3N0IGluaXQgYSBHVlQgcGh5c2ljYWwgZGV2aWNlCisgKiBAZGV2OiBkcm0gZGV2 aWNlCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiB0aGUgaW5p dGlhbGl6YXRpb24gc3RhZ2UsIHRvCisgKiBwb3N0LWluaXRpYWxpemUgYSBwaHlzaWNhbCBHVlQg ZGV2aWNlIGFuZCBpbml0aWFsaXplIG5lY2Vzc2FyeQorICogR1ZUIGNvbXBvbmVudHMgcmVseSBv biBpOTE1IGNvbXBvbmVudHMuCisgKgorICogUmV0dXJuczoKKyAqIHplcm8gb24gc3VjY2Vzcywg bm9uLXplcm8gaWYgZmFpbGVkLgorICovCitpbnQgZ3Z0X3Bvc3RfaW5pdF9wZ3RfZGV2aWNlKHZv aWQgKnByaXZhdGVfZGF0YSkKK3sKKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IChzdHJ1Y3Qg cGd0X2RldmljZSAqKXByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAmZ3Z0 X2hvc3Q7CisJaW50IHJjOworCisJaWYgKCFob3N0LT5pbml0aWFsaXplZCkgeworCQlndnRfZXJy KCJndnRfaG9zdCBoYXZlbid0IGJlZW4gaW5pdGlhbGl6ZWQuIik7CisJCXJldHVybiAtRU5PREVW OworCX0KKworCWd2dF9kYmdfY29yZSgicG9zdCBpbml0IHBndCBkZXZpY2UgJWQiLCBwZGV2LT5p ZCk7CisKKwlyYyA9IHBvc3RfaW5pdF9wZ3RfZGV2aWNlKHBkZXYpOworCWlmIChyYykgeworCQln dnRfZXJyKCJmYWlsIHRvIHBvc3QgaW5pdCBwaHlzaWNhbCBkZXZpY2Ugc3RhdGUuIik7CisJCXJl dHVybiByYzsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDUwMTk4Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICog Q29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8K KworI2lmbmRlZiBfR1ZUX0hfCisjZGVmaW5lIF9HVlRfSF8KKworI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCisjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCisKKyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1 ZGUgInBhcmFtcy5oIgorI2luY2x1ZGUgInJlZy5oIgorI2luY2x1ZGUgImh5cGVyY2FsbC5oIgor I2luY2x1ZGUgIm1wdC5oIgorCisjZGVmaW5lIEdWVF9NQVhfVkdQVSA4CisKK2VudW0geworCUdW VF9IWVBFUlZJU09SX1RZUEVfWEVOID0gMCwKKwlHVlRfSFlQRVJWSVNPUl9UWVBFX0tWTSwKK307 CisKK3N0cnVjdCBndnRfaG9zdCB7CisJYm9vbCBpbml0aWFsaXplZDsKKwlpbnQgaHlwZXJ2aXNv cl90eXBlOworCXN0cnVjdCBtdXRleCBkZXZpY2VfaWRyX2xvY2s7CisJc3RydWN0IGlkciBkZXZp Y2VfaWRyOworCXN0cnVjdCBndnRfa2VybmVsX2RtICprZG07Cit9OworCitleHRlcm4gc3RydWN0 IGd2dF9ob3N0IGd2dF9ob3N0OworZXh0ZXJuIHN0cnVjdCBndnRfa2VybmVsX2RtIHhlbmd0X2tk bTsKK2V4dGVybiBzdHJ1Y3QgZ3Z0X2tlcm5lbF9kbSBrdm1ndF9rZG07CisKKy8qIERlc2NyaWJl IHRoZSBsaW1pdGF0aW9uIG9mIEhXLiovCitzdHJ1Y3QgZ3Z0X2RldmljZV9pbmZvIHsKKwl1NjQg bWF4X2d0dF9nbV9zejsKKwl1MzIgZ3R0X3N0YXJ0X29mZnNldDsKKwl1MzIgZ3R0X2VuZF9vZmZz ZXQ7CisJdTMyIG1heF9ndHRfc2l6ZTsKKwl1MzIgZ3R0X2VudHJ5X3NpemU7CisJdTMyIGd0dF9l bnRyeV9zaXplX3NoaWZ0OworCXUzMiBnbWFkcl9ieXRlc19pbl9jbWQ7CisJdTMyIG1taW9fc2l6 ZTsKK307CisKK3N0cnVjdCB2Z3RfZGV2aWNlIHsKKwlpbnQgaWQ7CisJaW50IHZtX2lkOworCXN0 cnVjdCBwZ3RfZGV2aWNlICpwZGV2OworCWJvb2wgd2Fybl91bnRyYWNrOworfTsKKworc3RydWN0 IHBndF9kZXZpY2UgeworCXN0cnVjdCBtdXRleCBsb2NrOworCWludCBpZDsKKworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKKwlzdHJ1Y3QgaWRyIGluc3RhbmNlX2lkcjsKKwor CXN0cnVjdCBndnRfZGV2aWNlX2luZm8gZGV2aWNlX2luZm87CisKKwl1OCBpbml0aWFsX2NmZ19z cGFjZVtHVlRfQ0ZHX1NQQUNFX1NaXTsKKwl1NjQgYmFyX3NpemVbR1ZUX0JBUl9OVU1dOworCisJ dTY0IGd0dG1taW9fYmFzZTsKKwl2b2lkICpndHRtbWlvX3ZhOworCisJdTY0IGdtYWRyX2Jhc2U7 CisJdm9pZCAqZ21hZHJfdmE7CisKKwl1MzIgbW1pb19zaXplOworCXUzMiByZWdfbnVtOworCisJ d2FpdF9xdWV1ZV9oZWFkX3Qgc2VydmljZV90aHJlYWRfd3E7CisJc3RydWN0IHRhc2tfc3RydWN0 ICpzZXJ2aWNlX3RocmVhZDsKKwl1bnNpZ25lZCBsb25nIHNlcnZpY2VfcmVxdWVzdDsKK307CisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjBhNDE4NzQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHly aWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGlu Y2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNp Zm5kZWYgX0dWVF9IWVBFUkNBTExfSF8KKyNkZWZpbmUgX0dWVF9IWVBFUkNBTExfSF8KKworc3Ry dWN0IGd2dF9rZXJuZWxfZG0geworfTsKKworI2VuZGlmIC8qIF9HVlRfSFlQRVJDQUxMX0hfICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbXB0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvbXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZTU5NGJiOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQu aApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfR1ZUX01QVF9IXworI2RlZmlu ZSBfR1ZUX01QVF9IXworCitzdHJ1Y3Qgdmd0X2RldmljZTsKKworc3RhdGljIGlubGluZSBib29s IGh5cGVydmlzb3JfZGV0ZWN0X2hvc3Qodm9pZCkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKKyNl bmRpZiAvKiBfR1ZUX01QVF9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3BhcmFtcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzODFkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq IENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICov CisKKyNpbmNsdWRlICJndnQuaCIKKworc3RydWN0IGd2dF9rZXJuZWxfcGFyYW1zIGd2dCA9IHsK KwkuZW5hYmxlID0gZmFsc2UsCisJLmRlYnVnID0gMCwKK307CisKK21vZHVsZV9wYXJhbV9uYW1l ZChndnRfZW5hYmxlLCBndnQuZW5hYmxlLCBib29sLCAwNjAwKTsKK01PRFVMRV9QQVJNX0RFU0Mo Z3Z0X2VuYWJsZSwgIkVuYWJsZSBJbnRlbCBHVlQtZyBob3N0IHN1cHBvcnQiKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9wYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjk1 NWI5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5o CkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg SU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9HVlRfUEFSQU1TX0hfCisjZGVm aW5lIF9HVlRfUEFSQU1TX0hfCisKK3N0cnVjdCBndnRfa2VybmVsX3BhcmFtcyB7CisJYm9vbCBl bmFibGU7CisJaW50IGRlYnVnOworfTsKKworZXh0ZXJuIHN0cnVjdCBndnRfa2VybmVsX3BhcmFt cyBndnQ7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3Jl Zy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmQzNjNiNzQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvcmVnLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodChjKSAy MDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAor ICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX0dW VF9SRUdfSAorI2RlZmluZSBfR1ZUX1JFR19ICisKKyNkZWZpbmUgR1ZUX0NGR19TUEFDRV9TWgky NTYKKyNkZWZpbmUgR1ZUX0JBUl9OVU0JCTQKKworI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9C QVIwCTB4MTAKKyNkZWZpbmUgR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMQkweDE4CisjZGVmaW5lIEdW VF9SRUdfQ0ZHX1NQQUNFX0JBUjIJMHgyMAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5j CmluZGV4IDFjNmQyMjcuLmYzYmVkMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtMzUs NiArMzUsNyBAQAogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2luY2x1ZGUgPGRybS9pOTE1X2Ry bS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9ndnQuaCIKICNpbmNs dWRlICJpOTE1X3ZncHUuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAjaW5jbHVkZSA8bGlu dXgvcGNpLmg+CkBAIC0xMDQ1LDYgKzEwNDYsMTAgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAogCWludGVsX3VuY29y ZV9pbml0KGRldik7CiAKKwlyZXQgPSBpbnRlbF9ndnRfaW5pdChkZXYpOworCWlmIChyZXQpCisJ CWdvdG8gb3V0X3VuY29yZV9maW5pOworCiAJcmV0ID0gaTkxNV9nZW1fZ3R0X2luaXQoZGV2KTsK IAlpZiAocmV0KQogCQlnb3RvIG91dF91bmNvcmVfZmluaTsKQEAgLTExMzUsNiArMTE0MCwxMiBA QCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBs b25nIGZsYWdzKQogCQlnb3RvIG91dF9wb3dlcl93ZWxsOwogCX0KIAorCXJldCA9IGludGVsX2d2 dF9wb3N0X2luaXQoZGV2KTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIHBv c3QgaW5pdCBwZ3QgZGV2aWNlXG4iKTsKKwkJZ290byBvdXRfcG93ZXJfd2VsbDsKKwl9CisKIAkv KgogCSAqIE5vdGlmeSBhIHZhbGlkIHN1cmZhY2UgYWZ0ZXIgbW9kZXNldHRpbmcsCiAJICogd2hl biBydW5uaW5nIGluc2lkZSBhIFZNLgpAQCAtMTE3Nyw2ICsxMTg4LDcgQEAgb3V0X2dlbV91bmxv YWQ6CiBvdXRfZ3R0OgogCWk5MTVfZ2xvYmFsX2d0dF9jbGVhbnVwKGRldik7CiBvdXRfdW5jb3Jl X2Zpbmk6CisJaW50ZWxfZ3Z0X2NsZWFudXAoZGV2KTsKIAlpbnRlbF91bmNvcmVfZmluaShkZXYp OwogCWk5MTVfbW1pb19jbGVhbnVwKGRldik7CiBwdXRfYnJpZGdlOgpAQCAtMTIyMyw2ICsxMjM1 LDggQEAgaW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJ aW50ZWxfbW9kZXNldF9jbGVhbnVwKGRldik7CiAKKwlpbnRlbF9ndnRfY2xlYW51cChkZXYpOwor CiAJLyoKIAkgKiBmcmVlIHRoZSBtZW1vcnkgc3BhY2UgYWxsb2NhdGVkIGZvciB0aGUgY2hpbGQg ZGV2aWNlCiAJICogY29uZmlnIHBhcnNlZCBmcm9tIFZCVApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggMjBkOWRiZC4uMmY4OTdjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xNzA1 LDYgKzE3MDUsMTAgQEAgc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgewogCXUzMiBod193aGl0ZWxp c3RfY291bnRbSTkxNV9OVU1fUklOR1NdOwogfTsKIAorc3RydWN0IGk5MTVfZ3Z0IHsKKwl2b2lk ICpwZ3RfZGV2aWNlOworfTsKKwogc3RydWN0IGk5MTVfdmlydHVhbF9ncHUgewogCWJvb2wgYWN0 aXZlOwogfTsKQEAgLTE3NDQsNiArMTc0OCw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK IAogCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHZncHU7CiAKKwlzdHJ1Y3QgaTkxNV9ndnQgZ3Z0 OworCiAJc3RydWN0IGludGVsX2d1YyBndWM7CiAKIAlzdHJ1Y3QgaW50ZWxfY3NyIGNzcjsKQEAg LTI3ODAsNiArMjc4NiwxMiBAQCB2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2Nr ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dF9fbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCQkJZW51bSBmb3JjZXdha2VfZG9tYWlucyBkb21haW5zKTsKIHZvaWQgYXNzZXJ0X2ZvcmNl d2FrZXNfaW5hY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworc3Rh dGljIGlubGluZSBib29sIGludGVsX2d2dF9hY3RpdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikK K3sKKwlyZXR1cm4gdG9faTkxNShkZXYpLT5ndnQucGd0X2RldmljZSA/IHRydWUgOiBmYWxzZTsK K30KKwogc3RhdGljIGlubGluZSBib29sIGludGVsX3ZncHVfYWN0aXZlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJcmV0dXJuIHRvX2k5MTUoZGV2KS0+dmdwdS5hY3RpdmU7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d2dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2E3MjMy Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndnQuYwpAQCAt MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI RQorICogU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAi aTkxNV9ndnQuaCIKKworLyoqCisgKiBET0M6IEludGVsIEdWVC1nIGhvc3Qgc3VwcG9ydAorICoK KyAqIEludGVsIEdWVC1nIGlzIGEgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24gdGVjaG5vbG9neSB3 aGljaCBzaGFyZXMgdGhlCisgKiBHUFUgYW1vbmcgbXVsdGlwbGUgdmlydHVhbCBtYWNoaW5lcyBv biBhIHRpbWUtc2hhcmluZyBiYXNpcy4gRWFjaAorICogdmlydHVhbCBtYWNoaW5lIGlzIHByZXNl bnRlZCBhIHZpcnR1YWwgR1BVICh2R1BVKSwgd2hpY2ggaGFzIGVxdWl2YWxlbnQKKyAqIGZlYXR1 cmVzIGFzIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIEdQVSAocEdQVSksIHNvIGk5MTUgZHJpdmVy IGNhbiBydW4KKyAqIHNlYW1sZXNzbHkgaW4gYSB2aXJ0dWFsIG1hY2hpbmUuIFRoaXMgZmlsZSBw cm92aWRlcyB0aGUgZW5nbGlnaHRtZW50cworICogb2YgR1ZUIGFuZCB0aGUgbmVjZXNzYXJ5IGNv bXBvbmVudHMgdXNlZCBieSBHVlQgaW4gaTkxNSBkcml2ZXIuCisgKi8KKworLyoqCisgKiBpbnRl bF9ndnRfaW5pdCAtIGluaXRpYWxpemUgR1ZUIGNvbXBvbmVudHMgYXQgdGhlIGJlZ2lubmluZyBv ZiBpOTE1CisgKiBkcml2ZXIgbG9hZGluZy4KKyAqIEBkZXY6IGRybSBkZXZpY2UgKgorICoKKyAq IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGluaXRpYWxp emF0aW9uIHN0YWdlLAorICogdG8gaW5pdGlhbGl6ZSB0aGUgR1ZUIGNvbXBvbmVudHMgdGhhdCBo YXZlIHRvIGJlIGluaXRpYWxpemVkCisgKiBiZWZvcmUgSFcgZ2V0cyB0b3VjaGVkIGJ5IG90aGVy IGk5MTUgY29tcG9uZW50cy4KKyAqLworaW50IGludGVsX2d2dF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOworCisJZGV2X3ByaXYtPmd2dC5wZ3RfZGV2aWNlID0gZ3Z0X2NyZWF0ZV9wZ3RfZGV2 aWNlKGRldl9wcml2KTsKKwlpZiAoaW50ZWxfZ3Z0X2FjdGl2ZShkZXYpKQorCQlEUk1fREVCVUdf RFJJVkVSKCJHVlQtZyBpcyBydW5uaW5nIGluIGhvc3QgbW9kZVxuIik7CisKKwlyZXR1cm4gMDsK K30KKworLyoqCisgKiBpbnRlbF9ndnRfcG9zdF9pbml0IC0gaW5pdGlhbGl6ZSBHVlQgY29tcG9u ZW50cyBhdCB0aGUgZW5kIG9mIGk5MTUKKyAqIGRyaXZlciBsb2FkaW5nLgorICogQGRldjogZHJt IGRldmljZSAqCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiB0 aGUgaW5pdGlhbGl6YXRpb24gc3RhZ2UsCisgKiB0byBpbml0aWFsaXplIHRoZSBHVlQgY29tcG9u ZW50cyB0aGF0IGhhdmUgdG8gYmUgaW5pdGlhbGl6ZWQgYWZ0ZXIKKyAqIG90aGVyIGk5MTUgY29t cG9uZW50cyBhcmUgcmVhZHkuCisgKi8KK2ludCBpbnRlbF9ndnRfcG9zdF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOworCisJaWYgKCFpbnRlbF9ndnRfYWN0aXZlKGRldikpCisJCXJldHVybiAw OworCisJcmV0dXJuIGd2dF9wb3N0X2luaXRfcGd0X2RldmljZShkZXZfcHJpdi0+Z3Z0LnBndF9k ZXZpY2UpOworfQorCisvKioKKyAqIGludGVsX2d2dF9jbGVhbnVwIC0gY2xlYW51cCBHVlQgY29t cG9uZW50cyB3aGVuIGk5MTUgZHJpdmVyIGlzIHVubG9hZGluZworICogQGRldjogZHJtIGRldmlj ZSAqCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgdGhlIGk5MTUgZHJpdmVyIHVu bG9hZGluZyBzdGFnZSwgdG8gc2h1dGRvd24KKyAqIEdWVCBjb21wb25lbnRzIGFuZCByZWxlYXNl IHRoZSByZWxhdGVkIHJlc291cmNlcy4KKyAqLwordm9pZCBpbnRlbF9ndnRfY2xlYW51cChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKKworCWlmICghaW50ZWxfZ3Z0X2FjdGl2ZShkZXYpKQorCQlyZXR1 cm47CisKKwlndnRfZGVzdHJveV9wZ3RfZGV2aWNlKGRldl9wcml2LT5ndnQucGd0X2RldmljZSk7 CisJZGV2X3ByaXYtPmd2dC5wZ3RfZGV2aWNlID0gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Z0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d2 dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwY2MyMDcKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d2dC5oCkBAIC0wLDAgKzEsNDkg QEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZU V0FSRS4KKyAqLworCisjaWZuZGVmIF9JOTE1X0dWVF9IXworI2RlZmluZSBfSTkxNV9HVlRfSF8K KworI2lmZGVmIENPTkZJR19EUk1fSTkxNV9HVlQKK2V4dGVybiB2b2lkICpndnRfY3JlYXRlX3Bn dF9kZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2V4dGVybiBpbnQg Z3Z0X3Bvc3RfaW5pdF9wZ3RfZGV2aWNlKHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgZ3Z0X2Rl c3Ryb3lfcGd0X2RldmljZSh2b2lkICpkYXRhKTsKKworZXh0ZXJuIGludCBpbnRlbF9ndnRfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiBpbnQgaW50ZWxfZ3Z0X3Bvc3RfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGludGVsX2d2dF9jbGVhbnVw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworI2Vsc2UKK2V4dGVybiBpbnQgaW50ZWxfZ3Z0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gMDsKK30KK2V4dGVybiBpbnQg aW50ZWxfZ3Z0X3Bvc3RfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXJldHVybiAw OworfQorZXh0ZXJuIHZvaWQgaW50ZWxfZ3Z0X2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKK3sKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX0k5MTVfR1ZUX0hfICovCi0tIAoxLjkuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==