From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pasi =?iso-8859-1?Q?K=E4rkk=E4inen?= Subject: Re: pci-passthrough loses msi-x interrupts ability after domain destroy Date: Fri, 22 Sep 2017 09:58:05 +0300 Message-ID: <20170922065805.GN4090@reaktio.net> References: <609868325.225353.1505937035977.JavaMail.zimbra@savoirfairelinux.com> <20170921083952.r2moey2n7qgnowgo@dhcp-3-128.uk.xensource.com> <1707661043.20170921222701@eikelenboom.it> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvHud-0005GY-5u for xen-devel@lists.xenproject.org; Fri, 22 Sep 2017 06:58:11 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Christopher Clark Cc: Kyle Temkin , Sander Eikelenboom , =?iso-8859-1?B?Suly9G1l?= Oufella , xen-devel@lists.xenproject.org, Roger Pau =?iso-8859-1?Q?Monn=E9?= List-Id: xen-devel@lists.xenproject.org SGksCgpPbiBUaHUsIFNlcCAyMSwgMjAxNyBhdCAwNzowOToxMlBNIC0wNzAwLCBDaHJpc3RvcGhl ciBDbGFyayB3cm90ZToKPiBPbiBUaHUsIFNlcCAyMSwgMjAxNyBhdCAxOjI3IFBNLCBTYW5kZXIg RWlrZWxlbmJvb20KPiA8bGludXhAZWlrZWxlbmJvb20uaXQ+IHdyb3RlOgo+ID4KPiA+IE9uIFRo dSwgU2VwdGVtYmVyIDIxLCAyMDE3LCAxMDozOTo1MiBBTSwgUm9nZXIgUGF1IE1vbm7DqSB3cm90 ZToKPiA+Cj4gPj4gT24gV2VkLCBTZXAgMjAsIDIwMTcgYXQgMDM6NTA6MzVQTSAtMDQwMCwgSsOp csO0bWUgT3VmZWxsYSB3cm90ZToKPiA+Pj4KPiA+Pj4gSSdtIHVzaW5nIFBDSSBwYXNzLXRocm91 Z2ggdG8gbWFwIGEgUENJZSAoaW50ZWwgaTIxMCkgY29udHJvbGxlciBpbnRvCj4gPj4+IGEgSFZN IGRvbWFpbi4gVGhlIHN5c3RlbSB1c2VzIHhlbi1wY2liYWNrIHRvIGhpZGUgdGhlIGFwcHJvcHJp YXRlIFBDSQo+ID4+PiBkZXZpY2UgZnJvbSBEb20wLgo+ID4+Pgo+ID4+PiBXaGVuIGNyZWF0aW5n IHRoZSBIVk0gZG9tYWluIGFmdGVyIGFuIGh5cGVydmlzb3IgY29sZCBib290LCB0aGUgSFZNCj4g Pj4+IGRvbWFpbiBjYW4gYWNjZXNzIGFuZCB1c2UgdGhlIFBDSWUgY29udHJvbGxlciB3aXRob3V0 IHByb2JsZW0uCj4gPj4+Cj4gPj4+IEhvd2V2ZXIsIGlmIHRoZSBIVk0gZG9tYWluIGlzIGRlc3Ry b3llZCB0aGVuIHJlc3RhcnRlZCwgaXQgd29uJ3QgYmUKPiA+Pj4gYWJsZSB0byB1c2UgdGhlIHBh c3MtdGhyb3VnaCBQQ0kgZGV2aWNlIGFueW1vcmUuIFRoZSBQQ0kgZGV2aWNlIGlzCj4gPj4+IHNl ZW4gYW5kIGNhbiBiZSBtYXBwZWQsIGhvd2V2ZXIsIHRoZSBpbnRlcnJ1cHRzIHdpbGwgbm90IGJl IHBhc3NlZCB0bwo+ID4+PiB0aGUgSFZNIGRvbWFpbiBhbnltb3JlICh0aGlzIGlzIHZpc2libGUg dW5kZXIgYSBMaW51eCBndWVzdCBhcwo+ID4+PiAvcHJvYy9pbnRlcnJ1cHRzIGNvdW50ZXJzIHJl bWFpbiAwKS4gVGhlIGJlaGF2aW9yIG9uIGEgV2luZG93czEwIGd1ZXN0Cj4gPj4+IGlzIHRoZSBz YW1lLgo+ID4+Pgo+ID4+PiBBIGZldyBpbnRlcmVzdGluZyBoaW50cyBJIG5vdGljZWQ6Cj4gPj4+ Cj4gPj4+IC0gT24gRG9tMCwgJ2xzcGNpIC12dicgb24gdGhhdCBQQ0llIGRldmljZSBiZXR3ZWVu IHRoZSAid29ya2luZyIgYW5kCj4gPj4+IHRoZSAibXV0ZWQgaW50ZXJydXB0cyIgc3RhdGVzLCBJ IG5vdGVkIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZQo+ID4+PiBNU0ktWCBjYXBzOgo+ID4+Pgo+ ID4+PiAtIENhcGFiaWxpdGllczogWzcwXSBNU0ktWDogRW5hYmxlLSBDb3VudD01IE1hc2tlZC0g PC0tIElSUXMgd2lsbCB3b3JrIGlmIGRvbWFpbiBzdGFydGVkCj4gPj4+ICsgQ2FwYWJpbGl0aWVz OiBbNzBdIE1TSS1YOiBFbmFibGUtIENvdW50PTUgTWFza2VkKyA8LS0gSVJRcyB3b24ndCB3b3Jr IGlmIGRvbWFpbiBzdGFydGVkCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXl5eXl5eXgo+ID4KPiA+PiBJTUhPIGl0IHNlZW1zIHRoYXQgZWl0aGVyIHlv dXIgZGV2aWNlIGlzIG5vdCBhYmxlIHRvIHBlcmZvcm0gYSByZXNldAo+ID4+IHN1Y2Nlc3NmdWxs eSwgb3IgTGludXggaXMgbm90IGNvcnJlY3RseSBwZXJmb3JtaW5nIHN1Y2ggcmVzZXQuIEkgZG9u J3QKPiA+PiB0aGluayB0aGVyZSdzIGEgbG90IHRoYXQgY2FuIGJlIGRvbmUgZnJvbSB0aGUgWGVu IHNpZGUuCj4gPgo+ID4gVW5mb3J0dW5hdGVseSBmb3IgYSBsb3Qgb2YgcGNpLWRldmljZXMgYSBz aW1wbGUgcmVzZXQgYXMgcGVyZm9ybWVkIGJ5IGRlZmF1bHQgaXNuJ3QgZW5vdWdoLAo+ID4gYnV0 IGFsc28gYWxtb3N0IG5vbmUgc3VwcG9ydCBhIHJlYWwgcGNpIEZMUi4KPiA+Cj4gPiBJbiB0aGUg ZGlzdGFudCBwYXN0IEtvbnJhZCBoYXMgbWFkZSBhIHBhdGNoc2V0IHRoYXQgaW1wbGVtZW50ZWQg YSBidXMgcmVzZXQgYW5kCj4gPiByZXNldGluZyBjb25maWcgc3BhY2UuIChJdCBwaWdneSBiYWNr ZWQgb24gYWxyZWFkeSBleGlzdGluZyBsaWJ4bCBtZWNoYW5pc20gb2YKPiA+IHRyeWluZyB0byBj YWxsIG9uIGEgc3lmcyAiZG9fZmxyIiBhdHRyaWJ1dGUgd2hpY2ggdHJpZ2dlcnMgcGNpYmFjayB0 byBwZXJmb3JtCj4gPiB0aGUgYnVzcmVzZXQgYW5kIHJld3JpdGUgb2YgY29uZmlnIHNwYWNlIGZv ciB0aGUgZGV2aWNlLgo+ID4KPiA+IEkgdXNlIHRoYXQgcGF0Y2hzZXQgZXZlciBzaW5jZSBmb3Ig bXkgcGNpLXBhc3N0cm91Z2ggbmVlZHMgYW5kIGl0IHdvcmtzIHByZXR0eQo+ID4gd2VsbC4gSSBj YW4gc2h1dGRvd24gYW4gcmVzdGFydCBWTSdzIHdpdGggcGNpIGRldmljZXMgcGFzc2VkIHRyaG91 Z2ggKGFsc28gQU1ECj4gPiBSYWRlb24gZ3JhcGhpYyBjYXJkcykuCj4gCj4gSnVzdCB0byBjb25m aXJtIHRoZSB1dGlsaXR5IG9mIHRoYXQgcGllY2Ugb2Ygd29yazogT3BlblhUIGFsc28gdXNlcyBh bgo+IGV4dGVuZGVkIHZlcnNpb24gb2YgdGhhdCBzYW1lIHBhdGNoIHRvIHBlcmZvcm0gZGV2aWNl IHJlc2V0IGZvcgo+IHBhc3N0aHJvdWdoLgo+IAo+IEkndmUgYXR0YWNoZWQgYSBjb3B5IG9mIHRo YXQgT3BlblhUIHBhdGNoIHRvIHRoaXMgbWVzc2FnZSBhbmQgaXQgY2FuCj4gYWxzbyBiZSBvYnRh aW5lZCBmcm9tIG91ciBnaXQgcmVwb3NpdG9yeToKPiBodHRwczovL2dpdGh1Yi5jb20vT3BlblhU L3hlbmNsaWVudC1vZS9ibG9iL2Y4ZDNiMjgyYTg3MjMxZDlhZTcxN2IxM2Q1MDZlOGU3ZTI4Yzc4 YzQvcmVjaXBlcy1rZXJuZWwvbGludXgvNC45L3BhdGNoZXMvdGhvcm91Z2gtcmVzZXQtaW50ZXJm YWNlLXRvLXBjaWJhY2stcy1zeXNmcy5wYXRjaAo+IFRoaXMgdmVyc2lvbiBjcmVhdGVzIGEgc3lz ZnMgbm9kZSBuYW1lZCAicmVzZXRfZGV2aWNlIiBhbmQgdGhlIE9wZW5YVAo+IGxpYnhsIHRvb2xz dGFjayBpcyBwYXRjaGVkIHRvIHVzZSB0aGF0IG5vZGUgaW5zdGVhZCBvZiAiZG9fZmxyIi4KPiAK PiBLb25yYWQncyBvcmlnaW5hbCB3b3JrIGVuY291bnRlcmVkIHB1c2hiYWNrIG9uIHVwc3RyZWFt IGFjY2VwdGFuY2UgYXQKPiB0aGUgdGltZSBpdCB3YXMgZGV2ZWxvcGVkLiBJJ20gbm90IHN1cmUg SSd2ZSBmb3VuZCB3aGVyZSB0aGF0Cj4gZGlzY3Vzc2lvbiBlbmRlZC4gSXMgdGhlcmUgYW55IHBy b3NwZWN0IG9mIGEgbW9yZSBjb21wcmVoZW5zaXZlIHJlc2V0Cj4gbWVjaGFuaXNtIGJlaW5nIGFj Y2VwdGVkIGludG8geGVuLXBjaWJhY2ssIG9yIGVsc2V3aGVyZSBpbiB0aGUga2VybmVsPwo+IAo+ IEFzIG5vdGVkIGluIHRoZSBvcmlnaW5hbCBMS01MIHRocmVhZHMsIHZmaW8gaGFzIHNpbWlsYXIg cmVsZXZhbnQgcGNpCj4gZGV2aWNlIHJlc2V0IHJldHJ5IGxvZ2ljLiAoVGhhbmtzIHRvIFJpY2gg UGVyc2F1ZCBmb3IgdGhpcyBwb2ludGVyOikKPiBodHRwOi8vZWxpeGlyLmZyZWUtZWxlY3Ryb25z LmNvbS9saW51eC92NC4xNC1yYzEvc291cmNlL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYyNM MTM1Mwo+IAo+IGxpYnZpcnQgYWxzbyBwZXJmb3JtcyBzaW1pbGFyIHJlc2V0IGxvZ2ljLCB1c2lu ZyBhIGRpcmVjdCBsb3cgbGV2ZWwKPiBpbnRlcmZhY2UgdG8gY29uZmlnIHNwYWNlIChUaGFua3Mg dG8gTWFyZWsgZm9yIHRoaXMgcG9pbnRlciwgbGlidmlydAo+IGlzIHVzZWQgYnkgUXViZXM6KQo+ IGh0dHBzOi8vZ2l0aHViLmNvbS9saWJ2aXJ0L2xpYnZpcnQvYmxvYi9tYXN0ZXIvc3JjL3V0aWwv dmlycGNpLmMjTDkyOQo+IEkgdGhpbmtzIHRoaXMgaW5kaWNhdGVzIHRoYXQgaXQgd291bGQgYmUg cG9zc2libGUgdG8gZXh0ZW5kIGxpYnhsIHRvCj4gZG8gc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0 aGF0IHNlZW1zIGxlc3Mgc2F0aXNmYWN0b3J5IGNvbXBhcmVkIHRvCj4gcGVyZm9ybWluZyB0aGUg d29yayBpbiBhIGtlcm5lbC1wcm92aWRlZCBpbXBsZW1lbnRhdGlvbi4KPiAKPiBJcyB0aGVyZSBh IHdheSBmb3J3YXJkIHRvIHByb3ZpZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgd2l0aGluIFhlbgo+ IHNvZnR3YXJlIG9yIExpbnV4Pwo+IAoKQWRkaW5nIEtvbnJhZCB0byBDQyAuLgoKCi0tIFBhc2kK Cj4gQ2hyaXN0b3BoZXIKPiAtLQo+IAo+IG9wZW54dC5vcmcKCj4gRnJvbSBkNjg2MzUxZDhlYTRh MWVhMWQ3NTVkMGExMGY2ZjE0ZDFjODcwOTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+IEZy b206IEt5bGUgVGVta2luIDxrdGVta2luQGJpbmdoYW10b24uZWR1Pgo+IERhdGU6IFdlZCwgOCBB cHIgMjAxNSAwMDo1ODoyNCAtMDQwMAo+IFN1YmplY3Q6IFtQQVRDSF0gQWRkIHRob3JvdWdoIHJl c2V0IGludGVyZmFjZSB0byBwY2liYWNrJ3Mgc3lzZnMuCj4gCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiBTSE9SVCBERVNDUklQVElPTjoKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IEFk ZHMgYW4gaW50ZXJmYWNlIHRoYXQgYWxsb3dzICJtb3JlIHRob3JvdWdoIiByZXNldHMgdG8gYmUg cGVyZm9ybWVkCj4gb24gZGV2aWNlcyB3aGljaCBkb24ndCBzdXBwb3J0IEZ1bmN0aW9uIExldmVs IFJlc2V0cyAoRkxScykuIFRoaXMKPiBpbnRlcmZhY2Ugc2hvdWxkIGFsbG93IHRoZSB0b29sc3Rh Y2sgdG8gZW5zdXJlIHRoYXQgYSBQQ0kgZGV2aWNlIGlzIGluIGEKPiBrbm93biBzdGF0ZSBwcmlv ciB0byBwYXNzaW5nIGl0IHRocm91Z2ggdG8gYSBWTS4KPiAKPiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+IExPTkcgREVTQ1JJUFRJT046Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAKPiBG cm9tIEtvbnJhZCBSemVzenV0ZWsgV2lsaydzIG9yaWdpbmFsIHBvc3QgdG8geGVuLWRldmVsIGFu ZCB0aGUgTEtNTDoKPiAKPiAgIFRoZSBsaWZlLWN5Y2xlIG9mIGEgUENJIGRldmljZSBpbiBYZW4g cGNpYmFjayBpcyBjb21wbGV4Cj4gICBhbmQgaXMgY29uc3RyYWluZWQgYnkgdGhlIFBDSSBnZW5l cmljIGxvY2tpbmcgbWVjaGFuaXNtLgo+IAo+ICAgSXQgc3RhcnRzIHdpdGggdGhlIGRldmljZSBi ZWluZyBiaW5kZWQgdG8gdXMgLSBmb3Igd2hpY2gKPiAgIHdlIGRvIGEgZGV2aWNlIGZ1bmN0aW9u IHJlc2V0IChhbmQgZG9uZSB2aWEgU3lzRlMKPiAgIHNvIHRoZSBQQ0kgbG9jayBpcyBoZWxkKQo+ IAo+ICAgSWYgdGhlIGRldmljZSBpcyB1bmJpbmRlZCBmcm9tIHVzIC0gd2UgYWxzbyBkbyBhIGZ1 bmN0aW9uCj4gICByZXNldCAoYWxzbyBkb25lIHZpYSBTeXNGUyBzbyB0aGUgUENJIGxvY2sgaXMg aGVsZCkuCj4gCj4gICBJZiB0aGUgZGV2aWNlIGlzIHVuLWFzc2lnbmVkIGZyb20gYSBndWVzdCAt IHdlIGRvIGEgZnVuY3Rpb24KPiAgIHJlc2V0IChubyBQQ0kgbG9jaykuCj4gCj4gICBBbGwgb24g dGhlIGluZGl2aWR1YWwgUENJIGZ1bmN0aW9uIGxldmVsIChzbyBidXM6ZGV2aWNlOmZ1bmN0aW9u KS4KPiAKPiAgIFVuZm9ydHVuYXRseSBhIGZ1bmN0aW9uIHJlc2V0IGlzIG5vdCBhZGVxdWF0ZSBm b3IgY2VydGFpbgo+ICAgUENJZSBkZXZpY2VzLiBUaGUgcmVzZXQgZm9yIGFuIGluZGl2aWR1YWwg UENJIGZ1bmN0aW9uICJtZWFucwo+ICAgZGV2aWNlIG11c3Qgc3VwcG9ydCBGTFIgKFBDSWUgb3Ig QUYpLCBQTSByZXNldCBvbiBEM2hvdC0+RDAKPiAgIGRldmljZSBzcGVjaWZpYyByZXNldCwgb3Ig YmUgYSBzaW5nbGV0b24gZGV2aWNlIG9uIGEgYnVzCj4gICBhIHNlY29uZGFyeSBidXMgcmVzZXQu ICBGTFIgZG9lcyBub3QgaGF2ZSB3aWRlc3ByZWFkIHN1cHBvcnQsCj4gICByZXNldCBpcyBub3Qg dmVyeSByZWxpYWJsZSwgYW5kIGJ1cyB0b3BvbG9neSBpcyBkaWN0YXRlZCBieSB0aGUKPiAgIGFu ZCBkZXZpY2UgZGVzaWduLiAgV2UgbmVlZCB0byBwcm92aWRlIGEgbWVhbnMgZm9yIGEgdXNlciB0 bwo+ICAgYSBidXMgcmVzZXQgaW4gY2FzZXMgd2hlcmUgdGhlIGV4aXN0aW5nIG1lY2hhbmlzbXMg YXJlIG5vdAo+ICAgIG9yIG5vdCByZWxpYWJsZS4gIiAoQWRhbSBXaWxsaWFtc29uLCAndmZpby1w Y2k6IFBDSSBob3QgcmVzZXQKPiAgIGludGVyZmFjZScgY29tbWl0IDhiMjdlZTYwYmZkNmJiYjg0 ZDJkZjI4ZmE3MDZjNWM1MDgxMDY2Y2EpLgo+IAo+ICAgQXMgc3VjaCB0byBkbyBhIHNsb3Qgb3Ig YSBidXMgcmVzZXQgaXMgd2UgbmVlZCBhbm90aGVyIG1lY2hhbmlzbS4KPiAgIFRoaXMgaXMgbm90 IGV4cG9zZWQgU3lzRlMgYXMgdGhlcmUgaXMgbm8gZ29vZCB3YXkgb2YgZXhwb3NpbmcKPiAgIGEg YnVzIHRvcG9sb2d5IHRoZXJlLgo+IAo+ICAgVGhpcyBpcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkg LSB3ZSBNVVNUIGtub3cgdGhhdCB0aGUgZGlmZmVyZW50Cj4gICBmdW5jdGlvbnMgb2ZmIGEgUENJ ZSBkZXZpY2UgYXJlIG5vdCBpbiB1c2UgYnkgb3RoZXIgZHJpdmVycywgb3IKPiAgIGlmIHRoZXkg YXJlIGluIHVzZSAoc2F5IG9uZSBvZiB0aGVtIGlzIGFzc2lnbmVkIHRvIGEgZ3Vlc3QKPiAgIGFu ZCB0aGUgb3RoZXIgaXMgaWRsZSkgLSBpdCBpcyBzdGlsbCBPSyB0byByZXNldCB0aGUgc2xvdAo+ ICAgKGFzc3VtaW5nIGJvdGggb2YgdGhlbSBhcmUgb3duZWQgYnkgWGVuIHBjaWJhY2spLgo+IAo+ ICAgVGhpcyBwYXRjaCBkb2VzIHRoYXQgYnkgZG9pbmcgYW4gc2xvdCBvciBidXMgcmVzZXQgKGlm Cj4gICBzbG90IG5vdCBzdXBwb3J0ZWQpIGlmIGFsbCBvZiB0aGUgZnVuY3Rpb25zIG9mIGEgUENJ ZQo+ICAgZGV2aWNlIGJlbG9uZyB0byBYZW4gUENJYmFjay4gV2UgZG8gbm90IGNhcmUgaWYgdGhl IGRldmljZSBpcwo+ICAgaW4tdXNlIGFzIHdlIGRlcGVuZCBvbiB0aGUgdG9vbHN0YWNrIHRvIGJl IGF3YXJlIG9mIHRoaXMgLQo+ICAgaG93ZXZlciBpZiBpdCBpcyB3ZSB3aWxsIFdBUk4gdGhlIHVz ZXIuCj4gCj4gICBEdWUgdG8gdGhlIGNvbXBsZXhpdHkgd2l0aCB0aGUgUENJIGxvY2sgd2UgY2Fu bm90IGRvCj4gICB0aGUgcmVzZXQgd2hlbiBhIGRldmljZSBpcyBiaW5kZWQgKCdlY2hvICRCREYg PiBiaW5kJykKPiAgIG9yIHdoZW4gdW5iaW5kZWQgKCdlY2hvICRCREYgPiB1bmJpbmQnKSBhcyB0 aGUgcGNpX1tzbG90fGJ1c11fcmVzZXQKPiAgIGFsc28gdGFrZSB0aGUgc2FtZSBsb2NrIHJlc3Vs dGluZyBpbiBhIGRlYWQtbG9jay4KPiAKPiAgIFB1dHRpbmcgdGhlIHJlc2V0IGZ1bmN0aW9uIGlu IGEgd29ya3F1ZXVlIG9yIHRocmVhZAo+ICAgd29uJ3Qgd29yayBlaXRoZXIgLSBhcyB3ZSBoYXZl IHRvIGRvIHRoZSByZXNldCBmdW5jdGlvbgo+ICAgb3V0c2lkZSB0aGUgJ3VuYmluZCcgY29udGV4 dCAoaXQgaG9sZHMgdGhlIFBDSSBsb2NrKS4KPiAgIEJ1dCBvbmNlIHlvdSAndW5iaW5kJyBhIGRl dmljZSB0aGUgZGV2aWNlIGlzIG5vIGxvbmdlcgo+ICAgdW5kZXIgdGhlIG93bmVyc2hpcCBvZiBY ZW4gcGNpYmFjayBhbmQgdGhlIHBjaV9zZXRfZHJ2ZGF0YQo+ICAgaGFzIGJlZW4gcmVzZXQgc28g d2UgY2Fubm90IHVzZSBhIHRocmVhZCBmb3IgdGhpcy4KPiAKPiAgIEluc3RlYWQgb2YgZG9pbmcg YWxsIHRoaXMgY29tcGxleCBkYW5jZSwgd2UgZGVwZW5kIG9uIHRoZSB0b29sc3RhY2sKPiAgIGRv aW5nIHRoZSByaWdodCB0aGluZy4gQXMgc3VjaCBpbXBsZW1lbnQgWy4uLiBhIFN5c0ZTIGF0dHJp YnV0ZV0KPiAgIHdoaWNoIFsuLi4gdGhlIHRvb2xzdGFja10gIHVzZXMgd2hlbiBhIGRldmljZSBp cyBkZXRhY2hlZCBvciBhdHRhY2hlZAo+ICAgZnJvbS90byBhIGd1ZXN0LiBJdCBieXBhc3NlcyB0 aGUgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgUENJIGxvY2suCj4gCj4gICBUbyBub3QgaW5hZHZl cnRseSBkbyBhIGJ1cyByZXNldCB0aGF0IHdvdWxkIGFmZmVjdCBkZXZpY2VzIHRoYXQKPiAgIGFy ZSBpbiB1c2UgYnkgb3RoZXIgZHJpdmVycyAob3RoZXIgdGhhbiBYZW4gcGNpYmFjaykgcHJpb3IK PiAgIHRvIHRoZSByZXNldCB3ZSBjaGVjayB0aGF0IGFsbCBvZiB0aGUgZGV2aWNlcyB1bmRlciB0 aGUgYnJpZGdlCj4gICBhcmUgb3duZWQgYnkgWGVuIHBjaWJhY2suIElmIHRoZXkgYXJlIG5vdCB3 ZSBkbyBub3QgZG8KPiAgIHRoZSBidXMgKG9yIHNsb3QpIHJlc2V0Lgo+IAo+ICAgV2UgYWxzbyB3 YXJuIHRoZSB1c2VyIGlmIHRoZSBkZXZpY2UgaXMgaW4gdXNlIC0gYnV0IHN0aWxsCj4gICBjb250 aW51ZSB3aXRoIHRoZSByZXNldC4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiBhcyB0aGUgdG9vbHN0 YWNrCj4gICBhbHNvIGRvZXMgdGhlIGNoZWNrLgo+IAo+IC0tCj4gCj4gT3VyIHZlcnNpb24gb2Yg dGhlIHBhdGNoIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHVzZSBhIGxlc3MgY29uZnVzaW5nCj4gc3lz ZnMgbmFtZS4gVGhlIG9yaWdpbmFsIG5hbWUgKCdkb19mbHInKSBpcyBpbmFwcHJvcHJpYXRlLCBh cyBpdAo+IGltcGxpZXMgYSBmdW5jdGlvbiBsZXZlbCByZXNldDsgaXQgaXMgZW50aXJlbHkgcG9z c2libGUgdGhhdCB0aGUgcGF0Y2gKPiBjb2RlIHdpbGwgdXNlIGEgYnVzLWxldmVsIHJlc2V0IHdo ZW4gYXBwcm9wcmlhdGUuCj4gCj4gVGhlIG5ldyBzeXNmcyBlbnRyeSBpcyBsb2NhdGVkIGF0Ogo+ IAo+ICAgL3N5cy9idXMvcGNpL2RyaXZlcnMvcGNpYmFjay9yZXNldF9kZXZpY2UKPiAKPiBhbmQg Y2FuIGJlIGFjdGl2YXRlZCBieSB3cml0aW5nIGEgZG9tYWluOmJ1czpkZXZpY2U6ZnVuY3Rpb24g ZGV2aWNlCj4gaWRlbnRpZmllciBpbnRvIHRoZSBzeXNmcyBmaWxlLiBBcyBhbiBleGFtcGxlOgo+ IAo+ICAgZWNobyAiMDAwMDowMTowMC4wIiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3BjaWJhY2sv cmVzZXRfZGV2aWNlCj4gCj4gd291bGQgcmVzZXQgdGhlIGRldmljZSBtYXRjaGluZyB0aGUgRDpC REYgZGVzY3JpcHRvciBhYm92ZS4KPiAKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IENIQU5H RUxPRzoKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IFRoaXMgaXMgYSBwb3J0IG9mIGEgcGF0 Y2ggdGhhdCBsaWtlbHkgaGFkIG1hbnkgYXV0aG9ycywgaW5jbHVkaW5nOgo+ICAgICAtS29ucmFk IFJ6ZXN6dXRlayBXaWxrCj4gICAgIC1BbGV4IFdpbGxpYW1zb24KPiAgICAgLVJvc3MgUGhpbGxp cHNvbiA8cnBoaWxpcHNvbkBhaW5mb3NlYy5jb20+Cj4gUG9ydGVkIHRvIE9wZW5YVCBieTogS3ls ZSBKLiBUZW1raW4gPHRlbWtpbmtAYWluZm9zZWMuY29tPiwgNC84LzE1Cj4gUmV3cml0ZSBieTog ICAgICAgICAgS3lsZSBKLiBUZW1raW4gPHRlbWtpbmtAYWluZm9zZWMuY29tPiwgNC8xMC8xNQo+ IAo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gREVQRU5ERU5DSUVTCj4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiBUaGlzIHBhdGNoIHJlcXVpcmVzIE9ORSBvZiB0aGUgZm9sbG93aW5nOgo+ ICAgLUEgcmVsYXRpdmVseSBtb2Rlcm4gbGludXgga2VybmVsICgzLjE4KykgYXMgYSBiYXNlOyB3 aGljaCBwcm92aWRlcwo+ICAgIHRoZSBQQ0kgZnVuY3Rpb25zIHVzZWQ7IG9yCj4gICAtT3VyIFBD SSByZXNldCBiYWNrcG9ydHMgcGF0Y2ggKGJhY2twb3J0LXBjaS1yZXNldC1mdW5jdGlvbmFsaXR5 LnBhdGNoKSwKPiAgICB3aGljaCBiYWNrcG9ydHMgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHkg dG8gMy4xMS4KPiAKPiBUbyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIHBhdGNoLCB0aGUgdXRpbGl6 ZWQgdG9vbHN0YWNrIHNob3VsZCBiZQo+IGNoYW5nZWQgdG86Cj4gICAtVXNlIHRoZSBwcm92aWRl ZCAicmVzZXRfZGV2aWNlIiBwcm9wZXJ0eSwgcmF0aGVyIHRoYW4gdGhlIFBDSQo+ICAgIGRldmlj ZSdzIHN5c2ZzICJyZXNldCIgZW50cnkuIFRoaXMgZW5hYmxlcyByZXNldHMgYmV5b25kIGEgRkxS IHRvIGJlCj4gICAgdXNlZC4KPiAgIC1FbnN1cmUgdGhhdCBhbGwgZnVuY3Rpb25zIG9mIGEgZ2l2 ZW4gZGV2aWNlIGFyZSBwYXNzZWQgdGhyb3VnaAo+ICAgIHRvZ2V0aGVyLiBUaGlzIGFsbG93cyB1 cyB0byB1c2Ugc29tZSBvZiB0aGUgbW9yZSB0aG9ydWdoIHJlc2V0dGluZwo+ICAgIHRlY2huaXF1 ZXMsIHdoZW4gcG9zc2libGUuCj4gCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBSRU1PVkFM Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBUaGlzIHBhdGNoIHByb3ZpZGVzIGEgc2Vydmlj ZSB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIHByb3BlciBwYXNzdGhyb3VnaAo+IG9mIG1hbnkgUENJ IGNhcmRzOiBhIGdlbmVyYWxpemVkIGFiaWxpdHkgdG8gcmVzZXQgUENJIGRldmljZXMsIHdpdGhv dXQKPiByZXF1aXJpbmcgdGhhdCB0aGUgZGV2aWNlIHN1cHBvcnQgRkxSIG9yIHBvd2VyLW1hbmFn ZW1lbnQgYmFzZWQgcmVzZXRzLgo+IAo+IFRoaXMgcGF0Y2ggd2lsbCBiZSBuZWNlc3NhcnkgdW50 aWwgZWl0aGVyIHRoZSBMaW51eCBQQ0kgc3Vic3lzdGVtIG9yIFhlbgo+IFBDSWJhY2sgZHJpdmVy cyBhcmUgbW9kaWZpZWQgdG8gcHJvdmlkZSB0aGlzIHN1cHBvcnQ7IG9yIHVudGlsIGNhcmRzCj4g d2l0aG91dCBwcm9wZXIgRkxSIHN1cHBvcnQgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuCj4gCj4g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBVUFNUUkVBTSBQTEFOCj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAKPiBUaGlzIGNvZGUgaXMgdGFrZW4gZnJvbSBhIHBhdGNoIHdoaWNoIHdhcyBv cmlnaW5hbGx5IHByb3Bvc2VkIGFuZAo+IHJlamVjdGVkIGZyb20gdXBzdHJlYW0gb24gdGhlIExL TUwgYW5kIHhlbi1kZXZlbC4gQW4gdXBzdHJlYW0KPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZnVu Y3Rpb25hbGl0eSBvZiB0aGlzIHBhdGNoIGlzIHN0aWxsIG5lY2Vzc2FyeTsKPiBhbmQgY2FuIGFu ZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQuCj4gCj4gVGhpcyBwYXRjaCB3aWxsIGhvcGVmdWxseSBi ZSByZXBsYWNlZCB3aXRoIGFuIHVwc3RyZWFtIHZlcnNpb24gd2hlbgo+IGNvbW11bml0eSBjb25j ZW5zdXMgaGFzIHByb2R1Y2VkIGEgc2luZ2xlICJibGVzc2VkIiBtZXRob2Qgb2YKPiBhY2NvbXBs aXNoaW5nIGl0cyBmdW5jdGlvbmFsaXR5Lgo+IAo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g UEFUQ0hFUwo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tCj4gIGRyaXZlcnMveGVuL3hl bi1wY2liYWNrL3BjaV9zdHViLmMgfCAzMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMzEyIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9u cygtKQo+IAo+IEluZGV4OiBsaW51eC00LjkuNDAvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNp X3N0dWIuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KPiAtLS0gbGludXgtNC45LjQwLm9yaWcvZHJpdmVycy94ZW4v eGVuLXBjaWJhY2svcGNpX3N0dWIuYwo+ICsrKyBsaW51eC00LjkuNDAvZHJpdmVycy94ZW4veGVu LXBjaWJhY2svcGNpX3N0dWIuYwo+IEBAIC0xMDIsMTAgKzEwMiw5IEBAIHN0YXRpYyB2b2lkIHBj aXN0dWJfZGV2aWNlX3JlbGVhc2Uoc3RydWMKPiAgCj4gIAl4ZW5fdW5yZWdpc3Rlcl9kZXZpY2Vf ZG9tYWluX293bmVyKGRldik7Cj4gIAo+IC0JLyogQ2FsbCB0aGUgcmVzZXQgZnVuY3Rpb24gd2hp Y2ggZG9lcyBub3QgdGFrZSBsb2NrIGFzIHRoaXMKPiAtCSAqIGlzIGNhbGxlZCBmcm9tICJ1bmJp bmQiIHdoaWNoIHRha2VzIGEgZGV2aWNlX2xvY2sgbXV0ZXguCj4gLQkgKi8KPiAtCV9fcGNpX3Jl c2V0X2Z1bmN0aW9uX2xvY2tlZChkZXYpOwo+ICsKPiArCS8qIFJlc2V0IGlzIGRvbmUgYnkgdGhl IHRvb2xzdGFjayBieSB1c2luZyAncmVzZXRfZGV2aWNlJyBvbiB0aGUKPiArCSAqIFN5c0ZTLiAq Lwo+ICAJaWYgKHBjaV9sb2FkX2FuZF9mcmVlX3NhdmVkX3N0YXRlKGRldiwgJmRldl9kYXRhLT5w Y2lfc2F2ZWRfc3RhdGUpKQo+ICAJCWRldl9pbmZvKCZkZXYtPmRldiwgIkNvdWxkIG5vdCByZWxv YWQgUENJIHN0YXRlXG4iKTsKPiAgCWVsc2UKPiBAQCAtMTI1LDkgKzEyNCw2IEBAIHN0YXRpYyB2 b2lkIHBjaXN0dWJfZGV2aWNlX3JlbGVhc2Uoc3RydWMKPiAgCQkJCSBlcnIpOwo+ICAJfQo+ICAK PiAtCS8qIERpc2FibGUgdGhlIGRldmljZSAqLwo+IC0JeGVuX3BjaWJrX3Jlc2V0X2RldmljZShk ZXYpOwo+IC0KPiAgCWtmcmVlKGRldl9kYXRhKTsKPiAgCXBjaV9zZXRfZHJ2ZGF0YShkZXYsIE5V TEwpOwo+ICAKPiBAQCAtMjI0LDYgKzIyMCwyNzEgQEAgc3RydWN0IHBjaV9kZXYgKnBjaXN0dWJf Z2V0X3BjaV9kZXZfYnlfcwo+ICAJcmV0dXJuIGZvdW5kX2RldjsKPiAgfQo+ICAKPiArCj4gKy8q Kgo+ICsgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBkZXZpY2Ugc3VwcG9ydHMgUENJZSBG TFJzLgo+ICsgKi8KPiArc3RhdGljIGJvb2wgX19kZXZpY2Vfc3VwcG9ydHNfcGNpZV9mbHIoc3Ry dWN0IHBjaV9kZXYgKmRldikKPiArewo+ICsJdTMyIGNhcDsKPiArCj4gKwkvKgo+ICsgICAgICAg ICAqIFJlYWQgdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcy4gTm90ZSB0aGF0IHRoaXMgY2FuIGJl IHVzZWQgZXZlbiBvbiBsZWdhY3kKPiArCSAqIFBDSSBkZXZpY2VzIChhbmQgbm90IGp1c3Qgb24g UENJZSBkZXZpY2VzKS0tIGl0IGluZGljYXRlcyB0aGF0IG5vIGNhcGFiaWxpdGllcwo+ICsJICog YXJlIHN1cHBvcnRlZCBpZiB0aGUgZGV2aWNlIGlzIGxlZ2FjeSBQQ0kgYnkgc2V0dGluZyBjYXAg dG8gMC4KPiArCSAqLwo+ICsJIHBjaWVfY2FwYWJpbGl0eV9yZWFkX2R3b3JkKGRldiwgUENJX0VY UF9ERVZDQVAsICZjYXApOwo+ICsKPiArCS8qIFJldHVybiB0cnVlIGlmZiB0aGUgZGV2aWNlIGFk dmVydGlzZXMgc3VwcG9ydGluZyBhbiBGTFIuICovCj4gKwlyZXR1cm4gKGNhcCAmIFBDSV9FWFBf REVWQ0FQX0ZMUik7Cj4gK30KPiArCj4gKwo+ICsvKioKPiArICogUmV0dXJucyB0cnVlIGlmZiB0 aGUgZ2l2ZW4gZGV2aWNlIHN1cHBvcnRzIFBDSSBBZHZhbmNlZCBGdW5jdGlvbmFsaXR5IChBRikg RkxScy4KPiArICovCj4gK3N0YXRpYyBib29sIF9fZGV2aWNlX3N1cHBvcnRzX3BjaV9hZl9mbHIo c3RydWN0IHBjaV9kZXYgKmRldikKPiArewo+ICsJaW50IHBvczsKPiArCXU4IGNhcGFiaWxpdHlf ZmxhZ3M7Cj4gKwo+ICsJLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUg UENJIEFkdmFuY2VkIEZ1bmN0aW9uYWxpdHkgY2FwYWJpbGl0eSBieXRlLiAqLwo+ICsJcG9zID0g cGNpX2ZpbmRfY2FwYWJpbGl0eShkZXYsIFBDSV9DQVBfSURfQUYpOwo+ICsKPiArCS8qCj4gKwkg KiBJZiB3ZSB3ZXJlbid0IGFibGUgdG8gZmluZCB0aGUgY2FwYWJpbGl0eSBieXRlLCB0aGlzIGRl dmljZSBkb2Vzbid0IHN1cHBvcnQKPiArCSAqIHRoZSBBZHZhbmNlZCBGdW5jdGlvbmFsaXR5IGV4 dGVuc2lvbnMsIGFuZCB0aHVzIHdvbid0IHN1cHBvcnQgQUYgRkxSLgo+ICsJICovCj4gKwlpZiAo IXBvcykKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJLyogUmVhZCB0aGUgY2FwYWJpbGl0aWVz IGFkdmVydGlzZWQgaW4gdGhlIEFGIGNhcGFiaWxpdHkgYnl0ZS4gKi8KPiArCXBjaV9yZWFkX2Nv bmZpZ19ieXRlKGRldiwgcG9zICsgUENJX0FGX0NBUCwgJmNhcGFiaWxpdHlfZmxhZ3MpOwo+ICsK PiArCS8qCj4gKwkgKiBJZiB0aGUgZGV2aWNlIGRvZXMgc3VwcG9ydCBBRiwgaXQgd2lsbCBhZHZl cnRpc2UgRkxSIHN1cHBvcnQgdmlhIHRoZQo+ICsJICogUENJX0FGX0NBUF9GTFIgYml0LiBXZSds bCBhbHNvIGNoZWNrIGZvciB0aGUgVHJhbnNhY3Rpb25zIFBlbmRpbmcgKFRQKQo+ICsJICogbWVj aGFuaXNtLCBhcyB0aGUga2VybmVsIHJlcXVpcmVzIHRoaXMgZXh0ZW5zaW9uIHRvIGlzc3VlIGFu IEFGIEZMUi4KPiArCSAqIChJbnRlcm5hbGx5LCB0aGUgUENJIHJlc2V0IGNvZGUgbmVlZHMgdG8g YmUgYWJsZSB0byB3YWl0IGZvciBhbGwKPiArCSAqIHBlbmRpbmcgdHJhbnNhY3Rpb25zIHRvIGNv bXBsZXRlIHByaW9yIHRvIGlzc3VpbmcgdGhlIEFGIEZMUi4pCj4gKwkgKi8KPiArCXJldHVybiAo Y2FwYWJpbGl0eV9mbGFncyAmIFBDSV9BRl9DQVBfVFApICYmIChjYXBhYmlsaXR5X2ZsYWdzICYg UENJX0FGX0NBUF9GTFIpOwo+ICt9Cj4gKwo+ICsKPiArLyoqCj4gKyAqIFJldHVybnMgdHJ1ZSBp ZmYgdGhlIGdpdmVuIGRldmljZSBhZHZlcnN0aXNlcyBzdXBwb3J0aW5nIGZ1bmN0aW9uLQo+ICsg KiBsZXZlbC1yZXNldCAoRkxSKS4KPiArICovCj4gK3N0YXRpYyBib29sIGRldmljZV9zdXBwb3J0 c19mbHIoc3RydWN0IHBjaV9kZXYgKmRldikKPiArewo+ICsJcmV0dXJuIF9fZGV2aWNlX3N1cHBv cnRzX3BjaV9hZl9mbHIoZGV2KSB8fCBfX2RldmljZV9zdXBwb3J0c19wY2llX2ZscihkZXYpOwo+ ICt9Cj4gKwo+ICsKPiArLyoqCj4gKyAqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIGRldmlj ZSBpcyBsb2NhdGVkIGluIGEgc2xvdCB0aGF0Cj4gKyAqIHN1cHBvcnRzIGhvdHBsdWdnaW5nIHNs b3QgcmVzZXRzLgo+ICsgKi8KPiArc3RhdGljIGJvb2wgZGV2aWNlX3N1cHBvcnRzX3Nsb3RfcmVz ZXQoc3RydWN0IHBjaV9kZXYgKmRldikKPiArewo+ICsJcmV0dXJuICFwY2lfcHJvYmVfcmVzZXRf c2xvdChkZXYtPnNsb3QpOwo+ICt9Cj4gKwo+ICsKPiArLyoqCj4gKyAqIFJldHVybnMgdHJ1ZSBp ZmYgdGhlIGdpdmVuIGRldmljZSBpcyBsb2NhdGVkIG9uIGEgYnVzIHRoYXQKPiArICogd2UgY2Fu IHJlc2V0LiBOb3RlIHRoYXQgcm9vdCBicmlkZ2VzIGFyZSBleGNsdWRlZCwgYXMgdGhpcwo+ICsg KiB3b3VsZCBjYXVzZSBtb3JlIHRoYW4ganVzdCBhbiBTQlIuCj4gKyAqLwo+ICtzdGF0aWMgYm9v bCBkZXZpY2Vfc3VwcG9ydHNfYnVzX3Jlc2V0KHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4gK3sKPiAr CXJldHVybiAhcGNpX2lzX3Jvb3RfYnVzKGRldi0+YnVzKSAmJiAhcGNpX3Byb2JlX3Jlc2V0X2J1 cyhkZXYtPmJ1cyk7Cj4gK30KPiArCj4gKwo+ICsvKioKPiArICogT3V0IGFyZ3VtZW50IGZvciB0 aGUgX19zYWZlX3RvX3Nicl9kZXZpY2VfY2FsbGJhY2sgZnVuY3Rpb24uCj4gKyAqLwo+ICtzdHJ1 Y3Qgc2FmZV90b19zYnJfYXJndW1lbnRzIHsKPiArCj4gKwkvL1N0b3JlcyB0aGUgbW9zdCByZWNl bnRseSBlbmNvdW50ZXJlZCBQQ0kgZGV2aWNlIHRoYXQgZG9lcwo+ICsJLy9ub3QgYmVsb25nIHRv IHBjaWJhY2suIEFzIHVzZWQgYmVsb3csIHRoaXMgaXMgdGhlIHJlc3VsdCBvZiBhCj4gKwkvL3Nl YXJjaCBmb3IgYSBub24tcGNpYmFjayBkZXZpY2Ugb24gYSBidXM7IHdlIHN0b3AgdXBvbiBmaW5k aW5nCj4gKwkvL3RoZSBmaXJzdCBub24tcGNpYmFjayBkZXZpY2UuCj4gKwlzdHJ1Y3QgcGNpX2Rl diAqbGFzdF9ub25fcGNpYmFja19kZXZpY2U7Cj4gKwo+ICsJLy9TdG9yZXMgdGhlIG51bWJlciBv ZiBwY2liYWNrIGRldmljZXMgdGhhdCBhcHBlYXIgdG8gYmUgaW4gdXNlCj4gKwkvL29uIHRoZSBi dXMgaW4gcXVlc3Rpb24uCj4gKwlpbnQgdXNlX2NvdW50Owo+ICsKPiArfTsKPiArCj4gKwo+ICsv KioKPiArICoJQSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBkZXRlcm1pbmVzIGlmIGEgZ2l2ZW4g UENJIGRldmljZSBpcyBvd25lZCBieSBwY2liYWNrLAo+ICsgKglhbmQgd2hldGhlciB0aGUgZ2l2 ZW4gZGV2aWNlIGlzIGluIHVzZS4gVXNlZCBieSBzYWZlX3RvX3Nicl9kZXZpY2UuCj4gKyAqCj4g KyAqCUBwYXJhbSBkZXYgVGhlIFBDSSBkZXZpY2UgdG8gYmUgY2hlY2tlZC4KPiArICoJQHBhcmFt IGRhdGEgQW4gb3V0IGFyZ3VtZW50IG9mIHR5cGUgc3RydWN0IHNhZmVfdG9fc2JyX2RldmljZV9j YWxsYmFja19hcmd1bWVudHMuCj4gKyAqCQkJVXBkYXRlZCB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0 IG9mIHRoZSBzZWFyY2guIFNlZSB0aGUgc3RydWN0J3MgZGVmaW5pdGlvbgo+ICsgKgkJCWZvciBt b3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqLwo+ICtzdGF0aWMgaW50IF9fc2FmZV90b19zYnJfZGV2 aWNlX2NhbGxiYWNrKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHZvaWQgKmRhdGEpCj4gK3sKPiArCj4g KwlzdHJ1Y3QgcGNpc3R1Yl9kZXZpY2UgKnBzZGV2Owo+ICsKPiArCWJvb2wgZGV2aWNlX293bmVk X2J5X3BjaWJhY2sgPSBmYWxzZTsKPiArCXN0cnVjdCBzYWZlX3RvX3Nicl9hcmd1bWVudHMgKmFy ZyA9IGRhdGE7Cj4gKwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwkvL0Vuc3VyZSB0 aGF0IHdlIGhhdmUgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgbGlzdCBvZiBQQ0kgZGV2aWNlcywK PiArCS8vc28gd2UgY2FuIHRyYXZlcnNlIGl0Lgo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnBjaXN0 dWJfZGV2aWNlc19sb2NrLCBmbGFncyk7Cj4gKwo+ICsJLy9JdGVyYXRlIG92ZXIgYWxsIFBDSSBk ZXZpY2VzIG93bmVkIGJ5IHRoZSBwY2kgc3R1Yi4KPiArCWxpc3RfZm9yX2VhY2hfZW50cnkocHNk ZXYsICZwY2lzdHViX2RldmljZXMsIGRldl9saXN0KSB7Cj4gKwo+ICsJCS8vSWYgdGhlIGdpdmVu IGRldmljZSBpcyBvd25lZCBieSBwY2liYWNrLi4uCj4gKwkJaWYgKHBzZGV2LT5kZXYgPT0gZGV2 KSB7Cj4gKwo+ICsJCQkvL21hcmsgaXQgYXMgYSBwY2liYWNrIGRldmljZS4KPiArCQkJZGV2aWNl X293bmVkX2J5X3BjaWJhY2sgPSB0cnVlOwo+ICsKPiArCQkJLy9JZiB3ZSBoYXZlIGEgcGh5c2lj YWwgZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGNpYmFjayBkZXZpY2UsCj4gKwkJCS8vbWFy ayB0aGlzIGRldmljZSBhcyBpbi11c2UuCj4gKwkJCWlmIChwc2Rldi0+cGRldikKPiArCQkJCWFy Zy0+dXNlX2NvdW50Kys7Cj4gKwo+ICsJCQkvL1N0b3Agc2VhcmNoaW5nOyB3ZSd2ZSBmb3VuZCBh IHRoZSBQQ0liYWNrIGRldmljZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvbmUuCj4gKwkJCWJyZWFr Owo+ICsJCX0KPiArCX0KPiArCj4gKwkvL1JlbGVhc2UgdGhlIFBDSSBkZXZpY2UgbG9jay4uLgo+ ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGNpc3R1Yl9kZXZpY2VzX2xvY2ssIGZsYWdzKTsK PiArCj4gKwkvLy4uLiBhbmQgcmVwb3J0IGlmIHdlJ3ZlIGZvdW5kIGEgZGV2aWNlIHRoYXQncyBu b3Qgb3duZWQgYnkgcGNpYmFjay4KPiArCWRldl9kYmcoJmRldi0+ZGV2LCAiJXNcbiIsIGRldmlj ZV9vd25lZF9ieV9wY2liYWNrID8gImlzIG93bmVkIGJ5IHBjaWJhY2ssIGFuZCBjYW4gYmUgcmVz ZXQgaWYgbm90IGluIHVzZS4iCj4gKwkJCTogIm5vdCBvd25lZCBieSBwY2liYWNrLCBhbmQgdGh1 cyBjYW5ub3QgYmUgcmVzZXQuIik7Cj4gKwo+ICsJLy9JZiB3ZSd2ZSBmb3VuZCBhIGRldmljZSB0 aGF0J3Mgbm90IG93bmVkIGJ5IHBjaWJhY2ssIHVwZGF0ZSBvdXIgZGF0YQo+ICsJLy9hcmd1bWVu dCBzbyBpdCBwb2ludHMgdG8gdGhlIG1vc3QgcmVjZW50IHVub3duZWQgZGV2aWNlLiAoV2UgY2hl Y2sKPiArCS8vdGhpcyBsaWtlIGEgZmxhZywgbGF0ZXI6IGlmIGl0J3MgbmV2ZXIgc2V0LCBubyBv bmUgb3ducyB0aGUgZGV2aWNlISkKPiArCWlmICghZGV2aWNlX293bmVkX2J5X3BjaWJhY2spCj4g KwkJYXJnLT5sYXN0X25vbl9wY2liYWNrX2RldmljZSA9IGRldjsKPiArCj4gKwkvL0lmIHdlJ3Zl IGZvdW5kIGEgZGV2aWNlIHRoYXQncyBub3Qgb3duZWQgYnkgcGNpYmFjaywgcmV0dXJuIGZhbHNl LS0KPiArCS8vdGhpcyBpbmRpY2F0ZXMgdGhhdCBwY2lfd2Fsa19idXMgc2hvdWxkIGNlYXNlIGl0 cyB3YWxrLgo+ICsJcmV0dXJuICFkZXZpY2Vfb3duZWRfYnlfcGNpYmFjazsKPiArfQo+ICsKPiAr Cj4gKy8qKgo+ICsgKiBSZXR1cm5zIHRydWUgaWZmIGl0IHNob3VsZCBiZSBzYWZlIHRvIGlzc3Vl IGEgc2Vjb25kYXJ5IGJ1cyByZXNldAo+ICsgKiB0byB0aGUgZGV2aWNlOyB0aGF0IGlzLCBpZiBh biBTQlIgY2FuIGJlIGlzc3VlZCB3aXRob3V0IGRpc3J1cHRpbmcKPiArICogb3RoZXIgZGV2aWNl cy4KPiArICovCj4gK3N0YXRpYyBib29sIHNhZmVfdG9fc2JyX2RldmljZShzdHJ1Y3QgcGNpX2Rl diAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qgc2FmZV90b19zYnJfYXJndW1lbnRzIHdhbGtfcmVzdWx0 ID0geyAubGFzdF9ub25fcGNpYmFja19kZXZpY2UgPSBOVUxMLCAudXNlX2NvdW50ID0gMCB9Owo+ ICsKPiArCS8vV2FsayB0aGUgUENJIGJ1cywgYXR0ZW1wdGluZyB0byBmaW5kIGlmIGFueSBvZiB0 aGUgZ2l2ZW4gZGV2aWNlcwo+ICsJcGNpX3dhbGtfYnVzKGRldi0+YnVzLCBfX3NhZmVfdG9fc2Jy X2RldmljZV9jYWxsYmFjaywgJndhbGtfcmVzdWx0KTsKPiArCj4gKwkvL0lmIHRoZSBkZXZpY2Ug aXMgaW4gdXNlLCBlbWl0IGEgd2FybmluZyBlcnJvci4KPiArCWlmKHdhbGtfcmVzdWx0LnVzZV9j b3VudCA+IDApCj4gKwkJZGV2X2RiZygmZGV2LT5kZXYsICJpcyBpbiB1c2U7IGN1cnJlbnRseSBu b3Qgc2FmZSB0byBTQlIgZGV2aWNlLlxuIik7Cj4gKwo+ICsJLy9SZXR1cm4gdHJ1ZSBpZmYgd2Ug ZGlkIG5vdCBwaWNrIHVwIGFueSBvdGhlciBkZXZpY2VzCj4gKwkvL3RoYXQgd2VyZSBlaXRoZXIg aW4gdXNlLCBvciBub3Qgb3duZWQgYnkgcGNpYmFjay4KPiArCXJldHVybiAod2Fsa19yZXN1bHQu bGFzdF9ub25fcGNpYmFja19kZXZpY2UgPT0gTlVMTCkgJiYgKHdhbGtfcmVzdWx0LnVzZV9jb3Vu dCA9PSAwKTsKPiArfQo+ICsKPiArCj4gKy8qKgo+ICsgKiBBdHRlbXB0IGEgcmF3IHJlc2V0IG9m IHRoZSBwcm92aWRlZCBQQ0kgZGV2aWNlLS0gdmlhIGFueQo+ICsgKiBtZXRob2QgYXZhaWxhYmxl IHRvIHVzLiBUaGlzIG1ldGhvZCBwcmVmZXJzIHRoZSBnZW50bGVzdAo+ICsgKiBwb3NzaWJsZSBy ZXNldCBtZXRob2QtLSBjdXJyZW50bHkgYW4gRkxSLCB3aGljaCBtYW55Cj4gKyAqIFBDSWUgZGV2 aWNlcyBzaG91bGQgc3VwcG9ydC4KPiArICoKPiArICogQHBhcmFtIGRldiBUaGUgcGNpIGRldmlj ZSB0byBiZSByZXNldC4KPiArICogQHJldHVybiBaZXJvIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJv ciBjb2RlIGdlbmVyYXRlZCBieSB0aGUgcmVzZXQgbWV0aG9kIG9uIGZhaWx1cmUuCj4gKyAqLwo+ ICtzdGF0aWMgaW50IF9fcGNpc3R1Yl9yYXdfZGV2aWNlX3Jlc2V0KHN0cnVjdCBwY2lfZGV2ICpk ZXYpCj4gK3sKPiArCS8vRGV0ZXJtaW5lIGlmIGJ1cyByZXNldHRpbmcgdGVjaG5pcXVlcyAoU0JS LCBzbG90IHJlc2V0cykKPiArCS8vYXJlIHNhZmUsIGFuZCB0aHVzIHNob3VsZCBiZSBhbGxvd2Vk Lgo+ICsJaW50IGFsbG93X2J1c19yZXNldCA9IHNhZmVfdG9fc2JyX2RldmljZShkZXYpOwo+ICsK PiArCS8vSWYgRkxScyBhcmUgc3VwcG9ydGVkOyB3ZSdsbCB0cnkgdG8gbGV0IHRoZSBsaW51eCBr ZXJuZWwKPiArCS8vbWFudWFsbHkgcmVzZXQgdGhlIGRldmljZS4KPiArCWlmKGRldmljZV9zdXBw b3J0c19mbHIoZGV2KSkgewo+ICsJCWRldl9kYmcoJmRldi0+ZGV2LCAiUmVzZXR0aW5nIGRldmlj ZSB1c2luZyBhbiBGTFIuIik7Cj4gKwkJcmV0dXJuIHBjaV9yZXNldF9mdW5jdGlvbihkZXYpOwo+ ICsJfQo+ICsKPiArCS8vTmV4dCwgd2UnbGwgdHJ5IHRoZSBuZXh0IGdlbnRsZXN0OiBhIGhvdHBs dWdnaW5nIHJlc2V0Cj4gKwkvL29mIHRoZSBQQ0kgc2xvdC4KPiArCWlmKGFsbG93X2J1c19yZXNl dCAmJiBkZXZpY2Vfc3VwcG9ydHNfc2xvdF9yZXNldChkZXYpKSB7Cj4gKwkJZGV2X2RiZygmZGV2 LT5kZXYsICJSZXNldHRpbmcgZGV2aWNlIHVzaW5nIGEgc2xvdCByZXNldC4iKTsKPiArCQlyZXR1 cm4gcGNpX3RyeV9yZXNldF9zbG90KGRldi0+c2xvdCk7Cj4gKwl9Cj4gKwo+ICsJLy9GaW5hbGx5 LCB3ZSdsbCB0cnkgdGhlIG1vc3QgZHJhc3RpYzogcmVzZXR0aW5nIHRoZSBwYXJlbnQKPiArCS8v UENJIGJ1cy0tIHdoaWNoIHdlIGNhbiBvbmx5IGRvIGNvbmRpdGlvbmFsbHkuCj4gKwlpZihhbGxv d19idXNfcmVzZXQgJiYgZGV2aWNlX3N1cHBvcnRzX2J1c19yZXNldChkZXYpKSB7Cj4gKwkJZGV2 X2RiZygmZGV2LT5kZXYsICJSZXNldHRpbmcgZGV2aWNlIHVzaW5nIGFuIFNCUi4iKTsKPiArCQly ZXR1cm4gcGNpX3RyeV9yZXNldF9idXMoZGV2LT5idXMpOwo+ICsJfQo+ICsKPiArCS8vSWYgd2Ug d2VyZW4ndCBhYmxlIHRvIHJlc2V0IHRoZSBkZXZpY2UgYnkgYW55IG9mIG91ciBrbm93bi1nb29k IG1ldGhvZHMsCj4gKwkvL2ZhbGwgYmFjayB0byB0aGUgbGludXgga2VybmVsJ3MgcmVzZXQgZnVu Y3Rpb24uIFVuZm9ydHVuYXRlbHksIHRoaXMgY29uc2lkZXJzIGEKPiArCS8vcG93ZXIgbWFuYWdl bWVudCByZXNldCB0byBiZSBhIHZhbGlkIHJlc2V0OyB0aG91Z2ggdGhpcyBkb2Vzbid0IHdvcmsg Zm9yIG1hbnkgZGV2aWNlcy0tCj4gKwkvL2VzcGVjaWFsbHkgR1BVcy4KPiArCWRldl9lcnIoJmRl di0+ZGV2LCAiTm8gcmVzZXQgbWV0aG9kcyBhdmFpbGFibGUgZm9yICVzLiBGYWxsaW5nIGJhY2sg dG8ga2VybmVsIHJlc2V0LiIsIHBjaV9uYW1lKGRldikpOwo+ICsJcGNpX3Jlc2V0X2Z1bmN0aW9u KGRldik7Cj4gKwo+ICsJLy9SZXR1cm4gYW4gZXJyb3IgY29kZSwgaW5kaWNhdGluZyB0aGF0IHdl IGxpa2VseSBkaWQgbm90IHJlc2V0IHRoZSBkZXZpY2UgY29ycmVjdGx5Lgo+ICsJcmV0dXJuIC1F Tk9UVFk7Cj4gK30KPiArCj4gKwo+ICsvKioKPiArICogUmVzZXRzIHRoZSB0YXJnZXQgKHBjaWJh Y2stb3duZWQpIFBDSSBkZXZpY2UuIFByaW1hcmlseSBpbnRlbmRlZAo+ICsgKiBmb3IgdXNlIGJ5 IHRoZSB0b29sc3RhY2ssIHNvIGl0IGNhbiBlbnN1cmUgYSBjb25zaXN0ZW50IFBDSSBkZXZpY2UK PiArICogc3RhdGUgb24gVk0gc3RhcnR1cC4KPiArICoKPiArICogQHBhcmFtIGRldiBUaGUgZGV2 aWNlIHRvIGJlIHJlc2V0Lgo+ICsgKiBAcmV0dXJuIFplcm8gb24gc3VjY2Vzcywgb3IgYSBuZWdh dGVkIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBpbnQgcGNpc3R1Yl9y ZXNldF9wY2lfZGV2KHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4gK3sKPiArCWludCByYzsKPiArCj4g KwlpZiAoIWRldikKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKgo+ICsJICogVGFrZXMg dGhlIFBDSSBsb2NrLiBPSyB0byBkbyBpdCBhcyB3ZSBhcmUgbmV2ZXIgY2FsbGVkCj4gKwkgKiBm cm9tICd1bmJpbmQnIHN0YXRlIGFuZCBkb24ndCBkZWFkbG9jay4KPiArCSAqLwo+ICsJcmMgPV9f cGNpc3R1Yl9yYXdfZGV2aWNlX3Jlc2V0KGRldik7Cj4gKwlwY2lfcmVzdG9yZV9zdGF0ZShkZXYp Owo+ICsKPiArCS8qIFRoaXMgZGlzYWJsZXMgdGhlIGRldmljZS4gKi8KPiArCXhlbl9wY2lia19y ZXNldF9kZXZpY2UoZGV2KTsKPiArCj4gKwkvKiBBbmQgY2xlYW51cCB1cCBvdXIgZW11bGF0ZWQg ZmllbGRzLiAqLwo+ICsJeGVuX3BjaWJrX2NvbmZpZ19yZXNldF9kZXYoZGV2KTsKPiArCXJldHVy biByYzsKPiArfQo+ICsKPiArCj4gKwo+ICBzdHJ1Y3QgcGNpX2RldiAqcGNpc3R1Yl9nZXRfcGNp X2RldihzdHJ1Y3QgeGVuX3BjaWJrX2RldmljZSAqcGRldiwKPiAgCQkJCSAgICBzdHJ1Y3QgcGNp X2RldiAqZGV2KQo+ICB7Cj4gQEAgLTI3OSwxMSArNTQwLDEzIEBAIHZvaWQgcGNpc3R1Yl9wdXRf cGNpX2RldihzdHJ1Y3QgcGNpX2Rldgo+ICAJKiBwY2lzdHViIGFuZCB4ZW5fcGNpYmsgd2hlbiBB RVIgaXMgaW4gcHJvY2Vzc2luZwo+ICAJKi8KPiAgCWRvd25fd3JpdGUoJnBjaXN0dWJfc2VtKTsK PiAtCS8qIENsZWFudXAgb3VyIGRldmljZQo+IC0JICogKHNvIGl0J3MgcmVhZHkgZm9yIHRoZSBu ZXh0IGRvbWFpbikKPiAtCSAqLwo+ICAJZGV2aWNlX2xvY2tfYXNzZXJ0KCZkZXYtPmRldik7Cj4g LQlfX3BjaV9yZXNldF9mdW5jdGlvbl9sb2NrZWQoZGV2KTsKPiArCS8qCj4gKwkgKiBSZXNldCBp cyB1cCB0byB0aGUgdG9vbHN0YWNrLgo+ICsJICogVGhlIHRvb2xzdGFjayBoYXMgdG8gY2FsbCAn cmVzZXRfZGV2aWNlJyBiZWZvcmUKPiArCSAqIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSB0byBh IGd1ZXN0IChzZWUgcGNpc3R1Yl9yZXNldF9kZXZpY2UpLgo+ICsJICovCj4gKwkvL19fcGNpX3Jl c2V0X2Z1bmN0aW9uX2xvY2tlZChkZXYpOwo+ICAKPiAgCWRldl9kYXRhID0gcGNpX2dldF9kcnZk YXRhKGRldik7Cj4gIAlyZXQgPSBwY2lfbG9hZF9zYXZlZF9zdGF0ZShkZXYsIGRldl9kYXRhLT5w Y2lfc2F2ZWRfc3RhdGUpOwo+IEBAIC0xNDYwLDYgKzE3MjMsNDEgQEAgc3RhdGljIHNzaXplX3Qg cmVzdHJpY3RpdmVfYWRkKHN0cnVjdCBkZQo+ICB9Cj4gIHN0YXRpYyBEUklWRVJfQVRUUihyZXN0 cmljdGl2ZSwgU19JV1VTUiwgTlVMTCwgcmVzdHJpY3RpdmVfYWRkKTsKPiAgCj4gKy8qKgo+ICsg KiBIYW5kbGVzIHRoZSAicmVzZXRfZGV2aWNlIiBzeXNmcyBhdHRyaWJ1dGUuIFRoaXMgaXMgdGhl IHByaW1hcnkgcmVzZXQgaW50ZXJmYWNlCj4gKyAqIHV0aWxpemVkIGJ5IHRoZSB0b29sc3RhY2su Cj4gKyAqLwo+ICtzdGF0aWMgc3NpemVfdCBwY2lzdHViX3N5c2ZzX3Jlc2V0X2RldmljZShzdHJ1 Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKPiAr ewo+ICsJaW50IGRvbWFpbiwgYnVzLCBzbG90LCBmdW5jLCBlcnI7Cj4gKwlzdHJ1Y3QgcGNpc3R1 Yl9kZXZpY2UgKnBzZGV2Owo+ICsKPiArCS8vQXR0ZW1wdCB0byBjb252ZXJ0IHRoZSB1c2VyJ3Mg c3RyaW5nIHRvIGEgQkRGL3Nsb3QuCj4gKwllcnIgPSBzdHJfdG9fc2xvdChidWYsICZkb21haW4s ICZidXMsICZzbG90LCAmZnVuYyk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsKPiArCS8vLi4uIGFuZCB0aGVuIHVzZSB0aGF0IHNsb3QgdG8gZmluZCB0aGUgcGNpYmFjayBk ZXZpY2UuCj4gKwlwc2RldiA9IHBjaXN0dWJfZGV2aWNlX2ZpbmQoZG9tYWluLCBidXMsIHNsb3Qs IGZ1bmMpOwo+ICsKPiArCS8vSWYgd2UgaGF2ZSBhIGRldmljZSwgYXR0ZW1wdCB0byByZXNldCBp dCB1c2luZyBvdXIgaW50ZXJuYWwgcmVzZXQgcGF0aC4KPiArCWlmIChwc2Rldikgewo+ICsJCWVy ciA9IHBjaXN0dWJfcmVzZXRfcGNpX2Rldihwc2Rldi0+ZGV2KTsKPiArCQlwY2lzdHViX2Rldmlj ZV9wdXQocHNkZXYpOwo+ICsKPiArCQkvL0lmIHdlIHdlcmUgbm90IGFibGUgdG8gcmVzZXQgdGhl IGRldmljZSwgcmV0dXJuIHRoZSByZWxldmFudCBlcnJvciBjb2RlLgo+ICsJCWlmKGVycikKPiAr CQkJZXJyID0gLUVOT0RFVjsKPiArCX0KPiArCS8vT3RoZXJ3aXNlLCBpbmRpY2F0ZSB0aGF0IHRo ZXJlJ3Mgbm8gc3VjaCBkZXZpY2UuCj4gKwllbHNlIHsKPiArCQllcnIgPSAtRU5PREVWOwo+ICsJ fQo+ICsKPiArCXJldHVybiBlcnIgPyBlcnIgOiBjb3VudDsKPiArCj4gK30KPiArc3RhdGljIERS SVZFUl9BVFRSKHJlc2V0X2RldmljZSwgU19JV1VTUiwgTlVMTCwgcGNpc3R1Yl9zeXNmc19yZXNl dF9kZXZpY2UpOwo+ICAKPiAgc3RhdGljIHZvaWQgcGNpc3R1Yl9leGl0KHZvaWQpCj4gIHsKPiBA QCAtMTQ3Niw2ICsxNzc0LDggQEAgc3RhdGljIHZvaWQgcGNpc3R1Yl9leGl0KHZvaWQpCj4gIAkJ CSAgICZkcml2ZXJfYXR0cl9pcnFfaGFuZGxlcnMpOwo+ICAJZHJpdmVyX3JlbW92ZV9maWxlKCZ4 ZW5fcGNpYmtfcGNpX2RyaXZlci5kcml2ZXIsCj4gIAkJCSAgICZkcml2ZXJfYXR0cl9pcnFfaGFu ZGxlcl9zdGF0ZSk7Cj4gKwlkcml2ZXJfcmVtb3ZlX2ZpbGUoJnhlbl9wY2lia19wY2lfZHJpdmVy LmRyaXZlciwKPiArCQkJICAgJmRyaXZlcl9hdHRyX3Jlc2V0X2RldmljZSk7Cj4gIAlwY2lfdW5y ZWdpc3Rlcl9kcml2ZXIoJnhlbl9wY2lia19wY2lfZHJpdmVyKTsKPiAgfQo+ICAKPiBAQCAtMTU3 Miw2ICsxODcyLDkgQEAgc3RhdGljIGludCBfX2luaXQgcGNpc3R1Yl9pbml0KHZvaWQpCj4gIAlp ZiAoIWVycikKPiAgCQllcnIgPSBkcml2ZXJfY3JlYXRlX2ZpbGUoJnhlbl9wY2lia19wY2lfZHJp dmVyLmRyaXZlciwKPiAgCQkJCQkmZHJpdmVyX2F0dHJfaXJxX2hhbmRsZXJfc3RhdGUpOwo+ICsJ aWYgKCFlcnIpCj4gKwkJZXJyID0gZHJpdmVyX2NyZWF0ZV9maWxlKCZ4ZW5fcGNpYmtfcGNpX2Ry aXZlci5kcml2ZXIsCj4gKwkJCQkJJmRyaXZlcl9hdHRyX3Jlc2V0X2RldmljZSk7Cj4gIAlpZiAo ZXJyKQo+ICAJCXBjaXN0dWJfZXhpdCgpOwo+ICAKCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==