From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [early RFC] ARM PCI Passthrough design document Date: Fri, 6 Jan 2017 13:12:44 -0800 (PST) Message-ID: References: <5cf9128e-e845-2a89-f7c7-ac8616941ab9@linaro.org> <20170106162708.GG14990@toto> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cPbop-0001jQ-LW for xen-devel@lists.xenproject.org; Fri, 06 Jan 2017 21:12:59 +0000 In-Reply-To: <20170106162708.GG14990@toto> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Edgar E. Iglesias" Cc: Stefano Stabellini , Wei Chen , Steve Capper , Jiandi An , Julien Grall , alistair.francis@xilinx.com, Punit Agrawal , Shanker Donthineni , xen-devel , "manish.jaggi@caviumnetworks.com" , Campbell Sean , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org T24gRnJpLCA2IEphbiAyMDE3LCBFZGdhciBFLiBJZ2xlc2lhcyB3cm90ZToKPiBPbiBUaHUsIERl YyAyOSwgMjAxNiBhdCAwMjowNDoxNVBNICswMDAwLCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gPiBI aSBhbGwsCj4gPiAKPiA+IFRoZSBkb2N1bWVudCBiZWxvdyBpcyBhbiBlYXJseSB2ZXJzaW9uIG9m IGEgZGVzaWduCj4gPiBwcm9wb3NhbCBmb3IgUENJIFBhc3N0aHJvdWdoIGluIFhlbi4gSXQgYWlt cyB0bwo+ID4gZGVzY3JpYmUgZnJvbSBhbiBoaWdoIGxldmVsIHBlcnNwZWN0aXZlIHRoZSBpbnRl cmFjdGlvbgo+ID4gd2l0aCB0aGUgZGlmZmVyZW50IHN1YnN5c3RlbXMgYW5kIGhvdyBndWVzdCB3 aWxsIGJlIGFibGUKPiA+IHRvIGRpc2NvdmVyIGFuZCBhY2Nlc3MgUENJLgo+ID4gCj4gPiBJIGFt IGF3YXJlIHRoYXQgYSBzaW1pbGFyIGRlc2lnbiBoYXMgYmVlbiBwb3N0ZWQgcmVjZW50bHkKPiA+ IGJ5IENhdml1bSAoc2VlIFsxXSksIGhvd2V2ZXIgdGhlIGFwcHJvYWNoIHRvIGV4cG9zZSBQQ0kK PiA+IHRvIGd1ZXN0IGlzIGRpZmZlcmVudC4gV2UgaGF2ZSByZXF1ZXN0IHRvIHJ1biB1bm1vZGlm aWVkCj4gPiBiYXJlbWV0YWwgT1Mgb24gWGVuLCBhIHN1Y2ggZ3Vlc3Qgd291bGQgZGlyZWN0bHkK PiA+IGFjY2VzcyB0aGUgZGV2aWNlcyBhbmQgbm8gUFYgZHJpdmVycyB3aWxsIGJlIHVzZWQuCj4g PiAKPiA+IFRoYXQncyB3aHkgdGhpcyBkZXNpZ24gaXMgYmFzZWQgb24gZW11bGF0aW5nIGEgcm9v dCBjb250cm9sbGVyLgo+ID4gVGhpcyBhbHNvIGhhcyB0aGUgYWR2YW50YWdlIHRvIGhhdmUgdGhl IFZNIGludGVyZmFjZSBhcyBjbG9zZQo+ID4gYXMgYmFyZW1ldGFsIGFsbG93aW5nIHRoZSBndWVz dCB0byB1c2UgZmlybXdhcmUgdGFibGVzIHRvIGRpc2NvdmVyCj4gPiB0aGUgZGV2aWNlcy4KPiA+ IAo+ID4gQ3VycmVudGx5IG9uIEFSTSwgWGVuIGRvZXMgbm90IGhhdmUgYW55IGtub3dsZWRnZSBh Ym91dCBQQ0kgZGV2aWNlcy4KPiA+IFRoaXMgbWVhbnMgdGhhdCBJT01NVSBhbmQgaW50ZXJydXB0 IGNvbnRyb2xsZXIgKHN1Y2ggYXMgSVRTKQo+ID4gcmVxdWlyaW5nIHNwZWNpZmljIGNvbmZpZ3Vy YXRpb24gd2lsbCBub3Qgd29yayB3aXRoIFBDSSBldmVuIHdpdGgKPiA+IERPTTAuCj4gPiAKPiA+ IFRoZSBQQ0kgUGFzc3Rocm91Z2ggd29yayBjb3VsZCBiZSBkaXZpZGVkIGluIDIgcGhhc2VzOgo+ ID4gCSogUGhhc2UgMTogUmVnaXN0ZXIgYWxsIFBDSSBkZXZpY2VzIGluIFhlbiA9PiB3aWxsIGFs bG93Cj4gPiAJCSAgIHRvIHVzZSBJVFMgYW5kIFNNTVUgd2l0aCBQQ0kgaW4gWGVuCj4gPiAgICAg ICAgICogUGhhc2UgMjogQXNzaWduIGRldmljZXMgdG8gZ3Vlc3RzCj4gPiAKPiA+IFRoaXMgZG9j dW1lbnQgYWltcyB0byBkZXNjcmliZSB0aGUgMiBwaGFzZXMsIGJ1dCBmb3Igbm93IG9ubHkgcGhh c2UKPiA+IDEgaXMgZnVsbHkgZGVzY3JpYmVkLgo+IAo+IFRoYW5rcyBKdWxpZW4sCj4gCj4gQSBx dWVzdGlvbi4KPiBJSVVDLCBEb20wIHdpbGwgb3duIHRoZSByZWFsIGhvc3QgYnJpZGdlIGFuZCBE b21VcyB3aWxsIGFjY2VzcyBhCj4gdmlydHVhbCBlbXVsYXRlZCBvbmUuCj4gSW4gdGhlIGNhc2Ug b2YgYW4gRUNBTSBjb21wYXRpYmxlIGhvc3QgYnJpZGdlIHRoYXQgb25seSBuZWVkcyB0bwo+IGJl IGluaXRpYWxpemVkIHZpYSBhIGhvc3QgYnJpZGdlIHNwZWNpZmljIHJlZ2lzdGVyIHNlcXVlbmNl LAo+IGRvIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHkgdGhhdCB0aGUgYW1vdW50IG9mIGVtdWxhdGlv biB3b3VsZCBiZQo+IHZlcnkgc21hbGwgKGp1c3QgZW5vdWdoIHRvIGZvb2wgdGhlIGd1ZXN0IHRo YXQgdGhlIGluaXQgc2VxdWVuY2UKPiBwYXNzZWQpLiBCZXlvbmQgdGhhdCB3ZSBjb3VsZCBoYXZl IGEgZ2VuZXJpYyBFQ0FNIGVtdWxhdG9yL21hcHBpbmdzPwoKSSB0aGluayBzby4KCgo+IEhvdyB3 aWxsIHdlIGhhbmRsZSBCQVIgc2V0dXBzPwo+IFdpbGwgd2UgZmlsdGVyIGFuZCBtYWtlIHN1cmUg Z3Vlc3RzIGRvbid0IHRyeSB0byBkbyBmdW5ueSBzdHVmZj8KPiBQZXJoYXBzIFhlbiBhbHJlYWR5 IGhhcyBjb2RlIGZvciB0aGlzIChJJ20gZ3Vlc3NpbmcgaXQgZG9lcykuCgpZZXMsIHdlJ2xsIGhh dmUgdG8gZmlsdGVyIGd1ZXN0IGFjY2Vzc2VzLiBUaGVyZSBpcyBhbHJlYWR5IHNvbWUgY29kZSBp bgpYZW4gdG8gZG8gdGhhdCwgZXNwZWNpYWxseSBpbiByZWdhcmQgdG8gTVNJIGFuZCBNU0ktWCBz ZXR1cC4KCgo+ID4gCj4gPiBJIGhhdmUgc2VudCB0aGUgZGVzaWduIGRvY3VtZW50IHRvIHN0YXJ0 IHRvIGdhdGhlciBmZWVkYmFjayBvbgo+ID4gcGhhc2UgMS4KPiA+IAo+ID4gQ2hlZXJzLAo+ID4g Cj4gPiBbMV0gaHR0cHM6Ly9saXN0cy54ZW4ub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIw MTYtMTIvbXNnMDAyMjQuaHRtbCAKPiA+IAo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09Cj4g PiAlIFBDSSBwYXNzLXRocm91Z2ggc3VwcG9ydCBvbiBBUk0KPiA+ICUgSnVsaWVuIEdyYWxsIDxq dWxpZW4uZ3JhbGxAbGluYXJvLm9yZz4KPiA+ICUgRHJhZnQgQQo+ID4gCj4gPiAjIFByZWZhY2UK PiA+IAo+ID4gVGhpcyBkb2N1bWVudCBhaW1zIHRvIGRlc2NyaWJlIHRoZSBjb21wb25lbnRzIHJl cXVpcmVkIHRvIGVuYWJsZSBQQ0kKPiA+IHBhc3N0aHJvdWdoIG9uIEFSTS4KPiA+IAo+ID4gVGhp cyBpcyBhbiBlYXJseSBkcmFmdCBhbmQgc29tZSBxdWVzdGlvbnMgYXJlIHN0aWxsIHVuYW5zd2Vy ZWQsIHdoZW4gdGhpcyBpcwo+ID4gdGhlIGNhc2UgdGhlIHRleHQgd2lsbCBjb250YWluIFhYWC4K PiA+IAo+ID4gIyBJbnRyb2R1Y3Rpb24KPiA+IAo+ID4gUENJIHBhc3N0aHJvdWdoIGFsbG93cyB0 byBnaXZlIGNvbnRyb2wgb2YgcGh5c2ljYWwgUENJIGRldmljZXMgdG8gZ3Vlc3QuIFRoaXMKPiA+ IG1lYW5zIHRoYXQgdGhlIGd1ZXN0IHdpbGwgaGF2ZSBmdWxsIGFuZCBkaXJlY3QgYWNjZXNzIHRv IHRoZSBQQ0kgZGV2aWNlLgo+ID4gCj4gPiBBUk0gaXMgc3VwcG9ydGluZyBvbmUga2luZCBvZiBn dWVzdCB0aGF0IGlzIGV4cGxvaXRpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZQo+ID4gdmlydHVhbGl6 YXRpb24gc3VwcG9ydCBpbiBoYXJkd2FyZS4gVGhlIGd1ZXN0IHdpbGwgcmVseSBvbiBQViBkcml2 ZXIgb25seQo+ID4gZm9yIElPIChlLmcgYmxvY2ssIG5ldHdvcmspLCBpbnRlcnJ1cHRzIHdpbGwg Y29tZSB0aHJvdWdoIHRoZSB2aXJ0dWFsaXplZAo+ID4gaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRo aXMgbWVhbnMgdGhhdCB0aGVyZSBhcmUgbm8gYmlnIGNoYW5nZXMgcmVxdWlyZWQKPiA+IHdpdGhp biB0aGUga2VybmVsLgo+ID4gCj4gPiBCeSBjb25zZXF1ZW5jZSwgaXQgd291bGQgYmUgcG9zc2li bGUgdG8gcmVwbGFjZSBQViBkcml2ZXJzIGJ5IGFzc2lnbmluZyByZWFsCj4gPiBkZXZpY2VzIHRv IHRoZSBndWVzdCBmb3IgSS9PIGFjY2Vzcy4gWGVuIG9uIEFSTSB3b3VsZCB0aGVyZWZvcmUgYmUg YWJsZSB0bwo+ID4gcnVuIHVubW9kaWZpZWQgb3BlcmF0aW5nIHN5c3RlbS4KPiA+IAo+ID4gVG8g YWNoaWV2ZSB0aGlzIGdvYWwsIGl0IGxvb2tzIG1vcmUgc2Vuc2libGUgdG8gZ28gdG93YXJkcyBl bXVsYXRpbmcgdGhlCj4gPiBob3N0IGJyaWRnZSAod2Ugd2lsbCBnbyBpbnRvIG1vcmUgZGV0YWls cyBsYXRlcikuIEEgZ3Vlc3Qgd291bGQgYmUgYWJsZQo+ID4gdG8gdGFrZSBhZHZhbnRhZ2Ugb2Yg dGhlIGZpcm13YXJlIHRhYmxlcyBhbmQgb2J2aWF0aW5nIHRoZSBuZWVkIGZvciBhIHNwZWNpZmlj Cj4gPiBkcml2ZXIgZm9yIFhlbi4KPiA+IAo+ID4gVGh1cyBpbiB0aGlzIGRvY3VtZW50IHdlIGZv bGxvdyB0aGUgZW11bGF0ZWQgaG9zdCBicmlkZ2UgYXBwcm9hY2guCj4gPiAKPiA+ICMgUENJIHRl cm1pbm9sb2dpZXMKPiA+IAo+ID4gRWFjaCBQQ0kgZGV2aWNlIHVuZGVyIGEgaG9zdCBicmlkZ2Ug aXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBpdHMgUmVxdWVzdGVyIElECj4gPiAoQUtBIFJJRCku IEEgUmVxdWVzdGVyIElEIGlzIGEgdHJpcGxldCBvZiBCdXMgbnVtYmVyLCBEZXZpY2UgbnVtYmVy LCBhbmQKPiA+IEZ1bmN0aW9uLgo+ID4gCj4gPiBXaGVuIHRoZSBwbGF0Zm9ybSBoYXMgbXVsdGlw bGUgaG9zdCBicmlkZ2VzLCB0aGUgc29mdHdhcmUgY2FuIGFkZCBmb3VydGgKPiA+IG51bWJlciBj YWxsZWQgU2VnbWVudCB0byBkaWZmZXJlbnRpYXRlIGhvc3QgYnJpZGdlcy4gQSBQQ0kgZGV2aWNl IHdpbGwKPiA+IHRoZW4gdW5pcXVlbHkgYnkgc2VnbWVudDpidXM6ZGV2aWNlOmZ1bmN0aW9uIChB S0EgU0JERikuCj4gPiAKPiA+IFNvIGdpdmVuIGEgc3BlY2lmaWMgU0JERiwgaXQgd291bGQgYmUg cG9zc2libGUgdG8gZmluZCB0aGUgaG9zdCBicmlkZ2UgYW5kIHRoZQo+ID4gUklEIGFzc29jaWF0 ZWQgdG8gYSBQQ0kgZGV2aWNlLgo+ID4gCj4gPiAjIEludGVyYWN0aW9uIG9mIHRoZSBQQ0kgc3Vi c3lzdGVtIHdpdGggb3RoZXIgc3Vic3lzdGVtcwo+ID4gCj4gPiBJbiBvcmRlciB0byBoYXZlIGEg UENJIGRldmljZSBmdWxseSB3b3JraW5nLCBYZW4gd2lsbCBuZWVkIHRvIGNvbmZpZ3VyZQo+ID4g b3RoZXIgc3Vic3lzdGVtcyBzdWJzeXRlbXMgc3VjaCBhcyB0aGUgU01NVSBhbmQgdGhlIEludGVy cnVwdCBDb250cm9sbGVyLgo+ID4gCj4gPiBUaGUgaW50ZXJhY3Rpb24gZXhwZWN0ZWQgYmV0d2Vl biB0aGUgUENJIHN1YnN5c3RlbSBhbmQgdGhlIG90aGVyIGlzOgo+ID4gICAgICogQWRkIGEgZGV2 aWNlCj4gPiAgICAgKiBSZW1vdmUgYSBkZXZpY2UKPiA+ICAgICAqIEFzc2lnbiBhIGRldmljZSB0 byBhIGd1ZXN0Cj4gPiAgICAgKiBEZWFzc2lnbiBhIGRldmljZSBmcm9tIGEgZ3Vlc3QKPiA+IAo+ ID4gWFhYOiBEZXRhaWwgdGhlIGludGVyYWN0aW9uIHdoZW4gYXNzaWduaW5nL2RlYXNzaWduaW5n IGRldmljZQo+ID4gCj4gPiBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIHdpbGwgYnJpZWZseSBk ZXNjcmliZSB0aGUgaW50ZXJhY3Rpb24gZnJvbSBhbgo+ID4gaGlnaGVyIGxldmVsIHBlcnNwZWN0 aXZlLiBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIChjYWxsYmFjaywgc3RydWN0dXJlLi4uKQo+ID4g aXMgb3V0IG9mIHNjb3BlLgo+ID4gCj4gPiAjIyBTTU1VCj4gPiAKPiA+IFRoZSBTTU1VIHdpbGwg YmUgdXNlZCB0byBpc29sYXRlIHRoZSBQQ0kgZGV2aWNlIHdoZW4gYWNjZXNzaW5nIHRoZSBtZW1v cnkKPiA+IChmb3IgaW5zdGFuY2UgRE1BIGFuZCBNU0kgRG9vcmJlbGxzKS4gT2Z0ZW4gdGhlIFNN TVUgd2lsbCBiZSBjb25maWd1cmVkIHVzaW5nCj4gPiBhIFN0cmVhbUlEIChTSUQpIHRoYXQgY2Fu IGJlIGRlZHVjZWQgZnJvbSB0aGUgUklEIHdpdGggdGhlIGhlbHAgb2YgdGhlIGZpcm13YXJlCj4g PiB0YWJsZXMgKHNlZSBiZWxvdykuCj4gPiAKPiA+IFdoaWxzdCBpbiB0aGVvcnkgYWxsIHRoZSBt ZW1vcnkgdHJhbnNhY3Rpb24gaXNzdWVkIGJ5IGEgUENJIGRldmljZSBzaG91bGQKPiA+IGdvIHRo cm91Z2ggdGhlIFNNTVUsIG9uIGNlcnRhaW4gcGxhdGZvcm1zIHNvbWUgb2YgdGhlIG1lbW9yeSB0 cmFuc2FjdGlvbiBtYXkKPiA+IG5vdCByZWFjaCB0aGUgU01NVSBiZWNhdXNlIHRoZXkgYXJlIGlu dGVycHJldGVkIGJ5IHRoZSBob3N0IGJyaWRnZS4gRm9yCj4gPiBpbnN0YW5jZSB0aGlzIGNvdWxk IGhhcHBlbiBpZiB0aGUgTVNJIGRvb3JiZWxsIGlzIGJ1aWx0IGludG8gdGhlIFBDSSBob3N0Cj4g PiBicmlkZ2UuIFNlZSBbNl0gZm9yIG1vcmUgZGV0YWlscy4KPiA+IAo+ID4gWFhYOiBJIHRoaW5r IHRoaXMgY291bGQgYmUgc29sdmVkIGJ5IHVzaW5nIHRoZSBob3N0IG1lbW9yeSBsYXlvdXQgd2hl bgo+ID4gY3JlYXRpbmcgYSBndWVzdCB3aXRoIFBDSSBkZXZpY2VzID0+IERldGFpbCBpdC4KPiA+ IAo+ID4gIyMgSW50ZXJydXB0IGNvbnRyb2xsZXIKPiA+IAo+ID4gUENJIHN1cHBvcnRzIHRocmVl IGtpbmQgb2YgaW50ZXJydXB0czogbGVnYWN5IGludGVycnVwdCwgTVNJIGFuZCBNU0ktWC4gT24g QVJNCj4gPiBsZWdhY3kgaW50ZXJydXB0cyB3aWxsIGJlIG1hcHBlZCB0byBTUElzLiBNU0kgYW5k IE1TSS14IHdpbGwgYmUKPiA+IGVpdGhlciBtYXBwZWQgdG8gU1BJcyBvciBMUElzLgo+ID4gCj4g PiBXaGlsc3QgU1BJcyBjYW4gYmUgcHJvZ3JhbW1lZCB1c2luZyBhbiBpbnRlcnJ1cHQgbnVtYmVy LCBMUElzIGNhbiBiZQo+ID4gaWRlbnRpZmllZCB2aWEgYSBwYWlyIChEZXZpY2VJRCwgRXZlbnRJ RCkgd2hlbiBjb25maWd1cmUgdGhyb3VnaCB0aGUgSVRTLgo+ID4gCj4gPiBUaGUgRGV2aWNlSUQg aXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgZWFjaCBNU0ktY2FwYWJsZSBkZXZpY2UgdGhhdCBj YW4KPiA+IGJlIGRlZHVjZWQgZnJvbSB0aGUgUklEIHdpdGggdGhlIGhlbHAgb2YgdGhlIGZpcm13 YXJlIHRhYmxlcyAoc2VlIGJlbG93KS4KPiA+IAo+ID4gWFhYOiBGaWd1cmUgb3V0IGlmIHNvbWV0 aGluZyBpcyBuZWNlc3NhcnkgZm9yIEdJQ3YybQo+ID4gCj4gPiAjIEluZm9ybWF0aW9uIGF2YWls YWJsZSBpbiB0aGUgZmlybXdhcmUgdGFibGVzCj4gPiAKPiA+ICMjIEFDUEkKPiA+IAo+ID4gIyMj IEhvc3QgYnJpZGdlcwo+ID4gCj4gPiBUaGUgc3RhdGljIHRhYmxlIE1DRkcgKHNlZSA0LjIgaW4g WzFdKSB3aWxsIGRlc2NyaWJlIHRoZSBob3N0IGJyaWRnZXMgYXZhaWxhYmxlCj4gPiBhdCBib290 IGFuZCBzdXBwb3J0aW5nIEVDQU0uIFVuZm9ydHVuYXRlbHkgdGhlcmUgYXJlIHBsYXRmb3JtcyBv dXQgdGhlcmUKPiA+IChzZWUgWzJdKSB0aGF0IHJlLXVzZSBNQ0ZHIHRvIGRlc2NyaWJlIGhvc3Qg YnJpZGdlIHRoYXQgYXJlIG5vdCBmdWxseSBFQ0FNCj4gPiBjb21wYXRpYmxlLgo+ID4gCj4gPiBU aGlzIG1lYW5zIHRoYXQgWGVuIG5lZWRzIHRvIGFjY291bnQgZm9yIHBvc3NpYmxlIHF1aXJrcyBp biB0aGUgaG9zdCBicmlkZ2UuCj4gPiBUaGUgTGludXggY29tbXVuaXR5IGFyZSB3b3JraW5nIG9u IGEgcGF0Y2ggc2VyaWVzIGZvciBzZWUgKHNlZSBbMl0gYW5kIFszXSkKPiA+IHdoZXJlIHF1aXJr cyB3aWxsIGJlIGRldGVjdGVkIHdpdGg6Cj4gPiAgICAgKiBPRU0gSUQKPiA+ICAgICAqIE9FTSBU YWJsZSBJRAo+ID4gICAgICogT0VNIFJldmlzaW9uCj4gPiAgICAgKiBQQ0kgU2VnbWVudCAoZnJv bSBfU0VHKQo+ID4gICAgICogUENJIGJ1cyBudW1iZXIgcmFuZ2UgKGZyb20gX0NSUywgd2lsZGNh cmQgYWxsb3dlZCkKPiA+IAo+ID4gQmFzZWQgb24gd2hhdCBMaW51eCBpcyBjdXJyZW50bHkgZG9p bmcsIHRoZXJlIGFyZSB0d28ga2luZCBvZiBxdWlya3M6Cj4gPiAgICAgKiBBY2Nlc3NlcyB0byB0 aGUgY29uZmlndXJhdGlvbiBzcGFjZSBvZiBjZXJ0YWluIHNpemVzIGFyZSBub3QgYWxsb3dlZAo+ ID4gICAgICogQSBzcGVjaWZpYyBkcml2ZXIgaXMgbmVjZXNzYXJ5IGZvciBkcml2aW5nIHRoZSBo b3N0IGJyaWRnZQo+ID4gCj4gPiBUaGUgZm9ybWVyIGlzIHN0cmFpZ2h0IGZvcndhcmQgdG8gc29s dmUsIHRoZSBsYXR0ZXIgd2lsbCByZXF1aXJlIG1vcmUgdGhvdWdodC4KPiA+IEluc3RhbnRpYXRp b24gb2YgYSBzcGVjaWZpYyBkcml2ZXIgZm9yIHRoZSBob3N0IGNvbnRyb2xsZXIgY2FuIGJlIGVh c2lseSBkb25lCj4gPiBpZiBYZW4gaGFzIHRoZSBpbmZvcm1hdGlvbiB0byBkZXRlY3QgaXQuIEhv d2V2ZXIsIHRob3NlIGRyaXZlcnMgbWF5IHJlcXVpcmUKPiA+IHJlc291cmNlcyBkZXNjcmliZWQg aW4gQVNMIChzZWUgWzRdIGZvciBpbnN0YW5jZSkuCj4gPiAKPiA+IFhYWDogTmVlZCBtb3JlIGlu dmVzdGlnYXRpb24gdG8ga25vdyB3aGV0aGVyIHRoZSBtaXNzaW5nIGluZm9ybWF0aW9uIHNob3Vs ZAo+ID4gYmUgcGFzc2VkIGJ5IERPTTAgb3IgaGFyZGNvZGVkIGluIHRoZSBkcml2ZXIuCj4gPiAK PiA+ICMjIyBGaW5kaW5nIHRoZSBTdHJlYW1JRCBhbmQgRGV2aWNlSUQKPiA+IAo+ID4gVGhlIHN0 YXRpYyB0YWJsZSBJT1JUIChzZWUgWzVdKSB3aWxsIHByb3ZpZGUgaW5mb3JtYXRpb24gdGhhdCB3 aWxsIGhlbHAgdG8KPiA+IGRlZHVjZSB0aGUgU3RyZWFtSUQgYW5kIERldmljZUlEIGZyb20gYSBn aXZlbiBSSUQuCj4gPiAKPiA+ICMjIERldmljZSBUcmVlCj4gPiAKPiA+ICMjIyBIb3N0IGJyaWRn ZXMKPiA+IAo+ID4gRWFjaCBEZXZpY2UgVHJlZSBub2RlIGFzc29jaWF0ZWQgdG8gYSBob3N0IGJy aWRnZSB3aWxsIGhhdmUgYXQgbGVhc3QgdGhlCj4gPiBmb2xsb3dpbmcgcHJvcGVydGllcyAoc2Vl IGJpbmRpbmdzIGluIFs4XSk6Cj4gPiAgICAgLSBkZXZpY2VfdHlwZTogd2lsbCBhbHdheXMgYmUg InBjaSIuCj4gPiAgICAgLSBjb21wYXRpYmxlOiBhIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIGRy aXZlciB0byBpbnN0YW50aWF0ZQo+ID4gCj4gPiBUaGUgbm9kZSBtYXkgYWxzbyBjb250YWluIG9w dGlvbmFsIHByb3BlcnRpZXMgc3VjaCBhczoKPiA+ICAgICAtIGxpbnV4LHBjaS1kb21haW46IGFz c2lnbiBhIGZpeCBzZWdtZW50IG51bWJlcgo+ID4gICAgIC0gYnVzLXJhbmdlOiBpbmRpY2F0ZSB0 aGUgcmFuZ2Ugb2YgYnVzIG51bWJlcnMgc3VwcG9ydGVkCj4gPiAKPiA+IFdoZW4gdGhlIHByb3Bl cnR5IGxpbnV4LHBjaS1kb21haW4gaXMgbm90IHByZXNlbnQsIHRoZSBvcGVyYXRpbmcgc3lzdGVt IHdvdWxkCj4gPiBoYXZlIHRvIGFsbG9jYXRlIHRoZSBzZWdtZW50IG51bWJlciBmb3IgZWFjaCBo b3N0IGJyaWRnZXMuIEJlY2F1c2UgdGhlCj4gPiBhbGdvcml0aG0gdG8gYWxsb2NhdGUgdGhlIHNl Z21lbnQgaXMgbm90IHNwZWNpZmllZCwgaXQgaXMgbmVjZXNzYXJ5IGZvcgo+ID4gRE9NMCBhbmQg WGVuIHRvIGFncmVlIG9uIHRoZSBudW1iZXIgYmVmb3JlIGFueSBQQ0kgaXMgYmVlbiBhZGRlZC4K PiA+IAo+ID4gIyMjIEZpbmRpbmcgdGhlIFN0cmVhbUlEIGFuZCBEZXZpY2VJRAo+ID4gCj4gPiAj IyMgU3RyZWFtSUQKPiA+IAo+ID4gVGhlIGZpcnN0IGJpbmRpbmcgZXhpc3RpbmcgKHNlZSBbOV0p IGZvciBTTU1VIGRpZG4ndCBoYXZlIGEgd2F5IHRvIGRlc2NyaWJlIHRoZQo+ID4gcmVsYXRpb25z aGlwIGJldHdlZW4gUklEIGFuZCBTdHJlYW1JRCwgaXQgd2FzIGFzc3VtZWQgdGhhdCBTdHJlYW1J RCA9PSBSZXF1ZXN0ZXJJRC4KPiA+IFRoaXMgYmluZGlucyBoYXMgbm93IGJlZW4gZGVwcmVjYXRl ZCBpbiBmYXZvciBvZiBhIGdlbmVyaWMgYmluZGluZyAoc2VlIFsxMF0pCj4gPiB3aGljaCB3aWxs IHVzZSB0aGUgcHJvcGVydHkgImlvbW11LW1hcCIgdG8gZGVzY3JpYmUgdGhlIHJlbGF0aW9uc2hp cCBiZXR3ZWVuCj4gPiBhbiBSSUQsIHRoZSBhc3NvY2lhdGVkIElPTU1VIGFuZCB0aGUgU3RyZWFt SUQuCj4gPiAKPiA+ICMjIyBEZXZpY2VJRAo+ID4gCj4gPiBUaGUgcmVsYXRpb25zaGlwIGJldHdl ZW4gdGhlIFJJRCBhbmQgdGhlIERldmljZUlEIGNhbiBiZSBmb3VuZCB1c2luZyB0aGUKPiA+IHBy b3BlcnR5ICJtc2ktbWFwIiAoc2VlIFsxMV0pLgo+ID4gCj4gPiAjIERpc2NvdmVyaW5nIFBDSSBk ZXZpY2VzCj4gPiAKPiA+IFdoaWxzdCBQQ0kgZGV2aWNlcyBhcmUgY3VycmVudGx5IGF2YWlsYWJs ZSBpbiBET00wLCB0aGUgaHlwZXJ2aXNvciBkb2VzIG5vdAo+ID4gaGF2ZSBhbnkga25vd2xlZGdl IG9mIHRoZW0uIFRoZSBmaXJzdCBzdGVwIG9mIHN1cHBvcnRpbmcgUENJIHBhc3N0aHJvdWdoIGlz Cj4gPiB0byBtYWtlIFhlbiBhd2FyZSBvZiB0aGUgUENJIGRldmljZXMuCj4gPiAKPiA+IFhlbiB3 aWxsIHJlcXVpcmUgYWNjZXNzIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSB0byByZXRy aWV2ZSBpbmZvcm1hdGlvbgo+ID4gZm9yIHRoZSBQQ0kgZGV2aWNlcyBvciBhY2Nlc3MgaXQgb24g YmVoYWxmIG9mIHRoZSBndWVzdCB2aWEgdGhlIGVtdWxhdGVkCj4gPiBob3N0IGJyaWRnZS4KPiA+ IAo+ID4gIyMgRGlzY292ZXJpbmcgYW5kIHJlZ2lzdGVyIGhvc3RicmlkZ2UKPiA+IAo+ID4gQm90 aCBBQ1BJIGFuZCBEZXZpY2UgVHJlZSBkbyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24g dG8gZnVsbHkKPiA+IGluc3RhbnRpYXRlIGFuIGhvc3QgYnJpZGdlIGRyaXZlci4gSW4gdGhlIGNh c2Ugb2YgQUNQSSwgc29tZSBkYXRhIG1heSBjb21lCj4gPiBmcm9tIEFTTCwgd2hpbHN0IGZvciBE ZXZpY2UgVHJlZSB0aGUgc2VnbWVudCBudW1iZXIgaXMgbm90IGF2YWlsYWJsZS4KPiA+IAo+ID4g U28gWGVuIG5lZWRzIHRvIHJlbHkgb24gRE9NMCB0byBkaXNjb3ZlciB0aGUgaG9zdCBicmlkZ2Vz IGFuZCBub3RpZnkgWGVuCj4gPiB3aXRoIGFsbCB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb25zLiBU aGlzIHdpbGwgYmUgZG9uZSB2aWEgYSBuZXcgaHlwZXJjYWxsCj4gPiBQSFlTREVWT1BfcGNpX2hv c3RfYnJpZGdlX2FkZC4gVGhlIGxheW91dCBvZiB0aGUgc3RydWN0dXJlIHdpbGwgYmU6Cj4gPiAK PiA+IHN0cnVjdCBwaHlzZGV2X3BjaV9ob3N0X2JyaWRnZV9hZGQKPiA+IHsKPiA+ICAgICAvKiBJ TiAqLwo+ID4gICAgIHVpbnQxNl90IHNlZzsKPiA+ICAgICAvKiBSYW5nZSBvZiBidXMgc3VwcG9y dGVkIGJ5IHRoZSBob3N0IGJyaWRnZSAqLwo+ID4gICAgIHVpbnQ4X3QgIGJ1c19zdGFydDsKPiA+ ICAgICB1aW50OF90ICBidXNfbnI7Cj4gPiAgICAgdWludDMyX3QgcmVzMDsgIC8qIFBhZGRpbmcg Ki8KPiA+ICAgICAvKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBy ZWdpb24gKi8KPiA+ICAgICB1aW50NjRfdCBjZmdfYmFzZTsKPiA+ICAgICB1aW50NjRfdCBjZmdf c2l6ZTsKPiA+IH0KPiA+IAo+ID4gRE9NMCB3aWxsIGlzc3VlIHRoZSBoeXBlcmNhbGwgUEhZU0RF Vk9QX3BjaV9ob3N0X2JyaWRnZV9hZGQgZm9yIGVhY2ggaG9zdAo+ID4gYnJpZGdlIGF2YWlsYWJs ZSBvbiB0aGUgcGxhdGZvcm0uIFdoZW4gWGVuIGlzIHJlY2VpdmluZyB0aGUgaHlwZXJjYWxsLCB0 aGUKPiA+IHRoZSBkcml2ZXIgYXNzb2NpYXRlZCB0byB0aGUgaG9zdCBicmlkZ2Ugd2lsbCBiZSBp bnN0YW50aWF0ZWQuCj4gPiAKPiA+IFhYWDogU2hhbGwgd2UgbGltaXQgRE9NMCB0aGUgYWNjZXNz IHRvIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZyb20gdGhhdAo+ID4gbW9tZW50Pwo+ID4gCj4g PiAjIyBEaXNjb3ZlcmluZyBhbmQgcmVnaXN0ZXIgUENJCj4gPiAKPiA+IFNpbWlsYXJseSB0byB4 ODYsIFBDSSBkZXZpY2VzIHdpbGwgYmUgZGlzY292ZXJlZCBieSBET00wIGFuZCByZWdpc3Rlcgo+ ID4gdXNpbmcgdGhlIGh5cGVyY2FsbHMgUEhZU0RFVk9QX3BjaV9hZGRfZGV2aWNlIG9yIFBIWVNE RVZPUF9tYW5hZ2VfcGNpX2FkZF9leHQuCj4gPiAKPiA+IEJ5IGRlZmF1bHQgYWxsIHRoZSBQQ0kg ZGV2aWNlcyB3aWxsIGJlIGFzc2lnbmVkIHRvIERPTTAuIFNvIFhlbiB3b3VsZCBoYXZlCj4gPiB0 byBjb25maWd1cmUgdGhlIFNNTVUgYW5kIEludGVycnVwdCBDb250cm9sbGVyIHRvIGFsbG93IERP TTAgdG8gdXNlIHRoZSBQQ0kKPiA+IGRldmljZXMuIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aG9z ZSBzdWJzeXN0ZW1zIHdpbGwgcmVxdWlyZSB0aGUgU3RyZWFtSUQKPiA+IGFuZCBEZXZpY2VJRC4g Qm90aCBjYW4gYmUgZGVkdWNlZCBmcm9tIHRoZSBSSUQuCj4gPiAKPiA+IFhYWDogSG93IHRvIGhp ZGUgUENJIGRldmljZXMgZnJvbSBET00wPwo+ID4gCj4gPiAjIEdsb3NzYXJ5Cj4gPiAKPiA+IEVD QU06IEVuaGFuY2VkIENvbmZpZ3VyYXRpb24gTWVjaGFuaXNtCj4gPiBTQkRGOiBTZWdtZW50IEJ1 cyBEZXZpY2UgRnVuY3Rpb24uIFRoZSBzZWdtZW50IGlzIGEgc29mdHdhcmUgY29uY2VwdC4KPiA+ IE1TSTogTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHQKPiA+IFNQSTogU2hhcmVkIFBlcmlwaGVy YWwgSW50ZXJydXB0Cj4gPiBMUEk6IExvY2FsaXR5LXNwZWNpZmljIFBlcmlwaGVyYWwgSW50ZXJy dXB0Cj4gPiBJVFM6IEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlCj4gPiAKPiA+ICMgQmli bGlvZ3JhcGh5Cj4gPiAKPiA+IFsxXSBQQ0kgZmlybXdhcmUgc3BlY2lmaWNhdGlvbiwgcmV2IDMu Mgo+ID4gWzJdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LXBjaS9tc2c1Njcx NS5odG1sCj4gPiBbM10gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtcGNpL21z ZzU2NzIzLmh0bWwKPiA+IFs0XSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1w Y2kvbXNnNTY3MjguaHRtbAo+ID4gWzVdIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC90 b3BpYy9jb20uYXJtLmRvYy5kZW4wMDQ5Yi9ERU4wMDQ5Ql9JT19SZW1hcHBpbmdfVGFibGUucGRm Cj4gPiBbNl0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMva3ZtL21zZzE0MDExNi5odG1s Cj4gPiBbN10gaHR0cDovL3d3dy5maXJtd2FyZS5vcmcvMTI3NS9iaW5kaW5ncy9wY2kvcGNpMl8x LnBkZgo+ID4gWzhdIERvY3VtZW50cy9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaQo+ID4gWzldIERv Y3VtZW50cy9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L2FybSxzbW11LnR4dAo+ID4gWzEwXSBE b2N1bWVudC9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9wY2ktaW9tbXUudHh0Cj4gPiBbMTFdIERv Y3VtZW50cy9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9wY2ktbXNpLnR4dAo+ID4gCj4gCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK