Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp574043ybl; Sat, 18 Jan 2020 06:27:36 -0800 (PST) X-Google-Smtp-Source: APXvYqzB8JhTLR7TzeI8mHS1K8XBwUM7UMNvNJtT7WG8as9ZEcMVRV+vpe9wwQPeZ5izfvBpwcHS X-Received: by 2002:a9d:590d:: with SMTP id t13mr10129727oth.290.1579357656037; Sat, 18 Jan 2020 06:27:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579357656; cv=none; d=google.com; s=arc-20160816; b=TLPg9YFMwXROx/NNJjA8TygMa0ZACUvDpRn1ZlnaLgdqAXSP9yfb8K4WeO2KYrEXSN XXlJrtfBMhcdNZ09ufFyW2SmFDr67gXC9+kgiIMp0xbn9psDIOUYWHNaxd21rfN0yLIQ 9A4DcLFa26avS3Z0XFRY6ZSdkzKofwoYeTiIx+B1HlKH+vKvie8v6kGG2wE/sAexV/GT yVTuvCP2ezRVx+0upDUcRkExUTCfYPT7GECEnm44QdpLkUuOUjeVV+ecTIg57snRz0uY fg2s3T68ZwQlqq7E40QNOw1PQBB6kBi2MB9O1iIIMY6l1rC101fRXFOpJeTT6bu5w6xK 2UkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=/IJXfX9ZVrlWBMgM/eg7eFBDT5vA14+RViBGopcFRQg=; b=qH6fTxc9aLsC93drEDwVN2Pi3dybA18+YuM69eOZ1npienl5IFrJImjZjVMOgYcPy3 c5iFkf3/rfLc8BdQJoeOAmOfU+7I4JwMjOF1XB8sKGDcSk7fPObx0tnExX2/O7MW8kPa 9EaNqeQ5A7WkmAvFPe67o/fmZiqUGOXAWwfastOBsw9KQBPb8Fw1YpZsgnkb7Zqy+CiX D+F2qDWD6GFRW01qY4D7MtY5HCYUjW9HLwRXjAIhjnc5nZ3wzgn/Gg5K5LFHoDTajp8R wBHK2AdQ7TIibmZ/RsxNPAqR6P4Z3L8s1R/iiAfaewLnvb5nBDUpAgF0/+t3rbxr9lzc xcTg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x137si15260868oif.42.2020.01.18.06.27.24; Sat, 18 Jan 2020 06:27:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726597AbgAROZQ (ORCPT + 99 others); Sat, 18 Jan 2020 09:25:16 -0500 Received: from mga07.intel.com ([134.134.136.100]:29299 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726208AbgAROZQ (ORCPT ); Sat, 18 Jan 2020 09:25:16 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jan 2020 06:25:14 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,334,1574150400"; d="scan'208";a="306526091" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga001.jf.intel.com with ESMTP; 18 Jan 2020 06:25:14 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 18 Jan 2020 06:25:13 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 18 Jan 2020 06:25:13 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.197]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.203]) with mapi id 14.03.0439.000; Sat, 18 Jan 2020 22:25:11 +0800 From: "Liu, Yi L" To: Alex Williamson CC: "kwankhede@nvidia.com" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Tian, Kevin" , "joro@8bytes.org" , "peterx@redhat.com" , "baolu.lu@linux.intel.com" , Masahiro Yamada Subject: RE: [PATCH v4 11/12] samples: add vfio-mdev-pci driver Thread-Topic: [PATCH v4 11/12] samples: add vfio-mdev-pci driver Thread-Index: AQHVxVUACBwDAx59j0yR27cHCInk46fibQ6AgArW04CAABH3AIABoung Date: Sat, 18 Jan 2020 14:25:11 +0000 Message-ID: References: <1578398509-26453-1-git-send-email-yi.l.liu@intel.com> <1578398509-26453-12-git-send-email-yi.l.liu@intel.com> <20200109154831.4c43564f@w520.home> <20200116142418.6ca1b6b2@w520.home> In-Reply-To: <20200116142418.6ca1b6b2@w520.home> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZThlZDM0NDYtZjVlMi00MTZlLTliNDktY2Y0MTAyNWQ5NzY5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiWlB5Q1VIdTBoQTZPeXc3SityN1dCQkV0b3ZxXC9MMllTUVUzM1VVeldsT1wvSlZMRGUxS2VNZmtybkt5ZDg1NkZRIn0= x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiBGcm9tOiBBbGV4IFdpbGxpYW1zb24gW21haWx0bzphbGV4LndpbGxpYW1zb25AcmVkaGF0LmNv bV0NCj4gU2VudDogRnJpZGF5LCBKYW51YXJ5IDE3LCAyMDIwIDU6MjQgQU0NCj4gVG86IExpdSwg WWkgTCA8eWkubC5saXVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0IDExLzEy XSBzYW1wbGVzOiBhZGQgdmZpby1tZGV2LXBjaSBkcml2ZXINCj4gDQo+IE9uIFRodSwgMTYgSmFu IDIwMjAgMTI6MzM6MDYgKzAwMDANCj4gIkxpdSwgWWkgTCIgPHlpLmwubGl1QGludGVsLmNvbT4g d3JvdGU6DQo+IA0KPiA+ID4gRnJvbTogQWxleCBXaWxsaWFtc29uIFttYWlsdG86YWxleC53aWxs aWFtc29uQHJlZGhhdC5jb21dDQo+ID4gPiBTZW50OiBGcmlkYXksIEphbnVhcnkgMTAsIDIwMjAg Njo0OSBBTQ0KPiA+ID4gVG86IExpdSwgWWkgTCA8eWkubC5saXVAaW50ZWwuY29tPg0KPiA+ID4g U3ViamVjdDogUmU6IFtQQVRDSCB2NCAxMS8xMl0gc2FtcGxlczogYWRkIHZmaW8tbWRldi1wY2kg ZHJpdmVyDQo+ID4gPg0KPiA+ID4gT24gVHVlLCAgNyBKYW4gMjAyMCAyMDowMTo0OCArMDgwMA0K PiA+ID4gTGl1IFlpIEwgPHlpLmwubGl1QGludGVsLmNvbT4gd3JvdGU6DQo+ID4gPg0KPiA+ID4g PiBUaGlzIHBhdGNoIGFkZHMgc2FtcGxlIGRyaXZlciBuYW1lZCB2ZmlvLW1kZXYtcGNpLiBJdCBp cyB0byB3cmFwDQo+ID4gPiA+IGEgUENJIGRldmljZSBhcyBhIG1lZGlhdGVkIGRldmljZS4gRm9y IGEgcGNpIGRldmljZSwgb25jZSBib3VuZA0KPiA+ID4gPiB0byB2ZmlvLW1kZXYtcGNpIGRyaXZl ciwgdXNlciBzcGFjZSBhY2Nlc3Mgb2YgdGhpcyBkZXZpY2Ugd2lsbA0KPiA+ID4gPiBnbyB0aHJv dWdoIHZmaW8gbWRldiBmcmFtZXdvcmsuIFRoZSB1c2FnZSBvZiB0aGUgZGV2aWNlIGZvbGxvd3MN Cj4gPiA+ID4gbWRldiBtYW5hZ2VtZW50IG1ldGhvZC4gZS5nLiB1c2VyIHNob3VsZCBjcmVhdGUg YSBtZGV2IGJlZm9yZQ0KPiA+ID4gPiBleHBvc2luZyB0aGUgZGV2aWNlIHRvIHVzZXItc3BhY2Uu DQo+ID4gPiA+DQo+ID4gPiA+IEJlbmVmaXQgb2YgdGhpcyBuZXcgZHJpdmVyIHdvdWxkIGJlIGFj dGluZyBhcyBhIHNhbXBsZSBkcml2ZXINCj4gPiA+ID4gZm9yIHJlY2VudCBjaGFuZ2VzIGZyb20g InZmaW8vbWRldjogSU9NTVUgYXdhcmUgbWVkaWF0ZWQgZGV2aWNlIg0KPiA+ID4gPiBwYXRjaHNl dC4gQWxzbyBpdCBjb3VsZCBiZSBhIGdvb2QgZXhwZXJpbWVudCBkcml2ZXIgZm9yIGZ1dHVyZQ0K PiA+ID4gPiBkZXZpY2Ugc3BlY2lmaWMgbWRldiBtaWdyYXRpb24gc3VwcG9ydC4gVGhpcyBzYW1w bGUgZHJpdmVyIG9ubHkNCj4gPiA+ID4gc3VwcG9ydHMgc2luZ2xldG9uIGlvbW11IGdyb3Vwcywg Zm9yIG5vbi1zaW5nbGV0b24gaW9tbXUgZ3JvdXBzLA0KPiA+ID4gPiB0aGlzIHNhbXBsZSBkcml2 ZXIgZG9lc24ndCB3b3JrLiBJdCB3aWxsIGZhaWwgd2hlbiB0cnlpbmcgdG8gYXNzaWduDQo+ID4g PiA+IHRoZSBub24tc2luZ2xldG9uIGlvbW11IGdyb3VwIHRvIFZNcy4NCj4gPiA+ID4NCj4gPiA+ ID4gVG8gdXNlIHRoaXMgZHJpdmVyOg0KPiA+ID4gPiBhKSBidWlsZCBhbmQgbG9hZCB2ZmlvLW1k ZXYtcGNpLmtvIG1vZHVsZQ0KPiA+ID4gPiAgICBleGVjdXRlICJtYWtlIG1lbnVjb25maWciIGFu ZCBjb25maWcgQ09ORklHX1NBTVBMRV9WRklPX01ERVZfUENJDQo+ID4gPiA+ICAgIHRoZW4gbG9h ZCBpdCB3aXRoIGZvbGxvd2luZyBjb21tYW5kOg0KPiA+ID4gPiAgICA+IHN1ZG8gbW9kcHJvYmUg dmZpbw0KPiA+ID4gPiAgICA+IHN1ZG8gbW9kcHJvYmUgdmZpby1wY2kNCj4gPiA+ID4gICAgPiBz dWRvIGluc21vZCBzYW1wbGVzL3ZmaW8tbWRldi1wY2kvdmZpby1tZGV2LXBjaS5rbw0KPiA+ID4g Pg0KPiA+ID4gPiBiKSB1bmJpbmQgb3JpZ2luYWwgZGV2aWNlIGRyaXZlcg0KPiA+ID4gPiAgICBl LmcuIHVzZSBmb2xsb3dpbmcgY29tbWFuZCB0byB1bmJpbmQgaXRzIG9yaWdpbmFsIGRyaXZlcg0K PiA+ID4gPiAgICA+IGVjaG8gJGRldl9iZGYgPiAvc3lzL2J1cy9wY2kvZGV2aWNlcy8kZGV2X2Jk Zi9kcml2ZXIvdW5iaW5kDQo+ID4gPiA+DQo+ID4gPiA+IGMpIGJpbmQgdmZpby1tZGV2LXBjaSBk cml2ZXIgdG8gdGhlIHBoeXNpY2FsIGRldmljZQ0KPiA+ID4gPiAgICA+IGVjaG8gJHZlbmRfaWQg JGRldl9pZCA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3ZmaW8tbWRldi1wY2kvbmV3X2lkDQo+ID4g PiA+DQo+ID4gPiA+IGQpIGNoZWNrIHRoZSBzdXBwb3J0ZWQgbWRldiBpbnN0YW5jZXMNCj4gPiA+ ID4gICAgPiBscyAvc3lzL2J1cy9wY2kvZGV2aWNlcy8kZGV2X2JkZi9tZGV2X3N1cHBvcnRlZF90 eXBlcy8NCj4gPiA+ID4gICAgICB2ZmlvLW1kZXYtcGNpLXR5cGVfbmFtZQ0KPiA+ID4gPiAgICA+ IGxzIC9zeXMvYnVzL3BjaS9kZXZpY2VzLyRkZXZfYmRmL21kZXZfc3VwcG9ydGVkX3R5cGVzL1wN Cj4gPiA+ID4gICAgICB2ZmlvLW1kZXYtcGNpLXR5cGVfbmFtZS8NCj4gPiA+ID4gICAgICBhdmFp bGFibGVfaW5zdGFuY2VzICBjcmVhdGUgIGRldmljZV9hcGkgIGRldmljZXMgIG5hbWUNCj4gPiA+ ID4NCj4gPiA+ID4gZSkgIGNyZWF0ZSBtZGV2IG9uIHRoaXMgcGh5c2ljYWwgZGV2aWNlIChvbmx5 IDEgaW5zdGFuY2UpDQo+ID4gPiA+ICAgID4gZWNobyAiODNiOGY0ZjItNTA5Zi0zODJmLTNjMWUt ZTZiZmUwZmExMDAzIiA+IFwNCj4gPiA+ID4gICAgICAvc3lzL2J1cy9wY2kvZGV2aWNlcy8kZGV2 X2JkZi9tZGV2X3N1cHBvcnRlZF90eXBlcy9cDQo+ID4gPiA+ICAgICAgdmZpby1tZGV2LXBjaS10 eXBlX25hbWUvY3JlYXRlDQo+ID4gPiA+DQo+ID4gPiA+IGYpIHBhc3N0aHJ1IHRoZSBtZGV2IHRv IGd1ZXN0DQo+ID4gPiA+ICAgIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgaW4gUUVNVSBib290IGNv bW1hbmQNCj4gPiA+ID4gICAgIC1kZXZpY2UgdmZpby1wY2ksXA0KPiA+ID4gPiAgICAgIHN5c2Zz ZGV2PS9zeXMvYnVzL21kZXYvZGV2aWNlcy84M2I4ZjRmMi01MDlmLTM4MmYtM2MxZS1lNmJmZTBm YTEwMDMNCj4gPiA+ID4NCj4gPiA+ID4gZykgZGVzdHJveSBtZGV2DQo+ID4gPiA+ICAgID4gZWNo byAxID4gL3N5cy9idXMvbWRldi9kZXZpY2VzLzgzYjhmNGYyLTUwOWYtMzgyZi0zYzFlLWU2YmZl MGZhMTAwMy9cDQo+ID4gPiA+ICAgICAgcmVtb3ZlDQo+ID4gPiA+DQo+ID4gPiA+IENjOiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IEx1IEJhb2x1IDxiYW9s dS5sdUBsaW51eC5pbnRlbC5jb20+DQo+ID4gPiA+IENjOiBNYXNhaGlybyBZYW1hZGEgPHlhbWFk YS5tYXNhaGlyb0Bzb2Npb25leHQuY29tPg0KPiA+ID4gPiBTdWdnZXN0ZWQtYnk6IEFsZXggV2ls bGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+DQo+ID4gPiA+IFNpZ25lZC1vZmYt Ynk6IExpdSBZaSBMIDx5aS5sLmxpdUBpbnRlbC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAg c2FtcGxlcy9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArDQo+ID4gPiA+ICBz YW1wbGVzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gPiA+ID4gIHNh bXBsZXMvdmZpby1tZGV2LXBjaS9NYWtlZmlsZSAgICAgICAgfCAgIDQgKw0KPiA+ID4gPiAgc2Ft cGxlcy92ZmlvLW1kZXYtcGNpL3ZmaW9fbWRldl9wY2kuYyB8IDM5Nw0KPiA+ID4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCA0MTIg aW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvdmZpby1t ZGV2LXBjaS9NYWtlZmlsZQ0KPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvdmZp by1tZGV2LXBjaS92ZmlvX21kZXZfcGNpLmMNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBh L3NhbXBsZXMvS2NvbmZpZyBiL3NhbXBsZXMvS2NvbmZpZw0KPiA+ID4gPiBpbmRleCA5ZDIzNmMz Li41MGQyMDdjIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9zYW1wbGVzL0tjb25maWcNCj4gPiA+ID4g KysrIGIvc2FtcGxlcy9LY29uZmlnDQo+ID4gPiA+IEBAIC0xOTAsNSArMTkwLDE1IEBAIGNvbmZp ZyBTQU1QTEVfSU5URUxfTUVJDQo+ID4gPiA+ICAJaGVscA0KPiA+ID4gPiAgCSAgQnVpbGQgYSBz YW1wbGUgcHJvZ3JhbSB0byB3b3JrIHdpdGggbWVpIGRldmljZS4NCj4gPiA+ID4NCj4gPiA+ID4g K2NvbmZpZyBTQU1QTEVfVkZJT19NREVWX1BDSQ0KPiA+ID4gPiArCXRyaXN0YXRlICJTYW1wbGUg ZHJpdmVyIGZvciB3cmFwcGluZyBQQ0kgZGV2aWNlIGFzIGEgbWRldiINCj4gPiA+ID4gKwlzZWxl Y3QgVkZJT19QQ0lfQ09NTU9ODQo+ID4gPiA+ICsJc2VsZWN0IFZGSU9fUENJDQo+ID4gPiA+ICsJ ZGVwZW5kcyBvbiBWRklPX01ERVYgJiYgVkZJT19NREVWX0RFVklDRQ0KPiA+ID4gPiArCWhlbHAN Cj4gPiA+ID4gKwkgIFNhbXBsZSBkcml2ZXIgZm9yIHdyYXBwaW5nIGEgUENJIGRldmljZSBhcyBh IG1kZXYuIE9uY2UgYm91bmQgdG8NCj4gPiA+ID4gKwkgIHRoaXMgZHJpdmVyLCBkZXZpY2UgcGFz c3RocnUgc2hvdWxkIHRocm91Z2ggbWRldiBwYXRoLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsJICBJ ZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLg0KPiA+ID4gPg0KPiA+ID4g PiAgZW5kaWYgIyBTQU1QTEVTDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9zYW1wbGVzL01ha2VmaWxl IGIvc2FtcGxlcy9NYWtlZmlsZQ0KPiA+ID4gPiBpbmRleCA1Y2U1MGVmLi44NGZhY2VkIDEwMDY0 NA0KPiA+ID4gPiAtLS0gYS9zYW1wbGVzL01ha2VmaWxlDQo+ID4gPiA+ICsrKyBiL3NhbXBsZXMv TWFrZWZpbGUNCj4gPiA+ID4gQEAgLTIxLDUgKzIxLDYgQEAgb2JqLSQoQ09ORklHX1NBTVBMRV9G VFJBQ0VfRElSRUNUKQkrPSBmdHJhY2UvDQo+ID4gPiA+ICBvYmotJChDT05GSUdfU0FNUExFX1RS QUNFX0FSUkFZKQkrPSBmdHJhY2UvDQo+ID4gPiA+ICBvYmotJChDT05GSUdfVklERU9fUENJX1NL RUxFVE9OKQkrPSB2NGwvDQo+ID4gPiA+ICBvYmoteQkJCQkJKz0gdmZpby1tZGV2Lw0KPiA+ID4g PiArb2JqLXkJCQkJCSs9IHZmaW8tbWRldi1wY2kvDQo+ID4gPg0KPiA+ID4gSSB0aGluayB3ZSBj b3VsZCBqdXN0IGx1bXAgdGhpcyBpbnRvIHZmaW8tbWRldiByYXRoZXIgdGhhbiBtYWtpbmcNCj4g PiA+IGFub3RoZXIgZGlyZWN0b3J5Lg0KPiA+DQo+ID4gc3VyZS4gd2lsbCBtb3ZlIGl0LiA6LSkN Cj4gPg0KPiA+ID4NCj4gPiA+ID4gIHN1YmRpci0kKENPTkZJR19TQU1QTEVfVkZTKQkJKz0gdmZz DQo+ID4gPiA+ICBvYmotJChDT05GSUdfU0FNUExFX0lOVEVMX01FSSkJCSs9IG1laS8NCj4gPiA+ ID4gZGlmZiAtLWdpdCBhL3NhbXBsZXMvdmZpby1tZGV2LXBjaS9NYWtlZmlsZSBiL3NhbXBsZXMv dmZpby1tZGV2LXBjaS9NYWtlZmlsZQ0KPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gPiBpbmRleCAwMDAwMDAwLi40MWIyMTM5DQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ ID4gKysrIGIvc2FtcGxlcy92ZmlvLW1kZXYtcGNpL01ha2VmaWxlDQo+ID4gPiA+IEBAIC0wLDAg KzEsNCBAQA0KPiA+ID4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 DQo+ID4gPiA+ICt2ZmlvLW1kZXYtcGNpLXkgOj0gdmZpb19tZGV2X3BjaS5vDQo+ID4gPiA+ICsN Cj4gPiA+ID4gK29iai0kKENPTkZJR19TQU1QTEVfVkZJT19NREVWX1BDSSkgKz0gdmZpby1tZGV2 LXBjaS5vDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9zYW1wbGVzL3ZmaW8tbWRldi1wY2kvdmZpb19t ZGV2X3BjaS5jIGIvc2FtcGxlcy92ZmlvLW1kZXYtDQo+ID4gPiBwY2kvdmZpb19tZGV2X3BjaS5j DQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAuLmIx ODAzNTYNCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9zYW1wbGVzL3ZmaW8t bWRldi1wY2kvdmZpb19tZGV2X3BjaS5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsMzk3IEBADQo+ID4g PiA+ICsvKg0KPiA+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24u DQo+ID4gPiA+ICsgKiAgICAgQXV0aG9yOiBMaXUgWWkgTCA8eWkubC5saXVAaW50ZWwuY29tPg0K PiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ID4gPiA+ICsgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBh cw0KPiA+ID4gPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u DQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogRGVyaXZlZCBmcm9tIG9yaWdpbmFsIHZmaW9fcGNp LmM6DQo+ID4gPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVkIEhhdCwgSW5jLiAgQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gPiA+ID4gKyAqICAgICBBdXRob3I6IEFsZXggV2lsbGlhbXNvbiA8 YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+DQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogRGVy aXZlZCBmcm9tIG9yaWdpbmFsIHZmaW86DQo+ID4gPiA+ICsgKiBDb3B5cmlnaHQgMjAxMCBDaXNj byBTeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4gPiArICogQXV0aG9y OiBUb20gTHlvbiwgcHVnc0BjaXNjby5jb20NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArDQo+ID4g PiA+ICsjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICI6ICIgZm10DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gPiA+ID4gKyNpbmNsdWRl IDxsaW51eC9ldmVudGZkLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0KPiA+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxp bnV4L2lvbW11Lmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gPiA+ ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9ub3Rp Zmllci5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPg0KPiA+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC91YWNjZXNzLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvdmZpby5oPg0KPiA+ID4g PiArI2luY2x1ZGUgPGxpbnV4L3ZnYWFyYi5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L25v c3BlYy5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21kZXYuaD4NCj4gPiA+ID4gKyNpbmNs dWRlIDxsaW51eC92ZmlvX3BjaV9jb21tb24uaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmlu ZSBEUklWRVJfVkVSU0lPTiAgIjAuMSINCj4gPiA+ID4gKyNkZWZpbmUgRFJJVkVSX0FVVEhPUiAg ICJMaXUgWWkgTCA8eWkubC5saXVAaW50ZWwuY29tPiINCj4gPiA+ID4gKyNkZWZpbmUgRFJJVkVS X0RFU0MgICAgICJWRklPIE1kZXYgUENJIC0gU2FtcGxlIGRyaXZlciBmb3IgUENJIGRldmljZSBh cyBhDQo+ID4gPiBtZGV2Ig0KPiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIFZGSU9fTURFVl9Q Q0lfTkFNRSAgInZmaW8tbWRldi1wY2kiDQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBjaGFy IGlkc1sxMDI0XSBfX2luaXRkYXRhOw0KPiA+ID4gPiArbW9kdWxlX3BhcmFtX3N0cmluZyhpZHMs IGlkcywgc2l6ZW9mKGlkcyksIDApOw0KPiA+ID4gPiArTU9EVUxFX1BBUk1fREVTQyhpZHMsICJJ bml0aWFsIFBDSSBJRHMgdG8gYWRkIHRvIHRoZSB2ZmlvLW1kZXYtcGNpIGRyaXZlciwNCj4gPiA+ IGZvcm1hdCBpcyBcInZlbmRvcjpkZXZpY2VbOnN1YnZlbmRvcls6c3ViZGV2aWNlWzpjbGFzc1s6 Y2xhc3NfbWFza11dXV1cIiBhbmQNCj4gPiA+IG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCBlbnRy aWVzIGNhbiBiZSBzcGVjaWZpZWQiKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGJvb2wg bm9pbnR4bWFzazsNCj4gPiA+ID4gK21vZHVsZV9wYXJhbV9uYW1lZChub2ludHhtYXNrLCBub2lu dHhtYXNrLCBib29sLCBTX0lSVUdPIHwgU19JV1VTUik7DQo+ID4gPiA+ICtNT0RVTEVfUEFSTV9E RVNDKG5vaW50eG1hc2ssDQo+ID4gPiA+ICsJCSAgIkRpc2FibGUgc3VwcG9ydCBmb3IgUENJIDIu MyBzdHlsZSBJTlR4IG1hc2tpbmcuICBJZiB0aGlzIHJlc29sdmVzDQo+ID4gPiBwcm9ibGVtcyBm b3Igc3BlY2lmaWMgZGV2aWNlcywgcmVwb3J0IGxzcGNpIC12dnZ4eHggdG8gbGludXgtcGNpQHZn ZXIua2VybmVsLm9yZw0KPiBzbw0KPiA+ID4gdGhlIGRldmljZSBjYW4gYmUgZml4ZWQgYXV0b21h dGljYWxseSB2aWEgdGhlIGJyb2tlbl9pbnR4X21hc2tpbmcgZmxhZy4iKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArI2lmZGVmIENPTkZJR19WRklPX1BDSV9WR0ENCj4gPiA+ID4gK3N0YXRpYyBib29s IGRpc2FibGVfdmdhOw0KPiA+ID4gPiArbW9kdWxlX3BhcmFtKGRpc2FibGVfdmdhLCBib29sLCBT X0lSVUdPKTsNCj4gPiA+ID4gK01PRFVMRV9QQVJNX0RFU0MoZGlzYWJsZV92Z2EsICJEaXNhYmxl IFZHQSByZXNvdXJjZSBhY2Nlc3MgdGhyb3VnaA0KPiB2ZmlvLQ0KPiA+ID4gbWRldi1wY2kiKTsN Cj4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgYm9vbCBkaXNhYmxl X2lkbGVfZDM7DQo+ID4gPiA+ICttb2R1bGVfcGFyYW0oZGlzYWJsZV9pZGxlX2QzLCBib29sLCBT X0lSVUdPIHwgU19JV1VTUik7DQo+ID4gPiA+ICtNT0RVTEVfUEFSTV9ERVNDKGRpc2FibGVfaWRs ZV9kMywNCj4gPiA+ID4gKwkJICJEaXNhYmxlIHVzaW5nIHRoZSBQQ0kgRDMgbG93IHBvd2VyIHN0 YXRlIGZvciBpZGxlLCB1bnVzZWQgZGV2aWNlcyIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0 aWMgc3RydWN0IHBjaV9kcml2ZXIgdmZpb19tZGV2X3BjaV9kcml2ZXI7DQo+ID4gPiA+ICsNCj4g PiA+ID4gK3N0YXRpYyBzc2l6ZV90DQo+ID4gPiA+ICtuYW1lX3Nob3coc3RydWN0IGtvYmplY3Qg KmtvYmosIHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqYnVmKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzLXR5cGUxXG4iLCBkZXZfbmFtZShkZXYpKTsNCj4g PiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArTURFVl9UWVBFX0FUVFJfUk8obmFtZSk7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBzc2l6ZV90DQo+ID4gPiA+ICthdmFpbGFibGVfaW5z dGFuY2VzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBkZXZpY2UgKmRldiwgY2hh ciAqYnVmKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4i LCAxKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArTURFVl9UWVBFX0FUVFJfUk8o YXZhaWxhYmxlX2luc3RhbmNlcyk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBzc2l6ZV90 IGRldmljZV9hcGlfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGRldmljZSAqZGV2 LA0KPiA+ID4gPiArCQljaGFyICpidWYpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJcmV0dXJuIHNw cmludGYoYnVmLCAiJXNcbiIsIFZGSU9fREVWSUNFX0FQSV9QQ0lfU1RSSU5HKTsNCj4gPiA+ID4g K30NCj4gPiA+ID4gKw0KPiA+ID4gPiArTURFVl9UWVBFX0FUVFJfUk8oZGV2aWNlX2FwaSk7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp2ZmlvX21kZXZfcGNp X3R5cGVzX2F0dHJzW10gPSB7DQo+ID4gPiA+ICsJJm1kZXZfdHlwZV9hdHRyX25hbWUuYXR0ciwN Cj4gPiA+ID4gKwkmbWRldl90eXBlX2F0dHJfZGV2aWNlX2FwaS5hdHRyLA0KPiA+ID4gPiArCSZt ZGV2X3R5cGVfYXR0cl9hdmFpbGFibGVfaW5zdGFuY2VzLmF0dHIsDQo+ID4gPiA+ICsJTlVMTCwN Cj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl X2dyb3VwIHZmaW9fbWRldl9wY2lfdHlwZV9ncm91cDEgPSB7DQo+ID4gPiA+ICsJLm5hbWUgID0g InR5cGUxIiwNCj4gPiA+ID4gKwkuYXR0cnMgPSB2ZmlvX21kZXZfcGNpX3R5cGVzX2F0dHJzLA0K PiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq dmZpb19tZGV2X3BjaV90eXBlX2dyb3Vwc1tdID0gew0KPiA+ID4gPiArCSZ2ZmlvX21kZXZfcGNp X3R5cGVfZ3JvdXAxLA0KPiA+ID4gPiArCU5VTEwsDQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ ID4gPiA+ICtzdHJ1Y3QgdmZpb19tZGV2X3BjaSB7DQo+ID4gPiA+ICsJc3RydWN0IHZmaW9fcGNp X2RldmljZSAqdmRldjsNCj4gPiA+ID4gKwlzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXY7DQo+ID4g PiA+ICsJdW5zaWduZWQgbG9uZyBoYW5kbGU7DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4g PiA+ICtzdGF0aWMgaW50IHZmaW9fbWRldl9wY2lfY3JlYXRlKHN0cnVjdCBrb2JqZWN0ICprb2Jq LCBzdHJ1Y3QgbWRldl9kZXZpY2UNCj4gKm1kZXYpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJc3Ry dWN0IGRldmljZSAqcGRldjsNCj4gPiA+ID4gKwlzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlICp2ZGV2 Ow0KPiA+ID4gPiArCXN0cnVjdCB2ZmlvX21kZXZfcGNpICpwbWRldjsNCj4gPiA+ID4gKwlpbnQg cmV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcGRldiA9IG1kZXZfcGFyZW50X2RldihtZGV2KTsN Cj4gPiA+ID4gKwl2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+ID4gPiArCXBtZGV2 ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHZmaW9fbWRldl9wY2kpLCBHRlBfS0VSTkVMKTsNCj4g PiA+ID4gKwlpZiAocG1kZXYgPT0gTlVMTCkgew0KPiA+ID4gPiArCQlyZXQgPSAtRUJVU1k7DQo+ ID4gPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCXBt ZGV2LT5tZGV2ID0gbWRldjsNCj4gPiA+ID4gKwlwbWRldi0+dmRldiA9IHZkZXY7DQo+ID4gPiA+ ICsJbWRldl9zZXRfZHJ2ZGF0YShtZGV2LCBwbWRldik7DQo+ID4gPiA+ICsJcmV0ID0gbWRldl9z ZXRfaW9tbXVfZGV2aWNlKG1kZXZfZGV2KG1kZXYpLCBwZGV2KTsNCj4gPiA+ID4gKwlpZiAocmV0 KSB7DQo+ID4gPiA+ICsJCXByX2luZm8oIiVzLCBmYWlsZWQgdG8gY29uZmlnIGlvbW11IGlzb2xh dGlvbiBmb3IgbWRldjogJXMgb24NCj4gPiA+IHBmOiAlc1xuIiwNCj4gPiA+ID4gKwkJCV9fZnVu Y19fLCBkZXZfbmFtZShtZGV2X2RldihtZGV2KSksIGRldl9uYW1lKHBkZXYpKTsNCj4gPiA+ID4g KwkJZ290byBvdXQ7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcHJfaW5mbygi JXMsIGNyZWF0aW9uIHN1Y2NlZWRlZCBmb3IgbWRldjogJXNcbiIsIF9fZnVuY19fLA0KPiA+ID4g PiArCQkgICAgIGRldl9uYW1lKG1kZXZfZGV2KG1kZXYpKSk7DQo+ID4gPiA+ICtvdXQ6DQo+ID4g PiA+ICsJcmV0dXJuIHJldDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGlj IGludCB2ZmlvX21kZXZfcGNpX3JlbW92ZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICsJc3RydWN0IHZmaW9fbWRldl9wY2kgKnBtZGV2ID0gbWRldl9nZXRf ZHJ2ZGF0YShtZGV2KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWtmcmVlKHBtZGV2KTsNCj4gPiA+ ID4gKwlwcl9pbmZvKCIlcywgc3VjY2VlZGVkIGZvciBtZGV2OiAlc1xuIiwgX19mdW5jX18sDQo+ ID4gPiA+ICsJCSAgICAgZGV2X25hbWUobWRldl9kZXYobWRldikpKTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMg aW50IHZmaW9fbWRldl9wY2lfb3BlbihzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpDQo+ID4gPiA+ ICt7DQo+ID4gPiA+ICsJc3RydWN0IHZmaW9fbWRldl9wY2kgKnBtZGV2ID0gbWRldl9nZXRfZHJ2 ZGF0YShtZGV2KTsNCj4gPiA+ID4gKwlzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlICp2ZGV2ID0gcG1k ZXYtPnZkZXY7DQo+ID4gPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlp ZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkNCj4gPiA+ID4gKwkJcmV0dXJuIC1FTk9E RVY7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwl2ZmlvX3BjaV9yZWZyZXNoX2NvbmZpZyh2ZGV2LCBu b2ludHhtYXNrLCBkaXNhYmxlX2lkbGVfZDMpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJbXV0ZXhf bG9jaygmdmRldi0+cmVmbGNrLT5sb2NrKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWlmICghdmRl di0+cmVmY250KSB7DQo+ID4gPiA+ICsJCXJldCA9IHZmaW9fcGNpX2VuYWJsZSh2ZGV2KTsNCj4g PiA+ID4gKwkJaWYgKHJldCkNCj4gPiA+ID4gKwkJCWdvdG8gZXJyb3I7DQo+ID4gPiA+ICsNCj4g PiA+ID4gKwkJdmZpb19zcGFwcl9wY2lfZWVoX29wZW4odmRldi0+cGRldik7DQo+ID4gPiA+ICsJ fQ0KPiA+ID4gPiArCXZkZXYtPnJlZmNudCsrOw0KPiA+ID4gPiArZXJyb3I6DQo+ID4gPiA+ICsJ bXV0ZXhfdW5sb2NrKCZ2ZGV2LT5yZWZsY2stPmxvY2spOw0KPiA+ID4gPiArCWlmICghcmV0KQ0K PiA+ID4gPiArCQlwcl9pbmZvKCJTdWNjZWVkZWQgdG8gb3BlbiBtZGV2OiAlcyBvbiBwZjogJXNc biIsDQo+ID4gPiA+ICsJCWRldl9uYW1lKG1kZXZfZGV2KG1kZXYpKSwgZGV2X25hbWUoJnBtZGV2 LT52ZGV2LT5wZGV2LQ0KPiA+ID4gPmRldikpOw0KPiA+ID4gPiArCWVsc2Ugew0KPiA+ID4gPiAr CQlwcl9pbmZvKCJGYWlsZWQgdG8gb3BlbiBtZGV2OiAlcyBvbiBwZjogJXNcbiIsDQo+ID4gPiA+ ICsJCWRldl9uYW1lKG1kZXZfZGV2KG1kZXYpKSwgZGV2X25hbWUoJnBtZGV2LT52ZGV2LT5wZGV2 LQ0KPiA+ID4gPmRldikpOw0KPiA+ID4gPiArCQltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsNCj4g PiA+ID4gKwl9DQo+ID4gPiA+ICsJcmV0dXJuIHJldDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIHZvaWQgdmZpb19tZGV2X3BjaV9yZWxlYXNlKHN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldikNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgdmZpb19tZGV2X3BjaSAq cG1kZXYgPSBtZGV2X2dldF9kcnZkYXRhKG1kZXYpOw0KPiA+ID4gPiArCXN0cnVjdCB2ZmlvX3Bj aV9kZXZpY2UgKnZkZXYgPSBwbWRldi0+dmRldjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXByX2lu Zm8oIlJlbGVhc2UgbWRldjogJXMgb24gcGY6ICVzXG4iLA0KPiA+ID4gPiArCQlkZXZfbmFtZSht ZGV2X2RldihtZGV2KSksIGRldl9uYW1lKCZwbWRldi0+dmRldi0+cGRldi0NCj4gPiA+ID5kZXYp KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCW11dGV4X2xvY2soJnZkZXYtPnJlZmxjay0+bG9jayk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlpZiAoISgtLXZkZXYtPnJlZmNudCkpIHsNCj4gPiA+ID4g KwkJdmZpb19zcGFwcl9wY2lfZWVoX3JlbGVhc2UodmRldi0+cGRldik7DQo+ID4gPiA+ICsJCXZm aW9fcGNpX2Rpc2FibGUodmRldik7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ bXV0ZXhfdW5sb2NrKCZ2ZGV2LT5yZWZsY2stPmxvY2spOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ bW9kdWxlX3B1dChUSElTX01PRFVMRSk7DQo+ID4gPiA+ICt9DQo+ID4gPg0KPiA+ID4gb3Blbigp IGFuZCByZWxlYXNlKCkgaGVyZSBhcmUgYWxtb3N0IGlkZW50aWNhbCBiZXR3ZWVuIHZmaW9fcGNp IGFuZA0KPiA+ID4gdmZpb19tZGV2X3BjaSwgd2hpY2ggc3VnZ2VzdHMgbWF5YmUgdGhlcmUgc2hv dWxkIGJlIGNvbW1vbiBmdW5jdGlvbnMgdG8NCj4gPiA+IGNhbGwgaW50byBsaWtlIHdlIGRvIGZv ciB0aGUgYmVsb3cuDQo+ID4NCj4gPiB5ZXMsIGxldCBtZSBoYXZlIG1vcmUgc3R1ZHkgYW5kIGRv IGJldHRlciBhYnN0cmFjdCBpbiBuZXh0IHZlcnNpb24uIDotKQ0KPiA+DQo+ID4gPiA+ICtzdGF0 aWMgbG9uZyB2ZmlvX21kZXZfcGNpX2lvY3RsKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwgdW5z aWduZWQgaW50IGNtZCwNCj4gPiA+ID4gKwkJCSAgICAgdW5zaWduZWQgbG9uZyBhcmcpDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICsJc3RydWN0IHZmaW9fbWRldl9wY2kgKnBtZGV2ID0gbWRldl9nZXRf ZHJ2ZGF0YShtZGV2KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiB2ZmlvX3BjaV9pb2N0 bChwbWRldi0+dmRldiwgY21kLCBhcmcpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICtzdGF0aWMgaW50IHZmaW9fbWRldl9wY2lfbW1hcChzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYs DQo+ID4gPiA+ICsJCQkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsJc3RydWN0IHZmaW9fbWRldl9wY2kgKnBtZGV2ID0gbWRldl9nZXRfZHJ2ZGF0YSht ZGV2KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiB2ZmlvX3BjaV9tbWFwKHBtZGV2LT52 ZGV2LCB2bWEpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgc3NpemVf dCB2ZmlvX21kZXZfcGNpX3JlYWQoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCBjaGFyIF9fdXNl cg0KPiAqYnVmLA0KPiA+ID4gPiArCQkJc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICsJc3RydWN0IHZmaW9fbWRldl9wY2kgKnBtZGV2ID0gbWRldl9nZXRf ZHJ2ZGF0YShtZGV2KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiB2ZmlvX3BjaV9yZWFk KHBtZGV2LT52ZGV2LCBidWYsIGNvdW50LCBwcG9zKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIHNzaXplX3QgdmZpb19tZGV2X3BjaV93cml0ZShzdHJ1Y3QgbWRldl9k ZXZpY2UgKm1kZXYsDQo+ID4gPiA+ICsJCQkJY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwNCj4gPiA+ ID4gKwkJCQlzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykNCj4gPiA+ID4gK3sNCj4gPiA+ID4g KwlzdHJ1Y3QgdmZpb19tZGV2X3BjaSAqcG1kZXYgPSBtZGV2X2dldF9kcnZkYXRhKG1kZXYpOw0K PiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIHZmaW9fcGNpX3dyaXRlKHBtZGV2LT52ZGV2LCAo Y2hhciBfX3VzZXIgKilidWYsIGNvdW50LCBwcG9zKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtZGV2X3BhcmVudF9vcHMgdmZpb19tZGV2X3Bj aV9vcHMgPSB7DQo+ID4gPiA+ICsJLnN1cHBvcnRlZF90eXBlX2dyb3Vwcwk9IHZmaW9fbWRldl9w Y2lfdHlwZV9ncm91cHMsDQo+ID4gPiA+ICsJLmNyZWF0ZQkJCT0gdmZpb19tZGV2X3BjaV9jcmVh dGUsDQo+ID4gPiA+ICsJLnJlbW92ZQkJCT0gdmZpb19tZGV2X3BjaV9yZW1vdmUsDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwkub3BlbgkJCT0gdmZpb19tZGV2X3BjaV9vcGVuLA0KPiA+ID4gPiArCS5y ZWxlYXNlCQk9IHZmaW9fbWRldl9wY2lfcmVsZWFzZSwNCj4gPiA+ID4gKw0KPiA+ID4gPiArCS5y ZWFkCQkJPSB2ZmlvX21kZXZfcGNpX3JlYWQsDQo+ID4gPiA+ICsJLndyaXRlCQkJPSB2ZmlvX21k ZXZfcGNpX3dyaXRlLA0KPiA+ID4gPiArCS5tbWFwCQkJPSB2ZmlvX21kZXZfcGNpX21tYXAsDQo+ ID4gPiA+ICsJLmlvY3RsCQkJPSB2ZmlvX21kZXZfcGNpX2lvY3RsLA0KPiA+ID4gPiArfTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCB2ZmlvX21kZXZfcGNpX2RyaXZlcl9wcm9iZShz dHJ1Y3QgcGNpX2RldiAqcGRldiwNCj4gPiA+ID4gKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHBj aV9kZXZpY2VfaWQgKmlkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCB2ZmlvX3BjaV9k ZXZpY2UgKnZkZXY7DQo+ID4gPiA+ICsJaW50IHJldDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWlm IChwZGV2LT5oZHJfdHlwZSAhPSBQQ0lfSEVBREVSX1RZUEVfTk9STUFMKQ0KPiA+ID4gPiArCQly ZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCS8qDQo+ID4gPiA+ICsJICogUHJl dmVudCBiaW5kaW5nIHRvIFBGcyB3aXRoIFZGcyBlbmFibGVkLCB0aGlzIHRvbyBlYXNpbHkgYWxs b3dzDQo+ID4gPiA+ICsJICogdXNlcnNwYWNlIGluc3RhbmNlIHdpdGggVkZzIGFuZCBQRnMgZnJv bSB0aGUgc2FtZSBkZXZpY2UsIHdoaWNoDQo+ID4gPiA+ICsJICogY2Fubm90IHdvcmsuICBEaXNh YmxpbmcgU1ItSU9WIGhlcmUgd291bGQgaW5pdGlhdGUgcmVtb3ZpbmcgdGhlDQo+ID4gPiA+ICsJ ICogVkZzLCB3aGljaCB3b3VsZCB1bmJpbmQgdGhlIGRyaXZlciwgd2hpY2ggaXMgcHJvbmUgdG8g YmxvY2tpbmcNCj4gPiA+ID4gKwkgKiBpZiB0aGF0IFZGIGlzIGFsc28gaW4gdXNlIGJ5IHZmaW8t cGNpIG9yIHZmaW8tbWRldi1wY2kuIEp1c3QNCj4gPiA+ID4gKwkgKiByZWplY3QgdGhlc2UgUEZz IGFuZCBsZXQgdGhlIHVzZXIgc29ydCBpdCBvdXQuDQo+ID4gPiA+ICsJICovDQo+ID4gPiA+ICsJ aWYgKHBjaV9udW1fdmYocGRldikpIHsNCj4gPiA+ID4gKwkJcGNpX3dhcm4ocGRldiwgIkNhbm5v dCBiaW5kIHRvIFBGIHdpdGggU1ItSU9WIGVuYWJsZWRcbiIpOw0KPiA+ID4gPiArCQlyZXR1cm4g LUVCVVNZOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCXZkZXYgPSBremFsbG9j KHNpemVvZigqdmRldiksIEdGUF9LRVJORUwpOw0KPiA+ID4gPiArCWlmICghdmRldikNCj4gPiA+ ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwl2ZGV2LT5wZGV2ID0g cGRldjsNCj4gPiA+ID4gKwl2ZGV2LT5pcnFfdHlwZSA9IFZGSU9fUENJX05VTV9JUlFTOw0KPiA+ ID4gPiArCW11dGV4X2luaXQoJnZkZXYtPmlnYXRlKTsNCj4gPiA+ID4gKwlzcGluX2xvY2tfaW5p dCgmdmRldi0+aXJxbG9jayk7DQo+ID4gPiA+ICsJbXV0ZXhfaW5pdCgmdmRldi0+aW9ldmVudGZk c19sb2NrKTsNCj4gPiA+ID4gKwlJTklUX0xJU1RfSEVBRCgmdmRldi0+aW9ldmVudGZkc19saXN0 KTsNCj4gPiA+ID4gKwl2ZGV2LT5ub2ludHhtYXNrID0gbm9pbnR4bWFzazsNCj4gPiA+ID4gKyNp ZmRlZiBDT05GSUdfVkZJT19QQ0lfVkdBDQo+ID4gPiA+ICsJdmRldi0+ZGlzYWJsZV92Z2EgPSBk aXNhYmxlX3ZnYTsNCj4gPiA+ID4gKyNlbmRpZg0KPiA+ID4gPiArCXZkZXYtPmRpc2FibGVfaWRs ZV9kMyA9IGRpc2FibGVfaWRsZV9kMzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXBjaV9zZXRfZHJ2 ZGF0YShwZGV2LCB2ZGV2KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldCA9IHZmaW9fcGNpX3Jl Zmxja19hdHRhY2godmRldik7DQo+ID4gPiA+ICsJaWYgKHJldCkgew0KPiA+ID4gPiArCQlwY2lf c2V0X2RydmRhdGEocGRldiwgTlVMTCk7DQo+ID4gPiA+ICsJCWtmcmVlKHZkZXYpOw0KPiA+ID4g PiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCWlmICh2 ZmlvX3BjaV9pc192Z2EocGRldikpIHsNCj4gPiA+ID4gKwkJdmdhX2NsaWVudF9yZWdpc3Rlcihw ZGV2LCB2ZGV2LCBOVUxMLCB2ZmlvX3BjaV9zZXRfdmdhX2RlY29kZSk7DQo+ID4gPiA+ICsJCXZn YV9zZXRfbGVnYWN5X2RlY29kaW5nKHBkZXYsDQo+ID4gPiA+ICsJCQkJCXZmaW9fcGNpX3NldF92 Z2FfZGVjb2RlKHZkZXYsIGZhbHNlKSk7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsJdmZpb19wY2lfcHJvYmVfcG93ZXJfc3RhdGUodmRldik7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KwlpZiAoIXZkZXYtPmRpc2FibGVfaWRsZV9kMykgew0KPiA+ID4gPiArCQkvKg0KPiA+ID4gPiAr CQkgKiBwY2ktY29yZSBzZXRzIHRoZSBkZXZpY2UgcG93ZXIgc3RhdGUgdG8gYW4gdW5rbm93biB2 YWx1ZSBhdA0KPiA+ID4gPiArCQkgKiBib290dXAgYW5kIGFmdGVyIGJlaW5nIHJlbW92ZWQgZnJv bSBhIGRyaXZlci4gIFRoZSBvbmx5DQo+ID4gPiA+ICsJCSAqIHRyYW5zaXRpb24gaXQgYWxsb3dz IGZyb20gdGhpcyB1bmtub3duIHN0YXRlIGlzIHRvIEQwLCB3aGljaA0KPiA+ID4gPiArCQkgKiB0 eXBpY2FsbHkgaGFwcGVucyB3aGVuIGEgZHJpdmVyIGNhbGxzIHBjaV9lbmFibGVfZGV2aWNlKCku DQo+ID4gPiA+ICsJCSAqIFdlJ3JlIG5vdCByZWFkeSB0byBlbmFibGUgdGhlIGRldmljZSB5ZXQs IGJ1dCB3ZSBkbyB3YW50IHRvDQo+ID4gPiA+ICsJCSAqIGJlIGFibGUgdG8gZ2V0IHRvIEQzLiAg VGhlcmVmb3JlIGZpcnN0IGRvIGEgRDAgdHJhbnNpdGlvbg0KPiA+ID4gPiArCQkgKiBiZWZvcmUg Z29pbmcgdG8gRDMuDQo+ID4gPiA+ICsJCSAqLw0KPiA+ID4gPiArCQl2ZmlvX3BjaV9zZXRfcG93 ZXJfc3RhdGUodmRldiwgUENJX0QwKTsNCj4gPiA+ID4gKwkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0 YXRlKHZkZXYsIFBDSV9EM2hvdCk7DQo+ID4gPiA+ICsJfQ0KPiA+ID4NCj4gPiA+IERpdHRvIGhl cmUgYW5kIHJlbW92ZSBiZWxvdywgdGhpcyBzZWVtcyBsaWtlIGJvaWxlcnBsYXRlIHRoYXQgc2hv dWxkbid0DQo+ID4gPiBiZSBkdXBsaWNhdGVkIHBlciBsZWFmIG1vZHVsZS4gIFRoYW5rcywNCj4g Pg0KPiA+IFN1cmUsIHRoZSBjb2RlIHNuaXBwZXQgYWJvdmUgbWF5IGFsc28gYmUgYWJzdHJhY3Rl ZCB0byBiZSBhIGNvbW1vbiBBUEkNCj4gPiBwcm92aWRlZCBieSB2ZmlvLXBjaS1jb21tb24ua28u IDotKQ0KPiA+DQo+ID4gSSBoYXZlIGEgY29uZnVzaW9uIHdoaWNoIG1heSBuZWVkIGNvbmZpcm0g d2l0aCB5b3UuIERvIHlvdSBhbHNvIHdhbnQgdGhlDQo+ID4gYmVsb3cgY29kZSBzbmlwcGV0IGJl IHBsYWNlZCBpbiB0aGUgdmZpby1wY2ktY29tbW9uLmtvIGFuZCBleHBvc2VkIG91dA0KPiA+IGFz IGEgd3JhcHBlZCBBUEk/IFRodXMgaXQgY2FuIGJlIHVzZWQgYnkgc2FtcGxlIGRyaXZlciBhbmQg b3RoZXIgZnV0dXJlDQo+ID4gZHJpdmVycyB3aGljaCB3YW50IHRvIHdyYXAgUENJIGRldmljZSBh cyBhIG1kZXYuIE1heSBiZSBJIG1pc3VuZHN0b29kDQo+ID4geW91ciBjb21tZW50LiA6LSgNCj4g DQo+IA0KPiBJIHRoaW5rIHNvbWUgc29ydCBvZiB2ZmlvX3BjaV9jb21tb25fe3Byb2JlLHJlbW92 ZX0oKSB3b3VsZCBiZSBhDQo+IHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQgd2hlcmUgdGhlIHJl c3BlY3RpdmUgbW9kdWxlIF97cHJvYmUscmVtb3ZlfQ0KPiBmdW5jdGlvbnMgd291bGQgY2FsbCBp bnRvIHRoZXNlIGFuZCBhZGQgdGhlaXIgbW9kdWxlIHNwZWNpZmljIGNvZGUNCj4gYXJvdW5kIGl0 LiAgVGhhdCB3b3VsZCBhdCBsZWFzdCBnaXZlIHVzIGEgcG9pbnQgdG8gY2xlYW51cCB0aGluZ3Mg dGhhdA0KPiBhcmUgb25seSB1c2VkIGJ5IHRoZSBjb21tb24gY29kZSBpbiB0aGUgY29tbW9uIGNv ZGUuDQoNCnN1cmUsIEkgY2FuIHN0YXJ0IGZyb20gaGVyZSBpZiB3ZSBhcmUgc3RpbGwgZ29pbmcg d2l0aCB0aGlzIGRpcmVjdGlvbi4gOi0pDQoNCj4gSSdtIHN0aWxsIHN0cnVnZ2xpbmcgaG93IHdl IG1ha2UgdGhpcyB1c2VyIGNvbnN1bWFibGUgc2hvdWxkIHdlIGFjY2VwdA0KPiB0aGlzIGFuZCBw cm9ncmVzcyBiZXlvbmQgYSBwcm9vZiBvZiBjb25jZXB0IHNhbXBsZSBkcml2ZXIgdGhvdWdoLiAg Rm9yDQo+IGV4YW1wbGUsIGlmIGEgdmVuZG9yIGFjdHVhbGx5IGltcGxlbWVudHMgYW4gbWRldiB3 cmFwcGVyIGRyaXZlciBvciBldmVuDQo+IGp1c3QgYSBkZXZpY2Ugc3BlY2lmaWMgdmZpby1wY2kg d3JhcHBlciwgdG8gZW5hYmxlIGZvciBleGFtcGxlDQo+IG1pZ3JhdGlvbiBzdXBwb3J0LCBob3cg ZG9lcyBhIHVzZXIga25vdyB3aGljaCBkcml2ZXIgdG8gdXNlIGZvciBlYWNoDQo+IHBhcnRpY3Vs YXIgZmVhdHVyZT8gIFRoZSBiZXN0IEkgY2FuIGNvbWUgdXAgd2l0aCBzbyBmYXIgaXMgc29tZXRo aW5nDQo+IGxpa2Ugd2FzIGRvbmUgZm9yIHZmaW8tcGxhdGZvcm0gcmVzZXQgbW9kdWxlcy4gIEZv ciBpbnN0YW5jZSBhIG1vZHVsZQ0KPiB0aGF0IGV4dGVuZHMgZmVhdHVyZXMgZm9yIGEgZ2l2ZW4g ZGV2aWNlIGluIHZmaW8tcGNpIG1pZ2h0IHJlZ2lzdGVyIGFuDQo+IG9wcyBzdHJ1Y3R1cmUgYW5k IGlkIHRhYmxlIHdpdGggdmZpby1wY2ksIGFsb25nIHdpdGggY3JlYXRpbmcgYSBtb2R1bGUNCj4g YWxpYXMgKG9yIGFsaWFzZXMpIGZvciB0aGUgZGV2aWNlcyBpdCBzdXBwb3J0cy4gIFdoZW4gYSBk ZXZpY2UgaXMNCj4gcHJvYmVkIGJ5IHZmaW8tcGNpIGl0IGNvdWxkIHRyeSB0byBtYXRjaCBhZ2Fp bnN0IHJlZ2lzdGVyZWQgaWQgdGFibGVzDQo+IHRvIGZpbmQgYSBkZXZpY2Ugc3BlY2lmaWMgb3Bz IHN0cnVjdHVyZSwgaWYgb25lIGlzIG5vdCBmb3VuZCBpdCBjb3VsZA0KPiBkbyBhIHJlcXVlc3Rf bW9kdWxlIHVzaW5nIHRoZSBQQ0kgdmVuZG9yIGFuZCBkZXZpY2UgSURzIGFuZCBzb21lIHVuaXF1 ZQ0KPiB2ZmlvLXBjaSBzdHJpbmcsIGNoZWNrIGFnYWluLCBhbmQgdXNlIHRoZSBkZWZhdWx0IG9w cyBpZiBkZXZpY2UNCj4gc3BlY2lmaWMgb3BzIGFyZSBzdGlsbCBub3QgcHJlc2VudC4gIFRoYXQg d291bGQgc29sdmUgdGhlIHByb2JsZW0gb24NCj4gdGhlIHZmaW8tcGNpIHNpZGUuIA0KDQp5ZWFo LCB0aGlzIGlzIGxldHRpbmcgdmZpby1wY2kgdG8gaW52b2tlIHRoZSBvcHMgZnJvbSB2ZW5kb3Ig ZHJpdmVycy9tb2R1bGVzLg0KSSB0aGluayB0aGlzIGlzIHdoYXQgWWFuIGlzIHRyeWluZyB0byBk by4NCg0KPiBGb3IgbWRldnMsIEkgdGVuZCB0byBhc3N1bWUgdGhhdCB0aGlzIHZmaW8tbWRldi1w Y2kNCj4gbWV0YSBkcml2ZXIgaXMgYW4gYW5vbWFseSBvbmx5IGZvciB0aGUgcHVycG9zZSBvZiBj cmVhdGluZyBhIGdlbmVyaWMNCj4gdGVzdCBkZXZpY2UgZm9yIElPTU1VIGJhY2tlZCBtZGV2cyBh bmQgdGhhdCAicmVhbCIgbWRldiB2ZW5kb3IgZHJpdmVycw0KPiB3aWxsIGp1c3QgYmUgbWRldiBl bmxpZ2h0ZW5lZCBob3N0IGRyaXZlcnMsIGxpa2UgaTkxNSBhbmQgbnZpZGlhIGFyZQ0KPiBub3cu ICBUaGFua3MsDQoNCnllcywgdGhpcyB2ZmlvLW1kZXYtcGNpIG1ldGEgZHJpdmVyIGlzIGp1c3Qg Y3JlYXRpbmcgYSB0ZXN0IGRldmljZS4NCkRvIHdlIHN0aWxsIGdvIHdpdGggdGhlIGN1cnJlbnQg ZGlyZWN0aW9uLCBvciBmaW5kIGFueSBvdGhlciB3YXkNCndoaWNoIG1heSBiZSBlYXNpZXIgZm9y IGFkZGluZyB0aGlzIG1ldGEgZHJpdmVyPw0KDQpDb21wYXJlZCB3aXRoIHRoZSAicmVhbCIgbWRl diB2ZW5kb3IgZHJpdmVycywgaXQgaXMgbGlrZSBhDQoidmZpby1wY2kgKyBkdW1teSBtZGV2IG9w cyIgZHJpdmVyLiBkdW1teSBtZGV2IG9wcyBtZWFucw0Kbm8gdmVuZG9yIHNwZWNpZmljIGhhbmRs aW5nIGFuZCBwYXNzdGhydSB0byB2ZmlvLXBjaSBjb2RlcyBkaXJlY3RseS4NCg0KSSB0aGluayB0 aGlzIG1ldGEgZHJpdmVyIGlzIGV2ZW4gbGlnaHRlciB0aGFuIHRoZSAicmVhbCIgbWRldiB2ZW5k b3INCmRyaXZlcnMuIHJpZ2h0PyBJcyBpdCBwb3NzaWJsZSB0byBsZXQgdGhpcyBkcml2ZXIgZm9s bG93IHRoZSB3YXkgb2YNCnJlZ2lzdGVyaW5nIG9wcyBzdHJ1Y3R1cmUgYW5kIGlkIHRhYmxlIHdp dGggdmZpby1wY2k/IFRoZSBvYnN0YWNsZQ0KSSBjYW4gc2VlIGlzIHRoZSBtZXRhIGRyaXZlciBp cyBhIGdlbmVyaWMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBoYXMNCm5vIGlkIHRhYmxlLi4uIEZv ciB0aGUgInJlYWwiIG1kZXYgdmVuZG9yIGRyaXZlcnMsIHRoZXkgbmF0dXJhbGx5IGhhdmUNCnN1 Y2ggaW5mby4gSWYgdmZpby1tZGV2LXBjaSBjYW4gYWxzbyBnZXQgdGhlIGlkIGluZm8gd2l0aG91 dCBiaW5kaW5nDQp0byBhIGRldmljZSwgaXQgbWF5IGJlIHBvc3NpYmxlLiB0aG91Z2h0cz8gOi0p DQoNClRoYW5rcywNCllpIExpdQ0KDQo+IA0KPiBBbGV4DQoNClRoYW5rcywNCllpIExpdQ0K