From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C6F9C433B4 for ; Wed, 21 Apr 2021 15:03:59 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DE74F61426 for ; Wed, 21 Apr 2021 15:03:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DE74F61426 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7AC4C89A5C; Wed, 21 Apr 2021 15:03:57 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 12BB989A5C for ; Wed, 21 Apr 2021 15:03:57 +0000 (UTC) IronPort-SDR: V7NbEg4bBAlenwp15pS6UuKWkbJOO/RS1herY97azKsaPo0rm7L/ROJ6FaImjAq0ak3YJz1LhH Ui/n33A7Rb7Q== X-IronPort-AV: E=McAfee;i="6200,9189,9961"; a="195738588" X-IronPort-AV: E=Sophos;i="5.82,240,1613462400"; d="scan'208";a="195738588" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2021 08:03:56 -0700 IronPort-SDR: dMllCUBgHpxPtiyRRC+XfLOyOHR2D2LKlN9ouSkO+LFRYF3YUz0dR4yB110MSAVEV0lGJgGUK8 XgwjpYxuzYdA== X-IronPort-AV: E=Sophos;i="5.82,240,1613462400"; d="scan'208";a="463610526" Received: from uchalilx-mobl1.ger.corp.intel.com (HELO localhost) ([10.252.36.64]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2021 08:03:54 -0700 From: Jani Nikula To: Dale B Stimson , intel-gfx@lists.freedesktop.org In-Reply-To: <20210413212203.793-2-dale.b.stimson@intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20210413212203.793-1-dale.b.stimson@intel.com> <20210413212203.793-2-dale.b.stimson@intel.com> Date: Wed, 21 Apr 2021 18:03:51 +0300 Message-ID: <8735vj8yso.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v2 1/1] drm/i915/dg1: Add HWMON power sensor support X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAxMyBBcHIgMjAyMSwgRGFsZSBCIFN0aW1zb24gPGRhbGUuYi5zdGltc29uQGludGVs LmNvbT4gd3JvdGU6Cj4gQXMgcGFydCBvZiB0aGUgU3lzdGVtIE1hbmFnZW1lbmVudCBJbnRlcmZh Y2UgKFNNSSksIHVzZSB0aGUgSFdNT04KPiBzdWJzeXN0ZW0gdG8gZGlzcGxheSBwb3dlciB1dGls aXphdGlvbi4KPgo+IFRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgSFdNT04gcG93ZXIgc2Vuc29ycyBh cmUgY3VycmVudGx5IHN1cHBvcnRlZAo+IChhbmQgYXBwcm9wcmlhdGVseSBzY2FsZWQpOgo+ICAg L3N5cy9jbGFzcy9kcm0vY2FyZDAvZGV2aWNlL2h3bW9uL2h3bW9uPGk+Cj4gCS0gZW5lcmd5MV9p bnB1dAo+IAktIHBvd2VyMV9jYXAKPiAJLSBwb3dlcjFfbWF4Cj4KPiBTb21lIG5vbi1zdGFuZGFy ZCBIV01PTiBwb3dlciBpbmZvcm1hdGlvbiBpcyBhbHNvIHByb3ZpZGVkLCBzdWNoIGFzCj4gZW5h YmxlIGJpdHMgYW5kIGludGVydmFscy4KPgo+IFNpZ25lZC1vZmYtYnk6IERhbGUgQiBTdGltc29u IDxkYWxlLmIuc3RpbXNvbkBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L0tjb25maWcgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAg ICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICB8ICAgOSArCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaHdtb24uYyB8IDc4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9od21vbi5oIHwgIDQxICsrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICB8ICA1MyArKwo+ICA3IGZpbGVzIGNoYW5nZWQs IDg5NiBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2h3bW9uLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaHdtb24uaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gaW5kZXggMWUxY2IyNDVmY2E3 Ny4uZWM4ZDVhMGQ3ZWE5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29u ZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+IEBAIC0xNCw2ICsxNCw3 IEBAIGNvbmZpZyBEUk1fSTkxNQo+ICAJc2VsZWN0IERSTV9NSVBJX0RTSQo+ICAJc2VsZWN0IFJF TEFZCj4gIAlzZWxlY3QgSVJRX1dPUksKPiArCXNlbGVjdCBIV01PTgo+ICAJIyBpOTE1IGRlcGVu ZHMgb24gQUNQSV9WSURFTyB3aGVuIEFDUEkgaXMgZW5hYmxlZAo+ICAJIyBidXQgZm9yIHNlbGVj dCB0byB3b3JrLCBuZWVkIHRvIHNlbGVjdCBBQ1BJX1ZJREVPJ3MgZGVwZW5kZW5jaWVzLCBpY2sK PiAgCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFIGlmIEFDUEkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQo+IGluZGV4IGQwZDkzNmQ5MTM3YmMuLmUyMTNlMmIxMjllMjAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQo+IEBAIC0zNyw2ICszNyw3IEBAIGk5MTUteSArPSBpOTE1X2Rydi5vIFwKPiAg CSAgaTkxNV9jb25maWcubyBcCj4gIAkgIGk5MTVfaXJxLm8gXAo+ICAJICBpOTE1X2dldHBhcmFt Lm8gXAo+ICsJICBpOTE1X2h3bW9uLm8gXAo+ICAJICBpOTE1X21pdGlnYXRpb25zLm8gXAo+ICAJ ICBpOTE1X3BhcmFtcy5vIFwKPiAgCSAgaTkxNV9wY2kubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCj4gaW5kZXggMzA1NTU3ZTE5NDJhYS4uODRjN2RlM2IzNGM3ZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+IEBAIC02OSw2ICs2OSw3IEBACj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9k ZWJ1Z2ZzLmgiCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaTkxNV9od21v bi5oIgo+ICAjaW5jbHVkZSAiaTkxNV9pb2MzMi5oIgo+ICAjaW5jbHVkZSAiaTkxNV9pcnEuaCIK PiAgI2luY2x1ZGUgImk5MTVfbWVtY3B5LmgiCj4gQEAgLTY3NSw2ICs2NzYsMTAgQEAgc3RhdGlj IHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJaTkxNV9kZWJ1Z2ZzX3JlZ2lzdGVyKGRldl9wcml2KTsKPiAgCWk5MTVfc2V0dXBf c3lzZnMoZGV2X3ByaXYpOwo+ICAKPiArCS8qIFJlZ2lzdGVyIHdpdGggaHdtb24gKi8KPiArCWlm IChpOTE1X2h3bW9uX2luaXQoJmRldl9wcml2LT5kcm0pKQoKUGxlYXNlIHBhc3MgaW4gaTkxNSwg bm90IHN0cnVjdCBkcm1fZGV2aWNlLgoKVGhpcyBpcyBpOTE1X2RyaXZlcl9yZWdpc3Rlci4gQWxt b3N0IGFsbCBmdW5jdGlvbnMgYmVpbmcgaGF2ZSBfcmVnaXN0ZXIKaW4gdGhlbS4gV2h5IG5vdCB0 aGlzIG9uZT8KCj4gKwkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIkZhaWxlZCB0byByZWdpc3Rl ciBkcml2ZXIgaHdtb24hXG4iKTsKCk5vdCBzdXJlIHdlIHdhbnQgdGhpcyBlcnJvciBtZXNzYWdl IGF0IHRoaXMgbGV2ZWwuCgo+ICsKPiAgCS8qIERlcGVuZHMgb24gc3lzZnMgaGF2aW5nIGJlZW4g aW5pdGlhbGl6ZWQgKi8KPiAgCWk5MTVfcGVyZl9yZWdpc3RlcihkZXZfcHJpdik7Cj4gIAo+IEBA IC03MDksOSArNzE0LDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3VucmVnaXN0ZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfZ3RfZHJpdmVyX3VucmVn aXN0ZXIoJmRldl9wcml2LT5ndCk7Cj4gIAo+ICAJaTkxNV9wZXJmX3VucmVnaXN0ZXIoZGV2X3By aXYpOwo+ICsKPiArCWk5MTVfaHdtb25fZmluaSgmZGV2X3ByaXYtPmRybSk7Cj4gKwoKTmFtaW5n LCBhZ2FpbiBfdW5yZWdpc3RlciBpbiBtb3N0IHBsYWNlcy4KCj4gIAlpOTE1X3BtdV91bnJlZ2lz dGVyKGRldl9wcml2KTsKPiAgCj4gIAlpOTE1X3RlYXJkb3duX3N5c2ZzKGRldl9wcml2KTsKPiAr CgpTdHJheSBuZXdsaW5lLgoKPiAgCWRybV9kZXZfdW5wbHVnKCZkZXZfcHJpdi0+ZHJtKTsKPiAg Cj4gIAlpOTE1X2dlbV9kcml2ZXJfdW5yZWdpc3RlcihkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gaW5kZXggNjllNDNiZjkxYTE1My4uN2U5YjQ1MmM3N2UyYiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02MSw2ICs2MSw3IEBACj4gICNpbmNsdWRlIDxkcm0v ZHJtX2Nvbm5lY3Rvci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfbWVpX2hkY3BfaW50ZXJmYWNl Lmg+Cj4gIAo+ICsjaW5jbHVkZSAiaTkxNV9od21vbi5oIgo+ICAjaW5jbHVkZSAiaTkxNV9wYXJh bXMuaCIKPiAgI2luY2x1ZGUgImk5MTVfcmVnLmgiCj4gICNpbmNsdWRlICJpOTE1X3V0aWxzLmgi Cj4gQEAgLTExMDksNiArMTExMCw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCj4g IAlzdHJ1Y3QgaTkxNV9wZXJmIHBlcmY7Cj4gIAo+ICsJc3RydWN0IGk5MTVfaHdtb24gaHdtb247 Cj4gKwo+ICAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdhY3kgcmlu Z2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KPiAgCXN0cnVjdCBpbnRlbF9ndCBndDsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwMC4uYWI4ZjMyZjdlZDFkZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmMKPiBAQCAtMCwwICsxLDc4OCBAQAo+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKwoKU3VwZXJmbHVvdXMgbmV3bGluZS4K Cj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ ICsKPiArLyoKPiArICogUG93ZXItcmVsYXRlZCBod21vbiBlbnRyaWVzLgo+ICsgKi8KPiArCj4g KyNpbmNsdWRlIDxsaW51eC9od21vbi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaHdtb24tc3lzZnMu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYu aCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCj4gKyNpbmNsdWRlICJpOTE1X2h3bW9uLmgi Cj4gKwo+ICsvKgo+ICsgKiBTRl8qIC0gc2NhbGUgZmFjdG9ycyBmb3IgcGFydGljdWxhciBxdWFu dGl0aWVzLgo+ICsgKiBUaGUgaHdtb24gc3RhbmRhcmQgc2F5cyB0aGF0IHF1YW50aXRpZXMgb2Yg dGhlIGdpdmVuIHR5cGVzIGFyZSBzcGVjaWZpZWQKPiArICogaW4gdGhlIGdpdmVuIHVuaXRzOgo+ ICsgKiAtIHRpbWUgICAtIG1pbGxpc2Vjb25kcwo+ICsgKiAtIHBvd2VyICAtIG1pY3Jvd2F0dHMK PiArICogLSBlbmVyZ3kgLSBtaWNyb2pvdWxlcwo+ICsgKi8KPiArCj4gKyNkZWZpbmUgU0ZfVElN RQkJICAgMTAwMAo+ICsjZGVmaW5lIFNGX1BPV0VSCTEwMDAwMDAKPiArI2RlZmluZSBTRl9FTkVS R1kJMTAwMDAwMAo+ICsKPiArc3RhdGljIHZvaWQKPiArX2xvY2tlZF93aXRoX3BtX2ludGVsX3Vu Y29yZV9ybXcoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICsJCQkJIGk5MTVfcmVnX3Qg cmVnLCB1MzIgY2xlYXIsIHUzMiBzZXQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdW5jb3JlLT5pOTE1Owo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5 MTUtPmh3bW9uOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmaHdtb24tPmh3bW9uX2xvY2spOwo+ICsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNv cmUtPnJwbSwgd2FrZXJlZikKPiArCQlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgcmVnLCBjbGVh ciwgc2V0KTsKPiArCj4gKwltdXRleF91bmxvY2soJmh3bW9uLT5od21vbl9sb2NrKTsKPiArfQo+ ICsKPiArLyoKPiArICogX2ZpZWxkX3JlYWRfYW5kX3NjYWxlKCkKClVubmVjZXNzYXJ5IGlmIHRo aXMgaXNuJ3Qga2VybmVsLWRvYywgYW5kIHRoaXMgbmVlZCBub3QgYmUga2VybmVsLWRvYy4KCj4g KyAqIFJldHVybiB0eXBlIG9mIHU2NCBhbGxvd3MgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBzY2Fs aW5nIG1pZ2h0IGNhdXNlIGEKPiArICogcmVzdWx0IGV4Y2VlZGluZyAzMiBiaXRzLgo+ICsgKi8K PiArc3RhdGljIF9fYWx3YXlzX2lubGluZSB1NjQKCldoeSBfX2Fsd2F5c19pbmxpbmU/IFdoeSBu b3QgbGV0IHRoZSBjb21waWxlciBkZWNpZGUgd2hhdCBtYWtlcyBzZW5zZT8KCj4gK19maWVsZF9y ZWFkX2FuZF9zY2FsZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsIGk5MTVfcmVnX3Qgcmdh ZHIsCj4gKwkJICAgICAgdTMyIGZpZWxkX21zaywgaW50IG5zaGlmdCwgdW5zaWduZWQgaW50IHNj YWxlX2ZhY3RvcikKPiArewo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwl1MzIgcmVn X3ZhbHVlOwo+ICsJdTY0IHNjYWxlZF92YWw7Cj4gKwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3Bt KHVuY29yZS0+cnBtLCB3YWtlcmVmKQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwgcmdhZHIpOwo+ICsKPiArCXJlZ192YWx1ZSA9IGxlMzJfZ2V0X2JpdHMoY3B1X3Rv X2xlMzIocmVnX3ZhbHVlKSwgZmllbGRfbXNrKTsKPiArCXNjYWxlZF92YWwgPSBtdWxfdTMyX3Uz MihzY2FsZV9mYWN0b3IsIHJlZ192YWx1ZSk7Cj4gKwo+ICsJLyogU2hpZnQsIHJvdW5kaW5nIHRv IG5lYXJlc3QgKi8KPiArCWlmIChuc2hpZnQgPiAwKQo+ICsJCXNjYWxlZF92YWwgPSAoc2NhbGVk X3ZhbCArICgxIDw8IChuc2hpZnQgLSAxKSkpID4+IG5zaGlmdDsKPiArCj4gKwlyZXR1cm4gc2Nh bGVkX3ZhbDsKPiArfQo+ICsKPiArLyoKPiArICogX2ZpZWxkX3JlYWQ2NF9hbmRfc2NhbGUoKSAt IHJlYWQgYSA2NC1iaXQgcmVnaXN0ZXIgYW5kIHNjYWxlLgoKRGl0dG8gZm9yIGtlcm5lbC1kb2Mg c3R5bGUuCgo+ICsgKi8KPiArc3RhdGljIF9fYWx3YXlzX2lubGluZSB1NjQKCkRpdHRvIGZvciBf X2Fsd2F5c19pbmxpbmUuCgo+ICtfZmllbGRfcmVhZDY0X2FuZF9zY2FsZShzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUsIGk5MTVfcmVnX3QgcmdhZHIsCj4gKwkJCXU2NCBmaWVsZF9tc2ssIGlu dCBuc2hpZnQsIHVuc2lnbmVkIGludCBzY2FsZV9mYWN0b3IpCj4gK3sKPiArCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+ICsJdTY0IHJlZ192YWx1ZTsKPiArCXU2NCBzY2FsZWRfdmFsOwo+ICsK PiArCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2FrZXJlZikKPiArCQlyZWdf dmFsdWUgPSBpbnRlbF91bmNvcmVfcmVhZDY0KHVuY29yZSwgcmdhZHIpOwo+ICsKPiArCXJlZ192 YWx1ZSA9IGxlNjRfZ2V0X2JpdHMoY3B1X3RvX2xlNjQocmVnX3ZhbHVlKSwgZmllbGRfbXNrKTsK PiArCXNjYWxlZF92YWwgPSBzY2FsZV9mYWN0b3IgKiByZWdfdmFsdWU7Cj4gKwo+ICsJLyogU2hp ZnQsIHJvdW5kaW5nIHRvIG5lYXJlc3QgKi8KPiArCWlmIChuc2hpZnQgPiAwKQo+ICsJCXNjYWxl ZF92YWwgPSAoc2NhbGVkX3ZhbCArICgxIDw8IChuc2hpZnQgLSAxKSkpID4+IG5zaGlmdDsKPiAr Cj4gKwlyZXR1cm4gc2NhbGVkX3ZhbDsKPiArfQo+ICsKPiArLyoKPiArICogX2ZpZWxkX3NjYWxl X2FuZF93cml0ZSgpCj4gKyAqLwo+ICtzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQKPiArX2Zp ZWxkX3NjYWxlX2FuZF93cml0ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gKwkJICAg ICAgIGk5MTVfcmVnX3QgcmdhZHIsCj4gKwkJICAgICAgIHUzMiBmaWVsZF9tc2ssIGludCBuc2hp ZnQsCj4gKwkJICAgICAgIHVuc2lnbmVkIGludCBzY2FsZV9mYWN0b3IsIGxvbmcgbHZhbCkKPiAr ewo+ICsJdTMyIG52YWw7Cj4gKwl1MzIgYml0c190b19jbGVhcjsKPiArCXUzMiBiaXRzX3RvX3Nl dDsKPiArCj4gKwkvKiBDb21wdXRhdGlvbiBpbiA2NC1iaXRzIHRvIGF2b2lkIG92ZXJmbG93LiBS b3VuZCB0byBuZWFyZXN0LiAqLwo+ICsJbnZhbCA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCgodTY0 KWx2YWwgPDwgbnNoaWZ0LCBzY2FsZV9mYWN0b3IpOwo+ICsKPiArCWJpdHNfdG9fY2xlYXIgPSBm aWVsZF9tc2s7Cj4gKwliaXRzX3RvX3NldCA9IGxlMzJfdG9fY3B1KGxlMzJfZW5jb2RlX2JpdHMo bnZhbCwgZmllbGRfbXNrKSk7Cj4gKwo+ICsJX2xvY2tlZF93aXRoX3BtX2ludGVsX3VuY29yZV9y bXcodW5jb3JlLCByZ2FkciwKPiArCQkJCQkgYml0c190b19jbGVhciwgYml0c190b19zZXQpOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBpOTE1X2VuZXJneTFfaW5wdXRfc2hvdyAtIEEgY3VzdG9tIGZ1 bmN0aW9uIHRvIG9idGFpbiBlbmVyZ3kxX2lucHV0Lgo+ICsgKiBVc2UgYSBjdXN0b20gZnVuY3Rp b24gaW5zdGVhZCBvZiB0aGUgdXN1YWwgaHdtb24gaGVscGVycyBpbiBvcmRlciB0bwo+ICsgKiBn dWFyYW50ZWUgNjQtYml0cyBvZiByZXN1bHQgdG8gdXNlci1zcGFjZS4KPiArICogVW5pdHMgYXJl IG1pY3Jvam91bGVzLgo+ICsgKgo+ICsgKiBUaGUgdW5kZXJseWluZyBoYXJkd2FyZSByZWdpc3Rl ciBpcyAzMi1iaXRzIGFuZCBpcyBzdWJqZWN0IHRvIG92ZXJmbG93Lgo+ICsgKiBUaGlzIGZ1bmN0 aW9uIGNvbXBlbnNhdGVzIGZvciBvdmVyZmxvdyBvZiB0aGUgMzItYml0IHJlZ2lzdGVyIGJ5IGRl dGVjdGluZwo+ICsgKiB3cmFwLWFyb3VuZCBhbmQgaW5jcmVtZW50aW5nIGFuIG92ZXJmbG93IGNv dW50ZXIuCj4gKyAqIFRoaXMgb25seSB3b3JrcyBpZiB0aGUgcmVnaXN0ZXIgaXMgc2FtcGxlZCBv ZnRlbiBlbm91Z2ggdG8gYXZvaWQKPiArICogbWlzc2luZyBhbiBpbnN0YW5jZSBvZiBvdmVyZmxv dyAtIGFjaGlldmVkIGVpdGhlciBieSByZXBlYXRlZAo+ICsgKiBxdWVyaWVzIHRocm91Z2ggdGhl IEFQSSwgb3IgdmlhIGEgcG9zc2libGUgdGltZXIgKGZ1dHVyZSAtIFRCRCkgdGhhdAo+ICsgKiBl bnN1cmVzIHZhbHVlcyBhcmUgcmVhZCBvZnRlbiBlbm91Z2ggdG8gY2F0Y2ggYWxsIG92ZXJmbG93 cy4KPiArICoKPiArICogSG93IGxvbmcgYmVmb3JlIG92ZXJmbG93PyAgRm9yIGV4YW1wbGUsIHdp dGggYW4gZXhhbXBsZSBzY2FsaW5nIGJpdAo+ICsgKiBzaGlmdCBvZiAxNCBiaXRzIChzZWUgcmVn aXN0ZXIgKlBBQ0tBR0VfUE9XRVJfU0tVX1VOSVQpIGFuZCBhIHBvd2VyIGRyYXcgb2YKPiArICog MTAwMCB3YXR0cywgdGhlIDMyLWJpdCBjb3VudGVyIHdpbGwgb3ZlcmZsb3cgaW4gYXBwcm94aW1h dGVseSA0LjM2IG1pbnV0ZXMuCj4gKyAqCj4gKyAqIEV4YW1wbGVzOgo+ICsgKiAgICAxIHdhdHQ6 ICAoMl4zMiA+PiAxNCkgLyAgICAxIFcgLyAoNjAgKiA2MCAqIDI0KSBzZWNzL2RheSAtPiAzIGRh eXMKPiArICogMTAwMCB3YXR0czogKDJeMzIgPj4gMTQpIC8gMTAwMCBXIC8gNjAgICAgICAgICAg ICAgc2Vjcy9taW4gLT4gNC4zNiBtaW51dGVzCj4gKyAqLwo+ICtzdGF0aWMgc3NpemVfdAo+ICtp OTE1X2VuZXJneTFfaW5wdXRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLAo+ICsJCQljaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOwo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3 bW9uID0gJmk5MTUtPmh3bW9uOwo+ICsJaW50IG5zaGlmdCA9IGh3bW9uLT5zY2xfc2hpZnRfZW5l cmd5Owo+ICsJc3NpemVfdCByZXQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCXUz MiByZWdfdmFsdWU7Cj4gKwl1NjQgdmxvOwo+ICsJdTY0IHZoaTsKPiArCj4gKwltdXRleF9sb2Nr KCZod21vbi0+aHdtb25fbG9jayk7Cj4gKwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHVuY29y ZS0+cnBtLCB3YWtlcmVmKQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29y ZSwKPiArCQkJCQkgICAgICBod21vbi0+cmcucmVnX2VuZXJneV9zdGF0dXMpOwo+ICsKPiArCS8q Cj4gKwkgKiBUaGUgdTMyIHJlZ2lzdGVyIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSB1MzIgb3ZlcmZs b3cgY291bnRlcgo+ICsJICogZ2l2ZXMgYW4gZWZmZWN0aXZlIGVuZXJneSBjb3VudGVyIHNpemUg b2YgNjQtYml0cy4gIEhvd2V2ZXIsIHRoZQo+ICsJICogY29tcHV0YXRpb25zIGJlbG93IGFyZSBk b25lIG1vZHVsbyAyXjk2IHRvIGF2b2lkIG92ZXJmbG93IGR1cmluZwo+ICsJICogc2NhbGluZyBp biB0aGUgY29udmVyc2lvbiB0byBtaWNyb2pvdWxlcy4KPiArCSAqCj4gKwkgKiBUaGUgbG93LW9y ZGVyIDY0LWJpdHMgb2YgdGhlIHJlc3VsdGluZyBxdWFudGl0eSBhcmUgcmV0dXJuZWQgdG8KPiAr CSAqIHRoZSBjYWxsZXIgaW4gdW5pdHMgb2YgbWljcm9qb3VsZXMsIGVuY29kZWQgaW50byBhIGRl Y2ltYWwgc3RyaW5nLgo+ICsJICoKPiArCSAqIEZvciBhIHBvd2VyIG9mIDEwMDAgd2F0dHMsIDY0 IGJpdHMgaW4gdW5pdHMgb2YgbWljcm9qb3VsZXMgd2lsbAo+ICsJICogb3ZlcmZsb3cgYWZ0ZXIg NTg0IHllYXJzLgo+ICsJICovCj4gKwo+ICsJaWYgKGh3bW9uLT5lbmVyZ3lfY291bnRlcl9wcmV2 ID4gcmVnX3ZhbHVlKQo+ICsJCWh3bW9uLT5lbmVyZ3lfY291bnRlcl9vdmVyZmxvdysrOwo+ICsK PiArCWh3bW9uLT5lbmVyZ3lfY291bnRlcl9wcmV2ID0gcmVnX3ZhbHVlOwo+ICsKPiArCS8qCj4g KwkgKiA2NC1iaXQgdmFyaWFibGVzIHZsbyBhbmQgdmhpIGFyZSB1c2VkIGZvciB0aGUgc2NhbGlu ZyBwcm9jZXNzLgo+ICsJICogVGhlIDk2LWJpdCBjb3VudGVyIHZhbHVlIGlzIGNvbXBvc2VkIGZy b20gdGhlIHR3byA2NC1iaXQgdmFyaWFibGVzCj4gKwkgKiB2aGkgYW5kIHZsbyB0aHVzbHk6ICBj b3VudGVyID09IHZoaSA8PCAzMiArIHZsbyAuCj4gKwkgKiBUaGUgMzItYml0cyBvZiBvdmVybGFw IGJldHdlZW4gdGhlIHR3byB2YXJpYWJsZXMgaXMgY29udmVuaWVudCBmb3IKPiArCSAqIGhhbmRs aW5nIG92ZXJmbG93cyBvdXQgb2YgdmxvLgo+ICsJICovCj4gKwo+ICsJdmxvID0gcmVnX3ZhbHVl Owo+ICsJdmhpID0gaHdtb24tPmVuZXJneV9jb3VudGVyX292ZXJmbG93Owo+ICsKPiArCW11dGV4 X3VubG9jaygmaHdtb24tPmh3bW9uX2xvY2spOwo+ICsKPiArCXZsbyA9IFNGX0VORVJHWSAqIHZs bzsKPiArCj4gKwkvKiBQcmVwYXJlIHRvIHJvdW5kIHRvIG5lYXJlc3QgKi8KPiArCWlmIChuc2hp ZnQgPiAwKQo+ICsJCXZsbyArPSAxIDw8IChuc2hpZnQgLSAxKTsKPiArCj4gKwkvKgo+ICsJICog QW55dGhpbmcgaW4gdGhlIHVwcGVyLTMyIGJpdHMgb2YgdmxvIGdldHMgYWRkZWQgaW50byB2aGkg aGVyZSwKPiArCSAqIGFuZCB0aGVuIGNsZWFyZWQgZnJvbSB2bG8uCj4gKwkgKi8KPiArCXZoaSA9 IChTRl9FTkVSR1kgKiB2aGkpICsgKHZsbyA+PiAzMik7Cj4gKwl2bG8gJj0gMHhmZmZmZmZmZlVM TDsKPiArCj4gKwkvKgo+ICsJICogQXBwbHkgdGhlIHJpZ2h0IHNoaWZ0Lgo+ICsJICogLSB2bG8g c2hpZnRlZCBieSBpdHNlbGYuCj4gKwkgKiAtIHZsbyByZWNlaXZpbmcgd2hhdCdzIHNoaWZ0ZWQg b3V0IG9mIHZoaS4KPiArCSAqIC0gdmhpIHNoaWZ0ZWQgYnkgaXRzZWxmCj4gKwkgKi8KPiArCXZs byA9IHZsbyA+PiBuc2hpZnQ7Cj4gKwl2bG8gfD0gKHZoaSA8PCAoMzIgLSBuc2hpZnQpKSAmIDB4 ZmZmZmZmZmZVTEw7Cj4gKwl2aGkgPSB2aGkgPj4gbnNoaWZ0Owo+ICsKPiArCS8qIENvbWJpbmVk IHRvIGdldCBhIDY0LWJpdCByZXN1bHQgaW4gdmxvLiAqLwo+ICsJdmxvIHw9ICh2aGkgPDwgMzIp Owo+ICsKPiArCXJldCA9IHNjbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVsbHVcbiIsIHZsbyk7 CgpzeXNmc19lbWl0KCkgaW5zdGVhZD8KCj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIHNzaXplX3QKPiAraTkxNV9wb3dlcjFfbWF4X2VuYWJsZV9zaG93KHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCSAgICBjaGFyICpi dWYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGV2X2dldF9kcnZk YXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3Jl Owo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlzc2l6ZV90IHJldDsKPiArCXUzMiBy ZWdfdmFsdWU7Cj4gKwlib29sIGlzX2VuYWJsZWQ7Cj4gKwo+ICsJd2l0aF9pbnRlbF9ydW50aW1l X3BtKHVuY29yZS0+cnBtLCB3YWtlcmVmKQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3VuY29yZV9y ZWFkKHVuY29yZSwKPiArCQkJCQkgICAgICBpOTE1LT5od21vbi5yZy5wa2dfcmFwbF9saW1pdCk7 Cj4gKwo+ICsJaXNfZW5hYmxlZCA9ICEhKHJlZ192YWx1ZSAmIFBLR19QV1JfTElNXzFfRU4pOwo+ ICsKPiArCXJldCA9IHNjbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV1XG4iLCBpc19lbmFibGVk KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpOTE1 X3Bvd2VyMV9tYXhfZW5hYmxlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCSAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291 bnQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGV2X2dldF9kcnZk YXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3Jl Owo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOwo+ICsJc3NpemVf dCByZXQ7Cj4gKwl1MzIgdmFsOwo+ICsJdTMyIGJpdHNfdG9fY2xlYXI7Cj4gKwl1MzIgYml0c190 b19zZXQ7Cj4gKwo+ICsJcmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7Cj4gKwlpZiAocmV0 KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJYml0c190b19jbGVhciA9IFBLR19QV1JfTElNXzFf RU47Cj4gKwlpZiAoIXZhbCkKPiArCQliaXRzX3RvX3NldCA9IDA7Cj4gKwllbHNlCj4gKwkJYml0 c190b19zZXQgPSBQS0dfUFdSX0xJTV8xX0VOOwo+ICsKPiArCV9sb2NrZWRfd2l0aF9wbV9pbnRl bF91bmNvcmVfcm13KHVuY29yZSwgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0LAo+ICsJCQkJCSBi aXRzX3RvX2NsZWFyLCBiaXRzX3RvX3NldCk7Cj4gKwo+ICsJcmV0dXJuIGNvdW50Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpOTE1X3Bvd2VyMV9tYXhfaW50ZXJ2YWxfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgICAg ICBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGV2 X2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkx NS0+dW5jb3JlOwo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOwo+ ICsJc3NpemVfdCByZXQ7Cj4gKwl1NjQgdWxsdmFsOwo+ICsKPiArCXVsbHZhbCA9IF9maWVsZF9y ZWFkX2FuZF9zY2FsZSh1bmNvcmUsIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwKPiArCQkJCSAg ICAgICBQS0dfUFdSX0xJTV8xX1RJTUUsCj4gKwkJCQkgICAgICAgaHdtb24tPnNjbF9zaGlmdF90 aW1lLCBTRl9USU1FKTsKPiArCj4gKwlyZXQgPSBzY25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIl bGx1XG4iLCB1bGx2YWwpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBz c2l6ZV90Cj4gK2k5MTVfcG93ZXIxX21heF9pbnRlcnZhbF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAg ICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiArCXN0cnVjdCBpOTE1X2h3bW9uICpo d21vbiA9ICZpOTE1LT5od21vbjsKPiArCXNzaXplX3QgcmV0Owo+ICsJbG9uZyB2YWw7Cj4gKwo+ ICsJcmV0ID0ga3N0cnRvdWwoYnVmLCAwLCAmdmFsKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJu IHJldDsKPiArCj4gKwlfZmllbGRfc2NhbGVfYW5kX3dyaXRlKHVuY29yZSwgaHdtb24tPnJnLnBr Z19yYXBsX2xpbWl0LAo+ICsJCQkgICAgICAgUEtHX1BXUl9MSU1fMl9USU1FLAo+ICsJCQkgICAg ICAgaHdtb24tPnNjbF9zaGlmdF90aW1lLCBTRl9USU1FLCB2YWwpOwo+ICsKPiArCXJldHVybiBj b3VudDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAraTkxNV9wb3dlcjFfY2FwX2VuYWJs ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs Cj4gKwkJCSAgICBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUgPSAmaTkxNS0+dW5jb3JlOwo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUt Pmh3bW9uOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlzc2l6ZV90IHJldDsKPiAr CXUzMiByZWdfdmFsdWU7Cj4gKwlib29sIGlzX2VuYWJsZWQ7Cj4gKwo+ICsJd2l0aF9pbnRlbF9y dW50aW1lX3BtKHVuY29yZS0+cnBtLCB3YWtlcmVmKQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwKPiArCQkJCQkgICAgICBod21vbi0+cmcucGtnX3JhcGxfbGltaXRf dWR3KTsKPiArCj4gKwlpc19lbmFibGVkID0gISEocmVnX3ZhbHVlICYgUEtHX1BXUl9MSU1fMl9F Tik7Cj4gKwo+ICsJcmV0ID0gc2NucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIGlzX2Vu YWJsZWQpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4g K2k5MTVfcG93ZXIxX2NhcF9lbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVf dCBjb3VudCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51 bmNvcmU7Cj4gKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSAmaTkxNS0+aHdtb247Cj4gKwlz c2l6ZV90IHJldDsKPiArCXUzMiB2YWw7Cj4gKwl1MzIgYml0c190b19jbGVhcjsKPiArCXUzMiBi aXRzX3RvX3NldDsKPiArCj4gKwlyZXQgPSBrc3RydG91MzIoYnVmLCAwLCAmdmFsKTsKPiArCWlm IChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwliaXRzX3RvX2NsZWFyID0gUEtHX1BXUl9M SU1fMl9FTjsKPiArCWlmICghdmFsKQo+ICsJCWJpdHNfdG9fc2V0ID0gMDsKPiArCWVsc2UKPiAr CQliaXRzX3RvX3NldCA9IFBLR19QV1JfTElNXzJfRU47Cj4gKwo+ICsJX2xvY2tlZF93aXRoX3Bt X2ludGVsX3VuY29yZV9ybXcodW5jb3JlLCBod21vbi0+cmcucGtnX3JhcGxfbGltaXRfdWR3LAo+ ICsJCQkJCSBiaXRzX3RvX2NsZWFyLCBiaXRzX3RvX3NldCk7Cj4gKwo+ICsJcmV0dXJuIGNvdW50 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpOTE1X3Bvd2VyX2RlZmF1bHRfbGltaXRf c2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ ICsJCQkgICAgICBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24g PSAmaTkxNS0+aHdtb247Cj4gKwlzc2l6ZV90IHJldDsKPiArCj4gKwlyZXQgPSBzY25wcmludGYo YnVmLCBQQUdFX1NJWkUsICIldVxuIiwgaHdtb24tPnBvd2VyX21heF9pbml0aWFsX3ZhbHVlKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpOTE1X3Bv d2VyX21pbl9saW1pdF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsCj4gKwkJCSAgY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiArCXN0cnVjdCBpOTE1X2h3bW9uICpod21v biA9ICZpOTE1LT5od21vbjsKPiArCXNzaXplX3QgcmV0Owo+ICsJdTMyIHV2YWw7Cj4gKwo+ICsJ LyoKPiArCSAqIFRoaXMgaXMgYSA2NC1iaXQgcmVnaXN0ZXIgYnV0IHRoZSBpbmRpdmlkdWFsIGZp ZWxkcyBhcmUgdW5kZXIgMzIgYml0cwo+ICsJICogaW4gc2l6ZSBldmVuIGFmdGVyIHNjYWxpbmcu Cj4gKwkgKiBUaGUgVUFQSSBzcGVjaWZpZXMgYSBzaXplIG9mIDMyIGJpdHMuCj4gKwkgKiBUaGUg VUFQSSBzcGVjaWZpZXMgdGhhdCAwIHNob3VsZCBiZSByZXR1cm5lZCBpZiB1bnN1cHBvcnRlZC4K PiArCSAqIFNvLCB1c2luZyB1MzIgYW5kICV1IGlzIHN1ZmZpY2llbnQuCj4gKwkgKi8KPiArCWlm IChpOTE1X21taW9fcmVnX3ZhbGlkKGh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1KSkKPiArCQl1dmFs ID0gKHUzMilfZmllbGRfcmVhZDY0X2FuZF9zY2FsZSh1bmNvcmUsCj4gKwkJCQkJCSAgICBod21v bi0+cmcucGtnX3Bvd2VyX3NrdSwKPiArCQkJCQkJICAgIFBLR19NSU5fUFdSLAo+ICsJCQkJCQkg ICAgaHdtb24tPnNjbF9zaGlmdF9wb3dlciwKPiArCQkJCQkJICAgIFNGX1BPV0VSKTsKPiArCWVs c2UKPiArCQl1dmFsID0gMDsKPiArCj4gKwlyZXQgPSBzY25wcmludGYoYnVmLCBQQUdFX1NJWkUs ICIldVxuIiwgdXZhbCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHNz aXplX3QKPiAraTkxNV9wb3dlcl9tYXhfbGltaXRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgIGNoYXIgKmJ1ZikKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiAr CXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7Cj4gKwlzdHJ1Y3Qg aTkxNV9od21vbiAqaHdtb24gPSAmaTkxNS0+aHdtb247Cj4gKwlzc2l6ZV90IHJldDsKPiArCXUz MiB1dmFsOwo+ICsKPiArCS8qCj4gKwkgKiBUaGlzIGlzIGEgNjQtYml0IHJlZ2lzdGVyIGJ1dCB0 aGUgaW5kaXZpZHVhbCBmaWVsZHMgYXJlIHVuZGVyIDMyIGJpdHMKPiArCSAqIGluIHNpemUgZXZl biBhZnRlciBzY2FsaW5nLgo+ICsJICogVGhlIFVBUEkgc3BlY2lmaWVzIGEgc2l6ZSBvZiAzMiBi aXRzLgo+ICsJICogVGhlIFVBUEkgc3BlY2lmaWVzIHRoYXQgVUlOVF9NQVggc2hvdWxkIGJlIHJl dHVybmVkIGlmIHVuc3VwcG9ydGVkLgo+ICsJICogU28sIHVzaW5nIHUzMiBhbmQgJXUgaXMgc3Vm ZmljaWVudC4KPiArCSAqLwo+ICsJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQoaHdtb24tPnJnLnBr Z19wb3dlcl9za3UpKQo+ICsJCXV2YWwgPSAodTMyKV9maWVsZF9yZWFkNjRfYW5kX3NjYWxlKHVu Y29yZSwKPiArCQkJCQkJICAgIGh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1LAo+ICsJCQkJCQkgICAg UEtHX01BWF9QV1IsCj4gKwkJCQkJCSAgICBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLAo+ICsJCQkJ CQkgICAgU0ZfUE9XRVIpOwo+ICsJZWxzZQo+ICsJCXV2YWwgPSBVSU5UX01BWDsKPiArCj4gKwly ZXQgPSBzY25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgdXZhbCk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwb3dlcjFfbWF4 X2VuYWJsZSwgMDY2NCwKPiArCQkJICBpOTE1X3Bvd2VyMV9tYXhfZW5hYmxlX3Nob3csCj4gKwkJ CSAgaTkxNV9wb3dlcjFfbWF4X2VuYWJsZV9zdG9yZSwgMCk7Cj4gK3N0YXRpYyBTRU5TT1JfREVW SUNFX0FUVFIocG93ZXIxX21heF9pbnRlcnZhbCwgMDY2NCwKPiArCQkJICBpOTE1X3Bvd2VyMV9t YXhfaW50ZXJ2YWxfc2hvdywKPiArCQkJICBpOTE1X3Bvd2VyMV9tYXhfaW50ZXJ2YWxfc3RvcmUs IDApOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHBvd2VyMV9jYXBfZW5hYmxlLCAwNjY0 LAo+ICsJCQkgIGk5MTVfcG93ZXIxX2NhcF9lbmFibGVfc2hvdywKPiArCQkJICBpOTE1X3Bvd2Vy MV9jYXBfZW5hYmxlX3N0b3JlLCAwKTsKPiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwb3dl cl9kZWZhdWx0X2xpbWl0LCAwNDQ0LAo+ICsJCQkgIGk5MTVfcG93ZXJfZGVmYXVsdF9saW1pdF9z aG93LCBOVUxMLCAwKTsKPiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwb3dlcl9taW5fbGlt aXQsIDA0NDQsCj4gKwkJCSAgaTkxNV9wb3dlcl9taW5fbGltaXRfc2hvdywgTlVMTCwgMCk7Cj4g K3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocG93ZXJfbWF4X2xpbWl0LCAwNDQ0LAo+ICsJCQkg IGk5MTVfcG93ZXJfbWF4X2xpbWl0X3Nob3csIE5VTEwsIDApOwo+ICtzdGF0aWMgU0VOU09SX0RF VklDRV9BVFRSKGVuZXJneTFfaW5wdXQsIDA0NDQsCj4gKwkJCSAgaTkxNV9lbmVyZ3kxX2lucHV0 X3Nob3csIE5VTEwsIDApOwo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmh3bW9uX2F0 dHJpYnV0ZXNbXSA9IHsKPiArCSZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX21heF9lbmFibGUuZGV2 X2F0dHIuYXR0ciwKPiArCSZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX21heF9pbnRlcnZhbC5kZXZf YXR0ci5hdHRyLAo+ICsJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfY2FwX2VuYWJsZS5kZXZfYXR0 ci5hdHRyLAo+ICsJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9kZWZhdWx0X2xpbWl0LmRldl9hdHRy LmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX21pbl9saW1pdC5kZXZfYXR0ci5hdHRy LAo+ICsJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9tYXhfbGltaXQuZGV2X2F0dHIuYXR0ciwKPiAr CSZzZW5zb3JfZGV2X2F0dHJfZW5lcmd5MV9pbnB1dC5kZXZfYXR0ci5hdHRyLAo+ICsJTlVMTAo+ ICt9Owo+ICsKPiArc3RhdGljIHVtb2RlX3QgaHdtb25fYXR0cmlidXRlc192aXNpYmxlKHN0cnVj dCBrb2JqZWN0ICprb2JqLAo+ICsJCQkJCXN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGludCBpbmRl eCkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJ c3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOwo+ICsJaTkxNV9yZWdfdCBy Z2FkcjsKPiArCj4gKwlpZiAoYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2VuZXJneTFfaW5wdXQu ZGV2X2F0dHIuYXR0cikKPiArCQlyZ2FkciA9IGh3bW9uLT5yZy5yZWdfZW5lcmd5X3N0YXR1czsK PiArCWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfbWF4X2VuYWJsZS5k ZXZfYXR0ci5hdHRyKQo+ICsJCXJnYWRyID0gaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0Owo+ICsJ ZWxzZSBpZiAoYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyMV9tYXhfaW50ZXJ2YWwuZGV2 X2F0dHIuYXR0cikKPiArCQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdDsKPiArCWVs c2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfY2FwX2VuYWJsZS5kZXZfYXR0 ci5hdHRyKQo+ICsJCXJnYWRyID0gaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdzsKPiArCWVs c2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9kZWZhdWx0X2xpbWl0LmRldl9h dHRyLmF0dHIpCj4gKwkJcmdhZHIgPSBod21vbi0+cmcucGtnX3JhcGxfbGltaXQ7Cj4gKwllbHNl IGlmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcG93ZXJfbWluX2xpbWl0LmRldl9hdHRyLmF0 dHIpCj4gKwkJcmV0dXJuIGF0dHItPm1vZGU7Cj4gKwllbHNlIGlmIChhdHRyID09ICZzZW5zb3Jf ZGV2X2F0dHJfcG93ZXJfbWF4X2xpbWl0LmRldl9hdHRyLmF0dHIpCj4gKwkJcmV0dXJuIGF0dHIt Pm1vZGU7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKCFpOTE1X21taW9fcmVn X3ZhbGlkKHJnYWRyKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyZXR1cm4gYXR0ci0+bW9kZTsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgaHdtb25fYXR0 cmdyb3VwID0gewo+ICsJLmF0dHJzID0gaHdtb25fYXR0cmlidXRlcywKPiArCS5pc192aXNpYmxl ID0gaHdtb25fYXR0cmlidXRlc192aXNpYmxlLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmh3bW9uX2dyb3Vwc1tdID0gewo+ICsJJmh3bW9uX2F0dHJn cm91cCwKPiArCU5VTEwKPiArfTsKPiArCj4gKy8qCj4gKyAqIEhXTU9OIFNFTlNPUiBUWVBFID0g aHdtb25fcG93ZXIKPiArICogIC0gU3VzdGFpbmVkIFBvd2VyIChwb3dlcjFfbWF4KQo+ICsgKiAg LSBCdXJzdCBwb3dlciAgICAgKHBvd2VyMV9jYXApCj4gKyAqICAtIFBlYWsgcG93ZXIgICAgICAo cG93ZXIxX2NyaXQpCj4gKyAqLwo+ICtzdGF0aWMgY29uc3QgdTMyIGk5MTVfY29uZmlnX3Bvd2Vy W10gPSB7Cj4gKwlIV01PTl9QX0NBUCB8IEhXTU9OX1BfTUFYLAo+ICsJMAo+ICt9Owo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGFubmVsX2luZm8gaTkxNV9wb3dlciA9IHsKPiAr CS50eXBlID0gaHdtb25fcG93ZXIsCj4gKwkuY29uZmlnID0gaTkxNV9jb25maWdfcG93ZXIsCj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX2NoYW5uZWxfaW5mbyAqaTkxNV9p bmZvW10gPSB7Cj4gKwkmaTkxNV9wb3dlciwKPiArCU5VTEwKPiArfTsKPiArCj4gK3N0YXRpYyB1 bW9kZV90Cj4gK2k5MTVfcG93ZXJfaXNfdmlzaWJsZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgdTMyIGF0dHIsIGludCBjaGFuKQo+ICt7Cj4gKwlpOTE1X3JlZ190IHJnYWRy Owo+ICsKPiArCXN3aXRjaCAoYXR0cikgewo+ICsJY2FzZSBod21vbl9wb3dlcl9tYXg6Cj4gKwkJ cmdhZHIgPSBpOTE1LT5od21vbi5yZy5wa2dfcmFwbF9saW1pdDsKPiArCQlicmVhazsKPiArCWNh c2UgaHdtb25fcG93ZXJfY2FwOgo+ICsJCXJnYWRyID0gaTkxNS0+aHdtb24ucmcucGtnX3JhcGxf bGltaXRfdWR3Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gMDsKPiArCX0K PiArCj4gKwlpZiAoIWk5MTVfbW1pb19yZWdfdmFsaWQocmdhZHIpKQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCXJldHVybiAwNjY0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2k5MTVfcG93ZXJf cmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIGF0dHIsIGludCBjaGFuLCBs b25nICp2YWwpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51 bmNvcmU7Cj4gKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSAmaTkxNS0+aHdtb247Cj4gKwlp bnQgcmV0ID0gMDsKPiArCj4gKwlzd2l0Y2ggKGF0dHIpIHsKPiArCWNhc2UgaHdtb25fcG93ZXJf bWF4Ogo+ICsJCSp2YWwgPSAobG9uZylfZmllbGRfcmVhZF9hbmRfc2NhbGUodW5jb3JlLAo+ICsJ CQkJCQkgICBod21vbi0+cmcucGtnX3JhcGxfbGltaXQsCj4gKwkJCQkJCSAgIFBLR19QV1JfTElN XzEsCj4gKwkJCQkJCSAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCj4gKwkJCQkJCSAgIFNGX1BP V0VSKTsKPiArCQlicmVhazsKPiArCWNhc2UgaHdtb25fcG93ZXJfY2FwOgo+ICsJCSp2YWwgPSAo bG9uZylfZmllbGRfcmVhZF9hbmRfc2NhbGUodW5jb3JlLAo+ICsJCQkJCQkgICBod21vbi0+cmcu cGtnX3JhcGxfbGltaXRfdWR3LAo+ICsJCQkJCQkgICBQS0dfUFdSX0xJTV8yLAo+ICsJCQkJCQkg ICBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLAo+ICsJCQkJCQkgICBTRl9QT1dFUik7Cj4gKwkJYnJl YWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldCA9IC1FT1BOT1RTVVBQOwo+ICsJfQo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAraTkxNV9wb3dlcl93cml0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIGF0dHIsIGludCBjaGFuLCBsb25nIHZhbCkK PiArewo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiAr CXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5od21vbjsKPiArCWludCByZXQgPSAw Owo+ICsKPiArCXN3aXRjaCAoYXR0cikgewo+ICsJY2FzZSBod21vbl9wb3dlcl9tYXg6Cj4gKwkJ X2ZpZWxkX3NjYWxlX2FuZF93cml0ZSh1bmNvcmUsCj4gKwkJCQkgICAgICAgaHdtb24tPnJnLnBr Z19yYXBsX2xpbWl0LAo+ICsJCQkJICAgICAgIFBLR19QV1JfTElNXzEsCj4gKwkJCQkgICAgICAg aHdtb24tPnNjbF9zaGlmdF9wb3dlciwKPiArCQkJCSAgICAgICBTRl9QT1dFUiwgdmFsKTsKPiAr CQlicmVhazsKPiArCWNhc2UgaHdtb25fcG93ZXJfY2FwOgo+ICsJCV9maWVsZF9zY2FsZV9hbmRf d3JpdGUodW5jb3JlLAo+ICsJCQkJICAgICAgIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdF91ZHcs Cj4gKwkJCQkgICAgICAgUEtHX1BXUl9MSU1fMiwKPiArCQkJCSAgICAgICBod21vbi0+c2NsX3No aWZ0X3Bvd2VyLAo+ICsJCQkJICAgICAgIFNGX1BPV0VSLCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJ ZGVmYXVsdDoKPiArCQlyZXQgPSAtRU9QTk9UU1VQUDsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdW1vZGVfdAo+ICtpOTE1X2lzX3Zpc2libGUoY29uc3Qgdm9p ZCAqZGF0YSwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwKPiArCQl1MzIgYXR0ciwgaW50 IGNoYW5uZWwpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICopZGF0YTsKPiArCj4gKwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNh c2UgaHdtb25fcG93ZXI6Cj4gKwkJcmV0dXJuIGk5MTVfcG93ZXJfaXNfdmlzaWJsZShpOTE1LCBh dHRyLCBjaGFubmVsKTsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQKPiAraTkxNV9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBod21v bl9zZW5zb3JfdHlwZXMgdHlwZSwgdTMyIGF0dHIsCj4gKwkgIGludCBjaGFubmVsLCBsb25nICp2 YWwpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0ga2Rldl90b19pOTE1 KGRldik7Cj4gKwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIGh3bW9uX3Bvd2VyOgo+ICsJ CXJldHVybiBpOTE1X3Bvd2VyX3JlYWQoaTkxNSwgYXR0ciwgY2hhbm5lbCwgdmFsKTsKPiArCWRl ZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50Cj4gK2k5MTVfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9uX3NlbnNvcl90 eXBlcyB0eXBlLCB1MzIgYXR0ciwKPiArCSAgIGludCBjaGFubmVsLCBsb25nIHZhbCkKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X3RvX2k5MTUoZGV2KTsKPiAr Cj4gKwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNhc2UgaHdtb25fcG93ZXI6Cj4gKwkJcmV0dXJuIGk5 MTVfcG93ZXJfd3JpdGUoaTkxNSwgYXR0ciwgY2hhbm5lbCwgdmFsKTsKPiArCWRlZmF1bHQ6Cj4g KwkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGh3bW9uX29wcyBpOTE1X2h3bW9uX29wcyA9IHsKPiArCS5pc192aXNpYmxlID0gaTkxNV9p c192aXNpYmxlLAo+ICsJLnJlYWQgPSBpOTE1X3JlYWQsCj4gKwkud3JpdGUgPSBpOTE1X3dyaXRl LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gaTkxNV9j aGlwX2luZm8gPSB7Cj4gKwkub3BzID0gJmk5MTVfaHdtb25fb3BzLAo+ICsJLmluZm8gPSBpOTE1 X2luZm8sCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtpOTE1X2h3bW9uX2dldF9wcmVyZWdp c3RyYXRpb25faW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3Ry dWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOwo+ICsJc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+ICsJdTMyIHZhbF9za3VfdW5pdDsKPiArCV9fbGUzMiBsZV9za3VfdW5pdDsKPiArCj4gKwlp ZiAoSVNfREcxKGk5MTUpKSB7Cj4gKwkJaHdtb24tPnJnLnBrZ19wb3dlcl9za3VfdW5pdCA9IFBD VV9QQUNLQUdFX1BPV0VSX1NLVV9VTklUOwo+ICsJCWh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1ID0g UENVX1BBQ0tBR0VfUE9XRVJfU0tVOwo+ICsJCWh3bW9uLT5yZy5wa2dfZW5lcmd5X3N0YXR1cyA9 IFBDVV9QQUNLQUdFX0VORVJHWV9TVEFUVVM7Cj4gKwkJaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0 ID0gUENVX1BBQ0tBR0VfUkFQTF9MSU1JVDsKPiArCQlod21vbi0+cmcucGtnX3JhcGxfbGltaXRf dWR3ID0gUENVX1BBQ0tBR0VfUkFQTF9MSU1JVF9VRFc7Cj4gKwkJaHdtb24tPnJnLnBsdF9lbmVy Z3lfc3RhdHVzID0gUENVX1BMQVRGT1JNX0VORVJHWV9TVEFUVVM7Cj4gKwl9IGVsc2Ugewo+ICsJ CWh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1X3VuaXQgPSBJTlZBTElEX01NSU9fUkVHOwo+ICsJCWh3 bW9uLT5yZy5wa2dfcG93ZXJfc2t1ID0gSU5WQUxJRF9NTUlPX1JFRzsKPiArCQlod21vbi0+cmcu cGtnX2VuZXJneV9zdGF0dXMgPSBJTlZBTElEX01NSU9fUkVHOwo+ICsJCWh3bW9uLT5yZy5wa2df cmFwbF9saW1pdCA9IElOVkFMSURfTU1JT19SRUc7Cj4gKwkJaHdtb24tPnJnLnBrZ19yYXBsX2xp bWl0X3VkdyA9IElOVkFMSURfTU1JT19SRUc7Cj4gKwkJaHdtb24tPnJnLnBsdF9lbmVyZ3lfc3Rh dHVzID0gSU5WQUxJRF9NTUlPX1JFRzsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogSWYgYSBwbGF0 Zm9ybSBkb2VzIG5vdCBzdXBwb3J0ICpfUExBVEZPUk1fRU5FUkdZX1NUQVRVUywKPiArCSAqIHRy eSAqUEFDS0FHRV9FTkVSR1lfU1RBVFVTLgo+ICsJICovCj4gKwlpZiAoaTkxNV9tbWlvX3JlZ192 YWxpZChod21vbi0+cmcucGx0X2VuZXJneV9zdGF0dXMpKQo+ICsJCWh3bW9uLT5yZy5yZWdfZW5l cmd5X3N0YXR1cyA9IGh3bW9uLT5yZy5wbHRfZW5lcmd5X3N0YXR1czsKPiArCWVsc2UKPiArCQlo d21vbi0+cmcucmVnX2VuZXJneV9zdGF0dXMgPSBod21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXM7 Cj4gKwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KHVuY29yZS0+cnBtKTsKPiAr Cj4gKwkvKgo+ICsJICogVGhlIGNvbnRlbnRzIG9mIHJlZ2lzdGVyIGh3bW9uLT5yZy5wa2dfcG93 ZXJfc2t1X3VuaXQgZG8gbm90IGNoYW5nZSwKPiArCSAqIHNvIHJlYWQgaXQgb25jZSBhbmQgc3Rv cmUgdGhlIHNoaWZ0IHZhbHVlcy4KPiArCSAqLwo+ICsJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQo aHdtb24tPnJnLnBrZ19wb3dlcl9za3VfdW5pdCkpCj4gKwkJdmFsX3NrdV91bml0ID0gaW50ZWxf dW5jb3JlX3JlYWQodW5jb3JlLAo+ICsJCQkJCQkgaHdtb24tPnJnLnBrZ19wb3dlcl9za3VfdW5p dCk7Cj4gKwllbHNlCj4gKwkJdmFsX3NrdV91bml0ID0gMDsKPiArCj4gKwlod21vbi0+ZW5lcmd5 X2NvdW50ZXJfb3ZlcmZsb3cgPSAwOwo+ICsKPiArCWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKGh3 bW9uLT5yZy5yZWdfZW5lcmd5X3N0YXR1cykpCj4gKwkJaHdtb24tPmVuZXJneV9jb3VudGVyX3By ZXYgPQo+ICsJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIGh3bW9uLT5yZy5yZWdfZW5lcmd5 X3N0YXR1cyk7Cj4gKwllbHNlCj4gKwkJaHdtb24tPmVuZXJneV9jb3VudGVyX3ByZXYgPSAwOwo+ ICsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KHVuY29yZS0+cnBtLCB3YWtlcmVmKTsKPiArCj4g KwlsZV9za3VfdW5pdCA9IGNwdV90b19sZTMyKHZhbF9za3VfdW5pdCk7Cj4gKwlod21vbi0+c2Ns X3NoaWZ0X3Bvd2VyID0gbGUzMl9nZXRfYml0cyhsZV9za3VfdW5pdCwgUEtHX1BXUl9VTklUKTsK PiArCWh3bW9uLT5zY2xfc2hpZnRfZW5lcmd5ID0gbGUzMl9nZXRfYml0cyhsZV9za3VfdW5pdCwg UEtHX0VORVJHWV9VTklUKTsKPiArCWh3bW9uLT5zY2xfc2hpZnRfdGltZSA9IGxlMzJfZ2V0X2Jp dHMobGVfc2t1X3VuaXQsIFBLR19USU1FX1VOSVQpOwo+ICsKPiArCS8qCj4gKwkgKiBUaGVyZSBp cyBubyBkaXJlY3Qgd2F5IHRvIG9idGFpbiB0aGUgcG93ZXIgZGVmYXVsdF9saW1pdC4KPiArCSAq IFRoZSBiZXN0IGtub3duIHdvcmthcm91bmQgaXMgdG8gdXNlIHRoZSBpbml0aWFsIHZhbHVlIG9m IHBvd2VyMV9tYXguCj4gKwkgKgo+ICsJICogVGhlIHZhbHVlIG9mIHBvd2VyMV9tYXggaXMgcmVz ZXQgdG8gdGhlIGRlZmF1bHQgb24gcmVib290LCBidXQgaXMKPiArCSAqIG5vdCByZXNldCBieSBh IG1vZHVsZSB1bmxvYWQvbG9hZCBzZXF1ZW5jZS4gIFRvIGFsbG93IHByb3Blcgo+ICsJICogZnVu Y3Rpb25pbmcgYWZ0ZXIgYSBtb2R1bGUgcmVsb2FkLCB0aGUgdmFsdWUgZm9yIHBvd2VyMV9tYXgg aXMKPiArCSAqIHJlc3RvcmVkIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBhdCBtb2R1bGUgdW5sb2Fk IHRpbWUgaW4KPiArCSAqIGk5MTVfaHdtb25fZmluaSgpLgo+ICsJICovCj4gKwlod21vbi0+cG93 ZXJfbWF4X2luaXRpYWxfdmFsdWUgPQo+ICsJCSh1MzIpX2ZpZWxkX3JlYWRfYW5kX3NjYWxlKHVu Y29yZSwKPiArCQkJCQkgICBod21vbi0+cmcucGtnX3JhcGxfbGltaXQsCj4gKwkJCQkJICAgUEtH X1BXUl9MSU1fMSwKPiArCQkJCQkgICBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLCBTRl9QT1dFUik7 Cj4gK30KPiArCj4gK2ludCBpOTE1X2h3bW9uX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybV9k ZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkcm1f ZGV2KTsKPiArCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5od21vbjsKPiArCXN0 cnVjdCBkZXZpY2UgKmh3bW9uX2RldjsKPiArCj4gKwltdXRleF9pbml0KCZod21vbi0+aHdtb25f bG9jayk7Cj4gKwo+ICsJaTkxNV9od21vbl9nZXRfcHJlcmVnaXN0cmF0aW9uX2luZm8oaTkxNSk7 Cj4gKwo+ICsJaHdtb25fZGV2ID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5mbyhkcm1f ZGV2LT5kZXYsICJpOTE1IiwKPiArCQkJCQkJICAgIGRybV9kZXYsCj4gKwkJCQkJCSAgICAmaTkx NV9jaGlwX2luZm8sCj4gKwkJCQkJCSAgICBod21vbl9ncm91cHMpOwo+ICsKPiArCWlmIChJU19F UlIoaHdtb25fZGV2KSkgewo+ICsJCW11dGV4X2Rlc3Ryb3koJmh3bW9uLT5od21vbl9sb2NrKTsK PiArCQlyZXR1cm4gUFRSX0VSUihod21vbl9kZXYpOwo+ICsJfQo+ICsKPiArCWh3bW9uLT5kZXYg PSBod21vbl9kZXY7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9od21v bl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZHJtX2Rldik7Cj4gKwlzdHJ1Y3QgaTkxNV9od21v biAqaHdtb24gPSAmaTkxNS0+aHdtb247Cj4gKwo+ICsJaWYgKGh3bW9uLT5wb3dlcl9tYXhfaW5p dGlhbF92YWx1ZSkgewo+ICsJCS8qIFJlc3RvcmUgcG93ZXIxX21heC4gKi8KPiArCQlfZmllbGRf c2NhbGVfYW5kX3dyaXRlKCZpOTE1LT51bmNvcmUsIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwK PiArCQkJCSAgICAgICBQS0dfUFdSX0xJTV8xLCBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLAo+ICsJ CQkJICAgICAgIFNGX1BPV0VSLAo+ICsJCQkJICAgICAgIGh3bW9uLT5wb3dlcl9tYXhfaW5pdGlh bF92YWx1ZSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGh3bW9uLT5kZXYpCj4gKwkJaHdtb25fZGV2aWNl X3VucmVnaXN0ZXIoaHdtb24tPmRldik7Cj4gKwo+ICsJbXV0ZXhfZGVzdHJveSgmaHdtb24tPmh3 bW9uX2xvY2spOwo+ICsKPiArCW1lbXNldChod21vbiwgMCwgc2l6ZW9mKCpod21vbikpOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwMC4uMGJlOTE5ZjBhNDYzZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmgKPiBAQCAtMCwwICsxLDQxIEBACj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KPiArCj4gKy8qCj4gKyAqIENvcHlyaWdo dCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0lOVEVM X0hXTU9OX0hfXwo+ICsjZGVmaW5lIF9fSU5URUxfSFdNT05fSF9fCj4gKwo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9kZXZpY2UuaD4KCkEgZm9yd2FyZCBkZWNsYXJhdGlvbiBzaG91bGQgYmUgZW5vdWdo LiBOZWVkIDxsaW51eC90eXBlcy5oPiB0aG91Z2guCgo+ICsjaW5jbHVkZSAiaTkxNV9yZWcuaCIK PiArCj4gK3N0cnVjdCBpOTE1X2h3bW9uX3JlZyB7Cj4gKwlpOTE1X3JlZ190IHBrZ19wb3dlcl9z a3VfdW5pdDsKPiArCWk5MTVfcmVnX3QgcGtnX3Bvd2VyX3NrdTsKPiArCWk5MTVfcmVnX3QgcGtn X2VuZXJneV9zdGF0dXM7Cj4gKwlpOTE1X3JlZ190IHBrZ19yYXBsX2xpbWl0Owo+ICsJaTkxNV9y ZWdfdCBwa2dfcmFwbF9saW1pdF91ZHc7Cj4gKwlpOTE1X3JlZ190IHBsdF9lbmVyZ3lfc3RhdHVz Owo+ICsJaTkxNV9yZWdfdCByZWdfZW5lcmd5X3N0YXR1czsKPiArfTsKPiArCj4gK3N0cnVjdCBp OTE1X2h3bW9uIHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXN0cnVjdCBtdXRleCBod21v bl9sb2NrOwkvKiBjb3VudGVyIG92ZXJmbG93IGxvZ2ljIGFuZCBybXcgKi8KPiArCj4gKwlzdHJ1 Y3QgaTkxNV9od21vbl9yZWcgcmc7Cj4gKwo+ICsJdTMyIGVuZXJneV9jb3VudGVyX292ZXJmbG93 Owo+ICsJdTMyIGVuZXJneV9jb3VudGVyX3ByZXY7Cj4gKwl1MzIgcG93ZXJfbWF4X2luaXRpYWxf dmFsdWU7Cj4gKwo+ICsJaW50IHNjbF9zaGlmdF9wb3dlcjsKPiArCWludCBzY2xfc2hpZnRfZW5l cmd5Owo+ICsJaW50IHNjbF9zaGlmdF90aW1lOwo+ICt9Owo+ICsKPiAraW50IGk5MTVfaHdtb25f aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2Rldik7Cj4gK3ZvaWQgaTkxNV9od21vbl9maW5p KHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2KTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+IGluZGV4IGY4MGQ2NTYzMzFmNDIuLjYyZmNjZjcxZGRhZDYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNDA3MSw2ICs0MDcxLDU5IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQo+ICAjZGVmaW5lIEJY VF9SUF9TVEFURV9DQVAgICAgICAgIF9NTUlPKDB4MTM4MTcwKQo+ICAjZGVmaW5lIEdFTjlfUlBf U1RBVEVfTElNSVRTCV9NTUlPKDB4MTM4MTQ4KQo+ICAKPiArLyogREcxICovCj4gKwo+ICsvKiBi YXNlZCBvbiBNQ0hCQVJfTUlSUk9SX0JBU0VfU05CID09IDB4MTQwMDAwICovCj4gKyNkZWZpbmUg UENVX1BBQ0tBR0VfUE9XRVJfU0tVX1VOSVQJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiAr IDB4NTkzOCkKPiArI2RlZmluZSBQQ1VfUEFDS0FHRV9FTkVSR1lfU1RBVFVTCV9NTUlPKE1DSEJB Ul9NSVJST1JfQkFTRV9TTkIgKyAweDU5M2MpCj4gKyNkZWZpbmUgUENVX1BBQ0tBR0VfUkFQTF9M SU1JVAkJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiArIDB4NTlhMCkKPiArI2RlZmluZSBQ Q1VfUEFDS0FHRV9SQVBMX0xJTUlUX1VEVwlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsg MHg1OWE0KQo+ICsjZGVmaW5lIFBDVV9QQUNLQUdFX1BPV0VSX1NLVQkJSU5WQUxJRF9NTUlPX1JF Rwo+ICsjZGVmaW5lIFBDVV9QTEFURk9STV9FTkVSR1lfU1RBVFVTCUlOVkFMSURfTU1JT19SRUcK PiArCj4gKy8qIEZpZWxkcyBmb3IgKl9QQUNLQUdFX1JBUExfTElNSVQ6ICovCj4gKyNkZWZpbmUg ICBQS0dfUFdSX0xJTV8xCQkJUkVHX0dFTk1BU0soMTQsIDApCj4gKyNkZWZpbmUgICBQS0dfUFdS X0xJTV8xX0VOCQlSRUdfQklUKDE1KQo+ICsjZGVmaW5lICAgUEtHX1BXUl9MSU1fMV9USU1FCQlS RUdfR0VOTUFTSygyMywgMTcpCj4gKwo+ICsvKgo+ICsgKiBGaWVsZHMgZm9yICpfUEFDS0FHRV9S QVBMX0xJTUlUX1VEVzoKPiArICogSW4gZG9jcywgdGhlc2UgZmllbGRzIG1heSBiZSBkZWZpbmVk IHJlbGF0aXZlIHRvIHRoZSBlbnRpcmUgNjQtYml0Cj4gKyAqIHJlZ2lzdGVyLCBidXQgaGVyZSB0 aGV5IGFyZSBkZWZpbmVkIHJlbGF0aXZlIHRvIHRoZSAzMi1iaXQgYm91bmRhcnkuCj4gKyAqLwo+ ICsjZGVmaW5lICAgUEtHX1BXUl9MSU1fMgkJCVJFR19HRU5NQVNLKDE0LCAwKQkvLyA0NjozMgo+ ICsjZGVmaW5lICAgUEtHX1BXUl9MSU1fMl9FTgkJUkVHX0JJVCgxNSkJCS8vIDQ3OjQ3Cj4gKyNk ZWZpbmUgICBQS0dfUFdSX0xJTV8yX1RJTUUJCVJFR19HRU5NQVNLKDIzLCAxNykJLy8gNTU6NDkK PiArCj4gKy8qCj4gKyAqICpfUEFDS0FHRV9QT1dFUl9TS1VfVU5JVCAtIGZpZWxkcyBzcGVjaWZ5 aW5nIHNjYWxpbmcgZm9yIFBDVSBxdWFudGl0aWVzLgo+ICsgKiAtIFBLR19QV1JfVU5JVCAtIFBv d2VyIFVuaXRzIHVzZWQgZm9yIHBvd2VyIGNvbnRyb2wgcmVnaXN0ZXJzLiBUaGUKPiArICogICBh Y3R1YWwgdW5pdCB2YWx1ZSBpcyBjYWxjdWxhdGVkIGJ5IDEgVyAvIFBvd2VyKDIsUEtHX1BXUl9V TklUKS4KPiArICogLSBQS0dfRU5FUkdZX1VOSVQgLSBFbmVyZ3kgVW5pdHMgdXNlZCBmb3IgcG93 ZXIgY29udHJvbCByZWdpc3RlcnMuIFRoZQo+ICsgKiAgIGFjdHVhbCB1bml0IHZhbHVlIGlzIGNh bGN1bGF0ZWQgYnkgMSBKIC8gUG93ZXIoMixQS0dfRU5FUkdZX1VOSVQpLgo+ICsgKiAtIFBLR19U SU1FX1VOSVQgLSBUaW1lIFVuaXRzIHVzZWQgZm9yIHBvd2VyIGNvbnRyb2wgcmVnaXN0ZXJzLiBU aGUKPiArICogICBhY3R1YWwgdW5pdCB2YWx1ZSBpcyBjYWxjdWxhdGVkIGJ5IDEgcyAvIFBvd2Vy KDIsUEtHX1RJTUVfVU5JVCkuCj4gKyAqLwo+ICsjZGVmaW5lICAgUEtHX1BXUl9VTklUCQkJUkVH X0dFTk1BU0soMywgMCkKPiArI2RlZmluZSAgIFBLR19FTkVSR1lfVU5JVAkJUkVHX0dFTk1BU0so MTIsIDgpCj4gKyNkZWZpbmUgICBQS0dfVElNRV9VTklUCQkJUkVHX0dFTk1BU0soMTksIDE2KQo+ ICsKPiArLyoKPiArICogKl9QQUNLQUdFX1BPV0VSX1NLVSAtIFNLVSBwb3dlciBhbmQgdGltaW5n IHBhcmFtZXRlcnMuCj4gKyAqIFVzZWQgaGVyZWluIGFzIGEgNjQtYml0IGJpdCByZWdpc3Rlci4K PiArICogVGhlc2UgbWFza3MgYXJlIGRlZmluZWQgdXNpbmcgR0VOTUFTS19VTEwgYXMgUkVHX0dF Tk1BU0sgaXMgbGltaXRlZCB0byB1MzIKPiArICogYW5kIGFzIEdFTk1BU0sgaXMgImxvbmciIGFu ZCB0aGVyZWZvcmUgMzItYml0cyBvbiBhIDMyLWJpdCBzeXN0ZW0uCj4gKyAqIFBLR19QS0dfVERQ LCBQS0dfTUlOX1BXUiwgYW5kIFBLR19NQVhfUFdSIGFyZSBzY2FsZWQgaW4gdGhlIHNhbWUgd2F5 IGFzCj4gKyAqIFBLR19QV1JfTElNXyosIGFib3ZlLgo+ICsgKiBQS0dfTUFYX1dJTiBoYXMgc3Vi LWZpZWxkcyBmb3IgeCBhbmQgeSwgYW5kIGhhcyB0aGUgdmFsdWU6IGlzIDEueCAqIDJeeS4KPiAr ICovCj4gKyNkZWZpbmUgICBQS0dfUEtHX1REUAkJCUdFTk1BU0tfVUxMKDE0LCAwKQo+ICsjZGVm aW5lICAgUEtHX01JTl9QV1IJCQlHRU5NQVNLX1VMTCgzMCwgMTYpCj4gKyNkZWZpbmUgICBQS0df TUFYX1BXUgkJCUdFTk1BU0tfVUxMKDQ2LCAzMikKPiArI2RlZmluZSAgIFBLR19NQVhfV0lOCQkJ R0VOTUFTS19VTEwoNTQsIDQ4KQo+ICsjZGVmaW5lICAgICBQS0dfTUFYX1dJTl9ZCQlHRU5NQVNL X1VMTCg1NCwgNTMpCj4gKyNkZWZpbmUgICAgIFBLR19NQVhfV0lOX1gJCUdFTk1BU0tfVUxMKDUy LCA0OCkKPiArCj4gIC8qCj4gICAqIExvZ2ljYWwgQ29udGV4dCByZWdzCj4gICAqLwoKLS0gCkph bmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==