From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Edgar E. Iglesias" Subject: Re: [early RFC] ARM PCI Passthrough design document Date: Thu, 2 Feb 2017 16:33:57 +0100 Message-ID: <20170202153357.GA14990@toto> References: <5cf9128e-e845-2a89-f7c7-ac8616941ab9@linaro.org> <56a2cd48-f7cf-25ca-2bfe-cabf02d34df3@linaro.org> <8ca91073-09e7-57ca-9063-b47e0aced39d@linaro.org> <20170131165310.GJ14990@toto> <8ed41863-e7de-e0da-b1d3-e41748245cf1@linaro.org> <20170131190643.GK14990@toto> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 1cZJOm-0002OF-Ts for xen-devel@lists.xenproject.org; Thu, 02 Feb 2017 15:34:13 +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: Julien Grall Cc: Stefano Stabellini , Wei Chen , Campbell Sean , Andrew Cooper , Jiandi An , Punit Agrawal , alistair.francis@xilinx.com, xen-devel , Roger Pau =?iso-8859-1?Q?Monn=E9?= , "manish.jaggi@caviumnetworks.com" , Shanker Donthineni , Steve Capper List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBGZWIgMDEsIDIwMTcgYXQgMDc6MDQ6NDNQTSArMDAwMCwgSnVsaWVuIEdyYWxsIHdy b3RlOgo+IEhpIEVkZ2FyLAo+IAo+IE9uIDMxLzAxLzIwMTcgMTk6MDYsIEVkZ2FyIEUuIElnbGVz aWFzIHdyb3RlOgo+ID5PbiBUdWUsIEphbiAzMSwgMjAxNyBhdCAwNTowOTo1M1BNICswMDAwLCBK dWxpZW4gR3JhbGwgd3JvdGU6Cj4gPj5PbiAzMS8wMS8xNyAxNjo1MywgRWRnYXIgRS4gSWdsZXNp YXMgd3JvdGU6Cj4gPj4+T24gV2VkLCBKYW4gMjUsIDIwMTcgYXQgMDY6NTM6MjBQTSArMDAwMCwg SnVsaWVuIEdyYWxsIHdyb3RlOgo+ID4+Pj5PbiAyNC8wMS8xNyAyMDowNywgU3RlZmFubyBTdGFi ZWxsaW5pIHdyb3RlOgo+ID4+Pj4+T24gVHVlLCAyNCBKYW4gMjAxNywgSnVsaWVuIEdyYWxsIHdy b3RlOgo+ID4+Pj5Gb3IgZ2VuZXJpYyBob3N0IGJyaWRnZSwgdGhlIGluaXRpYWxpemF0aW9uIGlz IGluZXhpc3RlbnQuIEhvd2V2ZXIgc29tZSBob3N0Cj4gPj4+PmJyaWRnZSAoZS5nIHhnZW5lLCB4 aWxpbngpIG1heSByZXF1aXJlIHNvbWUgc3BlY2lmaWMgc2V0dXAgYW5kIGFsc28KPiA+Pj4+Y29u ZmlndXJpbmcgY2xvY2tzLiBHaXZlbiB0aGF0IFhlbiBvbmx5IHJlcXVpcmVzIHRvIGFjY2VzcyB0 aGUgY29uZmlndXJhdGlvbgo+ID4+Pj5zcGFjZSwgSSB3YXMgdGhpbmtpbmcgdG8gbGV0IERPTTAg aW5pdGlhbGl6YXRpb24gdGhlIGhvc3QgYnJpZGdlLiBUaGlzIHdvdWxkCj4gPj4+PmF2b2lkIHRv IGltcG9ydCBhIGxvdCBvZiBjb2RlIGluIFhlbiwgaG93ZXZlciB0aGlzIG1lYW5zIHRoYXQgd2Ug bmVlZCB0bwo+ID4+Pj5rbm93IHdoZW4gdGhlIGhvc3QgYnJpZGdlIGhhcyBiZWVuIGluaXRpYWxp emVkIGJlZm9yZSBhY2Nlc3NpbmcgdGhlCj4gPj4+PmNvbmZpZ3VyYXRpb24gc3BhY2UuCj4gPj4+ Cj4gPj4+Cj4gPj4+WWVzLCB0aGF0J3MgY29ycmVjdC4KPiA+Pj5UaGVyZSdzIGEgc2VxdWVuY2Ug b24gdGhlIFp5bnFNUCB0aGF0IGludm9sdmVzIGFzc2lnaW5nIEdpZ2FiaXQgVHJhbnNjZWl2ZXJz Cj4gPj4+dG8gUENJIChHVHMgYXJlIHNoYXJlZCBhbW9uZyBQQ0llLCBVU0IsIFNBVEEgYW5kIHRo ZSBEaXNwbGF5IFBvcnQpLAo+ID4+PmVuYWJsaW5nIGNsb2NrcyBhbmQgY29uZmlndXJpbmcgYSBm ZXcgcmVnaXN0ZXJzIHRvIGVuYWJsZSBFQ0FNIGFuZCBNU0kuCj4gPj4+Cj4gPj4+SSdtIG5vdCBz dXJlIGlmIHRoaXMgY291bGQgYmUgZG9uZSBwcmlvciB0byBzdGFydGluZyBYZW4uIFBlcmhhcHMu Cj4gPj4+SWYgc28sIGJvb3Rsb2FkZXJzIHdvdWxkIGhhdmUgdG8ga25vdyBhIGhlYWQgb2YgdGlt ZSB3aGF0IGRldmljZXMKPiA+Pj50aGUgR1RzIGFyZSBzdXBwb3NlZCB0byBiZSBjb25maWd1cmVk IGZvci4KPiA+Pgo+ID4+SSd2ZSBnb3QgZnVydGhlciBxdWVzdGlvbnMgcmVnYXJkaW5nIHRoZSBH aWdhYml0IFRyYW5zY2VpdmVycy4gWW91IG1lbnRpb24KPiA+PnRoZXkgYXJlIHNoYXJlZCwgZG8g eW91IG1lYW4gdGhhdCBtdWx0aXBsZSBkZXZpY2VzIGNhbiB1c2UgYSBHVCBhdCB0aGUgc2FtZQo+ ID4+dGltZT8gT3IgdGhlIHNvZnR3YXJlIGlzIGRlY2lkaW5nIGF0IHN0YXJ0dXAgd2hpY2ggZGV2 aWNlIHdpbGwgdXNlIGEgZ2l2ZW4KPiA+PkdUPyBJZiBzbywgaG93IGRvZXMgdGhlIHNvZnR3YXJl IG1ha2UgdGhpcyBkZWNpc2lvbj8KPiA+Cj4gPlNvZnR3YXJlIHdpbGwgZGVjaWRlIGF0IHN0YXJ0 dXAuIEFGQUlLLCB0aGUgYWxsb2NhdGlvbiBpcyBub3JtYWxseSBkb25lCj4gPm9uY2UgYnV0IEkg Z3Vlc3MgdGhhdCBpbiB0aGVvcnkgeW91IGNvdWxkIGRlc2lnbiBib2FyZHMgdGhhdCBjb3VsZCBz d2l0Y2gKPiA+YXQgcnVudGltZS4gSSdtIG5vdCBzdXJlIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQg dGhhdCB1c2UtY2FzZSB0aG91Z2guCj4gPgo+ID5UaGUgZGV0YWlscyBjYW4gYmUgZm91bmQgaGVy ZToKPiA+aHR0cHM6Ly93d3cueGlsaW54LmNvbS9zdXBwb3J0L2RvY3VtZW50YXRpb24vdXNlcl9n dWlkZXMvdWcxMDg1LXp5bnEtdWx0cmFzY2FsZS10cm0ucGRmCj4gPgo+ID5JIHN1Z2dlc3QgbG9v a2luZyBhdCBwYWdlcyA2NzIgYW5kIDczMy4KPiAKPiBUaGFuayB5b3UgZm9yIHRoZSBkb2N1bWVu dGF0aW9uLiBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kIGlmIHdlIGNvdWxkIG1vdmUKPiBpbml0 aWFsaXphdGlvbiBpbiBYZW4gYXMgc3VnZ2VzdGVkIGJ5IFN0ZWZhbm8uIEkgbG9va2VkIGF0IHRo ZSBkcml2ZXIgaW4KPiBMaW51eCBhbmQgdGhlIGNvZGUgbG9va3Mgc2ltcGxlIG5vdCBtYW55IGRl cGVuZGVuY2llcy4gSG93ZXZlciwgSSB3YXMgbm90Cj4gYWJsZSB0byBmaW5kIHdoZXJlIHRoZSBH aWdhYml0IFRyYW5zY2VpdmVycyBhcmUgY29uZmlndXJlZC4gRG8geW91IGhhdmUgYW55Cj4gbGlu ayB0byB0aGUgY29kZSBmb3IgdGhhdD8KCkhpIEp1bGllbiwKCkkgc3VzcGVjdCB0aGF0IHRoaXMg c2V0dXAgaGFzIHByZXZpb3VzbHkgYmVlbiBkb25lIGJ5IHRoZSBpbml0aWFsIGJvb3Rsb2FkZXIK YXV0by1nZW5lcmF0ZWQgZnJvbSBkZXNpZ24gY29uZmlndXJhdGlvbiB0b29scy4KCk5vdywgdGhp cyBpcyBtb3ZpbmcgaW50byBMaW51eC4KVGhlcmUncyBhIHNwZWNpZmljIGRyaXZlciB0aGF0IGRv ZXMgdGhhdCBidXQgQUZBSUNTLCBpdCBoYXMgbm90IGJlZW4gdXBzdHJlYW1lZCB5ZXQuCllvdSBj YW4gc2VlIGl0IGhlcmU6Cmh0dHBzOi8vZ2l0aHViLmNvbS9YaWxpbngvbGludXgteGxueC9ibG9i L21hc3Rlci9kcml2ZXJzL3BoeS9waHktenlucW1wLmMKCkRUUyBub2RlcyB0aGF0IG5lZWQgYSBQ SFkgY2FuIHRoZW4ganVzdCByZWZlciB0byBpdCwgaGVyZSdzIGFuIGV4YW1wbGUgZnJvbSBTQVRB Ogomc2F0YSB7CiAgICAgICAgcGh5LW5hbWVzID0gInNhdGEtcGh5IjsKICAgICAgICBwaHlzID0g PCZsYW5lMyBQSFlfVFlQRV9TQVRBIDEgMyAxNTAwMDAwMDA+Owp9OwoKSSdsbCBzZWUgaWYgSSBj YW4gZmluZCB3b3JraW5nIGV4YW1wbGVzIGZvciBQQ0llIG9uIHRoZSBaQ1UxMDIuIFRoZW4gSSds bCBzaGFyZQpEVFMsIEtlcm5lbCBldGMuCgpJZiB5b3UgYXJlIGxvb2tpbmcgZm9yIGEgcGxhdGZv cm0gdG8gZ2V0IHN0YXJ0ZWQsIGFuIG9wdGlvbiBjb3VsZCBiZSBpZiBJIGdldCB5b3UgYSBidWls ZCBvZgpvdXIgUUVNVSB0aGF0IGluY2x1ZGVzIG1vZGVscyBmb3IgdGhlIFBDSWUgY29udHJvbGxl ciwgTVNJIGFuZCBTTU1VIGNvbm5lY3Rpb25zLgpUaGVzZSBtb2RlbHMgYXJlIGZyaWVuZGx5IHdy dC4gUEhZIGNvbmZpZ3MgYW5kIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgaXQgd2lsbAphY2Nl cHQgcHJldHR5IG11Y2ggYW55IHNlcXVlbmNlIGFuZCBzdGlsbCB3b3JrLiBUaGlzIHdvdWxkIGFs bG93IHlvdSB0byBmb2N1cyBvbgphcmNoaXRlY3R1cmFsIGlzc3VlcyByYXRoZXIgdGhhbiBleGFj dCBkZXRhaWxzIG9mIGluaXQgc2VxdWVuY2VzICh3aGljaCB3ZSBjYW4KZGVhbCB3aXRoIGxhdGVy KS4KCgoKPiAKPiBUaGlzIHdvdWxkIGFsc28gbWVhbiB0aGF0IHRoZSBNU0kgaW50ZXJydXB0IGNv bnRyb2xsZXIgd2lsbCBiZSBtb3ZlZCBpbiBYZW4uCj4gV2hpY2ggSSB0aGluayBpcyBhIG1vcmUg c2Vuc2libGUgZGVzaWduIChzZWUgbW9yZSBiZWxvdykuCj4gCj4gPj4KPiA+Pj4+CS0gRm9yIGFs bCBvdGhlciBob3N0IGJyaWRnZXMgPT4gSSBkb24ndCBrbm93IGlmIHRoZXJlIGFyZSBob3N0IGJy aWRnZXMKPiA+Pj4+ZmFsbGluZyB1bmRlciB0aGlzIGNhdGVnb3J5LiBJIGFsc28gZG9uJ3QgaGF2 ZSBhbnkgaWRlYSBob3cgdG8gaGFuZGxlIHRoaXMuCj4gPj4+Pgo+ID4+Pj4+Cj4gPj4+Pj5PdGhl cndpc2UsIGlmIERvbTAgaXMgdGhlIG9ubHkgb25lIHRvIGRyaXZlIHRoZSBwaHlzaWNhbCBob3N0 IGJyaWRnZSwKPiA+Pj4+PmFuZCBYZW4gaXMgdGhlIG9uZSB0byBwcm92aWRlIHRoZSBlbXVsYXRl ZCBob3N0IGJyaWRnZSwgaG93IGFyZSBEb21VIFBDSQo+ID4+Pj4+Y29uZmlnIHJlYWRzIGFuZCB3 cml0ZXMgc3VwcG9zZWQgdG8gd29yayBpbiBkZXRhaWxzPwo+ID4+Pj4KPiA+Pj4+SSB0aGluayBJ IGhhdmUgYW5zd2VyZWQgdG8gdGhpcyBxdWVzdGlvbiB3aXRoIG15IGV4cGxhbmF0aW9uIGFib3Zl LiBMZXQgbWUKPiA+Pj4+a25vdyBpZiBpdCBpcyBub3QgdGhlIGNhc2UuCj4gPj4+Pgo+ID4+Pj4+ SG93IGlzIE1TSSBjb25maWd1cmF0aW9uIHN1cHBvc2VkIHRvIHdvcms/Cj4gPj4+Pgo+ID4+Pj5G b3IgR0lDdjMgSVRTLCB0aGUgTVNJIHdpbGwgYmUgY29uZmlndXJlZCB3aXRoIHRoZSBldmVudElE IChpdCBpcyB1bmlxCj4gPj4+PnBlci1kZXZpY2UpIGFuZCB0aGUgYWRkcmVzcyBvZiB0aGUgZG9v cmJlbGwuIFRoZSBsaW5rYWdlIGJldHdlZW4gdGhlIExQSSBhbmQKPiA+Pj4+Ik1TSSIgd2lsbCBi ZSBkb25lIHRocm91Z2ggdGhlIElUUy4KPiA+Pj4+Cj4gPj4+PkZvciBHSUN2Mm0sIHRoZSBNU0kg d2lsbCBiZSBjb25maWd1cmVkIHdpdGggYW4gU1BJcyAob3Igb2Zmc2V0IG9uIHNvbWUKPiA+Pj4+ R0lDdjJtKSBhbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIGRvb3JiZWxsLiBOb3RlIHRoYXQgZm9yIERP TTAgU1BJcyBhcmUgbWFwcGVkCj4gPj4+PjE6MS4KPiA+Pj4+Cj4gPj4+PlNvIGluIGJvdGggY2Fz ZSwgSSBkb24ndCB0aGluayBpdCBpcyBuZWNlc3NhcnkgdG8gdHJhcCBNU0kgY29uZmlndXJhdGlv biBmb3IKPiA+Pj4+RE9NMC4gVGhpcyBtYXkgbm90IGJlIHRydWUgaWYgd2Ugd2FudCB0byBoYW5k bGUgb3RoZXIgTVNJIGNvbnRyb2xsZXIuCj4gPj4+Pgo+ID4+Pj5JIGhhdmUgaW4gbWluZCB0aGUg eGlsaW54IE1TSSBjb250cm9sbGVyIChlbWJlZGRlZCBpbiB0aGUgaG9zdCBicmlkZ2U/IFs0XSkK PiA+Pj4+YW5kIHhnZW5lIE1TSSBjb250cm9sbGVyIChbNV0pLiBCdXQgSSBoYXZlIG5vIGlkZWEg aG93IHRoZXkgd29yayBhbmQgaWYgd2UKPiA+Pj4+bmVlZCB0byBzdXBwb3J0IHRoZW0uIE1heWJl IEVkZ2FyIGNvdWxkIHNoYXJlIGRldGFpbHMgb24gdGhlIFhpbGlueCBvbmU/Cj4gPj4+Cj4gPj4+ Cj4gPj4+VGhlIFhpbGlueCBjb250cm9sbGVyIGhhcyAyIGRlZGljYXRlZCBTUElzIGFuZCBwYWdl cyBmb3IgTVNJcy4gQUZBSUssIHRoZXJlJ3Mgbm8KPiA+Pj53YXkgdG8gcHJvdGVjdCB0aGUgTVNJ IGRvb3JiZWxscyBmcm9tIG1hbC1jb25maWd1cmVkIGVuZC1wb2ludHMgcmFpc2luZyBtYWxpY2lv dXMgRXZlbnRJRHMuCj4gPj4+U28gcGVyaGFwcyB0cmFwcGVkIGNvbmZpZyBhY2Nlc3NlcyBmcm9t IGRvbVVzIGNhbiBoZWxwIGJ5IGFkZGluZyB0aGlzIHByb3RlY3Rpb24KPiA+Pj5hcyBkcml2ZXJz IGNvbmZpZ3VyZSB0aGUgZGV2aWNlLgo+ID4+Pgo+ID4+Pk9uIExpbnV4LCBPbmNlIE1TSSdzIGhp dCwgdGhlIGtlcm5lbCB0YWtlcyB0aGUgU1BJIGludGVycnVwdHMsIHJlYWRzCj4gPj4+b3V0IHRo ZSBFdmVudElEIGZyb20gYSBGSUZPIGluIHRoZSBjb250cm9sbGVyIGFuZCBpbmplY3RzIGEgbmV3 IElSUSBpbnRvCj4gPj4+dGhlIGtlcm5lbC4KPiA+Pgo+ID4+SXQgbWlnaHQgYmUgZWFybHkgdG8g YXNrLCBidXQgaG93IGRvIHlvdSBleHBlY3QgIE1TSSB0byB3b3JrIHdpdGggRE9NVSBvbgo+ID4+ eW91ciBoYXJkd2FyZT8gRG9lcyB5b3VyIE1TSSBjb250cm9sbGVyIHN1cHBvcnRzIHZpcnR1YWxp emF0aW9uPyBPciBhcmUgeW91Cj4gPj5sb29raW5nIGZvciBhIGRpZmZlcmVudCB3YXkgdG8gaW5q ZWN0IE1TST8KPiA+Cj4gPk1TSSBzdXBwb3J0IGluIEhXIGlzIHF1aXRlIGxpbWl0ZWQgdG8gc3Vw cG9ydCBkb21VIGFuZCB3aWxsIHJlcXVpcmUgU1cgaGFja3MgOi0oCj4gPgo+ID5Bbnl3YXksIHNv bWV0aGluZyBhbG9uZyB0aGUgbGluZXMgb2YgdGhpcyBtaWdodCB3b3JrOgo+ID4KPiA+KiBUcmFw IGRvbVUgQ1BVIHdyaXRlcyB0byBNU0kgZGVzY3JpcHRvcnMgaW4gY29uZmlnIHNwYWNlLgo+ID4g IEZvcmNlIHJlYWwgTVNJIGRlc2NyaXB0b3JzIHRvIHRoZSBhZGRyZXNzIG9mIHRoZSBkb29yIGJl bGwgYXJlYS4KPiA+ICBGb3JjZSByZWFsIE1TSSBkZXNjcmlwdG9ycyB0byB1c2UgYSBzcGVjaWZp YyBkZXZpY2UgdW5pcXVlIEV2ZW50IElEIGFsbG9jYXRlZCBieSBYZW4uCj4gPiAgUmVtZW1iZXIg d2hhdCBFdmVudElEIGRvbVUgcmVxdWVzdGVkIHBlciBkZXZpY2UgYW5kIGRlc2NyaXB0b3IuCj4g Pgo+ID4qIFhlbiBvciBEb20wIHRha2UgdGhlIHJlYWwgU1BJIGdlbmVyYXRlZCB3aGVuIGRldmlj ZSB3cml0ZXMgaW50byB0aGUgZG9vcmJlbGwgYXJlYS4KPiA+ICBBdCB0aGlzIHBvaW50LCB3ZSBj YW4gcmVhZCBvdXQgdGhlIEV2ZW50SUQgZnJvbSB0aGUgTVNJIEZJRk8gYW5kIG1hcCBpdCB0byB0 aGUgb25lIHJlcXVlc3RlZCBmcm9tIGRvbVUuCj4gPiAgWGVuIG9yIERvbTAgaW5qZWN0IHRoZSBl eHBlY3RlZCBFdmVudElEIGludG8gZG9tVQo+ID4KPiA+RG8geW91IGhhdmUgYW55IGdvb2QgaWRl YXM/IDotKQo+IAo+IEZyb20gbXkgdW5kZXJzdGFuZGluZyB5b3VyIE1TSSBjb250cm9sbGVyIGlz IGVtYmVkZGVkIGluIHRoZSBob3N0YnJpZGdlLAo+IHJpZ2h0PyBJZiBzbywgdGhlIE1TSXMgd291 bGQgbmVlZCB0byBiZSBoYW5kbGVkIHdoZXJlIHRoZSBob3N0IGJyaWRnZSB3aWxsCj4gYmUgaW5p dGlhbGl6ZWQgKGUuZyBlaXRoZXIgWGVuIG9yIERPTTApLgoKWWVzLCBpdCBpcy4KCj4gCj4gRnJv bSBhIGRlc2lnbiBwb2ludCBvZiB2aWV3LCBpdCB3b3VsZCBtYWtlIG1vcmUgc2Vuc2UgdG8gaGF2 ZSB0aGUgTVNJCj4gY29udHJvbGxlciBkcml2ZXIgaW4gWGVuIGFzIHRoZSBob3N0YnJpZGdlIGVt dWxhdGlvbiBmb3IgZ3Vlc3Qgd2lsbCBhbHNvCj4gbGl2ZSB0aGVyZS4KPiAKPiBTbyBpZiB3ZSBy ZWNlaXZlIE1TSSBpbiBYZW4sIHdlIG5lZWQgdG8gZmlndXJlIG91dCBhIHdheSBmb3IgRE9NMCBh bmQgZ3Vlc3QKPiB0byByZWNlaXZlIE1TSS4gVGhlIHNhbWUgd2F5IHdvdWxkIGJlIHRoZSBiZXN0 LCBhbmQgSSBndWVzcyBub24tUFYgaWYKPiBwb3NzaWJsZS4gSSBrbm93IHlvdSBhcmUgbG9va2lu ZyB0byBib290IHVubW9kaWZpZWQgT1MgaW4gYSBWTS4gVGhpcyB3b3VsZAo+IG1lYW4gd2UgbmVl ZCB0byBlbXVsYXRlIHRoZSBNU0kgY29udHJvbGxlciBhbmQgcG90ZW50aWFsbHkgeGlsaW54IFBD SQo+IGNvbnRyb2xsZXIuIEhvdyBtdWNoIGFyZSB5b3Ugd2lsbGluZyB0byBtb2RpZnkgdGhlIE9T PwoKVG9kYXksIHdlIGhhdmUgbm90IHlldCBpbXBsZW1lbnRlZCBQQ0llIGRyaXZlcnMgZm9yIG91 ciBiYXJlbWV0YWwgU0RLLiBTbwp0aGluZ3MgYXJlIHZlcnkgb3BlbiBhbmQgd2UgY291bGQgZGVz aWduIHdpdGggcHJldHR5IG11Y2ggYW55dGhpbmcgaW4gbWluZC4KClllcywgd2UgY291bGQgcGVy aGFwcyBpbmNsdWRlIGEgdmVyeSBzbWFsbCBtb2RlbCB3aXRoIG1vc3QgcmVnaXN0ZXJzIGR1bW1p ZWQuCkltcGxlbWVudGluZyB0aGUgTVNJIHJlYWQgRklGTyB3b3VsZCBhbGxvdyB1cyB0bzoKCjEu IEluamVjdCB0aGUgTVNJIGRvb3JiZWxsIFNQSSBpbnRvIGd1ZXN0cy4gVGhlIGd1ZXN0IHdpbGwg dGhlbiBzZWUgdGhlIHNhbWUKICAgSVJRIGFzIG9uIHJlYWwgSFcuCgoyLiBHdWVzdCByZWFkcyBo b3N0LWNvbnRyb2xsZXIgcmVnaXN0ZXJzIChNU0kgRklGTykgdG8gZ2V0IHRoZSBzaWduYWxlZCBN U0kuCgoKCj4gUmVnYXJkaW5nIHRoZSBNU0kgZG9vcmJlbGwsIEkgaGF2ZSBzZWVuIGl0IGlzIGNv bmZpZ3VyZWQgYnkgdGhlIHNvZnR3YXJlCj4gdXNpbmcgYSBwaHlzaWNhbCBhZGRyZXNzIG9mIGEg cGFnZSBhbGxvY2F0ZWQgaW4gdGhlIFJBTS4gV2hlbiB0aGUgUENJCj4gZGV2aWNlcyBpcyB3cml0 aW5nIGludG8gdGhlIGRvb3JiZWxsIGRvZXMgdGhlIGFjY2VzcyBnbyB0aHJvdWdoIHRoZSBTTU1V PwoKVGhhdCdzIGEgZ29vZCBxdWVzdGlvbi4gT24gb3VyIFFFTVUgbW9kZWwgaXQgZG9lcywgYnV0 IEknbGwgaGF2ZSB0byBkaWcgYSBsaXR0bGUgdG8gc2VlIGlmIHRoYXQgaXMgdGhlIGNhc2Ugb24g cmVhbCBIVyBhc3dlbGwuCgo+IFJlZ2FyZGxlc3MgdGhlIGFuc3dlciwgSSB0aGluayB3ZSB3b3Vs ZCBuZWVkIHRvIG1hcCB0aGUgTVNJIGRvb3JiZWxsIHBhZ2UgaW4KPiB0aGUgZ3Vlc3QuIE1lYW5p bmcgdGhhdCBldmVuIGlmIHdlIHRyYXAgTVNJIGNvbmZpZ3VyYXRpb24gYWNjZXNzLCBhIGd1ZXNz Cj4gY291bGQgRE1BIGluIHRoZSBwYWdlLiBTbyBpZiBJIGFtIG5vdCBtaXN0YWtlbiwgTVNJIHdv dWxkIGJlIGluc2VjdXJlIGluCj4gdGhpcyBjYXNlIDovLgo+IAo+IE9yIG1heWJlIHdlIGNvdWxk IGF2b2lkIG1hcHBpbmcgdGhlIGRvb3JiZWxsIGluIHRoZSBndWVzdCBhbmQgbGV0IFhlbgo+IHJl Y2VpdmUgYW4gU01NVSBhYm9ydC4gV2hlbiByZWNlaXZpbmcgdGhlIFNNTVUgYWJvcnQsIFhlbiBj b3VsZCBzYW5pdGl6ZSB0aGUKPiB2YWx1ZSBhbmQgd3JpdGUgaW50byB0aGUgcmVhbCBNU0kgZG9v cmJlbGwuIE5vdCBzdXJlIGlmIGl0IHdvdWxkIHdvcmtzCj4gdGhvdWdodC4KClllYWgsIHRoaXMg aXMgYSBwcm9ibGVtLgpJJ20gbm90IHN1cmUgaWYgU01NVSBhYm9ydHMgd291bGQgd29yayBiZWNh dXNlIEkgZG9uJ3QgdGhpbmsgd2Uga25vdyB0aGUgdmFsdWUgb2YgdGhlIGRhdGEgd3JpdHRlbiB3 aGVuIHdlIHRha2UgdGhlIGFib3J0LgpXaXRob3V0IHRoZSBkYXRhLCBJJ20gbm90IHN1cmUgaG93 IHdlIHdvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IE1TSSdzIGZyb20gdGhlIHNh bWUgZGV2aWNlLgoKQWxzbywgZXZlbiBpZiB0aGUgTVNJIGRvb3JiZWxsIHdvdWxkIGJlIHByb3Rl Y3RlZCBieSB0aGUgU01NVSwgYWxsIFBDSSBkZXZpY2VzIGFyZSBwcmVzZW50ZWQgd2l0aCB0aGUg c2FtZSBBWEkgTWFzdGVyIElELgpCVFcsIHRoaXMgbWFzdGVyLUlEIFNNTVUgbGltaXRhdGlvbiBp cyBhIHNob3dzdG9wcGVyIGZvciBkb21VIGd1ZXN0cyBpc24ndCBpdD8KT3IgZG8geW91IGhhdmUg aWRlYXMgYXJvdW5kIHRoYXQ/IFBlcmhhcHMgc29tZSBQViB3YXkgdG8gcmVxdWVzdCBtYXBwaW5n cyBmb3IgRE1BPwoKQmVzdCByZWdhcmRzLApFZGdhcgoKCj4gCj4gQ2hlZXJzLAo+IAo+IC0tIAo+ IEp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==