From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH v9 0/7] KVM PCIe/MSI passthrough on ARM/ARM64: kernel part 3/3: vfio changes Date: Thu, 9 Jun 2016 13:44:27 -0600 Message-ID: <20160609134427.1e384ec0@ul30vt.home> References: <1462362858-2925-1-git-send-email-eric.auger@linaro.org> <573F34CA.5080308@linaro.org> <875b5791-f7c9-97ca-46de-4b1474fe65e0@linaro.org> <20160608150609.7e28d63d@ul30vt.home> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Auger Eric Cc: yehuday-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org, julien.grall-5wv7dgnIgG8@public.gmane.org, jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org, patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, marc.zyngier-5wv7dgnIgG8@public.gmane.org, p.fedin-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, will.deacon-5wv7dgnIgG8@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, pranav.sawargaonkar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org, christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, eric.auger.pro-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: iommu@lists.linux-foundation.org T24gVGh1LCA5IEp1biAyMDE2IDA5OjU1OjM3ICswMjAwCkF1Z2VyIEVyaWMgPGVyaWMuYXVnZXJA cmVkaGF0LmNvbT4gd3JvdGU6Cgo+IEFsZXgsCj4gPiBPbiBXZWQsIDggSnVuIDIwMTYgMTA6Mjk6 MzUgKzAyMDAKPiA+IEF1Z2VyIEVyaWMgPGVyaWMuYXVnZXJAbGluYXJvLm9yZz4gd3JvdGU6Cj4g PiAgIAo+ID4+IERlYXIgYWxsLAo+ID4+IExlIDIwLzA1LzIwMTYgw6AgMTg6MDEsIEVyaWMgQXVn ZXIgYSDDqWNyaXQgOiAgCj4gPj4+IEFsZXgsIFJvYmluLAo+ID4+Pgo+ID4+PiBXaGlsZSBteSAz IHBhcnQgc2VyaWVzIHByaW1hcmlseSBhZGRyZXNzZXMgdGhlIHByb2JsZW1hdGljIG9mIG1hcHBp bmcKPiA+Pj4gTVNJIGRvb3JiZWxscyBpbnRvIGFybS1zbW11LCBpdCBmYWlscyBpbiA6Cj4gPj4+ Cj4gPj4+IDEpIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIE1TSSBjb250cm9sbGVyIGlzIGRvd25z dHJlYW0gb3IgdXBzdHJlYW0gdG8KPiA+Pj4gdGhlIElPTU1VLCAgICAKPiA+Pj4gCT0+IGluZGlj YXRlcyB3aGV0aGVyIHRoZSBNU0kgZG9vcmJlbGwgbXVzdCBiZSBtYXBwZWQKPiA+Pj4gCT0+IHBh cnRpY2lwYXRlcyBpbiB0aGUgZGVjaXNpb24gYWJvdXQgMikgICAgCj4gPj4+Cj4gPj4+IDIpIGRl dGVybWluaW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBhc3NpZ24gYSBQQ0llIGRldmljZS4KPiA+ Pj4KPiA+Pj4gSSB0aGluayB3ZSBzaGFyZSB0aGlzIHVuZGVyc3RhbmRpbmcgd2l0aCBSb2Jpbi4g QWxsIGFib3ZlIG9mIGNvdXJzZQo+ID4+PiBzdGFuZHMgZm9yIEFSTS4KPiA+Pj4KPiA+Pj4gSSBn ZXQgc3R1Y2sgd2l0aCB0aG9zZSAyIGlzc3VlcyBhbmQgSSBoYXZlIGZldyBxdWVzdGlvbnMgYWJv dXQgaW9tbXUKPiA+Pj4gZ3JvdXAgc2V0dXAsIFBDSWUsIGlvbW11IGR0L0FDUEkgZGVzY3JpcHRp b24uIEkgd291bGQgYmUgZ3JhdGVmdWwgdG8geW91Cj4gPj4+IGlmIHlvdSBjb3VsZCBhbnN3ZXIg cGFydCBvZiB0aG9zZSBxdWVzdGlvbnMgYW5kIGFkdmlzZSBhYm91dCB0aGUKPiA+Pj4gc3RyYXRl Z3kgdG8gZml4IHRob3NlLiAgICAKPiA+Pgo+ID4+IGdlbnRsZSByZW1pbmRlciBhYm91dCB0aGUg cXVlc3Rpb25zIGJlbG93OyBob3BlIEkgZGlkIG5vdCBtaXNzIGFueSByZXBseS4KPiA+PiBJZiBh bnlib2R5IGhhcyBzb21lIHRpbWUgdG8gc3BlbnQgb24gdGhpcyB0b3BpYy4uLgo+ID4+ICAKPiA+ Pj4KPiA+Pj4gQmVzdCBSZWdhcmRzCj4gPj4+Cj4gPj4+IEVyaWMKPiA+Pj4KPiA+Pj4gUVVFU1RJ T05TOgo+ID4+Pgo+ID4+PiAxKSBSb2JpbiwgeW91IHBvaW50ZWQgc29tZSBob3N0IGNvbnRyb2xs ZXJzIHdoaWNoIGFsc28gYXJlIE1TSQo+ID4+PiBjb250cm9sbGVycwo+ID4+PiAoaHR0cDovL3Ro cmVhZC5nbWFuZS5vcmcvZ21hbmUubGludXgua2VybmVsLnBjaS80NzE3NC9mb2N1cz00NzI2OCku IEluCj4gPj4+IHRoYXQgY2FzZSBNU0lzIG5ldmVyIHJlYWNoIHRoZSBJT01NVS4gSSBmYWlsZWQg aW4gZmluZGluZyBhbnl0aGluZyBhYm91dAo+ID4+PiBNU0lzIGluIFBDSWUgQUNTIHNwZWMuIFdo YXQgc2hvdWxkIGJlIHRoZSBpb21tdSBncm91cHMgaW4gdGhhdAo+ID4+PiBzaXR1YXRpb24uIElz bid0IHRoZSB1cHN0cmVhbWVkIGNvZGUgYWJsZSB0byBzZWUgc29tZSBETUEgdHJhbnNmZXJzIGFy ZQo+ID4+PiBub3QgcHJvcGVybHkgaXNvbGF0ZWQgYW5kIGFsaWFzIGRldmljZXMgaW4gdGhlIHNh bWUgZ3JvdXA/IEFjY29yZGluZyB0bwo+ID4+PiB5b3VyIHNlY3VyaXR5IHdhcm5pbmcsIEFsZXgs IEkgd291bGQgdGhpbmsgdGhlIGNvZGUgZG9lcyBub3QgcmVjb2duaXplCj4gPj4+IGl0LCBjYW4g eW91IGNvbmZpcm0gcGxlYXNlPyAgICAKPiA+PiBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgaXMg ZW5kIHBvaW50cyB3b3VsZCBiZSBpbiBzZXBhcmF0ZSBncm91cHMgKGFzc3VtaW5nCj4gPj4gQUNT IHN1cHBvcnQpIGFsdGhvdWdoIE1TSSBjb250cm9sbGVyIGZyYW1lIGlzIG5vdCBwcm9wZXJseSBw cm90ZWN0ZWQuICAKPiA+IAo+ID4gV2UgZG9uJ3QgY3VycmVudGx5IGNvbnNpZGVyIE1TSSBkaWZm ZXJlbnRseSBmcm9tIG90aGVyIERNQSBhbmQgd2UgZG9uJ3QKPiA+IGN1cnJlbnRseSBoYXZlIGFu eSBzb3J0IG9mIGNvbmNlcHQgb2YgYSBkZXZpY2Ugd2l0aGluIHRoZSBpbnRlcm1lZGlhdGUKPiA+ IGZhYnJpYyBhcyBiZWluZyBhIERNQSB0YXJnZXQuICBXZSBleHBlY3QgZmFicmljIGRldmljZXMg dG8gb25seSBiZQo+ID4gdHJhbnNhY3Rpb24gcm91dGVycy4gIFdlIHVzZSBBQ1MgdG8gZGV0ZXJt aW5lIHdoZXRoZXIgdGhlcmUncyBhbnkKPiA+IHBvc3NpYmlsaXR5IG9mIERNQSBiZWluZyByZWRp cmVjdGVkIGJlZm9yZSBpdCByZWFjaGVzIHRoZSBJT01NVSwgYnV0IGl0Cj4gPiBzZWVtcyB0aGF0 IGEgRE1BIGJlaW5nIGNvbnN1bWVkIGJ5IGFuIGludGVycnVwdCBjb250cm9sbGVyIGJlZm9yZSBp dAo+ID4gcmVhY2hlcyB0aGUgSU9NTVUgd291bGQgYmUgYW5vdGhlciBjYXVzZSBmb3IgYW4gaXNv bGF0aW9uIGJyZWFjaC4KPiA+ICAgIAo+IE9LIHRoYW5rIHlvdSBmb3IgdGhlIGNvbmZpcm1hdGlv bgo+ID4+PiAyKSBjYW4gb3RoZXIgUENJZSBjb21wb25lbnRzIGJlIE1TSSBjb250cm9sbGVycz8g IAo+ID4gCj4gPiBJJ20gbm90IGV2ZW4gZW50aXJlbHkgc3VyZSB3aGF0IHRoaXMgbWVhbnMuICBX b3VsZCBhIERNQSB3cml0ZSBmcm9tIGFuCj4gPiBlbmRwb2ludCB0YXJnZXQgdGhlIE1NSU8gc3Bh Y2Ugb2YgYW4gaW50ZXJtZWRpYXRlLCBmYWJyaWMgZGV2aWNlPyAgCj4gV2l0aCB0aGUgZXhhbXBs ZSBwcm92aWRlZCBieSBSb2JpbiB3ZSBoYXZlIGEgaG9zdCBjb250cm9sbGVyIGFjdGluZyBhcwo+ IGFuIE1TSSBjb250cm9sbGVyLiBJIHdvbmRlcmVkIHdoZXRoZXIgd2UgY291bGQgaGF2ZSBzb21l IG90aGVyIGZhYnJpYwo+IGRldmljZXMgKGRvd25zdHJlYW0gdG8gdGhlIGhvc3QgY29udHJvbGxl ciBpbiBQQ0llIHRlcm1pbm9sb2d5KSBhbHNvCj4gbGlrZWx5IHRvIGFjdCBhcyBNU0kgY29udHJv bGxlcnMuCj4gPiAgICAKPiA+Pj4gMykgQW0gSSBvYmxpZ2VkIHRvIGNvbnNpZGVyIGFyYml0cmFy eSB0b3BvbG9naWVzIHdoZXJlIGFuIE1TSSBjb250cm9sbGVyCj4gPj4+IHN0YW5kcyBiZXR3ZWVu IHRoZSBQQ0llIGhvc3QgYW5kIHRoZSBpb21tdT8gaW4gdGhlIFBDSWUgc3BhY2Ugb3IKPiA+Pj4g cGxhdGZvcm0gc3BhY2U/IElmIHRoaXMgb25seSByZWxhdGVzIHRvIFBDSWUgY291bGRuJyBJIGNo ZWNrIGlmIGFuIE1TSQo+ID4+PiBjb250cm9sbGVyIGV4aXN0cyBpbiB0aGUgUENJZSB0cmVlPyAg ICAKPiA+PiBJbiBteSBsYXN0IHNlcmllcywgSSBjb25zaWRlciB0aGUgYXNzaWdubWVudCBvZiBw bGF0Zm9ybSBkZXZpY2UgdW5zYWZlIGFzCj4gPj4gc29vbiBhcyB0aGVyZSBpcyBhIEdJQ3YybS4g VGhpcyBpcyBhIGNoYW5nZSBpbiB0aGUgdXNlciBleHBlcmllbmNlIGNvbXBhcmVkIHRvCj4gPj4g d2hhdCB3ZSBoYXZlIGJlZm9yZS4gIAo+ID4gCj4gPiBJZiB0aGUgTVNJIGNvbnRyb2xsZXIgaXMg ZG93bnN0cmVhbSBvZiBvdXIgRE1BIHRyYW5zbGF0aW9uLCBpdCBkb2Vzbid0Cj4gPiBzZWVtIGxp a2Ugd2UgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gbWFyayBpdCB1bnNhZmUuICBUaGUgZW5kcG9p bnQgaXMKPiA+IGZ1bGx5IGFibGUgdG8gYXR0ZW1wdCB0byBleHBsb2l0IGl0LiAgCj4gT0sgdGhl IG9yZ2luYWwgcXVlc3Rpb24gd2FzIHJlbGF0ZWQgdG8gbm9uIFBDSWUgdG9wb2xvZ2llczoKPiAK PiAtIHdlIGtub3cgc29tZSBQQ0llIGZhYnJpYyB0b3BvbG9naWVzIHdoZXJlIHRoZSBQQ0llIGhv c3QgY29udHJvbGxlcgo+IGltcGxlbWVudHMgTVNJIGNvbnRyb2xsZXIuCj4gLSBTaGFsbCB3ZSBi ZSBwcmVwYXJlZCB0byBhZGRyZXNzIHRoZSBzYW1lIGtpbmQgb2YgaXNzdWVzIHdpdGggcGxhdGZv cm0KPiBNU0kgY29udHJvbGxlcnMuIEFyZSB0aGVyZSBzb21lIFNPQ3Mgd2hlcmUgd2Ugd291bGQg cHV0IGFuIHVuc2FmZSBNU0kKPiBwbGF0Zm9ybSBjb250cm9sbGVyIGJlZm9yZSBJT01NVSB0cmFu c2xhdGlvbi4gT3IgZG8gd2UgY29uc2lkZXIgaXQgaXMgYQo+IHBsYXRmb3JtIHRvcG9sb2d5IHdl IGRvbid0IHN1cHBvcnQgZm9yIGFzc2lnbm1lbnQ/CgpJIHdhcyB0cnlpbmcgdG8gYW5zd2VyIGFz IGdlbmVyaWNhbGx5LCBub24tUENJIGFzIEkgY291bGQsIGJ1dCBJIGd1ZXNzCkkgc3RpbGwgc2xp cHBlZCBhbiAiZW5kcG9pbnQiIGluIHRoZXJlLiAgU28gaWYgd2UgZGVmaW5lIGFuIE1TSQpjb250 cm9sbGVyIGdlbmVyaWNhbGx5IGFzIGEgRE1BIHdyaXRlIHRhcmdldCB3aGljaCBnZW5lcmF0ZXMg cGxhdGZvcm0Kc3BlY2lmaWMgaW50ZXJydXB0cyBpbiByZXNwb25zZSB0byB0aG9zZSB3cml0ZXMs IGFuZCB0aGF0IE1TSQpjb250cm9sbGVyIGlzIGZpeGVkIGluIHRoZSBhZGRyZXNzIHNwYWNlIG9m IHRoZSBpbnRlcnJ1cHQgZ2VuZXJhdGluZwpkZXZpY2UgKGllLiB0aGVyZSdzIG5vIElPTU1VIHRy YW5zbGF0aW9uIGFwcGxpZWQpLCB0aGVuIEkgdGhpbms6CgphKSBUaGUgcGFydCBvZiB0aGUgYWRk cmVzcyBzcGFjZSBjb25zdW1lZCBieSB0aGUgTVNJIGNvbnRyb2xsZXIgbmVlZHMKdG8gYmUgZGVz Y3JpYmVkIHRvIHRoZSB1c2VyCgpiKSBEZXBlbmRpbmcgb24gdGhlIHNjb3BlIG9mIHRoZSBpbnRl cnJ1cHRzIHRoZSBNU0kgY29udHJvbGxlciBpcyBhYmxlCnRvIGdlbmVyYXRlLCB0aGUgaW50ZXJy dXB0cyBuZWVkIHRvIGJlIG1hcmtlZCB1bnNhZmUKClRoaXMgaXMgcmVhbGx5IG5vdCBhbGwgdGhh dCBkaWZmZXJlbnQgZnJvbSB4ODYgd2l0aCBpbnRlcnJ1cHQKcmVtYXBwaW5nLiAgV2UgaGF2ZSBh biBhZGRyZXNzIHNwYWNlIGhvbGUgd2hlcmUgdGhlIE1TSSBjb250cm9sbGVyCmxpdmVzIGF0IDB4 ZmVlMDAwMDAuICBXZSB3b3VsZCBsaWtlIHRvIGRlc2NyaWJlIHRoaXMsIGJ1dCB3ZSBjdXJyZW50 bHkKZG9uJ3QgaGF2ZSBhIHN0cm9uZyBuZWVkIHRvIGRvIHNvIGJlY2F1c2UgaXQncyBhcmNoaXRl Y3R1cmFsbHkgZml4ZWQuCldpdGggaW50ZXJydXB0IHJlbWFwcGluZywgdGhlIHNjb3BlIG9mIHRo ZSBpbnRlcnJ1cHRzIHRoZSBkZXZpY2UgaXMKYWJsZSB0byBnZW5lcmF0ZSBpcyBvbmx5IHRoZSBp bnRlcnJ1cHRzIGludGVuZGVkIGZvciB0aGUgZGV2aWNlLCB3aGljaAp3ZSBjb25zaWRlciBzYWZl LiAgV2l0aG91dCBpbnRlcnJ1cHQgcmVtYXBwaW5nLCB0aGUgSU9NTVUgZG9lcyBub3QgZG8KdHJh bnNsYXRpb24gb2YgdGhpcyByYW5nZSAoc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciB0aGUg TVNJCmNvbnRyb2xsZXIgaXMgdXBzdHJlYW0sIGRvd25zdHJlYW0sIG9yIGNvaW5jaWRlbnQgd2l0 aCB0aGUgSU9NTVUpLCBhbmQKdGhlIHNjb3BlIG9mIHRoZSBpbnRlcnJ1cHRzIHRoZSBkZXZpY2Ug Y2FuIHRhcmdldCBhcmUgc3VmZmljaWVudGx5CmxhcmdlIHRvIG1ha2UgaXQgdW5zYWZlLgoKSSBi ZWxpZXZlIHdoYXQgeW91J3JlIHRyeWluZyB0byBhY2NvdW50IGZvciBpcyBhbiBNU0kgY29udHJv bGxlciB0aGF0Cm1pZ2h0IGFyYml0cmFyaWx5IGNvbnN1bWUgYSBmaXhlZCBwb3J0aW9uIG9mIHRo ZSBJT1ZBIHNwYWNlIGZvciBhCmRldmljZSBhbmQgZm9yIHdoaWNoIGl0J3MgYWJpbGl0eSB0byBn ZW5lcmF0ZSBpbnRlcnJ1cHRzIG1heSBvciBtYXkgbm90CmJlIGxpbWl0ZWQgaW4gc2NvcGUuCgpJ IGRvbid0IGN1cnJlbnRseSBoYXZlIGEgc3Ryb25nIHByZWZlcmVuY2Ugd2hldGhlciB3ZSBkbyBv ciBkb24ndApzdXBwb3J0IGFzc2lnbm1lbnQgb2Ygc3VjaCBkZXZpY2VzLCBidXQgaWYgd2UgZG8g YW5kIHdlIGhhdmUgbm8gYWJpbGl0eQp0byBtYW5hZ2UgdGhlIGRldmljZSdzIGFjY2VzcyB0byB0 aGUgTVNJIGNvbnRyb2xsZXIncyBETUEgYWRkcmVzcyBzcGFjZQooaWUuIG5vIElPTVUgaW4gdGhl IERNQSBwYXRoKSBhbmQgbm8gZ3VhcmFudGVlcyBvZiB0aGUgc2NvcGUgb2YgdGhlCmludGVycnVw dHMgdGhhdCB0aGUgY29udHJvbGxlciBjYW4gZ2VuZXJhdGUgdGhyb3VnaCB0aGF0IERNQSB3aW5k b3csIGl0Cm5lZWRzIHRvIGJlIG1hcmtlZCB1bnNhZmUuICBJZiB3ZSBkb24ndCBwbGFuIHRvIHN1 cHBvcnQgZGV2aWNlcyBiZWhpbmQKc3VjaCB0b3BvbG9naWVzIHRoZW4gd2UgbmVlZCB0byBwcmV2 ZW50IHRoZWlyIHVzZSB0aHJvdWdoIHZmaW8uCgo+ID4+PiA0KSBSb2JpbiBzdWdnZXN0ZWQgaW4g YSBwcml2YXRlIHRocmVhZCB0byBlbnVtZXJhdGUgdGhyb3VnaCBhIGxpc3Qgb2YKPiA+Pj4gInJl Z2lzdGVyZWQiIGRvb3JiZWxscyBhbmQgaWYgYW55IGJlbG9uZ3MgdG8gYW4gdW5zYWZlIE1TSSBj b250cm9sbGVyLAo+ID4+PiBjb25zaWRlciB0aGUgYXNzaWdubWVudCBpcyB1bnNhZmUuIFRoaXMg d291bGQgYmUgYSBmaXJzdCBzdGVwIGJlZm9yZQo+ID4+PiBkb2luZyBzb21ldGhpbmcgbW9yZSBj b21wbGV4LiBBbGV4LCB3b3VsZCB0aGF0IGJlIGFjY2VwdGFibGUgdG8geW91IGZvcgo+ID4+PiBp c3N1ZSAjMj8gICAgCj4gPj4gSSBpbXBsZW1lbnRlZCB0aGlzIHRlY2huaXF1ZSBpbiBteSBsYXN0 IHNlcmllcyB3YWl0aW5nIGZvciBtb3JlIGRpc2N1c3Npb24KPiA+PiBvbiA0LCA1LiAgCj4gPiAK PiA+IFNlZW1zIHN1ZmZpY2llbnQuICBJIGRvbid0IG1pbmQgdGFraW5nIGEgYnJvYWQgc3dpbmcg dmVyc3VzIGFsbCB0aGUKPiA+IGV4dHJhIGNvbXBsZXhpdHkgb2YgZGVmaW5pbmcgd2hpY2ggZGV2 aWNlcyBhcmUgc2FmZSB2cyB1bnNhZmUuICAKPiBPSwo+ID4gICAgCj4gPj4+IDUpIEFib3V0IGlz c3VlICMxOiBkb24ndCB3ZSBtaXNzIHRvb2xzIGluIGR0L0FDUEkgdG8gZGVzY3JpYmUgdGhlCj4g Pj4+IGxvY2F0aW9uIG9mIHRoZSBpb21tdSBvbiBBUk0/IFRoaXMgaXMgbm90IG5lZWRlZCBvbiB4 ODYgYmVjYXVzZQo+ID4+PiBpcnFfcmVtYXBwaW5nIGFuZCBJT01NVSBhcmUgYXQgdGhlIHNhbWUg cGxhY2UgYnV0IG15IHVuZGVyc3RhbmRpbmcgaXMKPiA+Pj4gdGhhdCBpdCBpcyBvbiBBUk0gd2hl cmUKPiA+Pj4gLSB0aGVyZSBpcyBubyBjb25uZWN0aW9uIGJldHdlZW4gdGhlIE1TSSBjb250cm9s bGVyIC0gd2hpY2ggaW1wbGVtZW50cwo+ID4+PiBpcnEgcmVtYXBwaW5nIC0gYW5kIHRoZSBpb21t dQo+ID4+PiAtIE1TSSBhcmUgY29udmV5ZWQgb24gdGhlIHNhbWUgYWRkcmVzcyBzcGFjZSBhcyBz dGFuZGFyZCBtZW1vcnkKPiA+Pj4gdHJhbnNhY3Rpb25zLiAgCj4gPiAKPiA+IEl0IHNlZW1zIHBy ZXR0eSBkdWJpb3VzIHRvIG1lIHRvIGhhdmUgZml4ZWQgYWRkcmVzcywgdW5wcm90ZWN0ZWQgTVNJ Cj4gPiBjb250cm9sbGVycyBzaXR0aW5nIGluIHRoZSBETUEgc3BhY2Ugb2YgYSBkZXZpY2UgYmVm b3JlIElPTU1VCj4gPiB0cmFuc2xhdGlvbi4gIAo+IHNhbWUgZm9yIG1lIDstKQo+ICAgU2VlbXMg bGlrZSB5b3Ugbm90IG9ubHkgbmVlZCB0byBtYXJrIGludGVycnVwdHMgYXMKPiA+IHVuc2FmZSwg YnV0IGV4Y2x1ZGUgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIE1TSSBjb250cm9sbGVyIGZyb20g dGhlCj4gPiBhdmFpbGFibGUgSU9WQSBzcGFjZSB0byB0aGUgdXNlci4gIAo+IEkgY3VycmVudGx5 IGRvIG5vdCBzZWUgaG93IHRvIGFjaGlldmUgdGhhdC4gVGhlIGd1ZXN0IGNhbiBwcm9ncmFtIHRo ZQo+IGFzc2lnbmVkIGRldmljZSBETUEgdGFyZ2V0IGFkZHJlc3Mgd2l0aCB0aGUgTVNJIGZyYW1l IFBBLiB0aGVyZSBpcyBubwo+IElPTU1VIHRvIHByb3RlY3QuIEhvdyBjYW4gd2UgbWFrZSBpdCBp ZiB3ZSBkb24ndCB0cmFwIG9uIERNQSBwcm9ncmFtbWluZz8KCkFsbCB3ZSBjYW4gZG8gcmVnYXJk aW5nICJleGNsdWRpbmcgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIE1TSQpjb250cm9sbGVyIiBp cyB0byBjcmVhdGUgYSB2ZmlvIGludGVyZmFjZSB0byBkZXNjcmliZSB0aGF0IGV4Y2x1c2lvbi4K V2l0aG91dCBhbiBJT01NVSB3ZSBjYW4ndCBwcmV2ZW50IGFjY2VzcyB0byBpdC4gIFRoZXJlZm9y ZSBpZiB3ZSBnbwpiYWNrIHRvIGIpIGFib3ZlLCBhIHVzZXIgc2hvdWxkIG9ubHkgYmUgYWxsb3dl ZCBhY2Nlc3MgdG8gdGhlIGRldmljZSBpZgplaXRoZXIgdGhlIHNjb3BlIGlzIHN1ZmZpY2llbnRs eSBsaW1pdGVkIHRvIGJlIGNvbnNpZGVyZWQgc2FmZSBvciB3ZQpoYXZlIGFuIG9wdC1pbiBmb3Ig dW5zYWZlIGludGVycnVwdHMuCgpTdGlsbCB5b3UgaGF2ZSB0aGUgaXNzdWUgb2YgaG93IHRoZSBk ZXZpY2UgYWN0dWFsbHkgZ2V0cyBwcm9ncmFtbWVkIHRvCmhpdCB0aGVpciBETUEgdGFyZ2V0IHRv IGdlbmVyYXRlIGludGVycnVwdHMuICBUaGlzIGlzIGEgdmlydHVhbGl6YXRpb24KcXVlc3Rpb24g dGhvdWdoLCBhIHVzZXJzcGFjZSBkcml2ZXIgbmVlZHMgdG8ga25vdyBib3RoIHRoZSBhdmFpbGFi bGUKSU9WQSBzcGFjZSBhbmQgdGhlIE1TSSB0YXJnZXQgYWRkcmVzc2VzLiAgSXQncyB1c2Vyc3Bh Y2UgZHJpdmVycyBsaWtlClFFTVUgdGhhdCBuZWVkIHRvIHByb3ZpZGUgZnVydGhlciB2aXJ0dWFs aXphdGlvbiB0byBpbnRlcmNlcHQgZ3Vlc3QKcHJvZ3JhbW1pbmcgb2YgdGhlIGRldmljZSBhbmQg ImRvIHRoZSByaWdodCB0aGluZyIuICBGb3IgdGhpcyB5b3UKZWl0aGVyIG5lZWQgdG8gcmVseSBv biBzdGFuZGFyZHMtYmFzZWQgaW50ZXJmYWNlcywgbGlrZSBQQ0kgTVNJL1ggb3IKeW91IGdldCB0 byB3cml0ZSBkZXZpY2Ugc3BlY2lmaWMgdmlydHVhbGl6YXRpb24gY29kZSB0aGF0IHRyYXBzIHRo ZQppbnRlcnJ1cHQgcHJvZ3JhbW1pbmcuICBUaGFua3MsCgpBbGV4Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlvbW11IG1haWxpbmcgbGlzdAppb21tdUBs aXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5v cmcvbWFpbG1hbi9saXN0aW5mby9pb21tdQ==