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=-7.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, HK_RANDOM_FROM,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 A0E35C2BA83 for ; Fri, 14 Feb 2020 12:54:41 +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 79E0B2168B for ; Fri, 14 Feb 2020 12:54:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 79E0B2168B 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 25FA86F90F; Fri, 14 Feb 2020 12:54:41 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E3536F90F for ; Fri, 14 Feb 2020 12:54:40 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Feb 2020 04:54:39 -0800 X-IronPort-AV: E=Sophos;i="5.70,440,1574150400"; d="scan'208";a="223009726" Received: from ayashfe-mobl1.ger.corp.intel.com (HELO [10.251.86.31]) ([10.251.86.31]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/AES256-SHA; 14 Feb 2020 04:54:37 -0800 To: Andi Shyti , Intel GFX References: <20200214110308.2268-1-andi.shyti@intel.com> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: Date: Fri, 14 Feb 2020 12:54:35 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20200214110308.2268-1-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH] 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDE0LzAyLzIwMjAgMTE6MDMsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIEdUIGhhcyBpdHMg b3duIHByb3BlcnRpZXMgYW5kIGluIHN5c2ZzIHRoZXkgc2hvdWxkIGJlIGdyb3VwZWQKPiBpbiB0 aGUgJ2d0LycgZGlyZWN0b3J5Lgo+IAo+IENyZWF0ZSB0aGUgJ2d0LycgZGlyZWN0b3J5IGluIHN5 c2ZzIGFuZCBtb3ZlIHRoZSBwb3dlciBtYW5hZ2VtZW50Cj4gcmVsYXRlZCBmaWxlcy4KCkNhbiB5 b3UgcGFzdGUgdGhlIG5ldyBhbmQgbGVnYWN5IHBhdGhzIGluIHRoZSBjb21taXQgbWVzc2FnZT8K Cj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Cj4g LS0tCj4gSGksCj4gCj4gdGhpcyB2ZXJzaW9uIGhhcyBzb21lIG1vcmUgc3Vic3RhbnRpYWwgZGlm ZmVyZW5jZXMsIG5vdGhpbmcgdGhhdAo+IGNoYW5nZXMgdGhlIHdhbnRlZCBiZWhhdmlvciwgdGhv dWdoLgo+IAo+IFRoYW5rcyBDaHJpcywgSmFuaSBhbmQgVHZydGtvIGZvciB0aGUgcmV2aWV3cywK PiBBbmRpCj4gCj4gQ2hhbmdlbG9nOgo+ID09PT09PT09PT0KPiAKPiB2MiAtPiB2MzoKPiAgIC0g Zml4IHNvbWUgY2xlYW51cHMgdGhhdCBJIGZvcmdvdCBpbiB0aGUgcHJldmlvdXMgcGF0Y2gKPiAg IC0gZml4IHJlZmVyZW5jZSBwb2ludGVycyB0byB0aGUgZ3Qgc3RydWN0dXJlCj4gICAtIGFuZCBt YW55IG90aGVyIHNtYWxsIGNoYW5nZXMgaGVyZSBhbmQgdGhlcmUuCj4gdjEgLT4gdjI6Cj4gICAt IGtlZXAgdGhlIGV4aXN0aW5nIGZpbGVzIGFzIHRoZXkgYXJlCj4gICAtIHVzZSAiaW50ZWxfZ3Rf KiIgYXMgcHJlZml4IGluc3RlYWQgb2YgInN5c2ZzXyoiCj4gCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZSAgICAgICAgICAgIHwgICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndC5jICAgICAgIHwgICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3R5cGVzLmggfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lz ZnNfZ3QuYyAgICAgICB8ICA4NSArKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lz ZnNfZ3QuaCAgICAgICB8ICAyMiArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNf Z3RfcG0uYyAgICB8IDQ0NiArKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uaCAgICB8ICAxNyArCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgIHwgMzc1ICstLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuaCAgICAgICAgfCAgIDMgKwo+ICAgOSBmaWxl cyBjaGFuZ2VkLCA1ODEgaW5zZXJ0aW9ucygrKSwgMzc1IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmMKPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oCj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYwo+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmgK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDQ5ZWVkNTBlZjBhNC4uM2I4MWM4YTk2YzA2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTA2LDcgKzEwNiw5IEBAIGd0LXkgKz0g XAo+ICAgCWd0L2ludGVsX3Jwcy5vIFwKPiAgIAlndC9pbnRlbF9zc2V1Lm8gXAo+ICAgCWd0L2lu dGVsX3RpbWVsaW5lLm8gXAo+IC0JZ3QvaW50ZWxfd29ya2Fyb3VuZHMubwo+ICsJZ3QvaW50ZWxf d29ya2Fyb3VuZHMubyBcCj4gKwlndC9zeXNmc19ndC5vIFwKPiArCWd0L3N5c2ZzX2d0X3BtLm8K PiAgICMgYXV0b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0ZQo+ICAgZ3QteSArPSBcCj4gICAJ Z3QvZ2VuNl9yZW5kZXJzdGF0ZS5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKPiBp bmRleCBmMWYxYjMwNmUwYWYuLmU3OTRkMDVkNjlhMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3QuYwo+IEBAIC0xNSw2ICsxNSw3IEBACj4gICAjaW5jbHVkZSAiaW50ZWxfcnBzLmgi Cj4gICAjaW5jbHVkZSAiaW50ZWxfdW5jb3JlLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfcG0uaCIK PiArI2luY2x1ZGUgInN5c2ZzX2d0LmgiCj4gICAKPiAgIHZvaWQgaW50ZWxfZ3RfaW5pdF9lYXJs eShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAg IHsKPiBAQCAtMzIxLDYgKzMyMiw3IEBAIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX3JlZ2lzdGVyKHN0 cnVjdCBpbnRlbF9ndCAqZ3QpCj4gICAJaW50ZWxfcnBzX2RyaXZlcl9yZWdpc3RlcigmZ3QtPnJw cyk7Cj4gICAKPiAgIAlkZWJ1Z2ZzX2d0X3JlZ2lzdGVyKGd0KTsKPiArCWludGVsX2d0X3N5c2Zz X3JlZ2lzdGVyKGd0KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBpbnRlbF9ndF9pbml0X3Nj cmF0Y2goc3RydWN0IGludGVsX2d0ICpndCwgdW5zaWduZWQgaW50IHNpemUpCj4gQEAgLTY0MSw2 ICs2NDMsNyBAQCB2b2lkIGludGVsX2d0X2RyaXZlcl9yZW1vdmUoc3RydWN0IGludGVsX2d0ICpn dCkKPiAgIAo+ICAgdm9pZCBpbnRlbF9ndF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQo+ICAgewo+ICsJaW50ZWxfZ3Rfc3lzZnNfdW5yZWdpc3RlcihndCk7Cj4gICAJaW50 ZWxfcnBzX2RyaXZlcl91bnJlZ2lzdGVyKCZndC0+cnBzKTsKPiAgIH0KPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAo+IGluZGV4IDk2ODkwZGQxMmI1Zi4uNTUy YTI3Y2MwNjIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5o Cj4gQEAgLTMyLDYgKzMyLDcgQEAgc3RydWN0IGludGVsX2d0IHsKPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmU7Cj4gICAJ c3RydWN0IGk5MTVfZ2d0dCAqZ2d0dDsKPiArCXN0cnVjdCBrb2JqZWN0IGtvYmo7CgpzeXNmc19y b290IG9yIHNvbWV0aGluZyBsaWtlIHdvdWxkIHBlcmhhcHMgYmUgbW9yZSBkZXNjcmlwdGl2ZT8K Cj4gICAKPiAgIAlzdHJ1Y3QgaW50ZWxfdWMgdWM7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5 c2ZzX2d0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNGNh MTQwZmMyMTVmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3N5c2ZzX2d0LmMKPiBAQCAtMCwwICsxLDg1IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQKPiArCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgva29iamVjdC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvcHJpbnRrLmg+Cj4gKwo+ICsjaW5jbHVkZSAiLi4vaTkxNV9kcnYuaCIKPiArI2lu Y2x1ZGUgImludGVsX2d0LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9ndF90eXBlcy5oIgo+ICsjaW5j bHVkZSAiaW50ZWxfcmM2LmgiCj4gKwo+ICsjaW5jbHVkZSAic3lzZnNfZ3QuaCIKPiArI2luY2x1 ZGUgInN5c2ZzX2d0X3BtLmgiCj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBrb2JqZWN0ICpn dF90b19wYXJlbnRfb2JqKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCXJldHVybiBrb2Jq ZWN0X2dldCgmZ3QtPmk5MTUtPmRybS5wcmltYXJ5LT5rZGV2LT5rb2JqKTsKCkl0J3MgYSBiaXQg c3VycHJpc2luZyBYX3RvX1kgaGVscGVyIGdldCBhIHJlZmVyZW5jZSBhcyB3ZWxsLCBubz8gCmd0 X2dldF9wYXJlbnRfb2JqIHBlcmhhcHM/IEJ1dCB3aGVyZSBpcyB0aGlzIHJlbGVhc2VkPwoKPiAr fQo+ICsKPiArc3RhdGljIHNzaXplX3QgZ3RfaW5mb19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwK PiArCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgICAgY2hhciAq YnVmZikKPiArewo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIjBcbiIpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3RfaW5mbyk7Cj4gKwo+ICtzdGF0aWMg dm9pZCBzeXNmc19ndF9rb2JqX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sKPiAr CXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBrb2JqX3RvX2d0KGtvYmopOwo+ICsKPiArCWRybV9pbmZv KCZndC0+aTkxNS0+ZHJtLCAicmVsZWFzaW5nIGludGVyZmFjZVxuIik7CgpEZWJ1Z2dpbmcgcmVt bmFudHMuCgo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGtvYmpfdHlwZSBzeXNmc19ndF9rdHlw ZSA9IHsKPiArCS5yZWxlYXNlICAgPSBzeXNmc19ndF9rb2JqX3JlbGVhc2UsCj4gKwkuc3lzZnNf b3BzID0gJmtvYmpfc3lzZnNfb3BzLAo+ICt9Owo+ICsKPiArdm9pZCBpbnRlbF9ndF9zeXNmc19y ZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICt7Cj4gKwlzdHJ1Y3Qga29iamVjdCAqa3Bh cmVudCA9IGd0X3RvX3BhcmVudF9vYmooZ3QpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBr b2JqZWN0X2luaXRfYW5kX2FkZCgmZ3QtPmtvYmosICZzeXNmc19ndF9rdHlwZSwga3BhcmVudCwg Imd0Iik7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZHJtX2VycigmZ3QtPmk5MTUtPmRybSwgImZhaWxl ZCB0byBpbml0aWFsaXplIHN5c2ZzIGZpbGVcbiIpOwo+ICsJCWtvYmplY3RfcHV0KCZndC0+a29i aik7CgpTbyB5b3Ugd2FudCBndC0+a29iaiB0byBiZSBlbWJlZGRlZCBzdHJ1Y3QgYW5kIHlvdSB3 YW50IHRvIHRoZW4gb3ZlcnJpZGUgCnRoZSByZWxlYXNlIHZmdW5jIHNvIGl0IGlzIG5vdCBmcmVl ZCwgYnV0IHdoYXQgaXMgdGhlIHNwZWNpZmljIHJlYXNvbiAKeW91IHdhbnQgaXQgZW1iZWRkZWQ/ Cgo+ICsJCWdvdG8gcGFyZW50X2ZpbGVzOwo+ICsJfQo+ICsKPiArCXJldCA9IHN5c2ZzX2NyZWF0 ZV9maWxlKCZndC0+a29iaiwgJmRldl9hdHRyX2d0X2luZm8uYXR0cik7Cj4gKwlpZiAocmV0KQo+ ICsJCWRybV9lcnIoJmd0LT5pOTE1LT5kcm0sICJmYWlsZWQgdG8gY3JlYXRlIHN5c2ZzIGd0IGlu Zm8gZmlsZXNcbiIpOwo+ICsKPiArCWludGVsX2d0X3N5c2ZzX3BtX2luaXQoZ3QsICZndC0+a29i aik7Cj4gKwo+ICtwYXJlbnRfZmlsZXM6Cj4gKwkvKgo+ICsJICogd2UgbmVlZCB0byBtYWtlIHRo aW5ncyByaWdodCB3aXRoIHRoZQo+ICsJICogQUJJIGNvbXBhdGliaWxpdHkuIFRoZSBmaWxlcyB3 ZXJlIG9yaWdpbmFsbHkKPiArCSAqIGdlbmVyYXRlZCB1bmRlciB0aGUgcGFyZW50IGRpcmVjdG9y eS4KPiArCSAqLwo+ICsJaW50ZWxfZ3Rfc3lzZnNfcG1faW5pdChndCwga3BhcmVudCk7Cj4gK30K PiArCj4gK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfdW5yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0 KQo+ICt7Cj4gKwlzdHJ1Y3Qga29iamVjdCAqcm9vdCA9IGd0X3RvX3BhcmVudF9vYmooZ3QpOwo+ ICsKPiArCWlmICgmZ3QtPmtvYmopIHsKClRoaXMgaXMgYWx3YXlzIHRydWUuCgo+ICsJCXN5c2Zz X3JlbW92ZV9maWxlKCZndC0+a29iaiwgJmRldl9hdHRyX2d0X2luZm8uYXR0cik7Cj4gKwkJaW50 ZWxfZ3Rfc3lzZnNfcG1fcmVtb3ZlKGd0LCAmZ3QtPmtvYmopOwo+ICsJCWtvYmplY3RfcHV0KCZn dC0+a29iaik7CgpJIHRoaW5rIGtvYmplY3RfcHV0IGlzIGVub3VnaCB0byB0ZWFyIGRvd24gdGhl IHdob2xlIGhpZXJhcmNoeSBzbyB5b3UgCmNvdWxkIHNpbXBsaWZ5IHRoaXMuCgo+ICsJfQo+ICsK PiArCWludGVsX2d0X3N5c2ZzX3BtX3JlbW92ZShndCwgcm9vdCk7Cj4gKwlrb2JqZWN0X3B1dChy b290KTsKCk1heWJlIHN0aWNrIHRvIHRoZSBzYW1lIHRlcm1pbm9sb2d5IHJlZ2FyZGluZyByb290 IGFuZCBwYXJlbnQuCgpHZXQvcHV0IG9uIHRoZSBwYXJlbnQgbG9va3MgdW5iYWxhbmNlZC4gQm90 aCByZWdpc3RlciBhbmQgdW5yZWdpc3RlciAKdGFrZSBhIHJlZmVyZW5jZSBhbmQgb25seSB1bnJl Z2lzdGVyIHJlbGVhc2VzIGl0LiBCdXQgZG8geW91IGV2ZW4gbmVlZCBhIApyZWZlcmVuY2U/Cgo+ ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLmVmZmY2Yjg4NGIxOAo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oCj4gQEAgLTAsMCArMSwyMiBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCj4gKwo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgU1lT RlNfR1RfSAo+ICsjZGVmaW5lIFNZU0ZTX0dUX0gKPiArCj4gKyNpbmNsdWRlICJpbnRlbF9ndF90 eXBlcy5oIgo+ICsKPiArc3RydWN0IGludGVsX2d0Owo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgaW50ZWxfZ3QgKmtvYmpfdG9fZ3Qoc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sKPiArCXJl dHVybiBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGludGVsX2d0LCBrb2JqKTsKPiArfQo+ICsK PiArdm9pZCBpbnRlbF9ndF9zeXNmc19yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiAr dm9pZCBpbnRlbF9ndF9zeXNmc191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwo+ICsK PiArI2VuZGlmIC8qIFNZU0ZTX0dUX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0 X3BtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTM3NDY0 ODU1NjlmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5 c2ZzX2d0X3BtLmMKPiBAQCAtMCwwICsxLDQ0NiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogTUlUCj4gKwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ICsjaW5jbHVk ZSA8bGludXgvc3lzZnMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3ByaW50ay5oPgo+ICsKPiArI2lu Y2x1ZGUgIi4uL2k5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICIuLi9pOTE1X3N5c2ZzLmgiCj4gKyNp bmNsdWRlICJpbnRlbF9ndC5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfcmM2LmgiCj4gKyNpbmNsdWRl ICJpbnRlbF9ycHMuaCIKPiArI2luY2x1ZGUgInN5c2ZzX2d0LmgiCj4gKyNpbmNsdWRlICJzeXNm c19ndF9wbS5oIgo+ICsKPiArc3RydWN0IGludGVsX2d0ICppbnRlbF9ndF9zeXNmc19nZXRfZHJ2 ZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBrb2JqZWN0ICprb2JqID0g JmRldi0+a29iajsKPiArCS8qCj4gKwkgKiBXZSBhcmUgaW50ZXJlc3RlZCBhdCBrbm93aW5nIGZy b20gd2hlcmUgdGhlIGludGVyZmFjZQo+ICsJICogaGFzIGJlZW4gY2FsbGVkLCB3aGV0aGVyIGl0 J3MgY2FsbGVkIGZyb20gZ3QvIG9yIGZyb20KPiArCSAqIHRoZSBwYXJlbnQgZGlyZWN0b3J5Lgo+ ICsJICogRnJvbSB0aGUgaW50ZXJmYWNlIHBvc2l0aW9uIGl0IGRlcGVuZHMgYWxzbyB0aGUgdmFs dWUgb2YKPiArCSAqIHRoZSBwcml2YXRlIGRhdGEuCj4gKwkgKiBJZiB0aGUgaW50ZXJmYWNlIGlz IGNhbGxlZCBmcm9tIGd0LyB0aGVuIHByaXZhdGUgZGF0YSBpcwo+ICsJICogb2YgdGhlICJzdHJ1 Y3QgaW50ZWxfZ3QgKiIgdHlwZSwgb3RoZXJ3aXNlIGl0J3MgKiBhCj4gKwkgKiAic3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKiIgdHlwZS4KPiArCSAqLwo+ICsJaWYgKHN0cmNtcChkZXYtPmtvYmou bmFtZSwgImd0IikpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtkZXZf bWlub3JfdG9faTkxNShkZXYpOwo+ICsKPiArCQlkcm1fd2FybigmaTkxNS0+ZHJtLCAidGhlIGlu dGVyZmFjZSBpcyBvYnNvbGV0ZSwgdXNlIGd0L1xuIik7CgpDYW4geW91IGxvZyBjdXJyZW50LT5u YW1lICYgcGlkPwoKSSBhbSBhbHNvIHRoaW5raW5nIGlzIGEgbGV2ZWwgZG93biBmcm9tIHdhcm4g d291bGQgYmUgYmV0dGVyLiBOb3RpY2UgCnNvdW5kcyBpbnR1aXRpdmVseSBjb3JyZWN0IHRvIG1l LgoKSSBhbSBhbHNvIHRlbXB0ZWQgYnkgdGhlIF9vbmNlIGFsdGVybmF0aXZlLCBidXQgdGhlbiBp dCBtYWtlcyBsZXNzIHNlbnNlIAp0byBpbmNsdWRlIG5hbWUgJiBwaWQuCgpSZWdhcmRzLAoKVHZy dGtvCgo+ICsJCXJldHVybiAmaTkxNS0+Z3Q7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGtvYmpfdG9f Z3Qoa29iaik7Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfUE0KPiArc3RhdGljIHUzMiBnZXRf cmVzaWRlbmN5KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGk5MTVfcmVnX3QgcmVnKQo+ICt7Cj4gKwlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCXU2NCByZXMgPSAwOwo+ICsKPiArCXdpdGhfaW50 ZWxfcnVudGltZV9wbShndC0+dW5jb3JlLT5ycG0sIHdha2VyZWYpCj4gKwkJcmVzID0gaW50ZWxf cmM2X3Jlc2lkZW5jeV91cygmZ3QtPnJjNiwgcmVnKTsKPiArCj4gKwlyZXR1cm4gRElWX1JPVU5E X0NMT1NFU1RfVUxMKHJlcywgMTAwMCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IHJjNl9l bmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICAgIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVj dCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJdTgg bWFzayA9IDA7Cj4gKwo+ICsJaWYgKEhBU19SQzYoZ3QtPmk5MTUpKQo+ICsJCW1hc2sgfD0gQklU KDApOwo+ICsJaWYgKEhBU19SQzZwKGd0LT5pOTE1KSkKPiArCQltYXNrIHw9IEJJVCgxKTsKPiAr CWlmIChIQVNfUkM2cHAoZ3QtPmk5MTUpKQo+ICsJCW1hc2sgfD0gQklUKDIpOwo+ICsKPiArCXJl dHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIleFxuIiwgbWFzayk7Cj4gK30KPiArCj4g K3N0YXRpYyBzc2l6ZV90IHJjNl9yZXNpZGVuY3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4gKwkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkJICAgICBj aGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNf Z2V0X2RydmRhdGEoZGV2KTsKPiArCXUzMiByYzZfcmVzaWRlbmN5ID0gZ2V0X3Jlc2lkZW5jeShn dCwgR0VONl9HVF9HRlhfUkM2KTsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9T SVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBy YzZwX3Jlc2lkZW5jeV9tc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkJICAgICAgY2hhciAqYnVmZikKPiAr ewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRl dik7Cj4gKwl1MzIgcmM2cF9yZXNpZGVuY3kgPSBnZXRfcmVzaWRlbmN5KGd0LCBHRU42X0dUX0dG WF9SQzZwKTsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIs IHJjNnBfcmVzaWRlbmN5KTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgcmM2cHBfcmVzaWRl bmN5X21zX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJICAgICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkJICAgICAgIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJ dTMyIHJjNnBwX3Jlc2lkZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIEdFTjZfR1RfR0ZYX1JDNnBw KTsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBw X3Jlc2lkZW5jeSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IG1lZGlhX3JjNl9yZXNpZGVu Y3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkJICAgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkJICAgY2hhciAqYnVmZikKPiArewo+ICsJc3RydWN0IGlu dGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4gKwl1MzIgcmM2 X3Jlc2lkZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIFZMVl9HVF9NRURJQV9SQzYpOwo+ICsKPiAr CXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2X3Jlc2lkZW5jeSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhyYzZfZW5hYmxlKTsKPiArc3RhdGlj IERFVklDRV9BVFRSX1JPKHJjNl9yZXNpZGVuY3lfbXMpOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJf Uk8ocmM2cF9yZXNpZGVuY3lfbXMpOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2cHBfcmVz aWRlbmN5X21zKTsKPiArc3RhdGljIERFVklDRV9BVFRSX1JPKG1lZGlhX3JjNl9yZXNpZGVuY3lf bXMpOwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKnJjNl9hdHRyc1tdID0g ewo+ICsJJmRldl9hdHRyX3JjNl9lbmFibGUuYXR0ciwKPiArCSZkZXZfYXR0cl9yYzZfcmVzaWRl bmN5X21zLmF0dHIsCj4gKwlOVUxMCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZSAqcmM2cF9hdHRyc1tdID0gewo+ICsJJmRldl9hdHRyX3JjNnBfcmVzaWRlbmN5X21z LmF0dHIsCj4gKwkmZGV2X2F0dHJfcmM2cHBfcmVzaWRlbmN5X21zLmF0dHIsCj4gKwlOVUxMCj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqbWVkaWFfcmM2X2F0dHJz W10gPSB7Cj4gKwkmZGV2X2F0dHJfbWVkaWFfcmM2X3Jlc2lkZW5jeV9tcy5hdHRyLAo+ICsJTlVM TAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfc3lzZnNfcmM2X2luaXQoc3RydWN0IGlu dGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sKPiArCWludCByZXQgPSAwOwo+ ICsKPiArCWlmIChIQVNfUkM2KGd0LT5pOTE1KSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9m aWxlcyhrb2JqLCByYzZfYXR0cnMpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWRybV9lcnIoJmd0LT5p OTE1LT5kcm0sCj4gKwkJCQkiZmFpbGVkIHRvIGNyZWF0ZSBSQzYgc3lzZnMgZmlsZXNcbiIpOwo+ ICsJfQo+ICsKPiArCWlmIChIQVNfUkM2cChndC0+aTkxNSkpIHsKPiArCQlyZXQgPSBzeXNmc19j cmVhdGVfZmlsZXMoa29iaiwgcmM2cF9hdHRycyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZHJtX2Vy cigmZ3QtPmk5MTUtPmRybSwKPiArCQkJCSJmYWlsZWQgdG8gY3JlYXRlIFJDNnAgc3lzZnMgZmls ZXNcbiIpOwo+ICsJfQo+ICsKPiArCWlmIChJU19WQUxMRVlWSUVXKGd0LT5pOTE1KSB8fCBJU19D SEVSUllWSUVXKGd0LT5pOTE1KSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2Jq LCBtZWRpYV9yYzZfYXR0cnMpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWRybV9lcnIoJmd0LT5pOTE1 LT5kcm0sCj4gKwkJCQkiZmFpbGVkIHRvIGNyZWF0ZSBtZWRpYSBSQzYgc3lzZnMgZmlsZXNcbiIp Owo+ICsJfQo+ICt9Cj4gKyNlbHNlCj4gK3N0YXRpYyB2b2lkIGludGVsX3N5c2ZzX3JjNl9pbml0 KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQo+ICt7Cj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsjZW5kaWYgLyogQ09ORklHX1BNICovCj4gKwo+ICtzdGF0aWMgc3NpemVf dCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBp bnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCXJl dHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwKPiArCQkJaW50ZWxfcnBzX3Jl YWRfYWN0dWFsX2ZyZXF1ZW5jeSgmZ3QtPnJwcykpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVf dCBndF9jdXJfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBp bnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0 IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7Cj4gKwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYs IFBBR0VfU0laRSwgIiVkXG4iLAo+ICsJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+Y3VyX2Zy ZXEpKTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgZ3RfYm9vc3RfZnJlcV9taHpfc2hvdyhz dHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwKPiArCQkJCSAgICAgIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAq Z3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3Jw cyAqcnBzID0gJmd0LT5ycHM7Cj4gKwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0la RSwgIiVkXG4iLAo+ICsJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+Ym9vc3RfZnJlcSkpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21oel9zdG9yZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs Cj4gKwkJCQkgICAgICAgY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiAr CXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwo+ICsJYm9vbCBib29zdCA9IGZhbHNl Owo+ICsJc3NpemVfdCByZXQ7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCXJldCA9IGtzdHJ0b3UzMihi dWZmLCAwLCAmdmFsKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBW YWxpZGF0ZSBhZ2FpbnN0IChzdGF0aWMpIGhhcmR3YXJlIGxpbWl0cyAqLwo+ICsJdmFsID0gaW50 ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwo+ICsJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwg dmFsID4gcnBzLT5tYXhfZnJlcSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwltdXRleF9s b2NrKCZycHMtPmxvY2spOwo+ICsJaWYgKHZhbCAhPSBycHMtPmJvb3N0X2ZyZXEpIHsKPiArCQly cHMtPmJvb3N0X2ZyZXEgPSB2YWw7Cj4gKwkJYm9vc3QgPSBhdG9taWNfcmVhZCgmcnBzLT5udW1f d2FpdGVycyk7Cj4gKwl9Cj4gKwltdXRleF91bmxvY2soJnJwcy0+bG9jayk7Cj4gKwlpZiAoYm9v c3QpCj4gKwkJc2NoZWR1bGVfd29yaygmcnBzLT53b3JrKTsKPiArCj4gKwlyZXR1cm4gY291bnQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IHZsdl9ycGVfZnJlcV9taHpfc2hvdyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNf Z2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwo+ ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwKPiArCQkJaW50 ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmVmZmljaWVudF9mcmVxKSk7Cj4gK30KPiArCj4gK3N0YXRp YyBzc2l6ZV90IGd0X21heF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ CSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICBjaGFyICpidWZm KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRh dGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwo+ICsKPiArCXJl dHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwKPiArCQkJaW50ZWxfZ3B1X2Zy ZXEocnBzLCBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3Np emVfdCBndF9tYXhfZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJICAg ICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICAgY29uc3QgY2hhciAq YnVmZiwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxf Z3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZn dC0+cnBzOwo+ICsJc3NpemVfdCByZXQ7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCXJldCA9IGtzdHJ0 b3UzMihidWZmLCAwLCAmdmFsKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4g KwltdXRleF9sb2NrKCZycHMtPmxvY2spOwo+ICsKPiArCXZhbCA9IGludGVsX2ZyZXFfb3Bjb2Rl KHJwcywgdmFsKTsKPiArCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8Cj4gKwkgICAgdmFsID4g cnBzLT5tYXhfZnJlcSB8fAo+ICsJICAgIHZhbCA8IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0KSB7 Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIHVubG9jazsKPiArCX0KPiArCj4gKwlpZiAo dmFsID4gcnBzLT5ycDBfZnJlcSkKPiArCQlEUk1fREVCVUcoIlVzZXIgcmVxdWVzdGVkIG92ZXJj bG9ja2luZyB0byAlZFxuIiwKPiArCQkJICBpbnRlbF9ncHVfZnJlcShycHMsIHZhbCkpOwo+ICsK PiArCXJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0ID0gdmFsOwo+ICsKPiArCXZhbCA9IGNsYW1wX3Qo aW50LCBycHMtPmN1cl9mcmVxLAo+ICsJCSAgICAgIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0LAo+ ICsJCSAgICAgIHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KTsKPiArCj4gKwkvKgo+ICsJICogV2Ug c3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJvY2VzcyB0aGUgbmV3IG1heF9kZWxheSBhbmQKPiAr CSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxpbWl0cyBhbmQgUE1JTlRSTVNLIGV2ZW4gdGhvdWdo Cj4gKwkgKiBmcmVxdWVuY3kgcmVxdWVzdCBtYXkgYmUgdW5jaGFuZ2VkLgo+ICsJICovCj4gKwlp bnRlbF9ycHNfc2V0KHJwcywgdmFsKTsKPiArCj4gK3VubG9jazoKPiArCW11dGV4X3VubG9jaygm cnBzLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0ID86IGNvdW50Owo+ICt9Cj4gKwo+ICtzdGF0 aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJ CQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkgICAgY2hhciAqYnVm ZikKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZk YXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKPiArCj4gKwly ZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCj4gKwkJCWludGVsX2dwdV9m cmVxKHJwcywgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpKTsKPiArfQo+ICsKPiArc3RhdGljIHNz aXplX3QgZ3RfbWluX2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAg ICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkgICAgIGNvbnN0IGNoYXIg KmJ1ZmYsIHNpemVfdCBjb3VudCkKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVs X2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAm Z3QtPnJwczsKPiArCXNzaXplX3QgcmV0Owo+ICsJdTMyIHZhbDsKPiArCj4gKwlyZXQgPSBrc3Ry dG91MzIoYnVmZiwgMCwgJnZhbCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICsJbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsKPiArCj4gKwl2YWwgPSBpbnRlbF9mcmVxX29wY29k ZShycHMsIHZhbCk7Cj4gKwlpZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fAo+ICsJICAgIHZhbCA+ IHJwcy0+bWF4X2ZyZXEgfHwKPiArCSAgICB2YWwgPiBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkg ewo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJcnBz LT5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7Cj4gKwo+ICsJdmFsID0gY2xhbXBfdChpbnQsIHJw cy0+Y3VyX2ZyZXEsCj4gKwkJICAgICAgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQsCj4gKwkJICAg ICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBzdGlsbCBu ZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcgbWluX2RlbGF5IGFuZAo+ICsJICogdXBk YXRlIHRoZSBpbnRlcnJ1cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKPiArCSAq IGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCj4gKwkgKi8KPiArCWludGVsX3Jw c19zZXQocnBzLCB2YWwpOwo+ICsKPiArdW5sb2NrOgo+ICsJbXV0ZXhfdW5sb2NrKCZycHMtPmxv Y2spOwo+ICsKPiArCXJldHVybiByZXQgPzogY291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBERVZJ Q0VfQVRUUl9STyhndF9hY3RfZnJlcV9taHopOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3Rf Y3VyX2ZyZXFfbWh6KTsKPiArc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFfbWh6 KTsKPiArc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X21heF9mcmVxX21oeik7Cj4gK3N0YXRpYyBE RVZJQ0VfQVRUUl9SVyhndF9taW5fZnJlcV9taHopOwo+ICsKPiArc3RhdGljIERFVklDRV9BVFRS X1JPKHZsdl9ycGVfZnJlcV9taHopOwo+ICsKPiArc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3No b3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKPiArCQkJICAgICAgY2hhciAqYnVmZik7Cj4gKwo+ICtzdGF0aWMgREVWSUNFX0FU VFIoZ3RfUlAwX2ZyZXFfbWh6LCAwNDQ0LCBndF9ycF9taHpfc2hvdywgTlVMTCk7Cj4gK3N0YXRp YyBERVZJQ0VfQVRUUihndF9SUDFfZnJlcV9taHosIDA0NDQsIGd0X3JwX21oel9zaG93LCBOVUxM KTsKPiArc3RhdGljIERFVklDRV9BVFRSKGd0X1JQbl9mcmVxX21oeiwgMDQ0NCwgZ3RfcnBfbWh6 X3Nob3csIE5VTEwpOwo+ICsKPiArLyogRm9yIG5vdyB3ZSBoYXZlIGEgc3RhdGljIG51bWJlciBv ZiBSUCBzdGF0ZXMgKi8KPiArc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRl dmljZSAqZGV2LAo+ICsJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiAr CQkJICAgICAgY2hhciAqYnVmZikKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVs X2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAm Z3QtPnJwczsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQ MF9mcmVxX21oeikKPiArCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAwX2ZyZXEp Owo+ICsJZWxzZSBpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6KQo+ICsJCXZh bCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5ycDFfZnJlcSk7Cj4gKwllbHNlIGlmIChhdHRy ID09ICZkZXZfYXR0cl9ndF9SUG5fZnJlcV9taHopCj4gKwkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEo cnBzLCBycHMtPm1pbl9mcmVxKTsKPiArCWVsc2UKPiArCQlCVUcoKTsKPiArCj4gKwlyZXR1cm4g c25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsIHZhbCk7Cj4gK30KPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogY29uc3QgZ2VuNl9hdHRyc1tdID0gewo+ICsJJmRl dl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X2N1cl9mcmVxX21o ei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X2Jvb3N0X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0 dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfbWluX2ZyZXFfbWh6LmF0 dHIsCj4gKwkmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3Rf UlAxX2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0dHIsCj4g KwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBjb25z dCB2bHZfYXR0cnNbXSA9IHsKPiArCSZkZXZfYXR0cl9ndF9hY3RfZnJlcV9taHouYXR0ciwKPiAr CSZkZXZfYXR0cl9ndF9jdXJfZnJlcV9taHouYXR0ciwKPiArCSZkZXZfYXR0cl9ndF9ib29zdF9m cmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X21heF9mcmVxX21oei5hdHRyLAo+ICsJJmRl dl9hdHRyX2d0X21pbl9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X1JQMF9mcmVxX21o ei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRy X2d0X1JQbl9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX3Zsdl9ycGVfZnJlcV9taHouYXR0 ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX3N5c2ZzX3Jwc19pbml0 KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQo+ICt7Cj4gKwlpZiAo SVNfVkFMTEVZVklFVyhndC0+aTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhndC0+aTkxNSkpCj4gKwkJ cmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCB2bHZfYXR0cnMpOwo+ICsKPiArCWlmIChJ TlRFTF9HRU4oZ3QtPmk5MTUpID49IDYpCj4gKwkJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlcyhr b2JqLCBnZW42X2F0dHJzKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBpbnRl bF9ndF9zeXNmc19wbV9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICpr b2JqKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWludGVsX3N5c2ZzX3JjNl9pbml0KGd0LCBr b2JqKTsKPiArCj4gKwlyZXQgPSBpbnRlbF9zeXNmc19ycHNfaW5pdChndCwga29iaik7Cj4gKwlp ZiAocmV0KQo+ICsJCWRybV9lcnIoJmd0LT5pOTE1LT5kcm0sICJmYWlsZWQgdG8gY3JlYXRlIFJQ UyBzeXNmcyBmaWxlcyIpOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2d0X3N5c2ZzX3BtX3JlbW92 ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAqa29iaikKPiArewo+ICsjaWZk ZWYgQ09ORklHX1BNCj4gKwlpZiAoSEFTX1JDNihndC0+aTkxNSkpCj4gKwkJc3lzZnNfcmVtb3Zl X2ZpbGVzKGtvYmosIHJjNl9hdHRycyk7Cj4gKwlpZiAoSEFTX1JDNnAoZ3QtPmk5MTUpKQo+ICsJ CXN5c2ZzX3JlbW92ZV9maWxlcyhrb2JqLCByYzZwX2F0dHJzKTsKPiArCWlmIChJU19WQUxMRVlW SUVXKGd0LT5pOTE1KSB8fCBJU19DSEVSUllWSUVXKGd0LT5pOTE1KSkKPiArCQlzeXNmc19yZW1v dmVfZmlsZXMoa29iaiwgbWVkaWFfcmM2X2F0dHJzKTsKPiArI2VuZGlmCj4gKwo+ICsJaWYgKElT X1ZBTExFWVZJRVcoZ3QtPmk5MTUpIHx8IElTX0NIRVJSWVZJRVcoZ3QtPmk5MTUpKQo+ICsJCXN5 c2ZzX3JlbW92ZV9maWxlcyhrb2JqLCB2bHZfYXR0cnMpOwo+ICsJZWxzZQo+ICsJCXN5c2ZzX3Jl bW92ZV9maWxlcyhrb2JqLCBnZW42X2F0dHJzKTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c3lzZnNfZ3RfcG0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li43NThkMGMzY2I5OTgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc3lzZnNfZ3RfcG0uaAo+IEBAIC0wLDAgKzEsMTcgQEAKPiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVCAqLwo+ICsKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50 ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaWZuZGVmIFNZU0ZTX1JDNl9ICj4gKyNkZWZp bmUgU1lTRlNfUkM2X0gKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9rb2JqZWN0Lmg+Cj4gKwo+ICsj aW5jbHVkZSAiaW50ZWxfZ3RfdHlwZXMuaCIKPiArCj4gK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfcG1f aW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAqa29iaik7Cj4gK3ZvaWQg aW50ZWxfZ3Rfc3lzZnNfcG1fcmVtb3ZlKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2Jq ZWN0ICprb2JqKTsKPiArCj4gKyNlbmRpZiAvKiBTWVNGU19SQzZfSCAqLwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3N5c2ZzLmMKPiBpbmRleCBjMTRkNzYyYmQ2NTIuLjEyOTg5NzdmYzA4YiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiBAQCAtMzgsMTEzICszOCwxMiBAQAo+ICAgI2lu Y2x1ZGUgImludGVsX3BtLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKPiAgIAo+ IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICprZGV2X21pbm9yX3RvX2k5 MTUoc3RydWN0IGRldmljZSAqa2RldikKPiArc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmtkZXZf bWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1f bWlub3IgKm1pbm9yID0gZGV2X2dldF9kcnZkYXRhKGtkZXYpOwo+ICAgCXJldHVybiB0b19pOTE1 KG1pbm9yLT5kZXYpOwo+ICAgfQo+ICAgCj4gLSNpZmRlZiBDT05GSUdfUE0KPiAtc3RhdGljIHUz MiBjYWxjX3Jlc2lkZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJ CSAgaTkxNV9yZWdfdCByZWcpCj4gLXsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0J dTY0IHJlcyA9IDA7Cj4gLQo+IC0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZkZXZfcHJpdi0+cnVu dGltZV9wbSwgd2FrZXJlZikKPiAtCQlyZXMgPSBpbnRlbF9yYzZfcmVzaWRlbmN5X3VzKCZkZXZf cHJpdi0+Z3QucmM2LCByZWcpOwo+IC0KPiAtCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVF9VTEwo cmVzLCAxMDAwKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QKPiAtc2hvd19yYzZfbWFzayhz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21p bm9yX3RvX2k5MTUoa2Rldik7Cj4gLQl1bnNpZ25lZCBpbnQgbWFzazsKPiAtCj4gLQltYXNrID0g MDsKPiAtCWlmIChIQVNfUkM2KGRldl9wcml2KSkKPiAtCQltYXNrIHw9IEJJVCgwKTsKPiAtCWlm IChIQVNfUkM2cChkZXZfcHJpdikpCj4gLQkJbWFzayB8PSBCSVQoMSk7Cj4gLQlpZiAoSEFTX1JD NnBwKGRldl9wcml2KSkKPiAtCQltYXNrIHw9IEJJVCgyKTsKPiAtCj4gLQlyZXR1cm4gc25wcmlu dGYoYnVmLCBQQUdFX1NJWkUsICIleFxuIiwgbWFzayk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6 ZV90Cj4gLXNob3dfcmM2X21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXUzMiByYzZfcmVzaWRl bmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIEdFTjZfR1RfR0ZYX1JDNik7Cj4gLQlyZXR1 cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2X3Jlc2lkZW5jeSk7Cj4gLX0K PiAtCj4gLXN0YXRpYyBzc2l6ZV90Cj4gLXNob3dfcmM2cF9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7 Cj4gLQl1MzIgcmM2cF9yZXNpZGVuY3kgPSBjYWxjX3Jlc2lkZW5jeShkZXZfcHJpdiwgR0VONl9H VF9HRlhfUkM2cCk7Cj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwg cmM2cF9yZXNpZGVuY3kpOwo+IC19Cj4gLQo+IC1zdGF0aWMgc3NpemVfdAo+IC1zaG93X3JjNnBw X21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtk ZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXUzMiByYzZwcF9yZXNpZGVuY3kgPSBjYWxjX3Jl c2lkZW5jeShkZXZfcHJpdiwgR0VONl9HVF9HRlhfUkM2cHApOwo+IC0JcmV0dXJuIHNucHJpbnRm KGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBwX3Jlc2lkZW5jeSk7Cj4gLX0KPiAtCj4gLXN0 YXRpYyBzc2l6ZV90Cj4gLXNob3dfbWVkaWFfcmM2X21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAt CXUzMiByYzZfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIFZMVl9HVF9NRURJ QV9SQzYpOwo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9y ZXNpZGVuY3kpOwo+IC19Cj4gLQo+IC1zdGF0aWMgREVWSUNFX0FUVFIocmM2X2VuYWJsZSwgU19J UlVHTywgc2hvd19yYzZfbWFzaywgTlVMTCk7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUihyYzZfcmVz aWRlbmN5X21zLCBTX0lSVUdPLCBzaG93X3JjNl9tcywgTlVMTCk7Cj4gLXN0YXRpYyBERVZJQ0Vf QVRUUihyYzZwX3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZwX21zLCBOVUxMKTsKPiAt c3RhdGljIERFVklDRV9BVFRSKHJjNnBwX3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZw cF9tcywgTlVMTCk7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUihtZWRpYV9yYzZfcmVzaWRlbmN5X21z LCBTX0lSVUdPLCBzaG93X21lZGlhX3JjNl9tcywgTlVMTCk7Cj4gLQo+IC1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqcmM2X2F0dHJzW10gPSB7Cj4gLQkmZGV2X2F0dHJfcmM2X2VuYWJsZS5hdHRy LAo+IC0JJmRldl9hdHRyX3JjNl9yZXNpZGVuY3lfbXMuYXR0ciwKPiAtCU5VTEwKPiAtfTsKPiAt Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHJjNl9hdHRyX2dyb3VwID0g ewo+IC0JLm5hbWUgPSBwb3dlcl9ncm91cF9uYW1lLAo+IC0JLmF0dHJzID0gIHJjNl9hdHRycwo+ IC19Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnJjNnBfYXR0cnNbXSA9IHsKPiAt CSZkZXZfYXR0cl9yYzZwX3Jlc2lkZW5jeV9tcy5hdHRyLAo+IC0JJmRldl9hdHRyX3JjNnBwX3Jl c2lkZW5jeV9tcy5hdHRyLAo+IC0JTlVMTAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgcmM2cF9hdHRyX2dyb3VwID0gewo+IC0JLm5hbWUgPSBwb3dlcl9n cm91cF9uYW1lLAo+IC0JLmF0dHJzID0gIHJjNnBfYXR0cnMKPiAtfTsKPiAtCj4gLXN0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlICptZWRpYV9yYzZfYXR0cnNbXSA9IHsKPiAtCSZkZXZfYXR0cl9tZWRp YV9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCj4gLQlOVUxMCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZWRpYV9yYzZfYXR0cl9ncm91cCA9IHsKPiAtCS5u YW1lID0gcG93ZXJfZ3JvdXBfbmFtZSwKPiAtCS5hdHRycyA9ICBtZWRpYV9yYzZfYXR0cnMKPiAt fTsKPiAtI2VuZGlmCj4gLQo+ICAgc3RhdGljIGludCBsM19hY2Nlc3NfdmFsaWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIGxvZmZfdCBvZmZzZXQpCj4gICB7Cj4gICAJaWYgKCFIQVNf TDNfRFBGKGk5MTUpKQo+IEBAIC0yNTYsMjM5ICsxNTUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGJpbl9hdHRyaWJ1dGUgZHBmX2F0dHJzXzEgPSB7Cj4gICAJLnByaXZhdGUgPSAodm9pZCAqKTEK PiAgIH07Cj4gICAKPiAtc3RhdGljIHNzaXplX3QgZ3RfYWN0X2ZyZXFfbWh6X3Nob3coc3RydWN0 IGRldmljZSAqa2RldiwKPiAtCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtkZXZf bWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZpOTE1LT5n dC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCj4g LQkJCWludGVsX3Jwc19yZWFkX2FjdHVhbF9mcmVxdWVuY3kocnBzKSk7Cj4gLX0KPiAtCj4gLXN0 YXRpYyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4g LQkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rl dik7Cj4gLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmaTkxNS0+Z3QucnBzOwo+IC0KPiAtCXJl dHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+IC0JCQlpbnRlbF9ncHVfZnJl cShycHMsIHJwcy0+Y3VyX2ZyZXEpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfYm9v c3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJw cyA9ICZpOTE1LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpF LCAiJWRcbiIsCj4gLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5ib29zdF9mcmVxKSk7Cj4g LX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBk ZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs Cj4gLQkJCQkgICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCj4gLXsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2 KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBzOwo+IC0JYm9v bCBib29zdCA9IGZhbHNlOwo+IC0Jc3NpemVfdCByZXQ7Cj4gLQl1MzIgdmFsOwo+IC0KPiAtCXJl dCA9IGtzdHJ0b3UzMihidWYsIDAsICZ2YWwpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0 Owo+IC0KPiAtCS8qIFZhbGlkYXRlIGFnYWluc3QgKHN0YXRpYykgaGFyZHdhcmUgbGltaXRzICov Cj4gLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Cj4gLQlpZiAodmFsIDwgcnBz LT5taW5fZnJlcSB8fCB2YWwgPiBycHMtPm1heF9mcmVxKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+ IC0KPiAtCW11dGV4X2xvY2soJnJwcy0+bG9jayk7Cj4gLQlpZiAodmFsICE9IHJwcy0+Ym9vc3Rf ZnJlcSkgewo+IC0JCXJwcy0+Ym9vc3RfZnJlcSA9IHZhbDsKPiAtCQlib29zdCA9IGF0b21pY19y ZWFkKCZycHMtPm51bV93YWl0ZXJzKTsKPiAtCX0KPiAtCW11dGV4X3VubG9jaygmcnBzLT5sb2Nr KTsKPiAtCWlmIChib29zdCkKPiAtCQlzY2hlZHVsZV93b3JrKCZycHMtPndvcmspOwo+IC0KPiAt CXJldHVybiBjb3VudDsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3Qgdmx2X3JwZV9mcmVxX21o el9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9y cHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBzOwo+IC0KPiAtCXJldHVybiBzbnByaW50ZihidWYs IFBBR0VfU0laRSwgIiVkXG4iLAo+IC0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+ZWZmaWNp ZW50X2ZyZXEpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3No b3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rl dl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9w cml2LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRc biIsCj4gLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpKTsK PiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBk ZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ IC0JCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKPiAtewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+ IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5ycHM7Cj4gLQlzc2l6ZV90 IHJldDsKPiAtCXUzMiB2YWw7Cj4gLQo+IC0JcmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7 Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmcnBzLT5s b2NrKTsKPiAtCj4gLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Cj4gLQlpZiAo dmFsIDwgcnBzLT5taW5fZnJlcSB8fAo+IC0JICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXEgfHwKPiAt CSAgICB2YWwgPCBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkgewo+IC0JCXJldCA9IC1FSU5WQUw7 Cj4gLQkJZ290byB1bmxvY2s7Cj4gLQl9Cj4gLQo+IC0JaWYgKHZhbCA+IHJwcy0+cnAwX2ZyZXEp Cj4gLQkJRFJNX0RFQlVHKCJVc2VyIHJlcXVlc3RlZCBvdmVyY2xvY2tpbmcgdG8gJWRcbiIsCj4g LQkJCSAgaW50ZWxfZ3B1X2ZyZXEocnBzLCB2YWwpKTsKPiAtCj4gLQlycHMtPm1heF9mcmVxX3Nv ZnRsaW1pdCA9IHZhbDsKPiAtCj4gLQl2YWwgPSBjbGFtcF90KGludCwgcnBzLT5jdXJfZnJlcSwK PiAtCQkgICAgICBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCwKPiAtCQkgICAgICBycHMtPm1heF9m cmVxX3NvZnRsaW1pdCk7Cj4gLQo+IC0JLyoKPiAtCSAqIFdlIHN0aWxsIG5lZWQgKl9zZXRfcnBz IHRvIHByb2Nlc3MgdGhlIG5ldyBtYXhfZGVsYXkgYW5kCj4gLQkgKiB1cGRhdGUgdGhlIGludGVy cnVwdCBsaW1pdHMgYW5kIFBNSU5UUk1TSyBldmVuIHRob3VnaAo+IC0JICogZnJlcXVlbmN5IHJl cXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4KPiAtCSAqLwo+IC0JaW50ZWxfcnBzX3NldChycHMsIHZh bCk7Cj4gLQo+IC11bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJnJwcy0+bG9jayk7Cj4gLQo+IC0J cmV0dXJuIHJldCA/OiBjb3VudDsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfbWluX2Zy ZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBz ID0gJmRldl9wcml2LT5ndC5ycHM7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9T SVpFLCAiJWRcbiIsCj4gLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQpKTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfbWluX2ZyZXFfbWh6X3N0b3Jl KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gLQkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLAo+IC0JCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKPiAtewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1 KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5ycHM7Cj4g LQlzc2l6ZV90IHJldDsKPiAtCXUzMiB2YWw7Cj4gLQo+IC0JcmV0ID0ga3N0cnRvdTMyKGJ1Ziwg MCwgJnZhbCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JbXV0ZXhfbG9j aygmcnBzLT5sb2NrKTsKPiAtCj4gLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7 Cj4gLQlpZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fAo+IC0JICAgIHZhbCA+IHJwcy0+bWF4X2Zy ZXEgfHwKPiAtCSAgICB2YWwgPiBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkgewo+IC0JCXJldCA9 IC1FSU5WQUw7Cj4gLQkJZ290byB1bmxvY2s7Cj4gLQl9Cj4gLQo+IC0JcnBzLT5taW5fZnJlcV9z b2Z0bGltaXQgPSB2YWw7Cj4gLQo+IC0JdmFsID0gY2xhbXBfdChpbnQsIHJwcy0+Y3VyX2ZyZXEs Cj4gLQkJICAgICAgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQsCj4gLQkJICAgICAgcnBzLT5tYXhf ZnJlcV9zb2Z0bGltaXQpOwo+IC0KPiAtCS8qCj4gLQkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3Jw cyB0byBwcm9jZXNzIHRoZSBuZXcgbWluX2RlbGF5IGFuZAo+IC0JICogdXBkYXRlIHRoZSBpbnRl cnJ1cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKPiAtCSAqIGZyZXF1ZW5jeSBy ZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCj4gLQkgKi8KPiAtCWludGVsX3Jwc19zZXQocnBzLCB2 YWwpOwo+IC0KPiAtdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZycHMtPmxvY2spOwo+IC0KPiAt CXJldHVybiByZXQgPzogY291bnQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBERVZJQ0VfQVRUUl9STyhn dF9hY3RfZnJlcV9taHopOwo+IC1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3RfY3VyX2ZyZXFfbWh6 KTsKPiAtc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFfbWh6KTsKPiAtc3RhdGlj IERFVklDRV9BVFRSX1JXKGd0X21heF9mcmVxX21oeik7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUl9S VyhndF9taW5fZnJlcV9taHopOwo+IC0KPiAtc3RhdGljIERFVklDRV9BVFRSX1JPKHZsdl9ycGVf ZnJlcV9taHopOwo+IC0KPiAtc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zik7Cj4g LXN0YXRpYyBERVZJQ0VfQVRUUihndF9SUDBfZnJlcV9taHosIFNfSVJVR08sIGd0X3JwX21oel9z aG93LCBOVUxMKTsKPiAtc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMV9mcmVxX21oeiwgU19JUlVH TywgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOwo+IC1zdGF0aWMgREVWSUNFX0FUVFIoZ3RfUlBuX2Zy ZXFfbWh6LCBTX0lSVUdPLCBndF9ycF9taHpfc2hvdywgTlVMTCk7Cj4gLQo+IC0vKiBGb3Igbm93 IHdlIGhhdmUgYSBzdGF0aWMgbnVtYmVyIG9mIFJQIHN0YXRlcyAqLwo+IC1zdGF0aWMgc3NpemVf dCBndF9ycF9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfcnBz ICpycHMgPSAmZGV2X3ByaXYtPmd0LnJwczsKPiAtCXUzMiB2YWw7Cj4gLQo+IC0JaWYgKGF0dHIg PT0gJmRldl9hdHRyX2d0X1JQMF9mcmVxX21oeikKPiAtCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShy cHMsIHJwcy0+cnAwX2ZyZXEpOwo+IC0JZWxzZSBpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlAx X2ZyZXFfbWh6KQo+IC0JCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5ycDFfZnJlcSk7 Cj4gLQllbHNlIGlmIChhdHRyID09ICZkZXZfYXR0cl9ndF9SUG5fZnJlcV9taHopCj4gLQkJdmFs ID0gaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPm1pbl9mcmVxKTsKPiAtCWVsc2UKPiAtCQlCVUco KTsKPiAtCj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgdmFsKTsK PiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBjb25zdCBnZW42X2F0 dHJzW10gPSB7Cj4gLQkmZGV2X2F0dHJfZ3RfYWN0X2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0 dHJfZ3RfY3VyX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfYm9vc3RfZnJlcV9taHou YXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9tYXhfZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0cl9n dF9taW5fZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHouYXR0ciwK PiAtCSZkZXZfYXR0cl9ndF9SUDFfZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9SUG5f ZnJlcV9taHouYXR0ciwKPiAtCU5VTEwsCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZSAqIGNvbnN0IHZsdl9hdHRyc1tdID0gewo+IC0JJmRldl9hdHRyX2d0X2FjdF9m cmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0X2N1cl9mcmVxX21oei5hdHRyLAo+IC0JJmRl dl9hdHRyX2d0X2Jvb3N0X2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFf bWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfbWluX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0 dHJfZ3RfUlAwX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0 dHIsCj4gLQkmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfdmx2 X3JwZV9mcmVxX21oei5hdHRyLAo+IC0JTlVMTCwKPiAtfTsKPiAtCj4gICAjaWYgSVNfRU5BQkxF RChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikKPiAgIAo+ICAgc3RhdGljIHNzaXplX3Qg ZXJyb3Jfc3RhdGVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtvYmplY3QgKmtvYmos Cj4gQEAgLTU1OSwyOSArMjI1LDYgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gZGV2X3By aXYtPmRybS5wcmltYXJ5LT5rZGV2Owo+ICAgCWludCByZXQ7Cj4gICAKPiAtI2lmZGVmIENPTkZJ R19QTQo+IC0JaWYgKEhBU19SQzYoZGV2X3ByaXYpKSB7Cj4gLQkJcmV0ID0gc3lzZnNfbWVyZ2Vf Z3JvdXAoJmtkZXYtPmtvYmosCj4gLQkJCQkJJnJjNl9hdHRyX2dyb3VwKTsKPiAtCQlpZiAocmV0 KQo+IC0JCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+IC0JCQkJIlJDNiByZXNpZGVuY3kgc3lz ZnMgc2V0dXAgZmFpbGVkXG4iKTsKPiAtCX0KPiAtCWlmIChIQVNfUkM2cChkZXZfcHJpdikpIHsK PiAtCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgma2Rldi0+a29iaiwKPiAtCQkJCQkmcmM2cF9h dHRyX2dyb3VwKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+ IC0JCQkJIlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7Cj4gLQl9Cj4gLQlp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsK PiAtCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgma2Rldi0+a29iaiwKPiAtCQkJCQkmbWVkaWFf cmM2X2F0dHJfZ3JvdXApOwo+IC0JCWlmIChyZXQpCj4gLQkJCWRybV9lcnIoJmRldl9wcml2LT5k cm0sCj4gLQkJCQkiTWVkaWEgUkM2IHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwo+ IC0JfQo+IC0jZW5kaWYKPiAgIAlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikpIHsKPiAgIAkJcmV0 ID0gZGV2aWNlX2NyZWF0ZV9iaW5fZmlsZShrZGV2LCAmZHBmX2F0dHJzKTsKPiAgIAkJaWYgKHJl dCkKPiBAQCAtNTk3LDE0ICsyNDAsNiBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gLQlyZXQgPSAw Owo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQo+IC0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygma2Rldi0+a29iaiwgdmx2X2F0dHJz KTsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPiAtCQlyZXQgPSBzeXNm c19jcmVhdGVfZmlsZXMoJmtkZXYtPmtvYmosIGdlbjZfYXR0cnMpOwo+IC0JaWYgKHJldCkKPiAt CQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiUlBTIHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7Cj4g LQo+ICAgCWk5MTVfc2V0dXBfZXJyb3JfY2FwdHVyZShrZGV2KTsKPiAgIH0KPiAgIAo+IEBAIC02 MTQsMTQgKzI0OSw2IEBAIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAlpOTE1X3RlYXJkb3duX2Vycm9yX2NhcHR1cmUo a2Rldik7Cj4gICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPiAtCQlzeXNmc19yZW1vdmVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9h dHRycyk7Cj4gLQllbHNlCj4gLQkJc3lzZnNfcmVtb3ZlX2ZpbGVzKCZrZGV2LT5rb2JqLCBnZW42 X2F0dHJzKTsKPiAgIAlkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKGtkZXYsICAmZHBmX2F0dHJzXzEp Owo+ICAgCWRldmljZV9yZW1vdmVfYmluX2ZpbGUoa2RldiwgICZkcGZfYXR0cnMpOwo+IC0jaWZk ZWYgQ09ORklHX1BNCj4gLQlzeXNmc191bm1lcmdlX2dyb3VwKCZrZGV2LT5rb2JqLCAmcmM2X2F0 dHJfZ3JvdXApOwo+IC0Jc3lzZnNfdW5tZXJnZV9ncm91cCgma2Rldi0+a29iaiwgJnJjNnBfYXR0 cl9ncm91cCk7Cj4gLSNlbmRpZgo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N5c2ZzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmgKPiBp bmRleCA0MWFmZDQzNjY0MTYuLmFkNjExNGRlODFjOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmgKPiBAQCAtNiw4ICs2LDExIEBACj4gICAjaWZuZGVmIF9fSTkxNV9TWVNGU19IX18K PiAgICNkZWZpbmUgX19JOTE1X1NZU0ZTX0hfXwo+ICAgCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZp Y2UuaD4KPiArCj4gICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAgIAo+ICtzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqa2Rldl9taW5vcl90b19pOTE1KHN0cnVjdCBkZXZpY2UgKmtkZXYpOwo+ ICAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsK PiAgIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7Cj4gICAKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==