From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v6 1/4] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Mon, 26 Sep 2016 14:57:58 +0800 Message-ID: <57E8C6F6.3030409@linux.intel.com> References: <1472813240-11011-1-git-send-email-yu.c.zhang@linux.intel.com> <1472813240-11011-2-git-send-email-yu.c.zhang@linux.intel.com> <57D24730.2050904@linux.intel.com> <57D24DFF.3070901@linux.intel.com> <57E3A06E.1020000@linux.intel.com> <57E4007F.7050306@linux.intel.com> <25d252bf-3467-2714-edef-0c79a451df05@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <25d252bf-3467-2714-edef-0c79a451df05@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: George Dunlap Cc: Paul Durrant , "Lv, Zhiyuan" , Jan Beulich , "Xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org CgpPbiA5LzIzLzIwMTYgNjozNSBQTSwgR2VvcmdlIER1bmxhcCB3cm90ZToKPiBPbiAyMi8wOS8x NiAxNzowMiwgWXUgWmhhbmcgd3JvdGU6Cj4+Cj4+IE9uIDkvMjIvMjAxNiA3OjMyIFBNLCBHZW9y Z2UgRHVubGFwIHdyb3RlOgo+Pj4gT24gVGh1LCBTZXAgMjIsIDIwMTYgYXQgMTA6MTIgQU0sIFl1 IFpoYW5nCj4+PiA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Pj4+IE9uIDkv MjEvMjAxNiA5OjA0IFBNLCBHZW9yZ2UgRHVubGFwIHdyb3RlOgo+Pj4+PiBPbiBGcmksIFNlcCA5 LCAyMDE2IGF0IDY6NTEgQU0sIFl1IFpoYW5nIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4K Pj4+Pj4gd3JvdGU6Cj4+Pj4+Pj4gT24gOS8yLzIwMTYgNjo0NyBQTSwgWXUgWmhhbmcgd3JvdGU6 Cj4+Pj4+Pj4+IEEgbmV3IEhWTU9QIC0gSFZNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZl ciwgaXMgYWRkZWQgdG8KPj4+Pj4+Pj4gbGV0IG9uZSBpb3JlcSBzZXJ2ZXIgY2xhaW0vZGlzY2xh aW0gaXRzIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUKPj4+Pj4+Pj4gaGFuZGxpbmcgb2YgZ3Vlc3Qg cGFnZXMgd2l0aCBwMm0gdHlwZSBwMm1faW9yZXFfc2VydmVyLiBVc2Vycwo+Pj4+Pj4+PiBvZiB0 aGlzIEhWTU9QIGNhbiBzcGVjaWZ5IHdoaWNoIGtpbmQgb2Ygb3BlcmF0aW9uIGlzIHN1cHBvc2Vk Cj4+Pj4+Pj4+IHRvIGJlIGVtdWxhdGVkIGluIGEgcGFyYW1ldGVyIG5hbWVkIGZsYWdzLiBDdXJy ZW50bHksIHRoaXMgSFZNT1AKPj4+Pj4+Pj4gb25seSBzdXBwb3J0IHRoZSBlbXVsYXRpb24gb2Yg d3JpdGUgb3BlcmF0aW9ucy4gQW5kIGl0IGNhbiBiZQo+Pj4+Pj4+PiBmdXJ0aGVyIGV4dGVuZGVk IHRvIHN1cHBvcnQgdGhlIGVtdWxhdGlvbiBvZiByZWFkIG9uZXMgaWYgYW4KPj4+Pj4+Pj4gaW9y ZXEgc2VydmVyIGhhcyBzdWNoIHJlcXVpcmVtZW50IGluIHRoZSBmdXR1cmUuCj4+Pj4+Pj4+Cj4+ Pj4+Pj4+IEZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBvbmUgaW9yZXEgc2VydmVyIGZvciB0aGlz IHAybSB0eXBlLCBzbwo+Pj4+Pj4+PiBvbmNlIGFuIGlvcmVxIHNlcnZlciBoYXMgY2xhaW1lZCBp dHMgb3duZXJzaGlwLCBzdWJzZXF1ZW50IGNhbGxzCj4+Pj4+Pj4+IG9mIHRoZSBIVk1PUF9tYXBf bWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIHdpbGwgZmFpbC4gVXNlcnMgY2FuIGFsc28KPj4+Pj4+ Pj4gZGlzY2xhaW0gdGhlIG93bmVyc2hpcCBvZiBndWVzdCByYW0gcGFnZXMgd2l0aCBwMm1faW9y ZXFfc2VydmVyLCBieQo+Pj4+Pj4+PiB0cmlnZ2VyaW5nIHRoaXMgbmV3IEhWTU9QLCB3aXRoIGlv cmVxIHNlcnZlciBpZCBzZXQgdG8gdGhlIGN1cnJlbnQKPj4+Pj4+Pj4gb3duZXIncyBhbmQgZmxh Z3MgcGFyYW1ldGVyIHNldCB0byAwLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBOb3RlIGJvdGggSFZNT1Bf bWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciBhbmQgcDJtX2lvcmVxX3NlcnZlcgo+Pj4+Pj4+ PiBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhWTXMgd2l0aCBIQVAgZW5hYmxlZC4KPj4+Pj4+Pj4K Pj4+Pj4+Pj4gQWxzbyBub3RlIHRoYXQgb25seSBhZnRlciBvbmUgaW9yZXEgc2VydmVyIGNsYWlt cyBpdHMgb3duZXJzaGlwCj4+Pj4+Pj4+IG9mIHAybV9pb3JlcV9zZXJ2ZXIsIHdpbGwgdGhlIHAy bSB0eXBlIGNoYW5nZSB0byBwMm1faW9yZXFfc2VydmVyCj4+Pj4+Pj4+IGJlIGFsbG93ZWQuCj4+ Pj4+Pj4+Cj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50 QGNpdHJpeC5jb20+Cj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFl1IFpoYW5nIDx5dS5jLnpoYW5n QGxpbnV4LmludGVsLmNvbT4KPj4+Pj4+Pj4gQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4u b3JnPgo+Pj4+Pj4+PiAtLS0KPj4+Pj4+Pj4gQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50 QGNpdHJpeC5jb20+Cj4+Pj4+Pj4+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ Cj4+Pj4+Pj4+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ Pj4+Pj4+PiBDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+ Pj4+Pj4+PiBDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgo+Pj4+Pj4+ PiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4+Pj4+Pj4+IENjOiBUaW0g RGVlZ2FuIDx0aW1AeGVuLm9yZz4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gY2hhbmdlcyBpbiB2NjoKPj4+ Pj4+Pj4gICAgICAgLSBDbGFyaWZ5IGxvZ2ljIGluIGh2bWVtdWxfZG9faW8oKS4KPj4+Pj4+Pj4g ICAgICAgLSBVc2UgcmVjdXJzaXZlIGxvY2sgZm9yIGlvcmVxIHNlcnZlciBsb2NrLgo+Pj4+Pj4+ PiAgICAgICAtIFJlbW92ZSBkZWJ1ZyBwcmludCB3aGVuIG1hcHBpbmcgaW9yZXEgc2VydmVyLgo+ Pj4+Pj4+PiAgICAgICAtIENsYXJpZnkgY29kZSBpbiBlcHRfcDJtX3R5cGVfdG9fZmxhZ3MoKSBm b3IgY29uc2lzdGVuY3kuCj4+Pj4+Pj4+ICAgICAgIC0gUmVtb3ZlIGRlZmluaXRpb24gb2YgUDJN X0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MuCj4+Pj4+Pj4+ICAgICAgIC0gQWRkIGNvbW1lbnRz IGZvciBIVk1NRU1faW9yZXFfc2VydmVyIHRvIG5vdGUgb25seSBjaGFuZ2VzCj4+Pj4+Pj4+ICAg ICAgICAgdG8vZnJvbSBIVk1NRU1fcmFtX3J3IGFyZSBwZXJtaXR0ZWQuCj4+Pj4+Pj4+ICAgICAg IC0gQWRkIGRvbWFpbl9wYXVzZS91bnBhdXNlKCkgaW4KPj4+Pj4+Pj4gaHZtX21hcF9tZW1fdHlw ZV90b19pb3JlcV9zZXJ2ZXIoKQo+Pj4+Pj4+PiAgICAgICAgIHRvIGF2b2lkIHRoZSByYWNlIGNv bmRpdGlvbiB3aGVuIGEgdm0gZXhpdCBoYXBwZW5zIG9uIGEKPj4+Pj4+Pj4gd3JpdGUtCj4+Pj4+ Pj4+ICAgICAgICAgcHJvdGVjdGVkIHBhZ2UsIGp1c3QgdG8gZmluZCB0aGUgaW9yZXEgc2VydmVy IGhhcyBiZWVuCj4+Pj4+Pj4+IHVubWFwcGVkCj4+Pj4+Pj4+ICAgICAgICAgYWxyZWFkeS4KPj4+ Pj4+Pj4gICAgICAgLSBJbnRyb2R1Y2UgYSBzZXBlcmF0ZSBwYXRjaCB0byBkZWxheSB0aGUgcmVs ZWFzZSBvZiBwMm0KPj4+Pj4+Pj4gICAgICAgICBsb2NrIHRvIGF2b2lkIHRoZSByYWNlIGNvbmRp dGlvbi4KPj4+Pj4+Pj4gICAgICAgLSBJbnRyb2R1Y2UgYSBzZXBlcmF0ZSBwYXRjaCB0byBoYW5k bGUgdGhlIHJlYWQtbW9kaWZ5LXdyaXRlCj4+Pj4+Pj4+ICAgICAgICAgb3BlcmF0aW9ucyBvbiBh IHdyaXRlIHByb3RlY3RlZCBwYWdlLgo+Pj4+Pj4+Pgo+Pj4+Pj4+IFdoeSBkbyB3ZSBuZWVkIHRv IGRvIHRoaXM/ICBXb24ndCB0aGUgZGVmYXVsdCBjYXNlIGp1c3QgRFRSVCBpZiBpdAo+Pj4+Pj4+ IGZpbmRzCj4+Pj4+Pj4gdGhhdCB0aGUgaW9yZXEgc2VydmVyIGhhcyBiZWVuIHVubWFwcGVkPwo+ Pj4+Pj4gV2VsbCwgcGF0Y2ggNCB3aWxsIGVpdGhlciBtYXJrIHRoZSByZW1haW5pbmcgcDJtX2lv cmVxX3NlcnZlcgo+Pj4+Pj4gZW50cmllcyBhcwo+Pj4+Pj4gInJlY2FsIiBvcgo+Pj4+Pj4gcmVz ZXQgdG8gcDJtX3JhbV9ydyBkaXJlY3RseS4gU28gbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdl IGRvIG5vdAo+Pj4+Pj4gd2lzaAo+Pj4+Pj4gdG8KPj4+Pj4+IHNlZSBhIGVwdCB2aW9sYXRpb24g ZHVlIHRvIGEgcDJtX2lvcmVxX3NlcnZlciBhY2Nlc3MgYWZ0ZXIgdGhlIGlvcmVxCj4+Pj4+PiBz ZXJ2ZXIKPj4+Pj4+IGlzIHVubWFwcGVkLgo+Pj4+Pj4gWWV0IHdpdGhvdXQgdGhpcyBkb21haW5f cGF1c2UvdW5wYXVzZSgpIHBhaXIsIFZNIGFjY2Vzc2VzIG1heQo+Pj4+Pj4gdHJpZ2dlciBhbgo+ Pj4+Pj4gZXB0Cj4+Pj4+PiB2aW9sYXRpb24KPj4+Pj4+IGR1cmluZyB0aGUgaHZtb3AgaHlwZXJj YWxsKGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKSwganVzdCB0bwo+Pj4+Pj4gZmlu ZAo+Pj4+Pj4gdGhlIGlvcmVxCj4+Pj4+PiBzZXJ2ZXIgaXMgTlVMTC4gVGhlbiB3ZSB3b3VsZCBo YXZlIHRvIHByb3ZpZGUgaGFuZGxlcnMgd2hpY2gganVzdAo+Pj4+Pj4gZG8gdGhlCj4+Pj4+PiBj b3B5IHRvL2Zyb20KPj4+Pj4+IGFjdGlvbnMgZm9yIHRoZSBWTS4gVGhpcyBzZWVtcyBhd2t3YXJk IHRvIG1lLgo+Pj4+PiBTbyB0aGUgcmFjZSB5b3UncmUgd29ycmllZCBhYm91dCBpcyB0aGlzOgo+ Pj4+Pgo+Pj4+PiAxLiBHdWVzdCBmYXVsdCBoYXBwZW5zCj4+Pj4+IDIuIGlvcmVxIHNlcnZlciBj YWxscyBtYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLCB1bmhvb2tpbmcKPj4+Pj4gMy4gZ3Vl c3QgIGZpbmRzIG5vIGlvcmVxIHNlcnZlciBwcmVzZW50Cj4+Pj4+Cj4+Pj4+IEkgdGhpbmsgaW4g dGhhdCBjYXNlIHRoZSBlYXNpZXN0IHRoaW5nIHRvIGRvIHdvdWxkIGJlIHRvIHNpbXBseSBhc3N1 bWUKPj4+Pj4gdGhlcmUgd2FzIGEgcmFjZSBhbmQgcmUtZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24u ICBJcyB0aGF0IG5vdCBwb3NzaWJsZQo+Pj4+PiBmb3Igc29tZSByZWFzb24/Cj4+Pj4+Cj4+Pj4+ ICAgICAtR2VvcmdlCj4+Pj4gVGhhbmtzIGZvciB5b3VyIHJlcGx5LCBHZW9yZ2UuIDopCj4+Pj4g VHdvIHJlYXNvbnMgSSdkIGxpa2UgdG8gdXNlIHRoZSBkb21haW5fcGF1c2UvdW5wYXVzZSgpIHRv IGF2b2lkIHRoZSByYWNlCj4+Pj4gY29uZGl0aW9uOgo+Pj4+Cj4+Pj4gMT4gIExpa2UgbXkgcHJl dmlvdXMgZXhwbGFuYXRpb24sIGluIHRoZSByZWFkLW1vZGlmeS13cml0ZSBzY2VuYXJpbywgdGhl Cj4+Pj4gaW9yZXEgc2VydmVyIHdpbGwKPj4+PiBiZSBOVUxMIGZvciB0aGUgcmVhZCBlbXVsYXRp b24uIEJ1dCBpbiBzdWNoIGNhc2UsIGh5cGVydmlzb3Igd2lsbCBub3QKPj4+PiBkaXNjYXJkIHRo aXMgdHJhcCwgaW5zdGVhZAo+Pj4+IGl0IGlzIHN1cHBvc2VkIHRvIGRvIHRoZSBjb3B5IHdvcmsg Zm9yIHRoZSByZWFkIGFjY2Vzcy4gU28gaXQgd291bGQgYmUKPj4+PiBkaWZmaWN1bHQgZm9yIGh5 cGVydmlzb3IKPj4+PiB0byBkZWNpZGUgaWYgdGhlIGlvcmVxIHNlcnZlciB3YXMgZGV0YWNoZWQg ZHVlIHRvIGEgcmFjZSBjb25kaXRpb24sCj4+Pj4gb3IgaWYKPj4+PiB0aGUgaW9yZXEgc2VydmVy IHNob3VsZAo+Pj4+IGJlIGEgTlVMTCBiZWNhdXNlIHdlIGFyZSBlbXVsYXRpbmcgYSByZWFkIG9w ZXJhdGlvbiBmaXJzdCBmb3IgYQo+Pj4+IHJlYWQtbW9kaWZ5LXdyaXRlIGluc3RydWN0aW9uLgo+ Pj4gV291bGRuJ3QgYSBwYXRjaCBsaWtlIHRoZSBhdHRhY2hlZCB3b3JrIChhcHBsaWVkIG9uIHRv cCBvZiB0aGUgd2hvbGUKPj4+IHNlcmllcyk/Cj4+IFRoYW5rcyBmb3IgeW91ciBwYXRjaCwgR2Vv cmdlLiBJIHRoaW5rIGl0IHNob3VsZCB3b3JrIGZvciAxPi4gQnV0IHdlCj4+IHN0aWxsIGhhdmUg dGhlIGRlYWQgbG9jawo+PiBwcm9ibGVtLiAgOikKPj4KPj4gQlRXLCBkbyB5b3UgdGhpbmsgYSBk b21haW5fcGF1c2Ugd2lsbCBjYXVzZSBhbnkgbmV3IHByb2JsZW0/Cj4gV2VsbCB1c2luZyBhICJi aWcgaGFtbWVyIiBsaWtlIGRvbWFpbl9wYXVzZSBpbiBhIGNhc2UgbGlrZSB0aGlzIGlzCj4gdXN1 YWxseSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgb3RoZXIgaXNzdWVzIHRoYXQgYXJlbid0IGJl aW5nIHNvbHZlZAo+IHByb3Blcmx5IC0tIGZvciBpbnN0YW5jZSwgbGF0ZW50IGRlYWRsb2NrcyBv ciB1bmhhbmRsZWQgcmFjZSBjb25kaXRpb25zLgo+IDotKSAgTGVhdmluZyB0aG9zZSBpc3N1ZXMg YXJvdW5kIGluIHRoZSBjb2RlYmFzZSBidXQgInBhcGVyZWQgb3ZlciIgYnkKPiBkb21haW5fcGF1 c2UgaXMgc3RvcmluZyB1cCB0ZWNobmljYWwgZGVidCB0aGF0IGZ1dHVyZSBnZW5lcmF0aW9ucyB3 aWxsCj4gaW5oZXJpdCBhbmQgbmVlZCB0byB1bnRhbmdsZS4gIChQYXJ0aWN1bGFybHkgYXMgaW4g dGhpcyBjYXNlLCB0aGVyZSB3YXMKPiBubyBjb21tZW50ICppbiB0aGUgY29kZSogZXhwbGFpbmlu ZyB3aGF0IHByb2JsZW1zIHRoZSBkb21haW5fcGF1c2Ugd2FzCj4gdGhlcmUgdG8gc29sdmUsIHNv IGFueW9uZSB3YW50aW5nIHRvIHRyeSB0byByZW1vdmUgaXQgd291bGQgbmVlZCB0byBqdXN0Cj4g ZmlndXJlIG91dC4pCj4KPiBkb21haW5fcGF1c2UgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgdG8g ZG8gKHNpbmNlIHlvdSBoYXZlIHRvIHNwaW4KPiB3YWl0aW5nIGZvciBhbGwgdGhlIHZjcHVzIHRv IGZpbmlzaCBydW5uaW5nKSBhbmQgY29tcGxldGVseSBzdG9wcyB0aGUKPiBkb21haW4gZnJvbSBo YW5kbGluZyBpbnRlcnJ1cHRzIG9yIGFueXRoaW5nIGZvciBhbiBhcmJpdHJhcnkgYW1vdW50IG9m Cj4gdGltZS4gIEFzIGxvbmcgYXMgaXQgZG9lc24ndCBoYXBwZW4gb2Z0ZW4sIHRoZSBjb3N0IHNo b3VsZG4ndCBiZSBhIG1ham9yCj4gaXNzdWU7IGFuZCBhcyBsb25nIGFzIHRoZSBkb21haW5fcGF1 c2UgaXMgc2hvcnQgKGxlc3MgdGhhbiAxMDBtcyksIHRoZW4KPiBpdCBzaG91bGRuJ3QgY2F1c2Ug YW55IG1vcmUgcHJvYmxlbXMgdGhhbiBydW5uaW5nIG9uIGEgZmFpcmx5IGJ1c3kKPiBzeXN0ZW0g c2hvdWxkIGNhdXNlLgo+Cj4gT24gdGhlIG90aGVyIGhhbmQsIGlmIGV2ZXJ5IHRpbWUgd2UgcmFu IGludG8gYSB0cmlja3kgc2l0dWF0aW9uIHdlIGp1c3QKPiBkaWQgYSBkb21haW4gcGF1c2UgcmF0 aGVyIHRoYW4gc29sdmluZyB0aGUgcm9vdCBpc3N1ZSwgcHJldHR5IHNvb24gdGhlCj4gZG9tYWlu IHdvdWxkIGJlIHBhdXNlZCBzZXZlcmFsIHRpbWVzIHBlciBzZWNvbmQuICBUaGUgcGVyZm9ybWFu Y2Ugd291bGQKPiBwbHVtbWV0LCBhbmQgZml4aW5nIGl0IHdvdWxkIGJlIGEgbmlnaHRtYXJlIGJl Y2F1c2UgeW91J2QgaGF2ZSBodW5kcmVkcwo+IG9mIHVuZG9jdW1lbnRlZCBpc3N1ZXMgdG8gdHJ5 IHRvIHVuZGVyc3RhbmQgYW5kIGZpeC4KPgo+IFNvOiB0aGUgZG9tYWluX3BhdXNlIGl0c2VsZiBp c24ndCB0ZXJyaWJsZSAoYWx0aG91Z2ggaXQncyBiZXR0ZXIgdG8KPiBhdm9pZCBpdCBpZiB3ZSBj YW4pOyB3aGF0J3MgbW9yZSBvZiBhIHByb2JsZW0gaXMgdGhlIHBvdGVudGlhbCBpc3N1ZXMKPiB0 aGF0IGl0J3MgaGlkaW5nLiAgVGhlc2UgaXNzdWVzIGNhbiBhZGQgdXAsIHNvIGl0J3MgaW1wb3J0 YW50IHRvIHB1c2gKPiBiYWNrIGFuZCBhc2sgIndoeSBkbyB3ZSBuZWVkIHRoaXMgYW5kIGNhbiB3 ZSBzb2x2ZSBpdCBhIGRpZmZlcmVudCB3YXkiCj4gcHJvLWFjdGl2ZWx5LCBhcyBwYXRjaGVzIGNv bWUgaW4sIHJhdGhlciB0aGFuIHdhaXRpbmcgdW50aWwgaXQgYmVjb21lcwo+IGFuIGlzc3VlLgo+ Cj4gICAtR2VvcmdlCgpUaGFua3MgZm9yIHlvdXIgdGhvcm91Z2ggZXhwbGFuYXRpb24gb24gdGhp cyBwb2ludC4gQW5kIEkgYWdyZWUuIDopCgpJIGhhdmUgZ2l2ZW4gYSBwcm9wb3NhbCB0byBzb2x2 ZSB0aGlzIGRlYWRsb2NrIGlzc3VlIGluIGFub3RoZXIgbWFpbC4gCk5lc3RlZCBsb2NrcyBhcmUK a2V5IHRvIHRoZSBwb3RlbnRpYWwgZGVhZGxvY2ssIGFuZCBJIGJlbGlldmUgdGhleSBhcmUgbm90 IG5lY2Vzc2FyeSBpbiAKdGhpcyBjYXNlLCBzbyB1c2luZwp0aGVzZSBsb2NrcyBzZXF1ZW50aWFs bHkgY291bGQgYmUgb3VyIHdheSBvdXQuCgpBbmQgYXMgdG8gZG9tYWluIHBhdXNlLCBJIGNhbiBy ZW1vdmUgdGhlbSBpZiB3ZSBjYW4gYWNjZXB0IHRoZSAKcG9zc2liaWxpdHkgd2hlbiBhbgplcHQg dmlvbGF0aW9uIGhhcHBlbnMsIHlldCB0byBmaW5kIHRoZSBpb3JlcSBzZXJ2ZXIgaGFzIGFscmVh ZHkgYmVlbiAKdW5tYXBwZWQoZGlzY2FyZGluZwp0aGlzIG9wZXJhdGlvbikuCgpCLlIuCll1Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK