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=-10.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3273C433E0 for ; Tue, 4 Aug 2020 03:12:22 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 7C9922075D for ; Tue, 4 Aug 2020 03:12:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7C9922075D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zhaoxin.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 1CFB787A1D; Tue, 4 Aug 2020 03:12:22 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ix2l2n9nK95I; Tue, 4 Aug 2020 03:12:20 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by hemlock.osuosl.org (Postfix) with ESMTP id BE6B886727; Tue, 4 Aug 2020 03:12:20 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 943FEC0051; Tue, 4 Aug 2020 03:12:20 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id D5935C004C for ; Tue, 4 Aug 2020 03:12:18 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id CB15487447 for ; Tue, 4 Aug 2020 03:12:18 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MNSzD4rAlelJ for ; Tue, 4 Aug 2020 03:12:16 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from ZXSHCAS2.zhaoxin.com (unknown [203.148.12.82]) by hemlock.osuosl.org (Postfix) with ESMTPS id 453C686727 for ; Tue, 4 Aug 2020 03:12:13 +0000 (UTC) Received: from zxbjmbx3.zhaoxin.com (10.29.252.165) by ZXSHCAS2.zhaoxin.com (10.28.252.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 4 Aug 2020 11:11:58 +0800 Received: from zxbjmbx1.zhaoxin.com (10.29.252.163) by zxbjmbx3.zhaoxin.com (10.29.252.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 4 Aug 2020 11:11:57 +0800 Received: from zxbjmbx1.zhaoxin.com ([fe80::290a:f538:51e7:1416]) by zxbjmbx1.zhaoxin.com ([fe80::290a:f538:51e7:1416%16]) with mapi id 15.01.1979.003; Tue, 4 Aug 2020 11:11:57 +0800 From: FelixCui-oc To: Lu Baolu , Joerg Roedel , "iommu@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "David Woodhouse" Subject: =?utf-8?B?562U5aSNOiDnrZTlpI06IOetlOWkjTog562U5aSNOiBbUEFUQ0hdIGlvbW11?= =?utf-8?Q?/vt-d:Add_support_for_ACPI_device_in_RMRR?= Thread-Topic: =?utf-8?B?562U5aSNOiDnrZTlpI06IOetlOWkjTogW1BBVENIXSBpb21tdS92dC1kOkFk?= =?utf-8?Q?d_support_for_ACPI_device_in_RMRR?= Thread-Index: AQHWaLTDQmhhOccXwUmx3ozYFRtFBKklJPeAgACMEUD//7NFgIAAiuzg//+YlYCAAIpwQIAADhiQgACAoQCAAJyo4A== Date: Tue, 4 Aug 2020 03:11:57 +0000 Message-ID: References: <20200802100735.2722-1-FelixCui-oc@zhaoxin.com> <73d4a1e4-f6b7-efb0-e225-2e462c838657@linux.intel.com> <9f64d9b6-16e8-73ce-2186-9d8ba49c39f4@linux.intel.com> <44ff8f73fa1f49a183a1d8d6d9c2213c@zhaoxin.com> <314679b4-7653-041b-9310-73baf8117766@linux.intel.com> <1aea042a1b524ef88e491ca2a6d95fb7@zhaoxin.com> <36da53a6-00e2-1be1-91b5-d90906a6199f@linux.intel.com> In-Reply-To: <36da53a6-00e2-1be1-91b5-d90906a6199f@linux.intel.com> Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.29.8.19] MIME-Version: 1.0 Cc: CobeChen-oc X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" SGkgIGJhb2x1ICwNCgkJV2hlbiBjcmVhdGluZyBhIGlkZW50aXR5IG1hcHBpbmcgZm9yIGEgbmFt ZXNwYWNlIGRldmljZSBpbiBSTVJSLCB5b3UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBkZXZp Y2UgdG8gdGhlIHJtcnItPmRldmljZVtdICwgcmlnaHQ/DQoJCVRoZSBkbWFyX2FjcGlfYnVzX2Fk ZF9kZXYoKSBpbiBwYXRjaCBhZGRzIHRoZSBlbnVtZXJhdGlvbiBvZiB0aGUgbmFtZXNwYWNlIGRl dmljZSBpbiBSTVJSLiBUaGlzIGlzIHNpbWlsYXIgdG8gDQplbnVtZXJhdGluZyBwY2kgZGV2aWNl cy4gRG8geW91IHRoaW5rIHRoaXMgaXMgdW5yZWFzb25hYmxlPyBJZiBpdCBpcyB1bnJlYXNvbmFi bGUsIHBsZWFzZSB0ZWxsIG1lIHdoeSBpdCBpcyB1bnJlYXNvbmFibGUuDQoJCQkNCkJlc3QgcmVn YXJkcw0KRmVsaXggY3VpLW9jDQoNCg0KDQotLS0tLemCruS7tuWOn+S7ti0tLS0tDQrlj5Hku7bk uro6IEx1IEJhb2x1IDxiYW9sdS5sdUBsaW51eC5pbnRlbC5jb20+IA0K5Y+R6YCB5pe26Ze0OiAy MDIw5bm0OOaciDTml6UgOToxMg0K5pS25Lu25Lq6OiBGZWxpeEN1aS1vYyA8RmVsaXhDdWktb2NA emhhb3hpbi5jb20+OyBKb2VyZyBSb2VkZWwgPGpvcm9AOGJ5dGVzLm9yZz47IGlvbW11QGxpc3Rz LmxpbnV4LWZvdW5kYXRpb24ub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBEYXZp ZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+DQrmioTpgIE6IGJhb2x1Lmx1QGxpbnV4 LmludGVsLmNvbTsgUmF5bW9uZFBhbmctb2MgPFJheW1vbmRQYW5nLW9jQHpoYW94aW4uY29tPjsg Q29iZUNoZW4tb2MgPENvYmVDaGVuLW9jQHpoYW94aW4uY29tPg0K5Li76aKYOiBSZTog562U5aSN OiDnrZTlpI06IOetlOWkjTogW1BBVENIXSBpb21tdS92dC1kOkFkZCBzdXBwb3J0IGZvciBBQ1BJ IGRldmljZSBpbiBSTVJSDQoNCkhpIEZlbGl4LA0KDQpPbiAyMDIwLzgvMyAxNzo0MSwgRmVsaXhD dWktb2Mgd3JvdGU6DQo+IEhpIGJhb2x1LA0KPiAJCSBkbWFyX2FjcGlfZGV2X3Njb3BlX2luaXQo KSBwYXJzZSBBTkREIHN0cnVjdHVyZSBhbmQgZW51bWVyYXRlZCBuYW1lc3BhY2VzIGRldmljZSBp biBEUkhELg0KDQpZZXMuDQoNCj4gCQkgQnV0IHRoZSBuYW1lc3BhY2UgZGV2aWNlIGluIFJNUlIg aXMgbm90IGVudW1lcmF0ZWQsIHJpZ2h0Pw0KDQpJdCBzaG91bGQgYmUgcHJvYmVkIGluIHByb2Jl X2FjcGlfbmFtZXNwYWNlX2RldmljZXMoKS4NCg0KQmVzdCByZWdhcmRzLA0KYmFvbHUNCg0KPiAN Cj4gQmVzdCByZWdhcmRzDQo+IEZlbGl4IGN1aS1vYw0KPiANCj4gDQo+IA0KPiANCj4gLS0tLS3p gq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IEZlbGl4Q3VpLW9jDQo+IOWPkemAgeaXtumX tDogMjAyMOW5tDjmnIgz5pelIDE3OjAyDQo+IOaUtuS7tuS6ujogJ0x1IEJhb2x1JyA8YmFvbHUu bHVAbGludXguaW50ZWwuY29tPjsgSm9lcmcgUm9lZGVsIA0KPiA8am9yb0A4Ynl0ZXMub3JnPjsg aW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmc7IA0KPiBsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnOyBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+DQo+IOaKhOmA gTogUmF5bW9uZFBhbmctb2MgPFJheW1vbmRQYW5nLW9jQHpoYW94aW4uY29tPjsgQ29iZUNoZW4t b2MgDQo+IDxDb2JlQ2hlbi1vY0B6aGFveGluLmNvbT4NCj4g5Li76aKYOiDnrZTlpI06IOetlOWk jTog562U5aSNOiBbUEFUQ0hdIGlvbW11L3Z0LWQ6QWRkIHN1cHBvcnQgZm9yIEFDUEkgZGV2aWNl IGluIFJNUlINCj4gDQo+IEhpICBiYW9sdToNCj4gCQkiVGhlIG5hbWVzcGFjZSBkZXZpY2VzIGFy ZSBlbnVtZXJhdGVkIGluIHByb2JlX2FjcGlfbmFtZXNwYWNlX2RldmljZXMoKS4NCj4gCQlJdCBj YWxscyBpb21tdV9wcm9iZV9kZXZpY2UoKSB0byBwcm9jZXNzIHRoZSBlbnVtZXJhdGlvbiBhbmQg c2V0dXAgdGhlIGlkZW50aXR5IG1hcHBpbmdzLiINCj4gCQkNCj4gCQlUaGlzIHNpdHVhdGlvbiBv bmx5IGFwcGxpZXMgdG8gdGhlIHBoeXNpY2FsIG5vZGUgb2YgdGhlIG5hbWVzcGFjZXMgZGV2aWNl IGFzIHRoZSBwY2kgZGV2aWNlLg0KPiAJCUluIGZhY3QsIHRoZSBwaHlzaWNhbCBub2RlIG9mIHRo ZSBuYW1lc3BhY2VzIGRldmljZSBjYW4gYmUgYSBwbGF0Zm9ybSBkZXZpY2Ugb3IgTlVMTC4NCj4g CQlJZiB0aGUgcGh5c2ljYWwgbm9kZSBvZiB0aGUgbmFtZXNwYWNlcyBpcyBhIHBsYXRmb3JtIGRl dmljZSBvciBOVUxMLCBpdCBoYXMgbm90IGFjdHVhbGx5IGJlZW4gZW51bWVyYXRlZC4NCj4gCQlT byBpdCBpcyBuZWNlc3NhcnkgdG8gaW5jcmVhc2UgdGhlIGFuYWx5c2lzIG9mIHRoZSBuYW1lc3Bh Y2VzIGRldmljZSBpbiBSTVJSIGFuZCBlc3RhYmxpc2ggYW4gaWRlbnRpdHkgbWFwcGluZy4NCj4g DQo+IEJlc3QgcmVnYXJkcw0KPiBGZWxpeCBjdWkNCj4gDQo+IA0KPiANCj4gDQo+IC0tLS0t6YKu 5Lu25Y6f5Lu2LS0tLS0NCj4g5Y+R5Lu25Lq6OiBMdSBCYW9sdSA8YmFvbHUubHVAbGludXguaW50 ZWwuY29tPg0KPiDlj5HpgIHml7bpl7Q6IDIwMjDlubQ45pyIM+aXpSAxNjoyNg0KPiDmlLbku7bk uro6IEZlbGl4Q3VpLW9jIDxGZWxpeEN1aS1vY0B6aGFveGluLmNvbT47IEpvZXJnIFJvZWRlbCAN Cj4gPGpvcm9AOGJ5dGVzLm9yZz47IGlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnOyAN Cj4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgRGF2aWQgV29vZGhvdXNlIDxkd213MkBp bmZyYWRlYWQub3JnPg0KPiDmioTpgIE6IGJhb2x1Lmx1QGxpbnV4LmludGVsLmNvbTsgUmF5bW9u ZFBhbmctb2MgDQo+IDxSYXltb25kUGFuZy1vY0B6aGFveGluLmNvbT47IENvYmVDaGVuLW9jIDxD b2JlQ2hlbi1vY0B6aGFveGluLmNvbT4NCj4g5Li76aKYOiBSZTog562U5aSNOiDnrZTlpI06IFtQ QVRDSF0gaW9tbXUvdnQtZDpBZGQgc3VwcG9ydCBmb3IgQUNQSSBkZXZpY2UgaW4gUk1SUg0KPiAN Cj4gT24gMjAyMC84LzMgMTQ6NTIsIEZlbGl4Q3VpLW9jIHdyb3RlOg0KPj4gSGkgIGJhb2x1ICwN Cj4+IAkJWWVzICx0aGF0J3MgcmlnaHQuDQo+PiAJCVRoaXMgcGF0Y2ggaXMgdG8gYWNoaWV2ZSBh Y3BpIG5hbWVzcGFjZSBkZXZpY2VzIHRvIGFjY2VzcyB0aGUgUk1SUiByZWdpb24uDQo+IA0KPiBU aGUgbmFtZXNwYWNlIGRldmljZXMgYXJlIGVudW1lcmF0ZWQgaW4gcHJvYmVfYWNwaV9uYW1lc3Bh Y2VfZGV2aWNlcygpLg0KPiBJdCBjYWxscyBpb21tdV9wcm9iZV9kZXZpY2UoKSB0byBwcm9jZXNz IHRoZSBlbnVtZXJhdGlvbiBhbmQgc2V0dXAgdGhlIGlkZW50aXR5IG1hcHBpbmdzLiBDYW4geW91 IHBsZWFzZSBjaGVjayB3aHkgdGhhdCBjb2RlIGRvZXNuJ3Qgd29yayBmb3IgeW91Pw0KPiANCj4g QmVzdCByZWdhcmRzLA0KPiBiYW9sdQ0KPiANCj4+DQo+PiBCZXN0IHJlZ2FyZHMNCj4+IEZlbGl4 IGN1aQ0KPj4NCj4+DQo+Pg0KPj4NCj4+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4+IOWPkeS7 tuS6ujogTHUgQmFvbHUgPGJhb2x1Lmx1QGxpbnV4LmludGVsLmNvbT4NCj4+IOWPkemAgeaXtumX tDogMjAyMOW5tDjmnIgz5pelIDE0OjE5DQo+PiDmlLbku7bkuro6IEZlbGl4Q3VpLW9jIDxGZWxp eEN1aS1vY0B6aGFveGluLmNvbT47IEpvZXJnIFJvZWRlbCANCj4+IDxqb3JvQDhieXRlcy5vcmc+ OyBpb21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZzsgDQo+PiBsaW51eC1rZXJuZWxAdmdl ci5rZXJuZWwub3JnOyBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+DQo+PiDm ioTpgIE6IGJhb2x1Lmx1QGxpbnV4LmludGVsLmNvbTsgUmF5bW9uZFBhbmctb2MgDQo+PiA8UmF5 bW9uZFBhbmctb2NAemhhb3hpbi5jb20+OyBDb2JlQ2hlbi1vYyA8Q29iZUNoZW4tb2NAemhhb3hp bi5jb20+DQo+PiDkuLvpopg6IFJlOiDnrZTlpI06IFtQQVRDSF0gaW9tbXUvdnQtZDpBZGQgc3Vw cG9ydCBmb3IgQUNQSSBkZXZpY2UgaW4gUk1SUg0KPj4NCj4+IEhpLA0KPj4NCj4+IE9uIDIwMjAv OC8zIDEyOjQwLCBGZWxpeEN1aS1vYyB3cm90ZToNCj4+PiBIaSBiYW9sdToNCj4+PiAJCVNvbWUg QUNQSSBkZXZpY2VzIG5lZWQgdG8gaXNzdWUgZG1hIHJlcXVlc3RzIHRvIGFjY2VzcyB0aGUgcmVz ZXJ2ZWQgbWVtb3J5IGFyZWEuDQo+Pj4gCQlTbyBiaW9zIHVzZXMgdGhlIGRldmljZSBzY29wZSB0 eXBlIEFDUElfTkFNRVNQQUNFX0RFVklDRSBpbiBSTVJSIHRvIHJlcG9ydCB0aGVzZSBBQ1BJIGRl dmljZXMuDQo+Pj4gCQlBdCBwcmVzZW50LCB0aGVyZSBpcyBubyBhbmFseXNpcyBpbiB0aGUga2Vy bmVsIHRoYXQgdGhlIGRldmljZSBzY29wZSB0eXBlIGluIFJNUlIgaXMgQUNQSV9OQU1FU1BBQ0Vf REVWSUNFLg0KPj4+IAkJVGhpcyBwYXRjaCBpcyBtYWlubHkgdG8gYWRkIHRoZSBhbmFseXNpcyBv ZiB0aGUgZGV2aWNlIHNjb3BlIHR5cGUgQUNQSV9OQU1FU1BBQ0VfREVWSUNFIGluIFJNUlIgc3Ry dWN0dXJlIGFuZCBlc3RhYmxpc2ggaWRlbnRpdHkgbWFwcGluZyBmb3IgPiB0aGVzZSBBQ1BJIGRl dmljZXMuDQo+Pg0KPj4gU28gdGhlIHByb2JsZW0gaXMgImFsdGhvdWdoIG5hbWVzcGFjZSBkZXZp Y2VzIGluIFJNUlIgaGF2ZSBiZWVuIHBhcnNlZCwgYnV0IHRoZSBpZGVudGl0eSBtYXAgZm9yIHRo b3NlIGRldmljZXMgYXJlbid0IGNyZWF0ZWQuIEFzIHRoZSByZXN1bHQsIHRoZSBuYW1lc3BhY2Ug ZGV2aWNlcyBmYWlsIHRvIGFjY2VzcyB0aGUgUk1SUiByZWdpb24uIg0KPj4NCj4+IERvIEkgdW5k ZXJzdGFuZCBpdCByaWdodD8NCj4+DQo+PiBCZXN0IHJlZ2FyZHMsDQo+PiBiYW9sdQ0KPj4NCj4+ PiBJbiBhZGRpdGlvbiwgc29tZSBuYW1pbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBpbiBwYXRj aCBpbiBvcmRlciB0byBkaXN0aW5ndWlzaCBhY3BpIGRldmljZSBmcm9tIHBjaSBkZXZpY2UuDQo+ Pj4gCQlZb3UgY2FuIHJlZmVyIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0eXBlIGluIDguMy4xIGRl dmljZSBzY29wZSBpbiB2dC1kIHNwZWMuDQo+Pj4NCj4+PiBCZXN0IHJlZ2FyZHMNCj4+PiBGZWxp eEN1aS1vYw0KPj4+DQo+Pj4NCj4+Pg0KPj4+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4+PiDl j5Hku7bkuro6IEx1IEJhb2x1IDxiYW9sdS5sdUBsaW51eC5pbnRlbC5jb20+DQo+Pj4g5Y+R6YCB 5pe26Ze0OiAyMDIw5bm0OOaciDPml6UgMTA6MzINCj4+PiDmlLbku7bkuro6IEZlbGl4Q3VpLW9j IDxGZWxpeEN1aS1vY0B6aGFveGluLmNvbT47IEpvZXJnIFJvZWRlbCANCj4+PiA8am9yb0A4Ynl0 ZXMub3JnPjsgaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmc7IA0KPj4+IGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmc7IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFkLm9y Zz4NCj4+PiDmioTpgIE6IGJhb2x1Lmx1QGxpbnV4LmludGVsLmNvbTsgQ29iZSBDaGVuKEJKLVJE KSANCj4+PiA8Q29iZUNoZW5Aemhhb3hpbi5jb20+OyBSYXltb25kIFBhbmcoQkotUkQpIA0KPj4+ IDxSYXltb25kUGFuZ0B6aGFveGluLmNvbT4NCj4+PiDkuLvpopg6IFJlOiBbUEFUQ0hdIGlvbW11 L3Z0LWQ6QWRkIHN1cHBvcnQgZm9yIEFDUEkgZGV2aWNlIGluIFJNUlINCj4+Pg0KPj4+IEhpLA0K Pj4+DQo+Pj4gT24gOC8yLzIwIDY6MDcgUE0sIEZlbGl4Q3Vpb2Mgd3JvdGU6DQo+Pj4+IFNvbWUg QUNQSSBkZXZpY2VzIHJlcXVpcmUgYWNjZXNzIHRvIHRoZSBzcGVjaWZpZWQgcmVzZXJ2ZWQgbWVt b3J5IA0KPj4+PiByZWdpb24uQklPUyByZXBvcnQgdGhlIHNwZWNpZmllZCByZXNlcnZlZCBtZW1v cnkgcmVnaW9uIHRocm91Z2ggDQo+Pj4+IFJNUlIgc3RydWN0dXJlcy5BZGQgYW5hbHlzaXMgb2Yg QUNQSSBkZXZpY2UgaW4gUk1SUiBhbmQgZXN0YWJsaXNoIA0KPj4+PiBpZGVudGl0eSBtYXBwaW5n IGZvciBBQ1BJIGRldmljZS4NCj4+Pg0KPj4+IENhbiB5b3UgcGxlYXNlIGFkZCBtb3JlIHdvcmRz IGFib3V0IHRoZSBwcm9ibGVtIHlvdSB3YW50IHRvIHNvbHZlPyBEbyB5b3UgbWVhbiBzb21lIFJN UlJzIGFyZSBub3QgZW51bWVyYXRlZCBjb3JyZWN0bHk/IE9yLCBlbnVtZXJhdGVkLCBidXQgbm90 IGlkZW50aXR5IG1hcHBlZD8NCj4+Pg0KPj4+IE5pdDogYWRkIHZlcnNpb24gYW5kIGNoYW5nZSBs b2cgb25jZSB5b3UgcmVmcmVzaGVkIHlvdXIgcGF0Y2guDQo+Pj4NCj4+Pj4NCj4+Pj4gUmVwb3J0 ZWQtYnk6IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPg0KPj4+DQo+Pj4gTm8gbmVl ZCB0byBhZGQgdGhpcy4gVGhlIHByb2JsZW0geW91IHdhbnQgdG8gc29sdmUgdGhyb3VnaCB0aGlz IHBhdGNoIGlzIG5vdCByZXBvcnRlZCBieSBsa3AuDQo+Pj4NCj4+PiBCZXN0IHJlZ2FyZHMsDQo+ Pj4gYmFvbHUNCj4+Pg0KPj4+PiBTaWduZWQtb2ZmLWJ5OiBGZWxpeEN1aW9jIDxGZWxpeEN1aS1v Y0B6aGFveGluLmNvbT4NCj4+Pj4gLS0tDQo+Pj4+ICAgICAgZHJpdmVycy9pb21tdS9pbnRlbC9k bWFyLmMgIHwgNzQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQ0KPj4+PiAg ICAgIGRyaXZlcnMvaW9tbXUvaW50ZWwvaW9tbXUuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysr KystDQo+Pj4+ICAgICAgZHJpdmVycy9pb21tdS9pb21tdS5jICAgICAgIHwgIDYgKysrDQo+Pj4+ ICAgICAgaW5jbHVkZS9saW51eC9kbWFyLmggICAgICAgIHwgMTIgKysrKystDQo+Pj4+ICAgICAg aW5jbHVkZS9saW51eC9pb21tdS5oICAgICAgIHwgIDMgKysNCj4+Pj4gICAgICA1IGZpbGVzIGNo YW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkNCj4+Pj4NCj4+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW50ZWwvZG1hci5jIA0KPj4+PiBiL2RyaXZlcnMvaW9t bXUvaW50ZWwvZG1hci5jIGluZGV4IDkzZTYzNDVmMzQxNC4uMDI0Y2EzOGRiYTEyIA0KPj4+PiAx MDA2NDQNCj4+Pj4gLS0tIGEvZHJpdmVycy9pb21tdS9pbnRlbC9kbWFyLmMNCj4+Pj4gKysrIGIv ZHJpdmVycy9pb21tdS9pbnRlbC9kbWFyLmMNCj4+Pj4gQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0 aWMgYm9vbCBkbWFyX21hdGNoX3BjaV9wYXRoKHN0cnVjdCBkbWFyX3BjaV9ub3RpZnlfaW5mbyAq aW5mbywgaW50IGJ1cywNCj4+Pj4gICAgICB9DQo+Pj4+ICAgICAgDQo+Pj4+ICAgICAgLyogUmV0 dXJuOiA+IDAgaWYgbWF0Y2ggZm91bmQsIDAgaWYgbm8gbWF0Y2ggZm91bmQsIDwgMCBpZiANCj4+ Pj4gZXJyb3IgaGFwcGVucyAqLyAtaW50IGRtYXJfaW5zZXJ0X2Rldl9zY29wZShzdHJ1Y3QgDQo+ Pj4+IGRtYXJfcGNpX25vdGlmeV9pbmZvICppbmZvLA0KPj4+PiAraW50IGRtYXJfcGNpX2luc2Vy dF9kZXZfc2NvcGUoc3RydWN0IGRtYXJfcGNpX25vdGlmeV9pbmZvICppbmZvLA0KPj4+PiAgICAg IAkJCSAgdm9pZCAqc3RhcnQsIHZvaWQqZW5kLCB1MTYgc2VnbWVudCwNCj4+Pj4gICAgICAJCQkg IHN0cnVjdCBkbWFyX2Rldl9zY29wZSAqZGV2aWNlcywNCj4+Pj4gICAgICAJCQkgIGludCBkZXZp Y2VzX2NudCkNCj4+Pj4gQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgaW50IGRtYXJfcGNpX2J1 c19hZGRfZGV2KHN0cnVjdCANCj4+Pj4gZG1hcl9wY2lfbm90aWZ5X2luZm8gKmluZm8pDQo+Pj4+ ICAgICAgDQo+Pj4+ICAgICAgCQlkcmhkID0gY29udGFpbmVyX29mKGRtYXJ1LT5oZHIsDQo+Pj4+ ICAgICAgCQkJCSAgICBzdHJ1Y3QgYWNwaV9kbWFyX2hhcmR3YXJlX3VuaXQsIGhlYWRlcik7DQo+ Pj4+IC0JCXJldCA9IGRtYXJfaW5zZXJ0X2Rldl9zY29wZShpbmZvLCAodm9pZCAqKShkcmhkICsg MSksDQo+Pj4+ICsJCXJldCA9IGRtYXJfcGNpX2luc2VydF9kZXZfc2NvcGUoaW5mbywgKHZvaWQg KikoZHJoZCArIDEpLA0KPj4+PiAgICAgIAkJCQkoKHZvaWQgKilkcmhkKSArIGRyaGQtPmhlYWRl ci5sZW5ndGgsDQo+Pj4+ICAgICAgCQkJCWRtYXJ1LT5zZWdtZW50LA0KPj4+PiAgICAgIAkJCQlk bWFydS0+ZGV2aWNlcywgZG1hcnUtPmRldmljZXNfY250KTsgQEAgLTY5Niw0OCArNjk2LDU2IEBA IA0KPj4+PiBkbWFyX2ZpbmRfbWF0Y2hlZF9kcmhkX3VuaXQoc3RydWN0IHBjaV9kZXYgKmRldikN Cj4+Pj4gICAgICANCj4+Pj4gICAgICAJcmV0dXJuIGRtYXJ1Ow0KPj4+PiAgICAgIH0NCj4+Pj4g LQ0KPj4+PiAtc3RhdGljIHZvaWQgX19pbml0IGRtYXJfYWNwaV9pbnNlcnRfZGV2X3Njb3BlKHU4 IGRldmljZV9udW1iZXIsDQo+Pj4+IC0JCQkJCSAgICAgIHN0cnVjdCBhY3BpX2RldmljZSAqYWRl dikNCj4+Pj4gK2ludCBkbWFyX2FjcGlfaW5zZXJ0X2Rldl9zY29wZSh1OCBkZXZpY2VfbnVtYmVy LA0KPj4+PiArCQkJCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldiwNCj4+Pj4gKwkJCQl2b2lkICpz dGFydCwgdm9pZCAqZW5kLA0KPj4+PiArCQkJCXN0cnVjdCBkbWFyX2Rldl9zY29wZSAqZGV2aWNl cywNCj4+Pj4gKwkJCQlpbnQgZGV2aWNlc19jbnQpDQo+Pj4+ICAgICAgew0KPj4+PiAtCXN0cnVj dCBkbWFyX2RyaGRfdW5pdCAqZG1hcnU7DQo+Pj4+IC0Jc3RydWN0IGFjcGlfZG1hcl9oYXJkd2Fy ZV91bml0ICpkcmhkOw0KPj4+PiAgICAgIAlzdHJ1Y3QgYWNwaV9kbWFyX2RldmljZV9zY29wZSAq c2NvcGU7DQo+Pj4+ICAgICAgCXN0cnVjdCBkZXZpY2UgKnRtcDsNCj4+Pj4gICAgICAJaW50IGk7 DQo+Pj4+ICAgICAgCXN0cnVjdCBhY3BpX2RtYXJfcGNpX3BhdGggKnBhdGg7DQo+Pj4+ICAgICAg DQo+Pj4+ICsJZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCArPSBzY29wZS0+bGVuZ3RoKSB7DQo+ Pj4+ICsJCXNjb3BlID0gc3RhcnQ7DQo+Pj4+ICsJCWlmIChzY29wZS0+ZW50cnlfdHlwZSAhPSBB Q1BJX0RNQVJfU0NPUEVfVFlQRV9OQU1FU1BBQ0UpDQo+Pj4+ICsJCQljb250aW51ZTsNCj4+Pj4g KwkJaWYgKHNjb3BlLT5lbnVtZXJhdGlvbl9pZCAhPSBkZXZpY2VfbnVtYmVyKQ0KPj4+PiArCQkJ Y29udGludWU7DQo+Pj4+ICsJCXBhdGggPSAodm9pZCAqKShzY29wZSArIDEpOw0KPj4+PiArCQlm b3JfZWFjaF9kZXZfc2NvcGUoZGV2aWNlcywgZGV2aWNlc19jbnQsIGksIHRtcCkNCj4+Pj4gKwkJ CWlmICh0bXAgPT0gTlVMTCkgew0KPj4+PiArCQkJCWRldmljZXNbaV0uYnVzID0gc2NvcGUtPmJ1 czsNCj4+Pj4gKwkJCQlkZXZpY2VzW2ldLmRldmZuID0gUENJX0RFVkZOKHBhdGgtPmRldmljZSwg cGF0aC0+ZnVuY3Rpb24pOw0KPj4+PiArCQkJCXJjdV9hc3NpZ25fcG9pbnRlcihkZXZpY2VzW2ld LmRldiwNCj4+Pj4gKwkJCQkJCSAgIGdldF9kZXZpY2UoJmFkZXYtPmRldikpOw0KPj4+PiArCQkJ CXJldHVybiAxOw0KPj4+PiArCQkJfQ0KPj4+PiArCQlXQVJOX09OKGkgPj0gZGV2aWNlc19jbnQp Ow0KPj4+PiArCX0NCj4+Pj4gKwlyZXR1cm4gMDsNCj4+Pj4gK30NCj4+Pj4gK3N0YXRpYyBpbnQg ZG1hcl9hY3BpX2J1c19hZGRfZGV2KHU4IGRldmljZV9udW1iZXIsIHN0cnVjdCANCj4+Pj4gK2Fj cGlfZGV2aWNlDQo+Pj4+ICsqYWRldikgew0KPj4+PiArCXN0cnVjdCBkbWFyX2RyaGRfdW5pdCAq ZG1hcnU7DQo+Pj4+ICsJc3RydWN0IGFjcGlfZG1hcl9oYXJkd2FyZV91bml0ICpkcmhkOw0KPj4+ PiArCWludCByZXQgPSAwOw0KPj4+PiArDQo+Pj4+ICAgICAgCWZvcl9lYWNoX2RyaGRfdW5pdChk bWFydSkgew0KPj4+PiAgICAgIAkJZHJoZCA9IGNvbnRhaW5lcl9vZihkbWFydS0+aGRyLA0KPj4+ PiAgICAgIAkJCQkgICAgc3RydWN0IGFjcGlfZG1hcl9oYXJkd2FyZV91bml0LA0KPj4+PiAgICAg IAkJCQkgICAgaGVhZGVyKTsNCj4+Pj4gKwkJcmV0ID0gZG1hcl9hY3BpX2luc2VydF9kZXZfc2Nv cGUoZGV2aWNlX251bWJlciwgYWRldiwgKHZvaWQgKikoZHJoZCsxKSwNCj4+Pj4gKwkJCQkJCSgo dm9pZCAqKWRyaGQpK2RyaGQtPmhlYWRlci5sZW5ndGgsDQo+Pj4+ICsJCQkJCQlkbWFydS0+ZGV2 aWNlcywgZG1hcnUtPmRldmljZXNfY250KTsNCj4+Pj4gKwkJaWYgKHJldCkNCj4+Pj4gKwkJCWJy ZWFrOw0KPj4+PiArCX0NCj4+Pj4gKwlyZXQgPSBkbWFyX3JtcnJfYWRkX2FjcGlfZGV2KGRldmlj ZV9udW1iZXIsIGFkZXYpOw0KPj4+PiAgICAgIA0KPj4+PiAtCQlmb3IgKHNjb3BlID0gKHZvaWQg KikoZHJoZCArIDEpOw0KPj4+PiAtCQkgICAgICh1bnNpZ25lZCBsb25nKXNjb3BlIDwgKCh1bnNp Z25lZCBsb25nKWRyaGQpICsgZHJoZC0+aGVhZGVyLmxlbmd0aDsNCj4+Pj4gLQkJICAgICBzY29w ZSA9ICgodm9pZCAqKXNjb3BlKSArIHNjb3BlLT5sZW5ndGgpIHsNCj4+Pj4gLQkJCWlmIChzY29w ZS0+ZW50cnlfdHlwZSAhPSBBQ1BJX0RNQVJfU0NPUEVfVFlQRV9OQU1FU1BBQ0UpDQo+Pj4+IC0J CQkJY29udGludWU7DQo+Pj4+IC0JCQlpZiAoc2NvcGUtPmVudW1lcmF0aW9uX2lkICE9IGRldmlj ZV9udW1iZXIpDQo+Pj4+IC0JCQkJY29udGludWU7DQo+Pj4+ICsJcmV0dXJuIHJldDsNCj4+Pj4g ICAgICANCj4+Pj4gLQkJCXBhdGggPSAodm9pZCAqKShzY29wZSArIDEpOw0KPj4+PiAtCQkJcHJf aW5mbygiQUNQSSBkZXZpY2UgXCIlc1wiIHVuZGVyIERNQVIgYXQgJWxseCBhcyAlMDJ4OiUwMngu JWRcbiIsDQo+Pj4+IC0JCQkJZGV2X25hbWUoJmFkZXYtPmRldiksIGRtYXJ1LT5yZWdfYmFzZV9h ZGRyLA0KPj4+PiAtCQkJCXNjb3BlLT5idXMsIHBhdGgtPmRldmljZSwgcGF0aC0+ZnVuY3Rpb24p Ow0KPj4+PiAtCQkJZm9yX2VhY2hfZGV2X3Njb3BlKGRtYXJ1LT5kZXZpY2VzLCBkbWFydS0+ZGV2 aWNlc19jbnQsIGksIHRtcCkNCj4+Pj4gLQkJCQlpZiAodG1wID09IE5VTEwpIHsNCj4+Pj4gLQkJ CQkJZG1hcnUtPmRldmljZXNbaV0uYnVzID0gc2NvcGUtPmJ1czsNCj4+Pj4gLQkJCQkJZG1hcnUt PmRldmljZXNbaV0uZGV2Zm4gPSBQQ0lfREVWRk4ocGF0aC0+ZGV2aWNlLA0KPj4+PiAtCQkJCQkJ CQkJICAgIHBhdGgtPmZ1bmN0aW9uKTsNCj4+Pj4gLQkJCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRt YXJ1LT5kZXZpY2VzW2ldLmRldiwNCj4+Pj4gLQkJCQkJCQkgICBnZXRfZGV2aWNlKCZhZGV2LT5k ZXYpKTsNCj4+Pj4gLQkJCQkJcmV0dXJuOw0KPj4+PiAtCQkJCX0NCj4+Pj4gLQkJCUJVR19PTihp ID49IGRtYXJ1LT5kZXZpY2VzX2NudCk7DQo+Pj4+IC0JCX0NCj4+Pj4gLQl9DQo+Pj4+IC0JcHJf d2FybigiTm8gSU9NTVUgc2NvcGUgZm91bmQgZm9yIEFOREQgZW51bWVyYXRpb24gSUQgJWQgKCVz KVxuIiwNCj4+Pj4gLQkJZGV2aWNlX251bWJlciwgZGV2X25hbWUoJmFkZXYtPmRldikpOw0KPj4+ PiAgICAgIH0NCj4+Pj4gICAgICANCj4+Pj4gICAgICBzdGF0aWMgaW50IF9faW5pdCBkbWFyX2Fj cGlfZGV2X3Njb3BlX2luaXQodm9pZCkgQEAgLTc2Niw3DQo+Pj4+ICs3NzQsNyBAQCBzdGF0aWMg aW50IF9faW5pdCBkbWFyX2FjcGlfZGV2X3Njb3BlX2luaXQodm9pZCkNCj4+Pj4gICAgICAJCQkJ ICAgICAgIGFuZGQtPmRldmljZV9uYW1lKTsNCj4+Pj4gICAgICAJCQkJY29udGludWU7DQo+Pj4+ ICAgICAgCQkJfQ0KPj4+PiAtCQkJZG1hcl9hY3BpX2luc2VydF9kZXZfc2NvcGUoYW5kZC0+ZGV2 aWNlX251bWJlciwgYWRldik7DQo+Pj4+ICsJCQlkbWFyX2FjcGlfYnVzX2FkZF9kZXYoYW5kZC0+ ZGV2aWNlX251bWJlciwgYWRldik7DQo+Pj4+ICAgICAgCQl9DQo+Pj4+ICAgICAgCX0NCj4+Pj4g ICAgICAJcmV0dXJuIDA7DQo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2ludGVsL2lv bW11LmMgDQo+Pj4+IGIvZHJpdmVycy9pb21tdS9pbnRlbC9pb21tdS5jIGluZGV4IGNhNTU3ZDM1 MTUxOC4uYmUxNzkzNDE1MzI2DQo+Pj4+IDEwMDY0NA0KPj4+PiAtLS0gYS9kcml2ZXJzL2lvbW11 L2ludGVsL2lvbW11LmMNCj4+Pj4gKysrIGIvZHJpdmVycy9pb21tdS9pbnRlbC9pb21tdS5jDQo+ Pj4+IEBAIC00NTA3LDYgKzQ1MDcsMjQgQEAgaW50IGRtYXJfZmluZF9tYXRjaGVkX2F0c3JfdW5p dChzdHJ1Y3QNCj4+Pj4gcGNpX2Rldg0KPj4+PiAqZGV2KQ0KPj4+PiAgICAgIA0KPj4+PiAgICAg IAlyZXR1cm4gcmV0Ow0KPj4+PiAgICAgIH0NCj4+Pj4gK2ludCBkbWFyX3JtcnJfYWRkX2FjcGlf ZGV2KHU4IGRldmljZV9udW1iZXIsIHN0cnVjdCBhY3BpX2RldmljZQ0KPj4+PiArKmFkZXYpIHsN Cj4+Pj4gKwlpbnQgcmV0Ow0KPj4+PiArCXN0cnVjdCBkbWFyX3JtcnJfdW5pdCAqcm1ycnU7DQo+ Pj4+ICsJc3RydWN0IGFjcGlfZG1hcl9yZXNlcnZlZF9tZW1vcnkgKnJtcnI7DQo+Pj4+ICsNCj4+ Pj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJtcnJ1LCAmZG1hcl9ybXJyX3VuaXRzLCBsaXN0KSB7 DQo+Pj4+ICsJCXJtcnIgPSBjb250YWluZXJfb2Yocm1ycnUtPmhkciwNCj4+Pj4gKwkJCQlzdHJ1 Y3QgYWNwaV9kbWFyX3Jlc2VydmVkX21lbW9yeSwNCj4+Pj4gKwkJCQloZWFkZXIpOw0KPj4+PiAr CQlyZXQgPSBkbWFyX2FjcGlfaW5zZXJ0X2Rldl9zY29wZShkZXZpY2VfbnVtYmVyLCBhZGV2LCAo dm9pZCAqKShybXJyICsgMSksDQo+Pj4+ICsJCQkJCQkoKHZvaWQgKilybXJyKSArIHJtcnItPmhl YWRlci5sZW5ndGgsDQo+Pj4+ICsJCQkJCQlybXJydS0+ZGV2aWNlcywgcm1ycnUtPmRldmljZXNf Y250KTsNCj4+Pj4gKwkJaWYgKHJldCkNCj4+Pj4gKwkJCWJyZWFrOw0KPj4+PiArCX0NCj4+Pj4g KwlyZXR1cm4gMDsNCj4+Pj4gK30NCj4+Pj4gICAgICANCj4+Pj4gICAgICBpbnQgZG1hcl9pb21t dV9ub3RpZnlfc2NvcGVfZGV2KHN0cnVjdCBkbWFyX3BjaV9ub3RpZnlfaW5mbyAqaW5mbykNCj4+ Pj4gICAgICB7DQo+Pj4+IEBAIC00NTIzLDcgKzQ1NDEsNyBAQCBpbnQgZG1hcl9pb21tdV9ub3Rp Znlfc2NvcGVfZGV2KHN0cnVjdCBkbWFyX3BjaV9ub3RpZnlfaW5mbyAqaW5mbykNCj4+Pj4gICAg ICAJCXJtcnIgPSBjb250YWluZXJfb2Yocm1ycnUtPmhkciwNCj4+Pj4gICAgICAJCQkJICAgIHN0 cnVjdCBhY3BpX2RtYXJfcmVzZXJ2ZWRfbWVtb3J5LCBoZWFkZXIpOw0KPj4+PiAgICAgIAkJaWYg KGluZm8tPmV2ZW50ID09IEJVU19OT1RJRllfQUREX0RFVklDRSkgew0KPj4+PiAtCQkJcmV0ID0g ZG1hcl9pbnNlcnRfZGV2X3Njb3BlKGluZm8sICh2b2lkICopKHJtcnIgKyAxKSwNCj4+Pj4gKwkJ CXJldCA9IGRtYXJfcGNpX2luc2VydF9kZXZfc2NvcGUoaW5mbywgKHZvaWQgKikocm1yciArIDEp LA0KPj4+PiAgICAgIAkJCQkoKHZvaWQgKilybXJyKSArIHJtcnItPmhlYWRlci5sZW5ndGgsDQo+ Pj4+ICAgICAgCQkJCXJtcnItPnNlZ21lbnQsIHJtcnJ1LT5kZXZpY2VzLA0KPj4+PiAgICAgIAkJ CQlybXJydS0+ZGV2aWNlc19jbnQpOw0KPj4+PiBAQCAtNDU0MSw3ICs0NTU5LDcgQEAgaW50IGRt YXJfaW9tbXVfbm90aWZ5X3Njb3BlX2RldihzdHJ1Y3QNCj4+Pj4gZG1hcl9wY2lfbm90aWZ5X2lu Zm8gKmluZm8pDQo+Pj4+ICAgICAgDQo+Pj4+ICAgICAgCQlhdHNyID0gY29udGFpbmVyX29mKGF0 c3J1LT5oZHIsIHN0cnVjdCBhY3BpX2RtYXJfYXRzciwgaGVhZGVyKTsNCj4+Pj4gICAgICAJCWlm IChpbmZvLT5ldmVudCA9PSBCVVNfTk9USUZZX0FERF9ERVZJQ0UpIHsNCj4+Pj4gLQkJCXJldCA9 IGRtYXJfaW5zZXJ0X2Rldl9zY29wZShpbmZvLCAodm9pZCAqKShhdHNyICsgMSksDQo+Pj4+ICsJ CQlyZXQgPSBkbWFyX3BjaV9pbnNlcnRfZGV2X3Njb3BlKGluZm8sICh2b2lkICopKGF0c3IgKyAx KSwNCj4+Pj4gICAgICAJCQkJCSh2b2lkICopYXRzciArIGF0c3ItPmhlYWRlci5sZW5ndGgsDQo+ Pj4+ICAgICAgCQkJCQlhdHNyLT5zZWdtZW50LCBhdHNydS0+ZGV2aWNlcywNCj4+Pj4gICAgICAJ CQkJCWF0c3J1LT5kZXZpY2VzX2NudCk7DQo+Pj4+IEBAIC00Nzc5LDYgKzQ3OTcsMjYgQEAgc3Rh dGljIGludCBfX2luaXQNCj4+Pj4gcGxhdGZvcm1fb3B0aW5fZm9yY2VfaW9tbXUodm9pZCkNCj4+ Pj4gICAgICANCj4+Pj4gICAgICAJcmV0dXJuIDE7DQo+Pj4+ICAgICAgfQ0KPj4+PiArc3RhdGlj IGludCBhY3BpX2RldmljZV9jcmVhdGVfZGlyZWN0X21hcHBpbmdzKHN0cnVjdCBkZXZpY2UgDQo+ Pj4+ICsqcG5fZGV2LCBzdHJ1Y3QgZGV2aWNlICphY3BpX2RldmljZSkgew0KPj4+PiArCWludCBy ZXQ7DQo+Pj4+ICsJc3RydWN0IGlvbW11X2dyb3VwICpncm91cDsNCj4+Pj4gKw0KPj4+PiArCWlm IChwbl9kZXYgPT0gTlVMTCkgew0KPj4+PiArCQlhY3BpX2RldmljZS0+YnVzLT5pb21tdV9vcHMg PSAmaW50ZWxfaW9tbXVfb3BzOw0KPj4+PiArCQlyZXQgPSBpb21tdV9wcm9iZV9kZXZpY2UoYWNw aV9kZXZpY2UpOw0KPj4+PiArCQlpZiAocmV0KSB7DQo+Pj4+ICsJCQlwcl9lcnIoImFjcGlfZGV2 aWNlIHByb2JlIGZhaWwhIHJldDolZFxuIiwgcmV0KTsNCj4+Pj4gKwkJCXJldHVybiByZXQ7DQo+ Pj4+ICsJCX0NCj4+Pj4gKwkJcmV0dXJuIDA7DQo+Pj4+ICsJfQ0KPj4+PiArCWFjcGlfZGV2aWNl LT5idXMtPmlvbW11X29wcyA9ICZpbnRlbF9pb21tdV9vcHM7DQo+Pj4+ICsJZ3JvdXAgPSBpb21t dV9ncm91cF9nZXQocG5fZGV2KTsNCj4+Pj4gKwlfX2FjcGlfZGV2aWNlX2NyZWF0ZV9kaXJlY3Rf bWFwcGluZ3MoZ3JvdXAsIGFjcGlfZGV2aWNlKTsNCj4+Pj4gKw0KPj4+PiArCXJldHVybiAwOw0K Pj4+PiArfQ0KPj4+PiAgICAgIA0KPj4+PiAgICAgIHN0YXRpYyBpbnQgX19pbml0IHByb2JlX2Fj cGlfbmFtZXNwYWNlX2RldmljZXModm9pZCkNCj4+Pj4gICAgICB7DQo+Pj4+IEBAIC00Nzk0LDYg KzQ4MzIsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwcm9iZV9hY3BpX25hbWVzcGFjZV9kZXZpY2Vz KHZvaWQpDQo+Pj4+ICAgICAgCQkJc3RydWN0IGFjcGlfZGV2aWNlX3BoeXNpY2FsX25vZGUgKnBu Ow0KPj4+PiAgICAgIAkJCXN0cnVjdCBpb21tdV9ncm91cCAqZ3JvdXA7DQo+Pj4+ICAgICAgCQkJ c3RydWN0IGFjcGlfZGV2aWNlICphZGV2Ow0KPj4+PiArCQkJc3RydWN0IGRldmljZSAqcG5fZGV2 ID0gTlVMTDsNCj4+Pj4gICAgICANCj4+Pj4gICAgICAJCQlpZiAoZGV2LT5idXMgIT0gJmFjcGlf YnVzX3R5cGUpDQo+Pj4+ICAgICAgCQkJCWNvbnRpbnVlOw0KPj4+PiBAQCAtNDgwNCw2ICs0ODQz LDcgQEAgc3RhdGljIGludCBfX2luaXQgcHJvYmVfYWNwaV9uYW1lc3BhY2VfZGV2aWNlcyh2b2lk KQ0KPj4+PiAgICAgIAkJCQkJICAgICZhZGV2LT5waHlzaWNhbF9ub2RlX2xpc3QsIG5vZGUpIHsN Cj4+Pj4gICAgICAJCQkJZ3JvdXAgPSBpb21tdV9ncm91cF9nZXQocG4tPmRldik7DQo+Pj4+ICAg ICAgCQkJCWlmIChncm91cCkgew0KPj4+PiArCQkJCQlwbl9kZXYgPSBwbi0+ZGV2Ow0KPj4+PiAg ICAgIAkJCQkJaW9tbXVfZ3JvdXBfcHV0KGdyb3VwKTsNCj4+Pj4gICAgICAJCQkJCWNvbnRpbnVl Ow0KPj4+PiAgICAgIAkJCQl9DQo+Pj4+IEBAIC00ODEyLDcgKzQ4NTIsOSBAQCBzdGF0aWMgaW50 IF9faW5pdCBwcm9iZV9hY3BpX25hbWVzcGFjZV9kZXZpY2VzKHZvaWQpDQo+Pj4+ICAgICAgCQkJ CXJldCA9IGlvbW11X3Byb2JlX2RldmljZShwbi0+ZGV2KTsNCj4+Pj4gICAgICAJCQkJaWYgKHJl dCkNCj4+Pj4gICAgICAJCQkJCWJyZWFrOw0KPj4+PiArCQkJCXBuX2RldiA9IHBuLT5kZXY7DQo+ Pj4+ICAgICAgCQkJfQ0KPj4+PiArCQkJcmV0ID0gYWNwaV9kZXZpY2VfY3JlYXRlX2RpcmVjdF9t YXBwaW5ncyhwbl9kZXYsIGRldik7DQo+Pj4+ICAgICAgCQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5w aHlzaWNhbF9ub2RlX2xvY2spOw0KPj4+PiAgICAgIA0KPj4+PiAgICAgIAkJCWlmIChyZXQpDQo+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvbW11LmMgYi9kcml2ZXJzL2lvbW11L2lv bW11LmMgaW5kZXgNCj4+Pj4gNjA5YmQyNWJmMTU0Li40ZjcxNGEyZDVlZjcgMTAwNjQ0DQo+Pj4+ IC0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXUuYw0KPj4+PiArKysgYi9kcml2ZXJzL2lvbW11L2lv bW11LmMNCj4+Pj4gQEAgLTc3OSw2ICs3NzksMTIgQEAgc3RhdGljIGJvb2wgaW9tbXVfaXNfYXR0 YWNoX2RlZmVycmVkKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwNCj4+Pj4gICAgICAJcmV0 dXJuIGZhbHNlOw0KPj4+PiAgICAgIH0NCj4+Pj4gICAgICANCj4+Pj4gK3ZvaWQgIF9fYWNwaV9k ZXZpY2VfY3JlYXRlX2RpcmVjdF9tYXBwaW5ncyhzdHJ1Y3QgaW9tbXVfZ3JvdXAgDQo+Pj4+ICsq Z3JvdXAsIHN0cnVjdCBkZXZpY2UgKmFjcGlfZGV2aWNlKSB7DQo+Pj4+ICsJaW9tbXVfY3JlYXRl X2RldmljZV9kaXJlY3RfbWFwcGluZ3MoZ3JvdXAsIGFjcGlfZGV2aWNlKTsgfSANCj4+Pj4gK0VY UE9SVF9TWU1CT0xfR1BMKF9fYWNwaV9kZXZpY2VfY3JlYXRlX2RpcmVjdF9tYXBwaW5ncyk7DQo+ Pj4+ICsNCj4+Pj4gICAgICAvKioNCj4+Pj4gICAgICAgKiBpb21tdV9ncm91cF9hZGRfZGV2aWNl IC0gYWRkIGEgZGV2aWNlIHRvIGFuIGlvbW11IGdyb3VwDQo+Pj4+ICAgICAgICogQGdyb3VwOiB0 aGUgZ3JvdXAgaW50byB3aGljaCB0byBhZGQgdGhlIGRldmljZSAocmVmZXJlbmNlIA0KPj4+PiBz aG91bGQgYmUgaGVsZCkgZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hci5oIA0KPj4+PiBi L2luY2x1ZGUvbGludXgvZG1hci5oIGluZGV4IDY1NTY1ODIwMzI4YS4uODgxYWM2MWE0MzM2IDEw MDY0NA0KPj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RtYXIuaA0KPj4+PiArKysgYi9pbmNsdWRl L2xpbnV4L2RtYXIuaA0KPj4+PiBAQCAtMTEzLDEwICsxMTMsMTQgQEAgZXh0ZXJuIGludCBkbWFy X3BhcnNlX2Rldl9zY29wZSh2b2lkICpzdGFydCwgdm9pZCAqZW5kLCBpbnQgKmNudCwNCj4+Pj4g ICAgICAJCQkJc3RydWN0IGRtYXJfZGV2X3Njb3BlICoqZGV2aWNlcywgdTE2IHNlZ21lbnQpOw0K Pj4+PiAgICAgIGV4dGVybiB2b2lkICpkbWFyX2FsbG9jX2Rldl9zY29wZSh2b2lkICpzdGFydCwg dm9pZCAqZW5kLCBpbnQgKmNudCk7DQo+Pj4+ICAgICAgZXh0ZXJuIHZvaWQgZG1hcl9mcmVlX2Rl dl9zY29wZShzdHJ1Y3QgZG1hcl9kZXZfc2NvcGUgDQo+Pj4+ICoqZGV2aWNlcywgaW50ICpjbnQp OyAtZXh0ZXJuIGludCBkbWFyX2luc2VydF9kZXZfc2NvcGUoc3RydWN0IA0KPj4+PiBkbWFyX3Bj aV9ub3RpZnlfaW5mbyAqaW5mbywNCj4+Pj4gK2V4dGVybiBpbnQgZG1hcl9wY2lfaW5zZXJ0X2Rl dl9zY29wZShzdHJ1Y3QgZG1hcl9wY2lfbm90aWZ5X2luZm8gDQo+Pj4+ICsqaW5mbywNCj4+Pj4g ICAgICAJCQkJIHZvaWQgKnN0YXJ0LCB2b2lkKmVuZCwgdTE2IHNlZ21lbnQsDQo+Pj4+ICAgICAg CQkJCSBzdHJ1Y3QgZG1hcl9kZXZfc2NvcGUgKmRldmljZXMsDQo+Pj4+ICAgICAgCQkJCSBpbnQg ZGV2aWNlc19jbnQpOw0KPj4+PiArZXh0ZXJuIGludCBkbWFyX2FjcGlfaW5zZXJ0X2Rldl9zY29w ZSh1OCBkZXZpY2VfbnVtYmVyLA0KPj4+PiArCQkJCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldiwg dm9pZCAqc3RhcnQsIHZvaWQgKmVuZCwNCj4+Pj4gKwkJCQlzdHJ1Y3QgZG1hcl9kZXZfc2NvcGUg KmRldmljZXMsIGludCBkZXZpY2VzX2NudCk7DQo+Pj4+ICsNCj4+Pj4gICAgICBleHRlcm4gaW50 IGRtYXJfcmVtb3ZlX2Rldl9zY29wZShzdHJ1Y3QgZG1hcl9wY2lfbm90aWZ5X2luZm8gKmluZm8s DQo+Pj4+ICAgICAgCQkJCSB1MTYgc2VnbWVudCwgc3RydWN0IGRtYXJfZGV2X3Njb3BlICpkZXZp Y2VzLA0KPj4+PiAgICAgIAkJCQkgaW50IGNvdW50KTsNCj4+Pj4gQEAgLTE0MCw2ICsxNDQsNyBA QCBleHRlcm4gaW50IGRtYXJfcGFyc2Vfb25lX2F0c3Ioc3RydWN0IGFjcGlfZG1hcl9oZWFkZXIg KmhlYWRlciwgdm9pZCAqYXJnKTsNCj4+Pj4gICAgICBleHRlcm4gaW50IGRtYXJfY2hlY2tfb25l X2F0c3Ioc3RydWN0IGFjcGlfZG1hcl9oZWFkZXIgKmhkciwgdm9pZCAqYXJnKTsNCj4+Pj4gICAg ICBleHRlcm4gaW50IGRtYXJfcmVsZWFzZV9vbmVfYXRzcihzdHJ1Y3QgYWNwaV9kbWFyX2hlYWRl ciAqaGRyLCB2b2lkICphcmcpOw0KPj4+PiAgICAgIGV4dGVybiBpbnQgZG1hcl9pb21tdV9ob3Rw bHVnKHN0cnVjdCBkbWFyX2RyaGRfdW5pdCAqZG1hcnUsIA0KPj4+PiBib29sIGluc2VydCk7DQo+ Pj4+ICtleHRlcm4gaW50IGRtYXJfcm1ycl9hZGRfYWNwaV9kZXYodTggZGV2aWNlX251bWJlciwg c3RydWN0IA0KPj4+PiArYWNwaV9kZXZpY2UgKmFkZXYpOw0KPj4+PiAgICAgIGV4dGVybiBpbnQg ZG1hcl9pb21tdV9ub3RpZnlfc2NvcGVfZGV2KHN0cnVjdCBkbWFyX3BjaV9ub3RpZnlfaW5mbyAq aW5mbyk7DQo+Pj4+ICAgICAgI2Vsc2UgLyogIUNPTkZJR19JTlRFTF9JT01NVTogKi8NCj4+Pj4g ICAgICBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9pb21tdV9pbml0KHZvaWQpIHsgcmV0dXJuIC1F Tk9ERVY7IH0gDQo+Pj4+IEBADQo+Pj4+IC0xNTAsNiArMTU1LDExIEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBpbnRlbF9pb21tdV9zaHV0ZG93bih2b2lkKSB7IH0NCj4+Pj4gICAgICAjZGVmaW5lCWRt YXJfY2hlY2tfb25lX2F0c3IJCWRtYXJfcmVzX25vb3ANCj4+Pj4gICAgICAjZGVmaW5lCWRtYXJf cmVsZWFzZV9vbmVfYXRzcgkJZG1hcl9yZXNfbm9vcA0KPj4+PiAgICAgIA0KPj4+PiArc3RhdGlj IGlubGluZSBpbnQgZG1hcl9ybXJyX2FkZF9hY3BpX2Rldih1OCBkZXZpY2VfbnVtYmVyLCBzdHJ1 Y3QgDQo+Pj4+ICthY3BpX2RldmljZSAqYWRldikgew0KPj4+PiArCXJldHVybiAwOw0KPj4+PiAr fQ0KPj4+PiArDQo+Pj4+ICAgICAgc3RhdGljIGlubGluZSBpbnQgZG1hcl9pb21tdV9ub3RpZnlf c2NvcGVfZGV2KHN0cnVjdCBkbWFyX3BjaV9ub3RpZnlfaW5mbyAqaW5mbykNCj4+Pj4gICAgICB7 DQo+Pj4+ICAgICAgCXJldHVybiAwOw0KPj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9p b21tdS5oIGIvaW5jbHVkZS9saW51eC9pb21tdS5oIGluZGV4DQo+Pj4+IGZlZTIwOWVmYjc1Ni4u OWJlMTM0Nzc1ODg2IDEwMDY0NA0KPj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2lvbW11LmgNCj4+ Pj4gKysrIGIvaW5jbHVkZS9saW51eC9pb21tdS5oDQo+Pj4+IEBAIC01MTQsNiArNTE0LDkgQEAg ZXh0ZXJuIHZvaWQgaW9tbXVfZG9tYWluX3dpbmRvd19kaXNhYmxlKHN0cnVjdCBpb21tdV9kb21h aW4gKmRvbWFpbiwgdTMyIHduZF9ucikNCj4+Pj4gICAgICBleHRlcm4gaW50IHJlcG9ydF9pb21t dV9mYXVsdChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHN0cnVjdCBkZXZpY2UgKmRldiwN Cj4+Pj4gICAgICAJCQkgICAgICB1bnNpZ25lZCBsb25nIGlvdmEsIGludCBmbGFncyk7DQo+Pj4+ ICAgICAgDQo+Pj4+ICtleHRlcm4gdm9pZCBfX2FjcGlfZGV2aWNlX2NyZWF0ZV9kaXJlY3RfbWFw cGluZ3Moc3RydWN0IGlvbW11X2dyb3VwICpncm91cCwNCj4+Pj4gKwkJCQkJCXN0cnVjdCBkZXZp Y2UgKmFjcGlfZGV2aWNlKTsNCj4+Pj4gKw0KPj4+PiAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBp b21tdV9mbHVzaF90bGJfYWxsKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbikNCj4+Pj4gICAg ICB7DQo+Pj4+ICAgICAgCWlmIChkb21haW4tPm9wcy0+Zmx1c2hfaW90bGJfYWxsKQ0KPj4+Pg0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaW9tbXUgbWFp bGluZyBsaXN0CmlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMu bGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11