From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Subject: [PATCH V3 3/3] drm: Add new driver for MXSFB controller Date: Mon, 14 Nov 2016 11:10:36 +0100 Message-ID: <20161114101036.3505-3-marex@denx.de> References: <20161114101036.3505-1-marex@denx.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5BE0F6E37E for ; Mon, 14 Nov 2016 10:11:01 +0000 (UTC) In-Reply-To: <20161114101036.3505-1-marex@denx.de> 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: Marek Vasut , Fabio Estevam , Daniel Vetter , Shawn Guo List-Id: dri-devel@lists.freedesktop.org QWRkIG5ldyBkcml2ZXIgZm9yIHRoZSBNWFNGQiBjb250cm9sbGVyIGZvdW5kIGluIGkuTVgyMy8y OC82U1ggLgpUaGUgTVhTRkIgY29udHJvbGxlciBpcyBhIHNpbXBsZSBmcmFtZWJ1ZmZlciBjb250 cm9sbGVyIHdpdGggb25lCnBhcmFsbGVsIExDRCBvdXRwdXQuIFVubGlrZSB0aGUgTVhTRkIgZmJk ZXYgZHJpdmVyIHRoYXQgaXMgdXNlZApvbiB0aGVzZSBzeXN0ZW1zIG5vdywgdGhpcyBkcml2ZXIg dXNlcyB0aGUgRFJNL0tNUyBmcmFtZXdvcmsuCgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8 bWFyZXhAZGVueC5kZT4KQ2M6IEx1Y2FzIFN0YWNoIDxsLnN0YWNoQHBlbmd1dHJvbml4LmRlPgpD YzogRmFiaW8gRXN0ZXZhbSA8ZmFiaW8uZXN0ZXZhbUBueHAuY29tPgpDYzogU2hhd24gR3VvIDxz aGF3bmd1b0BrZXJuZWwub3JnPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KLS0KVjI6IC0gVXNlIGRybV9zaW1wbGVfa21zX2hlbHBlciB0byByZWR1Y2UgYW1vdW50 IG9mIGNvbW1vbiBjb2RlCiAgICAtIEFkZCBkZWRpY2F0ZWQgT0YgY29tcGF0aWJsZSBmb3IgaS5N WDZTWApWMzogLSBVcGRhdGUgdG8gbGF0ZXN0IG5leHQvbWFzdGVyCi0tLQogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAg ICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL214c2ZiL0tjb25maWcgICAgICB8ICAxOCArKwogZHJpdmVy cy9ncHUvZHJtL214c2ZiL01ha2VmaWxlICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vbXhz ZmIvbXhzZmJfY3J0Yy5jIHwgMjQxICsrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9k cm0vbXhzZmIvbXhzZmJfZHJ2LmMgIHwgNDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9teHNmYi9teHNmYl9kcnYuaCAgfCAgNTQgKysrKysK IGRyaXZlcnMvZ3B1L2RybS9teHNmYi9teHNmYl9vdXQuYyAgfCAxMzEgKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9teHNmYi9teHNmYl9yZWdzLmggfCAxMTQgKysrKysrKysrKwogMTAgZmls ZXMgY2hhbmdlZCwgMTAxMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL214c2ZiL0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vbXhzZmIvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXhz ZmIvbXhzZmJfY3J0Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL214c2Zi L214c2ZiX2Rydi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL214c2ZiL214 c2ZiX2Rydi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2Zi X291dC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2ZiX3Jl Z3MuaAoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggM2YzZjYw Yi4uZjMyYjVkZiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAg LTgzMzksNiArODMzOSwxMiBAQCBUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWtydWZreS90dW5l cnMuZ2l0CiBTOglNYWludGFpbmVkCiBGOglkcml2ZXJzL21lZGlhL3R1bmVycy9teGw1MDA3dC4q CiAKK01YU0ZCIERSTSBEUklWRVIKK006CU1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorUzoJ U3VwcG9ydGVkCitGOglkcml2ZXJzL2dwdS9kcm0vbXhzZmIvCitGOglEb2N1bWVudGF0aW9uL2Rl dmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9teHNmYi1kcm0udHh0CisKIE1ZUklDT00gTVlSSS0x MEcgMTBHYkUgRFJJVkVSIChNWVJJMTBHRSkKIE06CUh5b25nLVlvdWIgS2ltIDxoeWtpbUBteXJp LmNvbT4KIEw6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggODYzY2RjYS4uZmJj Yjk4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKQEAgLTIzOSw2ICsyMzksOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS96dGUvS2NvbmZp ZyIKIAorc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbXhzZmIvS2NvbmZpZyIKKwogIyBLZWVwIGxl Z2FjeSBkcml2ZXJzIGxhc3QKIAogbWVudWNvbmZpZyBEUk1fTEVHQUNZCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXgg ZjIxNzI3NC4uYWM1ZTExNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtODgsMyArODgsNCBAQCBvYmotJChDT05G SUdfRFJNX0VUTkFWSVYpICs9IGV0bmF2aXYvCiBvYmotJChDT05GSUdfRFJNX0FSQ1BHVSkrPSBh cmMvCiBvYmoteQkJCSs9IGhpc2lsaWNvbi8KIG9iai0kKENPTkZJR19EUk1fWlRFKQkrPSB6dGUv CitvYmotJChDT05GSUdfRFJNX01YU0ZCKQkrPSBteHNmYi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9teHNmYi9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL214c2ZiL0tjb25maWcKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2Y2I1OQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9teHNmYi9LY29uZmlnCkBAIC0wLDAgKzEsMTggQEAKK2NvbmZp ZyBEUk1fTVhTCisJYm9vbAorCWhlbHAKKwkgIENob29zZSB0aGlzIG9wdGlvbiB0byBzZWxlY3Qg ZHJpdmVycyBmb3IgTVhTIEZCIGRldmljZXMKKworY29uZmlnIERSTV9NWFNGQgorCXRyaXN0YXRl ICJpLk1YMjMvaS5NWDI4L2kuTVg2U1ggTVhTRkIgTENEIGNvbnRyb2xsZXIiCisJZGVwZW5kcyBv biBEUk0gJiYgT0YKKwlkZXBlbmRzIG9uIENPTU1PTl9DTEsKKwlzZWxlY3QgRFJNX01YUworCXNl bGVjdCBEUk1fS01TX0hFTFBFUgorCXNlbGVjdCBEUk1fS01TX0ZCX0hFTFBFUgorCXNlbGVjdCBE Uk1fS01TX0NNQV9IRUxQRVIKKwloZWxwCisJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhh dmUgYW4gaS5NWDIzL2kuTVgyOC9pLk1YNlNYIE1YU0ZCCisJICBMQ0QgY29udHJvbGxlci4KKwor CSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG14c2ZiLgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL214c2ZiL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L214c2ZiL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2Yz YTQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXhzZmIvTWFrZWZpbGUKQEAg LTAsMCArMSwyIEBACitteHNmYi15IDo9IG14c2ZiX2Rydi5vIG14c2ZiX2NydGMubyBteHNmYl9v dXQubworb2JqLSQoQ09ORklHX0RSTV9NWFNGQikJKz0gbXhzZmIubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL214c2ZiL214c2ZiX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9teHNmYi9t eHNmYl9jcnRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxODkwMwot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9teHNmYi9teHNmYl9jcnRjLmMKQEAg LTAsMCArMSwyNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWFyZWsgVmFzdXQgPG1h cmV4QGRlbnguZGU+CisgKgorICogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGRyaXZlcnMvdmlkZW8v ZmJkZXYvbXhzZmIuYyA6CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVlcmdlbiBCZWlzZXJ0LCBQ ZW5ndXRyb25peAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkgRnJlZXNjYWxlIFNlbWljb25k dWN0b3IsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBF bWJlZGRlZCBBbGxleSBTb2x1dGlvbnMsIEluYyBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICogb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNp bmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgor I2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJf Y21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX29mLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmg+CisjaW5jbHVkZSA8bGludXgvY2xr Lmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGgu aD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL3NpbXBsZWZiLmg+CisjaW5jbHVkZSA8 dmlkZW8vdmlkZW9tb2RlLmg+CisKKyNpbmNsdWRlICJteHNmYl9kcnYuaCIKKyNpbmNsdWRlICJt eHNmYl9yZWdzLmgiCisKK3N0YXRpYyB1MzIgc2V0X2hzeW5jX3B1bHNlX3dpZHRoKHN0cnVjdCBt eHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmIsIHUzMiB2YWwpCit7CisJcmV0dXJuICh2YWwgJiBteHNm Yi0+ZGV2ZGF0YS0+aHNfd2R0aF9tYXNrKSA8PAorCQlteHNmYi0+ZGV2ZGF0YS0+aHNfd2R0aF9z aGlmdDsKK30KKworLyogU2V0dXAgdGhlIE1YU0ZCIHJlZ2lzdGVycyBmb3IgZGVjb2RpbmcgdGhl IHBpeGVscyBvdXQgb2YgdGhlIGZyYW1lYnVmZmVyICovCitzdGF0aWMgaW50IG14c2ZiX3NldF9w aXhlbF9mbXQoc3RydWN0IG14c2ZiX2RybV9wcml2YXRlICpteHNmYikKK3sKKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSAmbXhzZmItPnBpcGUuY3J0YzsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJt ID0gY3J0Yy0+ZGV2OworCWNvbnN0IHUzMiBmb3JtYXQgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ ZmItPnBpeGVsX2Zvcm1hdDsKKwl1MzIgY3RybCwgY3RybDE7CisKKwljdHJsID0gQ1RSTF9CWVBB U1NfQ09VTlQgfCBDVFJMX01BU1RFUjsKKworCS8qCisJICogV0FSTklORzogVGhlIGJ1cyB3aWR0 aCwgQ1RSTF9TRVRfQlVTX1dJRFRIKCksIGlzIGNvbmZpZ3VyZWQgdG8KKwkgKiBtYXRjaCB0aGUg c2VsZWN0ZWQgbW9kZSBoZXJlLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgb3JpZ2luYWwKKwkgKiBN WFNGQiBkcml2ZXIsIHdoaWNoIGhhZCB0aGUgb3B0aW9uIHRvIGNvbmZpZ3VyZSB0aGUgYnVzIHdp ZHRoCisJICogdG8gYXJiaXRyYXJ5IHZhbHVlLiBUaGlzIGxpbWl0YXRpb24gc2hvdWxkIG5vdCBw b3NlIGFuIGlzc3VlLgorCSAqLworCisJLyogQ1RSTDEgY29udGFpbnMgSVJRIGNvbmZpZyBhbmQg c3RhdHVzIGJpdHMsIHByZXNlcnZlIHRob3NlLiAqLworCWN0cmwxID0gcmVhZGwobXhzZmItPmJh c2UgKyBMQ0RDX0NUUkwxKTsKKwljdHJsMSAmPSBDVFJMMV9DVVJfRlJBTUVfRE9ORV9JUlFfRU4g fCBDVFJMMV9DVVJfRlJBTUVfRE9ORV9JUlE7CisKKwlzd2l0Y2ggKGZvcm1hdCkgeworCWNhc2Ug RFJNX0ZPUk1BVF9SR0I1NjU6CisJCWRldl9kYmcoZHJtLT5kZXYsICJTZXR0aW5nIHVwIFJHQjU2 NSBtb2RlXG4iKTsKKwkJY3RybCB8PSBDVFJMX1NFVF9CVVNfV0lEVEgoU1RNTENESUZfMTZCSVQp OworCQljdHJsIHw9IENUUkxfU0VUX1dPUkRfTEVOR1RIKDApOworCQljdHJsMSB8PSBDVFJMMV9T RVRfQllURV9QQUNLQUdJTkcoMHhmKTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4 ODg4OgorCQlkZXZfZGJnKGRybS0+ZGV2LCAiU2V0dGluZyB1cCBYUkdCODg4OCBtb2RlXG4iKTsK KwkJY3RybCB8PSBDVFJMX1NFVF9CVVNfV0lEVEgoU1RNTENESUZfMjRCSVQpOworCQljdHJsIHw9 IENUUkxfU0VUX1dPUkRfTEVOR1RIKDMpOworCQkvKiBEbyBub3QgdXNlIHBhY2tlZCBwaXhlbHMg PSBvbmUgcGl4ZWwgcGVyIHdvcmQgaW5zdGVhZC4gKi8KKwkJY3RybDEgfD0gQ1RSTDFfU0VUX0JZ VEVfUEFDS0FHSU5HKDB4Nyk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRldl9lcnIoZHJtLT5k ZXYsICJVbmhhbmRsZWQgcGl4ZWwgZm9ybWF0ICUwOHhcbiIsIGZvcm1hdCk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCXdyaXRlbChjdHJsMSwgbXhzZmItPmJhc2UgKyBMQ0RDX0NUUkwxKTsK Kwl3cml0ZWwoY3RybCwgbXhzZmItPmJhc2UgKyBMQ0RDX0NUUkwpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIG14c2ZiX2VuYWJsZV9jb250cm9sbGVyKHN0cnVjdCBteHNmYl9kcm1f cHJpdmF0ZSAqbXhzZmIpCit7CisJdTMyIHJlZzsKKworCWlmIChteHNmYi0+Y2xrX2Rpc3BfYXhp KQorCQljbGtfcHJlcGFyZV9lbmFibGUobXhzZmItPmNsa19kaXNwX2F4aSk7CisJY2xrX3ByZXBh cmVfZW5hYmxlKG14c2ZiLT5jbGspOworCW14c2ZiX2VuYWJsZV9heGlfY2xrKG14c2ZiKTsKKwor CS8qIElmIGl0IHdhcyBkaXNhYmxlZCwgcmUtZW5hYmxlIHRoZSBtb2RlIGFnYWluICovCisJd3Jp dGVsKENUUkxfRE9UQ0xLX01PREUsIG14c2ZiLT5iYXNlICsgTENEQ19DVFJMICsgUkVHX1NFVCk7 CisKKwkvKiBFbmFibGUgdGhlIFNZTkMgc2lnbmFscyBmaXJzdCwgdGhlbiB0aGUgRE1BIGVuZ2lu ZSAqLworCXJlZyA9IHJlYWRsKG14c2ZiLT5iYXNlICsgTENEQ19WRENUUkw0KTsKKwlyZWcgfD0g VkRDVFJMNF9TWU5DX1NJR05BTFNfT047CisJd3JpdGVsKHJlZywgbXhzZmItPmJhc2UgKyBMQ0RD X1ZEQ1RSTDQpOworCisJd3JpdGVsKENUUkxfUlVOLCBteHNmYi0+YmFzZSArIExDRENfQ1RSTCAr IFJFR19TRVQpOworfQorCitzdGF0aWMgdm9pZCBteHNmYl9kaXNhYmxlX2NvbnRyb2xsZXIoc3Ry dWN0IG14c2ZiX2RybV9wcml2YXRlICpteHNmYikKK3sKKwl1MzIgcmVnOworCisJLyoKKwkgKiBF dmVuIGlmIHdlIGRpc2FibGUgdGhlIGNvbnRyb2xsZXIgaGVyZSwgaXQgd2lsbCBzdGlsbCBjb250 aW51ZQorCSAqIHVudGlsIGl0cyBGSUZPcyBhcmUgcnVubmluZyBvdXQgb2YgZGF0YQorCSAqLwor CXdyaXRlbChDVFJMX0RPVENMS19NT0RFLCBteHNmYi0+YmFzZSArIExDRENfQ1RSTCArIFJFR19D TFIpOworCisJcmVhZGxfcG9sbF90aW1lb3V0KG14c2ZiLT5iYXNlICsgTENEQ19DVFJMLCByZWcs ICEocmVnICYgQ1RSTF9SVU4pLAorCQkJICAgMCwgMTAwMCk7CisKKwlyZWcgPSByZWFkbChteHNm Yi0+YmFzZSArIExDRENfVkRDVFJMNCk7CisJcmVnICY9IH5WRENUUkw0X1NZTkNfU0lHTkFMU19P TjsKKwl3cml0ZWwocmVnLCBteHNmYi0+YmFzZSArIExDRENfVkRDVFJMNCk7CisKKwlteHNmYl9k aXNhYmxlX2F4aV9jbGsobXhzZmIpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG14c2ZiLT5j bGspOworCWlmIChteHNmYi0+Y2xrX2Rpc3BfYXhpKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUo bXhzZmItPmNsa19kaXNwX2F4aSk7Cit9CisKK3N0YXRpYyB2b2lkIG14c2ZiX2NydGNfbW9kZV9z ZXRfbm9mYihzdHJ1Y3QgbXhzZmJfZHJtX3ByaXZhdGUgKm14c2ZiKQoreworCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptID0gJm14c2ZiLT5waXBlLmNydGMuc3RhdGUtPmFkanVzdGVkX21vZGU7 CisJY29uc3QgdTMyIGJ1c19mbGFncyA9IG14c2ZiLT5jb25uZWN0b3IuZGlzcGxheV9pbmZvLmJ1 c19mbGFnczsKKwl1MzIgdmRjdHJsMCwgdnN5bmNfcHVsc2VfbGVuLCBoc3luY19wdWxzZV9sZW47 CisJaW50IGVycjsKKworCS8qCisJICogSXQgc2VlbXMsIHlvdSBjYW4ndCByZS1wcm9ncmFtIHRo ZSBjb250cm9sbGVyIGlmIGl0IGlzIHN0aWxsCisJICogcnVubmluZy4gVGhpcyBtYXkgbGVhZCB0 byBzaGlmdGVkIHBpY3R1cmVzIChGSUZPIGlzc3VlPyksIHNvCisJICogZmlyc3Qgc3RvcCB0aGUg Y29udHJvbGxlciBhbmQgZHJhaW4gaXRzIEZJRk9zLgorCSAqLworCW14c2ZiX2VuYWJsZV9heGlf Y2xrKG14c2ZiKTsKKworCS8qIENsZWFyIHRoZSBGSUZPcyAqLworCXdyaXRlbChDVFJMMV9GSUZP X0NMRUFSLCBteHNmYi0+YmFzZSArIExDRENfQ1RSTDEgKyBSRUdfU0VUKTsKKworCWVyciA9IG14 c2ZiX3NldF9waXhlbF9mbXQobXhzZmIpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCWNsa19z ZXRfcmF0ZShteHNmYi0+Y2xrLCBtLT5jcnRjX2Nsb2NrICogMTAwMCk7CisKKwl3cml0ZWwoVFJB TlNGRVJfQ09VTlRfU0VUX1ZDT1VOVChtLT5jcnRjX3ZkaXNwbGF5KSB8CisJICAgICAgIFRSQU5T RkVSX0NPVU5UX1NFVF9IQ09VTlQobS0+Y3J0Y19oZGlzcGxheSksCisJICAgICAgIG14c2ZiLT5i YXNlICsgbXhzZmItPmRldmRhdGEtPnRyYW5zZmVyX2NvdW50KTsKKworCXZzeW5jX3B1bHNlX2xl biA9IG0tPmNydGNfdnN5bmNfZW5kIC0gbS0+Y3J0Y192c3luY19zdGFydDsKKworCXZkY3RybDAg PSBWRENUUkwwX0VOQUJMRV9QUkVTRU5UIHwJLyogQWx3YXlzIGluIERPVENMT0NLIG1vZGUgKi8K KwkJICBWRENUUkwwX1ZTWU5DX1BFUklPRF9VTklUIHwKKwkJICBWRENUUkwwX1ZTWU5DX1BVTFNF X1dJRFRIX1VOSVQgfAorCQkgIFZEQ1RSTDBfU0VUX1ZTWU5DX1BVTFNFX1dJRFRIKHZzeW5jX3B1 bHNlX2xlbik7CisJaWYgKG0tPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMpCisJCXZkY3Ry bDAgfD0gVkRDVFJMMF9IU1lOQ19BQ1RfSElHSDsKKwlpZiAobS0+ZmxhZ3MgJiBEUk1fTU9ERV9G TEFHX1BWU1lOQykKKwkJdmRjdHJsMCB8PSBWRENUUkwwX1ZTWU5DX0FDVF9ISUdIOworCWlmIChi dXNfZmxhZ3MgJiBEUk1fQlVTX0ZMQUdfREVfSElHSCkKKwkJdmRjdHJsMCB8PSBWRENUUkwwX0VO QUJMRV9BQ1RfSElHSDsKKwlpZiAoYnVzX2ZsYWdzICYgRFJNX0JVU19GTEFHX1BJWERBVEFfTkVH RURHRSkKKwkJdmRjdHJsMCB8PSBWRENUUkwwX0RPVENMS19BQ1RfRkFMTElORzsKKworCXdyaXRl bCh2ZGN0cmwwLCBteHNmYi0+YmFzZSArIExDRENfVkRDVFJMMCk7CisKKwkvKiBGcmFtZSBsZW5n dGggaW4gbGluZXMuICovCisJd3JpdGVsKG0tPmNydGNfdnRvdGFsLCBteHNmYi0+YmFzZSArIExD RENfVkRDVFJMMSk7CisKKwkvKiBMaW5lIGxlbmd0aCBpbiB1bml0cyBvZiBjbG9ja3Mgb3IgcGl4 ZWxzLiAqLworCWhzeW5jX3B1bHNlX2xlbiA9IG0tPmNydGNfaHN5bmNfZW5kIC0gbS0+Y3J0Y19o c3luY19zdGFydDsKKwl3cml0ZWwoc2V0X2hzeW5jX3B1bHNlX3dpZHRoKG14c2ZiLCBoc3luY19w dWxzZV9sZW4pIHwKKwkgICAgICAgVkRDVFJMMl9TRVRfSFNZTkNfUEVSSU9EKG0tPmNydGNfaHRv dGFsKSwKKwkgICAgICAgbXhzZmItPmJhc2UgKyBMQ0RDX1ZEQ1RSTDIpOworCisJd3JpdGVsKFNF VF9IT1JfV0FJVF9DTlQobS0+Y3J0Y19oYmxhbmtfZW5kIC0gbS0+Y3J0Y19oc3luY19lbmQpIHwK KwkgICAgICAgU0VUX1ZFUlRfV0FJVF9DTlQobS0+Y3J0Y192YmxhbmtfZW5kIC0gbS0+Y3J0Y192 c3luY19lbmQpLAorCSAgICAgICBteHNmYi0+YmFzZSArIExDRENfVkRDVFJMMyk7CisKKwl3cml0 ZWwoU0VUX0RPVENMS19IX1ZBTElEX0RBVEFfQ05UKG0tPmhkaXNwbGF5KSwKKwkgICAgICAgbXhz ZmItPmJhc2UgKyBMQ0RDX1ZEQ1RSTDQpOworCisJbXhzZmJfZGlzYWJsZV9heGlfY2xrKG14c2Zi KTsKK30KKwordm9pZCBteHNmYl9jcnRjX2VuYWJsZShzdHJ1Y3QgbXhzZmJfZHJtX3ByaXZhdGUg Km14c2ZiKQoreworCW14c2ZiX2NydGNfbW9kZV9zZXRfbm9mYihteHNmYik7CisJbXhzZmJfZW5h YmxlX2NvbnRyb2xsZXIobXhzZmIpOworfQorCit2b2lkIG14c2ZiX2NydGNfZGlzYWJsZShzdHJ1 Y3QgbXhzZmJfZHJtX3ByaXZhdGUgKm14c2ZiKQoreworCW14c2ZiX2Rpc2FibGVfY29udHJvbGxl cihteHNmYik7Cit9CisKK3ZvaWQgbXhzZmJfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgbXhz ZmJfZHJtX3ByaXZhdGUgKm14c2ZiLAorCQkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg KnN0YXRlKQoreworCXN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSA9ICZteHNm Yi0+cGlwZTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+Y3J0YzsKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBpcGUtPnBsYW5lLnN0YXRlLT5mYjsKKwlzdHJ1Y3QgZHJt X3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0 ICpnZW07CisKKwlpZiAoIWNydGMpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnEoJmNydGMt PmRldi0+ZXZlbnRfbG9jayk7CisJZXZlbnQgPSBjcnRjLT5zdGF0ZS0+ZXZlbnQ7CisJaWYgKGV2 ZW50KSB7CisJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7CisKKwkJaWYgKGRybV9jcnRjX3Zi bGFua19nZXQoY3J0YykgPT0gMCkgeworCQkJZHJtX2NydGNfYXJtX3ZibGFua19ldmVudChjcnRj LCBldmVudCk7CisJCX0gZWxzZSB7CisJCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRj LCBldmVudCk7CisJCX0KKwl9CisJc3Bpbl91bmxvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xv Y2spOworCisJaWYgKCFmYikKKwkJcmV0dXJuOworCisJZ2VtID0gZHJtX2ZiX2NtYV9nZXRfZ2Vt X29iaihmYiwgMCk7CisKKwlteHNmYl9lbmFibGVfYXhpX2NsayhteHNmYik7CisJd3JpdGVsKGdl bS0+cGFkZHIsIG14c2ZiLT5iYXNlICsgbXhzZmItPmRldmRhdGEtPm5leHRfYnVmKTsKKwlteHNm Yl9kaXNhYmxlX2F4aV9jbGsobXhzZmIpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L214c2ZiL214c2ZiX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2ZiX2Rydi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTE4YmYKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXhzZmIvbXhzZmJfZHJ2LmMKQEAgLTAsMCArMSw0NDQgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Cisg KgorICogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGRyaXZlcnMvdmlkZW8vZmJkZXYvbXhzZmIuYyA6 CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVlcmdlbiBCZWlzZXJ0LCBQZW5ndXRyb25peAorICog Q29weXJpZ2h0IChDKSAyMDA4LTIwMDkgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFbWJlZGRlZCBBbGxleSBT b2x1dGlvbnMsIEluYyBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg KiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMgorICogb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3Qu aD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFw aC5oPgorI2luY2x1ZGUgPGxpbnV4L29mX3Jlc2VydmVkX21lbS5oPgorI2luY2x1ZGUgPGxpbnV4 L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlvbi5oPgorCisjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1 ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5o PgorI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1f Z2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9wYW5lbC5oPgorI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaD4KKwor I2luY2x1ZGUgIm14c2ZiX2Rydi5oIgorI2luY2x1ZGUgIm14c2ZiX3JlZ3MuaCIKKworZW51bSBt eHNmYl9kZXZ0eXBlIHsKKwlNWFNGQl9WMywKKwlNWFNGQl9WNCwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgbXhzZmJfZGV2ZGF0YSBteHNmYl9kZXZkYXRhW10gPSB7CisJW01YU0ZCX1YzXSA9 IHsKKwkJLnRyYW5zZmVyX2NvdW50CT0gTENEQ19WM19UUkFOU0ZFUl9DT1VOVCwKKwkJLmN1cl9i dWYJPSBMQ0RDX1YzX0NVUl9CVUYsCisJCS5uZXh0X2J1Zgk9IExDRENfVjNfTkVYVF9CVUYsCisJ CS5kZWJ1ZzAJCT0gTENEQ19WM19ERUJVRzAsCisJCS5oc193ZHRoX21hc2sJPSAweGZmLAorCQku aHNfd2R0aF9zaGlmdAk9IDI0LAorCQkuaXB2ZXJzaW9uCT0gMywKKwl9LAorCVtNWFNGQl9WNF0g PSB7CisJCS50cmFuc2Zlcl9jb3VudAk9IExDRENfVjRfVFJBTlNGRVJfQ09VTlQsCisJCS5jdXJf YnVmCT0gTENEQ19WNF9DVVJfQlVGLAorCQkubmV4dF9idWYJPSBMQ0RDX1Y0X05FWFRfQlVGLAor CQkuZGVidWcwCQk9IExDRENfVjRfREVCVUcwLAorCQkuaHNfd2R0aF9tYXNrCT0gMHgzZmZmLAor CQkuaHNfd2R0aF9zaGlmdAk9IDE4LAorCQkuaXB2ZXJzaW9uCT0gNCwKKwl9LAorfTsKKworc3Rh dGljIGNvbnN0IHVpbnQzMl90IG14c2ZiX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX1hSR0I4 ODg4LAorCURSTV9GT1JNQVRfUkdCNTY1Cit9OworCitzdGF0aWMgc3RydWN0IG14c2ZiX2RybV9w cml2YXRlICoKK2RybV9waXBlX3RvX214c2ZiX2RybV9wcml2YXRlKHN0cnVjdCBkcm1fc2ltcGxl X2Rpc3BsYXlfcGlwZSAqcGlwZSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHBpcGUsIHN0cnVj dCBteHNmYl9kcm1fcHJpdmF0ZSwgcGlwZSk7Cit9CisKK3ZvaWQgbXhzZmJfZW5hYmxlX2F4aV9j bGsoc3RydWN0IG14c2ZiX2RybV9wcml2YXRlICpteHNmYikKK3sKKwlpZiAobXhzZmItPmNsa19h eGkpCisJCWNsa19wcmVwYXJlX2VuYWJsZShteHNmYi0+Y2xrX2F4aSk7Cit9CisKK3ZvaWQgbXhz ZmJfZGlzYWJsZV9heGlfY2xrKHN0cnVjdCBteHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmIpCit7CisJ aWYgKG14c2ZiLT5jbGtfYXhpKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUobXhzZmItPmNsa19h eGkpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBteHNm Yl9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKKwkuZmJfY3JlYXRlCQk9IGRybV9mYl9jbWFfY3JlYXRl LAorCS5hdG9taWNfY2hlY2sJCT0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCisJLmF0b21pY19j b21taXQJCT0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAorfTsKKworc3RhdGljIHZvaWQgbXhz ZmJfcGlwZV9lbmFibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAorCQkJ ICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBteHNm Yl9kcm1fcHJpdmF0ZSAqbXhzZmIgPSBkcm1fcGlwZV90b19teHNmYl9kcm1fcHJpdmF0ZShwaXBl KTsKKworCW14c2ZiX2NydGNfZW5hYmxlKG14c2ZiKTsKK30KKworc3RhdGljIHZvaWQgbXhzZmJf cGlwZV9kaXNhYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSkKK3sKKwlz dHJ1Y3QgbXhzZmJfZHJtX3ByaXZhdGUgKm14c2ZiID0gZHJtX3BpcGVfdG9fbXhzZmJfZHJtX3By aXZhdGUocGlwZSk7CisKKwlteHNmYl9jcnRjX2Rpc2FibGUobXhzZmIpOworfQorCitzdGF0aWMg dm9pZCBteHNmYl9waXBlX3VwZGF0ZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBp cGUsCisJCQkgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKK3sKKwlz dHJ1Y3QgbXhzZmJfZHJtX3ByaXZhdGUgKm14c2ZiID0gZHJtX3BpcGVfdG9fbXhzZmJfZHJtX3By aXZhdGUocGlwZSk7CisKKwlteHNmYl9wbGFuZV9hdG9taWNfdXBkYXRlKG14c2ZiLCBwbGFuZV9z dGF0ZSk7Cit9CisKK3N0YXRpYyBpbnQgbXhzZmJfcGlwZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1f c2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKKwkJCQkgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCit7CisJcmV0dXJuIGRybV9mYl9jbWFfcHJlcGFyZV9mYigmcGlwZS0+cGxh bmUsIHBsYW5lX3N0YXRlKTsKK30KKworc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1 bmNzIG14c2ZiX2Z1bmNzID0geworCS5lbmFibGUJCT0gbXhzZmJfcGlwZV9lbmFibGUsCisJLmRp c2FibGUJPSBteHNmYl9waXBlX2Rpc2FibGUsCisJLnVwZGF0ZQkJPSBteHNmYl9waXBlX3VwZGF0 ZSwKKwkucHJlcGFyZV9mYgk9IG14c2ZiX3BpcGVfcHJlcGFyZV9mYiwKK307CisKK3N0YXRpYyBp bnQgbXhzZmJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25lZCBsb25nIGZsYWdz KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2Uo ZHJtLT5kZXYpOworCXN0cnVjdCBteHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmI7CisJc3RydWN0IHJl c291cmNlICpyZXM7CisJaW50IHJldDsKKworCW14c2ZiID0gZGV2bV9remFsbG9jKCZwZGV2LT5k ZXYsIHNpemVvZigqbXhzZmIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW14c2ZiKQorCQlyZXR1cm4g LUVOT01FTTsKKworCWRybS0+ZGV2X3ByaXZhdGUgPSBteHNmYjsKKwlteHNmYi0+ZGV2ZGF0YSA9 ICZteHNmYl9kZXZkYXRhW3BkZXYtPmlkX2VudHJ5LT5kcml2ZXJfZGF0YV07CisKKwlyZXMgPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCW14c2ZiLT5i YXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRybS0+ZGV2LCByZXMpOworCWlmIChJU19FUlIo bXhzZmItPmJhc2UpKQorCQlyZXR1cm4gUFRSX0VSUihteHNmYi0+YmFzZSk7CisKKwlteHNmYi0+ Y2xrID0gZGV2bV9jbGtfZ2V0KGRybS0+ZGV2LCBOVUxMKTsKKwlpZiAoSVNfRVJSKG14c2ZiLT5j bGspKQorCQlyZXR1cm4gUFRSX0VSUihteHNmYi0+Y2xrKTsKKworCW14c2ZiLT5jbGtfYXhpID0g ZGV2bV9jbGtfZ2V0KGRybS0+ZGV2LCAiYXhpIik7CisJaWYgKElTX0VSUihteHNmYi0+Y2xrX2F4 aSkpCisJCW14c2ZiLT5jbGtfYXhpID0gTlVMTDsKKworCW14c2ZiLT5jbGtfZGlzcF9heGkgPSBk ZXZtX2Nsa19nZXQoZHJtLT5kZXYsICJkaXNwX2F4aSIpOworCWlmIChJU19FUlIobXhzZmItPmNs a19kaXNwX2F4aSkpCisJCW14c2ZiLT5jbGtfZGlzcF9heGkgPSBOVUxMOworCisJcmV0ID0gZG1h X3NldF9tYXNrX2FuZF9jb2hlcmVudChkcm0tPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCXBtX3J1bnRpbWVfZW5hYmxlKGRybS0+ZGV2KTsKKwor CXJldCA9IGRybV92YmxhbmtfaW5pdChkcm0sIGRybS0+bW9kZV9jb25maWcubnVtX2NydGMpOwor CWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZHJtLT5kZXYsICJGYWlsZWQgdG8gaW5pdGlhbGlz ZSB2YmxhbmtcbiIpOworCQlnb3RvIGVycl92Ymxhbms7CisJfQorCisJLyogTW9kZXNldCBpbml0 ICovCisJZHJtX21vZGVfY29uZmlnX2luaXQoZHJtKTsKKworCXJldCA9IG14c2ZiX2NyZWF0ZV9v dXRwdXQoZHJtKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRybS0+ZGV2LCAiRmFpbGVk IHRvIGNyZWF0ZSBvdXRwdXRzXG4iKTsKKwkJZ290byBlcnJfdmJsYW5rOworCX0KKworCXJldCA9 IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2luaXQoZHJtLCAmbXhzZmItPnBpcGUsICZteHNmYl9m dW5jcywKKwkJCW14c2ZiX2Zvcm1hdHMsIEFSUkFZX1NJWkUobXhzZmJfZm9ybWF0cyksCisJCQkm bXhzZmItPmNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vycihkcm0tPmRldiwg IkNhbm5vdCBzZXR1cCBzaW1wbGUgZGlzcGxheSBwaXBlXG4iKTsKKwkJZ290byBlcnJfdmJsYW5r OworCX0KKworCXJldCA9IGRybV9wYW5lbF9hdHRhY2gobXhzZmItPnBhbmVsLCAmbXhzZmItPmNv bm5lY3Rvcik7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRybS0+ZGV2LCAiQ2Fubm90IGNvbm5l Y3QgcGFuZWxcbiIpOworCQlnb3RvIGVycl92Ymxhbms7CisJfQorCisJZHJtLT5tb2RlX2NvbmZp Zy5taW5fd2lkdGgJPSBNWFNGQl9NSU5fWFJFUzsKKwlkcm0tPm1vZGVfY29uZmlnLm1pbl9oZWln aHQJPSBNWFNGQl9NSU5fWVJFUzsKKwlkcm0tPm1vZGVfY29uZmlnLm1heF93aWR0aAk9IE1YU0ZC X01BWF9YUkVTOworCWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodAk9IE1YU0ZCX01BWF9ZUkVT OworCWRybS0+bW9kZV9jb25maWcuZnVuY3MJCT0gJm14c2ZiX21vZGVfY29uZmlnX2Z1bmNzOwor CisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwlwbV9ydW50aW1lX2dldF9zeW5jKGRy bS0+ZGV2KTsKKwlyZXQgPSBkcm1faXJxX2luc3RhbGwoZHJtLCBwbGF0Zm9ybV9nZXRfaXJxKHBk ZXYsIDApKTsKKwlwbV9ydW50aW1lX3B1dF9zeW5jKGRybS0+ZGV2KTsKKworCWlmIChyZXQgPCAw KSB7CisJCWRldl9lcnIoZHJtLT5kZXYsICJGYWlsZWQgdG8gaW5zdGFsbCBJUlEgaGFuZGxlclxu Iik7CisJCWdvdG8gZXJyX2lycTsKKwl9CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZHJt KTsKKworCW14c2ZiLT5mYmRldiA9IGRybV9mYmRldl9jbWFfaW5pdChkcm0sIDMyLCBkcm0tPm1v ZGVfY29uZmlnLm51bV9jcnRjLAorCQkJCQkgIGRybS0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rv cik7CisJaWYgKElTX0VSUihteHNmYi0+ZmJkZXYpKSB7CisJCW14c2ZiLT5mYmRldiA9IE5VTEw7 CisJCWRldl9lcnIoZHJtLT5kZXYsICJGYWlsZWQgdG8gaW5pdCBGQiBDTUEgYXJlYVxuIik7CisJ CWdvdG8gZXJyX2NtYTsKKwl9CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcm0pOwor CisJZHJtX2hlbHBlcl9ocGRfaXJxX2V2ZW50KGRybSk7CisKKwlyZXR1cm4gMDsKKworZXJyX2Nt YToKKwlkcm1faXJxX3VuaW5zdGFsbChkcm0pOworZXJyX2lycToKKwlkcm1fcGFuZWxfZGV0YWNo KG14c2ZiLT5wYW5lbCk7CitlcnJfdmJsYW5rOgorCXBtX3J1bnRpbWVfZGlzYWJsZShkcm0tPmRl dik7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBteHNmYl91bmxvYWQoc3RydWN0 IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3QgbXhzZmJfZHJtX3ByaXZhdGUgKm14c2ZiID0g ZHJtLT5kZXZfcHJpdmF0ZTsKKworCWlmIChteHNmYi0+ZmJkZXYpCisJCWRybV9mYmRldl9jbWFf ZmluaShteHNmYi0+ZmJkZXYpOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKGRybSk7CisJ ZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKKwlkcm1fdmJsYW5rX2NsZWFudXAoZHJtKTsK KworCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZHJtLT5kZXYpOworCWRybV9pcnFfdW5pbnN0YWxsKGRy bSk7CisJcG1fcnVudGltZV9wdXRfc3luYyhkcm0tPmRldik7CisKKwlkcm0tPmRldl9wcml2YXRl ID0gTlVMTDsKKworCXBtX3J1bnRpbWVfZGlzYWJsZShkcm0tPmRldik7Cit9CisKK3N0YXRpYyB2 b2lkIG14c2ZiX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQoreworCXN0cnVjdCBt eHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmIgPSBkcm0tPmRldl9wcml2YXRlOworCisJZHJtX2ZiZGV2 X2NtYV9yZXN0b3JlX21vZGUobXhzZmItPmZiZGV2KTsKK30KKworc3RhdGljIGludCBteHNmYl9l bmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHVuc2lnbmVkIGludCBjcnRjKQor eworCXN0cnVjdCBteHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmIgPSBkcm0tPmRldl9wcml2YXRlOwor CisJLyogQ2xlYXIgYW5kIGVuYWJsZSBWQkxBTksgSVJRICovCisJbXhzZmJfZW5hYmxlX2F4aV9j bGsobXhzZmIpOworCXdyaXRlbChDVFJMMV9DVVJfRlJBTUVfRE9ORV9JUlEsIG14c2ZiLT5iYXNl ICsgTENEQ19DVFJMMSArIFJFR19DTFIpOworCXdyaXRlbChDVFJMMV9DVVJfRlJBTUVfRE9ORV9J UlFfRU4sIG14c2ZiLT5iYXNlICsgTENEQ19DVFJMMSArIFJFR19TRVQpOworCW14c2ZiX2Rpc2Fi bGVfYXhpX2NsayhteHNmYik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbXhzZmJf ZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdW5zaWduZWQgaW50IGNydGMp Cit7CisJc3RydWN0IG14c2ZiX2RybV9wcml2YXRlICpteHNmYiA9IGRybS0+ZGV2X3ByaXZhdGU7 CisKKwkvKiBEaXNhYmxlIGFuZCBjbGVhciBWQkxBTksgSVJRICovCisJbXhzZmJfZW5hYmxlX2F4 aV9jbGsobXhzZmIpOworCXdyaXRlbChDVFJMMV9DVVJfRlJBTUVfRE9ORV9JUlFfRU4sIG14c2Zi LT5iYXNlICsgTENEQ19DVFJMMSArIFJFR19DTFIpOworCXdyaXRlbChDVFJMMV9DVVJfRlJBTUVf RE9ORV9JUlEsIG14c2ZiLT5iYXNlICsgTENEQ19DVFJMMSArIFJFR19DTFIpOworCW14c2ZiX2Rp c2FibGVfYXhpX2NsayhteHNmYik7Cit9CisKK3N0YXRpYyB2b2lkIG14c2ZiX2lycV9wcmVpbnN0 YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCit7CisJbXhzZmJfZGlzYWJsZV92YmxhbmsoZHJt LCAwKTsKK30KKworc3RhdGljIGlycXJldHVybl90IG14c2ZiX2lycV9oYW5kbGVyKGludCBpcnEs IHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRhdGE7CisJc3RydWN0 IG14c2ZiX2RybV9wcml2YXRlICpteHNmYiA9IGRybS0+ZGV2X3ByaXZhdGU7CisJdTMyIHJlZzsK KworCW14c2ZiX2VuYWJsZV9heGlfY2xrKG14c2ZiKTsKKworCXJlZyA9IHJlYWRsKG14c2ZiLT5i YXNlICsgTENEQ19DVFJMMSk7CisKKwlpZiAocmVnICYgQ1RSTDFfQ1VSX0ZSQU1FX0RPTkVfSVJR KQorCQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCZteHNmYi0+cGlwZS5jcnRjKTsKKworCXdyaXRl bChDVFJMMV9DVVJfRlJBTUVfRE9ORV9JUlEsIG14c2ZiLT5iYXNlICsgTENEQ19DVFJMMSArIFJF R19DTFIpOworCisJbXhzZmJfZGlzYWJsZV9heGlfY2xrKG14c2ZiKTsKKworCXJldHVybiBJUlFf SEFORExFRDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wcyA9 IHsKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLm9wZW4JCT0gZHJtX29wZW4sCisJLnJlbGVh c2UJPSBkcm1fcmVsZWFzZSwKKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCisjaWZkZWYg Q09ORklHX0NPTVBBVAorCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAorI2VuZGlm CisJLnBvbGwJCT0gZHJtX3BvbGwsCisJLnJlYWQJCT0gZHJtX3JlYWQsCisJLmxsc2VlawkJPSBu b29wX2xsc2VlaywKKwkubW1hcAkJPSBkcm1fZ2VtX2NtYV9tbWFwLAorfTsKKworc3RhdGljIHN0 cnVjdCBkcm1fZHJpdmVyIG14c2ZiX2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzCT0gRFJJ VkVSX0dFTSB8IERSSVZFUl9NT0RFU0VUIHwKKwkJCQkgIERSSVZFUl9QUklNRSB8IERSSVZFUl9B VE9NSUMgfAorCQkJCSAgRFJJVkVSX0hBVkVfSVJRLAorCS5sYXN0Y2xvc2UJCT0gbXhzZmJfbGFz dGNsb3NlLAorCS5pcnFfaGFuZGxlcgkJPSBteHNmYl9pcnFfaGFuZGxlciwKKwkuaXJxX3ByZWlu c3RhbGwJCT0gbXhzZmJfaXJxX3ByZWluc3RhbGwsCisJLmlycV91bmluc3RhbGwJCT0gbXhzZmJf aXJxX3ByZWluc3RhbGwsCisJLmdldF92YmxhbmtfY291bnRlcgk9IGRybV92Ymxhbmtfbm9faHdf Y291bnRlciwKKwkuZW5hYmxlX3ZibGFuawkJPSBteHNmYl9lbmFibGVfdmJsYW5rLAorCS5kaXNh YmxlX3ZibGFuawkJPSBteHNmYl9kaXNhYmxlX3ZibGFuaywKKwkuZ2VtX2ZyZWVfb2JqZWN0CT0g ZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCisJLmdlbV92bV9vcHMJCT0gJmRybV9nZW1fY21hX3Zt X29wcywKKwkuZHVtYl9jcmVhdGUJCT0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsCisJLmR1bWJf bWFwX29mZnNldAk9IGRybV9nZW1fY21hX2R1bWJfbWFwX29mZnNldCwKKwkuZHVtYl9kZXN0cm95 CQk9IGRybV9nZW1fZHVtYl9kZXN0cm95LAorCS5wcmltZV9oYW5kbGVfdG9fZmQJPSBkcm1fZ2Vt X3ByaW1lX2hhbmRsZV90b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlCT0gZHJtX2dlbV9wcmlt ZV9mZF90b19oYW5kbGUsCisJLmdlbV9wcmltZV9leHBvcnQJPSBkcm1fZ2VtX3ByaW1lX2V4cG9y dCwKKwkuZ2VtX3ByaW1lX2ltcG9ydAk9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAorCS5nZW1fcHJp bWVfZ2V0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1f cHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxl LAorCS5nZW1fcHJpbWVfdm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJp bWVfdnVubWFwCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcAkJ PSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAorCS5mb3BzCT0gJmZvcHMsCisJLm5hbWUJPSAibXhz ZmItZHJtIiwKKwkuZGVzYwk9ICJNWFNGQiBDb250cm9sbGVyIERSTSIsCisJLmRhdGUJPSAiMjAx NjA4MjQiLAorCS5tYWpvcgk9IDEsCisJLm1pbm9yCT0gMCwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2lkIG14c2ZiX2RldnR5cGVbXSA9IHsKKwl7IC5uYW1lID0g ImlteDIzLWZiIiwgLmRyaXZlcl9kYXRhID0gTVhTRkJfVjMsIH0sCisJeyAubmFtZSA9ICJpbXgy OC1mYiIsIC5kcml2ZXJfZGF0YSA9IE1YU0ZCX1Y0LCB9LAorCXsgLm5hbWUgPSAiaW14NnN4LWZi IiwgLmRyaXZlcl9kYXRhID0gTVhTRkJfVjQsIH0sCisJeyAvKiBzZW50aW5lbCAqLyB9Cit9Owor TU9EVUxFX0RFVklDRV9UQUJMRShwbGF0Zm9ybSwgbXhzZmJfZGV2dHlwZSk7CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG14c2ZiX2R0X2lkc1tdID0geworCXsgLmNvbXBhdGli bGUgPSAiZnNsLGlteDIzLWxjZGlmIiwgLmRhdGEgPSAmbXhzZmJfZGV2dHlwZVswXSwgfSwKKwl7 IC5jb21wYXRpYmxlID0gImZzbCxpbXgyOC1sY2RpZiIsIC5kYXRhID0gJm14c2ZiX2RldnR5cGVb MV0sIH0sCisJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14NnN4LWxjZGlmIiwgLmRhdGEgPSAmbXhz ZmJfZGV2dHlwZVsyXSwgfSwKKwl7IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCBteHNmYl9kdF9pZHMpOworCitzdGF0aWMgaW50IG14c2ZiX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKwlj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZCA9CisJCQlvZl9tYXRjaF9kZXZpY2UobXhz ZmJfZHRfaWRzLCAmcGRldi0+ZGV2KTsKKwlpbnQgcmV0OworCisJaWYgKCFwZGV2LT5kZXYub2Zf bm9kZSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAob2ZfaWQpCisJCXBkZXYtPmlkX2VudHJ5 ID0gb2ZfaWQtPmRhdGE7CisKKwlkcm0gPSBkcm1fZGV2X2FsbG9jKCZteHNmYl9kcml2ZXIsICZw ZGV2LT5kZXYpOworCWlmICghZHJtKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IG14c2Zi X2xvYWQoZHJtLCAwKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVlOworCisJcmV0ID0gZHJt X2Rldl9yZWdpc3Rlcihkcm0sIDApOworCWlmIChyZXQpCisJCWdvdG8gZXJyX3VubG9hZDsKKwor CXJldHVybiAwOworCitlcnJfdW5sb2FkOgorCW14c2ZiX3VubG9hZChkcm0pOworZXJyX2ZyZWU6 CisJZHJtX2Rldl91bnJlZihkcm0pOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBt eHNmYl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwlkcm1fZGV2X3Vu cmVnaXN0ZXIoZHJtKTsKKwlteHNmYl91bmxvYWQoZHJtKTsKKwlkcm1fZGV2X3VucmVmKGRybSk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXhzZmJf cGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZQkJPSBteHNmYl9wcm9iZSwKKwkucmVtb3ZlCQk9 IG14c2ZiX3JlbW92ZSwKKwkuaWRfdGFibGUJPSBteHNmYl9kZXZ0eXBlLAorCS5kcml2ZXIJPSB7 CisJCS5uYW1lCQk9ICJteHNmYiIsCisJCS5vZl9tYXRjaF90YWJsZQk9IG14c2ZiX2R0X2lkcywK Kwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihteHNmYl9wbGF0Zm9ybV9kcml2ZXIp OworCitNT0RVTEVfQVVUSE9SKCJNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4iKTsKK01PRFVM RV9ERVNDUklQVElPTigiRnJlZXNjYWxlIE1YUyBEUk0vS01TIGRyaXZlciIpOworTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2ZiX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2ZiX2Rydi5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjVkMDg4M2YKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXhzZmIvbXhzZmJfZHJ2LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo dCAoQykgMjAxNiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KKyAqCisgKiBpLk1YMjMvaS5N WDI4L2kuTVg2U1ggTVhTRkIgTENEIGNvbnRyb2xsZXIgZHJpdmVyLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMgorICogb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpZm5kZWYgX19N WFNGQl9EUlZfSF9fCisjZGVmaW5lIF9fTVhTRkJfRFJWX0hfXworCitzdHJ1Y3QgbXhzZmJfZGV2 ZGF0YSB7CisJdW5zaWduZWQgaW50CSB0cmFuc2Zlcl9jb3VudDsKKwl1bnNpZ25lZCBpbnQJIGN1 cl9idWY7CisJdW5zaWduZWQgaW50CSBuZXh0X2J1ZjsKKwl1bnNpZ25lZCBpbnQJIGRlYnVnMDsK Kwl1bnNpZ25lZCBpbnQJIGhzX3dkdGhfbWFzazsKKwl1bnNpZ25lZCBpbnQJIGhzX3dkdGhfc2hp ZnQ7CisJdW5zaWduZWQgaW50CSBpcHZlcnNpb247Cit9OworCitzdHJ1Y3QgbXhzZmJfZHJtX3By aXZhdGUgeworCWNvbnN0IHN0cnVjdCBteHNmYl9kZXZkYXRhCSpkZXZkYXRhOworCisJdm9pZCBf X2lvbWVtCQkJKmJhc2U7CS8qIHJlZ2lzdGVycyAqLworCXN0cnVjdCBjbGsJCQkqY2xrOworCXN0 cnVjdCBjbGsJCQkqY2xrX2F4aTsKKwlzdHJ1Y3QgY2xrCQkJKmNsa19kaXNwX2F4aTsKKworCXN0 cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZQlwaXBlOworCXN0cnVjdCBkcm1fY29ubmVjdG9y CQljb25uZWN0b3I7CisJc3RydWN0IGRybV9wYW5lbAkJKnBhbmVsOworCXN0cnVjdCBkcm1fZmJk ZXZfY21hCQkqZmJkZXY7Cit9OworCitpbnQgbXhzZmJfc2V0dXBfY3J0YyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKK2ludCBteHNmYl9jcmVhdGVfb3V0cHV0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOworCit2b2lkIG14c2ZiX2VuYWJsZV9heGlfY2xrKHN0cnVjdCBteHNmYl9kcm1fcHJpdmF0 ZSAqbXhzZmIpOwordm9pZCBteHNmYl9kaXNhYmxlX2F4aV9jbGsoc3RydWN0IG14c2ZiX2RybV9w cml2YXRlICpteHNmYik7CisKK3ZvaWQgbXhzZmJfY3J0Y19lbmFibGUoc3RydWN0IG14c2ZiX2Ry bV9wcml2YXRlICpteHNmYik7Cit2b2lkIG14c2ZiX2NydGNfZGlzYWJsZShzdHJ1Y3QgbXhzZmJf ZHJtX3ByaXZhdGUgKm14c2ZiKTsKK3ZvaWQgbXhzZmJfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1 Y3QgbXhzZmJfZHJtX3ByaXZhdGUgKm14c2ZiLAorCQkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnN0YXRlKTsKKworI2VuZGlmIC8qIF9fTVhTRkJfRFJWX0hfXyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2ZiX291dC5jIGIvZHJpdmVycy9ncHUvZHJtL214 c2ZiL214c2ZiX291dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOGQx NzMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXhzZmIvbXhzZmJfb3V0LmMK QEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWFyZWsgVmFzdXQg PG1hcmV4QGRlbnguZGU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCisgKiBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+CisKKyNpbmNs dWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o PgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxw ZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1 ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21z X2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1QLmg+CisKKyNpbmNsdWRlICJteHNmYl9kcnYu aCIKKworc3RhdGljIHN0cnVjdCBteHNmYl9kcm1fcHJpdmF0ZSAqCitkcm1fY29ubmVjdG9yX3Rv X214c2ZiX2RybV9wcml2YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJ cmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCBteHNmYl9kcm1fcHJpdmF0ZSwg Y29ubmVjdG9yKTsKK30KKworc3RhdGljIGludCBteHNmYl9wYW5lbF9nZXRfbW9kZXMoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgbXhzZmJfZHJtX3ByaXZhdGUg Km14c2ZiID0KKwkJCWRybV9jb25uZWN0b3JfdG9fbXhzZmJfZHJtX3ByaXZhdGUoY29ubmVjdG9y KTsKKworCWlmIChteHNmYi0+cGFuZWwpCisJCXJldHVybiBteHNmYi0+cGFuZWwtPmZ1bmNzLT5n ZXRfbW9kZXMobXhzZmItPnBhbmVsKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0Citkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBteHNmYl9wYW5lbF9jb25uZWN0b3Jf aGVscGVyX2Z1bmNzID0geworCS5nZXRfbW9kZXMgPSBteHNmYl9wYW5lbF9nZXRfbW9kZXMsCit9 OworCitzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cworbXhzZmJfcGFuZWxfY29ubmVj dG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQor eworCXN0cnVjdCBteHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmIgPQorCQkJZHJtX2Nvbm5lY3Rvcl90 b19teHNmYl9kcm1fcHJpdmF0ZShjb25uZWN0b3IpOworCisJaWYgKG14c2ZiLT5wYW5lbCkKKwkJ cmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOworCisJcmV0dXJuIGNvbm5lY3Rvcl9z dGF0dXNfZGlzY29ubmVjdGVkOworfQorCitzdGF0aWMgdm9pZCBteHNmYl9wYW5lbF9jb25uZWN0 b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBt eHNmYl9kcm1fcHJpdmF0ZSAqbXhzZmIgPQorCQkJZHJtX2Nvbm5lY3Rvcl90b19teHNmYl9kcm1f cHJpdmF0ZShjb25uZWN0b3IpOworCisJaWYgKG14c2ZiLT5wYW5lbCkKKwkJZHJtX3BhbmVsX2Rl dGFjaChteHNmYi0+cGFuZWwpOworCisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rv cik7CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBteHNmYl9wYW5lbF9jb25uZWN0b3JfZnVuY3Mg PSB7CisJLmRwbXMJCQk9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAorCS5kZXRl Y3QJCQk9IG14c2ZiX3BhbmVsX2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmZpbGxfbW9kZXMJCT0gZHJt X2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXN0cm95CQk9IG14c2Zi X3BhbmVsX2Nvbm5lY3Rvcl9kZXN0cm95LAorCS5yZXNldAkJCT0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX3Jlc2V0LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlCT0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJ PSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRp YyBpbnQgbXhzZmJfYXR0YWNoX2VuZHBvaW50KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCisJCQkJ IGNvbnN0IHN0cnVjdCBvZl9lbmRwb2ludCAqZXApCit7CisJc3RydWN0IG14c2ZiX2RybV9wcml2 YXRlICpteHNmYiA9IGRybS0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsK KwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKKwlpbnQgcmV0ID0gLUVQUk9CRV9ERUZFUjsKKwor CW5wID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlcC0+bG9jYWxfbm9kZSk7CisJ cGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChucCk7CisJb2Zfbm9kZV9wdXQobnApOworCisJaWYg KCFwYW5lbCkKKwkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisKKwlteHNmYi0+Y29ubmVjdG9yLmRw bXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKKwlteHNmYi0+Y29ubmVjdG9yLnBvbGxlZCA9IDA7CisJ ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZteHNmYi0+Y29ubmVjdG9yLAorCQkJJm14c2ZiX3Bh bmVsX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOworCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChk cm0sICZteHNmYi0+Y29ubmVjdG9yLAorCQkJCSAmbXhzZmJfcGFuZWxfY29ubmVjdG9yX2Z1bmNz LAorCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfVW5rbm93bik7CisJaWYgKCFyZXQpCisJCW14c2Zi LT5wYW5lbCA9IHBhbmVsOworCisJcmV0dXJuIHJldDsKK30KKworaW50IG14c2ZiX2NyZWF0ZV9v dXRwdXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVw X25wID0gTlVMTDsKKwlzdHJ1Y3Qgb2ZfZW5kcG9pbnQgZXA7CisJaW50IHJldDsKKworCWZvcl9l YWNoX2VuZHBvaW50X29mX25vZGUoZHJtLT5kZXYtPm9mX25vZGUsIGVwX25wKSB7CisJCXJldCA9 IG9mX2dyYXBoX3BhcnNlX2VuZHBvaW50KGVwX25wLCAmZXApOworCQlpZiAoIXJldCkKKwkJCXJl dCA9IG14c2ZiX2F0dGFjaF9lbmRwb2ludChkcm0sICZlcCk7CisKKwkJaWYgKHJldCkgeworCQkJ b2Zfbm9kZV9wdXQoZXBfbnApOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKworCXJldHVybiAw OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL214c2ZiL214c2ZiX3JlZ3MuaCBiL2Ry aXZlcnMvZ3B1L2RybS9teHNmYi9teHNmYl9yZWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMzFkNjJjZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t eHNmYi9teHNmYl9yZWdzLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp IDIwMTAgSnVlcmdlbiBCZWlzZXJ0LCBQZW5ndXRyb25peAorICogQ29weXJpZ2h0IChDKSAyMDE2 IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorICoKKyAqIGkuTVgyMy9pLk1YMjgvaS5NWDZT WCBNWFNGQiBMQ0QgY29udHJvbGxlciBkcml2ZXIuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyCisgKiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfX01YU0ZCX1JFR1Nf SF9fCisjZGVmaW5lIF9fTVhTRkJfUkVHU19IX18KKworI2RlZmluZSBSRUdfU0VUCTQKKyNkZWZp bmUgUkVHX0NMUgk4CisKKyNkZWZpbmUgTENEQ19DVFJMCQkJMHgwMAorI2RlZmluZSBMQ0RDX0NU UkwxCQkJMHgxMAorI2RlZmluZSBMQ0RDX1YzX1RSQU5TRkVSX0NPVU5UCQkweDIwCisjZGVmaW5l IExDRENfVjRfVFJBTlNGRVJfQ09VTlQJCTB4MzAKKyNkZWZpbmUgTENEQ19WNF9DVVJfQlVGCQkJ MHg0MAorI2RlZmluZSBMQ0RDX1Y0X05FWFRfQlVGCQkweDUwCisjZGVmaW5lIExDRENfVjNfQ1VS X0JVRgkJCTB4MzAKKyNkZWZpbmUgTENEQ19WM19ORVhUX0JVRgkJMHg0MAorI2RlZmluZSBMQ0RD X1ZEQ1RSTDAJCQkweDcwCisjZGVmaW5lIExDRENfVkRDVFJMMQkJCTB4ODAKKyNkZWZpbmUgTENE Q19WRENUUkwyCQkJMHg5MAorI2RlZmluZSBMQ0RDX1ZEQ1RSTDMJCQkweGEwCisjZGVmaW5lIExD RENfVkRDVFJMNAkJCTB4YjAKKyNkZWZpbmUgTENEQ19WNF9ERUJVRzAJCQkweDFkMAorI2RlZmlu ZSBMQ0RDX1YzX0RFQlVHMAkJCTB4MWYwCisKKyNkZWZpbmUgQ1RSTF9TRlRSU1QJCQkoMSA8PCAz MSkKKyNkZWZpbmUgQ1RSTF9DTEtHQVRFCQkJKDEgPDwgMzApCisjZGVmaW5lIENUUkxfQllQQVNT X0NPVU5UCQkoMSA8PCAxOSkKKyNkZWZpbmUgQ1RSTF9WU1lOQ19NT0RFCQkJKDEgPDwgMTgpCisj ZGVmaW5lIENUUkxfRE9UQ0xLX01PREUJCSgxIDw8IDE3KQorI2RlZmluZSBDVFJMX0RBVEFfU0VM RUNUCQkoMSA8PCAxNikKKyNkZWZpbmUgQ1RSTF9TRVRfQlVTX1dJRFRIKHgpCQkoKCh4KSAmIDB4 MykgPDwgMTApCisjZGVmaW5lIENUUkxfR0VUX0JVU19XSURUSCh4KQkJKCgoeCkgPj4gMTApICYg MHgzKQorI2RlZmluZSBDVFJMX1NFVF9XT1JEX0xFTkdUSCh4KQkJKCgoeCkgJiAweDMpIDw8IDgp CisjZGVmaW5lIENUUkxfR0VUX1dPUkRfTEVOR1RIKHgpCQkoKCh4KSA+PiA4KSAmIDB4MykKKyNk ZWZpbmUgQ1RSTF9NQVNURVIJCQkoMSA8PCA1KQorI2RlZmluZSBDVFJMX0RGMTYJCQkoMSA8PCAz KQorI2RlZmluZSBDVFJMX0RGMTgJCQkoMSA8PCAyKQorI2RlZmluZSBDVFJMX0RGMjQJCQkoMSA8 PCAxKQorI2RlZmluZSBDVFJMX1JVTgkJCSgxIDw8IDApCisKKyNkZWZpbmUgQ1RSTDFfRklGT19D TEVBUgkJKDEgPDwgMjEpCisjZGVmaW5lIENUUkwxX1NFVF9CWVRFX1BBQ0tBR0lORyh4KQkoKCh4 KSAmIDB4ZikgPDwgMTYpCisjZGVmaW5lIENUUkwxX0dFVF9CWVRFX1BBQ0tBR0lORyh4KQkoKCh4 KSA+PiAxNikgJiAweGYpCisjZGVmaW5lIENUUkwxX0NVUl9GUkFNRV9ET05FX0lSUV9FTgkoMSA8 PCAxMykKKyNkZWZpbmUgQ1RSTDFfQ1VSX0ZSQU1FX0RPTkVfSVJRCSgxIDw8IDkpCisKKyNkZWZp bmUgVFJBTlNGRVJfQ09VTlRfU0VUX1ZDT1VOVCh4KQkoKCh4KSAmIDB4ZmZmZikgPDwgMTYpCisj ZGVmaW5lIFRSQU5TRkVSX0NPVU5UX0dFVF9WQ09VTlQoeCkJKCgoeCkgPj4gMTYpICYgMHhmZmZm KQorI2RlZmluZSBUUkFOU0ZFUl9DT1VOVF9TRVRfSENPVU5UKHgpCSgoeCkgJiAweGZmZmYpCisj ZGVmaW5lIFRSQU5TRkVSX0NPVU5UX0dFVF9IQ09VTlQoeCkJKCh4KSAmIDB4ZmZmZikKKworI2Rl ZmluZSBWRENUUkwwX0VOQUJMRV9QUkVTRU5UCQkoMSA8PCAyOCkKKyNkZWZpbmUgVkRDVFJMMF9W U1lOQ19BQ1RfSElHSAkJKDEgPDwgMjcpCisjZGVmaW5lIFZEQ1RSTDBfSFNZTkNfQUNUX0hJR0gJ CSgxIDw8IDI2KQorI2RlZmluZSBWRENUUkwwX0RPVENMS19BQ1RfRkFMTElORwkoMSA8PCAyNSkK KyNkZWZpbmUgVkRDVFJMMF9FTkFCTEVfQUNUX0hJR0gJCSgxIDw8IDI0KQorI2RlZmluZSBWRENU UkwwX1ZTWU5DX1BFUklPRF9VTklUCSgxIDw8IDIxKQorI2RlZmluZSBWRENUUkwwX1ZTWU5DX1BV TFNFX1dJRFRIX1VOSVQJKDEgPDwgMjApCisjZGVmaW5lIFZEQ1RSTDBfSEFMRl9MSU5FCQkoMSA8 PCAxOSkKKyNkZWZpbmUgVkRDVFJMMF9IQUxGX0xJTkVfTU9ERQkJKDEgPDwgMTgpCisjZGVmaW5l IFZEQ1RSTDBfU0VUX1ZTWU5DX1BVTFNFX1dJRFRIKHgpICgoeCkgJiAweDNmZmZmKQorI2RlZmlu ZSBWRENUUkwwX0dFVF9WU1lOQ19QVUxTRV9XSURUSCh4KSAoKHgpICYgMHgzZmZmZikKKworI2Rl ZmluZSBWRENUUkwyX1NFVF9IU1lOQ19QRVJJT0QoeCkJKCh4KSAmIDB4M2ZmZmYpCisjZGVmaW5l IFZEQ1RSTDJfR0VUX0hTWU5DX1BFUklPRCh4KQkoKHgpICYgMHgzZmZmZikKKworI2RlZmluZSBW RENUUkwzX01VWF9TWU5DX1NJR05BTFMJKDEgPDwgMjkpCisjZGVmaW5lIFZEQ1RSTDNfVlNZTkNf T05MWQkJKDEgPDwgMjgpCisjZGVmaW5lIFNFVF9IT1JfV0FJVF9DTlQoeCkJCSgoKHgpICYgMHhm ZmYpIDw8IDE2KQorI2RlZmluZSBHRVRfSE9SX1dBSVRfQ05UKHgpCQkoKCh4KSA+PiAxNikgJiAw eGZmZikKKyNkZWZpbmUgU0VUX1ZFUlRfV0FJVF9DTlQoeCkJCSgoeCkgJiAweGZmZmYpCisjZGVm aW5lIEdFVF9WRVJUX1dBSVRfQ05UKHgpCQkoKHgpICYgMHhmZmZmKQorCisjZGVmaW5lIFZEQ1RS TDRfU0VUX0RPVENMS19ETFkoeCkJKCgoeCkgJiAweDcpIDw8IDI5KSAvKiB2NCBvbmx5ICovCisj ZGVmaW5lIFZEQ1RSTDRfR0VUX0RPVENMS19ETFkoeCkJKCgoeCkgPj4gMjkpICYgMHg3KSAvKiB2 NCBvbmx5ICovCisjZGVmaW5lIFZEQ1RSTDRfU1lOQ19TSUdOQUxTX09OCQkoMSA8PCAxOCkKKyNk ZWZpbmUgU0VUX0RPVENMS19IX1ZBTElEX0RBVEFfQ05UKHgpCSgoeCkgJiAweDNmZmZmKQorCisj ZGVmaW5lIERFQlVHMF9IU1lOQwkJCSgxIDwgMjYpCisjZGVmaW5lIERFQlVHMF9WU1lOQwkJCSgx IDwgMjUpCisKKyNkZWZpbmUgTVhTRkJfTUlOX1hSRVMJCQkxMjAKKyNkZWZpbmUgTVhTRkJfTUlO X1lSRVMJCQkxMjAKKyNkZWZpbmUgTVhTRkJfTUFYX1hSRVMJCQkweGZmZmYKKyNkZWZpbmUgTVhT RkJfTUFYX1lSRVMJCQkweGZmZmYKKworI2RlZmluZSBSRUQgMAorI2RlZmluZSBHUkVFTiAxCisj ZGVmaW5lIEJMVUUgMgorI2RlZmluZSBUUkFOU1AgMworCisjZGVmaW5lIFNUTUxDRElGXzhCSVQg IDEgLyogcGl4ZWwgZGF0YSBidXMgdG8gdGhlIGRpc3BsYXkgaXMgb2YgOCBiaXQgd2lkdGggKi8K KyNkZWZpbmUgU1RNTENESUZfMTZCSVQgMCAvKiBwaXhlbCBkYXRhIGJ1cyB0byB0aGUgZGlzcGxh eSBpcyBvZiAxNiBiaXQgd2lkdGggKi8KKyNkZWZpbmUgU1RNTENESUZfMThCSVQgMiAvKiBwaXhl bCBkYXRhIGJ1cyB0byB0aGUgZGlzcGxheSBpcyBvZiAxOCBiaXQgd2lkdGggKi8KKyNkZWZpbmUg U1RNTENESUZfMjRCSVQgMyAvKiBwaXhlbCBkYXRhIGJ1cyB0byB0aGUgZGlzcGxheSBpcyBvZiAy NCBiaXQgd2lkdGggKi8KKworI2RlZmluZSBNWFNGQl9TWU5DX0RBVEFfRU5BQkxFX0hJR0hfQUNU CSgxIDw8IDYpCisjZGVmaW5lIE1YU0ZCX1NZTkNfRE9UQ0xLX0ZBTExJTkdfQUNUCSgxIDw8IDcp IC8qIG5lZ2F0aXZlIGVkZ2Ugc2FtcGxpbmcgKi8KKworI2VuZGlmIC8qIF9fTVhTRkJfUkVHU19I X18gKi8KLS0gCjIuMTAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==