From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [early RFC] ARM PCI Passthrough design document Date: Wed, 1 Feb 2017 20:12:00 +0000 Message-ID: <616043e2-82d6-9f64-94fc-5c836d41818f@linaro.org> References: <5cf9128e-e845-2a89-f7c7-ac8616941ab9@linaro.org> <56a2cd48-f7cf-25ca-2bfe-cabf02d34df3@linaro.org> <8ca91073-09e7-57ca-9063-b47e0aced39d@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 1cZ1GB-0004VI-Gz for xen-devel@lists.xenproject.org; Wed, 01 Feb 2017 20:12:07 +0000 Received: by mail-wm0-f45.google.com with SMTP id c85so56290227wmi.1 for ; Wed, 01 Feb 2017 12:12:04 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: "Edgar Iglesias (edgar.iglesias@xilinx.com)" , Pooya.Keshavarzi@de.bosch.com, Dirk Behme , Wei Chen , Campbell Sean , Andrew Cooper , Jiandi An , Punit Agrawal , Iurii Mykhalskyi , "alistair.francis@xilinx.com" , xen-devel , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , "manish.jaggi@caviumnetworks.com" , Shanker Donthineni , Steve Capper List-Id: xen-devel@lists.xenproject.org SGkgU3RlZmFubywKCk9uIDMxLzAxLzIwMTcgMjE6NTgsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90 ZToKPiBPbiBXZWQsIDI1IEphbiAyMDE3LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4+Pj4+PiB3aGls c3QgZm9yIERldmljZSBUcmVlIHRoZSBzZWdtZW50IG51bWJlciBpcyBub3QgYXZhaWxhYmxlLgo+ Pj4+Pj4KPj4+Pj4+IFNvIFhlbiBuZWVkcyB0byByZWx5IG9uIERPTTAgdG8gZGlzY292ZXIgdGhl IGhvc3QgYnJpZGdlcyBhbmQgbm90aWZ5Cj4+Pj4+PiBYZW4KPj4+Pj4+IHdpdGggYWxsIHRoZSBy ZWxldmFudCBpbmZvcm1hdGlvbnMuIFRoaXMgd2lsbCBiZSBkb25lIHZpYSBhIG5ldwo+Pj4+Pj4g aHlwZXJjYWxsCj4+Pj4+PiBQSFlTREVWT1BfcGNpX2hvc3RfYnJpZGdlX2FkZC4gVGhlIGxheW91 dCBvZiB0aGUgc3RydWN0dXJlIHdpbGwgYmU6Cj4+Pj4+Cj4+Pj4+IEkgdW5kZXJzdGFuZCB0aGF0 IHRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBoeXBlcmNhbGwgaXMgdG8gZ2V0IFhlbiBhbmQKPj4+ Pj4gRG9tMAo+Pj4+PiB0bwo+Pj4+PiBhZ3JlZSBvbiB0aGUgc2VnbWVudCBudW1iZXJzLCBidXQg d2h5IGlzIGl0IG5lY2Vzc2FyeT8gSWYgRG9tMCBoYXMgYW4KPj4+Pj4gZW11bGF0ZWQgY29udG9s bGVyIGxpa2UgYW55IG90aGVyIGd1ZXN0LCBkbyB3ZSBjYXJlIHdoYXQgc2VnbWVudCBudW1iZXJz Cj4+Pj4+IERvbTAgd2lsbCB1c2U/Cj4+Pj4KPj4+PiBJIHdhcyBub3QgcGxhbm5pbmcgdG8gaGF2 ZSBhIGVtdWxhdGVkIGNvbnRyb2xsZXIgZm9yIERPTTAuIFRoZSBwaHlzaWNhbAo+Pj4+IG9uZSBp cwo+Pj4+IG5vdCBuZWNlc3NhcmlseSBFQ0FNIGNvbXBsaWFudCBzbyB3ZSB3b3VsZCBoYXZlIHRv IGVpdGhlciBlbXVsYXRlIHRoZQo+Pj4+IHBoeXNpY2FsCj4+Pj4gb25lIChtZWFuaW5nIG11bHRp cGxlIGRpZmZlcmVudCBlbXVsYXRpb24pIG9yIGFuIEVDQU0gY29tcGxpYW50Lgo+Pj4+Cj4+Pj4g VGhlIGxhdHRlciBpcyBub3QgcG9zc2libGUgYmVjYXVzZSB5b3UgZG9uJ3Qga25vdyBpZiB0aGVy ZSBpcyBlbm91Z2ggZnJlZQo+Pj4+IE1NSU8KPj4+PiBzcGFjZSBmb3IgdGhlIGVtdWxhdGlvbi4K Pj4+Pgo+Pj4+IEluIHRoZSBjYXNlIG9uIEFSTSwgSSBkb24ndCBzZWUgbXVjaCB0aGUgcG9pbnQg dG8gZW11bGF0ZSB0aGUgaG9zdCBicmlkZ2UKPj4+PiBmb3IKPj4+PiBET00wLiBUaGUgb25seSB0 aGluZyB3ZSBuZWVkIGluIFhlbiBpcyB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2Us Cj4+Pj4gd2UKPj4+PiBkb24ndCBoYXZlIGFib3V0IGRyaXZpbmcgdGhlIGhvc3QgYnJpZGdlLiBT byBJIHdvdWxkIGxldCBET00wIGRlYWxpbmcgd2l0aAo+Pj4+IHRoYXQuCj4+Pj4KPj4+PiBBbHNv LCBJIGRvbid0IHNlZSBhbnkgcmVhc29uIGZvciBBUk0gdG8gdHJhcCBET00wIGNvbmZpZ3VyYXRp b24gc3BhY2UKPj4+PiBhY2Nlc3MuCj4+Pj4gVGhlIE1TSSB3aWxsIGJlIGNvbmZpZ3VyZWQgdXNp bmcgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGFuZCBpdCBpcyBhCj4+Pj4gdHJ1c3RlZAo+Pj4+ IERvbWFpbi4KPj4+Cj4+PiBUaGVzZSBsYXN0IHlvdSBzZW50ZW5jZXMgcmFpc2UgYSBsb3Qgb2Yg cXVlc3Rpb25zLiBNYXliZSBJIGFtIG1pc3NpbmcKPj4+IHNvbWV0aGluZy4gWW91IG1pZ2h0IHdh bnQgdG8gY2xhcmlmeSB0aGUgc3RyYXRlZ3kgZm9yIERvbTAgYW5kIERvbVVzLAo+Pj4gYW5kIGhv dyB0aGV5IGRpZmZlciwgaW4gdGhlIG5leHQgdmVyc2lvbiBvZiB0aGUgZG9jLgo+Pj4KPj4+IEF0 IHNvbWUgcG9pbnQgeW91IHdyb3RlICJJbnN0YW50aWF0aW9uIG9mIGEgc3BlY2lmaWMgZHJpdmVy IGZvciB0aGUgaG9zdAo+Pj4gY29udHJvbGxlciBjYW4gYmUgZWFzaWx5IGRvbmUgaWYgWGVuIGhh cyB0aGUgaW5mb3JtYXRpb24gdG8gZGV0ZWN0IGl0Lgo+Pj4gSG93ZXZlciwgdGhvc2UgZHJpdmVy cyBtYXkgcmVxdWlyZSByZXNvdXJjZXMgZGVzY3JpYmVkIGluIEFTTC4iIERvZXMgaXQKPj4+IG1l YW4geW91IHBsYW4gdG8gZHJpdmUgdGhlIHBoeXNpY2FsIGhvc3QgYnJpZGdlIGZyb20gWGVuIGFu ZCBEb20wCj4+PiBzaW11bHRhbmVvdXNseT8KPj4KPj4gSSBtYXkgbWlzcyBzb21lIGJpdHMsIHNv IGZlZWwgZnJlZSB0byBjb3JyZWN0IG1lIGlmIEkgYW0gd3JvbmcuCj4+Cj4+IE15IHVuZGVyc3Rh bmRpbmcgaXMgaG9zdCBicmlkZ2UgY2FuIGJlIGRpdmlkZWQgaW4gMiBwYXJ0czoKPj4gCS0gSW5p dGlhbGl6YXRpb24gb2YgdGhlIGhvc3QgYnJpZGdlCj4+IAktIEFjY2VzcyB0aGUgY29uZmlndXJh dGlvbiBzcGFjZQo+Pgo+PiBGb3IgZ2VuZXJpYyBob3N0IGJyaWRnZSwgdGhlIGluaXRpYWxpemF0 aW9uIGlzIGluZXhpc3RlbnQuIEhvd2V2ZXIgc29tZSBob3N0Cj4+IGJyaWRnZSAoZS5nIHhnZW5l LCB4aWxpbngpIG1heSByZXF1aXJlIHNvbWUgc3BlY2lmaWMgc2V0dXAgYW5kIGFsc28KPj4gY29u ZmlndXJpbmcgY2xvY2tzLiBHaXZlbiB0aGF0IFhlbiBvbmx5IHJlcXVpcmVzIHRvIGFjY2VzcyB0 aGUgY29uZmlndXJhdGlvbgo+PiBzcGFjZSwgSSB3YXMgdGhpbmtpbmcgdG8gbGV0IERPTTAgaW5p dGlhbGl6YXRpb24gdGhlIGhvc3QgYnJpZGdlLiBUaGlzIHdvdWxkCj4+IGF2b2lkIHRvIGltcG9y dCBhIGxvdCBvZiBjb2RlIGluIFhlbiwgaG93ZXZlciB0aGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0 byBrbm93Cj4+IHdoZW4gdGhlIGhvc3QgYnJpZGdlIGhhcyBiZWVuIGluaXRpYWxpemVkIGJlZm9y ZSBhY2Nlc3NpbmcgdGhlIGNvbmZpZ3VyYXRpb24KPj4gc3BhY2UuCj4KPiBJIHByZWZlciB0byBh dm9pZCBhIHNwbGl0LW1pbmQgYXBwcm9hY2gsIHdoZXJlIHNvbWUgUENJIHRoaW5ncyBhcmUKPiBp bml0aWFsaXplZC9vd25lZCBieSBvbmUgY29tcG9uZW50IGFuZCBzb21lIG90aGVycyBhcmUgaW5p dGlhbGl6ZWQvb3duZWQKPiBieSBhbm90aGVyIGNvbXBvbmVudC4gSXQgY3JlYXRlcyBjb21wbGV4 aXR5LiBPZiBjb3Vyc2UsIHdlIGhhdmUgdG8gZmFjZQo+IHRoZSByZWFsaXR5IHRoYXQgdGhlIGFs dGVybmF0aXZlcyBtaWdodCBiZSB3b3JzZSwgYnV0IGxldCdzIHRha2UgYSBsb29rCj4gYXQgdGhl IG90aGVyIG9wdGlvbnMgZmlyc3QuCj4KPiBIb3cgaGFyZCB3b3VsZCBpdCBiZSB0byBicmluZyB0 aGUgUENJIGhvc3QgYnJpZGdlIGluaXRpYWxpemF0aW9uIGluIFhlbiwKPiBmb3IgZXhhbXBsZSBp biB0aGUgY2FzZSBvZiB0aGUgWGlsaW54IFp5bnFNUD8gVHJhZGl0aW9uYWxseSwgUENJIGhvc3QK PiBicmlkZ2VzIGhhdmUgbm90IHJlcXVpcmVkIGFueSBpbml0aWFsaXphdGlvbiBvbiB4ODYuIFBD SSBpcyBzdGlsbCBuZXcgdG8KPiB0aGUgQVJNIGVjb3N5c3RlbXMuIEkgdGhpbmsgaXQgaXMgcmVh c29uYWJsZSB0byBleHBlY3QgdGhhdCBnb2luZwo+IGZvcndhcmQsIGFzIHRoZSBBUk0gZWNvc3lz dGVtIG1hdHVyZXMsIFBDSSBob3N0IGJyaWRnZXMgd2lsbCByZXF1aXJlCj4gbGl0dGxlIHRvIG5v IGluaXRpYWxpemF0aW9uIG9uIEFSTSB0b28uCgpJIHdvdWxkIGFncmVlIGZvciBzZXJ2ZXJzIGJ1 dCBJIGFtIGxlc3Mgc3VyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gWW91IAptYXkgd2FudCB0byBz YXZlIGFkZHJlc3Mgc3BhY2Ugb3IgZXZlbiBwb3dlciBwb3RlbnRpYWxseSByZXF1aXJpbmcgYSAK Y3VzdG9tIGhvc3RicmlkZ2UuIEkgaG9wZSBJIGFtIHdyb25nIGhlcmUuCgpJIHRoaW5rIHRoZSB4 aWxpbnggaG9zdCBicmlkZ2UgaXMgdGhlIHNpbXBsZXN0IGNhc2UuIEkgYW0gdHJ5aW5nIHRvIAp1 bmRlcnN0YW5kIGJldHRlciBpbiBhIHNlcGFyYXRlIGUtbWFpbCAoc2VlIAo8YTExMjBhNjAtYjg1 OS1jN2ZmLTlkNGEtNTUzYzMzMDY2OWYxQGxpbmFyby5vcmc+KS4KClRoZXJlIGFyZSBtb3JlIGNv bXBsZXggaG9zdGJyaWRnZSBzdWNoIGFzIHgtZ2VuZSBbMV0gYW5kIFItQ2FyIFsyXS4KSWYgd2Ug dGFrZSB0aGUgZXhhbXBsZSBvZiB0aGUgcmVuZXNhcyBzYWx2YXRvciBib2FyZCBiZWVuIHVzZWQg b24gCmF1dG9tb3RpdmUgKEdsb2JhbGxvZ2ljIGFuZCBCb3NoIGFyZSB3b3JraW5nIG9uIHN1cHBv cnQgZm9yIFhlbiBbM10pLCBpdCAKY29udGFpbnMgYW4gUi1DYXIgUENJIHJvb3QgY29tcGxleCwg YmVsb3cgYSBwYXJ0IG9mIHRoZSBEVFMKCi8qIEV4dGVybmFsIFBDSWUgY2xvY2sgLSBjYW4gYmUg b3ZlcnJpZGRlbiBieSB0aGUgYm9hcmQgKi8KcGNpZV9idXNfY2xrOiBwY2llX2J1cyB7CiAgICAg ICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CiAgICAgICAgICAgICAgICAg I2Nsb2NrLWNlbGxzID0gPDA+OwogICAgICAgICAgICAgICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDww PjsKfTsKCnBjaWVjMDogcGNpZUBmZTAwMDAwMCB7Cgljb21wYXRpYmxlID0gInJlbmVzYXMscGNp ZS1yOGE3Nzk1IjsKICAgICAgICAgcmVnID0gPDAgMHhmZTAwMDAwMCAwIDB4ODAwMDA+OwogICAg ICAgICAjYWRkcmVzcy1jZWxscyA9IDwzPjsKICAgICAgICAgI3NpemUtY2VsbHMgPSA8Mj47CiAg ICAgICAgIGJ1cy1yYW5nZSA9IDwweDAwIDB4ZmY+OwogICAgICAgICBkZXZpY2VfdHlwZSA9ICJw Y2kiOwogICAgICAgICByYW5nZXMgPSA8MHgwMTAwMDAwMCAwIDB4MDAwMDAwMDAgMCAweGZlMTAw MDAwIDAgMHgwMDEwMDAwMAogICAgICAgICAgICAgICAgICAgMHgwMjAwMDAwMCAwIDB4ZmUyMDAw MDAgMCAweGZlMjAwMDAwIDAgMHgwMDIwMDAwMAogICAgICAgICAgICAgICAgICAgMHgwMjAwMDAw MCAwIDB4MzAwMDAwMDAgMCAweDMwMDAwMDAwIDAgMHgwODAwMDAwMAogICAgICAgICAgICAgICAg ICAgMHg0MjAwMDAwMCAwIDB4MzgwMDAwMDAgMCAweDM4MDAwMDAwIDAgMHgwODAwMDAwMD47CiAg ICAgICAgICAgICAgICAgICAvKiBNYXAgYWxsIHBvc3NpYmxlIEREUiBhcyBpbmJvdW5kIHJhbmdl cyAqLwogICAgICAgICAgICAgICAgICAgZG1hLXJhbmdlcyA9IDwweDQyMDAwMDAwIDAgMHg0MDAw MDAwMCAwIDB4NDAwMDAwMDAgMCAKMHg0MDAwMDAwMD47CiAgICAgICAgICAgICAgICAgICBpbnRl cnJ1cHRzID0gPEdJQ19TUEkgMTE2IElSUV9UWVBFX0xFVkVMX0hJR0g+LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxHSUNfU1BJIDExNyBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R0lDX1NQSSAxMTggSVJRX1RZUEVfTEVWRUxf SElHSD47CiAgICAgICAgICAgICAgICAgICAjaW50ZXJydXB0LWNlbGxzID0gPDE+OwogICAgICAg ICAgICAgICAgICAgaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDA+OwogICAgICAgICAgICAg ICAgICAgaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAwICZnaWMgR0lDX1NQSSAxMTYgCklSUV9UWVBF X0xFVkVMX0hJR0g+OwogICAgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZjcGcgQ1BHX01PRCAz MTk+LCA8JnBjaWVfYnVzX2Nsaz47CiAgICAgICAgICAgICAgICAgICBjbG9jay1uYW1lcyA9ICJw Y2llIiwgInBjaWVfYnVzIjsKICAgICAgICAgICAgICAgICAgIHBvd2VyLWRvbWFpbnMgPSA8JnN5 c2MgUjhBNzc5NV9QRF9BTFdBWVNfT04+OwogICAgICAgICAgICAgICAgICAgc3RhdHVzID0gImRp c2FibGVkIjsKfTsKClRoZSBQQ0kgY29udHJvbGxlciBkZXBlbmRzIG9uIDIgY2xvY2tzLCBvbmUg b2Ygd2hpY2ggcmVxdWlyZXMgYSBzcGVjaWZpYyAKZHJpdmVyLiBJdCBhbHNvIGNvbnRhaW5zIGEg cG93ZXIgZG9tYWluLCB3aGljaCBJIGd1ZXNzIHdpbGwgcmVxdWlyZSBzb21lIApjb25maWd1cmF0 aW9uIGFuZCB3b3VsZCBuZWVkIHRvIGJlIHNoYXJlZCB3aXRoIExpbnV4LgoKRnVydGhlcm1vcmUs IHRoZSBSLUNhciBkcml2ZXIgaGFzIGEgc3BlY2lmaWMgd2F5IHRvIGFjY2VzcyB0aGUgCmNvbmZp Z3VyYXRpb24gc3BhY2UgKHNlZSByY2FyX3BjaWVfY29uZmlnX2FjY2VzcykuIEl0IGlzIGFjdHVh bGx5IHRoZSAKZmlyc3Qgcm9vdCBjb21wbGV4IEkgZm91bmQgZmFsbGluZyB1bmRlciAiRm9yIGFs bCBob3N0IGJyaWRnZXMiIGludG8gdGhlIAogIGFjdHVhbGx5IGZpbmQgYSByb290IGNvbXBsZXgg ZmFsbGluZyB1bmRlciB0aGUgY2F0ZWdvcnkgIkZvciBhbGwgb3RoZXIgCmhvc3QgYnJpZGdlcyIg b24gbXkgcHJldmlvdXMgbWFpbC4KCkxhc3RseSwgdGhlIE1TSSBjb250cm9sbGVyIGlzIGludGVn cmF0ZWQgaW4gdGhlIHJvb3QgY29tcGxleCBoZXJlIHRvby4KClNvIEkgdGhpbmsgdGhlIFItY2Fy IHJvb3QgY29tcGxleCBpcyB0aGUga2luZCBvZiBoYXJkd2FyZSB0aGF0IHdvdWxkIApyZXF1aXJl IG1lcmdlIGhhbGYgb2YgTGludXggaW4gWGVuIGFuZCBwb3RlbnRpYWxseSBlbXVsYXRlIHNvbWUg cGFydCBvZiAKdGhlIGhhcmR3YXJlIChzdWNoIGFzIHRoZSBjbG9jaykgZm9yIERPTTAuCgpJIGRv bid0IGhhdmUgYW55IGdvb2QgaWRlYSBoZXJlIHdoaWNoIGRvZXMgbm90IGludm9sdmUgRE9NMC4g SSB3b3VsZCBiZSAKaGFwcHkgdG8ga25vdyB3aGF0IG90aGVyIHBlb3BsZSB0aGlua3MuCgpOb3Rl IHRoYXQgSSBkb24ndCB0aGluayB3ZSBjYW4gcG9zc2libHkgc2F5IHdlIGRvbid0IHN1cHBvcnQg UENJIApwYXNzdGhyb3VnaC4KCj4+IE5vdyByZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gc3Bh Y2UsIEkgdGhpbmsgd2UgY2FuIGRpdmlkZSBpbiAyIGNhdGVnb3J5Ogo+PiAJLSBpbmRpcmVjdCBh Y2Nlc3MsIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGFyZSBtdWx0aXBsZXhlZC4gQW4gZXhhbXBs ZQo+PiB3b3VsZCBiZSB0aGUgbGVnYWN5IG1ldGhvZCBvbiB4ODYgKGUuZyAweGNmOCBhbmQgMHhj ZmMpLiBBIHNpbWlsYXIgbWV0aG9kIGlzCj4+IHVzZWQgZm9yIHgtZ2VuZSBQQ0kgZHJpdmVyIChb MV0pLgo+PiAJLSBFQ0FNIGxpa2UgYWNjZXNzLCB3aGVyZSBlYWNoIFBDSSBjb25maWd1cmF0aW9u IHNwYWNlIHdpbGwgaGF2ZSBpdCBpcwo+PiBvd24gYWRkcmVzcyBzcGFjZS4gSSBzYWlkICJFQ0FN IGxpa2UiIGJlY2F1c2Ugc29tZSBob3N0IGJyaWRnZSB3aWxsIHJlcXVpcmUKPj4gc29tZSBiaXRz IGZpZGRsaW5nIHdoZW4gYWNjZXNzaW5nIHJlZ2lzdGVyIChzZWUgdGh1bmRlci1lY2FtIFsyXSkK Pj4KPj4gVGhlcmUgYXJlIGFsc28gaG9zdCBicmlkZ2VzIHRoYXQgbWl4IGJvdGggaW5kaXJlY3Qg YWNjZXNzIGFuZCBFQ0FNIGxpa2UgYWNjZXNzCj4+IGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGNv bmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzZWQgKHNlZSB0aHVuZGVyLXBlbSBbM10pLgo+Pgo+PiBX aGVuIHVzaW5nIEVDQU0gbGlrZSBob3N0IGJyaWRnZSwgSSBkb24ndCB0aGluayBpdCB3aWxsIGJl IGFuIGlzc3VlIHRvIGhhdmUKPj4gYm90aCBET00wIGFuZCBYZW4gYWNjZXNzaW5nIGNvbmZpZ3Vy YXRpb24gc3BhY2UgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2gsIHdlCj4+IG5lZWQgdG8gZGVm aW5lIHdobyBpcyBkb2luZyB3aGF0LiBJbiBnZW5lcmFsIGNhc2UsIERPTTAgc2hvdWxkIG5vdCB0 b3VjaGVkIGFuCj4+IGFzc2lnbmVkIFBDSSBkZXZpY2UuIFRoZSBvbmx5IHBvc3NpYmxlIGludGVy YWN0aW9uIHdvdWxkIGJlIHJlc2V0dGluZyBhIGRldmljZQo+PiAoc2VlIG15IGFuc3dlciBiZWxv dykuCj4KPiBFdmVuIGlmIHRoZSBoYXJkd2FyZSBhbGxvd3MgaXQsIEkgdGhpbmsgaXQgaXMgYSBi YWQgaWRlYSB0byBhY2Nlc3MgdGhlCj4gc2FtZSBoYXJkd2FyZSBjb21wb25lbnQgZnJvbSB0d28g ZGlmZmVyZW50IGVudGl0aWVzIHNpbXVsdGFuZW91c2x5Lgo+Cj4gSSBzdWdnZXN0IHdlIHRyYXAg RG9tMCByZWFkcy93cml0ZXMgdG8gRUNBTSwgYW5kIGV4ZWN1dGUgdGhlbSBpbiBYZW4sCj4gd2hp Y2ggSSB0aGluayBpdCdzIHdoYXQgeDg2IGRvZXMgdG9kYXkuCgpGV0lXLCBSb2dlciBjb25maXJt ZWQgbWUgSVJMLiBTbyB3aWxsIHVwZGF0ZSB0aGUgZGVzaWduIGRvY3VtZW50IHRvIApzcGVjaWZp YyB0aGF0IERPTTAgYWNjZXNzIGFyZSB0cmFwcGVkLCBldmVuIGlmIHdlIG1heSBub3QgdGFrZSBh ZHZhbnRhZ2UgCm9mIGl0IHRvZGF5LgoKPgo+Cj4+IFdoZW4gdXNpbmcgaW5kaXJlY3QgYWNjZXNz LCB3ZSBjYW5ub3QgbGV0IERPTTAgYW5kIFhlbiBhY2Nlc3NpbmcgYW55IFBDSQo+PiBjb25maWd1 cmF0aW9uIHNwYWNlIGF0IHRoZSBzYW1lIHRpbWUuIFNvIEkgdGhpbmsgd2Ugd291bGQgaGF2ZSB0 byBlbXVsYXRlIHRoZQo+PiBwaHlzaWNhbCBob3N0IGNvbnRyb2xsZXIuCj4+Cj4+IFVubGVzcyB3 ZSBoYXZlIGEgYmlnIHJlcXVpcmVtZW50IHRvIHRyYXAgRE9NMCBhY2Nlc3MgdG8gdGhlIGNvbmZp Z3VyYXRpb24KPj4gc3BhY2UsIEkgd291bGQgb25seSBrZWVwIHRoZSBlbXVsYXRpb24gdG8gdGhl IHN0cmljdCBtaW5pbXVtIChlLmcgZm9yIGluZGlyZWN0Cj4+IGFjY2VzcykgdG8gYXZvaWQgZW5k aW5nLXVwIGhhbmRsaW5nIGFsbCB0aGUgcXVpcmtzIGZvciBFQ0FNIGxpa2UgaG9zdCBicmlkZ2Uu Cj4+Cj4+IElmIHdlIG5lZWQgdG8gdHJhcCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSwgSSB3b3Vs ZCBzdWdnZXN0IHRoZSBmb2xsb3dpbmcgZm9yCj4+IEVDQU0gbGlrZSBob3N0IGJyaWRnZToKPj4g CS0gRm9yIHBoeXNpY2FsIGhvc3QgYnJpZGdlIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBpbml0aWFs aXphdGlvbiBhbmQgaXMKPj4gbmVhcmx5IEVDQU0gY29tcGF0aWJsZSAoZS5nIHJlcXVpcmUgcmVn aXN0ZXIgZmlkZGxpbmcpID0+IHJlcGxhY2UgYnkgYSBnZW5lcmljCj4+IGhvc3QgYnJpZGdlIGVt dWxhdGlvbiBmb3IgRE9NMAo+Cj4gU291bmRzIGdvb2QuCj4KPgo+PiAJLSBGb3IgcGh5c2ljYWwg aG9zdCBicmlkZ2UgdGhhdCByZXF1aXJlIGluaXRpYWxpemF0aW9uIGJ1dCBpcyBFQ0FNCj4+IGNv bXBhdGlibGUgKGUuZyBBRkFJQ1QgeGlsaW54IFs0XSkgPT4gdHJhcCB0aGUgRUNBTSBhY2Nlc3Mg YnV0IGxldCBET00wCj4+IGhhbmRsaW5nIHRoZSBob3N0IGJyaWRnZSBpbml0aWFsaXphdGlvbgo+ Cj4gSSB3b3VsZCBjb25zaWRlciBkb2luZyB0aGUgaW5pdGlhbGl6YXRpb24gaW4gWGVuLiBJdCB3 b3VsZCBzaW1wbGlmeSB0aGUKPiBhcmNoaXRlY3R1cmUgc2lnbmlmaWNhbnRseS4KClNlZSBhYm92 ZSBhbiBleGFtcGxlIHdoZXJlIGl0IGRvZXMgbm90IGZpdC4KCj4+IAktIEZvciBhbGwgb3RoZXIg aG9zdCBicmlkZ2VzID0+IEkgZG9uJ3Qga25vdyBpZiB0aGVyZSBhcmUgaG9zdCBicmlkZ2VzCj4+ IGZhbGxpbmcgdW5kZXIgdGhpcyBjYXRlZ29yeS4gSSBhbHNvIGRvbid0IGhhdmUgYW55IGlkZWEg aG93IHRvIGhhbmRsZSB0aGlzLgoKQ2hlZXJzLAoKWzFdIGxpbnV4L2RyaXZlcnMvcGNpL2hvc3Qv cGNpLXhnZW5lLmMKWzJdIGxpbnV4L2RyaXZlcnMvcGNpL2hvc3QvcGNpZS1yY2FyLmMKWzNdIGh0 dHBzOi8vbGlzdHMueGVuLm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE2LTExL21zZzAw NTk0Lmh0bWwKCi0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=