Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp107157ybh; Fri, 6 Mar 2020 17:05:58 -0800 (PST) X-Google-Smtp-Source: ADFU+vtmjRQB7KdPfXw5PgSnkZA9chHs3KlU+5IEZUmvZodogTQa7ZkzipsTs4UgT0bnKOjoxmkL X-Received: by 2002:a05:6830:143:: with SMTP id j3mr4776045otp.355.1583543158388; Fri, 06 Mar 2020 17:05:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583543158; cv=none; d=google.com; s=arc-20160816; b=jhu/as/3BiCIA+bpDsjlC5/VGMKbkPPAZhlAfKO5BL6pg1YzqP45nBqjbF1wtpEIx0 lPiiw7pZkDAiM0U//jRNgGpZblBZ/TIMLBrFmxnul8qxX3NVpNsqNNaxrZikzjZg4e9z vUxQzSnj8zfFQcySEMWj7cNFg1CCkrGWga4ARn1Gt1fZ/3c8fIoQqDGfFYGodvBuNP8Y csVS7EcuncWMApQusHI4kB2FKSPh8VyZtm4QEg9U/XN69Soo3XYLLkuDSVZCh/VYXGYu 99TQ6Hvn2ZSULf6IeD2DfTessiQJFcmnGPNQ5LyijUOrMmaEgcWGgy25Ji4hHVhembHx rYwQ== 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=4E5FyC7WURhWAlqR28HqGthUv5af8oNoPyEm99Y/f/o=; b=fbxd41MFZKSYQQwci7Xul5okSrqYZHlCVWzBCvHTmib+p5z3312fFiWD40Pm9Bp2eS nZZUEqhlxFDPpglp9YbEAknE3rPjAU+8N2xSspAkAE3rxkF0KxeV3FlhEF0rssOvE1qm IjPVkwBUn1HDlrwZJ3jdc6/kBEq5AUmI3LrYdnUG1Hl5cUAP5Ib4g2j5UrFV77KjsLxS 6s+dBaeEO9iyf+PhVu/UEEyw7o0jhPLWC/kxfZQrl2R6wliG8ls3NoWPv0eik3KStXES dUTSS8eOfNP8ED4LXFPL3gD3qoumt6m4o1x5Z2cdDuCEkCaygtZHl1y7dRmmCah6gQQY 8+Hw== 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 w7si2367016otj.310.2020.03.06.17.05.46; Fri, 06 Mar 2020 17:05:58 -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 S1727052AbgCGBEr (ORCPT + 99 others); Fri, 6 Mar 2020 20:04:47 -0500 Received: from mga18.intel.com ([134.134.136.126]:48078 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726307AbgCGBEq (ORCPT ); Fri, 6 Mar 2020 20:04:46 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2020 17:04:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,524,1574150400"; d="scan'208";a="414116047" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga005.jf.intel.com with ESMTP; 06 Mar 2020 17:04:44 -0800 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 6 Mar 2020 17:04:44 -0800 Received: from shsmsx153.ccr.corp.intel.com (10.239.6.53) by FMSMSX154.amr.corp.intel.com (10.18.116.70) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 6 Mar 2020 17:04:43 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.206]) by SHSMSX153.ccr.corp.intel.com ([169.254.12.96]) with mapi id 14.03.0439.000; Sat, 7 Mar 2020 09:04:41 +0800 From: "Tian, Kevin" To: Alex Williamson CC: "kvm@vger.kernel.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "dev@dpdk.org" , "mtosatti@redhat.com" , "thomas@monjalon.net" , "bluca@debian.org" , "jerinjacobk@gmail.com" , "Richardson, Bruce" , "cohuck@redhat.com" Subject: RE: [PATCH v2 3/7] vfio/pci: Introduce VF token Thread-Topic: [PATCH v2 3/7] vfio/pci: Introduce VF token Thread-Index: AQHV51YI52su8gffRkOPjcjW9Q2JM6grPNwAgA6jCgCAAW544P//95cAgAEiRIA= Date: Sat, 7 Mar 2020 01:04:41 +0000 Message-ID: References: <158213716959.17090.8399427017403507114.stgit@gimli.home> <158213845243.17090.15563257812711358228.stgit@gimli.home> <20200305111734.4025ce2f@w520.home> <20200306083906.13c9a762@x1.home> In-Reply-To: <20200306083906.13c9a762@x1.home> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYmE4MzFkNzctOGUwNS00MDRmLTk1ZjctOGVkNDIzNjA0NjhjIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMUF3UGFtcEJDNGtMd2xTSTREbTJNN2RHdzN2TDNcL2tcL1NxamJSSkxlNVVcL04wS09BWG0yTEN5QVwvMzFCVnUrc3cifQ== dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action 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 PiBGcm9tOiBBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPg0KPiBT ZW50OiBGcmlkYXksIE1hcmNoIDYsIDIwMjAgMTE6MzkgUE0NCj4gDQo+IE9uIEZyaSwgNiBNYXIg MjAyMCAwODozMjo0MCArMDAwMA0KPiAiVGlhbiwgS2V2aW4iIDxrZXZpbi50aWFuQGludGVsLmNv bT4gd3JvdGU6DQo+IA0KPiA+ID4gRnJvbTogQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1z b25AcmVkaGF0LmNvbT4NCj4gPiA+IFNlbnQ6IEZyaWRheSwgTWFyY2ggNiwgMjAyMCAyOjE4IEFN DQo+ID4gPg0KPiA+ID4gT24gVHVlLCAyNSBGZWIgMjAyMCAwMjo1OTozNyArMDAwMA0KPiA+ID4g IlRpYW4sIEtldmluIiA8a2V2aW4udGlhbkBpbnRlbC5jb20+IHdyb3RlOg0KPiA+ID4NCj4gPiA+ ID4gPiBGcm9tOiBBbGV4IFdpbGxpYW1zb24NCj4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgRmVi cnVhcnkgMjAsIDIwMjAgMjo1NCBBTQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSWYgd2UgZW5hYmxl IFNSLUlPViBvbiBhIHZmaW8tcGNpIG93bmVkIFBGLCB0aGUgcmVzdWx0aW5nIFZGcyBhcmUgbm90 DQo+ID4gPiA+ID4gZnVsbHkgaXNvbGF0ZWQgZnJvbSB0aGUgUEYuICBUaGUgUEYgY2FuIGFsd2F5 cyBjYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlDQo+ID4gPiA+ID4gdG8gdGhlIFZGLCBldmVuIGlm IGJ5IHNpbXBseSByZXNldHRpbmcgaXRzZWxmLiAgVGhlIGRlZ3JlZSB0byB3aGljaCBhIFBGDQo+ ID4gPiA+ID4gY2FuIGFjY2VzcyB0aGUgZGF0YSBwYXNzZWQgdGhyb3VnaCBhIFZGIG9yIGludGVy ZmVyZSB3aXRoIGl0cw0KPiBvcGVyYXRpb24NCj4gPiA+ID4gPiBpcyBkZXBlbmRlbnQgb24gYSBn aXZlbiBTUi1JT1YgaW1wbGVtZW50YXRpb24uICBUaGVyZWZvcmUgd2Ugd2FudA0KPiB0bw0KPiA+ ID4gPiA+IGF2b2lkIGEgc2NlbmFyaW8gd2hlcmUgYW4gZXhpc3RpbmcgdmZpby1wY2kgYmFzZWQg dXNlcnNwYWNlIGRyaXZlcg0KPiBtaWdodA0KPiA+ID4gPiA+IGFzc3VtZSB0aGUgUEYgZHJpdmVy IGlzIHRydXN0ZWQsIGZvciBleGFtcGxlIGFzc2lnbmluZyBhIFBGIHRvIG9uZSBWTQ0KPiA+ID4g PiA+IGFuZCBWRiB0byBhbm90aGVyIHdpdGggc29tZSBleHBlY3RhdGlvbiBvZiBpc29sYXRpb24u ICBJT01NVQ0KPiBncm91cGluZw0KPiA+ID4gPiA+IGNvdWxkIGJlIGEgc29sdXRpb24gdG8gdGhp cywgYnV0IGltcG9zZXMgYW4gdW5uZWNlc3NhcmlseSBzdHJvbmcNCj4gPiA+ID4gPiByZWxhdGlv bnNoaXAgYmV0d2VlbiBQRiBhbmQgVkYgZHJpdmVycyBpZiB0aGV5IG5lZWQgdG8gb3BlcmF0ZSB3 aXRoDQo+IHRoZQ0KPiA+ID4gPiA+IHNhbWUgSU9NTVUgY29udGV4dC4gIEluc3RlYWQgd2UgaW50 cm9kdWNlIGEgIlZGIHRva2VuIiwgd2hpY2ggaXMNCj4gPiA+ID4gPiBlc3NlbnRpYWxseSBqdXN0 IGEgc2hhcmVkIHNlY3JldCBiZXR3ZWVuIFBGIGFuZCBWRiBkcml2ZXJzLA0KPiBpbXBsZW1lbnRl ZA0KPiA+ID4gPiA+IGFzIGEgVVVJRC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoZSBWRiB0b2tl biBjYW4gYmUgc2V0IGJ5IGEgdmZpby1wY2kgYmFzZWQgUEYgZHJpdmVyIGFuZCBtdXN0IGJlDQo+ IGtub3duDQo+ID4gPiA+ID4gYnkgdGhlIHZmaW8tcGNpIGJhc2VkIFZGIGRyaXZlciBpbiBvcmRl ciB0byBnYWluIGFjY2VzcyB0byB0aGUgZGV2aWNlLg0KPiA+ID4gPiA+IFRoaXMgYWxsb3dzIHRo ZSBkZWdyZWUgdG8gd2hpY2ggdGhpcyBWRiB0b2tlbiBpcyBjb25zaWRlcmVkIHNlY3JldCB0bw0K PiBiZQ0KPiA+ID4gPiA+IGRldGVybWluZWQgYnkgdGhlIGFwcGxpY2F0aW9ucyBhbmQgZW52aXJv bm1lbnQuICBGb3IgZXhhbXBsZSBhIFZNDQo+ID4gPiBtaWdodA0KPiA+ID4gPiA+IGdlbmVyYXRl IGEgcmFuZG9tIFVVSUQga25vd24gb25seSBpbnRlcm5hbGx5IHRvIHRoZSBoeXBlcnZpc29yDQo+ IHdoaWxlIGENCj4gPiA+ID4gPiB1c2Vyc3BhY2UgbmV0d29ya2luZyBhcHBsaWFuY2UgbWlnaHQg dXNlIGEgc2hhcmVkLCBvciBldmVuIHdlbGwNCj4ga25vdywNCj4gPiA+ID4gPiBVVUlEIGFtb25n IHRoZSBhcHBsaWNhdGlvbiBkcml2ZXJzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVG8gaW5jb3Jw b3JhdGUgdGhpcyBWRiB0b2tlbiwgdGhlIFZGSU9fR1JPVVBfR0VUX0RFVklDRV9GRA0KPiBpbnRl cmZhY2UNCj4gPiA+IGlzDQo+ID4gPiA+ID4gZXh0ZW5kZWQgdG8gYWNjZXB0IGtleT12YWx1ZSBw YWlycyBpbiBhZGRpdGlvbiB0byB0aGUgZGV2aWNlIG5hbWUuDQo+IFRoaXMNCj4gPiA+ID4gPiBh bGxvd3MgdXMgdG8gbW9zdCBlYXNpbHkgZGVueSB1c2VyIGFjY2VzcyB0byB0aGUgZGV2aWNlIHdp dGhvdXQgcmlzaw0KPiA+ID4gPiA+IHRoYXQgZXhpc3RpbmcgdXNlcnNwYWNlIGRyaXZlcnMgYXNz dW1lIHJlZ2lvbiBvZmZzZXRzLCBJUlFzLCBhbmQgb3RoZXINCj4gPiA+ID4gPiBkZXZpY2UgZmVh dHVyZXMsIGxlYWRpbmcgdG8gbW9yZSBlbGFib3JhdGUgZXJyb3IgcGF0aHMuICBUaGUgZm9ybWF0 IG9mDQo+ID4gPiA+ID4gdGhlc2Ugb3B0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZSB0aGUgZm9y bToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICIkREVWSUNFX05BTUUgJE9QVElPTjE9JFZBTFVFMSAk T1BUSU9OMj0kVkFMVUUyIg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2hlcmUgdGhlIGRldmljZSBu YW1lIGlzIGFsd2F5cyBwcm92aWRlZCBmaXJzdCBmb3IgY29tcGF0aWJpbGl0eSBhbmQNCj4gPiA+ ID4gPiBhZGRpdGlvbmFsIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBhIHNwYWNlIHNlcGFyYXRl ZCBsaXN0LiAgVGhlDQo+ID4gPiA+ID4gcmVsYXRpb24gYmV0d2VlbiBhbmQgcmVxdWlyZW1lbnRz IGZvciB0aGUgYWRkaXRpb25hbCBvcHRpb25zIHdpbGwgYmUNCj4gPiA+ID4gPiB2ZmlvIGJ1cyBk cml2ZXIgZGVwZW5kZW50LCBob3dldmVyIHVua25vd24gb3IgdW51c2VkIG9wdGlvbg0KPiB3aXRo aW4NCj4gPiA+IHRoaXMNCj4gPiA+ID4gPiBzY2hlbWEgc2hvdWxkIHJldHVybiBlcnJvci4gIFRo aXMgYWxsb3cgZm9yIGZ1dHVyZSB1c2Ugb2YgdW5rbm93bg0KPiA+ID4gPiA+IG9wdGlvbnMgYXMg d2VsbCBhcyBhIHBvc2l0aXZlIGluZGljYXRpb24gdG8gdGhlIHVzZXIgdGhhdCBhbiBvcHRpb24g aXMNCj4gPiA+ID4gPiB1c2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQW4gZXhhbXBsZSBWRiB0 b2tlbiBvcHRpb24gd291bGQgdGFrZSB0aGlzIGZvcm06DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAi MDAwMDowMzowMC4wIHZmX3Rva2VuPTJhYjc0OTI0LWMzMzUtNDVmNC05YjE2LTg1NjllNWIwODI1 OCINCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFdoZW4gYWNjZXNzaW5nIGEgVkYgd2hlcmUgdGhlIFBG IGlzIG1ha2luZyB1c2Ugb2YgdmZpby1wY2ksIHRoZSB1c2VyDQo+ID4gPiA+ID4gTVVTVCBwcm92 aWRlIHRoZSBjdXJyZW50IHZmX3Rva2VuLiAgV2hlbiBhY2Nlc3NpbmcgYSBQRiwgdGhlIHVzZXIN Cj4gTVVTVA0KPiA+ID4gPiA+IHByb3ZpZGUgdGhlIGN1cnJlbnQgdmZfdG9rZW4gSUYgdGhlcmUg YXJlIGFjdGl2ZSBWRiB1c2VycyBvciBNQVkNCj4gcHJvdmlkZQ0KPiA+ID4gPiA+IGEgdmZfdG9r ZW4gaW4gb3JkZXIgdG8gc2V0IHRoZSBjdXJyZW50IFZGIHRva2VuIHdoZW4gbm8gVkYgdXNlcnMg YXJlDQo+ID4gPiA+ID4gYWN0aXZlLiAgVGhlIGZvcm1lciByZXF1aXJlbWVudCBhc3N1cmVzIFZG IHVzZXJzIHRoYXQgYW4NCj4gdW5hc3NvY2lhdGVkDQo+ID4gPiA+ID4gZHJpdmVyIGNhbm5vdCB1 c3VycCB0aGUgUEYgZGV2aWNlLiAgVGhlc2Ugc2VtYW50aWNzIGFsc28gaW1wbHkgdGhhdCBhDQo+ ID4gPiA+ID4gVkYgdG9rZW4gTVVTVCBiZSBzZXQgYnkgYSBQRiBkcml2ZXIgYmVmb3JlIFZGIGRy aXZlcnMgY2FuIGFjY2VzcyB0aGVpcg0KPiA+ID4gPiA+IGRldmljZSwgdGhlIGRlZmF1bHQgdG9r ZW4gaXMgcmFuZG9tIGFuZCBtZWNoYW5pc21zIHRvIHJlYWQgdGhlDQo+IHRva2VuDQo+ID4gPiBh cmUNCj4gPiA+ID4gPiBub3QgcHJvdmlkZWQgaW4gb3JkZXIgdG8gcHJvdGVjdCB0aGUgVkYgdG9r ZW4gb2YgcHJldmlvdXMgdXNlcnMuICBVc2UNCj4gb2YNCj4gPiA+ID4gPiB0aGUgdmZfdG9rZW4g b3B0aW9uIG91dHNpZGUgb2YgdGhlc2UgY2FzZXMgd2lsbCByZXR1cm4gYW4gZXJyb3IsIGFzDQo+ ID4gPiA+ID4gZGlzY3Vzc2VkIGFib3ZlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU2lnbmVkLW9m Zi1ieTogQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4NCj4gPiA+ ID4gPiAtLS0NCj4gPiA+ID4gPiAgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jICAgICAgICAg fCAgMTk4DQo+ID4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g PiA+ID4gPiAgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2YXRlLmggfCAgICA4ICsNCj4g PiA+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZp b19wY2kuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYw0KPiA+ID4gPiA+IGluZGV4IDJl YzZjMzFkMGFiMC4uOGRkNmVmOTU0M2NhIDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMv dmZpby9wY2kvdmZpb19wY2kuYw0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZp b19wY2kuYw0KPiA+ID4gPiA+IEBAIC00NjYsNiArNDY2LDQ0IEBAIHN0YXRpYyB2b2lkIHZmaW9f cGNpX2Rpc2FibGUoc3RydWN0DQo+ID4gPiB2ZmlvX3BjaV9kZXZpY2UNCj4gPiA+ID4gPiAqdmRl dikNCj4gPiA+ID4gPiAgCQl2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QzaG90 KTsNCj4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgcGNp X2RyaXZlciB2ZmlvX3BjaV9kcml2ZXI7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMg c3RydWN0IHZmaW9fcGNpX2RldmljZSAqZ2V0X3BmX3ZkZXYoc3RydWN0IHZmaW9fcGNpX2Rldmlj ZQ0KPiAqdmRldiwNCj4gPiA+ID4gPiArCQkJCQkgICBzdHJ1Y3QgdmZpb19kZXZpY2UgKipwZl9k ZXYpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCXN0cnVjdCBwY2lfZGV2ICpwaHlzZm4gPSBw Y2lfcGh5c2ZuKHZkZXYtPnBkZXYpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWlmICghdmRl di0+cGRldi0+aXNfdmlydGZuKQ0KPiA+ID4gPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArCSpwZl9kZXYgPSB2ZmlvX2RldmljZV9nZXRfZnJvbV9kZXYoJnBoeXNm bi0+ZGV2KTsNCj4gPiA+ID4gPiArCWlmICghKnBmX2RldikNCj4gPiA+ID4gPiArCQlyZXR1cm4g TlVMTDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlpZiAocGNpX2Rldl9kcml2ZXIocGh5c2Zu KSAhPSAmdmZpb19wY2lfZHJpdmVyKSB7DQo+ID4gPiA+ID4gKwkJdmZpb19kZXZpY2VfcHV0KCpw Zl9kZXYpOw0KPiA+ID4gPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArCXJldHVybiB2ZmlvX2RldmljZV9kYXRhKCpwZl9kZXYpOw0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCB2ZmlvX3BjaV92 Zl90b2tlbl91c2VyX2FkZChzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlICp2ZGV2LA0KPiBpbnQNCj4g PiA+IHZhbCkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsJc3RydWN0IHZmaW9fZGV2aWNlICpw Zl9kZXY7DQo+ID4gPiA+ID4gKwlzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlICpwZl92ZGV2ID0gZ2V0 X3BmX3ZkZXYodmRldiwNCj4gJnBmX2Rldik7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJaWYg KCFwZl92ZGV2KQ0KPiA+ID4gPiA+ICsJCXJldHVybjsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KwltdXRleF9sb2NrKCZwZl92ZGV2LT52Zl90b2tlbi0+bG9jayk7DQo+ID4gPiA+ID4gKwlwZl92 ZGV2LT52Zl90b2tlbi0+dXNlcnMgKz0gdmFsOw0KPiA+ID4gPiA+ICsJV0FSTl9PTihwZl92ZGV2 LT52Zl90b2tlbi0+dXNlcnMgPCAwKTsNCj4gPiA+ID4gPiArCW11dGV4X3VubG9jaygmcGZfdmRl di0+dmZfdG9rZW4tPmxvY2spOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCXZmaW9fZGV2aWNl X3B1dChwZl9kZXYpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICBzdGF0 aWMgdm9pZCB2ZmlvX3BjaV9yZWxlYXNlKHZvaWQgKmRldmljZV9kYXRhKQ0KPiA+ID4gPiA+ICB7 DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlICp2ZGV2ID0gZGV2aWNlX2RhdGE7 DQo+ID4gPiA+ID4gQEAgLTQ3Myw2ICs1MTEsNyBAQCBzdGF0aWMgdm9pZCB2ZmlvX3BjaV9yZWxl YXNlKHZvaWQgKmRldmljZV9kYXRhKQ0KPiA+ID4gPiA+ICAJbXV0ZXhfbG9jaygmdmRldi0+cmVm bGNrLT5sb2NrKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAJaWYgKCEoLS12ZGV2LT5yZWZjbnQp KSB7DQo+ID4gPiA+ID4gKwkJdmZpb19wY2lfdmZfdG9rZW5fdXNlcl9hZGQodmRldiwgLTEpOw0K PiA+ID4gPiA+ICAJCXZmaW9fc3BhcHJfcGNpX2VlaF9yZWxlYXNlKHZkZXYtPnBkZXYpOw0KPiA+ ID4gPiA+ICAJCXZmaW9fcGNpX2Rpc2FibGUodmRldik7DQo+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ ID4gQEAgLTQ5OCw2ICs1MzcsNyBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX29wZW4odm9pZCAqZGV2 aWNlX2RhdGEpDQo+ID4gPiA+ID4gIAkJCWdvdG8gZXJyb3I7DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgCQl2ZmlvX3NwYXByX3BjaV9lZWhfb3Blbih2ZGV2LT5wZGV2KTsNCj4gPiA+ID4gPiArCQl2 ZmlvX3BjaV92Zl90b2tlbl91c2VyX2FkZCh2ZGV2LCAxKTsNCj4gPiA+ID4gPiAgCX0NCj4gPiA+ ID4gPiAgCXZkZXYtPnJlZmNudCsrOw0KPiA+ID4gPiA+ICBlcnJvcjoNCj4gPiA+ID4gPiBAQCAt MTI3OCwxMSArMTMxOCwxNDggQEAgc3RhdGljIHZvaWQgdmZpb19wY2lfcmVxdWVzdCh2b2lkDQo+ ID4gPiAqZGV2aWNlX2RhdGEsDQo+ID4gPiA+ID4gdW5zaWduZWQgaW50IGNvdW50KQ0KPiA+ID4g PiA+ICAJbXV0ZXhfdW5sb2NrKCZ2ZGV2LT5pZ2F0ZSk7DQo+ID4gPiA+ID4gIH0NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICtzdGF0aWMgaW50IHZmaW9fcGNpX3ZhbGlkYXRlX3ZmX3Rva2VuKHN0cnVj dCB2ZmlvX3BjaV9kZXZpY2UgKnZkZXYsDQo+ID4gPiA+ID4gKwkJCQkgICAgICBib29sIHZmX3Rv a2VuLCB1dWlkX3QgKnV1aWQpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCS8qDQo+ID4gPiA+ ID4gKwkgKiBUaGVyZSdzIGFsd2F5cyBzb21lIGRlZ3JlZSBvZiB0cnVzdCBvciBjb2xsYWJvcmF0 aW9uDQo+IGJldHdlZW4gU1ItDQo+ID4gPiA+ID4gSU9WDQo+ID4gPiA+ID4gKwkgKiBQRiBhbmQg VkZzLCBldmVuIGlmIGp1c3QgdGhhdCB0aGUgUEYgaG9zdHMgdGhlIFNSLUlPVg0KPiBjYXBhYmls aXR5IGFuZA0KPiA+ID4gPiA+ICsJICogY2FuIGRpc3J1cHQgVkZzIHdpdGggYSByZXNldCwgYnV0 IG9mdGVuIHRoZSBQRiBoYXMgbW9yZQ0KPiBleHBsaWNpdA0KPiA+ID4gPiA+ICsJICogYWNjZXNz IHRvIGRlbnkgc2VydmljZSB0byB0aGUgVkYgb3IgYWNjZXNzIGRhdGEgcGFzc2VkDQo+IHRocm91 Z2ggdGhlDQo+ID4gPiA+ID4gKwkgKiBWRi4gIFdlIHRoZXJlZm9yZSByZXF1aXJlIGFuIG9wdC1p biB2aWEgYSBzaGFyZWQgVkYgdG9rZW4NCj4gKFVVSUQpDQo+ID4gPiA+ID4gdG8NCj4gPiA+ID4g PiArCSAqIHJlcHJlc2VudCB0aGlzIHRydXN0LiAgVGhpcyBib3RoIHByZXZlbnRzIHRoYXQgYSBW RiBkcml2ZXINCj4gbWlnaHQNCj4gPiA+ID4gPiArCSAqIGFzc3VtZSB0aGUgUEYgZHJpdmVyIGlz IGEgdHJ1c3RlZCwgaW4ta2VybmVsIGRyaXZlciwgYW5kIGFsc28NCj4gdGhhdA0KPiA+ID4gPiA+ ICsJICogYSBQRiBkcml2ZXIgbWlnaHQgYmUgcmVwbGFjZWQgd2l0aCBhIHJvZ3VlIGRyaXZlciwg dW5rbm93bg0KPiB0byBpbi0NCj4gPiA+ID4gPiB1c2UNCj4gPiA+ID4gPiArCSAqIFZGIGRyaXZl cnMuDQo+ID4gPiA+ID4gKwkgKg0KPiA+ID4gPiA+ICsJICogVGhlcmVmb3JlIHdoZW4gcHJlc2Vu dGVkIHdpdGggYSBWRiwgaWYgdGhlIFBGIGlzIGEgdmZpbw0KPiBkZXZpY2UgYW5kDQo+ID4gPiA+ ID4gKwkgKiBpdCBpcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLCB0aGUgdXNlciBuZWVk cyB0byBwcm92aWRlDQo+IGEgVkYNCj4gPiA+ID4gPiArCSAqIHRva2VuIHRvIGFjY2VzcyB0aGUg ZGV2aWNlLCBpbiB0aGUgZm9ybSBvZiBhcHBlbmRpbmcgYQ0KPiB2Zl90b2tlbiB0bw0KPiA+ID4g PiA+ICsJICogdGhlIGRldmljZSBuYW1lLCBmb3IgZXhhbXBsZToNCj4gPiA+ID4gPiArCSAqDQo+ ID4gPiA+ID4gKwkgKiAiMDAwMDowNDoxMC4wIHZmX3Rva2VuPWJkOGQ5ZDJiLTVhNWYtNGY1YS1h MjExLQ0KPiBmNTkxNTE0YmExZjMiDQo+ID4gPiA+ID4gKwkgKg0KPiA+ID4gPiA+ICsJICogV2hl biBwcmVzZW50ZWQgd2l0aCBhIFBGIHdoaWNoIGhhcyBWRnMgaW4gdXNlLCB0aGUgdXNlcg0KPiBt dXN0IGFsc28NCj4gPiA+ID4gPiArCSAqIHByb3ZpZGUgdGhlIGN1cnJlbnQgVkYgdG9rZW4gdG8g cHJvdmUgY29sbGFib3JhdGlvbiB3aXRoDQo+IGV4aXN0aW5nDQo+ID4gPiA+ID4gKwkgKiBWRiB1 c2Vycy4gIElmIFZGcyBhcmUgbm90IGluIHVzZSwgdGhlIFZGIHRva2VuIHByb3ZpZGVkIGZvcg0K PiB0aGUgUEYNCj4gPiA+ID4gPiArCSAqIGRldmljZSB3aWxsIGFjdCB0byBzZXQgdGhlIFZGIHRv a2VuLg0KPiA+ID4gPiA+ICsJICoNCj4gPiA+ID4gPiArCSAqIElmIHRoZSBWRiB0b2tlbiBpcyBw cm92aWRlZCBidXQgdW51c2VkLCBhIGZhdWx0IGlzIGdlbmVyYXRlZC4NCj4gPiA+ID4NCj4gPiA+ ID4gZmF1bHQtPmVycm9yLCBvdGhlcndpc2UgaXQgaXMgZWFzeSB0byBjb25zaWRlciBhIENQVSBm YXVsdC4g8J+Yig0KPiA+ID4NCj4gPiA+IE9rLCBJIGNhbiBtYWtlIHRoYXQgY2hhbmdlLCBidXQg SSB0aGluayB5b3UgbWlnaHQgaGF2ZSBhIHVuaXF1ZQ0KPiA+ID4gYmFja2dyb3VuZCB0byBtYWtl IGEgbGVhcCB0aGF0IGEgdXNlcnNwYWNlIGlvY3RsIGNhbiB0cmlnZ2VyIGEgQ1BVDQo+ID4gPiBm YXVsdCA7KQ0KPiA+ID4NCj4gPiA+ID4gPiArCSAqLw0KPiA+ID4gPiA+ICsJaWYgKCF2ZGV2LT5w ZGV2LT5pc192aXJ0Zm4gJiYgIXZkZXYtPnZmX3Rva2VuICYmICF2Zl90b2tlbikNCj4gPiA+ID4g PiArCQlyZXR1cm4gMDsgLyogTm8gVkYgdG9rZW4gcHJvdmlkZWQgb3IgcmVxdWlyZWQgKi8NCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKwlpZiAodmRldi0+cGRldi0+aXNfdmlydGZuKSB7DQo+ID4g PiA+ID4gKwkJc3RydWN0IHZmaW9fZGV2aWNlICpwZl9kZXY7DQo+ID4gPiA+ID4gKwkJc3RydWN0 IHZmaW9fcGNpX2RldmljZSAqcGZfdmRldiA9IGdldF9wZl92ZGV2KHZkZXYsDQo+ID4gPiA+ID4g JnBmX2Rldik7DQo+ID4gPiA+ID4gKwkJYm9vbCBtYXRjaDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKwkJaWYgKCFwZl92ZGV2KSB7DQo+ID4gPiA+ID4gKwkJCWlmICghdmZfdG9rZW4pDQo+ID4g PiA+ID4gKwkJCQlyZXR1cm4gMDsgLyogUEYgaXMgbm90IHZmaW8tcGNpLCBubyBWRg0KPiB0b2tl biAqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQkJcGNpX2luZm9fcmF0ZWxpbWl0ZWQodmRl di0+cGRldiwNCj4gPiA+ID4gPiArCQkJCSJWRiB0b2tlbiBpbmNvcnJlY3RseSBwcm92aWRlZCwg UEYgbm90DQo+IGJvdW5kDQo+ID4gPiA+ID4gdG8gdmZpby1wY2lcbiIpOw0KPiA+ID4gPiA+ICsJ CQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiArCQl9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsJCWlmICghdmZfdG9rZW4pIHsNCj4gPiA+ID4gPiArCQkJdmZpb19kZXZpY2VfcHV0KHBmX2Rl dik7DQo+ID4gPiA+ID4gKwkJCXBjaV9pbmZvX3JhdGVsaW1pdGVkKHZkZXYtPnBkZXYsDQo+ID4g PiA+ID4gKwkJCQkiVkYgdG9rZW4gcmVxdWlyZWQgdG8gYWNjZXNzDQo+IGRldmljZVxuIik7DQo+ ID4gPiA+ID4gKwkJCXJldHVybiAtRUFDQ0VTOw0KPiA+ID4gPiA+ICsJCX0NCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKwkJbXV0ZXhfbG9jaygmcGZfdmRldi0+dmZfdG9rZW4tPmxvY2spOw0KPiA+ ID4gPiA+ICsJCW1hdGNoID0gdXVpZF9lcXVhbCh1dWlkLCAmcGZfdmRldi0+dmZfdG9rZW4tDQo+ ID51dWlkKTsNCj4gPiA+ID4gPiArCQltdXRleF91bmxvY2soJnBmX3ZkZXYtPnZmX3Rva2VuLT5s b2NrKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwkJdmZpb19kZXZpY2VfcHV0KHBmX2Rldik7 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWlmICghbWF0Y2gpIHsNCj4gPiA+ID4gPiArCQkJ cGNpX2luZm9fcmF0ZWxpbWl0ZWQodmRldi0+cGRldiwNCj4gPiA+ID4gPiArCQkJCSJJbmNvcnJl Y3QgVkYgdG9rZW4gcHJvdmlkZWQgZm9yDQo+IGRldmljZVxuIik7DQo+ID4gPiA+ID4gKwkJCXJl dHVybiAtRUFDQ0VTOw0KPiA+ID4gPiA+ICsJCX0NCj4gPiA+ID4gPiArCX0gZWxzZSBpZiAodmRl di0+dmZfdG9rZW4pIHsNCj4gPiA+ID4gPiArCQltdXRleF9sb2NrKCZ2ZGV2LT52Zl90b2tlbi0+ bG9jayk7DQo+ID4gPiA+ID4gKwkJaWYgKHZkZXYtPnZmX3Rva2VuLT51c2Vycykgew0KPiA+ID4g PiA+ICsJCQlpZiAoIXZmX3Rva2VuKSB7DQo+ID4gPiA+ID4gKwkJCQltdXRleF91bmxvY2soJnZk ZXYtPnZmX3Rva2VuLQ0KPiA+bG9jayk7DQo+ID4gPiA+ID4gKwkJCQlwY2lfaW5mb19yYXRlbGlt aXRlZCh2ZGV2LT5wZGV2LA0KPiA+ID4gPiA+ICsJCQkJCSJWRiB0b2tlbiByZXF1aXJlZCB0byBh Y2Nlc3MNCj4gPiA+ID4gPiBkZXZpY2VcbiIpOw0KPiA+ID4gPiA+ICsJCQkJcmV0dXJuIC1FQUND RVM7DQo+ID4gPiA+ID4gKwkJCX0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwkJCWlmICghdXVp ZF9lcXVhbCh1dWlkLCAmdmRldi0+dmZfdG9rZW4tPnV1aWQpKQ0KPiB7DQo+ID4gPiA+ID4gKwkJ CQltdXRleF91bmxvY2soJnZkZXYtPnZmX3Rva2VuLQ0KPiA+bG9jayk7DQo+ID4gPiA+ID4gKwkJ CQlwY2lfaW5mb19yYXRlbGltaXRlZCh2ZGV2LT5wZGV2LA0KPiA+ID4gPiA+ICsJCQkJCSJJbmNv cnJlY3QgVkYgdG9rZW4gcHJvdmlkZWQNCj4gZm9yDQo+ID4gPiA+ID4gZGV2aWNlXG4iKTsNCj4g PiA+ID4gPiArCQkJCXJldHVybiAtRUFDQ0VTOw0KPiA+ID4gPiA+ICsJCQl9DQo+ID4gPiA+ID4g KwkJfSBlbHNlIGlmICh2Zl90b2tlbikgew0KPiA+ID4gPiA+ICsJCQl1dWlkX2NvcHkoJnZkZXYt PnZmX3Rva2VuLT51dWlkLCB1dWlkKTsNCj4gPiA+ID4gPiArCQl9DQo+ID4gPiA+DQo+ID4gPiA+ IEl0IGltcGxpZXMgdGhhdCB3ZSBhbGxvdyBQRiB0byBiZSBhY2Nlc3NlZCB3L28gcHJvdmlkaW5n IGEgVkYgdG9rZW4sDQo+ID4gPiA+IGFzIGxvbmcgYXMgbm8gVkYgaXMgY3VycmVudGx5IGluLXVz ZSwgd2hpY2ggZnVydGhlciBtZWFucyBubyBWRiBjYW4NCj4gPiA+ID4gYmUgZnVydGhlciBhc3Np Z25lZCBzaW5jZSBubyBvbmUga25vd3MgdGhlIHJhbmRvbSB1dWlkIGFsbG9jYXRlZA0KPiA+ID4g PiBieSB2ZmlvLiBKdXN0IHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIGl0IGlzIHRoZSBkZXNpcmVk IGZsYXZvci4gSWYgYW4NCj4gPiA+ID4gdXNlciByZWFsbHkgd2FudHMgdG8gdXNlIFBGLW9ubHks IHBvc3NpYmx5IGhlIHNob3VsZCBkaXNhYmxlIFNSLUlPVg0KPiA+ID4gPiBpbnN0ZWFkLi4uDQo+ ID4gPg0KPiA+ID4gWWVzLCB0aGlzIGlzIHRoZSBiZWhhdmlvciBJJ20gaW50ZW5kaW5nLiAgQXJl IHlvdSBzdWdnZXN0aW5nIHRoYXQgd2UNCj4gPiA+IHNob3VsZCByZXF1aXJlIGEgVkYgdG9rZW4g aW4gb3JkZXIgdG8gYWNjZXNzIGEgUEYgdGhhdCBoYXMgU1ItSU9WDQo+ID4gPiBhbHJlYWR5IGVu YWJsZWQ/ICBUaGlzIGludHJvZHVjZXMgYW4gaW5jb25zaXN0ZW5jeSB0aGF0IFNSLUlPViBjYW4g YmUNCj4gPg0KPiA+IHllcy4gSSBmZWx0IHRoYXQgaXQncyBtZWFuaW5nbGVzcyBvdGhlcndpc2Ug aWYgYW4gdXNlciBoYXMgbm8gYXR0ZW1wdCB0bw0KPiA+IG1hbmFnZSBTUi1JT1YgYnV0IHN0aWxs IGxlYXZpbmcgaXQgZW5hYmxlZC4gSW4gbWFueSBjYXNlcywgZW5hYmxpbmcgb2YNCj4gPiBTUi1J T1YgbWF5IHJlc2VydmUgc29tZSByZXNvdXJjZSBpbiB0aGUgaGFyZHdhcmUsIHRodXMgc2ltcGx5 IGh1cnRpbmcNCj4gPiBQRiBwZXJmb3JtYW5jZS4NCj4gDQo+IEJ1dCBhIHVzZXIgbmVlZHMgdG8g YmUgZ3JhbnRlZCBhY2Nlc3MgdG8gYSBkZXZpY2UgYnkgYSBwcml2aWxlZ2VkDQo+IGVudGl0eSBh bmQgdGhlIHByaXZpbGVnZWQgZW50aXR5IG1heSBhbHNvIGVuYWJsZSBTUi1JT1YsIHNvIGl0IHNl ZW1zDQo+IHlvdSdyZSBhc3N1bWluZyB0aGUgcHJpdmlsZWdlZCBlbnRpdHkgaXMgb3BlcmF0aW5n IGluZGVwZW5kZW50bHkgYW5kDQo+IG5vdCBpbiB0aGUgYmVzdCBpbnRlcmVzdCBvZiBlbmFibGlu ZyB0aGUgc3BlY2lmaWMgdXNlciBjYXNlLg0KDQp3aGF0IGFib3V0IHRocm93aW5nIG91dCBhIHdh cm5pbmcgZm9yIHN1Y2ggc2l0dWF0aW9uPyBzbyB0aGUgdXNlcnNwYWNlDQprbm93cyBzb21lIGNv bGxhYm9yYXRpb24gaXMgbWlzc2luZyBiZWZvcmUgaXRzIGFjY2VzcyB0byB0aGUgZGV2aWNlLg0K DQo+IA0KPiA+ID4gZW5hYmxlZCB2aWEgc3lzZnMgYXN5bmNocm9ub3VzIHRvIHRoZSBHRVRfREVW SUNFX0ZEIGlvY3RsLCBzbyB3ZSdkDQo+IG5lZWQNCj4gPiA+IHRvIHNlY3VyZSB0aGUgc3lzZnMg aW50ZXJmYWNlIHRvIG9ubHkgYWxsb3cgZW5hYmxpbmcgU1ItSU9WIHdoZW4gdGhlIFBGDQo+ID4g PiBpcyBhbHJlYWR5IG9wZW5lZCB0byBjYXNlcyB3aGVyZSB0aGUgVkYgdG9rZW4gaXMgYWxyZWFk eSBzZXQ/ICBUaHVzDQo+ID4NCj4gPiB5ZXMsIHRoZSBQRiBpcyBhc3NpZ25lZCB0byB0aGUgdXNl cnNwYWNlIGRyaXZlciwgdGh1cyBpdCdzIHJlYXNvbmFibGUgdG8NCj4gPiBoYXZlIHRoZSB1c2Vy c3BhY2UgZHJpdmVyIGRlY2lkZSB3aGV0aGVyIHRvIGVuYWJsZSBvciBkaXNhYmxlIFNSLUlPVg0K PiA+IHdoZW4gdGhlIFBGIGlzIHVuZGVyIGl0cyBjb250cm9sLiBhcyBJIHJlcGxpZWQgdG8gcGF0 Y2ggWzUvN10sIHRoZSBzeXNmcw0KPiA+IGludGVyZmFjZSBhbG9uZSBsb29rcyBwcm9ibGVtYXRp YyB3L28ga25vd2luZyB3aGV0aGVyIHRoZSB1c2Vyc3BhY2UNCj4gPiBkcml2ZXIgaXMgd2lsbGlu ZyB0byBtYW5hZ2UgVkZzIChieSBzZXR0aW5nIGEgdG9rZW4pLi4uDQo+IA0KPiBBcyBJIHJlcGxp ZWQgaW4gcGF0Y2ggWzUvN10gdGhlIG9wZXJhdGlvbnMgZG9uJ3QgbmVlZCB0byBoYXBwZW4NCj4g aW5kZXBlbmRlbnRseSwgY29uZmlndXJpbmcgU1ItSU9WIGluIGFkdmFuY2Ugb2YgdGhlIHVzZXIg ZHJpdmVyDQo+IGF0dGFjaGluZyBvciBpbiBjb2xsYWJvcmF0aW9uIHdpdGggdGhlIHVzZXIgZHJp dmVyIGNhbiBhbHNvIGJlIGVuYWJsZWQNCj4gd2l0aCB0aGlzIHNlcmllcyBhcyBpcy4gIEFsbG93 aW5nIHRoZSB1c2VyIGRyaXZlciB0byBkaXJlY3RseSBlbmFibGUNCj4gU1ItSU9WIGFuZCBjcmVh dGUgVkZzIGluIHRoZSBob3N0IGlzIHNvbWV0aGluZyBJJ3ZlIGF2b2lkZWQgaGVyZSwgYnV0DQo+ IG5vdCBwcmVjbHVkZWQgZm9yIGxhdGVyIGV4dGVuc2lvbnMuICBJIHRoaW5rIHRoYXQgYWxsb3dp bmcgYSB1c2VyIHRvDQo+IHBlcmZvcm0gdGhlc2Ugb3BlcmF0aW9ucyByZXByZXNlbnRzIGEgZGVn cmVlIG9mIHByaXZpbGVnZSBiZXlvbmQNCj4gb3duZXJzaGlwIG9mIHRoZSBQRiBpdHNlbGYsIHdo aWNoIGlzIHdoeSBJJ20gY3VycmVudGx5IG9ubHkgZW5hYmxpbmcNCj4gdGhlIHN5c2ZzIHNyaW92 X2NvbmZpZ3VyZSBpbnRlcmZhY2UuICBUaGUgdXNlciBkcml2ZXIgbmVlZHMgdG8gd29yayBpbg0K PiBjb2xsYWJvcmF0aW9uIHdpdGggYSBwcml2aWxlZ2VkIGVudGl0eSB0byBlbmFibGUgU1ItSU9W LCBvciBiZSBncmFudGVkDQo+IGFjY2VzcyB0byBvcGVyYXRlIG9uIHRoZSBzeXNmcyBpbnRlcmZh Y2UgZGlyZWN0bHkuDQoNClRoYW5rcy4gdGhpcyBhc3N1bXB0aW9uIHdhcyBjbGVhcmx5IG92ZXJs b29rZWQgaW4gbXkgcHJldmlvdXMgdGhpbmtpbmcuDQoNCj4gDQo+ID4gPiBTUi1JT1YgY291bGQg YmUgcHJlLWVuYWJsZWQsIGJ1dCB0aGUgdXNlciBtdXN0IHByb3ZpZGUgYSB2Zl90b2tlbg0KPiA+ ID4gb3B0aW9uIG9uIEdFVF9ERVZJQ0VfRkQsIG90aGVyd2lzZSBTUi1JT1YgY291bGQgb25seSBi ZSBlbmFibGVkIGFmdGVyDQo+ID4gPiB0aGUgdXNlciBzZXRzIGEgVkYgdG9rZW4uICBCdXQgdGhl biBkbyB3ZSBuZWVkIHRvIGludmFsaWRhdGUgdGhlIHRva2VuDQo+ID4gPiBhdCBzb21lIHBvaW50 LCBvciBlbHNlIGl0IHNlZW1zIGxpa2Ugd2UgaGF2ZSB0aGUgc2FtZSBzY2VuYXJpbyB3aGVuIHRo ZQ0KPiA+ID4gbmV4dCB1c2VyIGNvbWVzIGFsb25nLiAgV2UgYmVsaWV2ZSB0aGVyZSBhcmUgUEZz IHRoYXQgcmVxdWlyZSBubw0KPiA+DQo+ID4gSSB0aGluayBzbywgZS5nLiB3aGVuIFNSLUlPViBp cyBiZWluZyBkaXNhYmxlZCwgb3Igd2hlbiB0aGUgZmQgaXMgY2xvc2VkLg0KPiANCj4gQ2FuIHlv dSBhcnRpY3VsYXRlIGEgc3BlY2lmaWMgcmlzayB0aGF0IHRoaXMgd291bGQgcmVzb2x2ZT8gIElm IHdlIGhhdmUNCj4gZGV2aWNlcyBsaWtlIHRoZSBvbmUgc3VwcG9ydGVkIGJ5IHBjaS1wZi1zdHVi LCB3aGVyZSBpdCdzIGFwcGFyZW50bHkNCj4gc3VmZmljaWVudCB0byBwcm92aWRlIG5vIGRldmlj ZSBhY2Nlc3Mgb3RoZXIgdGhhbiB0byBlbmFibGUgU1ItSU9WIG9uDQo+IHRoZSBQRiwgcmUtaW1w bGVtZW50aW5nIHRoYXQgaW4gdmZpby1wY2kgd291bGQgcmVxdWlyZSB0aGF0IHRoZQ0KPiB1c2Vy c3BhY2UgZHJpdmVyIGlzIG5vdGlmaWVkIHdoZW4gdGhlIFNSLUlPViBjb25maWd1cmF0aW9uIGlz IGNoYW5nZWQNCj4gc3VjaCB0aGF0IGEgVkYgdG9rZW4gY2FuIGJlIHJlLWluc2VydGVkLiAgRm9y IHdoYXQgZ2Fpbj8NCj4gDQo+ID4gPiBzcGVjaWFsIFZGIHN1cHBvcnQgb3RoZXIgdGhhbiBzcmlv dl9jb25maWd1cmUsIHNvIHRob3NlIGRyaXZlciBjb3VsZA0KPiA+ID4gdGhlb3JldGljYWxseSBj bG9zZSB0aGUgUEYgYWZ0ZXIgc2V0dGluZyBhIFZGIHRva2VuLiAgVGhhdCBtYWtlcyBpdA0KPiA+ DQo+ID4gdGhlb3JldGljYWxseSB5ZXMsIGJ1dCBJJ20gbm90IHN1cmUgdGhlIHJlYWwgZ2FpbiBv ZiBzdXBwb3J0aW5nIHN1Y2gNCj4gPiB1c2FnZS4g8J+Yig0KPiANCj4gTGlrZXdpc2UgSSBkb24n dCBzZWUgdGhlIGdhaW4gb2YgcmVzdHJpY3RpbmcgaXQuDQo+IA0KPiA+IGJ0dyB3aXRoIHlvdXIg cXVlc3Rpb24gSSByZWFsaXplIGFub3RoZXIgcG90ZW50aWFsIG9wZW4uIE5vdyBhbg0KPiA+IHVz ZXIgY291bGQgYWxzbyB1c2Ugc3lzZnMgdG8gcmVzZXQgdGhlIFBGLCB3aGljaCBkZWZpbml0ZWx5 IGFmZmVjdHMgdGhlDQo+ID4gc3RhdGUgb2YgVkZzLiBEbyB3ZSB3YW50IGEgdG9rZW4gbWF0Y2gg d2l0aCB0aGF0IHBhdGg/IG9yIHN1Y2gNCj4gPiBpbnRlbnRpb24gaXMgYXNzdW1lZCB0byBiZSB0 cnVzdGVkIGJ5IFZGIGRyaXZlcnMgZ2l2ZW4gdGhhdCBvbmx5DQo+ID4gcHJpdmlsZWdlZCB1c2Vy cyBjYW4gZG8gaXQ/DQo+IA0KPiBJIHRoaW5rIHdlJ3JlIGdvaW5nIGludG8gdGhlIHdlZWRzIGhl cmUsIGEgcHJpdmlsZWdlZCB1c2VyIGNhbiB1c2UgdGhlDQo+IHBjaS1zeXNmcyByZXNldCBpbnRl cmZhY2UgdG8gYnJlYWsgYWxsIHNvcnRzIG9mIHRoaW5ncy4gIEknbSBjZXJ0YWlubHkNCj4gbm90 IGdvaW5nIHRvIHByb3Bvc2UgYW55IHNvcnQgb2YgVkYgdG9rZW4gaW50ZXJmYWNlIHRvIHJlc3Ry aWN0IGl0Lg0KPiBQcml2aWxlZ2VkIHVzZXJzIGNhbiBkbyBiYWQgdGhpbmdzIHZpYSBzeXNmcy4g IFByaXZpbGVnZWQgdXNlcnMgY2FuDQo+IGNvbmZpZ3VyZSBQRnMgaW4gd2F5cyB0aGF0IG1heSBu b3QgYmUgY29tcGF0aWJsZSB3aXRoIGFueSBnaXZlbg0KPiB1c2Vyc3BhY2UgVkYgZHJpdmVyLiAg SSdtIGFzc3VtaW5nIGNvbGxhYm9yYXRpb24gaW4gdGhlIGJlc3QgaW50ZXJlc3QNCj4gb2YgZW5h YmxpbmcgdGhlIHVzZXIgZHJpdmVyLiAgVGhhbmtzLA0KPiANCj4gQWxleA0KPiANCj4gPiA+IGRp ZmZpY3VsdCB0byBkZXRlcm1pbmUgdGhlIGxpZmV0aW1lIG9mIGEgVkYgdG9rZW4gYW5kIGxlYWRz IHRvIHRoZQ0KPiA+ID4gaW50ZXJmYWNlIHByb3Bvc2VkIGhlcmUgb2YgYW4gaW5pdGlhbCByYW5k b20gdG9rZW4sIHRoZW4gdGhlIHVzZXIgc2V0DQo+ID4gPiB0b2tlbiBwZXJzaXN0aW5nIGluZGVm aW5pdGVseS4NCj4gPiA+DQo+ID4gPiBJJ3ZlIHRlbmRlZCBjb25zaWRlciBhbGwgb2YgdGhlc2Ug dG8gYmUgbWVjaGFuaXNtcyB0aGF0IGEgdXNlciBjYW4NCj4gPiA+IHNob290IHRoZW1zZWx2ZXMg aW4gdGhlIGZvb3QuICBZZXMsIHRoZSB1c2VyIGFuZCBhZG1pbiBjYW4gZG8gdGhpbmdzDQo+ID4g PiB0aGF0IHdpbGwgZmFpbCB0byB3b3JrIHdpdGggdGhpcyBpbnRlcmZhY2UsIGZvciBleGFtcGxl IG15IHRlc3RpbmcNCj4gPiA+IGludm9sdmVzIFFFTVUsIHdoZXJlIHdlIGRvbid0IGV4cG9zZSBT Ui1JT1YgdG8gdGhlIGd1ZXN0IHlldCBhbmQgdGhlDQo+ID4gPiBpZ2IgZHJpdmVyIGZvciB0aGUg UEYgd2lsbCBlbmNvdW50ZXIgcHJvYmxlbXMgcnVubmluZyBhIGRldmljZSB3aXRoDQo+ID4gPiBT Ui1JT1YgZW5hYmxlZCB0aGF0IGl0IGRvZXNuJ3Qga25vdyBhYm91dC4gIERvIHdlIHdhbnQgdG8g dHJ5IHRvIHBsYXkNCj4gPiA+IG5hbm55IGFuZCByZXF1aXJlIHNwZWNpZmljIHNlbWFudGljcz8g IEkndmUgb3B0J2QgZm9yIHRoZSBtb3JlIHNpbXBsZQ0KPiA+ID4gY29kZSBoZXJlLg0KPiA+ID4N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwkJbXV0ZXhfdW5sb2NrKCZ2ZGV2LT52Zl90b2tlbi0+ bG9jayk7DQo+ID4gPiA+ID4gKwl9IGVsc2UgaWYgKHZmX3Rva2VuKSB7DQo+ID4gPiA+ID4gKwkJ cGNpX2luZm9fcmF0ZWxpbWl0ZWQodmRldi0+cGRldiwNCj4gPiA+ID4gPiArCQkJIlZGIHRva2Vu IGluY29ycmVjdGx5IHByb3ZpZGVkLCBub3QgYSBQRiBvcg0KPiBWRlxuIik7DQo+ID4gPiA+ID4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsJcmV0dXJuIDA7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyNkZWZp bmUgVkZfVE9LRU5fQVJHICJ2Zl90b2tlbj0iDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICBzdGF0 aWMgaW50IHZmaW9fcGNpX21hdGNoKHZvaWQgKmRldmljZV9kYXRhLCBjaGFyICpidWYpDQo+ID4g PiA+ID4gIHsNCj4gPiA+ID4gPiAgCXN0cnVjdCB2ZmlvX3BjaV9kZXZpY2UgKnZkZXYgPSBkZXZp Y2VfZGF0YTsNCj4gPiA+ID4gPiArCWJvb2wgdmZfdG9rZW4gPSBmYWxzZTsNCj4gPiA+ID4gPiAr CXV1aWRfdCB1dWlkOw0KPiA+ID4gPiA+ICsJaW50IHJldDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKwlpZiAoc3RybmNtcChwY2lfbmFtZSh2ZGV2LT5wZGV2KSwgYnVmLA0KPiBzdHJsZW4ocGNp X25hbWUodmRldi0NCj4gPiA+ID4gPiA+cGRldikpKSkNCj4gPiA+ID4gPiArCQlyZXR1cm4gMDsg LyogTm8gbWF0Y2ggKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlpZiAoc3RybGVuKGJ1Zikg PiBzdHJsZW4ocGNpX25hbWUodmRldi0+cGRldikpKSB7DQo+ID4gPiA+ID4gKwkJYnVmICs9IHN0 cmxlbihwY2lfbmFtZSh2ZGV2LT5wZGV2KSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWlm ICgqYnVmICE9ICcgJykNCj4gPiA+ID4gPiArCQkJcmV0dXJuIDA7IC8qIE5vIG1hdGNoOiBub24t d2hpdGVzcGFjZSBhZnRlcg0KPiBuYW1lICovDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCXdo aWxlICgqYnVmKSB7DQo+ID4gPiA+ID4gKwkJCWlmICgqYnVmID09ICcgJykgew0KPiA+ID4gPiA+ ICsJCQkJYnVmKys7DQo+ID4gPiA+ID4gKwkJCQljb250aW51ZTsNCj4gPiA+ID4gPiArCQkJfQ0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQkJaWYgKCF2Zl90b2tlbiAmJiAhc3RybmNtcChidWYs DQo+IFZGX1RPS0VOX0FSRywNCj4gPiA+ID4gPiArDQo+IHN0cmxlbihWRl9UT0tFTl9BUkcpKSkg ew0KPiA+ID4gPiA+ICsJCQkJYnVmICs9IHN0cmxlbihWRl9UT0tFTl9BUkcpOw0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArCQkJCWlmIChzdHJsZW4oYnVmKSA8IFVVSURfU1RSSU5HX0xFTikNCj4g PiA+ID4gPiArCQkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwkJ CQlyZXQgPSB1dWlkX3BhcnNlKGJ1ZiwgJnV1aWQpOw0KPiA+ID4gPiA+ICsJCQkJaWYgKHJldCkN Cj4gPiA+ID4gPiArCQkJCQlyZXR1cm4gcmV0Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLQlyZXR1 cm4gIXN0cmNtcChwY2lfbmFtZSh2ZGV2LT5wZGV2KSwgYnVmKTsNCj4gPiA+ID4gPiArCQkJCXZm X3Rva2VuID0gdHJ1ZTsNCj4gPiA+ID4gPiArCQkJCWJ1ZiArPSBVVUlEX1NUUklOR19MRU47DQo+ ID4gPiA+ID4gKwkJCX0gZWxzZSB7DQo+ID4gPiA+ID4gKwkJCQkvKiBVbmtub3duL2R1cGxpY2F0 ZSBvcHRpb24gKi8NCj4gPiA+ID4gPiArCQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ICsJ CQl9DQo+ID4gPiA+ID4gKwkJfQ0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArCXJldCA9IHZmaW9fcGNpX3ZhbGlkYXRlX3ZmX3Rva2VuKHZkZXYsIHZmX3Rva2VuLCAmdXVp ZCk7DQo+ID4gPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsJcmV0dXJuIDE7IC8qIE1hdGNoICovDQo+ID4gPiA+ID4gIH0N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29w cyB2ZmlvX3BjaV9vcHMgPSB7DQo+ID4gPiA+ID4gQEAgLTEzNTQsNiArMTUzMSwxOSBAQCBzdGF0 aWMgaW50IHZmaW9fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2DQo+ICpwZGV2LA0KPiA+ID4gPiA+ IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkNCj4gPiA+ID4gPiAgCQlyZXR1cm4gcmV0 Ow0KPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKwlpZiAocGRldi0+aXNfcGh5 c2ZuKSB7DQo+ID4gPiA+ID4gKwkJdmRldi0+dmZfdG9rZW4gPSBremFsbG9jKHNpemVvZigqdmRl di0+dmZfdG9rZW4pLA0KPiA+ID4gPiA+IEdGUF9LRVJORUwpOw0KPiA+ID4gPiA+ICsJCWlmICgh dmRldi0+dmZfdG9rZW4pIHsNCj4gPiA+ID4gPiArCQkJdmZpb19wY2lfcmVmbGNrX3B1dCh2ZGV2 LT5yZWZsY2spOw0KPiA+ID4gPiA+ICsJCQl2ZmlvX2RlbF9ncm91cF9kZXYoJnBkZXYtPmRldik7 DQo+ID4gPiA+ID4gKwkJCXZmaW9faW9tbXVfZ3JvdXBfcHV0KGdyb3VwLCAmcGRldi0+ZGV2KTsN Cj4gPiA+ID4gPiArCQkJa2ZyZWUodmRldik7DQo+ID4gPiA+ID4gKwkJCXJldHVybiAtRU5PTUVN Ow0KPiA+ID4gPiA+ICsJCX0NCj4gPiA+ID4gPiArCQltdXRleF9pbml0KCZ2ZGV2LT52Zl90b2tl bi0+bG9jayk7DQo+ID4gPiA+ID4gKwkJdXVpZF9nZW4oJnZkZXYtPnZmX3Rva2VuLT51dWlkKTsN Cj4gPiA+ID4NCj4gPiA+ID4gc2hvdWxkIHdlIGFsc28gcmVnZW5lcmF0ZSBhIHJhbmRvbSB1dWlk IHNvbWV3aGVyZSB3aGVuIFNSLUlPViBpcw0KPiA+ID4gPiBkaXNhYmxlZCBhbmQgdGhlbiByZS1l bmFibGVkIG9uIGEgUEY/IEFsdGhvdWdoIHZmaW8gZGlzYWxsb3dzDQo+IHVzZXJzcGFjZQ0KPiA+ ID4gPiB0byByZWFkIHV1aWQsIGl0IGlzIGFsd2F5cyBzYWZlciB0byBhdm9pZCBjYWNoaW5nIGEg c2VjcmV0IGZyb20gcHJldmlvdXMNCj4gPiA+ID4gdXNlci4NCj4gPiA+DQo+ID4gPiBXaGF0IGlm IG91ciB1c2VyIGlzIFFFTVUgZW11bGF0aW5nIFNSLUlPViB0byB0aGUgZ3Vlc3QuICBEbyB3ZSB3 YW50IHRvDQo+ID4gPiBmb3JjZSBhIG5ldyBWRiB0b2tlbiBpcyBzZXQgZXZlcnkgdGltZSB3ZSBi b3VuY2UgdGhlIFZGcz8gIFdoeT8gIEFzDQo+ID4gPiBhYm92ZSwgdGhlIHNlc3Npb24gbGlmZXRp bWUgb2YgdGhlIFZGIHRva2VuIG1pZ2h0IGJlIGRpZmZpY3VsdCB0bw0KPiA+ID4gZGV0ZXJtaW5l IGFuZCBJJ20gbm90IHN1cmUgcGFyYW5vaWEgaXMgYSBzdWZmaWNpZW50IHJlYXNvbiB0byB0cnkg dG8NCj4gPiA+IGNyZWF0ZSBib3VuZGFyaWVzIGZvciBpdC4gIFRoYW5rcywNCj4gPiA+DQo+ID4g PiBBbGV4DQo+ID4gPg0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgCWlm ICh2ZmlvX3BjaV9pc192Z2EocGRldikpIHsNCj4gPiA+ID4gPiAgCQl2Z2FfY2xpZW50X3JlZ2lz dGVyKHBkZXYsIHZkZXYsIE5VTEwsDQo+ID4gPiA+ID4gdmZpb19wY2lfc2V0X3ZnYV9kZWNvZGUp Ow0KPiA+ID4gPiA+ICAJCXZnYV9zZXRfbGVnYWN5X2RlY29kaW5nKHBkZXYsDQo+ID4gPiA+ID4g QEAgLTEzODcsNiArMTU3NywxMiBAQCBzdGF0aWMgdm9pZCB2ZmlvX3BjaV9yZW1vdmUoc3RydWN0 IHBjaV9kZXYNCj4gPiA+ICpwZGV2KQ0KPiA+ID4gPiA+ICAJaWYgKCF2ZGV2KQ0KPiA+ID4gPiA+ ICAJCXJldHVybjsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICsJaWYgKHZkZXYtPnZmX3Rva2VuKSB7 DQo+ID4gPiA+ID4gKwkJV0FSTl9PTih2ZGV2LT52Zl90b2tlbi0+dXNlcnMpOw0KPiA+ID4gPiA+ ICsJCW11dGV4X2Rlc3Ryb3koJnZkZXYtPnZmX3Rva2VuLT5sb2NrKTsNCj4gPiA+ID4gPiArCQlr ZnJlZSh2ZGV2LT52Zl90b2tlbik7DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICAJdmZpb19wY2lfcmVmbGNrX3B1dCh2ZGV2LT5yZWZsY2spOw0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gIAl2ZmlvX2lvbW11X2dyb3VwX3B1dChwZGV2LT5kZXYuaW9tbXVfZ3JvdXAsICZwZGV2 LT5kZXYpOw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNp X3ByaXZhdGUuaA0KPiA+ID4gPiA+IGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2YXRl LmgNCj4gPiA+ID4gPiBpbmRleCA4YTJjNzYwN2Q1MTMuLjc2YzExYzkxNTk0OSAxMDA2NDQNCj4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXZhdGUuaA0KPiA+ID4g PiA+ICsrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdmF0ZS5oDQo+ID4gPiA+ID4g QEAgLTEyLDYgKzEyLDcgQEANCj4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPg0KPiA+ ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvaXJxYnlwYXNzLmg+DQo+ID4gPiA+ID4gICNpbmNsdWRl IDxsaW51eC90eXBlcy5oPg0KPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvdXVpZC5oPg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gICNpZm5kZWYgVkZJT19QQ0lfUFJJVkFURV9IDQo+ID4gPiA+ID4g ICNkZWZpbmUgVkZJT19QQ0lfUFJJVkFURV9IDQo+ID4gPiA+ID4gQEAgLTg0LDYgKzg1LDEyIEBA IHN0cnVjdCB2ZmlvX3BjaV9yZWZsY2sgew0KPiA+ID4gPiA+ICAJc3RydWN0IG11dGV4CQlsb2Nr Ow0KPiA+ID4gPiA+ICB9Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gK3N0cnVjdCB2ZmlvX3BjaV92 Zl90b2tlbiB7DQo+ID4gPiA+ID4gKwlzdHJ1Y3QgbXV0ZXgJCWxvY2s7DQo+ID4gPiA+ID4gKwl1 dWlkX3QJCQl1dWlkOw0KPiA+ID4gPiA+ICsJaW50CQkJdXNlcnM7DQo+ID4gPiA+ID4gK307DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlIHsNCj4gPiA+ID4g PiAgCXN0cnVjdCBwY2lfZGV2CQkqcGRldjsNCj4gPiA+ID4gPiAgCXZvaWQgX19pb21lbQkJKmJh cm1hcFtQQ0lfU1REX05VTV9CQVJTXTsNCj4gPiA+ID4gPiBAQCAtMTIyLDYgKzEyOSw3IEBAIHN0 cnVjdCB2ZmlvX3BjaV9kZXZpY2Ugew0KPiA+ID4gPiA+ICAJc3RydWN0IGxpc3RfaGVhZAlkdW1t eV9yZXNvdXJjZXNfbGlzdDsNCj4gPiA+ID4gPiAgCXN0cnVjdCBtdXRleAkJaW9ldmVudGZkc19s b2NrOw0KPiA+ID4gPiA+ICAJc3RydWN0IGxpc3RfaGVhZAlpb2V2ZW50ZmRzX2xpc3Q7DQo+ID4g PiA+ID4gKwlzdHJ1Y3QgdmZpb19wY2lfdmZfdG9rZW4JKnZmX3Rva2VuOw0KPiA+ID4gPiA+ICB9 Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICNkZWZpbmUgaXNfaW50eCh2ZGV2KSAodmRldi0+aXJx X3R5cGUgPT0gVkZJT19QQ0lfSU5UWF9JUlFfSU5ERVgpDQo+ID4gPiA+DQo+ID4NCg0K