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 27A34C11D2F for ; Mon, 24 Feb 2020 14:54:03 +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 F2FED2072D for ; Mon, 24 Feb 2020 14:54:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F2FED2072D 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 597136E523; Mon, 24 Feb 2020 14:54:02 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 761E26E520 for ; Mon, 24 Feb 2020 14:54:00 +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 fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Feb 2020 06:53:59 -0800 X-IronPort-AV: E=Sophos;i="5.70,480,1574150400"; d="scan'208";a="230671160" Received: from pmulhall-mobl.ger.corp.intel.com (HELO [10.251.85.135]) ([10.251.85.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 24 Feb 2020 06:53:57 -0800 To: Andi Shyti , Intel GFX References: <20200219190223.16972-1-andi.shyti@intel.com> <20200219193020.17673-1-andi.shyti@intel.com> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: Date: Mon, 24 Feb 2020 14:53:55 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <20200219193020.17673-1-andi.shyti@intel.com> Content-Language: en-US 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDE5LzAyLzIwMjAgMTk6MzAsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIEdUIGhhcyBpdHMg b3duIHByb3BlcnRpZXMgYW5kIGluIHN5c2ZzIHRoZXkgc2hvdWxkIGJlIGdyb3VwZWQKPiBpbiB0 aGUgJ2d0LycgZGlyZWN0b3J5Lgo+IAo+IENyZWF0ZSB0aGUgJ2d0LycgZGlyZWN0b3J5IGluIHN5 c2ZzIGFuZCBtb3ZlIHRoZSBwb3dlciBtYW5hZ2VtZW50Cj4gcmVsYXRlZCBmaWxlcy4KPiAKPiBU aGUgbmV3IGludGVyZmFjZXMgYXJlOgo+IAo+IGd0L2d0X2FjdF9mcmVxX21oego+IGd0L2d0X2Jv b3N0X2ZyZXFfbWh6Cj4gZ3QvZ3RfY3VyX2ZyZXFfbWh6Cj4gZ3QvZ3RfaW5mbwo+IGd0L2d0X21h eF9mcmVxX21oego+IGd0L2d0X21pbl9mcmVxX21oego+IGd0L2d0X1JQMF9mcmVxX21oego+IGd0 L2d0X1JQMV9mcmVxX21oego+IGd0L2d0X1JQbl9mcmVxX21oego+IGd0L3JjNl9lbmFibGUKPiBn dC9yYzZfcmVzaWRlbmN5X21zCj4gCj4gVGhlIG9uY2UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IHdp bGwgYmUgbWFya2VkIGFzIGRlcHJlY2F0ZWQsIGlmCj4gYWNjZXNzZWQgYSB3YXJuaW5nIG1lc3Nh Z2UgaXMgcHJpbnRlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRp QGludGVsLmNvbT4KPiAtLS0KPiB2NCAtPiB2NToKPiAgICAtIHJlbW92ZWQgc3B1cmlvdXMgZ2hv c3QgJ3Z2dicgZmlsZSB0aGF0IHdhcyBuZXZlciBtZWFudCB0byBiZQo+ICAgICAgdGhlcmUuLi4g c29ycnkgZm9yIHNwYW1taW5nLgo+IHYzIC0+IHY0Ogo+ICAgIC0gZml4ZWQgVHZydGtvJ3MgY29t bWVudHM6Cj4gICAgICAgICAgLSBzb21lIHJlbmFtaW5nCj4gICAgICAgICAgLSBzb21lIGNsdW1z eSB1bmJhbGFuY2VkIGtvYmplY3RfcHV0L2dldAo+ICAgICAgICAgIC0gdGhlIHdhcm5pbmcgcHJp bnQgaXMgbW9yZSBkZXNjcmlwdGl2ZSBhbmQgcHJpbnRlZCB3aXRoCj4gICAgICAgICAgICBsaW1p dGVkIHJhdGUKPiAgICAgICAgICAtIFRPRE86IGRybV9wcmludCBkb2Vzbid0IGhhdmUgYSBkcm1f d2Fybl91bmxpbWl0ZWQsIHRvCj4gICAgICAgICAgICBiZSBhZGRlZAo+IHYyIC0+IHYzOgo+ICAg IC0gZml4IHNvbWUgY2xlYW51cHMgdGhhdCBJIGZvcmdvdCBpbiB0aGUgcHJldmlvdXMgcGF0Y2gK PiAgICAtIGZpeCByZWZlcmVuY2UgcG9pbnRlcnMgdG8gdGhlIGd0IHN0cnVjdHVyZQo+ICAgIC0g YW5kIG1hbnkgb3RoZXIgc21hbGwgY2hhbmdlcyBoZXJlIGFuZCB0aGVyZS4KPiB2MSAtPiB2MjoK PiAgICAtIGtlZXAgdGhlIGV4aXN0aW5nIGZpbGVzIGFzIHRoZXkgYXJlCj4gICAgLSB1c2UgImlu dGVsX2d0XyoiIGFzIHByZWZpeCBpbnN0ZWFkIG9mICJzeXNmc18qIgo+IAo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAgICAgICB8ICAgMyArCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3N5c2ZzX2d0LmMgICAgICAgfCAgNzkgKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3N5c2ZzX2d0LmggICAgICAgfCAgMjIgKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3N5c2ZzX2d0X3BtLmMgICAgfCA0MzIgKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmggICAgfCAgMTcgKwo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAgICB8IDM3NSArLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5oICAgICAgICB8ICAgMyArCj4g ICA5IGZpbGVzIGNoYW5nZWQsIDU2MSBpbnNlcnRpb25zKCspLCAzNzUgZGVsZXRpb25zKC0pCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYwo+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmgK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9w bS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNf Z3RfcG0uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggYjMxNGQ0NGRlZDVlLi5mZjll MTdjOTdkYzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC0xMDcsNyArMTA3LDkgQEAg Z3QteSArPSBcCj4gICAJZ3QvaW50ZWxfcnBzLm8gXAo+ICAgCWd0L2ludGVsX3NzZXUubyBcCj4g ICAJZ3QvaW50ZWxfdGltZWxpbmUubyBcCj4gLQlndC9pbnRlbF93b3JrYXJvdW5kcy5vCj4gKwln dC9pbnRlbF93b3JrYXJvdW5kcy5vIFwKPiArCWd0L3N5c2ZzX2d0Lm8gXAo+ICsJZ3Qvc3lzZnNf Z3RfcG0ubwo+ICAgIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCj4gICBndC15ICs9 IFwKPiAgIAlndC9nZW42X3JlbmRlcnN0YXRlLm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z3QuYwo+IGluZGV4IGYxZjFiMzA2ZTBhZi4uZTc5NGQwNWQ2OWExIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndC5jCj4gQEAgLTE1LDYgKzE1LDcgQEAKPiAgICNpbmNsdWRlICJpbnRl bF9ycHMuaCIKPiAgICNpbmNsdWRlICJpbnRlbF91bmNvcmUuaCIKPiAgICNpbmNsdWRlICJpbnRl bF9wbS5oIgo+ICsjaW5jbHVkZSAic3lzZnNfZ3QuaCIKPiAgIAo+ICAgdm9pZCBpbnRlbF9ndF9p bml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICAgewo+IEBAIC0zMjEsNiArMzIyLDcgQEAgdm9pZCBpbnRlbF9ndF9kcml2ZXJfcmVn aXN0ZXIoc3RydWN0IGludGVsX2d0ICpndCkKPiAgIAlpbnRlbF9ycHNfZHJpdmVyX3JlZ2lzdGVy KCZndC0+cnBzKTsKPiAgIAo+ICAgCWRlYnVnZnNfZ3RfcmVnaXN0ZXIoZ3QpOwo+ICsJaW50ZWxf Z3Rfc3lzZnNfcmVnaXN0ZXIoZ3QpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGludGVsX2d0 X2luaXRfc2NyYXRjaChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKPiBA QCAtNjQxLDYgKzY0Myw3IEBAIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQo+ICAgCj4gICB2b2lkIGludGVsX2d0X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVj dCBpbnRlbF9ndCAqZ3QpCj4gICB7Cj4gKwlpbnRlbF9ndF9zeXNmc191bnJlZ2lzdGVyKGd0KTsK PiAgIAlpbnRlbF9ycHNfZHJpdmVyX3VucmVnaXN0ZXIoJmd0LT5ycHMpOwo+ICAgfQo+ICAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCj4gaW5kZXggOTY4OTBkZDEy YjVmLi43ZjBiNGY4ZDllMjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 X3R5cGVzLmgKPiBAQCAtMzIsNiArMzIsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3Qgewo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICAgCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29y ZTsKPiAgIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0Owo+ICsJc3RydWN0IGtvYmplY3Qgc3lzZnNf cm9vdDsKPiAgIAo+ICAgCXN0cnVjdCBpbnRlbF91YyB1YzsKPiAgIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc3lzZnNfZ3QuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li45MzM1YTkyZDUyNDgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc3lzZnNfZ3QuYwo+IEBAIC0wLDAgKzEsNzkgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IE1JVAo+ICsKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rb2JqZWN0Lmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9wcmludGsuaD4KPiArCj4gKyNpbmNsdWRlICIuLi9pOTE1X2Rydi5oIgo+ ICsjaW5jbHVkZSAiaW50ZWxfZ3QuaCIKPiArI2luY2x1ZGUgImludGVsX2d0X3R5cGVzLmgiCj4g KyNpbmNsdWRlICJpbnRlbF9yYzYuaCIKPiArCj4gKyNpbmNsdWRlICJzeXNmc19ndC5oIgo+ICsj aW5jbHVkZSAic3lzZnNfZ3RfcG0uaCIKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGtvYmpl Y3QgKmd0X2dldF9wYXJlbnRfb2JqKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCXJldHVy biAmZ3QtPmk5MTUtPmRybS5wcmltYXJ5LT5rZGV2LT5rb2JqOwo+ICt9Cj4gKwo+ICtzdGF0aWMg c3NpemVfdCBndF9pbmZvX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkgICAgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCSAgICBjaGFyICpidWZmKQo+ICt7Cj4gKwly ZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiMFxuIik7Cj4gK30KPiArCj4gK3N0YXRp YyBERVZJQ0VfQVRUUl9STyhndF9pbmZvKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qga29ial90eXBl IHN5c2ZzX2d0X2t0eXBlID0gewo+ICsJLnN5c2ZzX29wcyA9ICZrb2JqX3N5c2ZzX29wcywKPiAr fTsKPiArCj4gK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfcmVnaXN0ZXIoc3RydWN0IGludGVsX2d0ICpn dCkKPiArewo+ICsJc3RydWN0IGtvYmplY3QgKnBhcmVudCA9IGtvYmplY3RfZ2V0KGd0X2dldF9w YXJlbnRfb2JqKGd0KSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGtvYmplY3RfaW5pdF9h bmRfYWRkKCZndC0+c3lzZnNfcm9vdCwKPiArCQkJCSAgICZzeXNmc19ndF9rdHlwZSwKPiArCQkJ CSAgIHBhcmVudCwgImd0Iik7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZHJtX2VycigmZ3QtPmk5MTUt PmRybSwgImZhaWxlZCB0byBpbml0aWFsaXplIHN5c2ZzIGZpbGVcbiIpOwoKSSdkIHBlcmhhcHMg cGluIHBvaW50IHRoZSBmYWlsdXJlIG1vcmUgYnkgcy9maWxlL0dUIHN5c2ZzIHJvb3QvLgoKPiAr CQlrb2JqZWN0X3B1dCgmZ3QtPnN5c2ZzX3Jvb3QpOwoKSXMgdGhlIHJlZmVyZW5jZSBuZWVkZWQg Zm9yIHRoZSByZWdpc3RyYXRpb24gc3RlcHM/IEkgYW0gdGhpbmtpbmcgaWYgeW91IApjb3VsZCBr b2JqZWN0X2dldCBvbmx5IG9uY2UgZXZlcnl0aGluZyB3b3JrZWQgdG8gc2ltcGxpZnkuCgo+ICsJ CWdvdG8gcGFyZW50X2ZpbGVzOwo+ICsJfQo+ICsKPiArCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxl KCZndC0+c3lzZnNfcm9vdCwgJmRldl9hdHRyX2d0X2luZm8uYXR0cik7Cj4gKwlpZiAocmV0KQo+ ICsJCWRybV9lcnIoJmd0LT5pOTE1LT5kcm0sICJmYWlsZWQgdG8gY3JlYXRlIHN5c2ZzIGd0IGlu Zm8gZmlsZXNcbiIpOwo+ICsKPiArCWludGVsX2d0X3N5c2ZzX3BtX2luaXQoZ3QsICZndC0+c3lz ZnNfcm9vdCk7CgpJZiB5b3UgcHV0IHRoaXMgZmlyc3QgeW91IGNhbiBhdm9pZCB0aGUgZ290byBJ IHRoaW5rIHdoaWNoIG1ha2VzIHRoZSAKZnVuY3Rpb24gc21hbGxlci4KCj4gKwo+ICtwYXJlbnRf ZmlsZXM6Cj4gKwkvKgo+ICsJICogd2UgbmVlZCB0byBtYWtlIHRoaW5ncyByaWdodCB3aXRoIHRo ZQo+ICsJICogQUJJIGNvbXBhdGliaWxpdHkuIFRoZSBmaWxlcyB3ZXJlIG9yaWdpbmFsbHkKPiAr CSAqIGdlbmVyYXRlZCB1bmRlciB0aGUgcGFyZW50IGRpcmVjdG9yeS4KPiArCSAqLwo+ICsJaW50 ZWxfZ3Rfc3lzZnNfcG1faW5pdChndCwgcGFyZW50KTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9n dF9zeXNmc191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCXN0cnVjdCBr b2JqZWN0ICpwYXJlbnQgPSBndF9nZXRfcGFyZW50X29iaihndCk7Cj4gKwo+ICsJLyoKPiArCSAq IHRoZSBuYW1lIGd0IHRlbGxzIHVzIHdldGhlciBzeXNmc19yb290Cj4gKwkgKiBvYmplY3Qgd2Fz IGluaXRpYWxpemVkIHByb3Blcmx5Cj4gKwkgKi8KPiArCWlmICghc3RyY21wKGd0LT5zeXNmc19y b290Lm5hbWUsICJndCIpKQo+ICsJCWtvYmplY3RfcHV0KCZndC0+c3lzZnNfcm9vdCk7CgpTbGln aHRseSBuaWNlciB3b3VsZCBiZSBsb29raW5nIGF0ICBrb2JqLT5zdGF0ZV9pbml0aWFsaXplZCBm b3IgdGhpcyAKY2hlY2sgSSB0aGluay4gT3IgZXZlbiBrcmVmX2dldF91bmxlc3NfemVybyBvbiBr b2JqLT5rcmVmPyBVZ2xpbmVzcyAKdGhlcmUgaXMgZG91YmxlIHB1dCBvbiBzdWNlc3Mgd2hpY2gg bWFrZXMgbWUgYXNrIHdoZXRoZXIgaG9sZGluZyBhIApyZWZlcmVuY2Ugb24gcGFyZW50IGlzIGV2 ZW4gbmVlZGVkPyBJdCBjYW4ndCBnbyBhd2F5IHNvIHBlcmhhcHMgaXQgaXNuJ3QuCgo+ICsKPiAr CWtvYmplY3RfcHV0KHBhcmVudCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc3lzZnNfZ3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmgK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMmU0NzlhYTkwMmU1 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0 LmgKPiBAQCAtMCwwICsxLDIyIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQg Ki8KPiArCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4g KyAqLwo+ICsKPiArI2lmbmRlZiBTWVNGU19HVF9ICj4gKyNkZWZpbmUgU1lTRlNfR1RfSAo+ICsK PiArI2luY2x1ZGUgImludGVsX2d0X3R5cGVzLmgiCj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZ3Q7Cj4g Kwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9ndCAqa29ial90b19ndChzdHJ1Y3Qga29i amVjdCAqa29iaikKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgaW50 ZWxfZ3QsIHN5c2ZzX3Jvb3QpOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2d0X3N5c2ZzX3JlZ2lz dGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwo+ICt2b2lkIGludGVsX2d0X3N5c2ZzX3VucmVnaXN0 ZXIoc3RydWN0IGludGVsX2d0ICpndCk7Cj4gKwo+ICsjZW5kaWYgLyogU1lTRlNfR1RfSCAqLwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jNTQ4ZWI4NTFhNzAKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYwo+IEBAIC0wLDAgKzEsNDMy IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArCj4gKy8qCj4gKyAqIENv cHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg PGRybS9kcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgo+ICsjaW5jbHVk ZSA8bGludXgvcHJpbnRrLmg+Cj4gKwo+ICsjaW5jbHVkZSAiLi4vaTkxNV9kcnYuaCIKPiArI2lu Y2x1ZGUgIi4uL2k5MTVfc3lzZnMuaCIKPiArI2luY2x1ZGUgImludGVsX2d0LmgiCj4gKyNpbmNs dWRlICJpbnRlbF9yYzYuaCIKPiArI2luY2x1ZGUgImludGVsX3Jwcy5oIgo+ICsjaW5jbHVkZSAi c3lzZnNfZ3QuaCIKPiArI2luY2x1ZGUgInN5c2ZzX2d0X3BtLmgiCj4gKwo+ICtzdHJ1Y3QgaW50 ZWxfZ3QgKmludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKHN0cnVjdCBkZXZpY2UgKmRldikKPiAr ewo+ICsJc3RydWN0IGtvYmplY3QgKmtvYmogPSAmZGV2LT5rb2JqOwo+ICsJLyoKPiArCSAqIFdl IGFyZSBpbnRlcmVzdGVkIGF0IGtub3dpbmcgZnJvbSB3aGVyZSB0aGUgaW50ZXJmYWNlCj4gKwkg KiBoYXMgYmVlbiBjYWxsZWQsIHdoZXRoZXIgaXQncyBjYWxsZWQgZnJvbSBndC8gb3IgZnJvbQo+ ICsJICogdGhlIHBhcmVudCBkaXJlY3RvcnkuCj4gKwkgKiBGcm9tIHRoZSBpbnRlcmZhY2UgcG9z aXRpb24gaXQgZGVwZW5kcyBhbHNvIHRoZSB2YWx1ZSBvZgo+ICsJICogdGhlIHByaXZhdGUgZGF0 YS4KPiArCSAqIElmIHRoZSBpbnRlcmZhY2UgaXMgY2FsbGVkIGZyb20gZ3QvIHRoZW4gcHJpdmF0 ZSBkYXRhIGlzCj4gKwkgKiBvZiB0aGUgInN0cnVjdCBpbnRlbF9ndCAqIiB0eXBlLCBvdGhlcndp c2UgaXQncyAqIGEKPiArCSAqICJzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqIiB0eXBlLgo+ICsJ ICovCj4gKwlpZiAoc3RyY21wKGRldi0+a29iai5uYW1lLCAiZ3QiKSkgewo+ICsJCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0ga2Rldl9taW5vcl90b19pOTE1KGRldik7Cj4gKwo+ICsJ CXByX3dhcm5fcmF0ZWxpbWl0ZWQoREVQUkVDQVRFRAo+ICsJCQkiKCVzLCAlZCkgdHJ5aW5nIHRv IGFjY2VzcyBkZXByZWNhdGVkIGludGVyZmFjZSwgIgo+ICsJCQkidXNlIHRoZSBjb3JyZXNwb25k aW5nIGludGVyZmFjZSBpbiBndC9cbiIsCgpTYXlpbmcgaW50ZXJmYWNlIHR3byB0aW1lcyBzb3Vu ZHMgYSBiaXQgc3Vib3B0aW1hbCBidXQgSSBsZWF2ZSB0aGlzIHRvIApuYXRpdmUgc3BlYWtlcnMg dG8gaW1wcm92ZS4KCkNhbiB5b3UgZ2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBzeXNmcyBjb250cm9s IGhlcmU/CgoiKCVzLCAlZCkgaXMgdHJ5aW5nIHRvIGFjY2VzcyBkZXByZWNhdGVkICclcycgc3lz ZnMgY29udHJvbC4gUGxlYXNlIHVzZSAKJ2d0LyVzJyBpbnN0ZWFkLiIuIFNvbWV0aGluZyBsaWtl IHRoYXQ/CgpSZWdhcmRzLAoKVHZydGtvCgo+ICsJCQljdXJyZW50LT5jb21tLCB0YXNrX3BpZF9u cihjdXJyZW50KSk7Cj4gKwkJcmV0dXJuICZpOTE1LT5ndDsKPiArCX0KPiArCj4gKwlyZXR1cm4g a29ial90b19ndChrb2JqKTsKPiArfQo+ICsKPiArI2lmZGVmIENPTkZJR19QTQo+ICtzdGF0aWMg dTMyIGdldF9yZXNpZGVuY3koc3RydWN0IGludGVsX2d0ICpndCwgaTkxNV9yZWdfdCByZWcpCj4g K3sKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJdTY0IHJlcyA9IDA7Cj4gKwo+ICsJ d2l0aF9pbnRlbF9ydW50aW1lX3BtKGd0LT51bmNvcmUtPnJwbSwgd2FrZXJlZikKPiArCQlyZXMg PSBpbnRlbF9yYzZfcmVzaWRlbmN5X3VzKCZndC0+cmM2LCByZWcpOwo+ICsKPiArCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVF9VTEwocmVzLCAxMDAwKTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXpl X3QgcmM2X2VuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJICAgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgICAgICAgY2hhciAqYnVmZikKPiArewo+ ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7 Cj4gKwl1OCBtYXNrID0gMDsKPiArCj4gKwlpZiAoSEFTX1JDNihndC0+aTkxNSkpCj4gKwkJbWFz ayB8PSBCSVQoMCk7Cj4gKwlpZiAoSEFTX1JDNnAoZ3QtPmk5MTUpKQo+ICsJCW1hc2sgfD0gQklU KDEpOwo+ICsJaWYgKEhBU19SQzZwcChndC0+aTkxNSkpCj4gKwkJbWFzayB8PSBCSVQoMik7Cj4g Kwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiV4XG4iLCBtYXNrKTsKPiAr fQo+ICsKPiArc3RhdGljIHNzaXplX3QgcmM2X3Jlc2lkZW5jeV9tc19zaG93KHN0cnVjdCBkZXZp Y2UgKmRldiwKPiArCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJ CQkgICAgIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9n dF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJdTMyIHJjNl9yZXNpZGVuY3kgPSBnZXRfcmVz aWRlbmN5KGd0LCBHRU42X0dUX0dGWF9SQzYpOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZm LCBQQUdFX1NJWkUsICIldVxuIiwgcmM2X3Jlc2lkZW5jeSk7Cj4gK30KPiArCj4gK3N0YXRpYyBz c2l6ZV90IHJjNnBfcmVzaWRlbmN5X21zX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJ ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkgICAgICBjaGFyICpi dWZmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2Ry dmRhdGEoZGV2KTsKPiArCXUzMiByYzZwX3Jlc2lkZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIEdF TjZfR1RfR0ZYX1JDNnApOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUs ICIldVxuIiwgcmM2cF9yZXNpZGVuY3kpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCByYzZw cF9yZXNpZGVuY3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkgICAgICAgY2hhciAqYnVmZikKPiAr ewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRl dik7Cj4gKwl1MzIgcmM2cHBfcmVzaWRlbmN5ID0gZ2V0X3Jlc2lkZW5jeShndCwgR0VONl9HVF9H RlhfUkM2cHApOwo+ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIldVxu IiwgcmM2cHBfcmVzaWRlbmN5KTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgbWVkaWFfcmM2 X3Jlc2lkZW5jeV9tc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCQkgICBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCQkgICBjaGFyICpidWZmKQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiAr CXUzMiByYzZfcmVzaWRlbmN5ID0gZ2V0X3Jlc2lkZW5jeShndCwgVkxWX0dUX01FRElBX1JDNik7 Cj4gKwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZfcmVz aWRlbmN5KTsKPiArfQo+ICsKPiArc3RhdGljIERFVklDRV9BVFRSX1JPKHJjNl9lbmFibGUpOwo+ ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2X3Jlc2lkZW5jeV9tcyk7Cj4gK3N0YXRpYyBERVZJ Q0VfQVRUUl9STyhyYzZwX3Jlc2lkZW5jeV9tcyk7Cj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhy YzZwcF9yZXNpZGVuY3lfbXMpOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8obWVkaWFfcmM2X3Jl c2lkZW5jeV9tcyk7Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqcmM2X2F0 dHJzW10gPSB7Cj4gKwkmZGV2X2F0dHJfcmM2X2VuYWJsZS5hdHRyLAo+ICsJJmRldl9hdHRyX3Jj Nl9yZXNpZGVuY3lfbXMuYXR0ciwKPiArCU5VTEwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgYXR0cmlidXRlICpyYzZwX2F0dHJzW10gPSB7Cj4gKwkmZGV2X2F0dHJfcmM2cF9yZXNp ZGVuY3lfbXMuYXR0ciwKPiArCSZkZXZfYXR0cl9yYzZwcF9yZXNpZGVuY3lfbXMuYXR0ciwKPiAr CU5VTEwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICptZWRpYV9y YzZfYXR0cnNbXSA9IHsKPiArCSZkZXZfYXR0cl9tZWRpYV9yYzZfcmVzaWRlbmN5X21zLmF0dHIs Cj4gKwlOVUxMCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zeXNmc19yYzZfaW5pdChz dHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAqa29iaikKPiArewo+ICsJaW50IHJl dCA9IDA7Cj4gKwo+ICsJaWYgKEhBU19SQzYoZ3QtPmk5MTUpKSB7Cj4gKwkJcmV0ID0gc3lzZnNf Y3JlYXRlX2ZpbGVzKGtvYmosIHJjNl9hdHRycyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZHJtX2Vy cigmZ3QtPmk5MTUtPmRybSwKPiArCQkJCSJmYWlsZWQgdG8gY3JlYXRlIFJDNiBzeXNmcyBmaWxl c1xuIik7Cj4gKwl9Cj4gKwo+ICsJaWYgKEhBU19SQzZwKGd0LT5pOTE1KSkgewo+ICsJCXJldCA9 IHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCByYzZwX2F0dHJzKTsKPiArCQlpZiAocmV0KQo+ICsJ CQlkcm1fZXJyKCZndC0+aTkxNS0+ZHJtLAo+ICsJCQkJImZhaWxlZCB0byBjcmVhdGUgUkM2cCBz eXNmcyBmaWxlc1xuIik7Cj4gKwl9Cj4gKwo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZ3QtPmk5MTUp IHx8IElTX0NIRVJSWVZJRVcoZ3QtPmk5MTUpKSB7Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2Zp bGVzKGtvYmosIG1lZGlhX3JjNl9hdHRycyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZHJtX2Vycigm Z3QtPmk5MTUtPmRybSwKPiArCQkJCSJmYWlsZWQgdG8gY3JlYXRlIG1lZGlhIFJDNiBzeXNmcyBm aWxlc1xuIik7Cj4gKwl9Cj4gK30KPiArI2Vsc2UKPiArc3RhdGljIHZvaWQgaW50ZWxfc3lzZnNf cmM2X2luaXQoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sK PiArCXJldHVybiAwOwo+ICt9Cj4gKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8KPiArCj4gK3N0YXRp YyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ CSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmZikKPiArewo+ICsJ c3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4g Kwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ICsJCQlpbnRl bF9ycHNfcmVhZF9hY3R1YWxfZnJlcXVlbmN5KCZndC0+cnBzKSk7Cj4gK30KPiArCj4gK3N0YXRp YyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ CSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmZikKPiArewo+ICsJ c3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4g KwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKPiArCj4gKwlyZXR1cm4gc25wcmlu dGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCj4gKwkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBz LT5jdXJfZnJlcSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21o el9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAo+ICsJCQkJICAgICAgY2hhciAqYnVmZikKPiArewo+ICsJc3RydWN0IGlu dGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKPiArCj4gKwlyZXR1cm4gc25wcmludGYoYnVmZiwg UEFHRV9TSVpFLCAiJWRcbiIsCj4gKwkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5ib29zdF9m cmVxKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3N0b3Jl KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKPiArCQkJCSAgICAgICBjb25zdCBjaGFyICpidWZmLCBzaXplX3QgY291bnQpCj4g K3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShk ZXYpOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7Cj4gKwlib29sIGJvb3N0 ID0gZmFsc2U7Cj4gKwlzc2l6ZV90IHJldDsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJcmV0ID0ga3N0 cnRvdTMyKGJ1ZmYsIDAsICZ2YWwpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCS8qIFZhbGlkYXRlIGFnYWluc3QgKHN0YXRpYykgaGFyZHdhcmUgbGltaXRzICovCj4gKwl2 YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Cj4gKwlpZiAodmFsIDwgcnBzLT5taW5f ZnJlcSB8fCB2YWwgPiBycHMtPm1heF9mcmVxKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAr CW11dGV4X2xvY2soJnJwcy0+bG9jayk7Cj4gKwlpZiAodmFsICE9IHJwcy0+Ym9vc3RfZnJlcSkg ewo+ICsJCXJwcy0+Ym9vc3RfZnJlcSA9IHZhbDsKPiArCQlib29zdCA9IGF0b21pY19yZWFkKCZy cHMtPm51bV93YWl0ZXJzKTsKPiArCX0KPiArCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKPiAr CWlmIChib29zdCkKPiArCQlzY2hlZHVsZV93b3JrKCZycHMtPndvcmspOwo+ICsKPiArCXJldHVy biBjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3Qgdmx2X3JwZV9mcmVxX21oel9zaG93 KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9n dF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0 LT5ycHM7Cj4gKwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ ICsJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKPiArfQo+ICsK PiArc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAo+ICsJCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkJICAgIGNo YXIgKmJ1ZmYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19n ZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7Cj4g Kwo+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ICsJCQlpbnRl bF9ncHVfZnJlcShycHMsIHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KSk7Cj4gK30KPiArCj4gK3N0 YXRpYyBzc2l6ZV90IGd0X21heF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4g KwkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkJICAgICBjb25z dCBjaGFyICpidWZmLCBzaXplX3QgY291bnQpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3Qg PSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3JwcyAq cnBzID0gJmd0LT5ycHM7Cj4gKwlzc2l6ZV90IHJldDsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJcmV0 ID0ga3N0cnRvdTMyKGJ1ZmYsIDAsICZ2YWwpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+ICsKPiArCW11dGV4X2xvY2soJnJwcy0+bG9jayk7Cj4gKwo+ICsJdmFsID0gaW50ZWxfZnJl cV9vcGNvZGUocnBzLCB2YWwpOwo+ICsJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKPiArCSAg ICB2YWwgPiBycHMtPm1heF9mcmVxIHx8Cj4gKwkgICAgdmFsIDwgcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQpIHsKPiArCQlyZXQgPSAtRUlOVkFMOwo+ICsJCWdvdG8gdW5sb2NrOwo+ICsJfQo+ICsK PiArCWlmICh2YWwgPiBycHMtPnJwMF9mcmVxKQo+ICsJCURSTV9ERUJVRygiVXNlciByZXF1ZXN0 ZWQgb3ZlcmNsb2NraW5nIHRvICVkXG4iLAo+ICsJCQkgIGludGVsX2dwdV9mcmVxKHJwcywgdmFs KSk7Cj4gKwo+ICsJcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQgPSB2YWw7Cj4gKwo+ICsJdmFsID0g Y2xhbXBfdChpbnQsIHJwcy0+Y3VyX2ZyZXEsCj4gKwkJICAgICAgcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQsCj4gKwkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpOwo+ICsKPiArCS8qCj4g KwkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcgbWF4X2RlbGF5 IGFuZAo+ICsJICogdXBkYXRlIHRoZSBpbnRlcnJ1cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZl biB0aG91Z2gKPiArCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCj4gKwkg Ki8KPiArCWludGVsX3Jwc19zZXQocnBzLCB2YWwpOwo+ICsKPiArdW5sb2NrOgo+ICsJbXV0ZXhf dW5sb2NrKCZycHMtPmxvY2spOwo+ICsKPiArCXJldHVybiByZXQgPzogY291bnQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRl diwKPiArCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICBj aGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNf Z2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwo+ ICsKPiArCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwKPiArCQkJaW50 ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAo+ ICsJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJCSAgICAgY29u c3QgY2hhciAqYnVmZiwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0 ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZndC0+cnBzOwo+ICsJc3NpemVfdCByZXQ7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCXJl dCA9IGtzdHJ0b3UzMihidWZmLCAwLCAmdmFsKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJl dDsKPiArCj4gKwltdXRleF9sb2NrKCZycHMtPmxvY2spOwo+ICsKPiArCXZhbCA9IGludGVsX2Zy ZXFfb3Bjb2RlKHJwcywgdmFsKTsKPiArCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8Cj4gKwkg ICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAo+ICsJICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXFfc29m dGxpbWl0KSB7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIHVubG9jazsKPiArCX0KPiAr Cj4gKwlycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKPiArCj4gKwl2YWwgPSBjbGFtcF90 KGludCwgcnBzLT5jdXJfZnJlcSwKPiArCQkgICAgICBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCwK PiArCQkgICAgICBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCk7Cj4gKwo+ICsJLyoKPiArCSAqIFdl IHN0aWxsIG5lZWQgKl9zZXRfcnBzIHRvIHByb2Nlc3MgdGhlIG5ldyBtaW5fZGVsYXkgYW5kCj4g KwkgKiB1cGRhdGUgdGhlIGludGVycnVwdCBsaW1pdHMgYW5kIFBNSU5UUk1TSyBldmVuIHRob3Vn aAo+ICsJICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4KPiArCSAqLwo+ICsJ aW50ZWxfcnBzX3NldChycHMsIHZhbCk7Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91bmxvY2so JnJwcy0+bG9jayk7Cj4gKwo+ICsJcmV0dXJuIHJldCA/OiBjb3VudDsKPiArfQo+ICsKPiArc3Rh dGljIERFVklDRV9BVFRSX1JPKGd0X2FjdF9mcmVxX21oeik7Cj4gK3N0YXRpYyBERVZJQ0VfQVRU Ul9STyhndF9jdXJfZnJlcV9taHopOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUlcoZ3RfYm9vc3Rf ZnJlcV9taHopOwo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUlcoZ3RfbWF4X2ZyZXFfbWh6KTsKPiAr c3RhdGljIERFVklDRV9BVFRSX1JXKGd0X21pbl9mcmVxX21oeik7Cj4gKwo+ICtzdGF0aWMgREVW SUNFX0FUVFJfUk8odmx2X3JwZV9mcmVxX21oeik7Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBndF9y cF9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLAo+ICsJCQkgICAgICBjaGFyICpidWZmKTsKPiArCj4gK3N0YXRpYyBE RVZJQ0VfQVRUUihndF9SUDBfZnJlcV9taHosIDA0NDQsIGd0X3JwX21oel9zaG93LCBOVUxMKTsK PiArc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMV9mcmVxX21oeiwgMDQ0NCwgZ3RfcnBfbWh6X3No b3csIE5VTEwpOwo+ICtzdGF0aWMgREVWSUNFX0FUVFIoZ3RfUlBuX2ZyZXFfbWh6LCAwNDQ0LCBn dF9ycF9taHpfc2hvdywgTlVMTCk7Cj4gKwo+ICsvKiBGb3Igbm93IHdlIGhhdmUgYSBzdGF0aWMg bnVtYmVyIG9mIFJQIHN0YXRlcyAqLwo+ICtzdGF0aWMgc3NpemVfdCBndF9ycF9taHpfc2hvdyhz dHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLAo+ICsJCQkgICAgICBjaGFyICpidWZmKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0 ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZndC0+cnBzOwo+ICsJdTMyIHZhbDsKPiArCj4gKwlpZiAoYXR0ciA9PSAmZGV2X2F0 dHJfZ3RfUlAwX2ZyZXFfbWh6KQo+ICsJCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5y cDBfZnJlcSk7Cj4gKwllbHNlIGlmIChhdHRyID09ICZkZXZfYXR0cl9ndF9SUDFfZnJlcV9taHop Cj4gKwkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPnJwMV9mcmVxKTsKPiArCWVsc2Ug aWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oeikKPiArCQl2YWwgPSBpbnRlbF9n cHVfZnJlcShycHMsIHJwcy0+bWluX2ZyZXEpOwo+ICsJZWxzZQo+ICsJCUJVRygpOwo+ICsKPiAr CXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwgdmFsKTsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBjb25zdCBnZW42X2F0dHJzW10gPSB7 Cj4gKwkmZGV2X2F0dHJfZ3RfYWN0X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfY3Vy X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfYm9vc3RfZnJlcV9taHouYXR0ciwKPiAr CSZkZXZfYXR0cl9ndF9tYXhfZnJlcV9taHouYXR0ciwKPiArCSZkZXZfYXR0cl9ndF9taW5fZnJl cV9taHouYXR0ciwKPiArCSZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHouYXR0ciwKPiArCSZkZXZf YXR0cl9ndF9SUDFfZnJlcV9taHouYXR0ciwKPiArCSZkZXZfYXR0cl9ndF9SUG5fZnJlcV9taHou YXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0 ZSAqIGNvbnN0IHZsdl9hdHRyc1tdID0gewo+ICsJJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5h dHRyLAo+ICsJJmRldl9hdHRyX2d0X2N1cl9mcmVxX21oei5hdHRyLAo+ICsJJmRldl9hdHRyX2d0 X2Jvb3N0X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIs Cj4gKwkmZGV2X2F0dHJfZ3RfbWluX2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfUlAw X2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCj4gKwkm ZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0dHIsCj4gKwkmZGV2X2F0dHJfdmx2X3JwZV9mcmVx X21oei5hdHRyLAo+ICsJTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgaW50ZWxfc3lzZnNf cnBzX2luaXQoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sK PiArCWlmIChJU19WQUxMRVlWSUVXKGd0LT5pOTE1KSB8fCBJU19DSEVSUllWSUVXKGd0LT5pOTE1 KSkKPiArCQlyZXR1cm4gc3lzZnNfY3JlYXRlX2ZpbGVzKGtvYmosIHZsdl9hdHRycyk7Cj4gKwo+ ICsJaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikKPiArCQlyZXR1cm4gc3lzZnNfY3JlYXRl X2ZpbGVzKGtvYmosIGdlbjZfYXR0cnMpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICt2 b2lkIGludGVsX2d0X3N5c2ZzX3BtX2luaXQoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtv YmplY3QgKmtvYmopCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJaW50ZWxfc3lzZnNfcmM2X2lu aXQoZ3QsIGtvYmopOwo+ICsKPiArCXJldCA9IGludGVsX3N5c2ZzX3Jwc19pbml0KGd0LCBrb2Jq KTsKPiArCWlmIChyZXQpCj4gKwkJZHJtX2VycigmZ3QtPmk5MTUtPmRybSwgImZhaWxlZCB0byBj cmVhdGUgUlBTIHN5c2ZzIGZpbGVzIik7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2Zz X2d0X3BtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNzU4 ZDBjM2NiOTk4Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3N5c2ZzX2d0X3BtLmgKPiBAQCAtMCwwICsxLDE3IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBNSVQgKi8KPiArCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENv cnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBTWVNGU19SQzZfSAo+ICsjZGVmaW5lIFNZ U0ZTX1JDNl9ICj4gKwo+ICsjaW5jbHVkZSA8bGludXgva29iamVjdC5oPgo+ICsKPiArI2luY2x1 ZGUgImludGVsX2d0X3R5cGVzLmgiCj4gKwo+ICt2b2lkIGludGVsX2d0X3N5c2ZzX3BtX2luaXQo c3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopOwo+ICt2b2lkIGludGVs X2d0X3N5c2ZzX3BtX3JlbW92ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAq a29iaik7Cj4gKwo+ICsjZW5kaWYgLyogU1lTRlNfUkM2X0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zeXNmcy5jCj4gaW5kZXggYzE0ZDc2MmJkNjUyLi4xMjk4OTc3ZmMwOGIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTM4LDExMyArMzgsMTIgQEAKPiAgICNpbmNsdWRl ICJpbnRlbF9wbS5oIgo+ICAgI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCj4gICAKPiAtc3Rh dGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqa2Rldl9taW5vcl90b19pOTE1KHN0 cnVjdCBkZXZpY2UgKmtkZXYpCj4gK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlICprZGV2X21pbm9y X3RvX2k5MTUoc3RydWN0IGRldmljZSAqa2RldikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX21pbm9y ICptaW5vciA9IGRldl9nZXRfZHJ2ZGF0YShrZGV2KTsKPiAgIAlyZXR1cm4gdG9faTkxNShtaW5v ci0+ZGV2KTsKPiAgIH0KPiAgIAo+IC0jaWZkZWYgQ09ORklHX1BNCj4gLXN0YXRpYyB1MzIgY2Fs Y19yZXNpZGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkgIGk5 MTVfcmVnX3QgcmVnKQo+IC17Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCXU2NCBy ZXMgPSAwOwo+IC0KPiAtCXdpdGhfaW50ZWxfcnVudGltZV9wbSgmZGV2X3ByaXYtPnJ1bnRpbWVf cG0sIHdha2VyZWYpCj4gLQkJcmVzID0gaW50ZWxfcmM2X3Jlc2lkZW5jeV91cygmZGV2X3ByaXYt Pmd0LnJjNiwgcmVnKTsKPiAtCj4gLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHJlcywg MTAwMCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90Cj4gLXNob3dfcmM2X21hc2soc3RydWN0 IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikK PiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90 b19pOTE1KGtkZXYpOwo+IC0JdW5zaWduZWQgaW50IG1hc2s7Cj4gLQo+IC0JbWFzayA9IDA7Cj4g LQlpZiAoSEFTX1JDNihkZXZfcHJpdikpCj4gLQkJbWFzayB8PSBCSVQoMCk7Cj4gLQlpZiAoSEFT X1JDNnAoZGV2X3ByaXYpKQo+IC0JCW1hc2sgfD0gQklUKDEpOwo+IC0JaWYgKEhBU19SQzZwcChk ZXZfcHJpdikpCj4gLQkJbWFzayB8PSBCSVQoMik7Cj4gLQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1 ZiwgUEFHRV9TSVpFLCAiJXhcbiIsIG1hc2spOwo+IC19Cj4gLQo+IC1zdGF0aWMgc3NpemVfdAo+ IC1zaG93X3JjNl9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQl1MzIgcmM2X3Jlc2lkZW5jeSA9 IGNhbGNfcmVzaWRlbmN5KGRldl9wcml2LCBHRU42X0dUX0dGWF9SQzYpOwo+IC0JcmV0dXJuIHNu cHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOwo+IC19Cj4gLQo+ IC1zdGF0aWMgc3NpemVfdAo+IC1zaG93X3JjNnBfbXMoc3RydWN0IGRldmljZSAqa2Rldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0J dTMyIHJjNnBfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIEdFTjZfR1RfR0ZY X1JDNnApOwo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBf cmVzaWRlbmN5KTsKPiAtfQo+IC0KPiAtc3RhdGljIHNzaXplX3QKPiAtc2hvd19yYzZwcF9tcyhz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21p bm9yX3RvX2k5MTUoa2Rldik7Cj4gLQl1MzIgcmM2cHBfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVu Y3koZGV2X3ByaXYsIEdFTjZfR1RfR0ZYX1JDNnBwKTsKPiAtCXJldHVybiBzbnByaW50ZihidWYs IFBBR0VfU0laRSwgIiV1XG4iLCByYzZwcF9yZXNpZGVuY3kpOwo+IC19Cj4gLQo+IC1zdGF0aWMg c3NpemVfdAo+IC1zaG93X21lZGlhX3JjNl9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQl1MzIg cmM2X3Jlc2lkZW5jeSA9IGNhbGNfcmVzaWRlbmN5KGRldl9wcml2LCBWTFZfR1RfTUVESUFfUkM2 KTsKPiAtCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZfcmVzaWRl bmN5KTsKPiAtfQo+IC0KPiAtc3RhdGljIERFVklDRV9BVFRSKHJjNl9lbmFibGUsIFNfSVJVR08s IHNob3dfcmM2X21hc2ssIE5VTEwpOwo+IC1zdGF0aWMgREVWSUNFX0FUVFIocmM2X3Jlc2lkZW5j eV9tcywgU19JUlVHTywgc2hvd19yYzZfbXMsIE5VTEwpOwo+IC1zdGF0aWMgREVWSUNFX0FUVFIo cmM2cF9yZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfcmM2cF9tcywgTlVMTCk7Cj4gLXN0YXRp YyBERVZJQ0VfQVRUUihyYzZwcF9yZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfcmM2cHBfbXMs IE5VTEwpOwo+IC1zdGF0aWMgREVWSUNFX0FUVFIobWVkaWFfcmM2X3Jlc2lkZW5jeV9tcywgU19J UlVHTywgc2hvd19tZWRpYV9yYzZfbXMsIE5VTEwpOwo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGUgKnJjNl9hdHRyc1tdID0gewo+IC0JJmRldl9hdHRyX3JjNl9lbmFibGUuYXR0ciwKPiAt CSZkZXZfYXR0cl9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCj4gLQlOVUxMCj4gLX07Cj4gLQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCByYzZfYXR0cl9ncm91cCA9IHsKPiAt CS5uYW1lID0gcG93ZXJfZ3JvdXBfbmFtZSwKPiAtCS5hdHRycyA9ICByYzZfYXR0cnMKPiAtfTsK PiAtCj4gLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpyYzZwX2F0dHJzW10gPSB7Cj4gLQkmZGV2 X2F0dHJfcmM2cF9yZXNpZGVuY3lfbXMuYXR0ciwKPiAtCSZkZXZfYXR0cl9yYzZwcF9yZXNpZGVu Y3lfbXMuYXR0ciwKPiAtCU5VTEwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwIHJjNnBfYXR0cl9ncm91cCA9IHsKPiAtCS5uYW1lID0gcG93ZXJfZ3JvdXBf bmFtZSwKPiAtCS5hdHRycyA9ICByYzZwX2F0dHJzCj4gLX07Cj4gLQo+IC1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqbWVkaWFfcmM2X2F0dHJzW10gPSB7Cj4gLQkmZGV2X2F0dHJfbWVkaWFfcmM2 X3Jlc2lkZW5jeV9tcy5hdHRyLAo+IC0JTlVMTAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWVkaWFfcmM2X2F0dHJfZ3JvdXAgPSB7Cj4gLQkubmFtZSA9 IHBvd2VyX2dyb3VwX25hbWUsCj4gLQkuYXR0cnMgPSAgbWVkaWFfcmM2X2F0dHJzCj4gLX07Cj4g LSNlbmRpZgo+IC0KPiAgIHN0YXRpYyBpbnQgbDNfYWNjZXNzX3ZhbGlkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCBsb2ZmX3Qgb2Zmc2V0KQo+ICAgewo+ICAgCWlmICghSEFTX0wzX0RQ RihpOTE1KSkKPiBAQCAtMjU2LDIzOSArMTU1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiaW5f YXR0cmlidXRlIGRwZl9hdHRyc18xID0gewo+ICAgCS5wcml2YXRlID0gKHZvaWQgKikxCj4gICB9 Owo+ICAgCj4gLXN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZp Y2UgKmtkZXYsCj4gLQkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg KmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X21pbm9y X3RvX2k5MTUoa2Rldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmaTkxNS0+Z3QucnBz Owo+IC0KPiAtCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+IC0JCQlp bnRlbF9ycHNfcmVhZF9hY3R1YWxfZnJlcXVlbmN5KHJwcykpOwo+IC19Cj4gLQo+IC1zdGF0aWMg c3NpemVfdCBndF9jdXJfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+IC0JCQkJ ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gLXsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+ IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmk5MTUtPmd0LnJwczsKPiAtCj4gLQlyZXR1cm4g c25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwKPiAtCQkJaW50ZWxfZ3B1X2ZyZXEocnBz LCBycHMtPmN1cl9mcmVxKSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2Zy ZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAm aTkxNS0+Z3QucnBzOwo+IC0KPiAtCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVk XG4iLAo+IC0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+Ym9vc3RfZnJlcSkpOwo+IC19Cj4g LQo+IC1zdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNl ICprZGV2LAo+IC0JCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+IC0J CQkJICAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4g LQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0LnJwczsKPiAtCWJvb2wgYm9v c3QgPSBmYWxzZTsKPiAtCXNzaXplX3QgcmV0Owo+IC0JdTMyIHZhbDsKPiAtCj4gLQlyZXQgPSBr c3RydG91MzIoYnVmLCAwLCAmdmFsKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAt Cj4gLQkvKiBWYWxpZGF0ZSBhZ2FpbnN0IChzdGF0aWMpIGhhcmR3YXJlIGxpbWl0cyAqLwo+IC0J dmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwo+IC0JaWYgKHZhbCA8IHJwcy0+bWlu X2ZyZXEgfHwgdmFsID4gcnBzLT5tYXhfZnJlcSkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4g LQltdXRleF9sb2NrKCZycHMtPmxvY2spOwo+IC0JaWYgKHZhbCAhPSBycHMtPmJvb3N0X2ZyZXEp IHsKPiAtCQlycHMtPmJvb3N0X2ZyZXEgPSB2YWw7Cj4gLQkJYm9vc3QgPSBhdG9taWNfcmVhZCgm cnBzLT5udW1fd2FpdGVycyk7Cj4gLQl9Cj4gLQltdXRleF91bmxvY2soJnJwcy0+bG9jayk7Cj4g LQlpZiAoYm9vc3QpCj4gLQkJc2NoZWR1bGVfd29yaygmcnBzLT53b3JrKTsKPiAtCj4gLQlyZXR1 cm4gY291bnQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IHZsdl9ycGVfZnJlcV9taHpfc2hv dyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+IC0JCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfcnBzICpy cHMgPSAmZGV2X3ByaXYtPmd0LnJwczsKPiAtCj4gLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdF X1NJWkUsICIlZFxuIiwKPiAtCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmVmZmljaWVudF9m cmVxKSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X21heF9mcmVxX21oel9zaG93KHN0 cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpi dWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlu b3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+ Z3QucnBzOwo+IC0KPiAtCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAo+ IC0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KSk7Cj4gLX0K PiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X21heF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNl ICprZGV2LAo+IC0JCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiAtCQkJ CSAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCj4gLXsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0 cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBzOwo+IC0Jc3NpemVfdCByZXQ7 Cj4gLQl1MzIgdmFsOwo+IC0KPiAtCXJldCA9IGtzdHJ0b3UzMihidWYsIDAsICZ2YWwpOwo+IC0J aWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCW11dGV4X2xvY2soJnJwcy0+bG9jayk7 Cj4gLQo+IC0JdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwo+IC0JaWYgKHZhbCA8 IHJwcy0+bWluX2ZyZXEgfHwKPiAtCSAgICB2YWwgPiBycHMtPm1heF9mcmVxIHx8Cj4gLQkgICAg dmFsIDwgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0J CWdvdG8gdW5sb2NrOwo+IC0JfQo+IC0KPiAtCWlmICh2YWwgPiBycHMtPnJwMF9mcmVxKQo+IC0J CURSTV9ERUJVRygiVXNlciByZXF1ZXN0ZWQgb3ZlcmNsb2NraW5nIHRvICVkXG4iLAo+IC0JCQkg IGludGVsX2dwdV9mcmVxKHJwcywgdmFsKSk7Cj4gLQo+IC0JcnBzLT5tYXhfZnJlcV9zb2Z0bGlt aXQgPSB2YWw7Cj4gLQo+IC0JdmFsID0gY2xhbXBfdChpbnQsIHJwcy0+Y3VyX2ZyZXEsCj4gLQkJ ICAgICAgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQsCj4gLQkJICAgICAgcnBzLT5tYXhfZnJlcV9z b2Z0bGltaXQpOwo+IC0KPiAtCS8qCj4gLQkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBw cm9jZXNzIHRoZSBuZXcgbWF4X2RlbGF5IGFuZAo+IC0JICogdXBkYXRlIHRoZSBpbnRlcnJ1cHQg bGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKPiAtCSAqIGZyZXF1ZW5jeSByZXF1ZXN0 IG1heSBiZSB1bmNoYW5nZWQuCj4gLQkgKi8KPiAtCWludGVsX3Jwc19zZXQocnBzLCB2YWwpOwo+ IC0KPiAtdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZycHMtPmxvY2spOwo+IC0KPiAtCXJldHVy biByZXQgPzogY291bnQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21o el9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpidWYpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZk ZXZfcHJpdi0+Z3QucnBzOwo+IC0KPiAtCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwg IiVkXG4iLAo+IC0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0 KSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1 Y3QgZGV2aWNlICprZGV2LAo+IC0JCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0 ciwKPiAtCQkJCSAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCj4gLXsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2 KTsKPiAtCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBzOwo+IC0Jc3Np emVfdCByZXQ7Cj4gLQl1MzIgdmFsOwo+IC0KPiAtCXJldCA9IGtzdHJ0b3UzMihidWYsIDAsICZ2 YWwpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCW11dGV4X2xvY2soJnJw cy0+bG9jayk7Cj4gLQo+IC0JdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwo+IC0J aWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKPiAtCSAgICB2YWwgPiBycHMtPm1heF9mcmVxIHx8 Cj4gLQkgICAgdmFsID4gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpIHsKPiAtCQlyZXQgPSAtRUlO VkFMOwo+IC0JCWdvdG8gdW5sb2NrOwo+IC0JfQo+IC0KPiAtCXJwcy0+bWluX2ZyZXFfc29mdGxp bWl0ID0gdmFsOwo+IC0KPiAtCXZhbCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9mcmVxLAo+IC0J CSAgICAgIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0LAo+IC0JCSAgICAgIHJwcy0+bWF4X2ZyZXFf c29mdGxpbWl0KTsKPiAtCj4gLQkvKgo+IC0JICogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8g cHJvY2VzcyB0aGUgbmV3IG1pbl9kZWxheSBhbmQKPiAtCSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0 IGxpbWl0cyBhbmQgUE1JTlRSTVNLIGV2ZW4gdGhvdWdoCj4gLQkgKiBmcmVxdWVuY3kgcmVxdWVz dCBtYXkgYmUgdW5jaGFuZ2VkLgo+IC0JICovCj4gLQlpbnRlbF9ycHNfc2V0KHJwcywgdmFsKTsK PiAtCj4gLXVubG9jazoKPiAtCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKPiAtCj4gLQlyZXR1 cm4gcmV0ID86IGNvdW50Owo+IC19Cj4gLQo+IC1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3RfYWN0 X2ZyZXFfbWh6KTsKPiAtc3RhdGljIERFVklDRV9BVFRSX1JPKGd0X2N1cl9mcmVxX21oeik7Cj4g LXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhndF9ib29zdF9mcmVxX21oeik7Cj4gLXN0YXRpYyBERVZJ Q0VfQVRUUl9SVyhndF9tYXhfZnJlcV9taHopOwo+IC1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZ3Rf bWluX2ZyZXFfbWh6KTsKPiAtCj4gLXN0YXRpYyBERVZJQ0VfQVRUUl9STyh2bHZfcnBlX2ZyZXFf bWh6KTsKPiAtCj4gLXN0YXRpYyBzc2l6ZV90IGd0X3JwX21oel9zaG93KHN0cnVjdCBkZXZpY2Ug KmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpOwo+IC1zdGF0 aWMgREVWSUNFX0FUVFIoZ3RfUlAwX2ZyZXFfbWh6LCBTX0lSVUdPLCBndF9ycF9taHpfc2hvdywg TlVMTCk7Cj4gLXN0YXRpYyBERVZJQ0VfQVRUUihndF9SUDFfZnJlcV9taHosIFNfSVJVR08sIGd0 X3JwX21oel9zaG93LCBOVUxMKTsKPiAtc3RhdGljIERFVklDRV9BVFRSKGd0X1JQbl9mcmVxX21o eiwgU19JUlVHTywgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOwo+IC0KPiAtLyogRm9yIG5vdyB3ZSBo YXZlIGEgc3RhdGljIG51bWJlciBvZiBSUCBzdGF0ZXMgKi8KPiAtc3RhdGljIHNzaXplX3QgZ3Rf cnBfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBz ID0gJmRldl9wcml2LT5ndC5ycHM7Cj4gLQl1MzIgdmFsOwo+IC0KPiAtCWlmIChhdHRyID09ICZk ZXZfYXR0cl9ndF9SUDBfZnJlcV9taHopCj4gLQkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEocnBzLCBy cHMtPnJwMF9mcmVxKTsKPiAtCWVsc2UgaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMV9mcmVx X21oeikKPiAtCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAxX2ZyZXEpOwo+IC0J ZWxzZSBpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6KQo+IC0JCXZhbCA9IGlu dGVsX2dwdV9mcmVxKHJwcywgcnBzLT5taW5fZnJlcSk7Cj4gLQllbHNlCj4gLQkJQlVHKCk7Cj4g LQo+IC0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsIHZhbCk7Cj4gLX0K PiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogY29uc3QgZ2VuNl9hdHRyc1td ID0gewo+IC0JJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0 X2N1cl9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0X2Jvb3N0X2ZyZXFfbWh6LmF0dHIs Cj4gLQkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfbWlu X2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6LmF0dHIsCj4gLQkm ZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCj4gLQkmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFf bWh6LmF0dHIsCj4gLQlOVUxMLAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRy aWJ1dGUgKiBjb25zdCB2bHZfYXR0cnNbXSA9IHsKPiAtCSZkZXZfYXR0cl9ndF9hY3RfZnJlcV9t aHouYXR0ciwKPiAtCSZkZXZfYXR0cl9ndF9jdXJfZnJlcV9taHouYXR0ciwKPiAtCSZkZXZfYXR0 cl9ndF9ib29zdF9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0X21heF9mcmVxX21oei5h dHRyLAo+IC0JJmRldl9hdHRyX2d0X21pbl9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0 X1JQMF9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oei5hdHRyLAo+ IC0JJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oei5hdHRyLAo+IC0JJmRldl9hdHRyX3Zsdl9ycGVf ZnJlcV9taHouYXR0ciwKPiAtCU5VTEwsCj4gLX07Cj4gLQo+ICAgI2lmIElTX0VOQUJMRUQoQ09O RklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1IpCj4gICAKPiAgIHN0YXRpYyBzc2l6ZV90IGVycm9y X3N0YXRlX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLAo+IEBA IC01NTksMjkgKzIyNSw2IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJc3RydWN0IGRldmljZSAqa2RldiA9IGRldl9wcml2LT5k cm0ucHJpbWFyeS0+a2RldjsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLSNpZmRlZiBDT05GSUdfUE0K PiAtCWlmIChIQVNfUkM2KGRldl9wcml2KSkgewo+IC0JCXJldCA9IHN5c2ZzX21lcmdlX2dyb3Vw KCZrZGV2LT5rb2JqLAo+IC0JCQkJCSZyYzZfYXR0cl9ncm91cCk7Cj4gLQkJaWYgKHJldCkKPiAt CQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwKPiAtCQkJCSJSQzYgcmVzaWRlbmN5IHN5c2ZzIHNl dHVwIGZhaWxlZFxuIik7Cj4gLQl9Cj4gLQlpZiAoSEFTX1JDNnAoZGV2X3ByaXYpKSB7Cj4gLQkJ cmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosCj4gLQkJCQkJJnJjNnBfYXR0cl9n cm91cCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwKPiAtCQkJ CSJSQzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwo+IC0JfQo+IC0JaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gLQkJ cmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosCj4gLQkJCQkJJm1lZGlhX3JjNl9h dHRyX2dyb3VwKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+ IC0JCQkJIk1lZGlhIFJDNiByZXNpZGVuY3kgc3lzZnMgc2V0dXAgZmFpbGVkXG4iKTsKPiAtCX0K PiAtI2VuZGlmCj4gICAJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpKSB7Cj4gICAJCXJldCA9IGRl dmljZV9jcmVhdGVfYmluX2ZpbGUoa2RldiwgJmRwZl9hdHRycyk7Cj4gICAJCWlmIChyZXQpCj4g QEAgLTU5NywxNCArMjQwLDYgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IC0JcmV0ID0gMDsKPiAt CWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkK PiAtCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9hdHRycyk7Cj4g LQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gLQkJcmV0ID0gc3lzZnNfY3Jl YXRlX2ZpbGVzKCZrZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKPiAtCWlmIChyZXQpCj4gLQkJZHJt X2VycigmZGV2X3ByaXYtPmRybSwgIlJQUyBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwo+IC0KPiAg IAlpOTE1X3NldHVwX2Vycm9yX2NhcHR1cmUoa2Rldik7Cj4gICB9Cj4gICAKPiBAQCAtNjE0LDE0 ICsyNDksNiBAQCB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAgCj4gICAJaTkxNV90ZWFyZG93bl9lcnJvcl9jYXB0dXJlKGtkZXYp Owo+ICAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikpCj4gLQkJc3lzZnNfcmVtb3ZlX2ZpbGVzKCZrZGV2LT5rb2JqLCB2bHZfYXR0cnMp Owo+IC0JZWxzZQo+IC0JCXN5c2ZzX3JlbW92ZV9maWxlcygma2Rldi0+a29iaiwgZ2VuNl9hdHRy cyk7Cj4gICAJZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShrZGV2LCAgJmRwZl9hdHRyc18xKTsKPiAg IAlkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKGtkZXYsICAmZHBmX2F0dHJzKTsKPiAtI2lmZGVmIENP TkZJR19QTQo+IC0Jc3lzZnNfdW5tZXJnZV9ncm91cCgma2Rldi0+a29iaiwgJnJjNl9hdHRyX2dy b3VwKTsKPiAtCXN5c2ZzX3VubWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosICZyYzZwX2F0dHJfZ3Jv dXApOwo+IC0jZW5kaWYKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeXNmcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5oCj4gaW5kZXgg NDFhZmQ0MzY2NDE2Li5hZDYxMTRkZTgxYzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNm cy5oCj4gQEAgLTYsOCArNiwxMSBAQAo+ICAgI2lmbmRlZiBfX0k5MTVfU1lTRlNfSF9fCj4gICAj ZGVmaW5lIF9fSTkxNV9TWVNGU19IX18KPiAgIAo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+ Cj4gKwo+ICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gICAKPiArc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmtkZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2KTsKPiAgIHZv aWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICB2 b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ ICAgCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=