From: Kenneth Lee Subject: Re: [RFC PATCH 0/7] A General Accelerator Framework, WarpDrive Date: Mon, 6 Aug 2018 11:12:52 +0800 Message-ID: <20180806031252.GG91035@Turing-Arch-b> References: <20180801102221.5308-1-nek.in.cn@gmail.com> <20180801165644.GA3820@redhat.com> <20180802040557.GL160746@Turing-Arch-b> <20180802142243.GA3481@redhat.com> <20180803034721.GC91035@Turing-Arch-b> <20180803143944.GA4079@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "Tian, Kevin" , Alex Williamson , Herbert Xu , "kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Jonathan Corbet , Greg Kroah-Hartman , Zaibo Xu , "linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "Kumar, Sanjay K" , Hao Fang , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linuxarm-hv44wF8Li93QT0dZR+AlfA@public.gmane.org" , "iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org" , "linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Philippe Ombredanne , Thomas Gleixner , Kenneth Lee , "David S . Miller" , "linux-accelerators-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org" Return-path: Content-Disposition: inline In-Reply-To: <20180803143944.GA4079-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 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 List-Id: linux-crypto.vger.kernel.org T24gRnJpLCBBdWcgMDMsIDIwMTggYXQgMTA6Mzk6NDRBTSAtMDQwMCwgSmVyb21lIEdsaXNzZSB3 cm90ZToKPiBEYXRlOiBGcmksIDMgQXVnIDIwMTggMTA6Mzk6NDQgLTA0MDAKPiBGcm9tOiBKZXJv bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gVG86IEtlbm5ldGggTGVlIDxsaWd1b3po dUBoaXNpbGljb24uY29tPgo+IENDOiAiVGlhbiwgS2V2aW4iIDxrZXZpbi50aWFuQGludGVsLmNv bT4sIEhlcmJlcnQgWHUKPiAgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4sICJrdm1Admdl ci5rZXJuZWwub3JnIgo+ICA8a3ZtQHZnZXIua2VybmVsLm9yZz4sIEpvbmF0aGFuIENvcmJldCA8 Y29yYmV0QGx3bi5uZXQ+LCBHcmVnCj4gIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5k YXRpb24ub3JnPiwgWmFpYm8gWHUgPHh1emFpYm9AaHVhd2VpLmNvbT4sCj4gICJsaW51eC1kb2NA dmdlci5rZXJuZWwub3JnIiA8bGludXgtZG9jQHZnZXIua2VybmVsLm9yZz4sICJLdW1hciwgU2Fu amF5IEsiCj4gIDxzYW5qYXkuay5rdW1hckBpbnRlbC5jb20+LCBIYW8gRmFuZyA8ZmFuZ2hhbzEx QGh1YXdlaS5jb20+LAo+ICAiaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmciIDxpb21t dUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZz4sCj4gICJsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnIiA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4sCj4gICJsaW51eGFybUBodWF3 ZWkuY29tIiA8bGludXhhcm1AaHVhd2VpLmNvbT4sIEFsZXggV2lsbGlhbXNvbgo+ICA8YWxleC53 aWxsaWFtc29uQHJlZGhhdC5jb20+LCAibGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZyIKPiAg PGxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmc+LCBQaGlsaXBwZSBPbWJyZWRhbm5lCj4gIDxw b21icmVkYW5uZUBuZXhiLmNvbT4sIFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRl PiwgS2VubmV0aCBMZWUKPiAgPG5lay5pbi5jbkBnbWFpbC5jb20+LCAiRGF2aWQgUyAuIE1pbGxl ciIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+LAo+ICAibGludXgtYWNjZWxlcmF0b3JzQGxpc3RzLm96 bGFicy5vcmciCj4gIDxsaW51eC1hY2NlbGVyYXRvcnNAbGlzdHMub3psYWJzLm9yZz4KPiBTdWJq ZWN0OiBSZTogW1JGQyBQQVRDSCAwLzddIEEgR2VuZXJhbCBBY2NlbGVyYXRvciBGcmFtZXdvcmss IFdhcnBEcml2ZQo+IFVzZXItQWdlbnQ6IE11dHQvMS4xMC4wICgyMDE4LTA1LTE3KQo+IE1lc3Nh Z2UtSUQ6IDwyMDE4MDgwMzE0Mzk0NC5HQTQwNzlAcmVkaGF0LmNvbT4KPiAKPiBPbiBGcmksIEF1 ZyAwMywgMjAxOCBhdCAxMTo0NzoyMUFNICswODAwLCBLZW5uZXRoIExlZSB3cm90ZToKPiA+IE9u IFRodSwgQXVnIDAyLCAyMDE4IGF0IDEwOjIyOjQzQU0gLTA0MDAsIEplcm9tZSBHbGlzc2Ugd3Jv dGU6Cj4gPiA+IERhdGU6IFRodSwgMiBBdWcgMjAxOCAxMDoyMjo0MyAtMDQwMAo+ID4gPiBGcm9t OiBKZXJvbWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gPiA+IFRvOiBLZW5uZXRoIExl ZSA8bGlndW96aHVAaGlzaWxpY29uLmNvbT4KPiA+ID4gQ0M6ICJUaWFuLCBLZXZpbiIgPGtldmlu LnRpYW5AaW50ZWwuY29tPiwgSGFvIEZhbmcgPGZhbmdoYW8xMUBodWF3ZWkuY29tPiwKPiA+ID4g IEFsZXggV2lsbGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+LCBIZXJiZXJ0IFh1 Cj4gPiA+ICA8aGVyYmVydEBnb25kb3IuYXBhbmEub3JnLmF1PiwgImt2bUB2Z2VyLmtlcm5lbC5v cmciCj4gPiA+ICA8a3ZtQHZnZXIua2VybmVsLm9yZz4sIEpvbmF0aGFuIENvcmJldCA8Y29yYmV0 QGx3bi5uZXQ+LCBHcmVnCj4gPiA+ICBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4sIFphaWJvIFh1IDx4dXphaWJvQGh1YXdlaS5jb20+LAo+ID4gPiAgImxpbnV4LWRv Y0B2Z2VyLmtlcm5lbC5vcmciIDxsaW51eC1kb2NAdmdlci5rZXJuZWwub3JnPiwgIkt1bWFyLCBT YW5qYXkgSyIKPiA+ID4gIDxzYW5qYXkuay5rdW1hckBpbnRlbC5jb20+LCBLZW5uZXRoIExlZSA8 bmVrLmluLmNuQGdtYWlsLmNvbT4sCj4gPiA+ICAiaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmciIDxpb21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZz4sCj4gPiA+ICAibGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZyIgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+LAo+ ID4gPiAgImxpbnV4YXJtQGh1YXdlaS5jb20iIDxsaW51eGFybUBodWF3ZWkuY29tPiwKPiA+ID4g ICJsaW51eC1jcnlwdG9Admdlci5rZXJuZWwub3JnIiA8bGludXgtY3J5cHRvQHZnZXIua2VybmVs Lm9yZz4sIFBoaWxpcHBlCj4gPiA+ICBPbWJyZWRhbm5lIDxwb21icmVkYW5uZUBuZXhiLmNvbT4s IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPiwKPiA+ID4gICJEYXZpZCBTIC4g TWlsbGVyIiA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4sCj4gPiA+ICAibGludXgtYWNjZWxlcmF0b3Jz QGxpc3RzLm96bGFicy5vcmciCj4gPiA+ICA8bGludXgtYWNjZWxlcmF0b3JzQGxpc3RzLm96bGFi cy5vcmc+Cj4gPiA+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIDAvN10gQSBHZW5lcmFsIEFjY2Vs ZXJhdG9yIEZyYW1ld29yaywgV2FycERyaXZlCj4gPiA+IFVzZXItQWdlbnQ6IE11dHQvMS4xMC4w ICgyMDE4LTA1LTE3KQo+ID4gPiBNZXNzYWdlLUlEOiA8MjAxODA4MDIxNDIyNDMuR0EzNDgxQHJl ZGhhdC5jb20+Cj4gPiA+IAo+ID4gPiBPbiBUaHUsIEF1ZyAwMiwgMjAxOCBhdCAxMjowNTo1N1BN ICswODAwLCBLZW5uZXRoIExlZSB3cm90ZToKPiA+ID4gPiBPbiBUaHUsIEF1ZyAwMiwgMjAxOCBh dCAwMjozMzoxMkFNICswMDAwLCBUaWFuLCBLZXZpbiB3cm90ZToKPiA+ID4gPiA+IERhdGU6IFRo dSwgMiBBdWcgMjAxOCAwMjozMzoxMiArMDAwMAo+ID4gPiA+ID4gPiBGcm9tOiBKZXJvbWUgR2xp c3NlCj4gPiA+ID4gPiA+IE9uIFdlZCwgQXVnIDAxLCAyMDE4IGF0IDA2OjIyOjE0UE0gKzA4MDAs IEtlbm5ldGggTGVlIHdyb3RlOgo+ID4gPiA+ID4gPiA+IEZyb206IEtlbm5ldGggTGVlIDxsaWd1 b3podUBoaXNpbGljb24uY29tPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gV2FycERyaXZl IGlzIGFuIGFjY2VsZXJhdG9yIGZyYW1ld29yayB0byBleHBvc2UgdGhlIGhhcmR3YXJlCj4gPiA+ ID4gPiA+IGNhcGFiaWxpdGllcwo+ID4gPiA+ID4gPiA+IGRpcmVjdGx5IHRvIHRoZSB1c2VyIHNw YWNlLiBJdCBtYWtlcyB1c2Ugb2YgdGhlIGV4aXN0IHZmaW8gYW5kIHZmaW8tbWRldgo+ID4gPiA+ ID4gPiA+IGZhY2lsaXRpZXMuIFNvIHRoZSB1c2VyIGFwcGxpY2F0aW9uIGNhbiBzZW5kIHJlcXVl c3QgYW5kIERNQSB0byB0aGUKPiA+ID4gPiA+ID4gPiBoYXJkd2FyZSB3aXRob3V0IGludGVyYWN0 aW9uIHdpdGggdGhlIGtlcm5lbC4gVGhpcyByZW1vdmUgdGhlIGxhdGVuY3kKPiA+ID4gPiA+ID4g PiBvZiBzeXNjYWxsIGFuZCBjb250ZXh0IHN3aXRjaC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+IFRoZSBwYXRjaHNldCBjb250YWlucyBkb2N1bWVudHMgZm9yIHRoZSBkZXRhaWwuIFBsZWFz ZSByZWZlciB0byBpdCBmb3IKPiA+ID4gPiA+ID4gbW9yZQo+ID4gPiA+ID4gPiA+IGluZm9ybWF0 aW9uLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gVGhpcyBwYXRjaHNldCBpcyBpbnRlbmRl ZCB0byBiZSB1c2VkIHdpdGggSmVhbiBQaGlsaXBwZSBCcnVja2VyJ3MgU1ZBCj4gPiA+ID4gPiA+ ID4gcGF0Y2ggWzFdIChXaGljaCBpcyBhbHNvIGluIFJGQyBzdGFnZSkuIEJ1dCBpdCBpcyBub3Qg bWFuZGF0b3J5LiBUaGlzCj4gPiA+ID4gPiA+ID4gcGF0Y2hzZXQgaXMgdGVzdGVkIGluIHRoZSBs YXRlc3QgbWFpbmxpbmUga2VybmVsIHdpdGhvdXQgdGhlIFNWQSBwYXRjaGVzLgo+ID4gPiA+ID4g PiA+IFNvIGl0IHN1cHBvcnQgb25seSBvbmUgcHJvY2VzcyBmb3IgZWFjaCBhY2NlbGVyYXRvci4K PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFdpdGggU1ZBIHN1cHBvcnQsIFdhcnBEcml2ZSBj YW4gc3VwcG9ydCBtdWx0aS1wcm9jZXNzIGluIHRoZSBzYW1lCj4gPiA+ID4gPiA+ID4gYWNjZWxl cmF0b3IgZGV2aWNlLiAgV2UgdGVzdGVkIGl0IGluIG91ciBTb0MgaW50ZWdyYXRlZCBBY2NlbGVy YXRvciAoYm9hcmQKPiA+ID4gPiA+ID4gPiBJRDogRDA2LCBDaGlwIElEOiBISVAwOCkuIEEgcmVm ZXJlbmNlIHdvcmsgdHJlZSBjYW4gYmUgZm91bmQgaGVyZTogWzJdLgo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gSSBoYXZlIG5vdCBmdWxseSBpbnNwZWN0ZWQgdGhpbmdzIG5vciBkbyBpIGtub3cg ZW5vdWdoIGFib3V0Cj4gPiA+ID4gPiA+IHRoaXMgSGlzaWxpY29uIFpJUCBhY2NlbGVyYXRvciB0 byBhc2NlcnRhaW4sIGJ1dCBmcm9tIGdsaW1wc2luZwo+ID4gPiA+ID4gPiBhdCB0aGUgY29kZSBp dCBzZWVtcyB0aGF0IGl0IGlzIHVuc2FmZSB0byB1c2UgZXZlbiB3aXRoIFNWQSBkdWUKPiA+ID4g PiA+ID4gdG8gdGhlIGRvb3JiZWxsLiBUaGVyZSBpcyBhIGNvbW1lbnQgdGFsa2luZyBhYm91dCBz YWZldHluZXNzCj4gPiA+ID4gPiA+IGluIHBhdGNoIDcuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiBFeHBvc2luZyB0aGluZyB0byB1c2Vyc3BhY2UgaXMgYWx3YXlzIGVudGljaW5nLCBidXQgaWYg aXQgaXMKPiA+ID4gPiA+ID4gYSBzZWN1cml0eSByaXNrIHRoZW4gaXQgc2hvdWxkIGNsZWFybHkg c2F5IHNvIGFuZCBtYXliZSBhCj4gPiA+ID4gPiA+IGtlcm5lbCBib290IGZsYWcgc2hvdWxkIGJl IG5lY2Vzc2FyeSB0byBhbGxvdyBzdWNoIGRldmljZSB0bwo+ID4gPiA+ID4gPiBiZSB1c2UuCj4g PiA+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IEJ1dCBkb29yYmVsbCBpcyBqdXN0IGEgbm90aWZp Y2F0aW9uLiBFeGNlcHQgZm9yIERPUyAodG8gbWFrZSBoYXJkd2FyZSBidXN5KSBpdAo+ID4gPiA+ IGNhbm5vdCBhY3R1YWxseSB0YWtlIG9yIGNoYW5nZSBhbnl0aGluZyBmcm9tIHRoZSBrZXJuZWwg c3BhY2UuIEFuZCB0aGUgRE9TCj4gPiA+ID4gcHJvYmxlbSBjYW4gYmUgYWx3YXlzIHRha2VuIGFz IHRoZSBwcm9ibGVtIHRoYXQgYSBncm91cCBvZiBwcm9jZXNzZXMgc2hhcmUgdGhlCj4gPiA+ID4g c2FtZSBrZXJuZWwgZW50aXR5Lgo+ID4gPiA+IAo+ID4gPiA+IEluIHRoZSBjb21pbmcgSElQMDkg aGFyZHdhcmUsIHRoZSBkb29yYmVsbCB3aWxsIGNvbWUgd2l0aCBhIHJhbmRvbSBudW1iZXIgc28K PiA+ID4gPiBvbmx5IHRoZSBwcm9jZXNzIHdobyBhbGxvY2F0ZWQgdGhlIHF1ZXVlIGNhbiBrbm9j ayBpdCBjb3JyZWN0bHkuCj4gPiA+IAo+ID4gPiBXaGVuIGRvb3JiZWxsIGlzIHJpbmcgdGhlIGhh cmR3YXJlIHN0YXJ0IGZldGNoaW5nIGNvbW1hbmRzIGZyb20KPiA+ID4gdGhlIHF1ZXVlIGFuZCBl eGVjdXRlIHRoZW0gPyBJZiBzbyB0aGFuIGEgcm9ndWUgcHJvY2VzcyBCIG1pZ2h0Cj4gPiA+IHJp bmcgdGhlIGRvb3JiZWxsIG9mIHByb2Nlc3MgQSB3aGljaCB3b3VsZCBzdGFydHMgZXhlY3V0aW9u IG9mCj4gPiA+IHJhbmRvbSBjb21tYW5kcyAoaWUgd2hhdGV2ZXIgcmFuZG9tIG1lbW9yeSB2YWx1 ZSB0aGVyZSBpcyBsZWZ0Cj4gPiA+IGluc2lkZSB0aGUgY29tbWFuZCBidWZmZXIgbWVtb3J5LCBj b3VsZCBiZSBvbGQgY29tbWFuZHMgaSBndWVzcykuCj4gPiA+IAo+ID4gPiBJZiB0aGlzIGlzIG5v dCBob3cgdGhpcyBkb29yYmVsbCB3b3JrcyB0aGVuLCB5ZXMgaXQgY2FuIG9ubHkgZG8KPiA+ID4g YSBkZW5pYWwgb2Ygc2VydmljZSBpIGd1ZXNzLiBJc3N1ZSBpIGhhdmUgd2l0aCBkb29yYmVsbCBp cyB0aGF0Cj4gPiA+IGkgaGF2ZSBzZWVuIDEwIGRpZmZlcmVudHMgaW1wbGVtZW50YXRpb25zIGlu IDEwIGRpZmZlcmVudHMgaHcKPiA+ID4gYW5kIGVhY2ggYXJlIGRpZmZlcmVudCBhcyB0byB3aGF0 IHJpbmdpbmcgb3IgdmFsdWUgd3JpdHRlbiB0byB0aGUKPiA+ID4gZG9vcmJlbGwgZG9lcy4gSXQg aXMgcGFpbmZ1bGwgdG8gdHJhY2sgd2hhdCBpcyB3aGF0IGZvciBlYWNoIGh3Lgo+ID4gPiAKPiA+ IAo+ID4gSW4gb3VyIGltcGxlbWVudGF0aW9uLCBkb29yYmVsbCBpcyBzaW1wbHkgYSBub3RpZmlj YXRpb24sIGp1c3QgbGlrZSBhbiBpbnRlcnJ1cHQKPiA+IHRvIHRoZSBhY2NlbGVyYXRvci4gVGhl IGNvbW1hbmQgaXMgYWxsIGFib3V0IHdoYXQncyBpbiB0aGUgcXVldWUuCj4gPiAKPiA+IEkgYWdy ZWUgdGhhdCB0aGVyZSBpcyBubyBzaW1wbGUgYW5kIHN0YW5kYXJkIHdheSB0byB0cmFjayB0aGUg c2hhcmVkIElPIHNwYWNlLgo+ID4gQnV0IEkgdGhpbmsgd2UgaGF2ZSB0byB0cnVzdCB0aGUgZHJp dmVyIGluIHNvbWUgd2F5LiBJZiB0aGUgZHJpdmVyIGlzIG1hbGljaW91cywKPiA+IGV2ZW4gYSBz aW1wbGUgaW9jdGwgY2FuIGJlY29tZSBhbiBhdHRhY2suCj4gCj4gVHJ1c3Rpbmcga2VybmVsIHNw YWNlIGRyaXZlciBpcyBmaW5lLCB0cnVzdGluZyB1c2VyIHNwYWNlIGRyaXZlciBpcwo+IG5vdCBp biBteSB2aWV3LiBBRkFJQ1QgZXZlcnkgZHJpdmVyIGRldmVsb3BlciBzbyBmYXIgYWx3YXlzIG1h ZGUKPiBzdXJlIHRoYXQgc29tZW9uZSBjb3VsZCBub3QgYWJ1c2UgaXRzIGRldmljZSB0byBkbyBo YXJtZnVsbCB0aGluZyB0bwo+IG90aGVyIHByb2Nlc3MuCj4gCgpGdWxseSBhZ3JlZS4gVGhhdCBp cyB3aHkgdGhpcyBkcml2ZXIgc2hhcmVzIG9ubHkgdGhlIGRvb3JiZWxsIHNwYWNlLiBUaGVyZSBp cwpvbmx5IHRoZSBkb29yYmVsbCBpcyBzaGFyZWQgaW4gdGhlIHdob2xlIHBhZ2UsIG5vdGhpbmcg ZWxzZS4KCk1heWJlIHlvdSBhcmUgY29uY2VybmluZyB0aGUgdXNlciBkcml2ZXIgd2lsbCBnaXZl IG1hbGljaW91cyBjb21tYW5kIHRvIHRoZQpoYXJkd2FyZT8gQnV0IHRoZXNlIGNvbW1hbmRzIGNh bm5vdCBpbmZsdWVuY2UgdGhlIG90aGVyIHByb2Nlc3MuIElmIHdlIGNhbiB0cnVzdAp0aGUgaGFy ZHdhcmUgZGVzaWduLCB0aGUgcHJvY2VzcyBjYW5ub3QgZG8gYW55IGhhcm0uCgo+IAo+ID4gPiA+ ID4gPiBNeSBtb3JlIGdlbmVyYWwgcXVlc3Rpb24gaXMgZG8gd2Ugd2FudCB0byBncm93IFZGSU8g dG8gYmVjb21lCj4gPiA+ID4gPiA+IGEgbW9yZSBnZW5lcmljIGRldmljZSBkcml2ZXIgQVBJLiBU aGlzIHBhdGNoc2V0IGFkZHMgYSBjb21tYW5kCj4gPiA+ID4gPiA+IHF1ZXVlIGNvbmNlcHQgdG8g aXQgKGkgZG9uJ3QgdGhpbmsgaXQgZXhpc3QgdG9kYXkgYnV0IGkgaGF2ZQo+ID4gPiA+ID4gPiBu b3QgZm9sbG93IFZGSU8gY2xvc2VseSkuCj4gPiA+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IFRo ZSB0aGluZyBpcywgVkZJTyBpcyB0aGUgb25seSBwbGFjZSB0byBzdXBwb3J0IERNQSBmcm9tIHVz ZXIgbGFuZC4gSWYgd2UgZG9uJ3QKPiA+ID4gPiBwdXQgaXQgaGVyZSwgd2UgaGF2ZSB0byBjcmVh dGUgYW5vdGhlciBzaW1pbGFyIGZhY2lsaXR5IHRvIHN1cHBvcnQgdGhlIHNhbWUuCj4gPiA+IAo+ ID4gPiBObyBpdCBpcyBub3QsIG5ldHdvcmsgZGV2aWNlLCBHUFUsIGJsb2NrIGRldmljZSwgLi4u IHRoZXkgYWxsIGRvCj4gPiA+IHN1cHBvcnQgRE1BLiBUaGUgcG9pbnQgaSBhbSB0cnlpbmcgdG8g bWFrZSBoZXJlIGlzIHRoYXQgZXZlbiBpbgo+ID4gCj4gPiBTb3JyeSwgd2FpdCBhIG1pbnV0ZSwg YXJlIHdlIHRhbGtpbmcgdGhlIHNhbWUgdGhpbmc/IEkgbWVhbnQgIkRNQSBmcm9tIHVzZXIKPiA+ IGxhbmQiLCBub3QgIkRNQSBmcm9tIGtlcm5lbCBkcml2ZXIiLiBUbyBkbyB0aGF0IHdlIGhhdmUg dG8gbWFuaXB1bGF0ZSB0aGUKPiA+IElPTU1VKFVuaXQpLiBJIHRoaW5rIGl0IGNhbiBvbmx5IGJl IGRvbmUgYnkgZGVmYXVsdF9kb21haW4gb3IgdmZpbyBkb21haW4uIE9yCj4gPiB0aGUgdXNlciBz cGFjZSBoYXZlIHRvIGRpcmVjdGx5IGFjY2VzcyB0aGUgSU9NTVUuCj4gCj4gR1BVIGRvIERNQSBp biB0aGUgc2Vuc2UgdGhhdCB5b3UgcGFzcyB0byB0aGUga2VybmVsIGEgdmFsaWQKPiB2aXJ0dWFs IGFkZHJlc3MgKGtlcm5lbCBkcml2ZXIgZG8gYWxsIHRoZSBwcm9wZXIgY2hlY2spIGFuZAo+IHRo ZW4geW91IGNhbiB1c2UgdGhlIEdQVSB0byBjb3B5IGZyb20gb3IgdG8gdGhhdCByYW5nZSBvZgo+ IHZpcnR1YWwgYWRkcmVzcy4gRXhhY3RseSBob3cgeW91IHdhbnQgdG8gdXNlIHRoaXMgY29tcHJl c3Npb24KPiBlbmdpbmUuIEl0IGRvZXMgbm90IHJlbHkgb24gU1ZNIGJ1dCBTVk0gZ29pbmcgZm9y d2FyZCB3b3VsZAo+IHN0aWxsIGJlIHRoZSBwcmVmZXJlZCBvcHRpb24uCj4gCgpObywgU1ZNIGlz IG5vdCB0aGUgcmVhc29uIHdoeSB3ZSByZWx5IG9uIEplYW4ncyBTVk0oU1ZBKSBzZXJpZXMuIFdl IHJlbHkgb24KSmVhbidzIHNlcmllcyBiZWNhdXNlIG9mIG11bHRpLXByb2Nlc3MgKFBBU0lEIG9y IHN1YnN0cmVhbSBJRCkgc3VwcG9ydC4KCkJ1dCBvZiBjb3VzZSwgV2FycERyaXZlIGNhbiBzdGls bCBiZW5lZml0IGZyb20gdGhlIFNWTSBmZWF0dXJlLgoKPiAKPiA+ID4geW91ciBtZWNoYW5pc21z IHRoZSB1c2Vyc3BhY2UgbXVzdCBoYXZlIGEgc3BlY2lmaWMgdXNlcnNwYWNlCj4gPiA+IGRyaXZl cnMgZm9yIGVhY2ggaGFyZHdhcmUgYW5kIHRodXMgdGhlcmUgYXJlIHZpcnR1YWxseSBubwo+ID4g PiBkaWZmZXJlbmNlcyBiZXR3ZWVuIGhhdmluZyB0aGlzIHVzZXJzcGFjZSBkcml2ZXIgb3BlbiBh IGRldmljZQo+ID4gPiBmaWxlIGluIHZmaW8gb3Igc29tZXdoZXJlIGVsc2UgaW4gdGhlIGRldmlj ZSBmaWxlc3lzdGVtLiBUaGlzIGlzCj4gPiA+IGp1c3QgYSBkaWZmZXJlbnQgcGF0aC4KPiA+ID4g Cj4gPiAKPiA+IFRoZSBiYXNpYyBwcm9ibGVtIFdhcnBEcml2ZSB3YW50IHRvIHNvbHZlIGl0IHRv IGF2b2lkIHN5c2NhbGwuIFRoaXMgaXMgaW1wb3J0YW50Cj4gPiB0byBhY2NlbGVyYXRvcnMuIFdl IGhhdmUgc29tZSBkYXRhIGhlcmU6Cj4gPiBodHRwczovL3d3dy5zbGlkZXNoYXJlLm5ldC9saW5h cm9vcmcvcHJvZ3Jlc3MtYW5kLWRlbW9uc3RyYXRpb24tb2Ytd3JhcGRyaXZlLWEtYWNjZWxlcmF0 b3ItZnJhbWV3b3JrLXNmbzE3MzE3Cj4gPiAKPiA+IChzZWUgcGFnZSAzKQo+ID4gCj4gPiBUaGUg cGVyZm9ybWFuY2UgaXMgZGlmZmVyZW50IG9uIHVzaW5nIGtlcm5lbCBhbmQgdXNlciBkcml2ZXJz Lgo+IAo+IFllcyBhbmQgZXhhbXBsZSBpIHBvaW50IHRvIGlzIGV4YWN0bHkgdGhhdC4gWW91IGhh dmUgYSBvbmUgdGltZSBzZXR1cAo+IGNvc3QgKGNyZWF0aW5nIGNvbW1hbmQgYnVmZmVyIGJpbmRp bmcgUEFTSUQgd2l0aCBjb21tYW5kIGJ1ZmZlciBhbmQKPiBjb3VwbGUgb3RoZXIgc2V0dXAgc3Rl cHMpLiBUaGVuIHVzZXJzcGFjZSBubyBsb25nZXIgaGF2ZSB0byBkbyBhbnkKPiBpb2N0bCB0byBz Y2hlZHVsZSB3b3JrIG9uIHRoZSBHUFUuIEl0IGlzIGFsbCBkb3duIGZyb20gdXNlcnNwYWNlIGFu ZAo+IGl0IHVzZSBhIGRvb3JiZWxsIHRvIG5vdGlmeSBoYXJkd2FyZSB3aGVuIGl0IHNob3VsZCBn byBsb29rIGF0IGNvbW1hbmQKPiBidWZmZXIgZm9yIG5ldyB0aGluZyB0byBleGVjdXRlLgo+IAo+ IE15IHBvaW50IHN0YW5kcyBvbiB0aGF0LiBZb3UgaGF2ZSBleGlzdGluZyBkcml2ZXIgYWxyZWFk eSBkb2luZyBzbwo+IHdpdGggbm8gbmV3IGZyYW1ld29yayBhbmQgaW4geW91ciBzY2hlbWUgeW91 IG5lZWQgYSB1c2Vyc3BhY2UgZHJpdmVyLgo+IFNvIGkgZG8gbm90IHNlZSB0aGUgdmFsdWUgYWRk LCB1c2luZyBvbmUgcGF0aCBvciB0aGUgb3RoZXIgaW4gdGhlCj4gdXNlcnNwYWNlIGRyaXZlciBp cyBsaXR0ZXJhbHkgb25lIGxpbmUgdG8gY2hhbmdlLgo+IAoKU29ycnksIEknZCBnb3QgY29uZnVz ZSBoZXJlLiBJIHBhcnRpYWxseSBhZ3JlZSB0aGF0IHRoZSB1c2VyIGRyaXZlciBpcwpyZWR1bmRh bmNlIG9mIGtlcm5lbCBkcml2ZXIuIChCdXQgZm9yIFdhcnBEcml2ZSwgdGhlIGtlcm5lbCBkcml2 ZXIgaXMgYSBmdWxsCmRyaXZlciBpbmNsdWRlIGFsbCBwcmVwYXJhdGlvbiBhbmQgc2V0dXAgc3R1 ZmYgZm9yIHRoZSBoYXJkd2FyZSwgdGhlIHVzZXIgZHJpdmVyCmlzIHNpbXBseSB0byBzZW5kIHJl cXVlc3QgYW5kIHJlY2VpdmUgYW5zd2VyKS4gWWVzLCBpdCBpcyBqdXN0IGEgY2hvaWNlIG9mIHBh dGguCkJ1dCB0aGUgdXNlciBwYXRoIGlzIGZhc3RlciBpZiB0aGUgcmVxdWVzdCBjb21lIGZyb20g dXNlIHNwYWNlLiBBbmQgdG8gZG8gdGhhdCwKd2UgbmVlZCB1c2VyIGxhbmQgRE1BIHN1cHBvcnQu IFRoZW4gd2h5IGlzIGl0IGludmFsdWFibGUgdG8gbGV0IFZGSU8gaW52b2x2ZWQ/Cgo+IAo+ID4g QW5kIHdlIGFsc28gYmVsaWV2ZSB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlIGNhbiBiZWNvbWUgc3Rh bmRhcmQgYWZ0ZXIgc29tZXRpbWUuCj4gPiBTb21lIGNvbXBhbmllcyBoYXZlIHN0YXJ0ZWQgdG8g ZG8gdGhpcyAoc3VjaCBBUk0ncyBSZXZlcmUpLiBCdXQgYmVmb3JlIHRoYXQsIHdlCj4gPiBzaG91 bGQgaGF2ZSBhIHNvZnR3YXJlIGNoYW5uZWwgZm9yIGl0Lgo+IAo+IEkgaG9wZSBpdCBkb2VzLCBi dXQgcmlnaHQgbm93IGZvciBldmVyeSBzaW5nbGUgcGllY2Ugb2YgaGFyZHdhcmUgeW91Cj4gd2ls bCBuZWVkIGEgc3BlY2lmaWMgZHJpdmVyIChpIGFtIGlnbm9yaW5nIGJhY2t3YXJkIGNvbXBhdGli bGUgaGFyZHdhcmUKPiBldm9sdXRpb24gYXMgdGhpcyBpcyBhIHRoaW5nIHRoYXQgZG8gZXhpc3Qp Lgo+IAo+IEV2ZW4gaWYgZG93biB0aGUgcm9hZCBmb3IgZXZlcnkgY2xhc3Mgb2YgaGFyZHdhcmUg eW91IGNhbiB1c2UgdGhlIHNhbWUKPiBkcml2ZXIsIGkgYW0gbm90IHN1cmUgd2hhdCB0aGUgdmFs dWUgYWRkIGlzIHRvIGRvIGl0IGluc2lkZSBWRklPIHZlcnN1cwo+IGEgY2xhc3Mgb2YgZGV2aWNl IGRyaXZlciAobGlrZSBVU0IsIFBDSUUsIERSTSBha2EgR1BVLCAuLi4pIGllIHlvdSB3b3VsZAo+ IGhhdmUgYSBjb21wcmVzc2lvbiBjbGFzcyAoL2Rldi9jb21wcmVzcy8qKSBhIGVuY3J5cHRpb24g b25lLCAuLi4KPiAKPgo+ID4gPiBTbyB0aGlzIGlzIHdoeSBpIGRvIG5vdCBzZWUgYW55IGJlbmVm aXQgdG8gaGF2aW5nIGFsbCBkcml2ZXJzIHdpdGgKPiA+ID4gU1ZNIChjYW4gd2UgcGxlYXNlIHVz ZSBTVk0gYW5kIG5vdCBTVkEgYXMgU1ZNIGlzIHdoYXQgaGF2ZSBiZWVuIHVzZQo+ID4gPiBpbiBt b3JlIHBsYWNlcyBzbyBmYXIpLgo+ID4gPiAKPiA+IAo+ID4gUGVyc29uYWxseSwgd2UgZG9uJ3Qg Y2FyZSB3aGF0IG5hbWUgdG8gYmUgdXNlZC4gSSB1c2VkIFNWTSB3aGVuIEkgc3RhcnQgdGhpcwo+ ID4gd29yay4gQW5kIHRoZW4gSmVhbiBzYWlkIFNWTSBoYWQgYmVlbiB1c2VkIGJ5IEFNRCBhcyBT ZWN1cmUgVmlydHVhbCBNYWNoaW5lLiBTbwo+ID4gaGUgY2FsbGVkIGl0IFNWQS4gQW5kIG5vdy4u LiB3aG8gc2hvdWxkIEkgZm9sbG93PyA6KQo+IAo+IEkgdGhpbmsgSW50ZWwgY2FsbCBpdCBTVk0g dG9vLCBpIGRvIG5vdCBoYXZlIGFueSBzdHJvbmcgcHJlZmVyZW5jZQo+IGJlc2lkZSBoYXZlIG9u bHkgb25lIHRvIHJlbWVtYmVyIDopCgpPSy4gVGhlbiBsZXQncyBjYWxsIGl0IFNWTSBmb3Igbm93 LgoKPiAKPiBDaGVlcnMsCj4gSsOpcsO0bWUKCi0tIAoJCQktS2VubmV0aChIaXNpbGljb24pCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQrmnKzpgq7ku7blj4rlhbbpmYTku7blkKvmnInljY7kuLrl hazlj7jnmoTkv53lr4bkv6Hmga/vvIzku4XpmZDkuo7lj5HpgIHnu5nkuIrpnaLlnLDlnYDkuK3l iJflh7rnmoTkuKrkurrmiJbnvqTnu4TjgILnpoEK5q2i5Lu75L2V5YW25LuW5Lq65Lul5Lu75L2V 5b2i5byP5L2/55So77yI5YyF5ous5L2G5LiN6ZmQ5LqO5YWo6YOo5oiW6YOo5YiG5Zyw5rOE6Zyy 44CB5aSN5Yi244CB5oiW5pWj5Y+R77yJ5pys6YKu5Lu25LitCueahOS/oeaBr+OAguWmguaenOaC qOmUmeaUtuS6huacrOmCruS7tu+8jOivt+aCqOeri+WNs+eUteivneaIlumCruS7tumAmuefpeWP keS7tuS6uuW5tuWIoOmZpOacrOmCruS7tu+8gQpUaGlzIGUtbWFpbCBhbmQgaXRzIGF0dGFjaG1l bnRzIGNvbnRhaW4gY29uZmlkZW50aWFsIGluZm9ybWF0aW9uIGZyb20gSFVBV0VJLAp3aGljaCBp cyBpbnRlbmRlZCBvbmx5IGZvciB0aGUgcGVyc29uIG9yIGVudGl0eSB3aG9zZSBhZGRyZXNzIGlz IGxpc3RlZCBhYm92ZS4KQW55IHVzZSBvZiB0aGUgCmluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJl aW4gaW4gYW55IHdheSAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8sIHRvdGFsIG9yCnBh cnRpYWwgZGlzY2xvc3VyZSwgcmVwcm9kdWN0aW9uLCBvciBkaXNzZW1pbmF0aW9uKSBieSBwZXJz b25zIG90aGVyIHRoYW4gdGhlCmludGVuZGVkIApyZWNpcGllbnQocykgaXMgcHJvaGliaXRlZC4g SWYgeW91IHJlY2VpdmUgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkKdGhlIHNl bmRlciBieSBwaG9uZSBvciBlbWFpbCBpbW1lZGlhdGVseSBhbmQgZGVsZXRlIGl0IQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaW9tbXUgbWFpbGluZyBs aXN0CmlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhm b3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11