From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manish Jaggi Subject: Re: [RFC] ARM PCI Passthrough design document Date: Tue, 30 May 2017 11:23:38 +0530 Message-ID: References: <61af41e6-a549-7930-efd4-705718d174f8@caviumnetworks.com> <928d5f49-b40b-56ee-f955-0b7122d529e2@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dFa6Y-0006Ps-7x for xen-devel@lists.xenproject.org; Tue, 30 May 2017 05:54:06 +0000 In-Reply-To: <928d5f49-b40b-56ee-f955-0b7122d529e2@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall , Stefano Stabellini Cc: edgar.iglesias@xilinx.com, okaya@qti.qualcomm.com, Wei Chen , Steve Capper , Andre Przywara , manish.jaggi@caviumnetworks.com, punit.agrawal@arm.com, vikrams@qti.qualcomm.com, "Goel, Sameer" , xen-devel , Dave P Martin , Vijaya Kumar K , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org SGkgSnVsaWVuLAoKT24gNS8yOS8yMDE3IDExOjQ0IFBNLCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4K Pgo+IE9uIDA1LzI5LzIwMTcgMDM6MzAgQU0sIE1hbmlzaCBKYWdnaSB3cm90ZToKPj4gSGkgSnVs aWVuLAo+Cj4gSGVsbG8gTWFuaXNoLAo+Cj4+IE9uIDUvMjYvMjAxNyAxMDo0NCBQTSwgSnVsaWVu IEdyYWxsIHdyb3RlOgo+Pj4gUENJIHBhc3MtdGhyb3VnaCBhbGxvd3MgdGhlIGd1ZXN0IHRvIHJl Y2VpdmUgZnVsbCBjb250cm9sIG9mIAo+Pj4gcGh5c2ljYWwgUENJCj4+PiBkZXZpY2VzLiBUaGlz IG1lYW5zIHRoZSBndWVzdCB3aWxsIGhhdmUgZnVsbCBhbmQgZGlyZWN0IGFjY2VzcyB0byAKPj4+ IHRoZSBQQ0kKPj4+IGRldmljZS4KPj4+Cj4+PiBBUk0gaXMgc3VwcG9ydGluZyBhIGtpbmQgb2Yg Z3Vlc3QgdGhhdCBleHBsb2l0cyBhcyBtdWNoIGFzIHBvc3NpYmxlCj4+PiB2aXJ0dWFsaXphdGlv biBzdXBwb3J0IGluIGhhcmR3YXJlLiBUaGUgZ3Vlc3Qgd2lsbCByZWx5IG9uIFBWIGRyaXZlciAK Pj4+IG9ubHkKPj4+IGZvciBJTyAoZS5nIGJsb2NrLCBuZXR3b3JrKSBhbmQgaW50ZXJydXB0cyB3 aWxsIGNvbWUgdGhyb3VnaCB0aGUKPj4+IHZpcnR1YWxpemVkCj4+PiBpbnRlcnJ1cHQgY29udHJv bGxlciwgdGhlcmVmb3JlIHRoZXJlIGFyZSBubyBiaWcgY2hhbmdlcyByZXF1aXJlZAo+Pj4gd2l0 aGluIHRoZQo+Pj4ga2VybmVsLgo+Pj4KPj4+IEFzIGEgY29uc2VxdWVuY2UsIGl0IHdvdWxkIGJl IHBvc3NpYmxlIHRvIHJlcGxhY2UgUFYgZHJpdmVycyBieQo+Pj4gYXNzaWduaW5nIHJlYWwKPj4+ IGRldmljZXMgdG8gdGhlIGd1ZXN0IGZvciBJL08gYWNjZXNzLiBYZW4gb24gQVJNIHdvdWxkIHRo ZXJlZm9yZSBiZQo+Pj4gYWJsZSB0bwo+Pj4gcnVuIHVubW9kaWZpZWQgb3BlcmF0aW5nIHN5c3Rl bS4KPj4+Cj4+PiBUbyBhY2hpZXZlIHRoaXMgZ29hbCwgaXQgbG9va3MgbW9yZSBzZW5zaWJsZSB0 byBnbyB0b3dhcmRzIGVtdWxhdGluZyAKPj4+IHRoZQo+Pj4gaG9zdCBicmlkZ2UgKHRoZXJlIHdp bGwgYmUgbW9yZSBkZXRhaWxzIGxhdGVyKS4KPj4gSUlVQyB0aGlzIG1lYW5zIHRoYXQgZG9tVSB3 b3VsZCBoYXZlIGFuIGVtdWxhdGVkIGhvc3QgYnJpZGdlIGFuZCBkb20wCj4+IHdpbGwgc2VlIHRo ZSBhY3R1YWwgaG9zdCBicmlkZ2U/Cj4KPiBZb3UgZG9uJ3Qgd2FudCB0aGUgaGFyZHdhcmUgZG9t YWluIGFuZCBYZW4gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIAo+IHNwYWNlIGF0IHRoZSBzYW1l IHRpbWUuIFNvIGlmIFhlbiBpcyBpbiBjaGFyZ2Ugb2YgdGhlIGhvc3QgYnJpZGdlLCAKPiB0aGVu IGFuIGVtdWxhdGVkIGhvc3QgYnJpZGdlIHNob3VsZCBiZSBleHBvc2VkIHRvIHRoZSBoYXJkd2Fy ZS4KSSBiZWxpZXZlIGluIHg4NiBjYXNlIGRvbTAgYW5kIFhlbiBkbyBhY2Nlc3MgdGhlIGNvbmZp ZyBzcGFjZS4gSW4gdGhlIApjb250ZXh0IG9mIHBjaSBkZXZpY2UgYWRkIGh5cGVyY2FsbC4KVGhh dHMgd2hlbiB0aGUgcGNpX2NvbmZpZ19YWFggZnVuY3Rpb25zIGluIHhlbiBhcmUgY2FsbGVkLgo+ Cj4gQWx0aG91Z2gsIHRoaXMgaXMgZGVwZW5kaW5nIG9uIHdobyBpcyBpbiBjaGFyZ2Ugb2YgdGhl IHRoZSBob3N0IAo+IGJyaWRnZS4gQXMgeW91IG1heSBoYXZlIG5vdGljZWQsIHRoaXMgZGVzaWdu IGRvY3VtZW50IGlzIHByb3Bvc2luZyB0d28gCj4gd2F5cyB0byBoYW5kbGUgY29uZmlndXJhdGlv biBzcGFjZSBhY2Nlc3MuIEF0IHRoZSBtb21lbnQgYW55IGdlbmVyaWMgCj4gaG9zdCBicmlkZ2Ug KHNlZSB0aGUgZGVmaW5pdGlvbiBpbiB0aGUgZGVzaWduIGRvY3VtZW50KSB3aWxsIGJlIAo+IGhh bmRsZWQgaW4gWGVuIGFuZCB0aGUgaGFyZHdhcmUgZG9tYWluIHdpbGwgaGF2ZSBhbiBlbXVsYXRl ZCBob3N0IGJyaWRnZS4KPgpTbyBpbiBjYXNlIG9mIGdlbmVyaWMgaGIsIHhlbiB3aWxsIG1hbmFn ZSB0aGUgY29uZmlnIHNwYWNlIGFuZCBwcm92aWRlIGEgCmVtdWxhdGVkIEkvZiB0byBkb20wLCBh bmQgYWNjZXNzZXMgd291bGQgYmUgdHJhcHBlZCBieSBYZW4uCkVzc2VudGlhbGx5IHRoZSBnb2Fs IGlzIHRvIHNjYW4gYWxsIHBjaSBkZXZpY2VzIGFuZCByZWdpc3RlciB0aGVtIHdpdGggClhlbiAo d2hpY2ggaW4gdHVybiB3aWxsIGNvbmZpZ3VyZSB0aGUgc21tdSkuCkZvciBhICBnZW5lcmljIGhi LCB0aGlzIGNhbiBiZSBkb25lIGVpdGhlciBpbiBkb20wL3hlbi4gVGhlIG9ubHkgZG91YnQgCmhl cmUgaXMgd2hhdCBleHRyYSBiZW5lZml0IHRoZSBlbXVsYXRlZCBoYiBnaXZlIGluIGNhc2Ugb2Yg ZG9tMC4KCj4gSWYgeW91ciBob3N0IGJyaWRnZXMgaXMgbm90IGEgZ2VuZXJpYyBvbmUsIHRoZW4g dGhlIGhhcmR3YXJlIGRvbWFpbiAKPiB3aWxsIGJlICBpbiBjaGFyZ2Ugb2YgdGhlIGhvc3QgYnJp ZGdlcywgYW55IGNvbmZpZ3VyYXRpb24gYWNjZXNzIGZyb20gCj4gWGVuIHdpbGwgYmUgZm9yd2Fy ZCB0byB0aGUgaGFyZHdhcmUgZG9tYWluLgo+Cj4gQXQgdGhlIG1vbWVudCwgYXMgcGFydCBvZiB0 aGUgZmlyc3QgaW1wbGVtZW50YXRpb24sIHdlIGFyZSBvbmx5IAo+IGxvb2tpbmcgdG8gaW1wbGVt ZW50IGEgZ2VuZXJpYyBob3N0IGJyaWRnZSBpbiBYZW4uIFdlIHdpbGwgZGVjaWRlIG9uIAo+IGNh c2UgYnkgY2FzZSBiYXNpcyBmb3IgYWxsIHRoZSBvdGhlciBob3N0IGJyaWRnZXMgd2hldGhlciB3 ZSB3YW50IHRvIAo+IGhhdmUgdGhlIGRyaXZlciBpbiBYZW4uCmFncmVlZC4KPgo+IFsuLi5dCj4K Pj4+ICMjIElPTU1VCj4+Pgo+Pj4gVGhlIElPTU1VIHdpbGwgYmUgdXNlZCB0byBpc29sYXRlIHRo ZSBQQ0kgZGV2aWNlIHdoZW4gYWNjZXNzaW5nIHRoZQo+Pj4gbWVtb3J5IChlLmcKPj4+IERNQSBh bmQgTVNJIERvb3JiZWxscykuIE9mdGVuIHRoZSBJT01NVSB3aWxsIGJlIGNvbmZpZ3VyZWQgdXNp bmcgYQo+Pj4gTWFzdGVySUQKPj4+IChha2EgU3RyZWFtSUQgZm9yIEFSTSBTTU1VKSAgdGhhdCBj YW4gYmUgZGVkdWNlZCBmcm9tIHRoZSBTQkRGIHdpdGgKPj4+IHRoZSBoZWxwCj4+PiBvZiB0aGUg ZmlybXdhcmUgdGFibGVzIChzZWUgYmVsb3cpLgo+Pj4KPj4+IFdoaWxzdCBpbiB0aGVvcnksIGFs bCB0aGUgbWVtb3J5IHRyYW5zYWN0aW9ucyBpc3N1ZWQgYnkgYSBQQ0kgZGV2aWNlCj4+PiBzaG91 bGQKPj4+IGdvIHRocm91Z2ggdGhlIElPTU1VLCBvbiBjZXJ0YWluIHBsYXRmb3JtcyBzb21lIG9m IHRoZSBtZW1vcnkKPj4+IHRyYW5zYWN0aW9uIG1heQo+Pj4gbm90IHJlYWNoIHRoZSBJT01NVSBi ZWNhdXNlIHRoZXkgYXJlIGludGVycHJldGVkIGJ5IHRoZSBob3N0IGJyaWRnZS4gCj4+PiBGb3IK Pj4+IGluc3RhbmNlLCB0aGlzIGNvdWxkIGhhcHBlbiBpZiB0aGUgTVNJIGRvb3JiZWxsIGlzIGJ1 aWx0IGludG8gdGhlIFBDSQo+Pj4gaG9zdAo+Pj4gYnJpZGdlIG9yIGZvciBQMlAgdHJhZmZpYy4g U2VlIFs2XSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4KPj4+IFhYWDogSSB0aGluayB0aGlzIGNvdWxk IGJlIHNvbHZlZCBieSB1c2luZyBkaXJlY3QgbWFwcGluZyAoZS5nIEdGTiA9PQo+Pj4gTUZOKSwK Pj4+IHRoaXMgd291bGQgbWVhbiB0aGUgZ3Vlc3QgbWVtb3J5IGxheW91dCB3b3VsZCBiZSBzaW1p bGFyIHRvIHRoZSBob3N0Cj4+PiBvbmUgd2hlbgo+Pj4gUENJIGRldmljZXMgd2lsbCBiZSBwYXNz LXRocm91Z2hlZCA9PiBEZXRhaWwgaXQuCj4+IEluIHRoZSBleGFtcGxlIGdpdmVuIGluIHRoZSBJ T1JUIHNwZWMsIGZvciBwY2kgZGV2aWNlcyBub3QgYmVoaW5kIGFuIAo+PiBTTU1VLAo+PiBob3cg d291bGQgdGhlIHdyaXRlcyBmcm9tIHRoZSBkZXZpY2UgYmUgcHJvdGVjdGVkLgo+Cj4gSSByZWFs aXplIHRoZSBYWFggcGFyYWdyYXBoIGlzIHF1aXRlIGNvbmZ1c2luZy4gSSBhbSBub3QgdHJ5aW5n IHRvIAo+IHNvbHZlIHRoZSBwcm9ibGVtIHdoZXJlIFBDSSBkZXZpY2VzIGFyZSBub3QgcHJvdGVj dGVkIGJlaGluZCBhbiBTTU1VIAo+IGJ1dCBwbGF0Zm9ybSB3aGVyZSBzb21lIHRyYW5zYWN0aW9u cyAoZS5nIFAyUCBvciBNU0kgZG9vcmJlbGwgYWNjZXNzKSAKPiBhcmUgYnktcGFzc2luZyB0aGUg U01NVS4KPgo+IFlvdSBtYXkgc3RpbGwgd2FudCB0byBhbGxvdyBQQ0kgcGFzc3Rocm91Z2ggaW4g dGhhdCBjYXNlLCBiZWNhdXNlIHlvdSAKPiBrbm93IHRoYXQgUDJQIGNhbm5vdCBiZSBkb25lIChv ciBwb3RlbnRpYWxseSBkaXNhYmxlZCkgYW5kIE1TSSAKPiBkb29yYmVsbCBhY2Nlc3MgaXMgcHJv dGVjdGVkIChmb3IgaW5zdGFuY2UgYSB3cml0ZSBpbiB0aGUgSVRTIGRvb3JiZWxsIAo+IHdpbGwg YmUgdGFnZ2VkIHdpdGggdGhlIGRldmljZSBieSB0aGUgaGFyZHdhcmUpLiBJbiBvcmRlciB0byBz dXBwb3J0IAo+IHN1Y2ggcGxhdGZvcm0geW91IG5lZWQgdG8gZGlyZWN0IG1hcCB0aGUgZG9vcmJl bCAoZS5nIEdGTiA9PSBNRk4pIGFuZCAKPiBjYXJ2ZSBvdXQgdGhlIFAyUCByZWdpb24gZnJvbSB0 aGUgZ3Vlc3QgbWVtb3J5IG1hcC4gSGVuY2UgdGhlIAo+IHN1Z2dlc3Rpb24gdG8gcmUtdXNlIHRo ZSBob3N0IG1lbW9yeSBsYXlvdXQgZm9yIHRoZSBndWVzdC4KPgo+IE5vdGUgdGhhdCBpdCBkb2Vz IG5vdCBtZWFuIHRoZSBSQU0gcmVnaW9uIHdpbGwgYmUgZGlyZWN0IG1hcHBlZC4gSXQgaXMgCj4g b25seSB0aGVyZSB0byBlYXNlIGNhcnZpbmcgb3V0IG1lbW9yeSByZWdpb24gYnktcGFzc2VkIGJ5 IHRoZSBTTU1VLgo+Cj4gWy4uLl0KPgo+Pj4gIyMgQUNQSQo+Pj4KPj4+ICMjIyBIb3N0IGJyaWRn ZXMKPj4+Cj4+PiBUaGUgc3RhdGljIHRhYmxlIE1DRkcgKHNlZSA0LjIgaW4gWzFdKSB3aWxsIGRl c2NyaWJlIHRoZSBob3N0IGJyaWRnZXMKPj4+IGF2YWlsYWJsZQo+Pj4gYXQgYm9vdCBhbmQgc3Vw cG9ydGluZyBFQ0FNLiBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgcGxhdGZvcm1zIG91dCAKPj4+ IHRoZXJlCj4+PiAoc2VlIFsyXSkgdGhhdCByZS11c2UgTUNGRyB0byBkZXNjcmliZSBob3N0IGJy aWRnZSB0aGF0IGFyZSBub3QgZnVsbHkKPj4+IEVDQU0KPj4+IGNvbXBhdGlibGUuCj4+Pgo+Pj4g VGhpcyBtZWFucyB0aGF0IFhlbiBuZWVkcyB0byBhY2NvdW50IGZvciBwb3NzaWJsZSBxdWlya3Mg aW4gdGhlIGhvc3QKPj4+IGJyaWRnZS4KPj4+IFRoZSBMaW51eCBjb21tdW5pdHkgYXJlIHdvcmtp bmcgb24gYSBwYXRjaCBzZXJpZXMgZm9yIHRoaXMsIHNlZSBbMl0KPj4+IGFuZCBbM10sCj4+PiB3 aGVyZSBxdWlya3Mgd2lsbCBiZSBkZXRlY3RlZCB3aXRoOgo+Pj4gICAgICAqIE9FTSBJRAo+Pj4g ICAgICAqIE9FTSBUYWJsZSBJRAo+Pj4gICAgICAqIE9FTSBSZXZpc2lvbgo+Pj4gICAgICAqIFBD SSBTZWdtZW50Cj4+PiAgICAgICogUENJIGJ1cyBudW1iZXIgcmFuZ2UgKHdpbGRjYXJkIGFsbG93 ZWQpCj4+Pgo+Pj4gQmFzZWQgb24gd2hhdCBMaW51eCBpcyBjdXJyZW50bHkgZG9pbmcsIHRoZXJl IGFyZSB0d28ga2luZCBvZiBxdWlya3M6Cj4+PiAgICAgICogQWNjZXNzZXMgdG8gdGhlIGNvbmZp Z3VyYXRpb24gc3BhY2Ugb2YgY2VydGFpbiBzaXplcyBhcmUgbm90Cj4+PiBhbGxvd2VkCj4+PiAg ICAgICogQSBzcGVjaWZpYyBkcml2ZXIgaXMgbmVjZXNzYXJ5IGZvciBkcml2aW5nIHRoZSBob3N0 IGJyaWRnZQo+Pj4KPj4+IFRoZSBmb3JtZXIgaXMgc3RyYWlnaHRmb3J3YXJkIHRvIHNvbHZlIGJ1 dCB0aGUgbGF0dGVyIHdpbGwgcmVxdWlyZQo+Pj4gbW9yZSB0aG91Z2h0Lgo+Pj4gSW5zdGFudGlh dGlvbiBvZiBhIHNwZWNpZmljIGRyaXZlciBmb3IgdGhlIGhvc3QgY29udHJvbGxlciBjYW4gYmUK Pj4+IGVhc2lseSBkb25lCj4+PiBpZiBYZW4gaGFzIHRoZSBpbmZvcm1hdGlvbiB0byBkZXRlY3Qg aXQuCj4+IFNvIFhlbiB3b3VsZCBwYXJzZSB0aGUgTUNGRyB0byBmaW5kIGEgaGIsIHRoZW4gbWFw IHRoZSBjb25maWcgc3BhY2UgaW4KPj4gZG9tMCBzdGFnZTIgPwo+PiBhbmQgdGhlbiBwcm92aWRl IHRoZSBzYW1lIE1DRkcgdG8gZG9tMD8KPgo+IFRoaXMgaXMgaW1wbGVtZW50YXRpb24gZGV0YWls cy4gSSBoYXZlIGJlZW4gcmVhbGx5IGNhcmVmdWwgc28gZmFyIHRvIAo+IGxlYXZlIHRoZSBpbXBs ZW1lbnRhdGlvbiBvcGVuIGFzIGl0IGRvZXMgbm90IG1hdHRlciBhdCB0aGlzIHN0YWdlIGhvdyAK PiB3ZSBhcmUgZ29pbmcgdG8gaW1wbGVtZW50IGl0IGluIFhlbi4KPgp0aGlzIG1hdHRlcnMgaW4g dGhlIGNhc2Ugb2Ygc3RhZ2UgMiBNTUlPIG1hcHBpbmdzLCBzZWUgYmVsb3cKPiBbLi4uXQo+Cj4+ PiAjIyBEaXNjb3ZlcmluZyBhbmQgcmVnaXN0ZXJpbmcgaG9zdCBicmlkZ2UKPj4+Cj4+PiBUaGUg YXBwcm9hY2ggdGFrZW4gaW4gdGhlIGRvY3VtZW50IHdpbGwgcmVxdWlyZSBjb21tdW5pY2F0aW9u IGJldHdlZW4KPj4+IFhlbiBhbmQKPj4+IHRoZSBoYXJkd2FyZSBkb21haW4uIEluIHRoaXMgY2Fz ZSwgdGhleSB3b3VsZCBuZWVkIHRvIGFncmVlIG9uIHRoZQo+Pj4gc2VnbWVudAo+Pj4gbnVtYmVy IGFzc29jaWF0ZWQgdG8gYW4gaG9zdCBicmlkZ2UuIEhvd2V2ZXIsIHRoaXMgbnVtYmVyIGlzIG5v dAo+Pj4gYXZhaWxhYmxlIGluCj4+PiB0aGUgRGV2aWNlIFRyZWUgY2FzZS4KPj4+Cj4+PiBUaGUg aGFyZHdhcmUgZG9tYWluIHdpbGwgcmVnaXN0ZXIgbmV3IGhvc3QgYnJpZGdlcyB1c2luZyB0aGUg ZXhpc3RpbmcKPj4+IGh5cGVyY2FsbAo+Pj4gUEhZU0RFVl9tbWNmZ19yZXNlcnZlZDoKPj4+Cj4+ PiAjZGVmaW5lIFhFTl9QQ0lfTU1DRkdfUkVTRVJWRUQgMQo+Pj4KPj4+IHN0cnVjdCBwaHlzZGV2 X3BjaV9tbWNmZ19yZXNlcnZlZCB7Cj4+PiAgICAgIC8qIElOICovCj4+PiAgICAgIHVpbnQ2NF90 ICAgIGFkZHJlc3M7Cj4+PiAgICAgIHVpbnQxNl90ICAgIHNlZ21lbnQ7Cj4+PiAgICAgIC8qIFJh bmdlIG9mIGJ1cyBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgYnJpZGdlICovCj4+PiAgICAgIHVpbnQ4 X3QgICAgIHN0YXJ0X2J1czsKPj4+ICAgICAgdWludDhfdCAgICAgZW5kX2J1czsKPj4+Cj4+PiAg ICAgIHVpbnQzMl90ICAgIGZsYWdzOwo+Pj4gfQo+PiBTbyB0aGlzIGh5cGVyY2FsbCBpcyBub3Qg cmVxdWlyZWQgZm9yIEFDUEk/Cj4KPiBUaGlzIGlzIG5vdCBEVCBzcGVjaWZpYyBhcyBldmVuIG9u IEFDUEkgdGhlcmUgYXJlIHBsYXRmb3JtIG5vdCBmdWxseSAKPiBFQ0FNIGNvbXBsaWFudC4gQXMg SSBzYWlkIGFib3ZlLCB3ZSB3aWxsIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgd2UgCj4gd2FudCB0 byBzdXBwb3J0IG5vbi1FQ0FNIGNvbXBsaWFudCBob3N0IGJyaWRnZXMgKGUuZyBhbGwgaG9zdCBi cmlkZ2VzIAo+IGhhdmUgYSBzcGVjaWZpYyBkcml2ZXJzKSBpbiBYZW4uIExpa2VseSB0aGlzIHdp bGwgYmUgb24gY2FzZSBieSBjYXNlIAo+IGJhc2lzLgo+Cj4gWy4uLl0KPgo+Pj4gIyMgRGlzY292 ZXJpbmcgYW5kIHJlZ2lzdGVyaW5nIFBDSSBkZXZpY2VzCj4+Pgo+Pj4gVGhlIGhhcmR3YXJlIGRv bWFpbiB3aWxsIHNjYW4gdGhlIGhvc3QgYnJpZGdlIHRvIGZpbmQgdGhlIGxpc3Qgb2YgUENJCj4+ PiBkZXZpY2VzCj4+PiBhdmFpbGFibGUgYW5kIHRoZW4gcmVwb3J0IGl0IHRvIFhlbiB1c2luZyB0 aGUgZXhpc3RpbmcgaHlwZXJjYWxsCj4+PiBQSFlTREVWX3BjaV9kZXZpY2VfYWRkOgo+Pj4KPj4+ ICNkZWZpbmUgWEVOX1BDSV9ERVZfRVhURk4gICAweDEKPj4+ICNkZWZpbmUgWEVOX1BDSV9ERVZf VklSVEZOICAweDIKPj4+ICNkZWZpbmUgWEVOX1BDSV9ERVZfUFhNICAgICAweDMKPj4+Cj4+PiBz dHJ1Y3QgcGh5c2Rldl9wY2lfZGV2aWNlX2FkZCB7Cj4+PiAgICAgIC8qIElOICovCj4+PiAgICAg IHVpbnQxNl90ICAgIHNlZzsKPj4+ICAgICAgdWludDhfdCAgICAgYnVzOwo+Pj4gICAgICB1aW50 OF90ICAgICBkZXZmbjsKPj4+ICAgICAgdWludDMyX3QgICAgZmxhZ3M7Cj4+PiAgICAgIHN0cnVj dCB7Cj4+PiAgICAgICAgICB1aW50OF90IGJ1czsKPj4+ICAgICAgICAgIHVpbnQ4X3QgZGV2Zm47 Cj4+PiAgICAgIH0gcGh5c2ZuOwo+Pj4gICAgICAvKgo+Pj4gICAgICAgKiBPcHRpb25hbCBwYXJh bWV0ZXJzIGFycmF5Lgo+Pj4gICAgICAgKiBGaXJzdCBlbGVtZW50IChbMF0pIGlzIFBYTSBkb21h aW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UgCj4+PiAoaWYKPj4+ICAgICAgICogWEVOX1BD SV9ERVZfUFhNIGlzIHNldCkKPj4+ICAgICAgICovCj4+PiAgICAgIHVpbnQzMl90IG9wdGFyclsw XTsKPj4+IH0KPj4gRm9yIG1hcHBpbmcgdGhlIE1NSU8gc3BhY2Ugb2YgdGhlIGRldmljZSBpbiBT dGFnZTIsIHdlIG5lZWQgdG8gYWRkCj4+IHN1cHBvcnQgaW4gWGVuIC8gdmlhIGEgbWFwIGh5cGVy Y2FsbCBpbiBsaW51eC9kcml2ZXJzL3hlbi9wY2kuYwo+Cj4gTWFwcGluZyBNTUlPIHNwYWNlIGlu IHN0YWdlLTIgaXMgbm90IFBDSSBzcGVjaWZpYyBhbmQgYWxyZWFkeSAKPiBhZGRyZXNzZWQgaW4g WGVuIDQuOSAoc2VlIGNvbW1pdCA4MGY5YzMxICJ4ZW4vYXJtOiBhY3BpOiBNYXAgTU1JTyBvbiAK PiBmYXVsdCBpbiBzdGFnZS0yIHBhZ2UgdGFibGUgZm9yIHRoZSBoYXJkd2FyZSBkb21haW4iKS4g U28gSSBkb24ndCAKPiB1bmRlcnN0YW5kIHdoeSB3ZSBzaG91bGQgY2FyZSBhYm91dCB0aGF0IGhl cmUuLi4KPgpUaGlzIGFwcHJvYWNoIGlzIG9rLgpCdXQgd2UgY291bGQgaGF2ZSBtb3JlIGdyYW51 bGFyIGFwcHJvYWNoIHRoYW4gdHJhcHBpbmcgSU1ITy4KRm9yIEFDUEkKICAgIC14ZW4gcGFyc2Vz IE1DRkcgYW5kIGNhbiBtYXAgcGNpIGhiIChlbXVsYXRlZCAvIG9yaWdpbmFsKSBpbiBzdGFnZTIg CmZvciBkb20wCiAgICAtZGV2aWNlIE1NSU8gY2FuIGJlIG1hcHBlZCBpbiBzdGFnZTIgYWxvbmdz aWRlIHBjaV9kZXZpY2VfYWRkIGNhbGwgLgpXaGF0IGRvIHlvdSB0aGluaz8KCj4gUmVnYXJkcywK PgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=