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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 A733DC11D05 for ; Thu, 20 Feb 2020 10:52:14 +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 7CFB52465D for ; Thu, 20 Feb 2020 10:52:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7CFB52465D 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 0F03A6ED23; Thu, 20 Feb 2020 10:52:14 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id A287A6ED23 for ; Thu, 20 Feb 2020 10:52:12 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Feb 2020 02:52:11 -0800 X-IronPort-AV: E=Sophos;i="5.70,464,1574150400"; d="scan'208";a="229444212" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Feb 2020 02:52:08 -0800 From: Jani Nikula To: Andi Shyti , Intel GFX In-Reply-To: <20200219193020.17673-1-andi.shyti@intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20200219190223.16972-1-andi.shyti@intel.com> <20200219193020.17673-1-andi.shyti@intel.com> Date: Thu, 20 Feb 2020 12:52:05 +0200 Message-ID: <871rqpv8dm.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v5] drm/i915/gt: make a gt sysfs group and move power management files 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" T24gV2VkLCAxOSBGZWIgMjAyMCwgQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+IHdy b3RlOgo+IFRoZSBHVCBoYXMgaXRzIG93biBwcm9wZXJ0aWVzIGFuZCBpbiBzeXNmcyB0aGV5IHNo b3VsZCBiZSBncm91cGVkCj4gaW4gdGhlICdndC8nIGRpcmVjdG9yeS4KPgo+IENyZWF0ZSB0aGUg J2d0LycgZGlyZWN0b3J5IGluIHN5c2ZzIGFuZCBtb3ZlIHRoZSBwb3dlciBtYW5hZ2VtZW50Cj4g cmVsYXRlZCBmaWxlcy4KPgo+IFRoZSBuZXcgaW50ZXJmYWNlcyBhcmU6Cj4KPiBndC9ndF9hY3Rf ZnJlcV9taHoKPiBndC9ndF9ib29zdF9mcmVxX21oego+IGd0L2d0X2N1cl9mcmVxX21oego+IGd0 L2d0X2luZm8KPiBndC9ndF9tYXhfZnJlcV9taHoKPiBndC9ndF9taW5fZnJlcV9taHoKPiBndC9n dF9SUDBfZnJlcV9taHoKPiBndC9ndF9SUDFfZnJlcV9taHoKPiBndC9ndF9SUG5fZnJlcV9taHoK PiBndC9yYzZfZW5hYmxlCj4gZ3QvcmM2X3Jlc2lkZW5jeV9tcwo+Cj4gVGhlIG9uY2UgaW4gdGhl IHJvb3QgZGlyZWN0b3J5IHdpbGwgYmUgbWFya2VkIGFzIGRlcHJlY2F0ZWQsIGlmCj4gYWNjZXNz ZWQgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgcHJpbnRlZC4KPgo+IFNpZ25lZC1vZmYtYnk6IEFuZGkg U2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+IHY0IC0+IHY1Ogo+ICAgLSByZW1v dmVkIHNwdXJpb3VzIGdob3N0ICd2dnYnIGZpbGUgdGhhdCB3YXMgbmV2ZXIgbWVhbnQgdG8gYmUK PiAgICAgdGhlcmUuLi4gc29ycnkgZm9yIHNwYW1taW5nLgo+IHYzIC0+IHY0Ogo+ICAgLSBmaXhl ZCBUdnJ0a28ncyBjb21tZW50czoKPiAgICAgICAgIC0gc29tZSByZW5hbWluZwo+ICAgICAgICAg LSBzb21lIGNsdW1zeSB1bmJhbGFuY2VkIGtvYmplY3RfcHV0L2dldAo+ICAgICAgICAgLSB0aGUg d2FybmluZyBwcmludCBpcyBtb3JlIGRlc2NyaXB0aXZlIGFuZCBwcmludGVkIHdpdGgKPiAgICAg ICAgICAgbGltaXRlZCByYXRlCj4gICAgICAgICAtIFRPRE86IGRybV9wcmludCBkb2Vzbid0IGhh dmUgYSBkcm1fd2Fybl91bmxpbWl0ZWQsIHRvCj4gICAgICAgICAgIGJlIGFkZGVkCj4gdjIgLT4g djM6Cj4gICAtIGZpeCBzb21lIGNsZWFudXBzIHRoYXQgSSBmb3Jnb3QgaW4gdGhlIHByZXZpb3Vz IHBhdGNoCj4gICAtIGZpeCByZWZlcmVuY2UgcG9pbnRlcnMgdG8gdGhlIGd0IHN0cnVjdHVyZQo+ ICAgLSBhbmQgbWFueSBvdGhlciBzbWFsbCBjaGFuZ2VzIGhlcmUgYW5kIHRoZXJlLgo+IHYxIC0+ IHYyOgo+ICAgLSBrZWVwIHRoZSBleGlzdGluZyBmaWxlcyBhcyB0aGV5IGFyZQo+ICAgLSB1c2Ug ImludGVsX2d0XyoiIGFzIHByZWZpeCBpbnN0ZWFkIG9mICJzeXNmc18qIgo+Cj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAgICAgICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0X3R5cGVzLmggfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zeXNmc19ndC5jICAgICAgIHwgIDc5ICsrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3N5c2ZzX2d0LmggICAgICAgfCAgMjIgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lz ZnNfZ3RfcG0uYyAgICB8IDQzMiArKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oICAgIHwgIDE3ICsKPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5jICAgICAgICB8IDM3NSArLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmggICAgICAgIHwgICAzICsKPiAgOSBmaWxl cyBjaGFuZ2VkLCA1NjEgaW5zZXJ0aW9ucygrKSwgMzc1IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYwo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYwo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uaAo+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBiMzE0ZDQ0ZGVkNWUuLmZmOWUxN2M5N2RjMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTEwNyw3ICsxMDcsOSBAQCBndC15ICs9IFwKPiAg CWd0L2ludGVsX3Jwcy5vIFwKPiAgCWd0L2ludGVsX3NzZXUubyBcCj4gIAlndC9pbnRlbF90aW1l bGluZS5vIFwKPiAtCWd0L2ludGVsX3dvcmthcm91bmRzLm8KPiArCWd0L2ludGVsX3dvcmthcm91 bmRzLm8gXAo+ICsJZ3Qvc3lzZnNfZ3QubyBcCj4gKwlndC9zeXNmc19ndF9wbS5vCj4gICMgYXV0 b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0ZQo+ICBndC15ICs9IFwKPiAgCWd0L2dlbjZfcmVu ZGVyc3RhdGUubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCj4gaW5kZXggZjFmMWIz MDZlMGFmLi5lNzk0ZDA1ZDY5YTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZ3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMK PiBAQCAtMTUsNiArMTUsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfcnBzLmgiCj4gICNpbmNsdWRl ICJpbnRlbF91bmNvcmUuaCIKPiAgI2luY2x1ZGUgImludGVsX3BtLmgiCj4gKyNpbmNsdWRlICJz eXNmc19ndC5oIgo+ICAKPiAgdm9pZCBpbnRlbF9ndF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9n dCAqZ3QsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gQEAgLTMyMSw2ICsz MjIsNyBAQCB2b2lkIGludGVsX2d0X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0 KQo+ICAJaW50ZWxfcnBzX2RyaXZlcl9yZWdpc3RlcigmZ3QtPnJwcyk7Cj4gIAo+ICAJZGVidWdm c19ndF9yZWdpc3RlcihndCk7Cj4gKwlpbnRlbF9ndF9zeXNmc19yZWdpc3RlcihndCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfZ3RfaW5pdF9zY3JhdGNoKHN0cnVjdCBpbnRlbF9ndCAq Z3QsIHVuc2lnbmVkIGludCBzaXplKQo+IEBAIC02NDEsNiArNjQzLDcgQEAgdm9pZCBpbnRlbF9n dF9kcml2ZXJfcmVtb3ZlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAo+ICB2b2lkIGludGVsX2d0 X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIHsKPiArCWludGVsX2d0 X3N5c2ZzX3VucmVnaXN0ZXIoZ3QpOwo+ICAJaW50ZWxfcnBzX2RyaXZlcl91bnJlZ2lzdGVyKCZn dC0+cnBzKTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVz LmgKPiBpbmRleCA5Njg5MGRkMTJiNWYuLjdmMGI0ZjhkOWUyOCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAo+IEBAIC0zMiw2ICszMiw3IEBAIHN0cnVjdCBp bnRlbF9ndCB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiAgCXN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZTsKPiAgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQ7Cj4gKwlzdHJ1 Y3Qga29iamVjdCBzeXNmc19yb290Owo+ICAKPiAgCXN0cnVjdCBpbnRlbF91YyB1YzsKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjkzMzVhOTJkNTI0OAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5jCj4gQEAgLTAsMCArMSw3OSBAQAo+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKwoKU3VwZXJmbHVvdXMgbmV3bGluZS4KCj4g Ky8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwoKSXQn cyAyMDIwIG5vdy4gOykKCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rb2JqZWN0Lmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9wcmludGsuaD4KPiArCj4gKyNpbmNsdWRlICIuLi9pOTE1X2Rydi5oIgoK Tm8gIG5lZWQgZm9yICIuLi8iLCBpdCdzIGluIGluY2x1ZGUgcGF0aC4KCj4gKyNpbmNsdWRlICJp bnRlbF9ndC5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZ3RfdHlwZXMuaCIKPiArI2luY2x1ZGUgImlu dGVsX3JjNi5oIgo+ICsKPiArI2luY2x1ZGUgInN5c2ZzX2d0LmgiCj4gKyNpbmNsdWRlICJzeXNm c19ndF9wbS5oIgo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qga29iamVjdCAqZ3RfZ2V0X3Bh cmVudF9vYmooc3RydWN0IGludGVsX2d0ICpndCkKCkluIC5jIGZpbGVzIGp1c3QgZHJvcCB0aGUg aW5saW5lIGtleXdvcmQgYW5kIGxldCB0aGUgY29tcGlsZXIgZG8gd2hhdCdzCmJlc3QuCgo+ICt7 Cj4gKwlyZXR1cm4gJmd0LT5pOTE1LT5kcm0ucHJpbWFyeS0+a2Rldi0+a29iajsKPiArfQo+ICsK PiArc3RhdGljIHNzaXplX3QgZ3RfaW5mb19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgICAgY2hhciAqYnVmZikK PiArewo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIjBcbiIpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3RfaW5mbyk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGtvYmpfdHlwZSBzeXNmc19ndF9rdHlwZSA9IHsKPiArCS5zeXNmc19vcHMgPSAma29ial9zeXNm c19vcHMsCj4gK307Cj4gKwo+ICt2b2lkIGludGVsX2d0X3N5c2ZzX3JlZ2lzdGVyKHN0cnVjdCBp bnRlbF9ndCAqZ3QpCj4gK3sKPiArCXN0cnVjdCBrb2JqZWN0ICpwYXJlbnQgPSBrb2JqZWN0X2dl dChndF9nZXRfcGFyZW50X29iaihndCkpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBrb2Jq ZWN0X2luaXRfYW5kX2FkZCgmZ3QtPnN5c2ZzX3Jvb3QsCj4gKwkJCQkgICAmc3lzZnNfZ3Rfa3R5 cGUsCj4gKwkJCQkgICBwYXJlbnQsICJndCIpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRybV9lcnIo Jmd0LT5pOTE1LT5kcm0sICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBzeXNmcyBmaWxlXG4iKTsKPiAr CQlrb2JqZWN0X3B1dCgmZ3QtPnN5c2ZzX3Jvb3QpOwo+ICsJCWdvdG8gcGFyZW50X2ZpbGVzOwo+ ICsJfQo+ICsKPiArCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlKCZndC0+c3lzZnNfcm9vdCwgJmRl dl9hdHRyX2d0X2luZm8uYXR0cik7Cj4gKwlpZiAocmV0KQo+ICsJCWRybV9lcnIoJmd0LT5pOTE1 LT5kcm0sICJmYWlsZWQgdG8gY3JlYXRlIHN5c2ZzIGd0IGluZm8gZmlsZXNcbiIpOwo+ICsKPiAr CWludGVsX2d0X3N5c2ZzX3BtX2luaXQoZ3QsICZndC0+c3lzZnNfcm9vdCk7Cj4gKwo+ICtwYXJl bnRfZmlsZXM6Cj4gKwkvKgo+ICsJICogd2UgbmVlZCB0byBtYWtlIHRoaW5ncyByaWdodCB3aXRo IHRoZQo+ICsJICogQUJJIGNvbXBhdGliaWxpdHkuIFRoZSBmaWxlcyB3ZXJlIG9yaWdpbmFsbHkK PiArCSAqIGdlbmVyYXRlZCB1bmRlciB0aGUgcGFyZW50IGRpcmVjdG9yeS4KPiArCSAqLwo+ICsJ aW50ZWxfZ3Rfc3lzZnNfcG1faW5pdChndCwgcGFyZW50KTsKPiArfQo+ICsKPiArdm9pZCBpbnRl bF9ndF9zeXNmc191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCXN0cnVj dCBrb2JqZWN0ICpwYXJlbnQgPSBndF9nZXRfcGFyZW50X29iaihndCk7Cj4gKwo+ICsJLyoKPiAr CSAqIHRoZSBuYW1lIGd0IHRlbGxzIHVzIHdldGhlciBzeXNmc19yb290Cj4gKwkgKiBvYmplY3Qg d2FzIGluaXRpYWxpemVkIHByb3Blcmx5Cj4gKwkgKi8KPiArCWlmICghc3RyY21wKGd0LT5zeXNm c19yb290Lm5hbWUsICJndCIpKQo+ICsJCWtvYmplY3RfcHV0KCZndC0+c3lzZnNfcm9vdCk7Cj4g Kwo+ICsJa29iamVjdF9wdXQocGFyZW50KTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNf Z3QuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yZTQ3OWFh OTAyZTUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lz ZnNfZ3QuaAo+IEBAIC0wLDAgKzEsMjIgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVCAqLwo+ICsKClN1cGVyZmx1b3VzIG5ld2xpbmUuCgo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg wqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KCjIwMjAuCgo+ICsKPiArI2lmbmRlZiBT WVNGU19HVF9ICj4gKyNkZWZpbmUgU1lTRlNfR1RfSAoKUGxlYXNlIGFkZCBzb21lIHVuZGVyc2Nv cmVzLCBlLmcuIF9fU1lTRlNfR1RfSF9fLgoKPiArCj4gKyNpbmNsdWRlICJpbnRlbF9ndF90eXBl cy5oIgo+ICsKPiArc3RydWN0IGludGVsX2d0Owo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qg aW50ZWxfZ3QgKmtvYmpfdG9fZ3Qoc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sKPiArCXJldHVy biBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGludGVsX2d0LCBzeXNmc19yb290KTsKPiArfQo+ ICsKPiArdm9pZCBpbnRlbF9ndF9zeXNmc19yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsK PiArdm9pZCBpbnRlbF9ndF9zeXNmc191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwo+ ICsKPiArI2VuZGlmIC8qIFNZU0ZTX0dUX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2Zz X2d0X3BtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzU0 OGViODUxYTcwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3N5c2ZzX2d0X3BtLmMKPiBAQCAtMCwwICsxLDQzMiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogTUlUCj4gKwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jw b3JhdGlvbgo+ICsgKi8KCllvdSBrbm93IHRoZSBkcmlsbC4gOykKCj4gKwo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wcmludGsuaD4KPiArCj4gKyNpbmNsdWRlICIuLi9pOTE1X2Rydi5oIgo+ICsjaW5j bHVkZSAiLi4vaTkxNV9zeXNmcy5oIgoKIi4uLyIgaXMgdW5uZWNlc3NhcnkuCgo+ICsjaW5jbHVk ZSAiaW50ZWxfZ3QuaCIKPiArI2luY2x1ZGUgImludGVsX3JjNi5oIgo+ICsjaW5jbHVkZSAiaW50 ZWxfcnBzLmgiCj4gKyNpbmNsdWRlICJzeXNmc19ndC5oIgo+ICsjaW5jbHVkZSAic3lzZnNfZ3Rf cG0uaCIKPiArCj4gK3N0cnVjdCBpbnRlbF9ndCAqaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEo c3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qga29iamVjdCAqa29iaiA9ICZkZXYt PmtvYmo7Cj4gKwkvKgo+ICsJICogV2UgYXJlIGludGVyZXN0ZWQgYXQga25vd2luZyBmcm9tIHdo ZXJlIHRoZSBpbnRlcmZhY2UKPiArCSAqIGhhcyBiZWVuIGNhbGxlZCwgd2hldGhlciBpdCdzIGNh bGxlZCBmcm9tIGd0LyBvciBmcm9tCj4gKwkgKiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KPiArCSAq IEZyb20gdGhlIGludGVyZmFjZSBwb3NpdGlvbiBpdCBkZXBlbmRzIGFsc28gdGhlIHZhbHVlIG9m Cj4gKwkgKiB0aGUgcHJpdmF0ZSBkYXRhLgo+ICsJICogSWYgdGhlIGludGVyZmFjZSBpcyBjYWxs ZWQgZnJvbSBndC8gdGhlbiBwcml2YXRlIGRhdGEgaXMKPiArCSAqIG9mIHRoZSAic3RydWN0IGlu dGVsX2d0ICoiIHR5cGUsIG90aGVyd2lzZSBpdCdzICogYQo+ICsJICogInN0cnVjdCBkcm1faTkx NV9wcml2YXRlICoiIHR5cGUuCj4gKwkgKi8KPiArCWlmIChzdHJjbXAoZGV2LT5rb2JqLm5hbWUs ICJndCIpKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X21pbm9y X3RvX2k5MTUoZGV2KTsKPiArCj4gKwkJcHJfd2Fybl9yYXRlbGltaXRlZChERVBSRUNBVEVECj4g KwkJCSIoJXMsICVkKSB0cnlpbmcgdG8gYWNjZXNzIGRlcHJlY2F0ZWQgaW50ZXJmYWNlLCAiCj4g KwkJCSJ1c2UgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGluIGd0L1xuIiwKPiArCQkJY3Vy cmVudC0+Y29tbSwgdGFza19waWRfbnIoY3VycmVudCkpOwo+ICsJCXJldHVybiAmaTkxNS0+Z3Q7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGtvYmpfdG9fZ3Qoa29iaik7Cj4gK30KPiArCj4gKyNpZmRl ZiBDT05GSUdfUE0KPiArc3RhdGljIHUzMiBnZXRfcmVzaWRlbmN5KHN0cnVjdCBpbnRlbF9ndCAq Z3QsIGk5MTVfcmVnX3QgcmVnKQo+ICt7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAr CXU2NCByZXMgPSAwOwo+ICsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShndC0+dW5jb3JlLT5y cG0sIHdha2VyZWYpCj4gKwkJcmVzID0gaW50ZWxfcmM2X3Jlc2lkZW5jeV91cygmZ3QtPnJjNiwg cmVnKTsKPiArCj4gKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHJlcywgMTAwMCk7Cj4g K30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IHJjNl9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAg ICAgIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9z eXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJdTggbWFzayA9IDA7Cj4gKwo+ICsJaWYgKEhBU19S QzYoZ3QtPmk5MTUpKQo+ICsJCW1hc2sgfD0gQklUKDApOwo+ICsJaWYgKEhBU19SQzZwKGd0LT5p OTE1KSkKPiArCQltYXNrIHw9IEJJVCgxKTsKPiArCWlmIChIQVNfUkM2cHAoZ3QtPmk5MTUpKQo+ ICsJCW1hc2sgfD0gQklUKDIpOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJ WkUsICIleFxuIiwgbWFzayk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IHJjNl9yZXNpZGVu Y3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLAo+ICsJCQkJICAgICBjaGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXUzMiBy YzZfcmVzaWRlbmN5ID0gZ2V0X3Jlc2lkZW5jeShndCwgR0VONl9HVF9HRlhfUkM2KTsKPiArCj4g KwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCByYzZwX3Jlc2lkZW5jeV9tc19zaG93KHN0cnVj dCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LAo+ICsJCQkJICAgICAgY2hhciAqYnVmZikKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9 IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4gKwl1MzIgcmM2cF9yZXNpZGVuY3kg PSBnZXRfcmVzaWRlbmN5KGd0LCBHRU42X0dUX0dGWF9SQzZwKTsKPiArCj4gKwlyZXR1cm4gc25w cmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBfcmVzaWRlbmN5KTsKPiArfQo+ICsK PiArc3RhdGljIHNzaXplX3QgcmM2cHBfcmVzaWRlbmN5X21zX3Nob3coc3RydWN0IGRldmljZSAq ZGV2LAo+ICsJCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkJ ICAgICAgIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9n dF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJdTMyIHJjNnBwX3Jlc2lkZW5jeSA9IGdldF9y ZXNpZGVuY3koZ3QsIEdFTjZfR1RfR0ZYX1JDNnBwKTsKPiArCj4gKwlyZXR1cm4gc25wcmludGYo YnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBwX3Jlc2lkZW5jeSk7Cj4gK30KPiArCj4gK3N0 YXRpYyBzc2l6ZV90IG1lZGlhX3JjNl9yZXNpZGVuY3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gKwkJCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkJICAg Y2hhciAqYnVmZikKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2Zz X2dldF9kcnZkYXRhKGRldik7Cj4gKwl1MzIgcmM2X3Jlc2lkZW5jeSA9IGdldF9yZXNpZGVuY3ko Z3QsIFZMVl9HVF9NRURJQV9SQzYpOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdF X1NJWkUsICIldVxuIiwgcmM2X3Jlc2lkZW5jeSk7Cj4gK30KPiArCj4gK3N0YXRpYyBERVZJQ0Vf QVRUUl9STyhyYzZfZW5hYmxlKTsKPiArc3RhdGljIERFVklDRV9BVFRSX1JPKHJjNl9yZXNpZGVu Y3lfbXMpOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2cF9yZXNpZGVuY3lfbXMpOwo+ICtz dGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2cHBfcmVzaWRlbmN5X21zKTsKPiArc3RhdGljIERFVklD RV9BVFRSX1JPKG1lZGlhX3JjNl9yZXNpZGVuY3lfbXMpOwo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGUgKnJjNl9hdHRyc1tdID0gewo+ICsJJmRldl9hdHRyX3JjNl9lbmFibGUu YXR0ciwKPiArCSZkZXZfYXR0cl9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCj4gKwlOVUxMCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqcmM2cF9hdHRyc1tdID0gewo+ ICsJJmRldl9hdHRyX3JjNnBfcmVzaWRlbmN5X21zLmF0dHIsCj4gKwkmZGV2X2F0dHJfcmM2cHBf cmVzaWRlbmN5X21zLmF0dHIsCj4gKwlOVUxMCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGF0dHJpYnV0ZSAqbWVkaWFfcmM2X2F0dHJzW10gPSB7Cj4gKwkmZGV2X2F0dHJfbWVkaWFf cmM2X3Jlc2lkZW5jeV9tcy5hdHRyLAo+ICsJTlVMTAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQg aW50ZWxfc3lzZnNfcmM2X2luaXQoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3Qg KmtvYmopCj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWlmIChIQVNfUkM2KGd0LT5pOTE1 KSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCByYzZfYXR0cnMpOwo+ICsJ CWlmIChyZXQpCj4gKwkJCWRybV9lcnIoJmd0LT5pOTE1LT5kcm0sCj4gKwkJCQkiZmFpbGVkIHRv IGNyZWF0ZSBSQzYgc3lzZnMgZmlsZXNcbiIpOwo+ICsJfQo+ICsKPiArCWlmIChIQVNfUkM2cChn dC0+aTkxNSkpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoa29iaiwgcmM2cF9hdHRy cyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZHJtX2VycigmZ3QtPmk5MTUtPmRybSwKPiArCQkJCSJm YWlsZWQgdG8gY3JlYXRlIFJDNnAgc3lzZnMgZmlsZXNcbiIpOwo+ICsJfQo+ICsKPiArCWlmIChJ U19WQUxMRVlWSUVXKGd0LT5pOTE1KSB8fCBJU19DSEVSUllWSUVXKGd0LT5pOTE1KSkgewo+ICsJ CXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCBtZWRpYV9yYzZfYXR0cnMpOwo+ICsJCWlm IChyZXQpCj4gKwkJCWRybV9lcnIoJmd0LT5pOTE1LT5kcm0sCj4gKwkJCQkiZmFpbGVkIHRvIGNy ZWF0ZSBtZWRpYSBSQzYgc3lzZnMgZmlsZXNcbiIpOwo+ICsJfQo+ICt9Cj4gKyNlbHNlCj4gK3N0 YXRpYyB2b2lkIGludGVsX3N5c2ZzX3JjNl9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVj dCBrb2JqZWN0ICprb2JqKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsjZW5kaWYgLyogQ09O RklHX1BNICovCj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNm c19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJ WkUsICIlZFxuIiwKPiArCQkJaW50ZWxfcnBzX3JlYWRfYWN0dWFsX2ZyZXF1ZW5jeSgmZ3QtPnJw cykpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9jdXJfZnJlcV9taHpfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNm c19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7 Cj4gKwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ICsJCQlp bnRlbF9ncHVfZnJlcShycHMsIHJwcy0+Y3VyX2ZyZXEpKTsKPiArfQo+ICsKPiArc3RhdGljIHNz aXplX3QgZ3RfYm9vc3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkg ICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICAgIGNoYXIgKmJ1 ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2 ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7Cj4gKwo+ICsJ cmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ICsJCQlpbnRlbF9ncHVf ZnJlcShycHMsIHJwcy0+Ym9vc3RfZnJlcSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBn dF9ib29zdF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICAg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkgICAgICAgY29uc3QgY2hhciAq YnVmZiwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxf Z3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZn dC0+cnBzOwo+ICsJYm9vbCBib29zdCA9IGZhbHNlOwo+ICsJc3NpemVfdCByZXQ7Cj4gKwl1MzIg dmFsOwo+ICsKPiArCXJldCA9IGtzdHJ0b3UzMihidWZmLCAwLCAmdmFsKTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBWYWxpZGF0ZSBhZ2FpbnN0IChzdGF0aWMpIGhh cmR3YXJlIGxpbWl0cyAqLwo+ICsJdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwo+ ICsJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwgdmFsID4gcnBzLT5tYXhfZnJlcSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwltdXRleF9sb2NrKCZycHMtPmxvY2spOwo+ICsJaWYgKHZh bCAhPSBycHMtPmJvb3N0X2ZyZXEpIHsKPiArCQlycHMtPmJvb3N0X2ZyZXEgPSB2YWw7Cj4gKwkJ Ym9vc3QgPSBhdG9taWNfcmVhZCgmcnBzLT5udW1fd2FpdGVycyk7Cj4gKwl9Cj4gKwltdXRleF91 bmxvY2soJnJwcy0+bG9jayk7Cj4gKwlpZiAoYm9vc3QpCj4gKwkJc2NoZWR1bGVfd29yaygmcnBz LT53b3JrKTsKPiArCj4gKwlyZXR1cm4gY291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90 IHZsdl9ycGVfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVj dCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZm LCBQQUdFX1NJWkUsICIlZFxuIiwKPiArCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmVmZmlj aWVudF9mcmVxKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IGd0X21heF9mcmVxX21oel9z aG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKPiArCQkJCSAgICBjaGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9y cHMgKnJwcyA9ICZndC0+cnBzOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJ WkUsICIlZFxuIiwKPiArCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPm1heF9mcmVxX3NvZnRs aW1pdCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJlcV9taHpfc3RvcmUo c3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwKPiArCQkJCSAgICAgY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IGNvdW50KQo+ICt7Cj4g KwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsK PiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwo+ICsJc3NpemVfdCByZXQ7Cj4g Kwl1MzIgdmFsOwo+ICsKPiArCXJldCA9IGtzdHJ0b3UzMihidWZmLCAwLCAmdmFsKTsKPiArCWlm IChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZycHMtPmxvY2spOwo+ ICsKPiArCXZhbCA9IGludGVsX2ZyZXFfb3Bjb2RlKHJwcywgdmFsKTsKPiArCWlmICh2YWwgPCBy cHMtPm1pbl9mcmVxIHx8Cj4gKwkgICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAo+ICsJICAgIHZh bCA8IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0KSB7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQln b3RvIHVubG9jazsKPiArCX0KPiArCj4gKwlpZiAodmFsID4gcnBzLT5ycDBfZnJlcSkKPiArCQlE Uk1fREVCVUcoIlVzZXIgcmVxdWVzdGVkIG92ZXJjbG9ja2luZyB0byAlZFxuIiwKPiArCQkJICBp bnRlbF9ncHVfZnJlcShycHMsIHZhbCkpOwo+ICsKPiArCXJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0 ID0gdmFsOwo+ICsKPiArCXZhbCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9mcmVxLAo+ICsJCSAg ICAgIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0LAo+ICsJCSAgICAgIHJwcy0+bWF4X2ZyZXFfc29m dGxpbWl0KTsKPiArCj4gKwkvKgo+ICsJICogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJv Y2VzcyB0aGUgbmV3IG1heF9kZWxheSBhbmQKPiArCSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxp bWl0cyBhbmQgUE1JTlRSTVNLIGV2ZW4gdGhvdWdoCj4gKwkgKiBmcmVxdWVuY3kgcmVxdWVzdCBt YXkgYmUgdW5jaGFuZ2VkLgo+ICsJICovCj4gKwlpbnRlbF9ycHNfc2V0KHJwcywgdmFsKTsKPiAr Cj4gK3VubG9jazoKPiArCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4g cmV0ID86IGNvdW50Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpf c2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsCj4gKwkJCQkgICAgY2hhciAqYnVmZikKPiArewo+ICsJc3RydWN0IGludGVsX2d0 ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxf cnBzICpycHMgPSAmZ3QtPnJwczsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9T SVpFLCAiJWRcbiIsCj4gKwkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQpKTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgZ3RfbWluX2ZyZXFfbWh6X3N0b3Jl KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsCj4gKwkJCQkgICAgIGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBjb3VudCkKPiArewo+ ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKPiArCXNzaXplX3QgcmV0Owo+ ICsJdTMyIHZhbDsKPiArCj4gKwlyZXQgPSBrc3RydG91MzIoYnVmZiwgMCwgJnZhbCk7Cj4gKwlp ZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsK PiArCj4gKwl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Cj4gKwlpZiAodmFsIDwg cnBzLT5taW5fZnJlcSB8fAo+ICsJICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXEgfHwKPiArCSAgICB2 YWwgPiBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkgewo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwkJ Z290byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7 Cj4gKwo+ICsJdmFsID0gY2xhbXBfdChpbnQsIHJwcy0+Y3VyX2ZyZXEsCj4gKwkJICAgICAgcnBz LT5taW5fZnJlcV9zb2Z0bGltaXQsCj4gKwkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQp Owo+ICsKPiArCS8qCj4gKwkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRo ZSBuZXcgbWluX2RlbGF5IGFuZAo+ICsJICogdXBkYXRlIHRoZSBpbnRlcnJ1cHQgbGltaXRzIGFu ZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKPiArCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1 bmNoYW5nZWQuCj4gKwkgKi8KPiArCWludGVsX3Jwc19zZXQocnBzLCB2YWwpOwo+ICsKPiArdW5s b2NrOgo+ICsJbXV0ZXhfdW5sb2NrKCZycHMtPmxvY2spOwo+ICsKPiArCXJldHVybiByZXQgPzog Y291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhndF9hY3RfZnJlcV9taHop Owo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3RfY3VyX2ZyZXFfbWh6KTsKPiArc3RhdGljIERF VklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFfbWh6KTsKPiArc3RhdGljIERFVklDRV9BVFRSX1JX KGd0X21heF9mcmVxX21oeik7Cj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9SVyhndF9taW5fZnJlcV9t aHopOwo+ICsKPiArc3RhdGljIERFVklDRV9BVFRSX1JPKHZsdl9ycGVfZnJlcV9taHopOwo+ICsK PiArc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJ CQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICAgY2hhciAq YnVmZik7Cj4gKwo+ICtzdGF0aWMgREVWSUNFX0FUVFIoZ3RfUlAwX2ZyZXFfbWh6LCAwNDQ0LCBn dF9ycF9taHpfc2hvdywgTlVMTCk7Cj4gK3N0YXRpYyBERVZJQ0VfQVRUUihndF9SUDFfZnJlcV9t aHosIDA0NDQsIGd0X3JwX21oel9zaG93LCBOVUxMKTsKPiArc3RhdGljIERFVklDRV9BVFRSKGd0 X1JQbl9mcmVxX21oeiwgMDQ0NCwgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOwo+ICsKPiArLyogRm9y IG5vdyB3ZSBoYXZlIGEgc3RhdGljIG51bWJlciBvZiBSUCBzdGF0ZXMgKi8KPiArc3RhdGljIHNz aXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkgICAgICBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICAgY2hhciAqYnVmZikKPiArewo+ ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKPiArCXUzMiB2YWw7Cj4gKwo+ ICsJaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMF9mcmVxX21oeikKPiArCQl2YWwgPSBpbnRl bF9ncHVfZnJlcShycHMsIHJwcy0+cnAwX2ZyZXEpOwo+ICsJZWxzZSBpZiAoYXR0ciA9PSAmZGV2 X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6KQo+ICsJCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBz LT5ycDFfZnJlcSk7Cj4gKwllbHNlIGlmIChhdHRyID09ICZkZXZfYXR0cl9ndF9SUG5fZnJlcV9t aHopCj4gKwkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPm1pbl9mcmVxKTsKPiArCWVs c2UKPiArCQlCVUcoKTsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAi JWRcbiIsIHZhbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICog Y29uc3QgZ2VuNl9hdHRyc1tdID0gewo+ICsJJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRy LAo+ICsJJmRldl9hdHRyX2d0X2N1cl9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X2Jv b3N0X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCj4g KwkmZGV2X2F0dHJfZ3RfbWluX2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfUlAwX2Zy ZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2 X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBjb25zdCB2bHZfYXR0cnNbXSA9IHsKPiArCSZkZXZf YXR0cl9ndF9hY3RfZnJlcV9taHouYXR0ciwKPiArCSZkZXZfYXR0cl9ndF9jdXJfZnJlcV9taHou YXR0ciwKPiArCSZkZXZfYXR0cl9ndF9ib29zdF9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRy X2d0X21heF9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X21pbl9mcmVxX21oei5hdHRy LAo+ICsJJmRldl9hdHRyX2d0X1JQMF9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X1JQ MV9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oei5hdHRyLAo+ICsJ JmRldl9hdHRyX3Zsdl9ycGVfZnJlcV9taHouYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtz dGF0aWMgaW50IGludGVsX3N5c2ZzX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVj dCBrb2JqZWN0ICprb2JqKQo+ICt7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhndC0+aTkxNSkgfHwg SVNfQ0hFUlJZVklFVyhndC0+aTkxNSkpCj4gKwkJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlcyhr b2JqLCB2bHZfYXR0cnMpOwo+ICsKPiArCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDYpCj4g KwkJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCBnZW42X2F0dHJzKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9ndF9zeXNmc19wbV9pbml0KHN0cnVjdCBp bnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCWludGVsX3N5c2ZzX3JjNl9pbml0KGd0LCBrb2JqKTsKPiArCj4gKwlyZXQgPSBpbnRlbF9z eXNmc19ycHNfaW5pdChndCwga29iaik7Cj4gKwlpZiAocmV0KQo+ICsJCWRybV9lcnIoJmd0LT5p OTE1LT5kcm0sICJmYWlsZWQgdG8gY3JlYXRlIFJQUyBzeXNmcyBmaWxlcyIpOwo+ICt9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAuLjc1OGQwYzNjYjk5OAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oCj4gQEAgLTAsMCArMSwxNyBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCj4gKwo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgU1lT RlNfUkM2X0gKPiArI2RlZmluZSBTWVNGU19SQzZfSAoKQWxsIHRoZSB0aGluZ3MgbWVudGlvbmVk IGJlZm9yZTsgbmV3bGluZSwgeWVhciwgdW5kZXJzY29yZXMuCgpBZGRpdGlvbmFsbHkgbWFrZSB0 aGUgaW5jbHVkZSBwcm90ZWN0aW9uIG1hdGNoIHRoZSBmaWxlIG5hbWUuCgo+ICsKPiArI2luY2x1 ZGUgPGxpbnV4L2tvYmplY3QuaD4KPiArCj4gKyNpbmNsdWRlICJpbnRlbF9ndF90eXBlcy5oIgo+ ICsKPiArdm9pZCBpbnRlbF9ndF9zeXNmc19wbV9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0 cnVjdCBrb2JqZWN0ICprb2JqKTsKPiArdm9pZCBpbnRlbF9ndF9zeXNmc19wbV9yZW1vdmUoc3Ry dWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopOwo+ICsKPiArI2VuZGlmIC8q IFNZU0ZTX1JDNl9IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+IGluZGV4IGMxNGQ3 NjJiZDY1Mi4uMTI5ODk3N2ZjMDhiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc3lzZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+ IEBAIC0zOCwxMTMgKzM4LDEyIEBACj4gICNpbmNsdWRlICJpbnRlbF9wbS5oIgo+ICAjaW5jbHVk ZSAiaW50ZWxfc2lkZWJhbmQuaCIKPiAgCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmtkZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2KQo+ICtzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqa2Rldl9taW5vcl90b19pOTE1KHN0cnVjdCBkZXZpY2UgKmtk ZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1fbWlub3IgKm1pbm9yID0gZGV2X2dldF9kcnZkYXRhKGtk ZXYpOwo+ICAJcmV0dXJuIHRvX2k5MTUobWlub3ItPmRldik7Cj4gIH0KPiAgCj4gLSNpZmRlZiBD T05GSUdfUE0KPiAtc3RhdGljIHUzMiBjYWxjX3Jlc2lkZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAgaTkxNV9yZWdfdCByZWcpCj4gLXsKPiAtCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwo+IC0JdTY0IHJlcyA9IDA7Cj4gLQo+IC0Jd2l0aF9pbnRlbF9ydW50 aW1lX3BtKCZkZXZfcHJpdi0+cnVudGltZV9wbSwgd2FrZXJlZikKPiAtCQlyZXMgPSBpbnRlbF9y YzZfcmVzaWRlbmN5X3VzKCZkZXZfcHJpdi0+Z3QucmM2LCByZWcpOwo+IC0KPiAtCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVF9VTEwocmVzLCAxMDAwKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXpl X3QKPiAtc2hvd19yYzZfbWFzayhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQl1bnNpZ25lZCBpbnQg bWFzazsKPiAtCj4gLQltYXNrID0gMDsKPiAtCWlmIChIQVNfUkM2KGRldl9wcml2KSkKPiAtCQlt YXNrIHw9IEJJVCgwKTsKPiAtCWlmIChIQVNfUkM2cChkZXZfcHJpdikpCj4gLQkJbWFzayB8PSBC SVQoMSk7Cj4gLQlpZiAoSEFTX1JDNnBwKGRldl9wcml2KSkKPiAtCQltYXNrIHw9IEJJVCgyKTsK PiAtCj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIleFxuIiwgbWFzayk7Cj4g LX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90Cj4gLXNob3dfcmM2X21zKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2 KTsKPiAtCXUzMiByYzZfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIEdFTjZf R1RfR0ZYX1JDNik7Cj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwg cmM2X3Jlc2lkZW5jeSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90Cj4gLXNob3dfcmM2cF9t cyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2 X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQl1MzIgcmM2cF9yZXNpZGVuY3kgPSBjYWxjX3Jlc2lk ZW5jeShkZXZfcHJpdiwgR0VONl9HVF9HRlhfUkM2cCk7Cj4gLQlyZXR1cm4gc25wcmludGYoYnVm LCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cF9yZXNpZGVuY3kpOwo+IC19Cj4gLQo+IC1zdGF0aWMg c3NpemVfdAo+IC1zaG93X3JjNnBwX21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXUzMiByYzZw cF9yZXNpZGVuY3kgPSBjYWxjX3Jlc2lkZW5jeShkZXZfcHJpdiwgR0VONl9HVF9HRlhfUkM2cHAp Owo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBwX3Jlc2lk ZW5jeSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90Cj4gLXNob3dfbWVkaWFfcmM2X21zKHN0 cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpi dWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlu b3JfdG9faTkxNShrZGV2KTsKPiAtCXUzMiByYzZfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3ko ZGV2X3ByaXYsIFZMVl9HVF9NRURJQV9SQzYpOwo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFH RV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOwo+IC19Cj4gLQo+IC1zdGF0aWMgREVWSUNF X0FUVFIocmM2X2VuYWJsZSwgU19JUlVHTywgc2hvd19yYzZfbWFzaywgTlVMTCk7Cj4gLXN0YXRp YyBERVZJQ0VfQVRUUihyYzZfcmVzaWRlbmN5X21zLCBTX0lSVUdPLCBzaG93X3JjNl9tcywgTlVM TCk7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUihyYzZwX3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hv d19yYzZwX21zLCBOVUxMKTsKPiAtc3RhdGljIERFVklDRV9BVFRSKHJjNnBwX3Jlc2lkZW5jeV9t cywgU19JUlVHTywgc2hvd19yYzZwcF9tcywgTlVMTCk7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUiht ZWRpYV9yYzZfcmVzaWRlbmN5X21zLCBTX0lSVUdPLCBzaG93X21lZGlhX3JjNl9tcywgTlVMTCk7 Cj4gLQo+IC1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqcmM2X2F0dHJzW10gPSB7Cj4gLQkmZGV2 X2F0dHJfcmM2X2VuYWJsZS5hdHRyLAo+IC0JJmRldl9hdHRyX3JjNl9yZXNpZGVuY3lfbXMuYXR0 ciwKPiAtCU5VTEwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIHJjNl9hdHRyX2dyb3VwID0gewo+IC0JLm5hbWUgPSBwb3dlcl9ncm91cF9uYW1lLAo+IC0J LmF0dHJzID0gIHJjNl9hdHRycwo+IC19Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KnJjNnBfYXR0cnNbXSA9IHsKPiAtCSZkZXZfYXR0cl9yYzZwX3Jlc2lkZW5jeV9tcy5hdHRyLAo+ IC0JJmRldl9hdHRyX3JjNnBwX3Jlc2lkZW5jeV9tcy5hdHRyLAo+IC0JTlVMTAo+IC19Owo+IC0K PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcmM2cF9hdHRyX2dyb3VwID0g ewo+IC0JLm5hbWUgPSBwb3dlcl9ncm91cF9uYW1lLAo+IC0JLmF0dHJzID0gIHJjNnBfYXR0cnMK PiAtfTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptZWRpYV9yYzZfYXR0cnNbXSA9 IHsKPiAtCSZkZXZfYXR0cl9tZWRpYV9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCj4gLQlOVUxMCj4g LX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZWRpYV9yYzZf YXR0cl9ncm91cCA9IHsKPiAtCS5uYW1lID0gcG93ZXJfZ3JvdXBfbmFtZSwKPiAtCS5hdHRycyA9 ICBtZWRpYV9yYzZfYXR0cnMKPiAtfTsKPiAtI2VuZGlmCj4gLQo+ICBzdGF0aWMgaW50IGwzX2Fj Y2Vzc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgbG9mZl90IG9mZnNldCkK PiAgewo+ICAJaWYgKCFIQVNfTDNfRFBGKGk5MTUpKQo+IEBAIC0yNTYsMjM5ICsxNTUsNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgZHBmX2F0dHJzXzEgPSB7Cj4gIAkucHJp dmF0ZSA9ICh2b2lkICopMQo+ICB9Owo+ICAKPiAtc3RhdGljIHNzaXplX3QgZ3RfYWN0X2ZyZXFf bWh6X3Nob3coc3RydWN0IGRldmljZSAqa2RldiwKPiAtCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZpOTE1LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9T SVpFLCAiJWRcbiIsCj4gLQkJCWludGVsX3Jwc19yZWFkX2FjdHVhbF9mcmVxdWVuY3kocnBzKSk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVjdCBk ZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X21p bm9yX3RvX2k5MTUoa2Rldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmaTkxNS0+Z3Qu cnBzOwo+IC0KPiAtCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+IC0J CQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+Y3VyX2ZyZXEpKTsKPiAtfQo+IC0KPiAtc3RhdGlj IHNzaXplX3QgZ3RfYm9vc3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVj dCBpbnRlbF9ycHMgKnJwcyA9ICZpOTE1LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRm KGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCj4gLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5i b29zdF9mcmVxKSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6 X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgICAgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCj4gLQkJCQkgICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291 bnQpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlu b3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+ Z3QucnBzOwo+IC0JYm9vbCBib29zdCA9IGZhbHNlOwo+IC0Jc3NpemVfdCByZXQ7Cj4gLQl1MzIg dmFsOwo+IC0KPiAtCXJldCA9IGtzdHJ0b3UzMihidWYsIDAsICZ2YWwpOwo+IC0JaWYgKHJldCkK PiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCS8qIFZhbGlkYXRlIGFnYWluc3QgKHN0YXRpYykgaGFy ZHdhcmUgbGltaXRzICovCj4gLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Cj4g LQlpZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fCB2YWwgPiBycHMtPm1heF9mcmVxKQo+IC0JCXJl dHVybiAtRUlOVkFMOwo+IC0KPiAtCW11dGV4X2xvY2soJnJwcy0+bG9jayk7Cj4gLQlpZiAodmFs ICE9IHJwcy0+Ym9vc3RfZnJlcSkgewo+IC0JCXJwcy0+Ym9vc3RfZnJlcSA9IHZhbDsKPiAtCQli b29zdCA9IGF0b21pY19yZWFkKCZycHMtPm51bV93YWl0ZXJzKTsKPiAtCX0KPiAtCW11dGV4X3Vu bG9jaygmcnBzLT5sb2NrKTsKPiAtCWlmIChib29zdCkKPiAtCQlzY2hlZHVsZV93b3JrKCZycHMt PndvcmspOwo+IC0KPiAtCXJldHVybiBjb3VudDsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3Qg dmx2X3JwZV9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAt CXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBzOwo+IC0KPiAtCXJldHVy biBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+IC0JCQlpbnRlbF9ncHVfZnJlcShy cHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3Rf bWF4X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3Jw cyAqcnBzID0gJmRldl9wcml2LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1Ziwg UEFHRV9TSVpFLCAiJWRcbiIsCj4gLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5tYXhfZnJl cV9zb2Z0bGltaXQpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6 X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAo+IC0JCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkK PiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90 b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5y cHM7Cj4gLQlzc2l6ZV90IHJldDsKPiAtCXUzMiB2YWw7Cj4gLQo+IC0JcmV0ID0ga3N0cnRvdTMy KGJ1ZiwgMCwgJnZhbCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JbXV0 ZXhfbG9jaygmcnBzLT5sb2NrKTsKPiAtCj4gLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMs IHZhbCk7Cj4gLQlpZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fAo+IC0JICAgIHZhbCA+IHJwcy0+ bWF4X2ZyZXEgfHwKPiAtCSAgICB2YWwgPCBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkgewo+IC0J CXJldCA9IC1FSU5WQUw7Cj4gLQkJZ290byB1bmxvY2s7Cj4gLQl9Cj4gLQo+IC0JaWYgKHZhbCA+ IHJwcy0+cnAwX2ZyZXEpCj4gLQkJRFJNX0RFQlVHKCJVc2VyIHJlcXVlc3RlZCBvdmVyY2xvY2tp bmcgdG8gJWRcbiIsCj4gLQkJCSAgaW50ZWxfZ3B1X2ZyZXEocnBzLCB2YWwpKTsKPiAtCj4gLQly cHMtPm1heF9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKPiAtCj4gLQl2YWwgPSBjbGFtcF90KGludCwg cnBzLT5jdXJfZnJlcSwKPiAtCQkgICAgICBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCwKPiAtCQkg ICAgICBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCk7Cj4gLQo+IC0JLyoKPiAtCSAqIFdlIHN0aWxs IG5lZWQgKl9zZXRfcnBzIHRvIHByb2Nlc3MgdGhlIG5ldyBtYXhfZGVsYXkgYW5kCj4gLQkgKiB1 cGRhdGUgdGhlIGludGVycnVwdCBsaW1pdHMgYW5kIFBNSU5UUk1TSyBldmVuIHRob3VnaAo+IC0J ICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4KPiAtCSAqLwo+IC0JaW50ZWxf cnBzX3NldChycHMsIHZhbCk7Cj4gLQo+IC11bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJnJwcy0+ bG9jayk7Cj4gLQo+IC0JcmV0dXJuIHJldCA/OiBjb3VudDsKPiAtfQo+IC0KPiAtc3RhdGljIHNz aXplX3QgZ3RfbWluX2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0 IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJp bnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCj4gLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBz LT5taW5fZnJlcV9zb2Z0bGltaXQpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfbWlu X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLAo+IC0JCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVf dCBjb3VudCkKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rl dl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9w cml2LT5ndC5ycHM7Cj4gLQlzc2l6ZV90IHJldDsKPiAtCXUzMiB2YWw7Cj4gLQo+IC0JcmV0ID0g a3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4g LQo+IC0JbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsKPiAtCj4gLQl2YWwgPSBpbnRlbF9mcmVxX29w Y29kZShycHMsIHZhbCk7Cj4gLQlpZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fAo+IC0JICAgIHZh bCA+IHJwcy0+bWF4X2ZyZXEgfHwKPiAtCSAgICB2YWwgPiBycHMtPm1heF9mcmVxX3NvZnRsaW1p dCkgewo+IC0JCXJldCA9IC1FSU5WQUw7Cj4gLQkJZ290byB1bmxvY2s7Cj4gLQl9Cj4gLQo+IC0J cnBzLT5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7Cj4gLQo+IC0JdmFsID0gY2xhbXBfdChpbnQs IHJwcy0+Y3VyX2ZyZXEsCj4gLQkJICAgICAgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQsCj4gLQkJ ICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpOwo+IC0KPiAtCS8qCj4gLQkgKiBXZSBzdGls bCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcgbWluX2RlbGF5IGFuZAo+IC0JICog dXBkYXRlIHRoZSBpbnRlcnJ1cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKPiAt CSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCj4gLQkgKi8KPiAtCWludGVs X3Jwc19zZXQocnBzLCB2YWwpOwo+IC0KPiAtdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZycHMt PmxvY2spOwo+IC0KPiAtCXJldHVybiByZXQgPzogY291bnQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBE RVZJQ0VfQVRUUl9STyhndF9hY3RfZnJlcV9taHopOwo+IC1zdGF0aWMgREVWSUNFX0FUVFJfUk8o Z3RfY3VyX2ZyZXFfbWh6KTsKPiAtc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFf bWh6KTsKPiAtc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X21heF9mcmVxX21oeik7Cj4gLXN0YXRp YyBERVZJQ0VfQVRUUl9SVyhndF9taW5fZnJlcV9taHopOwo+IC0KPiAtc3RhdGljIERFVklDRV9B VFRSX1JPKHZsdl9ycGVfZnJlcV9taHopOwo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6 X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1Zik7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUihndF9SUDBfZnJlcV9taHosIFNfSVJV R08sIGd0X3JwX21oel9zaG93LCBOVUxMKTsKPiAtc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMV9m cmVxX21oeiwgU19JUlVHTywgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOwo+IC1zdGF0aWMgREVWSUNF X0FUVFIoZ3RfUlBuX2ZyZXFfbWh6LCBTX0lSVUdPLCBndF9ycF9taHpfc2hvdywgTlVMTCk7Cj4g LQo+IC0vKiBGb3Igbm93IHdlIGhhdmUgYSBzdGF0aWMgbnVtYmVyIG9mIFJQIHN0YXRlcyAqLwo+ IC1zdGF0aWMgc3NpemVfdCBndF9ycF9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQlz dHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0LnJwczsKPiAtCXUzMiB2YWw7Cj4g LQo+IC0JaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMF9mcmVxX21oeikKPiAtCQl2YWwgPSBp bnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAwX2ZyZXEpOwo+IC0JZWxzZSBpZiAoYXR0ciA9PSAm ZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6KQo+IC0JCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywg cnBzLT5ycDFfZnJlcSk7Cj4gLQllbHNlIGlmIChhdHRyID09ICZkZXZfYXR0cl9ndF9SUG5fZnJl cV9taHopCj4gLQkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPm1pbl9mcmVxKTsKPiAt CWVsc2UKPiAtCQlCVUcoKTsKPiAtCj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUs ICIlZFxuIiwgdmFsKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KiBjb25zdCBnZW42X2F0dHJzW10gPSB7Cj4gLQkmZGV2X2F0dHJfZ3RfYWN0X2ZyZXFfbWh6LmF0 dHIsCj4gLQkmZGV2X2F0dHJfZ3RfY3VyX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3Rf Ym9vc3RfZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9tYXhfZnJlcV9taHouYXR0ciwK PiAtCSZkZXZfYXR0cl9ndF9taW5fZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9SUDBf ZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9SUDFfZnJlcV9taHouYXR0ciwKPiAtCSZk ZXZfYXR0cl9ndF9SUG5fZnJlcV9taHouYXR0ciwKPiAtCU5VTEwsCj4gLX07Cj4gLQo+IC1zdGF0 aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0IHZsdl9hdHRyc1tdID0gewo+IC0JJmRl dl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0X2N1cl9mcmVxX21o ei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0X2Jvb3N0X2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0 dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfbWluX2ZyZXFfbWh6LmF0 dHIsCj4gLQkmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3Rf UlAxX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0dHIsCj4g LQkmZGV2X2F0dHJfdmx2X3JwZV9mcmVxX21oei5hdHRyLAo+IC0JTlVMTCwKPiAtfTsKPiAtCj4g ICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKQo+ICAKPiAgc3Rh dGljIHNzaXplX3QgZXJyb3Jfc3RhdGVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtv YmplY3QgKmtvYmosCj4gQEAgLTU1OSwyOSArMjI1LDYgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2Zz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXN0cnVjdCBkZXZpY2UgKmtk ZXYgPSBkZXZfcHJpdi0+ZHJtLnByaW1hcnktPmtkZXY7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtI2lm ZGVmIENPTkZJR19QTQo+IC0JaWYgKEhBU19SQzYoZGV2X3ByaXYpKSB7Cj4gLQkJcmV0ID0gc3lz ZnNfbWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosCj4gLQkJCQkJJnJjNl9hdHRyX2dyb3VwKTsKPiAt CQlpZiAocmV0KQo+IC0JCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+IC0JCQkJIlJDNiByZXNp ZGVuY3kgc3lzZnMgc2V0dXAgZmFpbGVkXG4iKTsKPiAtCX0KPiAtCWlmIChIQVNfUkM2cChkZXZf cHJpdikpIHsKPiAtCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgma2Rldi0+a29iaiwKPiAtCQkJ CQkmcmM2cF9hdHRyX2dyb3VwKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlkcm1fZXJyKCZkZXZfcHJp di0+ZHJtLAo+IC0JCQkJIlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7Cj4g LQl9Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZf cHJpdikpIHsKPiAtCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgma2Rldi0+a29iaiwKPiAtCQkJ CQkmbWVkaWFfcmM2X2F0dHJfZ3JvdXApOwo+IC0JCWlmIChyZXQpCj4gLQkJCWRybV9lcnIoJmRl dl9wcml2LT5kcm0sCj4gLQkJCQkiTWVkaWEgUkM2IHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWls ZWRcbiIpOwo+IC0JfQo+IC0jZW5kaWYKPiAgCWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSkgewo+ ICAJCXJldCA9IGRldmljZV9jcmVhdGVfYmluX2ZpbGUoa2RldiwgJmRwZl9hdHRycyk7Cj4gIAkJ aWYgKHJldCkKPiBAQCAtNTk3LDE0ICsyNDAsNiBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCX0KPiAgCX0KPiAgCj4gLQlyZXQg PSAwOwo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQo+IC0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygma2Rldi0+a29iaiwgdmx2X2F0 dHJzKTsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPiAtCQlyZXQgPSBz eXNmc19jcmVhdGVfZmlsZXMoJmtkZXYtPmtvYmosIGdlbjZfYXR0cnMpOwo+IC0JaWYgKHJldCkK PiAtCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiUlBTIHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7 Cj4gLQo+ICAJaTkxNV9zZXR1cF9lcnJvcl9jYXB0dXJlKGtkZXYpOwo+ICB9Cj4gIAo+IEBAIC02 MTQsMTQgKzI0OSw2IEBAIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJaTkxNV90ZWFyZG93bl9lcnJvcl9jYXB0dXJlKGtk ZXYpOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPiAtCQlzeXNmc19yZW1vdmVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9hdHRy cyk7Cj4gLQllbHNlCj4gLQkJc3lzZnNfcmVtb3ZlX2ZpbGVzKCZrZGV2LT5rb2JqLCBnZW42X2F0 dHJzKTsKPiAgCWRldmljZV9yZW1vdmVfYmluX2ZpbGUoa2RldiwgICZkcGZfYXR0cnNfMSk7Cj4g IAlkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKGtkZXYsICAmZHBmX2F0dHJzKTsKPiAtI2lmZGVmIENP TkZJR19QTQo+IC0Jc3lzZnNfdW5tZXJnZV9ncm91cCgma2Rldi0+a29iaiwgJnJjNl9hdHRyX2dy b3VwKTsKPiAtCXN5c2ZzX3VubWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosICZyYzZwX2F0dHJfZ3Jv dXApOwo+IC0jZW5kaWYKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N5c2ZzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmgKPiBpbmRleCA0 MWFmZDQzNjY0MTYuLmFkNjExNGRlODFjOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N5c2ZzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2Zz LmgKPiBAQCAtNiw4ICs2LDExIEBACj4gICNpZm5kZWYgX19JOTE1X1NZU0ZTX0hfXwo+ICAjZGVm aW5lIF9fSTkxNV9TWVNGU19IX18KPiAgCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KCllv dSdsbCBvbmx5IG5lZWQgYSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoKPiArCj4gIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlOwo+ICAKPiArc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmtkZXZfbWlub3Jf dG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2KTsKPiAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgdm9pZCBpOTE1X3RlYXJkb3duX3N5c2Zz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwg T3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=