From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: Ideas Re: [PATCH v14 1/2] vmx: VT-d posted-interrupt core logic handling Date: Tue, 8 Mar 2016 18:38:54 +0000 Message-ID: <56DF1C3E.1070101@citrix.com> References: <1456714816-3876-1-git-send-email-feng.wu@intel.com> <1456714816-3876-2-git-send-email-feng.wu@intel.com> <20160304220031.GA28111@char.us.oracle.com> <20160307155304.GD5402@localhost.localdomain> <56DEBF4B.7060606@citrix.com> <56DF00D902000078000DA7C1@prv-mh.provo.novell.com> <56DF066B.3090106@citrix.com> <56DF195902000078000DA8C1@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56DF195902000078000DA8C1@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich , George Dunlap , Feng Wu Cc: Kevin Tian , Keir Fraser , Andrew Cooper , Dario Faggioli , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org T24gMDgvMDMvMTYgMTc6MjYsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+IE9uIDA4LjAzLjE2IGF0 IDE4OjA1LCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPiB3cm90ZToKPj4gT24gMDgvMDMvMTYg MTU6NDIsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+Pj4gT24gMDguMDMuMTYgYXQgMTU6NDIsIDxH ZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+IHdyb3RlOgo+Pj4+IE9uIFR1ZSwgTWFyIDgsIDIw MTYgYXQgMToxMCBQTSwgV3UsIEZlbmcgPGZlbmcud3VAaW50ZWwuY29tPiB3cm90ZToKPj4+Pj4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4+PiBGcm9tOiBHZW9yZ2UgRHVubGFwIFtt YWlsdG86Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tXQo+Pj4+Pj4KPj4+Pj4+IDIuIFRyeSB0byB0 ZXN0IGVuZ2luZWVyZWQgc2l0dWF0aW9ucyB3aGVyZSB3ZSBleHBlY3QgdGhpcyB0byBiZSBhCj4+ Pj4+PiBwcm9ibGVtLCB0byBzZWUgaG93IGJpZyBvZiBhIHByb2JsZW0gaXQgaXMgKHByb3Zpbmcg dGhlIHRoZW9yeSB0byBiZQo+Pj4+Pj4gYWNjdXJhdGUgb3IgaW5hY2N1cmF0ZSBpbiB0aGlzIGNh c2UpCj4+Pj4+Cj4+Pj4+IE1heWJlIHdlIGNhbiBydW4gYSBTTVAgZ3Vlc3Qgd2l0aCBhbGwgdGhl IHZjcHVzIHBpbm5lZCB0byBhIGRlZGljYXRlZAo+Pj4+PiBwQ1BVLCB3ZSBjYW4gcnVuIHNvbWUg YmVuY2htYXJrIGluIHRoZSBndWVzdCB3aXRoIFZULWQgUEkgYW5kIHdpdGhvdXQKPj4+Pj4gVlQt ZCBQSSwgdGhlbiBzZWUgdGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSB0 d28gc2NlYW5yaW9zLgo+Pj4+Cj4+Pj4gVGhpcyB3b3VsZCBnaXZlIHVzIGFuIGlkZWEgd2hhdCB0 aGUgd29yc3QtY2FzZSBzY2VuYXJpbyB3b3VsZCBiZS4KPj4+Cj4+PiBIb3cgd291bGQgYSBzaW5n bGUgVk0gZXZlciBnaXZlIHVzIGFuIGlkZWEgYWJvdXQgdGhlIHdvcnN0Cj4+PiBjYXNlPyBTb21l dGhpbmcgZ2V0dGluZyBjbG9zZSB0byB3b3JzdCBjYXNlIGlzIGEgdG9uIG9mIHNpbmdsZQo+Pj4g dkNQVSBndWVzdHMgYWxsIHRlbXBvcmFyaWx5IHBpbm5lZCB0byBvbmUgYW5kIHRoZSBzYW1lIHBD UFUKPj4+IChjb3VsZCBiZSBtdWx0aS12Q1BVIG9uZXMsIGJ1dCB0aGUgbW9yZSB2Q1BVLXMgdGhl IG1vcmUKPj4+IGFydGlmaWNpYWwgdGhpcyBwaW5uaW5nIHdvdWxkIGJlY29tZSkgcmlnaHQgYmVm b3JlIHRoZXkgZ28gaW50bwo+Pj4gYmxvY2tlZCBzdGF0ZSAoaS5lLiB0aHJvdWdoIG9uZSBvZiB0 aGUgdHdvIGNhbGxlcnMgb2YKPj4+IGFyY2hfdmNwdV9ibG9jaygpKSwgdGhlIHBpbm5pbmcgcmVt b3ZlZCB3aGlsZSBibG9ja2VkLCBhbmQKPj4+IHRoZW4gYWxsIGdldHRpbmcgd29rZW4gYXQgb25j ZS4KPj4KPj4gV2h5IHdvdWxkIHJlbW92aW5nIHRoZSBwaW5uaW5nIGJlIGltcG9ydGFudD8KPiAK PiBJdCdzIG5vdCBpbXBvcnRhbnQgYnkgaXRzZWxmLCBvdGhlciB0aGFuIHRvIGF2b2lkIGFsbCB2 Q1BVLXMgdGhlbgo+IHdha2luZyB1cCBvbiB0aGUgb25lIHBDUFUuCj4gCj4+IEFuZCBJIGd1ZXNz IGl0J3MgYWN0dWFsbHkgdGhlIGNhc2UgdGhhdCBpdCBkb2Vzbid0IG5lZWQgYWxsIFZNcyB0bwo+ PiBhY3R1YWxseSBiZSAqcmVjZWl2aW5nKiBpbnRlcnJ1cHRzOyBpdCBqdXN0IHJlcXVpcmVzIHRo ZW0gdG8gYmUKPj4gKmNhcGFibGUqIG9mIHJlY2VpdmluZyBpbnRlcnJ1cHRzLCBmb3IgdGhlcmUg dG8gYmUgYSBsb25nIGNoYWluIGFsbAo+PiBibG9ja2VkIG9uIHRoZSBzYW1lIHBoeXNpY2FsIGNw dS4KPiAKPiBZZXMuCj4gCj4+Pj4gIEJ1dAo+Pj4+IHBpbm5pbmcgYWxsIHZjcHVzIHRvIGEgc2lu Z2xlIHBjcHUgaXNuJ3QgcmVhbGx5IGEgc2Vuc2libGUgdXNlIGNhc2Ugd2UKPj4+PiB3YW50IHRv IHN1cHBvcnQgLS0gaWYgeW91IGhhdmUgdG8gZG8gc29tZXRoaW5nIHN0dXBpZCB0byBnZXQgYQo+ Pj4+IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24sIHRoZW4gSSBhcyBmYXIgYXMgSSdtIGNvbmNlcm5l ZCBpdCdzIG5vdCBhCj4+Pj4gcHJvYmxlbS4KPj4+Pgo+Pj4+IE9yIHRvIHB1dCBpdCBhIGRpZmZl cmVudCB3YXk6IElmIHdlIHBpbiAxMCB2Y3B1cyB0byBhIHNpbmdsZSBwY3B1IGFuZAo+Pj4+IHRo ZW4gcG91bmQgdGhlbSBhbGwgd2l0aCBwb3N0ZWQgaW50ZXJydXB0cywgYW5kIHRoZXJlIGlzICpu byoKPj4+PiBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLCB0aGVuIHRoYXQgd2ls bCBjb25jbHVzaXZlbHkgcHJvdmUKPj4+PiB0aGF0IHRoZSB0aGVvcmV0aWNhbCBwZXJmb3JtYW5j ZSByZWdyZXNzaW9uIGlzIG9mIG5vIGNvbmNlcm4sIGFuZCB3ZQo+Pj4+IGNhbiBlbmFibGUgUEkg YnkgZGVmYXVsdC4KPj4+Cj4+PiBUaGUgcG9pbnQgaXNuJ3QgdGhlIHBpbm5pbmcuIFRoZSBwb2lu dCBpcyB3aGF0IHBDUFUgdGhleSdyZSBvbiB3aGVuCj4+PiBnb2luZyB0byBzbGVlcC4gQW5kIHRo YXQgY291bGQgaW52b2x2ZSBxdWl0ZSBhIGZldyBtb3JlIHRoYW4ganVzdAo+Pj4gMTAgdkNQVS1z LCBwcm92aWRlZCB0aGV5IGFsbCBzbGVlcCBsb25nIGVub3VnaC4KPj4+Cj4+PiBBbmQgdGhlICJ0 aGVvcmV0aWNhbCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGlzIG9mIG5vIGNvbmNlcm4iIGlzCj4+ PiBhbHNvIG5vdCBhIHByb3BlciB3YXkgb2YgbG9va2luZyBhdCBpdCwgSSB3b3VsZCBzYXk6IEV2 ZW4gaWYgc3VjaAo+Pj4gYSBzaXR1YXRpb24gd291bGQgaGFwcGVuIGV4dHJlbWVseSByYXJlbHks IGlmIGl0IGNhbiBoYXBwZW4gYXQgYWxsLAo+Pj4gaXQgd291bGQgc3RpbGwgYmUgYSBzZWN1cml0 eSBpc3N1ZS4KPj4KPj4gV2hhdCBJJ20gdHJ5aW5nIHRvIGdldCBhdCBpcyAtLSBleGFjdGx5IHdo YXQgc2l0dWF0aW9uPyAgV2hhdCBhY3R1YWxseQo+PiBjb25zdGl0dXRlcyBhIHByb2JsZW1hdGlj IGludGVycnVwdCBsYXRlbmN5IC8gaW50ZXJydXB0IHByb2Nlc3NpbmcKPj4gd29ya2xvYWQsIGhv dyBtYW55IHZjcHVzIG11c3QgYmUgc2xlZXBpbmcgb24gdGhlIHNhbWUgcGNwdSB0byBhY3R1YWxs eQo+PiByaXNrIHRyaWdnZXJpbmcgdGhhdCBsYXRlbmN5IC8gd29ya2xvYWQsIGFuZCBob3cgZmVh c2libGUgaXMgaXQgdGhhdAo+PiBzdWNoIGEgc2l0dWF0aW9uIHdvdWxkIGFyaXNlIGluIGEgcmVh c29uYWJsZSBzY2VuYXJpbz8KPj4KPj4gSWYgMjAwdXMgaXMgdG9vIGxvbmcsIGFuZCBpdCBvbmx5 IHRha2VzIDMgc2xlZXBpbmcgdmNwdXMgdG8gZ2V0IHRoZXJlLAo+PiB0aGVuIHllcywgdGhlcmUg aXMgYSBnZW51aW5lIHByb2JsZW0gd2UgbmVlZCB0byB0cnkgdG8gYWRkcmVzcyBiZWZvcmUgd2UK Pj4gdHVybiBpdCBvbiBieSBkZWZhdWx0LiAgSWYgd2Ugc2F5IHRoYXQgdXAgdG8gNTAwdXMgaXMg dG9sZXJhYmxlLCBhbmQgaXQKPj4gdGFrZXMgMTAwIHNsZWVwaW5nIHZjcHVzIHRvIHJlYWNoIHRo YXQgbGF0ZW5jeSwgdGhlbiB0aGlzIGlzIHNvbWV0aGluZyBJCj4+IGRvbid0IHJlYWxseSB0aGlu ayB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0Lgo+Pgo+PiAiSSB0aGluayBzb21ldGhpbmcgYmFkIG1h eSBoYXBwZW4iIGlzIGEgcmVhbGx5IGRpZmZpY3VsdCB0byB3b3JrIHdpdGguCj4gCj4gSSB1bmRl cnN0YW5kIHRoYXQsIGJ1dCBjb21pbmcgdXAgd2l0aCBwcm9wZXIgbnVtYmVycyBoZXJlIGlzbid0 Cj4gZWFzeS4gRmFjdCBpcyAtIGl0IGNhbm5vdCBiZSBleGNsdWRlZCB0aGF0IG9uIGEgc3lzdGVt IHdpdGgKPiBodW5kcmVkcyBvZiBwQ1BVLXMgYW5kIHRob3VzYW5kcyBvciB2Q1BVLXMsIHRoYXQg YWxsIHZDUFUtcwo+IHdvdWxkIGF0IHNvbWUgcG9pbnQgcGlsZSB1cCBvbiBvbmUgcENQVSdzIGxp c3QuCgpTbyBpdCdzIGFscmVhZHkgdGhlIGNhc2UgdGhhdCB3aGVuIGEgdmNwdSBpcyB3b2tlbiwg aXQgaXMgaW5zZXJ0ZWQgaW50bwp0aGUgcnVucXVldWUgYnkgcHJpb3JpdHkgb3JkZXIsIGJvdGgg Zm9yIGNyZWRpdDEgYW5kIGNyZWRpdDI7IGFuZCB0aGlzCmlzIGFuIGluc2VydGlvbiBzb3J0LCBz byB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMgdG8gZG8gdGhlIGluc2VydCBpcwpleHBlY3Rl ZCB0byBiZSB0aGUgdGltZSBpdCB0YWtlcyB0byB0cmF2ZXJzZSBoYWxmIG9mIHRoZSBsaXN0LiAg VGhpcwppc24ndCBhbiBleGFjdCBhbmFsb2csIGJlY2F1c2UgaW4gdGhhdCBjYXNlIGl0J3MgdGhl IG51bWJlciBvZgoqcnVubmFibGUqIHZjcHVzLCBub3QgdGhlIG51bWJlciBvZiAqYmxvY2tlZCog dmNwdXM7IGJ1dCBpdCBkZW1vbnN0cmF0ZXMKdGhlIHBvaW50IHRoYXQgMSkgd2UgYWxyZWFkeSBo YXZlIGNvZGUgdGhhdCBhc3N1bWVzIHRoYXQgd2Fsa2luZyBhIGxpc3QKb2YgdmNwdXMgcGVyIHBj cHUgaXMgYSByZWFzb25hYmx5IGJvdW5kZWQgdGhpbmcgMikgd2UgaGF2ZSB5ZWFycyBvZiBubwpt YWpvciBwZXJmb3JtYW5jZSBwcm9ibGVtcyByZXBvcnRlZCB0byBiYWNrIHRoYXQgYXNzdW1wdGlv biB1cC4KCkkgZ3Vlc3MgdGhlIHNsaWdodCBkaWZmZXJlbmNlIHRoZXJlIGlzIHRoYXQgaXQncyBh bHJlYWR5IHdlbGwtdW5kZXJzdG9vZAp0aGF0IHRvbyBtYW55ICphY3RpdmUqIHZjcHVzIHdpbGwg b3ZlcmxvYWQgeW91ciBzeXN0ZW0gYW5kIHNsb3cgdGhpbmdzCmRvd247IGluIHRoZSBjYXNlIG9m IHRoZSBwaSB3YWtlLXVwcywgdGhlIHByb2JsZW0gaXMgdGhhdCB0b28gbWFueQoqaW5hY3RpdmUq IHZjcHVzIHdpbGwgb3ZlcmxvYWQgeW91ciBzeXN0ZW0gYW5kIHNsb3cgdGhpbmdzIGRvd24uCgpT dGlsbCAtLSBJIGhhdmUgYSBoYXJkIHRpbWUgY29uc3RydWN0aW5nIGluIG15IG1pbmQgYSBzY2Vu YXJpbyB3aGVyZQpodWdlIG51bWJlcnMgb2YgaWRsZSB2Y3B1cyBmb3Igc29tZSByZWFzb24gZGVj aWRlIHRvIGNvbmdyZWdhdGUgb24gYQpzaW5nbGUgcGNwdS4KClN1cHBvc2Ugd2UgaGFkIDEwMjQg cGNwdXMsIGFuZCAxMDIzIFZNcyBlYWNoIHdpdGggNSB2Y3B1cywgb2Ygd2hpY2ggMQp3YXMgc3Bp bm5pbmcgYXQgMTAwJSBhbmQgdGhlIG90aGVyIDQgd2VyZSBpZGxlLiAgSSdtIG5vdCBzZWVpbmcg YQpzaXR1YXRpb24gd2hlcmUgYW55IG9mIHRoZSBzY2hlZHVsZXJzIHB1dCBhbGwgKDEwMjMqNCkg aWRsZSB2Y3B1cyBvbiBhCnNpbmdsZSBwY3B1LgoKRm9yIHRoZSBjcmVkaXQxIHNjaGVkdWxlciwg SSdtIGJhc2ljYWxseSBwb3NpdGl2ZSB0aGF0IGl0IGNhbid0IGhhcHBlbgpldmVuIG9uY2UsIGV2 ZW4gYnkgY2hhbmNlLiAgWW91J2QgbmV2ZXIgYmUgYWJsZSB0byBhY2NyZXRlIG1vcmUgdGhhbiBh CmRvemVuIHZjcHVzIG9uIHRoYXQgb25lIHBjcHUgYmVmb3JlIHRoZXkgd2VyZSBzdG9sZW4gYXdh eS4KCkZvciB0aGUgY3JlZGl0MiBzY2hlZHVsZXIsIGl0ICptaWdodCogYmUgcG9zc2libGUgdGhh dCBpZiB0aGUgYnVzeSB2Y3B1Cm9uIGVhY2ggVk0gbmV2ZXIgY2hhbmdlcyAod2hpY2ggaXRzZWxm IGlzIHByZXR0eSB1bmxpa2VseSksICphbmQqIHRoZQpzdW0gb2YgdGhlICJsb2FkIiBmb3IgYWxs ICgxMDIzKjQpIGlkbGUgdmNwdXMgd2FzIGxlc3MgdGhhbiAxIChpLmUuLAppZGxlIHZjcHVzIHRv b2sgbGVzcyB0aGFuIDAuMDIlIG9mIHRoZSBjcHUgdGltZSksIHRoZW4geW91ICptaWdodCoKcG9z c2libHkgYWZ0ZXIgYSBsb25nIHRpbWUgZW5kIHVwIGF0IGEgc2l0dWF0aW9uIHdoZXJlIHlvdSBo YWQgYWxsIHZjcHVzCm9uIGEgc2luZ2xlIHBjcHUuICBCdXQgdGhhdCAiYWNjcmV0aW9uIiBwcm9j ZXNzIHdvdWxkIHRha2UgYSB2ZXJ5IGxvbmcKdGltZTsgYW5kIGFzIHNvb24gYXMgYW55IHZjcHUg aGFkIGEgYnJpZWYgInNwaWtlIiBhYm92ZSB0aGUgIjAuMDIlIiwgYQp3aG9sZSBidW5jaCBvZiB0 aGVtIGdldCBtb3ZlZCBzb21ld2hlcmUgZWxzZS4KCkFuZCBpbiBhbnkgY2FzZSwgYXJlIHlvdSBy ZWFsbHkgZ29pbmcgdG8gaGF2ZSAxMDIzIGRldmljZXMgc28gdGhhdCB5b3UKY2FuIGhhbmQgb25l IHRvIGVhY2ggb2YgdGhvc2UgMTAyMyBndWVzdHM/ICBCZWNhdXNlIGl0J3Mgb25seSB2Y3B1cyBv ZgpWTXMgKndoaWNoIGhhdmUgYSBkZXZpY2UgYXNzaWduZWQqIHRoYXQgZW5kIHVwIG9uIHRoZSBi bG9jayBsaXN0LgoKSWYgSSBtYXkgZ28gIm1ldGEiIGZvciBhIG1vbWVudCBoZXJlIC0tIHRoaXMg aXMgZXhhY3RseSB3aGF0IEknbSB0YWxraW5nCmFib3V0IHdpdGggIlNvbWV0aGluZyBiYWQgbWF5 IGhhcHBlbiIgYmVpbmcgZGlmZmljdWx0IHRvIHdvcmsgd2l0aC4KUmF0aGVyIHRoYW4geW91IHNw ZWxsaW5nIG91dCBleGFjdGx5IHRoZSBzaXR1YXRpb24gd2hpY2ggeW91IHRoaW5rIG1heQpoYXBw ZW4sICh3aGljaCBJIGNvdWxkIHRoZW4gZWl0aGVyIGFjY2VwdCBvciByZWZ1dGUgb24gaXRzIG1l cml0cykgKkkqCmFtIG5vdyBzcGVuZGluZyBhIGxvdCBvZiB0aW1lIGFuZCBlZmZvcnQgdHJ5aW5n IHRvIGltYWdpbmUgd2hhdApzaXR1YXRpb25zIHlvdSBtYXkgYmUgdGFsa2luZyBhYm91dCBhbmQg dGhlbiByZWZ1dGluZyB0aGVtIG15c2VsZi4KCklmIHlvdSBoYXZlIGNvbmNlcm5zLCB5b3UgbmVl ZCB0byBtYWtlIHRob3NlIGNvbmNlcm5zIGNvbmNyZXRlLCBvciBhdApsZWFzdCBzZXQgY2xlYXIg Y3JpdGVyaWEgZm9yIGhvdyBzb21lb25lIGNvdWxkIGdvIGFib3V0IGFkZHJlc3NpbmcgeW91cgpj b25jZXJucy4gIEFuZCB5ZXMsIGl0IGlzICp5b3VyKiBqb2IsIGFzIHRoZSBwZXJzb24gZG9pbmcg dGhlIG9iamVjdGluZwooYW5kIGV2ZW4gbW9yZXNvIGFzIHRoZSB4ODYgbWFpbnRhaW5lciksIHRv IG1ha2UgeW91ciBjb25jZXJucyBleHBsaWNpdAphbmQvb3Igc2V0IHRob3NlIGNyaXRlcmlhLCBh bmQgbm90IEZlbmcncyBqb2IgKG9yIGV2ZW4gbXkgam9iKSB0byB0cnkgdG8KZ3Vlc3Mgd2hhdCBp dCBpcyBtaWdodCBtYWtlIHlvdSBoYXBweS4KCj4gSG93IG1hbnkgd291bGQgYmUgdG9sZXJhYmxl IG9uIGEgc2luZ2xlIGxpc3QgZGVwZW5kcyB1cG9uIGhvc3QKPiBjaGFyYWN0ZXJpc3RpY3MsIHNv IGEgZml4ZWQgbnVtYmVyIHdvbid0IGRvIGFueXdheS4gCgpTdXJlLCBidXQgaWYgd2UgY2FuIHJ1 biB0aHJvdWdoIGEgbGlzdCBvZiAxMDAgdmNwdXMgaW4gMjV1cyBvbiBhIHR5cGljYWwKc2VydmVy LCB0aGVuIHdlIGNhbiBiZSBwcmV0dHkgY2VydGFpbiAxMDAgdmNwdXMgd2lsbCBuZXZlciBleGNl ZWQgNTAwdXMKb24gYmFzaWNhbGx5IGFueSBzZXJ2ZXIuCgpPbiB0aGUgb3RoZXIgaGFuZCwgaWYg NTAgdmNwdXMgdGFrZXMgNTAwdXMgb24gd2hhdGV2ZXIgc2VydmVyIEZlbmcgdXNlcwpmb3IgaGlz IHRlc3RzLCB0aGVuIHllcywgd2UgZG9uJ3QgcmVhbGx5IGhhdmUgZW5vdWdoICJzbGFjayIgdG8g YmUgc3VyZQp0aGF0IHdlIHdvbid0IHJ1biBpbnRvIHByb2JsZW1zIGF0IHNvbWUgcG9pbnQuCgpC dXQgYXQgdGhpcyBwb2ludCB3ZSdyZSBqdXN0IHB1bGxpbmcgbnVtYmVycyBvdXQgb2YgdGhlIGFp ciAtLSB3aGVuIHdlCmhhdmUgYWN0dWFsIGRhdGEgd2UgY2FuIG1ha2UgYSBiZXR0ZXIganVkZ2Vt ZW50IGFib3V0IHdoYXQgbWlnaHQgb3IKbWlnaHQgbm90IGJlIGFjY2VwdGFibGUuCgo+IEhlbmNl IEkKPiB0aGluayB0aGUgYmV0dGVyIGFwcHJvYWNoLCBpbnN0ZWFkIG9mIGltcHJvdmluZyBsb29r dXAsIGlzIHRvCj4gZGlzdHJpYnV0ZSB2Q1BVLXMgZXZlbmx5IGFjcm9zcyBsaXN0cy4gV2hpY2gg aW4gdHVybiB3b3VsZCBsaWtlbHkKPiByZXF1aXJlIHRob3NlIGxpc3RzIHRvIG5vIGxvbmdlciBi ZSB0aWVkIHRvIHBDUFUtcywgYW4gYXNwZWN0IEkKPiBoYWQgYWxyZWFkeSBzdWdnZXN0ZWQgZHVy aW5nIHJldmlldy4gQXMgc29vbiBhcyBkaXN0cmlidXRpb24KPiB3b3VsZCBiZSByZWFzb25hYmx5 IGV2ZW4sIHRoZSBzZWN1cml0eSBjb25jZXJuIHdvdWxkIHZhbmlzaDoKPiBTb21lb25lIHBsYWNp bmcgbW9yZSB2Q1BVLXMgb24gYSBob3N0IHRoYW4gdGhhdCBob3N0IGNhbgo+IGhhbmRsZSBpcyBy ZXNwb25zaWJsZSBmb3IgdGhlIGNvbnNlcXVlbmNlcy4gUXVpdGUgY29udHJhcnkgdG8KPiBzb21l b25lIHBsYWNpbmcgbW9yZSB2Q1BVLXMgb24gYSBob3N0IHRoYW4gYSBzaW5nbGUgcENQVSBjYW4K PiByZWFzb25hYmx5IGhhbmRsZSBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlci4KCkkgZG9uJ3QgcmVh bGx5IHVuZGVyc3RhbmQgeW91ciBzdWdnZXN0aW9uLiAgVGhlIFBJIGludGVycnVwdCBpcwpuZWNl c3NhcmlseSB0aWVkIHRvIGEgc3BlY2lmaWMgcGNwdTsgdW5sZXNzIHdlIHN0YXJ0IGhhdmluZyBt dWx0aXBsZSBQSQppbnRlcnJ1cHRzLCB3ZSBvbmx5IGhhdmUgYXMgbWFueSBpbnRlcnJ1cHRzIGFz IHdlIGhhdmUgcGNwdXMsIHJpZ2h0PwpBcmUgeW91IHNheWluZyB0aGF0IHJhdGhlciB0aGFuIHB1 dCB2Y3B1cyBvbiB0aGUgbGlzdCBvZiB0aGUgcGNwdSBpdCdzCnJ1bm5pbmcgb24sIHdlIHNob3Vs ZCBzZXQgdGhlIGludGVycnVwdCB0byB0aGF0IG9mIGFuIGFyYml0cmFyeSBwY3B1CnRoYXQgaGFw cGVucyB0byBoYXZlIHJvb20gb24gaXRzIGxpc3Q/CgogLUdlb3JnZQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK