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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,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 3F233C48BC2 for ; Wed, 23 Jun 2021 21:19:05 +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 F413061249 for ; Wed, 23 Jun 2021 21:19:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F413061249 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 8CED56E992; Wed, 23 Jun 2021 21:19:04 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 290646E992; Wed, 23 Jun 2021 21:19:03 +0000 (UTC) IronPort-SDR: 7wQzq2+b9TzjRzELomD1oXRHYQJxl/KcI5WohiLzPFk7i3NJLhDqiwTRp5wup5zDzV93k+f4pW YF7x5blrfElw== X-IronPort-AV: E=McAfee;i="6200,9189,10024"; a="292975353" X-IronPort-AV: E=Sophos;i="5.83,295,1616482800"; d="scan'208";a="292975353" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jun 2021 14:19:02 -0700 IronPort-SDR: frfdMJt8NgQ8AnR/sANJ+3/wgD4EnssE03xFywJj8Qs9Ulqb2IiC+PMY9/NTTYPO4MWQ2pQWvV mTpy+2OocqGQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,295,1616482800"; d="scan'208";a="406437900" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga006.jf.intel.com with ESMTP; 23 Jun 2021 14:19:01 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 23 Jun 2021 14:19:01 -0700 Received: from [10.209.162.125] (10.1.200.100) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 23 Jun 2021 14:19:00 -0700 To: Dale B Stimson , , References: <20210617064309.33420-1-dale.b.stimson@intel.com> <20210617064309.33420-2-dale.b.stimson@intel.com> From: "Sundaresan, Sujaritha" Message-ID: Date: Wed, 23 Jun 2021 14:18:53 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210617064309.33420-2-dale.b.stimson@intel.com> Content-Language: en-US X-Originating-IP: [10.1.200.100] X-ClientProxiedBy: fmsmsx606.amr.corp.intel.com (10.18.126.86) To ORSMSX610.amr.corp.intel.com (10.22.229.23) Subject: Re: [Intel-gfx] [PATCH v5 1/1] drm/i915/dg1: Add HWMON power sensor support X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Wilson Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDYvMTYvMjAyMSAxMTo0MyBQTSwgRGFsZSBCIFN0aW1zb24gd3JvdGU6Cj4gQXMgcGFydCBv ZiB0aGUgU3lzdGVtIE1hbmFnZW1lbmVudCBJbnRlcmZhY2UgKFNNSSksIHVzZSB0aGUgSFdNT04K PiBzdWJzeXN0ZW0gdG8gZGlzcGxheSBwb3dlciB1dGlsaXphdGlvbi4KPgo+IFRoZSBmb2xsb3dp bmcgc3RhbmRhcmQgSFdNT04gcG93ZXIgc2Vuc29ycyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZAo+ IChhbmQgYXBwcm9wcmlhdGVseSBzY2FsZWQpOgo+ICAgIC9zeXMvY2xhc3MvZHJtL2NhcmQwL2Rl dmljZS9od21vbi9od21vbjxpPgo+IAktIGVuZXJneTFfaW5wdXQKPiAJLSBwb3dlcjFfY2FwCj4g CS0gcG93ZXIxX21heAo+Cj4gU29tZSBub24tc3RhbmRhcmQgSFdNT04gcG93ZXIgaW5mb3JtYXRp b24gaXMgYWxzbyBwcm92aWRlZCwgc3VjaCBhcwo+IGVuYWJsZSBiaXRzIGFuZCBpbnRlcnZhbHMu Cj4KPiBTaWduZWQtb2ZmLWJ5OiBEYWxlIEIgU3RpbXNvbiA8ZGFsZS5iLnN0aW1zb25AaW50ZWwu Y29tPgo+IC0tLQo+ICAgLi4uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1pbnRlbC1pOTE1LWh3 bW9uIHwgMTE2ICsrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyAgICAgICAgICAg ICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAg ICAgICAgICB8ICAgMSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAg ICAgICAgICAgfCAgIDYgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgICAgIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYyAg ICAgICAgICAgICB8IDc3MCArKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaHdtb24uaCAgICAgICAgICAgICB8ICA0OSArKwo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAgIHwgIDUyICsrCj4gICA4IGZpbGVzIGNoYW5n ZWQsIDk5NyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlv bi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtaTkxNS1od21vbgo+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYwo+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uaAo+Cj4gZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWludGVsLWk5MTUtaHdt b24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1pbnRlbC1pOTE1LWh3 bW9uCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi45MTBmYjhl NDZmNzRkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcv c3lzZnMtZHJpdmVyLWludGVsLWk5MTUtaHdtb24KPiBAQCAtMCwwICsxLDExNiBAQAo+ICtXaGF0 OiAgICAgICAgICAgL3N5cy9kZXZpY2VzLy4uLi9od21vbi9od21vbjxpPi9lbmVyZ3kxX2lucHV0 Cj4gK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMjEKPiArS2VybmVsVmVyc2lvbjogIDUuMTQKPiAr Q29udGFjdDogICAgICAgIGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiArRGVzY3Jp cHRpb246Cj4gKyAgICAgICAgICAgICAgICBSTy4gRW5lcmd5IGlucHV0IG9mIGRldmljZSBpbiBt aWNyb2pvdWxlcy4KPiArCj4gKwkJVGhlIHJldHVybmVkIHRleHR1YWwgcmVwcmVzZW50YXRpb24g aXMgYW4gdW5zaWduZWQgaW50ZWdlcgo+ICsJCW51bWJlciB0aGF0IGNhbiBiZSBzdG9yZWQgaW4g NjQtYml0cy4gIFdhcm5pbmc6IFRoZSBoYXJkd2FyZQo+ICsJCXJlZ2lzdGVyIGlzIDMyLWJpdHMg d2lkZSBhbmQgY2FuIG92ZXJmbG93IGJ5IHdyYXBwaW5nIGFyb3VuZC4KPiArCQlBIHNpbmdsZSB3 cmFwLWFyb3VuZCBiZXR3ZWVuIGNhbGxzIHRvIHJlYWQgdGhpcyB2YWx1ZSBjYW4KPiArCQliZSBk ZXRlY3RlZCBhbmQgd2lsbCBiZSBhY2NvdW50ZWQgZm9yIGluIHRoZSByZXR1cm5lZCB2YWx1ZS4K PiArCQlBdCBhIHBvd2VyIGNvbnN1bXB0aW9uIG9mIDEgd2F0dCwgdGhlIDMyLWJpdCBoYXJkd2Fy ZSByZWdpc3Rlcgo+ICsJCXdvdWxkIHdyYXAtYXJvdW5kIGFwcHJveGltYXRlbHkgZXZlcnkgMyBk YXlzLgo+ICsKPiArCQlPbmx5IHN1cHBvcnRlZCBmb3IgcGFydGljdWxhciBJbnRlbCBpOTE1IGdy YXBoaWNzIHBsYXRmb3Jtcy4KPiArCj4gK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvLi4u L2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXhfZW5hYmxlCj4gK0RhdGU6ICAgICAgICAgICBKdW5l IDIwMjEKPiArS2VybmVsVmVyc2lvbjogIDUuMTQKPiArQ29udGFjdDogICAgICAgIGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiArRGVzY3JpcHRpb246Cj4gKyAgICAgICAgICAgICAg ICBSTy4gIFN1c3RhaW5lZCBwb3dlciBsaW1pdCBpcyBlbmFibGVkIC0gdHJ1ZSBvciBmYWxzZS4K PiArCj4gKyAgICAgICAgICAgICAgICBUaGUgcG93ZXIgY29udHJvbGxlciB3aWxsIHRocm90dGxl IHRoZSBvcGVyYXRpbmcgZnJlcXVlbmN5Cj4gKyAgICAgICAgICAgICAgICBpZiB0aGUgcG93ZXIg YXZlcmFnZWQgb3ZlciBhIHdpbmRvdyAodHlwaWNhbGx5IHNlY29uZHMpCj4gKyAgICAgICAgICAg ICAgICBleGNlZWRzIHRoaXMgbGltaXQuCj4gKwo+ICsgICAgICAgICAgICAgICAgU2VlIHBvd2Vy MV9tYXhfZW5hYmxlIHBvd2VyMV9tYXggcG93ZXIxX21heF9pbnRlcnZhbAo+ICsKPiArCQlPbmx5 IHN1cHBvcnRlZCBmb3IgcGFydGljdWxhciBJbnRlbCBpOTE1IGdyYXBoaWNzIHBsYXRmb3Jtcy4K PiArCj4gK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bv d2VyMV9tYXgKPiArRGF0ZTogICAgICAgICAgIEp1bmUgMjAyMQo+ICtLZXJuZWxWZXJzaW9uOiAg NS4xNAo+ICtDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ICtEZXNjcmlwdGlvbjoKPiArICAgICAgICAgICAgICAgIFJXLiAgU3VzdGFpbmVkIHBvd2VyIGxp bWl0IGluIG1pbGxpd2F0dHMKPiArCj4gKyAgICAgICAgICAgICAgICBUaGUgcG93ZXIgY29udHJv bGxlciB3aWxsIHRocm90dGxlIHRoZSBvcGVyYXRpbmcgZnJlcXVlbmN5Cj4gKyAgICAgICAgICAg ICAgICBpZiB0aGUgcG93ZXIgYXZlcmFnZWQgb3ZlciBhIHdpbmRvdyAodHlwaWNhbGx5IHNlY29u ZHMpCj4gKyAgICAgICAgICAgICAgICBleGNlZWRzIHRoaXMgbGltaXQuCj4gKwo+ICsgICAgICAg ICAgICAgICAgU2VlIHBvd2VyMV9tYXhfZW5hYmxlIHBvd2VyMV9tYXggcG93ZXIxX21heF9pbnRl cnZhbAo+ICsKPiArCQlPbmx5IHN1cHBvcnRlZCBmb3IgcGFydGljdWxhciBJbnRlbCBpOTE1IGdy YXBoaWNzIHBsYXRmb3Jtcy4KPiArCj4gK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvLi4u L2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXhfaW50ZXJ2YWwKPiArRGF0ZTogICAgICAgICAgIEp1 bmUgMjAyMQo+ICtLZXJuZWxWZXJzaW9uOiAgNS4xNAo+ICtDb250YWN0OiAgICAgICAgZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ICtEZXNjcmlwdGlvbjoKPiArICAgICAgICAgICAg ICAgIFJXLiBTdXN0YWluZWQgcG93ZXIgbGltaXQgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIG92 ZXIKPiArICAgICAgICAgICAgICAgIHdoaWNoIHN1c3RhaW5lZCBwb3dlciBpcyBhdmVyYWdlZC4K PiArCj4gKyAgICAgICAgICAgICAgICBTZWUgcG93ZXIxX21heF9lbmFibGUgcG93ZXIxX21heCBw b3dlcjFfbWF4X2ludGVydmFsCj4gKwo+ICsJCU9ubHkgc3VwcG9ydGVkIGZvciBwYXJ0aWN1bGFy IEludGVsIGk5MTUgZ3JhcGhpY3MgcGxhdGZvcm1zLgo+ICsKPiArV2hhdDogICAgICAgICAgIC9z eXMvZGV2aWNlcy8uLi4vaHdtb24vaHdtb248aT4vcG93ZXIxX2NhcF9lbmFibGUKPiArRGF0ZTog ICAgICAgICAgIEp1bmUgMjAyMQo+ICtLZXJuZWxWZXJzaW9uOiAgNS4xNAo+ICtDb250YWN0OiAg ICAgICAgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ICtEZXNjcmlwdGlvbjoKPiAr CQlSVy4gIFBvd2VyIGJ1cnN0IGxpbWl0IGlzIGVuYWJsZWQgLSB0cnVlIG9yIGZhbHNlCj4gKwo+ ICsgICAgICAgICAgICAgICAgU2VlIHBvd2VyMV9jYXBfZW5hYmxlIHBvd2VyMV9jYXAKPiArCj4g KwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIgSW50ZWwgaTkxNSBncmFwaGljcyBwbGF0 Zm9ybXMuCj4gKwo+ICtXaGF0OiAgICAgICAgICAgL3N5cy9kZXZpY2VzLy4uLi9od21vbi9od21v bjxpPi9wb3dlcjFfY2FwCj4gK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMjEKPiArS2VybmVsVmVy c2lvbjogIDUuMTQKPiArQ29udGFjdDogICAgICAgIGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiArRGVzY3JpcHRpb246Cj4gKwkJUlcuICBQb3dlciBidXJzdCBsaW1pdCBpbiBtaWxs aXdhdHRzLgo+ICsKPiArICAgICAgICAgICAgICAgIFNlZSBwb3dlcjFfY2FwX2VuYWJsZSBwb3dl cjFfY2FwCj4gKwo+ICsJCU9ubHkgc3VwcG9ydGVkIGZvciBwYXJ0aWN1bGFyIEludGVsIGk5MTUg Z3JhcGhpY3MgcGxhdGZvcm1zLgo+ICsKPiArV2hhdDogICAgICAgICAgIC9zeXMvZGV2aWNlcy8u Li4vaHdtb24vaHdtb248aT4vcG93ZXJfZGVmYXVsdF9saW1pdAo+ICtEYXRlOiAgICAgICAgICAg SnVuZSAyMDIxCj4gK0tlcm5lbFZlcnNpb246ICA1LjE0Cj4gK0NvbnRhY3Q6ICAgICAgICBkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gK0Rlc2NyaXB0aW9uOgo+ICsgICAgICAgICAg ICAgICAgUk8uICBEZWZhdWx0IHBvd2VyIGxpbWl0Lgo+ICsKPiArCQlPbmx5IHN1cHBvcnRlZCBm b3IgcGFydGljdWxhciBJbnRlbCBpOTE1IGdyYXBoaWNzIHBsYXRmb3Jtcy4KPiArCj4gK1doYXQ6 ICAgICAgICAgICAvc3lzL2RldmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyX21pbl9saW1p dAo+ICtEYXRlOiAgICAgICAgICAgSnVuZSAyMDIxCj4gK0tlcm5lbFZlcnNpb246ICA1LjE0Cj4g K0NvbnRhY3Q6ICAgICAgICBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gK0Rlc2Ny aXB0aW9uOgo+ICsgICAgICAgICAgICAgICAgUk8uICBEZWZhdWx0IG1pbmltdW0gcG93ZXIgbGlt aXQuCj4gKwo+ICsJCU9ubHkgc3VwcG9ydGVkIGZvciBwYXJ0aWN1bGFyIEludGVsIGk5MTUgZ3Jh cGhpY3MgcGxhdGZvcm1zLgo+ICsKPiArCQlJZiBub3Qgc3VwcG9ydGVkLCB0aGVuIGF0dHJpYnV0 ZSB3aWxsIGJlIGFic2VudCwgb3IgYXR0ZW1wdGVkCj4gKwkJYWNjZXNzIHdpbGwgZ2l2ZSBlcnJv ciByZXR1cm4gb3IgcmV0dXJuIHZhbHVlIGFzIDAuCj4gKwo+ICtXaGF0OiAgICAgICAgICAgL3N5 cy9kZXZpY2VzLy4uLi9od21vbi9od21vbjxpPi9wb3dlcl9tYXhfbGltaXQKPiArRGF0ZTogICAg ICAgICAgIEp1bmUgMjAyMQo+ICtLZXJuZWxWZXJzaW9uOiAgNS4xNAo+ICtDb250YWN0OiAgICAg ICAgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ICtEZXNjcmlwdGlvbjoKPiArICAg ICAgICAgICAgICAgIFJPLiAgRGVmYXVsdCBtYXhpbXVtIHBvd2VyIGxpbWl0Lgo+ICsKPiArCQlP bmx5IHN1cHBvcnRlZCBmb3IgcGFydGljdWxhciBJbnRlbCBpOTE1IGdyYXBoaWNzIHBsYXRmb3Jt cy4KPiArCj4gKwkJSWYgbm90IHN1cHBvcnRlZCwgdGhlbiBvbmUgb2Y6IGFic2VudCwgZXJyb3Ig cmV0dXJuIG9yIHZhbHVlCj4gKwkJcmV0dXJuZWQgYXMgMCBvciBVSU5UX01BWC4KPiArCj4gKwkJ SWYgbm90IHN1cHBvcnRlZCwgdGhlbiBhdHRyaWJ1dGUgd2lsbCBiZSBhYnNlbnQsIG9yIGF0dGVt cHRlZAo+ICsJCWFjY2VzcyB3aWxsIGdpdmUgZXJyb3IgcmV0dXJuIG9yIHJldHVybiB2YWx1ZSBh cyAwIG9yIFVJTlRfTUFYLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29u ZmlnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+IGluZGV4IGI2M2QzNzRkZmYyM2Yu LjQ3YTBhODI3NzRjYzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZp Zwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPiBAQCAtMTQsNiArMTQsNyBA QCBjb25maWcgRFJNX0k5MTUKPiAgIAlzZWxlY3QgRFJNX01JUElfRFNJCj4gICAJc2VsZWN0IFJF TEFZCj4gICAJc2VsZWN0IElSUV9XT1JLCj4gKwlzZWxlY3QgSFdNT04KPiAgIAkjIGk5MTUgZGVw ZW5kcyBvbiBBQ1BJX1ZJREVPIHdoZW4gQUNQSSBpcyBlbmFibGVkCj4gICAJIyBidXQgZm9yIHNl bGVjdCB0byB3b3JrLCBuZWVkIHRvIHNlbGVjdCBBQ1BJX1ZJREVPJ3MgZGVwZW5kZW5jaWVzLCBp Y2sKPiAgIAlzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRSBpZiBBQ1BJCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPiBpbmRleCBmNTdkZmM3NGQ2Y2UwLi44Y2RhZTBjMzI3ZTI3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKPiBAQCAtMzcsNiArMzcsNyBAQCBpOTE1LXkgKz0gaTkxNV9kcnYubyBc Cj4gICAJICBpOTE1X2NvbmZpZy5vIFwKPiAgIAkgIGk5MTVfaXJxLm8gXAo+ICAgCSAgaTkxNV9n ZXRwYXJhbS5vIFwKPiArCSAgaTkxNV9od21vbi5vIFwKPiAgIAkgIGk5MTVfbWl0aWdhdGlvbnMu byBcCj4gICAJICBpOTE1X3BhcmFtcy5vIFwKPiAgIAkgIGk5MTVfcGNpLm8gXAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+IGluZGV4IDg1MGI0OTljNzFjOGUuLmFkMDcwNmM2NTFlN2UgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNzAsNiArNzAsNyBAQAo+ICAgCj4gICAjaW5j bHVkZSAiaTkxNV9kZWJ1Z2ZzLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1 ZGUgImk5MTVfaHdtb24uaCIKPiAgICNpbmNsdWRlICJpOTE1X2lvYzMyLmgiCj4gICAjaW5jbHVk ZSAiaTkxNV9pcnEuaCIKPiAgICNpbmNsdWRlICJpOTE1X21lbWNweS5oIgo+IEBAIC02OTEsNiAr NjkyLDggQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAJaW50ZWxfZ3RfZHJpdmVyX3JlZ2lzdGVyKCZk ZXZfcHJpdi0+Z3QpOwo+ICAgCj4gKwlpOTE1X2h3bW9uX3JlZ2lzdGVyKGRldl9wcml2KTsKPiAr Cj4gICAJaW50ZWxfZGlzcGxheV9kcml2ZXJfcmVnaXN0ZXIoZGV2X3ByaXYpOwo+ICAgCj4gICAJ aW50ZWxfcG93ZXJfZG9tYWluc19lbmFibGUoZGV2X3ByaXYpOwo+IEBAIC03MTcsOSArNzIwLDEy IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAJaW50ZWxfZGlzcGxheV9kcml2ZXJfdW5yZWdpc3Rl cihkZXZfcHJpdik7Cj4gICAKPiArCWk5MTVfaHdtb25fdW5yZWdpc3RlcihkZXZfcHJpdik7Cj4g Kwo+ICAgCWludGVsX2d0X2RyaXZlcl91bnJlZ2lzdGVyKCZkZXZfcHJpdi0+Z3QpOwo+ICAgCj4g ICAJaTkxNV9wZXJmX3VucmVnaXN0ZXIoZGV2X3ByaXYpOwo+ICsKPiAgIAlpOTE1X3BtdV91bnJl Z2lzdGVyKGRldl9wcml2KTsKPiAgIAo+ICAgCWk5MTVfdGVhcmRvd25fc3lzZnMoZGV2X3ByaXYp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDAxZTExZmUzODY0MmQuLjNkNjVkOTVl ZTY0ZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTEwNCw2ICsxMTA0LDgg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAgCj4gICAJc3RydWN0IGk5MTVfcGVyZiBw ZXJmOwo+ICAgCj4gKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb247Cj4gKwo+ICAgCS8qIEFic3Ry YWN0IHRoZSBzdWJtaXNzaW9uIG1lY2hhbmlzbSAobGVnYWN5IHJpbmdidWZmZXIgb3IgZXhlY2xp c3RzKSBhd2F5ICovCj4gICAJc3RydWN0IGludGVsX2d0IGd0Owo+ICAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaHdtb24uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw MC4uOGQwODA1MTk2YjliZgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2h3bW9uLmMKPiBAQCAtMCwwICsxLDc3MCBAQAo+ICsvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBv cmF0aW9uCj4gKyAqLwo+ICsKPiArLyoKPiArICogUG93ZXItcmVsYXRlZCBod21vbiBlbnRyaWVz Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9od21vbi5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvaHdtb24tc3lzZnMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICsjaW5j bHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCj4gKyNpbmNsdWRl ICJpOTE1X2h3bW9uLmgiCj4gKwo+ICsvKgo+ICsgKiBTRl8qIC0gc2NhbGUgZmFjdG9ycyBmb3Ig cGFydGljdWxhciBxdWFudGl0aWVzLgo+ICsgKiBUaGUgaHdtb24gc3RhbmRhcmQgc2F5cyB0aGF0 IHF1YW50aXRpZXMgb2YgdGhlIGdpdmVuIHR5cGVzIGFyZSBzcGVjaWZpZWQKPiArICogaW4gdGhl IGdpdmVuIHVuaXRzOgo+ICsgKiAtIHRpbWUgICAtIG1pbGxpc2Vjb25kcwo+ICsgKiAtIHBvd2Vy ICAtIG1pY3Jvd2F0dHMKPiArICogLSBlbmVyZ3kgLSBtaWNyb2pvdWxlcwo+ICsgKi8KPiArCj4g KyNkZWZpbmUgU0ZfVElNRQkJICAgMTAwMAo+ICsjZGVmaW5lIFNGX1BPV0VSCTEwMDAwMDAKPiAr I2RlZmluZSBTRl9FTkVSR1kJMTAwMDAwMAo+ICsKPiArI2RlZmluZSBGSUVMRF9TSElGVChfX21h c2spCQkJCSAgICBcCj4gKwkoQlVJTERfQlVHX09OX1pFUk8oIV9fYnVpbHRpbl9jb25zdGFudF9w KF9fbWFzaykpICsgXAo+ICsJCUJVSUxEX0JVR19PTl9aRVJPKChfX21hc2spID09IDApICsJICAg IFwKPiArCQlfX2JmX3NoZihfX21hc2spKQo+ICsKPiArc3RhdGljIHZvaWQKPiArX2xvY2tlZF93 aXRoX3BtX2ludGVsX3VuY29yZV9ybXcoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICsJ CQkJIGk5MTVfcmVnX3QgcmVnLCB1MzIgY2xlYXIsIHUzMiBzZXQpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gdW5jb3JlLT5pOTE1Owo+ICsJc3RydWN0IGk5MTVfaHdt b24gKmh3bW9uID0gaTkxNS0+aHdtb247Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAr Cj4gKwltdXRleF9sb2NrKCZod21vbi0+aHdtb25fbG9jayk7Cj4gKwo+ICsJd2l0aF9pbnRlbF9y dW50aW1lX3BtKHVuY29yZS0+cnBtLCB3YWtlcmVmKQo+ICsJCWludGVsX3VuY29yZV9ybXcodW5j b3JlLCByZWcsIGNsZWFyLCBzZXQpOwo+ICsKPiArCW11dGV4X3VubG9jaygmaHdtb24tPmh3bW9u X2xvY2spOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGlzIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUg b2YgdTY0IGFsbG93cyBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIHNjYWxpbmcKPiArICogb2YgdGhl IGZpZWxkIHRha2VuIGZyb20gdGhlIDMyLWJpdCByZWdpc3RlciB2YWx1ZSBtaWdodCBjYXVzZSBh IHJlc3VsdCB0bwo+ICsgKiBleGNlZWQgMzIgYml0cy4KPiArICovCj4gK3N0YXRpYyB1NjQKPiAr X2ZpZWxkX3JlYWRfYW5kX3NjYWxlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwgaTkxNV9y ZWdfdCByZ2FkciwKPiArCQkgICAgICB1MzIgZmllbGRfbXNrLCBpbnQgZmllbGRfc2hpZnQsCj4g KwkJICAgICAgaW50IG5zaGlmdCwgdW5zaWduZWQgaW50IHNjYWxlX2ZhY3RvcikKPiArewo+ICsJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwl1MzIgcmVnX3ZhbHVlOwo+ICsJdTY0IHNjYWxl ZF92YWw7Cj4gKwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHVuY29yZS0+cnBtLCB3YWtlcmVm KQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgcmdhZHIpOwo+ICsK PiArCXJlZ192YWx1ZSA9IChyZWdfdmFsdWUgJiBmaWVsZF9tc2spID4+IGZpZWxkX3NoaWZ0Owo+ ICsJc2NhbGVkX3ZhbCA9IG11bF91MzJfdTMyKHNjYWxlX2ZhY3RvciwgcmVnX3ZhbHVlKTsKPiAr Cj4gKwkvKiBTaGlmdCwgcm91bmRpbmcgdG8gbmVhcmVzdCAqLwo+ICsJaWYgKG5zaGlmdCA+IDAp Cj4gKwkJc2NhbGVkX3ZhbCA9IChzY2FsZWRfdmFsICsgKDEgPDwgKG5zaGlmdCAtIDEpKSkgPj4g bnNoaWZ0Owo+ICsKPiArCXJldHVybiBzY2FsZWRfdmFsOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTY0 Cj4gK19maWVsZF9yZWFkNjRfYW5kX3NjYWxlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwg aTkxNV9yZWdfdCByZ2FkciwKPiArCQkJdTY0IGZpZWxkX21zaywgaW50IGZpZWxkX3NoaWZ0LAo+ ICsJCQlpbnQgbnNoaWZ0LCB1bnNpZ25lZCBpbnQgc2NhbGVfZmFjdG9yKQo+ICt7Cj4gKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCXU2NCByZWdfdmFsdWU7Cj4gKwl1NjQgc2NhbGVkX3Zh bDsKPiArCj4gKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0odW5jb3JlLT5ycG0sIHdha2VyZWYpCj4g KwkJcmVnX3ZhbHVlID0gaW50ZWxfdW5jb3JlX3JlYWQ2NCh1bmNvcmUsIHJnYWRyKTsKPiArCj4g KwlyZWdfdmFsdWUgPSAocmVnX3ZhbHVlICYgZmllbGRfbXNrKSA+PiBmaWVsZF9zaGlmdDsKPiAr CXNjYWxlZF92YWwgPSBzY2FsZV9mYWN0b3IgKiByZWdfdmFsdWU7Cj4gKwo+ICsJLyogU2hpZnQs IHJvdW5kaW5nIHRvIG5lYXJlc3QgKi8KPiArCWlmIChuc2hpZnQgPiAwKQo+ICsJCXNjYWxlZF92 YWwgPSAoc2NhbGVkX3ZhbCArICgxIDw8IChuc2hpZnQgLSAxKSkpID4+IG5zaGlmdDsKPiArCj4g KwlyZXR1cm4gc2NhbGVkX3ZhbDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArX2ZpZWxkX3Nj YWxlX2FuZF93cml0ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gKwkJICAgICAgIGk5 MTVfcmVnX3QgcmdhZHIsCj4gKwkJICAgICAgIHUzMiBmaWVsZF9tc2ssIGludCBmaWVsZF9zaGlm dCwKPiArCQkgICAgICAgaW50IG5zaGlmdCwgdW5zaWduZWQgaW50IHNjYWxlX2ZhY3RvciwgbG9u ZyBsdmFsKQo+ICt7Cj4gKwl1MzIgbnZhbDsKPiArCXUzMiBiaXRzX3RvX2NsZWFyOwo+ICsJdTMy IGJpdHNfdG9fc2V0Owo+ICsKPiArCS8qIENvbXB1dGF0aW9uIGluIDY0LWJpdHMgdG8gYXZvaWQg b3ZlcmZsb3cuIFJvdW5kIHRvIG5lYXJlc3QuICovCj4gKwludmFsID0gRElWX1JPVU5EX0NMT1NF U1RfVUxMKCh1NjQpbHZhbCA8PCBuc2hpZnQsIHNjYWxlX2ZhY3Rvcik7Cj4gKwo+ICsJYml0c190 b19jbGVhciA9IGZpZWxkX21zazsKPiArCWJpdHNfdG9fc2V0ID0gKG52YWwgPDwgZmllbGRfc2hp ZnQpIHwgZmllbGRfbXNrOwo+ICsKPiArCV9sb2NrZWRfd2l0aF9wbV9pbnRlbF91bmNvcmVfcm13 KHVuY29yZSwgcmdhZHIsCj4gKwkJCQkJIGJpdHNfdG9fY2xlYXIsIGJpdHNfdG9fc2V0KTsKPiAr fQo+ICsKPiArLyoKPiArICogaTkxNV9lbmVyZ3kxX2lucHV0X3Nob3cgLSBBIGN1c3RvbSBmdW5j dGlvbiB0byBvYnRhaW4gZW5lcmd5MV9pbnB1dC4KPiArICogVXNlIGEgY3VzdG9tIGZ1bmN0aW9u IGluc3RlYWQgb2YgdGhlIHVzdWFsIGh3bW9uIGhlbHBlcnMgaW4gb3JkZXIgdG8KPiArICogZ3Vh cmFudGVlIDY0LWJpdHMgb2YgcmVzdWx0IHRvIHVzZXItc3BhY2UuCj4gKyAqIFVuaXRzIGFyZSBt aWNyb2pvdWxlcy4KPiArICoKPiArICogVGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVnaXN0ZXIg aXMgMzItYml0cyBhbmQgaXMgc3ViamVjdCB0byBvdmVyZmxvdy4KPiArICogVGhpcyBmdW5jdGlv biBjb21wZW5zYXRlcyBmb3Igb3ZlcmZsb3cgb2YgdGhlIDMyLWJpdCByZWdpc3RlciBieSBkZXRl Y3RpbmcKPiArICogd3JhcC1hcm91bmQgYW5kIGluY3JlbWVudGluZyBhbiBvdmVyZmxvdyBjb3Vu dGVyLgo+ICsgKiBUaGlzIG9ubHkgd29ya3MgaWYgdGhlIHJlZ2lzdGVyIGlzIHNhbXBsZWQgb2Z0 ZW4gZW5vdWdoIHRvIGF2b2lkCj4gKyAqIG1pc3NpbmcgYW4gaW5zdGFuY2Ugb2Ygb3ZlcmZsb3cg LSBhY2hpZXZlZCBlaXRoZXIgYnkgcmVwZWF0ZWQKPiArICogcXVlcmllcyB0aHJvdWdoIHRoZSBB UEksIG9yIHZpYSBhIHBvc3NpYmxlIHRpbWVyIChmdXR1cmUgLSBUQkQpIHRoYXQKPiArICogZW5z dXJlcyB2YWx1ZXMgYXJlIHJlYWQgb2Z0ZW4gZW5vdWdoIHRvIGNhdGNoIGFsbCBvdmVyZmxvd3Mu Cj4gKyAqCj4gKyAqIEhvdyBsb25nIGJlZm9yZSBvdmVyZmxvdz8gIEZvciBleGFtcGxlLCB3aXRo IGFuIGV4YW1wbGUgc2NhbGluZyBiaXQKPiArICogc2hpZnQgb2YgMTQgYml0cyAoc2VlIHJlZ2lz dGVyICpQQUNLQUdFX1BPV0VSX1NLVV9VTklUKSBhbmQgYSBwb3dlciBkcmF3IG9mCj4gKyAqIDEw MDAgd2F0dHMsIHRoZSAzMi1iaXQgY291bnRlciB3aWxsIG92ZXJmbG93IGluIGFwcHJveGltYXRl bHkgNC4zNiBtaW51dGVzLgo+ICsgKgo+ICsgKiBFeGFtcGxlczoKPiArICogICAgMSB3YXR0OiAg KDJeMzIgPj4gMTQpIC8gICAgMSBXIC8gKDYwICogNjAgKiAyNCkgc2Vjcy9kYXkgLT4gMyBkYXlz Cj4gKyAqIDEwMDAgd2F0dHM6ICgyXjMyID4+IDE0KSAvIDEwMDAgVyAvIDYwICAgICAgICAgICAg IHNlY3MvbWluIC0+IDQuMzYgbWludXRlcwo+ICsgKi8KPiArc3RhdGljIHNzaXplX3QKPiAraTkx NV9lbmVyZ3kxX2lucHV0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwKPiArCQkJY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiArCXN0cnVjdCBpOTE1X2h3bW9uICpod21v biA9IGk5MTUtPmh3bW9uOwo+ICsJaW50IG5zaGlmdCA9IGh3bW9uLT5zY2xfc2hpZnRfZW5lcmd5 Owo+ICsJc3NpemVfdCByZXQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCXUzMiBy ZWdfdmFsdWU7Cj4gKwl1NjQgdmxvOwo+ICsJdTY0IHZoaTsKPiArCj4gKwltdXRleF9sb2NrKCZo d21vbi0+aHdtb25fbG9jayk7Cj4gKwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHVuY29yZS0+ cnBtLCB3YWtlcmVmKQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwK PiArCQkJCQkgICAgICBod21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXMpOwo+ICsKPiArCS8qCj4g KwkgKiBUaGUgdTMyIHJlZ2lzdGVyIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSB1MzIgb3ZlcmZsb3cg Y291bnRlcgo+ICsJICogZ2l2ZXMgYW4gZWZmZWN0aXZlIGVuZXJneSBjb3VudGVyIHNpemUgb2Yg NjQtYml0cy4gIEhvd2V2ZXIsIHRoZQo+ICsJICogY29tcHV0YXRpb25zIGJlbG93IGFyZSBkb25l IG1vZHVsbyAyXjk2IHRvIGF2b2lkIG92ZXJmbG93IGR1cmluZwo+ICsJICogc2NhbGluZyBpbiB0 aGUgY29udmVyc2lvbiB0byBtaWNyb2pvdWxlcy4KPiArCSAqCj4gKwkgKiBUaGUgbG93LW9yZGVy IDY0LWJpdHMgb2YgdGhlIHJlc3VsdGluZyBxdWFudGl0eSBhcmUgcmV0dXJuZWQgdG8KPiArCSAq IHRoZSBjYWxsZXIgaW4gdW5pdHMgb2YgbWljcm9qb3VsZXMsIGVuY29kZWQgaW50byBhIGRlY2lt YWwgc3RyaW5nLgo+ICsJICoKPiArCSAqIEZvciBhIHBvd2VyIG9mIDEwMDAgd2F0dHMsIDY0IGJp dHMgaW4gdW5pdHMgb2YgbWljcm9qb3VsZXMgd2lsbAo+ICsJICogb3ZlcmZsb3cgYWZ0ZXIgNTg0 IHllYXJzLgo+ICsJICovCj4gKwo+ICsJaWYgKGh3bW9uLT5laS5lbmVyZ3lfY291bnRlcl9wcmV2 ID4gcmVnX3ZhbHVlKQo+ICsJCWh3bW9uLT5laS5lbmVyZ3lfY291bnRlcl9vdmVyZmxvdysrOwo+ ICsKPiArCWh3bW9uLT5laS5lbmVyZ3lfY291bnRlcl9wcmV2ID0gcmVnX3ZhbHVlOwo+ICsKPiAr CS8qCj4gKwkgKiA2NC1iaXQgdmFyaWFibGVzIHZsbyBhbmQgdmhpIGFyZSB1c2VkIGZvciB0aGUg c2NhbGluZyBwcm9jZXNzLgo+ICsJICogVGhlIDk2LWJpdCBjb3VudGVyIHZhbHVlIGlzIGNvbXBv c2VkIGZyb20gdGhlIHR3byA2NC1iaXQgdmFyaWFibGVzCj4gKwkgKiB2aGkgYW5kIHZsbyB0aHVz bHk6ICBjb3VudGVyID09IHZoaSA8PCAzMiArIHZsbyAuCj4gKwkgKiBUaGUgMzItYml0cyBvZiBv dmVybGFwIGJldHdlZW4gdGhlIHR3byB2YXJpYWJsZXMgaXMgY29udmVuaWVudCBmb3IKPiArCSAq IGhhbmRsaW5nIG92ZXJmbG93cyBvdXQgb2YgdmxvLgo+ICsJICovCj4gKwo+ICsJdmxvID0gcmVn X3ZhbHVlOwo+ICsJdmhpID0gaHdtb24tPmVpLmVuZXJneV9jb3VudGVyX292ZXJmbG93Owo+ICsK PiArCW11dGV4X3VubG9jaygmaHdtb24tPmh3bW9uX2xvY2spOwo+ICsKPiArCXZsbyA9IFNGX0VO RVJHWSAqIHZsbzsKPiArCj4gKwkvKiBQcmVwYXJlIHRvIHJvdW5kIHRvIG5lYXJlc3QgKi8KPiAr CWlmIChuc2hpZnQgPiAwKQo+ICsJCXZsbyArPSAxIDw8IChuc2hpZnQgLSAxKTsKPiArCj4gKwkv Kgo+ICsJICogQW55dGhpbmcgaW4gdGhlIHVwcGVyLTMyIGJpdHMgb2YgdmxvIGdldHMgYWRkZWQg aW50byB2aGkgaGVyZSwKPiArCSAqIGFuZCB0aGVuIGNsZWFyZWQgZnJvbSB2bG8uCj4gKwkgKi8K PiArCXZoaSA9IChTRl9FTkVSR1kgKiB2aGkpICsgKHZsbyA+PiAzMik7Cj4gKwl2bG8gJj0gMHhm ZmZmZmZmZlVMTDsKPiArCj4gKwkvKgo+ICsJICogQXBwbHkgdGhlIHJpZ2h0IHNoaWZ0Lgo+ICsJ ICogLSB2bG8gc2hpZnRlZCBieSBpdHNlbGYuCj4gKwkgKiAtIHZsbyByZWNlaXZpbmcgd2hhdCdz IHNoaWZ0ZWQgb3V0IG9mIHZoaS4KPiArCSAqIC0gdmhpIHNoaWZ0ZWQgYnkgaXRzZWxmCj4gKwkg Ki8KPiArCXZsbyA9IHZsbyA+PiBuc2hpZnQ7Cj4gKwl2bG8gfD0gKHZoaSA8PCAoMzIgLSBuc2hp ZnQpKSAmIDB4ZmZmZmZmZmZVTEw7Cj4gKwl2aGkgPSB2aGkgPj4gbnNoaWZ0Owo+ICsKPiArCS8q IENvbWJpbmVkIHRvIGdldCBhIDY0LWJpdCByZXN1bHQgaW4gdmxvLiAqLwo+ICsJdmxvIHw9ICh2 aGkgPDwgMzIpOwo+ICsKPiArCXJldCA9IHN5c2ZzX2VtaXQoYnVmLCAiJWxsdVxuIiwgdmxvKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpOTE1X3Bv d2VyMV9tYXhfZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgIGNoYXIgKmJ1ZikKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBpOTE1 X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlID0gJmk5MTUtPnVuY29yZTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJc3Np emVfdCByZXQ7Cj4gKwl1MzIgcmVnX3ZhbHVlOwo+ICsJYm9vbCBpc19lbmFibGVkOwo+ICsKPiAr CXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2FrZXJlZikKPiArCQlyZWdfdmFs dWUgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCj4gKwkJCQkJICAgICAgaHdtb24tPnJnLnBr Z19yYXBsX2xpbWl0KTsKPiArCj4gKwlpc19lbmFibGVkID0gISEocmVnX3ZhbHVlICYgUEtHX1BX Ul9MSU1fMV9FTik7Cj4gKwo+ICsJcmV0ID0gc3lzZnNfZW1pdChidWYsICIldVxuIiwgaXNfZW5h YmxlZCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAr aTkxNV9wb3dlcjFfbWF4X2ludGVydmFsX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICAgY2hhciAqYnVmKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJ c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiArCXN0cnVjdCBp OTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOwo+ICsJc3NpemVfdCByZXQ7Cj4gKwl1NjQg dWxsdmFsOwo+ICsKPiArCXVsbHZhbCA9IF9maWVsZF9yZWFkX2FuZF9zY2FsZSh1bmNvcmUsIGh3 bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwKPiArCQkJCSAgICAgICBQS0dfUFdSX0xJTV8xX1RJTUUs Cj4gKwkJCQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMV9USU1FKSwKPiArCQkJCSAg ICAgICBod21vbi0+c2NsX3NoaWZ0X3RpbWUsIFNGX1RJTUUpOwo+ICsKPiArCXJldCA9IHN5c2Zz X2VtaXQoYnVmLCAiJWxsdVxuIiwgdWxsdmFsKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpOTE1X3Bvd2VyMV9tYXhfaW50ZXJ2YWxfc3RvcmUoc3Ry dWN0IGRldmljZSAqZGV2LAo+ICsJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsCj4gKwkJCSAgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiAr CXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7Cj4gKwlzdHJ1Y3Qg aTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5od21vbjsKPiArCXNzaXplX3QgcmV0Owo+ICsJbG9u ZyB2YWw7Cj4gKwo+ICsJcmV0ID0ga3N0cnRvdWwoYnVmLCAwLCAmdmFsKTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlfZmllbGRfc2NhbGVfYW5kX3dyaXRlKHVuY29yZSwg aHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0LAo+ICsJCQkgICAgICAgUEtHX1BXUl9MSU1fMl9USU1F LAo+ICsJCQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMl9USU1FKSwKPiArCQkJICAg ICAgIGh3bW9uLT5zY2xfc2hpZnRfdGltZSwgU0ZfVElNRSwgdmFsKTsKPiArCj4gKwlyZXR1cm4g Y291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK2k5MTVfcG93ZXIxX2NhcF9lbmFi bGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LAo+ICsJCQkgICAgY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlID0gJmk5MTUtPnVuY29yZTsKPiArCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUt Pmh3bW9uOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlzc2l6ZV90IHJldDsKPiAr CXUzMiByZWdfdmFsdWU7Cj4gKwlib29sIGlzX2VuYWJsZWQ7Cj4gKwo+ICsJd2l0aF9pbnRlbF9y dW50aW1lX3BtKHVuY29yZS0+cnBtLCB3YWtlcmVmKQo+ICsJCXJlZ192YWx1ZSA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwKPiArCQkJCQkgICAgICBod21vbi0+cmcucGtnX3JhcGxfbGltaXRf dWR3KTsKPiArCj4gKwlpc19lbmFibGVkID0gISEocmVnX3ZhbHVlICYgUEtHX1BXUl9MSU1fMl9F Tik7Cj4gKwo+ICsJcmV0ID0gc3lzZnNfZW1pdChidWYsICIldVxuIiwgaXNfZW5hYmxlZCk7Cj4g Kwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAraTkxNV9wb3dl cjFfY2FwX2VuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAo+ICsJCQkgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiAr CXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOwo+ICsJc3NpemVfdCByZXQ7 Cj4gKwl1MzIgdmFsOwo+ICsJdTMyIGJpdHNfdG9fY2xlYXI7Cj4gKwl1MzIgYml0c190b19zZXQ7 Cj4gKwo+ICsJcmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJYml0c190b19jbGVhciA9IFBLR19QV1JfTElNXzJfRU47Cj4g KwlpZiAoIXZhbCkKPiArCQliaXRzX3RvX3NldCA9IDA7Cj4gKwllbHNlCj4gKwkJYml0c190b19z ZXQgPSBQS0dfUFdSX0xJTV8yX0VOOwo+ICsKPiArCV9sb2NrZWRfd2l0aF9wbV9pbnRlbF91bmNv cmVfcm13KHVuY29yZSwgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdywKPiArCQkJCQkgYml0 c190b19jbGVhciwgYml0c190b19zZXQpOwo+ICsKPiArCXJldHVybiBjb3VudDsKPiArfQo+ICsK PiArc3RhdGljIHNzaXplX3QKPiAraTkxNV9wb3dlcl9kZWZhdWx0X2xpbWl0X3Nob3coc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICAgICAg Y2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gaTkxNS0+aHdt b247Cj4gKwlzc2l6ZV90IHJldDsKPiArCj4gKwlyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgIiV1XG4i LCBod21vbi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4g K30KPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK2k5MTVfcG93ZXJfbWluX2xpbWl0X3Nob3coc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQkJICBj aGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGV2X2dl dF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+ dW5jb3JlOwo+ICsJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gaTkxNS0+aHdtb247Cj4gKwlz c2l6ZV90IHJldDsKPiArCXUzMiB1dmFsOwo+ICsKPiArCS8qCj4gKwkgKiBUaGlzIGlzIGEgNjQt Yml0IHJlZ2lzdGVyIGJ1dCB0aGUgaW5kaXZpZHVhbCBmaWVsZHMgYXJlIHVuZGVyIDMyIGJpdHMK PiArCSAqIGluIHNpemUgZXZlbiBhZnRlciBzY2FsaW5nLgo+ICsJICogVGhlIFVBUEkgc3BlY2lm aWVzIGEgc2l6ZSBvZiAzMiBiaXRzLgo+ICsJICogVGhlIFVBUEkgc3BlY2lmaWVzIHRoYXQgMCBz aG91bGQgYmUgcmV0dXJuZWQgaWYgdW5zdXBwb3J0ZWQuCj4gKwkgKiBTbywgdXNpbmcgdTMyIGFu ZCAldSBpcyBzdWZmaWNpZW50Lgo+ICsJICovCj4gKwlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZCho d21vbi0+cmcucGtnX3Bvd2VyX3NrdSkpCj4gKwkJdXZhbCA9ICh1MzIpX2ZpZWxkX3JlYWQ2NF9h bmRfc2NhbGUodW5jb3JlLAo+ICsJCQkJCQkgICAgaHdtb24tPnJnLnBrZ19wb3dlcl9za3UsCj4g KwkJCQkJCSAgICBQS0dfTUlOX1BXUiwKPiArCQkJCQkJICAgIEZJRUxEX1NISUZUKFBLR19NSU5f UFdSKSwKPiArCQkJCQkJICAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCj4gKwkJCQkJCSAgICBT Rl9QT1dFUik7Cj4gKwllbHNlCj4gKwkJdXZhbCA9IDA7Cj4gKwo+ICsJcmV0ID0gc3lzZnNfZW1p dChidWYsICIldVxuIiwgdXZhbCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIHNzaXplX3QKPiAraTkxNV9wb3dlcl9tYXhfbGltaXRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+ICsJCQkgIGNoYXIgKmJ1ZikKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7Cj4gKwlz dHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5od21vbjsKPiArCXNzaXplX3QgcmV0Owo+ ICsJdTMyIHV2YWw7Cj4gKwo+ICsJLyoKPiArCSAqIFRoaXMgaXMgYSA2NC1iaXQgcmVnaXN0ZXIg YnV0IHRoZSBpbmRpdmlkdWFsIGZpZWxkcyBhcmUgdW5kZXIgMzIgYml0cwo+ICsJICogaW4gc2l6 ZSBldmVuIGFmdGVyIHNjYWxpbmcuCj4gKwkgKiBUaGUgVUFQSSBzcGVjaWZpZXMgYSBzaXplIG9m IDMyIGJpdHMuCj4gKwkgKiBUaGUgVUFQSSBzcGVjaWZpZXMgdGhhdCBVSU5UX01BWCBzaG91bGQg YmUgcmV0dXJuZWQgaWYgdW5zdXBwb3J0ZWQuCj4gKwkgKiBTbywgdXNpbmcgdTMyIGFuZCAldSBp cyBzdWZmaWNpZW50Lgo+ICsJICovCj4gKwlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZChod21vbi0+ cmcucGtnX3Bvd2VyX3NrdSkpCj4gKwkJdXZhbCA9ICh1MzIpX2ZpZWxkX3JlYWQ2NF9hbmRfc2Nh bGUodW5jb3JlLAo+ICsJCQkJCQkgICAgaHdtb24tPnJnLnBrZ19wb3dlcl9za3UsCj4gKwkJCQkJ CSAgICBQS0dfTUFYX1BXUiwKPiArCQkJCQkJICAgIEZJRUxEX1NISUZUKFBLR19NQVhfUFdSKSwK PiArCQkJCQkJICAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCj4gKwkJCQkJCSAgICBTRl9QT1dF Uik7Cj4gKwllbHNlCj4gKwkJdXZhbCA9IFVJTlRfTUFYOwo+ICsKPiArCXJldCA9IHN5c2ZzX2Vt aXQoYnVmLCAiJXVcbiIsIHV2YWwpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocG93ZXIxX21heF9lbmFibGUsIDA0NDQsCj4gKwkJCSAg aTkxNV9wb3dlcjFfbWF4X2VuYWJsZV9zaG93LCBOVUxMLCAwKTsKPiArc3RhdGljIFNFTlNPUl9E RVZJQ0VfQVRUUihwb3dlcjFfbWF4X2ludGVydmFsLCAwNjY0LAo+ICsJCQkgIGk5MTVfcG93ZXIx X21heF9pbnRlcnZhbF9zaG93LAo+ICsJCQkgIGk5MTVfcG93ZXIxX21heF9pbnRlcnZhbF9zdG9y ZSwgMCk7Cj4gK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocG93ZXIxX2NhcF9lbmFibGUsIDA2 NjQsCj4gKwkJCSAgaTkxNV9wb3dlcjFfY2FwX2VuYWJsZV9zaG93LAo+ICsJCQkgIGk5MTVfcG93 ZXIxX2NhcF9lbmFibGVfc3RvcmUsIDApOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHBv d2VyX2RlZmF1bHRfbGltaXQsIDA0NDQsCj4gKwkJCSAgaTkxNV9wb3dlcl9kZWZhdWx0X2xpbWl0 X3Nob3csIE5VTEwsIDApOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHBvd2VyX21pbl9s aW1pdCwgMDQ0NCwKPiArCQkJICBpOTE1X3Bvd2VyX21pbl9saW1pdF9zaG93LCBOVUxMLCAwKTsK PiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwb3dlcl9tYXhfbGltaXQsIDA0NDQsCj4gKwkJ CSAgaTkxNV9wb3dlcl9tYXhfbGltaXRfc2hvdywgTlVMTCwgMCk7Cj4gK3N0YXRpYyBTRU5TT1Jf REVWSUNFX0FUVFIoZW5lcmd5MV9pbnB1dCwgMDQ0NCwKPiArCQkJICBpOTE1X2VuZXJneTFfaW5w dXRfc2hvdywgTlVMTCwgMCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaHdtb25f YXR0cmlidXRlc1tdID0gewo+ICsJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfbWF4X2VuYWJsZS5k ZXZfYXR0ci5hdHRyLAo+ICsJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfbWF4X2ludGVydmFsLmRl dl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyMV9jYXBfZW5hYmxlLmRldl9h dHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX2RlZmF1bHRfbGltaXQuZGV2X2F0 dHIuYXR0ciwKPiArCSZzZW5zb3JfZGV2X2F0dHJfcG93ZXJfbWluX2xpbWl0LmRldl9hdHRyLmF0 dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX21heF9saW1pdC5kZXZfYXR0ci5hdHRyLAo+ ICsJJnNlbnNvcl9kZXZfYXR0cl9lbmVyZ3kxX2lucHV0LmRldl9hdHRyLmF0dHIsCj4gKwlOVUxM Cj4gK307Cj4gKwo+ICtzdGF0aWMgdW1vZGVfdCBod21vbl9hdHRyaWJ1dGVzX3Zpc2libGUoc3Ry dWN0IGtvYmplY3QgKmtvYmosCj4gKwkJCQkJc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgaW50IGlu ZGV4KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4g KwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5od21vbjsKPiArCWk5MTVfcmVnX3Qg cmdhZHI7Cj4gKwo+ICsJaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9lbmVyZ3kxX2lucHV0 LmRldl9hdHRyLmF0dHIpCj4gKwkJcmdhZHIgPSBod21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXM7 Cj4gKwllbHNlIGlmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX21heF9lbmFibGUu ZGV2X2F0dHIuYXR0cikKPiArCQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdDsKPiAr CWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfbWF4X2ludGVydmFsLmRl dl9hdHRyLmF0dHIpCj4gKwkJcmdhZHIgPSBod21vbi0+cmcucGtnX3JhcGxfbGltaXQ7Cj4gKwll bHNlIGlmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX2NhcF9lbmFibGUuZGV2X2F0 dHIuYXR0cikKPiArCQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdF91ZHc7Cj4gKwll bHNlIGlmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcG93ZXJfZGVmYXVsdF9saW1pdC5kZXZf YXR0ci5hdHRyKQo+ICsJCXJnYWRyID0gaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0Owo+ICsJZWxz ZSBpZiAoYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX21pbl9saW1pdC5kZXZfYXR0ci5h dHRyKQo+ICsJCXJldHVybiBhdHRyLT5tb2RlOwo+ICsJZWxzZSBpZiAoYXR0ciA9PSAmc2Vuc29y X2Rldl9hdHRyX3Bvd2VyX21heF9saW1pdC5kZXZfYXR0ci5hdHRyKQo+ICsJCXJldHVybiBhdHRy LT5tb2RlOwo+ICsJZWxzZQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmICghaTkxNV9tbWlvX3Jl Z192YWxpZChyZ2FkcikpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIGF0dHItPm1vZGU7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGh3bW9uX2F0 dHJncm91cCA9IHsKPiArCS5hdHRycyA9IGh3bW9uX2F0dHJpYnV0ZXMsCj4gKwkuaXNfdmlzaWJs ZSA9IGh3bW9uX2F0dHJpYnV0ZXNfdmlzaWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpod21vbl9ncm91cHNbXSA9IHsKPiArCSZod21vbl9hdHRy Z3JvdXAsCj4gKwlOVUxMCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBIV01PTiBTRU5TT1IgVFlQRSA9 IGh3bW9uX3Bvd2VyCj4gKyAqICAtIFN1c3RhaW5lZCBQb3dlciAocG93ZXIxX21heCkKPiArICog IC0gQnVyc3QgcG93ZXIgICAgIChwb3dlcjFfY2FwKQo+ICsgKiAgLSBQZWFrIHBvd2VyICAgICAg KHBvd2VyMV9jcml0KQo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHUzMiBpOTE1X2NvbmZpZ19wb3dl cltdID0gewo+ICsJSFdNT05fUF9DQVAgfCBIV01PTl9QX01BWCwKPiArCTAKPiArfTsKPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hhbm5lbF9pbmZvIGk5MTVfcG93ZXIgPSB7Cj4g KwkudHlwZSA9IGh3bW9uX3Bvd2VyLAo+ICsJLmNvbmZpZyA9IGk5MTVfY29uZmlnX3Bvd2VyLAo+ ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGFubmVsX2luZm8gKmk5MTVf aW5mb1tdID0gewo+ICsJJmk5MTVfcG93ZXIsCj4gKwlOVUxMCj4gK307Cj4gKwo+ICtzdGF0aWMg dW1vZGVfdAo+ICtpOTE1X3Bvd2VyX2lzX3Zpc2libGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIHUzMiBhdHRyLCBpbnQgY2hhbikKPiArewo+ICsJc3RydWN0IGk5MTVfaHdt b24gKmh3bW9uID0gaTkxNS0+aHdtb247Cj4gKwlpOTE1X3JlZ190IHJnYWRyOwo+ICsKPiArCXN3 aXRjaCAoYXR0cikgewo+ICsJY2FzZSBod21vbl9wb3dlcl9tYXg6Cj4gKwkJcmdhZHIgPSBod21v bi0+cmcucGtnX3JhcGxfbGltaXQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIGh3bW9uX3Bvd2VyX2Nh cDoKPiArCQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdF91ZHc7Cj4gKwkJYnJlYWs7 Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWlmICghaTkxNV9tbWlv X3JlZ192YWxpZChyZ2FkcikpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIDA2NjQ7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQKPiAraTkxNV9wb3dlcl9yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCB1MzIgYXR0ciwgaW50IGNoYW4sIGxvbmcgKnZhbCkKPiArewo+ICsJc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiArCXN0cnVjdCBpOTE1 X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJc3dp dGNoIChhdHRyKSB7Cj4gKwljYXNlIGh3bW9uX3Bvd2VyX21heDoKPiArCQkqdmFsID0gKGxvbmcp X2ZpZWxkX3JlYWRfYW5kX3NjYWxlKHVuY29yZSwKPiArCQkJCQkJICAgaHdtb24tPnJnLnBrZ19y YXBsX2xpbWl0LAo+ICsJCQkJCQkgICBQS0dfUFdSX0xJTV8xLAo+ICsJCQkJCQkgICBGSUVMRF9T SElGVChQS0dfUFdSX0xJTV8xKSwKPiArCQkJCQkJICAgaHdtb24tPnNjbF9zaGlmdF9wb3dlciwK PiArCQkJCQkJICAgU0ZfUE9XRVIpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBod21vbl9wb3dlcl9j YXA6Cj4gKwkJKnZhbCA9IChsb25nKV9maWVsZF9yZWFkX2FuZF9zY2FsZSh1bmNvcmUsCj4gKwkJ CQkJCSAgIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdF91ZHcsCj4gKwkJCQkJCSAgIFBLR19QV1Jf TElNXzIsCj4gKwkJCQkJCSAgIEZJRUxEX1NISUZUKFBLR19QV1JfTElNXzIpLAo+ICsJCQkJCQkg ICBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLAo+ICsJCQkJCQkgICBTRl9QT1dFUik7Cj4gKwkJYnJl YWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldCA9IC1FT1BOT1RTVVBQOwo+ICsJfQo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAraTkxNV9wb3dlcl93cml0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIGF0dHIsIGludCBjaGFuLCBsb25nIHZhbCkK PiArewo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiAr CXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOwo+ICsJaW50IHJldCA9IDA7 Cj4gKwo+ICsJc3dpdGNoIChhdHRyKSB7Cj4gKwljYXNlIGh3bW9uX3Bvd2VyX21heDoKPiArCQlf ZmllbGRfc2NhbGVfYW5kX3dyaXRlKHVuY29yZSwKPiArCQkJCSAgICAgICBod21vbi0+cmcucGtn X3JhcGxfbGltaXQsCj4gKwkJCQkgICAgICAgUEtHX1BXUl9MSU1fMSwKPiArCQkJCSAgICAgICBG SUVMRF9TSElGVChQS0dfUFdSX0xJTV8xKSwKPiArCQkJCSAgICAgICBod21vbi0+c2NsX3NoaWZ0 X3Bvd2VyLAo+ICsJCQkJICAgICAgIFNGX1BPV0VSLCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJY2Fz ZSBod21vbl9wb3dlcl9jYXA6Cj4gKwkJX2ZpZWxkX3NjYWxlX2FuZF93cml0ZSh1bmNvcmUsCj4g KwkJCQkgICAgICAgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdywKPiArCQkJCSAgICAgICBQ S0dfUFdSX0xJTV8yLAo+ICsJCQkJICAgICAgIEZJRUxEX1NISUZUKFBLR19QV1JfTElNXzIpLAo+ ICsJCQkJICAgICAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCj4gKwkJCQkgICAgICAgU0ZfUE9X RVIsIHZhbCk7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldCA9IC1FT1BOT1RTVVBQ Owo+ICsJfQo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB1bW9kZV90Cj4g K2k5MTVfaXNfdmlzaWJsZShjb25zdCB2b2lkICpkYXRhLCBlbnVtIGh3bW9uX3NlbnNvcl90eXBl cyB0eXBlLAo+ICsJCXUzMiBhdHRyLCBpbnQgY2hhbm5lbCkKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKilkYXRhOwo+ICsK PiArCXN3aXRjaCAodHlwZSkgewo+ICsJY2FzZSBod21vbl9wb3dlcjoKPiArCQlyZXR1cm4gaTkx NV9wb3dlcl9pc192aXNpYmxlKGk5MTUsIGF0dHIsIGNoYW5uZWwpOwo+ICsJZGVmYXVsdDoKPiAr CQlyZXR1cm4gMDsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtpOTE1X3JlYWQoc3Ry dWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9uX3NlbnNvcl90eXBlcyB0eXBlLCB1MzIgYXR0ciwK PiArCSAgaW50IGNoYW5uZWwsIGxvbmcgKnZhbCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBrZGV2X3RvX2k5MTUoZGV2KTsKPiArCj4gKwlzd2l0Y2ggKHR5cGUpIHsK PiArCWNhc2UgaHdtb25fcG93ZXI6Cj4gKwkJcmV0dXJuIGk5MTVfcG93ZXJfcmVhZChpOTE1LCBh dHRyLCBjaGFubmVsLCB2YWwpOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7 Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAraTkxNV93cml0ZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsIHUzMiBhdHRyLAo+ICsJICAgaW50 IGNoYW5uZWwsIGxvbmcgdmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGtkZXZfdG9faTkxNShkZXYpOwo+ICsKPiArCXN3aXRjaCAodHlwZSkgewo+ICsJY2FzZSBo d21vbl9wb3dlcjoKPiArCQlyZXR1cm4gaTkxNV9wb3dlcl93cml0ZShpOTE1LCBhdHRyLCBjaGFu bmVsLCB2YWwpOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gKwl9Cj4g K30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIGk5MTVfaHdtb25fb3BzID0g ewo+ICsJLmlzX3Zpc2libGUgPSBpOTE1X2lzX3Zpc2libGUsCj4gKwkucmVhZCA9IGk5MTVfcmVh ZCwKPiArCS53cml0ZSA9IGk5MTVfd3JpdGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGh3bW9uX2NoaXBfaW5mbyBpOTE1X2NoaXBfaW5mbyA9IHsKPiArCS5vcHMgPSAmaTkxNV9o d21vbl9vcHMsCj4gKwkuaW5mbyA9IGk5MTVfaW5mbywKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lk Cj4gK2k5MTVfaHdtb25fZ2V0X3ByZXJlZ2lzdHJhdGlvbl9pbmZvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5o d21vbjsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7Cj4g KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCXUzMiB2YWxfc2t1X3VuaXQ7Cj4gKwlfX2xl MzIgbGVfc2t1X3VuaXQ7Cj4gKwo+ICsJaWYgKElTX0RHMShpOTE1KSkgewo+ICsJCWh3bW9uLT5y Zy5wa2dfcG93ZXJfc2t1X3VuaXQgPSBQQ1VfUEFDS0FHRV9QT1dFUl9TS1VfVU5JVDsKPiArCQlo d21vbi0+cmcucGtnX3Bvd2VyX3NrdSA9IFBDVV9QQUNLQUdFX1BPV0VSX1NLVTsKPiArCQlod21v bi0+cmcucGtnX2VuZXJneV9zdGF0dXMgPSBQQ1VfUEFDS0FHRV9FTkVSR1lfU1RBVFVTOwo+ICsJ CWh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCA9IFBDVV9QQUNLQUdFX1JBUExfTElNSVQ7Cj4gKwkJ aHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdyA9IFBDVV9QQUNLQUdFX1JBUExfTElNSVRfVURX Owo+ICsJfSBlbHNlIHsKPiArCQlod21vbi0+cmcucGtnX3Bvd2VyX3NrdV91bml0ID0gSU5WQUxJ RF9NTUlPX1JFRzsKPiArCQlod21vbi0+cmcucGtnX3Bvd2VyX3NrdSA9IElOVkFMSURfTU1JT19S RUc7Cj4gKwkJaHdtb24tPnJnLnBrZ19lbmVyZ3lfc3RhdHVzID0gSU5WQUxJRF9NTUlPX1JFRzsK PiArCQlod21vbi0+cmcucGtnX3JhcGxfbGltaXQgPSBJTlZBTElEX01NSU9fUkVHOwo+ICsJCWh3 bW9uLT5yZy5wa2dfcmFwbF9saW1pdF91ZHcgPSBJTlZBTElEX01NSU9fUkVHOwo+ICsJfQo+ICsK PiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCh1bmNvcmUtPnJwbSk7Cj4gKwo+ICsJ LyoKPiArCSAqIFRoZSBjb250ZW50cyBvZiByZWdpc3RlciBod21vbi0+cmcucGtnX3Bvd2VyX3Nr dV91bml0IGRvIG5vdCBjaGFuZ2UsCj4gKwkgKiBzbyByZWFkIGl0IG9uY2UgYW5kIHN0b3JlIHRo ZSBzaGlmdCB2YWx1ZXMuCj4gKwkgKi8KPiArCWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKGh3bW9u LT5yZy5wa2dfcG93ZXJfc2t1X3VuaXQpKQo+ICsJCXZhbF9za3VfdW5pdCA9IGludGVsX3VuY29y ZV9yZWFkKHVuY29yZSwKPiArCQkJCQkJIGh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1X3VuaXQpOwo+ ICsJZWxzZQo+ICsJCXZhbF9za3VfdW5pdCA9IDA7Cj4gKwo+ICsJaHdtb24tPmVpLmVuZXJneV9j b3VudGVyX292ZXJmbG93ID0gMDsKPiArCj4gKwlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZChod21v bi0+cmcucGtnX2VuZXJneV9zdGF0dXMpKQo+ICsJCWh3bW9uLT5laS5lbmVyZ3lfY291bnRlcl9w cmV2ID0KPiArCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBod21vbi0+cmcucGtnX2VuZXJn eV9zdGF0dXMpOwo+ICsJZWxzZQo+ICsJCWh3bW9uLT5laS5lbmVyZ3lfY291bnRlcl9wcmV2ID0g MDsKPiArCj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dCh1bmNvcmUtPnJwbSwgd2FrZXJlZik7Cj4g Kwo+ICsJbGVfc2t1X3VuaXQgPSBjcHVfdG9fbGUzMih2YWxfc2t1X3VuaXQpOwo+ICsJaHdtb24t PnNjbF9zaGlmdF9wb3dlciA9IGxlMzJfZ2V0X2JpdHMobGVfc2t1X3VuaXQsIFBLR19QV1JfVU5J VCk7Cj4gKwlod21vbi0+c2NsX3NoaWZ0X2VuZXJneSA9IGxlMzJfZ2V0X2JpdHMobGVfc2t1X3Vu aXQsIFBLR19FTkVSR1lfVU5JVCk7Cj4gKwlod21vbi0+c2NsX3NoaWZ0X3RpbWUgPSBsZTMyX2dl dF9iaXRzKGxlX3NrdV91bml0LCBQS0dfVElNRV9VTklUKTsKPiArCj4gKwkvKgo+ICsJICogVGhl cmUgaXMgbm8gZGlyZWN0IHdheSB0byBvYnRhaW4gdGhlIHBvd2VyIGRlZmF1bHRfbGltaXQuCj4g KwkgKiBUaGUgYmVzdCBrbm93biB3b3JrYXJvdW5kIGlzIHRvIHVzZSB0aGUgaW5pdGlhbCB2YWx1 ZSBvZiBwb3dlcjFfbWF4Lgo+ICsJICoKPiArCSAqIFRoZSB2YWx1ZSBvZiBwb3dlcjFfbWF4IGlz IHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9uIHJlYm9vdCwgYnV0IGlzCj4gKwkgKiBub3QgcmVzZXQg YnkgYSBtb2R1bGUgdW5sb2FkL2xvYWQgc2VxdWVuY2UuICBUbyBhbGxvdyBwcm9wZXIKPiArCSAq IGZ1bmN0aW9uaW5nIGFmdGVyIGEgbW9kdWxlIHJlbG9hZCwgdGhlIHZhbHVlIGZvciBwb3dlcjFf bWF4IGlzCj4gKwkgKiByZXN0b3JlZCB0byBpdHMgb3JpZ2luYWwgdmFsdWUgYXQgbW9kdWxlIHVu bG9hZCB0aW1lIGluCj4gKwkgKiBpOTE1X2h3bW9uX3VucmVnaXN0ZXIoKS4KPiArCSAqLwo+ICsJ aHdtb24tPnBvd2VyX21heF9pbml0aWFsX3ZhbHVlID0KPiArCQkodTMyKV9maWVsZF9yZWFkX2Fu ZF9zY2FsZSh1bmNvcmUsCj4gKwkJCQkJICAgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0LAo+ICsJ CQkJCSAgIFBLR19QV1JfTElNXzEsCj4gKwkJCQkJICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1f MSksCj4gKwkJCQkJICAgaHdtb24tPnNjbF9zaGlmdF9wb3dlciwgU0ZfUE9XRVIpOwo+ICt9Cj4g Kwo+ICt2b2lkIGk5MTVfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGk5MTUtPmRybS5kZXY7Cj4gKwlzdHJ1 Y3QgaTkxNV9od21vbiAqaHdtb247Cj4gKwlzdHJ1Y3QgZGV2aWNlICpod21vbl9kZXY7Cj4gKwo+ ICsJaHdtb24gPSBremFsbG9jKHNpemVvZigqaHdtb24pLCBHRlBfS0VSTkVMKTsKPiArCWlmICgh aHdtb24pCj4gKwkJcmV0dXJuOwo+ICsKPiArCWk5MTUtPmh3bW9uID0gaHdtb247Cj4gKwo+ICsJ bXV0ZXhfaW5pdCgmaHdtb24tPmh3bW9uX2xvY2spOwo+ICsKPiArCWk5MTVfaHdtb25fZ2V0X3By ZXJlZ2lzdHJhdGlvbl9pbmZvKGk5MTUpOwo+ICsKPiArCWh3bW9uX2RldiA9IGh3bW9uX2Rldmlj ZV9yZWdpc3Rlcl93aXRoX2luZm8oZGV2LCAiaTkxNSIsCj4gKwkJCQkJCSAgICBpOTE1LAo+ICsJ CQkJCQkgICAgJmk5MTVfY2hpcF9pbmZvLAo+ICsJCQkJCQkgICAgaHdtb25fZ3JvdXBzKTsKPiAr Cj4gKwlpZiAoSVNfRVJSKGh3bW9uX2RldikpIHsKPiArCQltdXRleF9kZXN0cm95KCZod21vbi0+ aHdtb25fbG9jayk7Cj4gKwkJaTkxNS0+aHdtb24gPSBOVUxMOwo+ICsJCWtmcmVlKGh3bW9uKTsK PiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJaHdtb24tPmRldiA9IGh3bW9uX2RldjsKPiArfQo+ ICsKPiArdm9pZCBpOTE1X2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbjsKPiArCj4gKwlod21vbiA9 IGZldGNoX2FuZF96ZXJvKCZpOTE1LT5od21vbik7Cj4gKwlpZiAoIWh3bW9uKQo+ICsJCXJldHVy bjsKPiArCj4gKwlpZiAoaHdtb24tPnBvd2VyX21heF9pbml0aWFsX3ZhbHVlKSB7Cj4gKwkJLyog UmVzdG9yZSBwb3dlcjFfbWF4LiAqLwo+ICsJCV9maWVsZF9zY2FsZV9hbmRfd3JpdGUoJmk5MTUt PnVuY29yZSwgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0LAo+ICsJCQkJICAgICAgIFBLR19QV1Jf TElNXzEsCj4gKwkJCQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMSksCj4gKwkJCQkg ICAgICAgaHdtb24tPnNjbF9zaGlmdF9wb3dlciwKPiArCQkJCSAgICAgICBTRl9QT1dFUiwKPiAr CQkJCSAgICAgICBod21vbi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpOwo+ICsJfQo+ICsKPiAr CWlmIChod21vbi0+ZGV2KQo+ICsJCWh3bW9uX2RldmljZV91bnJlZ2lzdGVyKGh3bW9uLT5kZXYp Owo+ICsKPiArCW11dGV4X2Rlc3Ryb3koJmh3bW9uLT5od21vbl9sb2NrKTsKPiArCj4gKwlrZnJl ZShod21vbik7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9o d21vbi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9od21vbi5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5kNGE1YmI0ZTkyNGY0Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uaAo+IEBAIC0wLDAg KzEsNDkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwo+ICsKPiArLyoK PiArICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsj aWZuZGVmIF9fSU5URUxfSFdNT05fSF9fCj4gKyNkZWZpbmUgX19JTlRFTF9IV01PTl9IX18KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4K PiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsjaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiAr Cj4gK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ICsKPiArc3RydWN0IGk5MTVfaHdtb25fcmVn IHsKPiArCWk5MTVfcmVnX3QgcGtnX3Bvd2VyX3NrdV91bml0Owo+ICsJaTkxNV9yZWdfdCBwa2df cG93ZXJfc2t1Owo+ICsJaTkxNV9yZWdfdCBwa2dfZW5lcmd5X3N0YXR1czsKPiArCWk5MTVfcmVn X3QgcGtnX3JhcGxfbGltaXQ7Cj4gKwlpOTE1X3JlZ190IHBrZ19yYXBsX2xpbWl0X3VkdzsKPiAr fTsKPiArCj4gK3N0cnVjdCBpOTE1X2VuZXJneV9pbmZvIHsKPiArCXUzMiBlbmVyZ3lfY291bnRl cl9vdmVyZmxvdzsKPiArCXUzMiBlbmVyZ3lfY291bnRlcl9wcmV2Owo+ICt9Owo+ICsKPiArc3Ry dWN0IGk5MTVfaHdtb24gewo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsKPiArCXN0cnVjdCBp OTE1X2VuZXJneV9pbmZvIGVpOwo+ICsKPiArCXN0cnVjdCBtdXRleCBod21vbl9sb2NrOwkvKiBj b3VudGVyIG92ZXJmbG93IGxvZ2ljIGFuZCBybXcgKi8KPiArCj4gKwlzdHJ1Y3QgaTkxNV9od21v bl9yZWcgcmc7Cj4gKwo+ICsJdTMyIHBvd2VyX21heF9pbml0aWFsX3ZhbHVlOwo+ICsKPiArCWlu dCBzY2xfc2hpZnRfcG93ZXI7Cj4gKwlpbnQgc2NsX3NoaWZ0X2VuZXJneTsKPiArCWludCBzY2xf c2hpZnRfdGltZTsKPiArfTsKPiArCj4gK3ZvaWQgaTkxNV9od21vbl9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3ZvaWQgaTkxNV9od21vbl91bnJlZ2lzdGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+IGluZGV4IDk1NTAyNzc5OWQxZGUuLmY2MjUxMDA3NGFlNmEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNDA4OSw2ICs0MDg5LDU4IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQo+ICAgI2RlZmluZSBC WFRfUlBfU1RBVEVfQ0FQICAgICAgICBfTU1JTygweDEzODE3MCkKPiAgICNkZWZpbmUgR0VOOV9S UF9TVEFURV9MSU1JVFMJX01NSU8oMHgxMzgxNDgpCj4gICAKPiArLyogREcxICovCj4gKwo+ICsv KiBiYXNlZCBvbiBNQ0hCQVJfTUlSUk9SX0JBU0VfU05CID09IDB4MTQwMDAwICovCj4gKyNkZWZp bmUgUENVX1BBQ0tBR0VfUE9XRVJfU0tVX1VOSVQJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NO QiArIDB4NTkzOCkKPiArI2RlZmluZSBQQ1VfUEFDS0FHRV9FTkVSR1lfU1RBVFVTCV9NTUlPKE1D SEJBUl9NSVJST1JfQkFTRV9TTkIgKyAweDU5M2MpCj4gKyNkZWZpbmUgUENVX1BBQ0tBR0VfUkFQ TF9MSU1JVAkJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiArIDB4NTlhMCkKPiArI2RlZmlu ZSBQQ1VfUEFDS0FHRV9SQVBMX0xJTUlUX1VEVwlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05C ICsgMHg1OWE0KQo+ICsjZGVmaW5lIFBDVV9QQUNLQUdFX1BPV0VSX1NLVQkJSU5WQUxJRF9NTUlP X1JFRwo+ICsKPiArLyogRmllbGRzIGZvciAqX1BBQ0tBR0VfUkFQTF9MSU1JVDogKi8KPiArI2Rl ZmluZSAgIFBLR19QV1JfTElNXzEJCQlSRUdfR0VOTUFTSygxNCwgMCkKPiArI2RlZmluZSAgIFBL R19QV1JfTElNXzFfRU4JCVJFR19CSVQoMTUpCj4gKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8xX1RJ TUUJCVJFR19HRU5NQVNLKDIzLCAxNykKPiArCj4gKy8qCj4gKyAqIEZpZWxkcyBmb3IgKl9QQUNL QUdFX1JBUExfTElNSVRfVURXOgo+ICsgKiBJbiBkb2NzLCB0aGVzZSBmaWVsZHMgbWF5IGJlIGRl ZmluZWQgcmVsYXRpdmUgdG8gdGhlIGVudGlyZSA2NC1iaXQKPiArICogcmVnaXN0ZXIsIGJ1dCBo ZXJlIHRoZXkgYXJlIGRlZmluZWQgcmVsYXRpdmUgdG8gdGhlIDMyLWJpdCBib3VuZGFyeS4KPiAr ICovCj4gKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8yCQkJUkVHX0dFTk1BU0soMTQsIDApCS8vIDQ2 OjMyCj4gKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8yX0VOCQlSRUdfQklUKDE1KQkJLy8gNDc6NDcK PiArI2RlZmluZSAgIFBLR19QV1JfTElNXzJfVElNRQkJUkVHX0dFTk1BU0soMjMsIDE3KQkvLyA1 NTo0OQo+ICsKPiArLyoKPiArICogKl9QQUNLQUdFX1BPV0VSX1NLVV9VTklUIC0gZmllbGRzIHNw ZWNpZnlpbmcgc2NhbGluZyBmb3IgUENVIHF1YW50aXRpZXMuCj4gKyAqIC0gUEtHX1BXUl9VTklU IC0gUG93ZXIgVW5pdHMgdXNlZCBmb3IgcG93ZXIgY29udHJvbCByZWdpc3RlcnMuIFRoZQo+ICsg KiAgIGFjdHVhbCB1bml0IHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgMSBXIC8gUG93ZXIoMixQS0df UFdSX1VOSVQpLgo+ICsgKiAtIFBLR19FTkVSR1lfVU5JVCAtIEVuZXJneSBVbml0cyB1c2VkIGZv ciBwb3dlciBjb250cm9sIHJlZ2lzdGVycy4gVGhlCj4gKyAqICAgYWN0dWFsIHVuaXQgdmFsdWUg aXMgY2FsY3VsYXRlZCBieSAxIEogLyBQb3dlcigyLFBLR19FTkVSR1lfVU5JVCkuCj4gKyAqIC0g UEtHX1RJTUVfVU5JVCAtIFRpbWUgVW5pdHMgdXNlZCBmb3IgcG93ZXIgY29udHJvbCByZWdpc3Rl cnMuIFRoZQo+ICsgKiAgIGFjdHVhbCB1bml0IHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgMSBzIC8g UG93ZXIoMixQS0dfVElNRV9VTklUKS4KPiArICovCj4gKyNkZWZpbmUgICBQS0dfUFdSX1VOSVQJ CQlSRUdfR0VOTUFTSygzLCAwKQo+ICsjZGVmaW5lICAgUEtHX0VORVJHWV9VTklUCQlSRUdfR0VO TUFTSygxMiwgOCkKPiArI2RlZmluZSAgIFBLR19USU1FX1VOSVQJCQlSRUdfR0VOTUFTSygxOSwg MTYpCj4gKwo+ICsvKgo+ICsgKiAqX1BBQ0tBR0VfUE9XRVJfU0tVIC0gU0tVIHBvd2VyIGFuZCB0 aW1pbmcgcGFyYW1ldGVycy4KPiArICogVXNlZCBoZXJlaW4gYXMgYSA2NC1iaXQgYml0IHJlZ2lz dGVyLgo+ICsgKiBUaGVzZSBtYXNrcyBhcmUgZGVmaW5lZCB1c2luZyBHRU5NQVNLX1VMTCBhcyBS RUdfR0VOTUFTSyBpcyBsaW1pdGVkIHRvIHUzMgo+ICsgKiBhbmQgYXMgR0VOTUFTSyBpcyAibG9u ZyIgYW5kIHRoZXJlZm9yZSAzMi1iaXRzIG9uIGEgMzItYml0IHN5c3RlbS4KPiArICogUEtHX1BL R19URFAsIFBLR19NSU5fUFdSLCBhbmQgUEtHX01BWF9QV1IgYXJlIHNjYWxlZCBpbiB0aGUgc2Ft ZSB3YXkgYXMKPiArICogUEtHX1BXUl9MSU1fKiwgYWJvdmUuCj4gKyAqIFBLR19NQVhfV0lOIGhh cyBzdWItZmllbGRzIGZvciB4IGFuZCB5LCBhbmQgaGFzIHRoZSB2YWx1ZTogaXMgMS54ICogMl55 Lgo+ICsgKi8KPiArI2RlZmluZSAgIFBLR19QS0dfVERQCQkJR0VOTUFTS19VTEwoMTQsIDApCj4g KyNkZWZpbmUgICBQS0dfTUlOX1BXUgkJCUdFTk1BU0tfVUxMKDMwLCAxNikKPiArI2RlZmluZSAg IFBLR19NQVhfUFdSCQkJR0VOTUFTS19VTEwoNDYsIDMyKQo+ICsjZGVmaW5lICAgUEtHX01BWF9X SU4JCQlHRU5NQVNLX1VMTCg1NCwgNDgpCj4gKyNkZWZpbmUgICAgIFBLR19NQVhfV0lOX1kJCUdF Tk1BU0tfVUxMKDU0LCA1MykKPiArI2RlZmluZSAgICAgUEtHX01BWF9XSU5fWAkJR0VOTUFTS19V TEwoNTIsIDQ4KQo+ICsKPiAgIC8qCj4gICAgKiBMb2dpY2FsIENvbnRleHQgcmVncwo+ICAgICov CgpMb29rcyBnb29kIHRvIG1lLiBJZiB0aGUgQ0kgZmFpbHVyZXMgYXJlIG5vdCByZWxhdGVkIHRv IHRoZSBwYXRjaCAKY2hhbmdlcyB0aGVuOwoKUmV2aWV3ZWQtYnk6IFN1amFyaXRoYSBTdW5kYXJl c2FuIDxzdWphcml0aGEuc3VuZGFyZXNhbkBpbnRlbC5jb20+CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK