From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v9 2/5] x86/ioreq server: Add DMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Fri, 24 Mar 2017 20:35:49 +0800 Message-ID: <58D512A5.5070008@linux.intel.com> References: <1490064773-26751-1-git-send-email-yu.c.zhang@linux.intel.com> <1490064773-26751-3-git-send-email-yu.c.zhang@linux.intel.com> <58D2965D0200007800146496@prv-mh.provo.novell.com> <58D33F98.4020704@linux.intel.com> <58D39C0D0200007800146A2B@prv-mh.provo.novell.com> <58D4E16A.7020608@linux.intel.com> <58D500D402000078001472C2@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <58D500D402000078001472C2@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 Cc: Kevin Tian , George Dunlap , Andrew Cooper , Tim Deegan , xen-devel@lists.xen.org, Paul Durrant , zhiyuan.lv@intel.com, Jun Nakajima List-Id: xen-devel@lists.xenproject.org CgpPbiAzLzI0LzIwMTcgNjoxOSBQTSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4gT24gMjQuMDMu MTcgYXQgMTA6MDUsIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+IE9uIDMv MjMvMjAxNyA0OjU3IFBNLCBKYW4gQmV1bGljaCB3cm90ZToKPj4+Pj4+IE9uIDIzLjAzLjE3IGF0 IDA0OjIzLCA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Pj4+IE9uIDMvMjIv MjAxNyAxMDoyMSBQTSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4+Pj4+IE9uIDIxLjAzLjE3IGF0 IDAzOjUyLCA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Pj4+Pj4gQEAgLTE3 Nyw4ICsxNzgsNjQgQEAgc3RhdGljIGludCBodm1lbXVsX2RvX2lvKAo+Pj4+Pj4gICAgICAgICAg ICAgYnJlYWs7Cj4+Pj4+PiAgICAgICAgIGNhc2UgWDg2RU1VTF9VTkhBTkRMRUFCTEU6Cj4+Pj4+ PiAgICAgICAgIHsKPj4+Pj4+IC0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0K Pj4+Pj4+IC0gICAgICAgICAgICBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyLT5kb21haW4s ICZwKTsKPj4+Pj4+ICsgICAgICAgIC8qCj4+Pj4+PiArICAgICAgICAgKiBYZW4gaXNuJ3QgZW11 bGF0aW5nIHRoZSBpbnN0cnVjdGlvbiBpbnRlcm5hbGx5LCBzbyBzZWUgaWYKPj4+Pj4+ICsgICAg ICAgICAqIHRoZXJlJ3MgYW4gaW9yZXEgc2VydmVyIHRoYXQgY2FuIGhhbmRsZSBpdC4gUnVsZXM6 Cj4+Pj4+PiArICAgICAgICAgKgo+Pj4+Pj4gKyAgICAgICAgICogLSBQSU8gYW5kICJub3JtYWwi IE1NSU8gcnVuIHRocm91Z2ggaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoKQo+Pj4+Pj4gKyAgICAg ICAgICogdG8gY2hvb3NlIHRoZSBpb3JlcSBzZXJ2ZXIgYnkgcmFuZ2UuIElmIG5vIHNlcnZlciBp cyBmb3VuZCwKPj4+Pj4+ICsgICAgICAgICAqIHRoZSBhY2Nlc3MgaXMgaWdub3JlZC4KPj4+Pj4+ ICsgICAgICAgICAqCj4+Pj4+PiArICAgICAgICAgKiAtIHAybV9pb3JlcV9zZXJ2ZXIgYWNjZXNz ZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGRlc2lnbmF0ZWQKPj4+Pj4+ICsgICAgICAgICAqIGlvcmVx X3NlcnZlciBmb3IgdGhlIGRvbWFpbiwgYnV0IHRoZXJlIGFyZSBzb21lIGNvcm5lcgo+Pj4+Pj4g KyAgICAgICAgICogY2FzZXM6Cj4+Pj4+PiArICAgICAgICAgKgo+Pj4+Pj4gKyAgICAgICAgICog ICAtIElmIHRoZSBkb21haW4gaW9yZXFfc2VydmVyIGlzIE5VTEwsIGFzc3VtZSB0aGVyZSBpcyBh Cj4+Pj4+PiArICAgICAgICAgKiAgIHJhY2UgYmV0d2VlbiB0aGUgdW5iaW5kaW5nIG9mIGlvcmVx IHNlcnZlciBhbmQgZ3Vlc3QgZmF1bHQKPj4+Pj4+ICsgICAgICAgICAqICAgc28gcmUtdHJ5IHRo ZSBpbnN0cnVjdGlvbi4KPj4+Pj4gQW5kIHRoYXQgcmV0cnkgd29uJ3QgY29tZSBiYWNrIGhlcmUg YmVjYXVzZSBvZj8gKFRoZSBhbnN3ZXIKPj4+Pj4gc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBiZWhh dmlvciBhZGRlZCBieSBzdWJzZXF1ZW50IHBhdGNoZXMuKQo+Pj4+IFlvdSBnb3QgbWUuIDopCj4+ Pj4gSW4gdGhpcyBwYXRjaCwgcmV0cnkgd2lsbCBjb21lIGJhY2sgaGVyZS4gSXQgc2hvdWxkIGJl IGFmdGVyIHBhdGNoIDQgb3IKPj4+PiBwYXRjaCA1IHRoYXQgdGhlIHJldHJ5Cj4+Pj4gd2lsbCBi ZSBpZ25vcmVkKHAybSB0eXBlIGNoYW5nZWQgYmFjayB0byBwMm1fcmFtX3J3IGFmdGVyIHRoZSB1 bmJpbmRpbmcpLgo+Pj4gSW4gd2hpY2ggY2FzZSBJIHRoaW5rIHdlIHNob3VsZG4ndCBpbnNpc3Qg b24geW91IHRvIGNoYW5nZSB0aGluZ3MsIGJ1dAo+Pj4geW91IHNob3VsZCBzcGVsbCBvdXQgdmVy eSBjbGVhcmx5IHRoYXQgdGhpcyBwYXRjaCBzaG91bGQgbm90IGdvIGluCj4+PiB3aXRob3V0IHRo ZSBvdGhlcnMgZ29pbmcgaW4gYXQgdGhlIHNhbWUgdGltZS4KPj4gU28gbWF5YmUgaXQgd291bGQg YmUgYmV0dGVyIHdlIGxlYXZlIHRoZSByZXRyeSBwYXJ0IHRvIGEgbGF0ZXIgcGF0Y2gsCj4+IHNh eSBwYXRjaCA0LzUgb3IgcGF0Y2ggNS81LAo+PiBhbmQgcmV0dXJuIHVuaGFuZGxlYWJsZSBpbiB0 aGlzIHBhdGNoPwo+IEkgZG9uJ3QgZm9sbG93LiBJJ3ZlIHNwZWNpZmljYWxseSBzdWdnZXN0ZWQg dGhhdCB5b3UgZG9uJ3QgY2hhbmdlCj4gdGhlIGNvZGUsIGJ1dCBzaW1wbHkgc3RhdGUgY2xlYXJs eSB0aGUgcmVxdWlyZW1lbnQgdGhhdCBwYXRjaGVzCj4gMi4uLjUgb2YgdGhpcyBzZXJpZXMgc2hv dWxkIGFsbCBnbyBpbiBhdCB0aGUgc2FtZSB0aW1lLiBJIGRvbid0IG1pbmQKPiB5b3UgbWFraW5n IGNoYW5nZXMsIGJ1dCB0aGUgcmlzayB0aGVuIGlzIHRoYXQgZnVydGhlciByb3VuZCB0cmlwcwo+ IG1heSBiZSByZXF1aXJlZCBiZWNhdXNlIG9mIHRoZXJlIGJlaW5nIG5ldyBpc3N1ZXMgd2l0aCB0 aGUKPiBjaGFuZ2VzIHlvdSBtYXkgZG8uCgpUaGFua3MsIEphbi4gSSdsbCBrZWVwIHRoZSBjb2Rl LCBhbmQgYWRkIGEgbm90ZSBpbiB0aGUgY29tbWl0IG1lc3NhZ2Ugb2YgCnRoaXMgcGF0Y2guCgo+ Pj4+Pj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKPj4+Pj4+ICsrKyBi L3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jCj4+Pj4+PiBAQCAtMTcyLDcgKzE3Miw3 IEBAIG5lc3RlZGhhcF93YWxrX0wwX3AybShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBwYWRkcl90 IEwxX2dwYSwgcGFkZHJfdCAqTDBfZ3BhLAo+Pj4+Pj4gICAgICAgICBpZiAoICpwMm10ID09IHAy bV9tbWlvX2RpcmVjdCApCj4+Pj4+PiAgICAgICAgICAgICBnb3RvIGRpcmVjdF9tbWlvX291dDsK Pj4+Pj4+ICAgICAgICAgcmMgPSBORVNURURIVk1fUEFHRUZBVUxUX01NSU87Cj4+Pj4+PiAtICAg IGlmICggKnAybXQgPT0gcDJtX21taW9fZG0gKQo+Pj4+Pj4gKyAgICBpZiAoICpwMm10ID09IHAy bV9tbWlvX2RtIHx8ICpwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQo+Pj4+PiBCdHcuLCBob3cg ZG9lcyB0aGlzIGFkZGl0aW9uIG1hdGNoIHVwIHdpdGggdGhlIHJjIHZhbHVlIGJlaW5nCj4+Pj4+ IGFzc2lnbmVkIHJpZ2h0IGJlZm9yZSB0aGUgaWYoKT8KPj4+PiBXZWxsIHJldHVybmluZyBhIE5F U1RFREhWTV9QQUdFRkFVTFRfTU1JTyBpbiBzdWNoIGNhc2Ugd2lsbCB0cmlnZ2VyCj4+Pj4gaGFu ZGxlX21taW8oKSBsYXRlciBpbgo+Pj4+IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQoKS4gR3Vl c3MgdGhhdCBpcyB3aGF0IHdlIGV4cGVjdGVkLgo+Pj4gVGhhdCdzIHByb2JhYmx5IHdoYXQgaXMg ZXhwZWN0ZWQsIGJ1dCBpdCdzIG5vIE1NSU8gd2hpY2ggd2UncmUKPj4+IGRvaW5nIGluIHRoYXQg Y2FzZS4gQW5kIG5vdGUgdGhhdCB3ZSd2ZSBzdG9wcGVkIGFidXNpbmcKPj4+IGhhbmRsZV9tbWlv KCkgZm9yIG5vbi1NTUlPIHB1cnBvc2VzIGEgbGl0dGxlIHdoaWxlIGFnbyAoY29tbWl0Cj4+PiAz ZGQwMGY3YjU2IFsieDg2L0hWTTogcmVzdHJpY3QgcGVybWl0dGVkIGluc3RydWN0aW9ucyBkdXJp bmcKPj4+IHNwZWNpYWwgcHVycG9zZSBlbXVsYXRpb24iXSkuCj4+IE9LLiBTbyB3aGF0IGFib3V0 IHdlIGp1c3QgcmVtb3ZlIHRoaXMgIipwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIiPwo+IFdlbGws IHlvdSBtdXN0IGhhdmUgaGFkIGEgcmVhc29uIHRvIGFkZCBpdC4gVG8gYmUgaG9uZXN0LCBJIGRv bid0Cj4gY2FyZSB0b28gbXVjaCBhYm91dCB0aGUgbmVzdGVkIGNvZGUgKGFzIGl0J3MgZmFyIGZy b20gcHJvZHVjdGlvbgo+IHJlYWR5IGFueXdheSksIHNvIGxlYXZpbmcgdGhlIGNvZGUgYWJvdmUg dW50b3VjaGVkIHdvdWxkIGJlCj4gZmluZSB3aXRoIG1lLCBidXQgdGFraW5nIGNhcmUgb2YgYWRq dXN0bWVudHMgdG8gbmVzdGVkIGNvZGUgd2hlcmUKPiB0aGV5J3JlIGFjdHVhbGx5IG5lZWRlZCB3 b3VsZCBiZSBldmVuIGJldHRlci4gU28gdGhlIHByZWZlcnJlZAo+IG9wdGlvbiBpcyBmb3IgeW91 IHRvIGV4cGxhaW4gd2h5IHlvdSd2ZSBkb25lIHRoZSBjaGFuZ2UgYWJvdmUsCj4gYW5kIHdoeSB5 b3UgdGhpbmsgaXQncyBjb3JyZWN0L25lZWRlZC4gVGhlIG5leHQgYmVzdCBvcHRpb24gbWlnaHQK PiBiZSB0byBkcm9wIHRoZSBjaGFuZ2UuCgpHb3QgaXQuIEkgbm93IHByZWZlciB0byBkcm9wIHRo ZSBjaGFuZ2UuIFRoaXMgY29kZSB3YXMgYWRkZWQgYXQgdGhlIAplYXJseSBzdGFnZSBvZiB0aGlz IHBhdGNoc2V0IHdoZW4Kd2UgaG9wZSBwMm1faW9yZXFfc2VydmVyIGNhbiBhbHdheXMgdHJpZ2dl ciBhIGhhbmRsZV9tbWlvKCksIGJ1dCBmcmFua2x5IAp3ZSBkbyBub3QsIGFuZCBwcm9iYWJseQp3 aWxsIG5vdCB1c2UgdGhlIG5lc3RlZCBjYXNlIGluIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuCgo+ Pj4+Pj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+Pj4+Pj4gKysrIGIveGVuL2Fy Y2gveDg2L21tL3AybS1lcHQuYwo+Pj4+Pj4gQEAgLTEzMSw2ICsxMzEsMTMgQEAgc3RhdGljIHZv aWQgZXB0X3AybV90eXBlX3RvX2ZsYWdzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRy eV90ICplbnRyeSwKPj4+Pj4+ICAgICAgICAgICAgICAgICBlbnRyeS0+ciA9IGVudHJ5LT53ID0g ZW50cnktPnggPSAxOwo+Pj4+Pj4gICAgICAgICAgICAgICAgIGVudHJ5LT5hID0gZW50cnktPmQg PSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKPj4+Pj4+ICAgICAgICAgICAgICAgICBicmVhazsKPj4+ Pj4+ICsgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKPj4+Pj4+ICsgICAgICAgICAgICBl bnRyeS0+ciA9IDE7Cj4+Pj4+PiArICAgICAgICAgICAgZW50cnktPncgPSAhKHAybS0+aW9yZXEu ZmxhZ3MgJiBYRU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFKTsKPj4+Pj4gSXMgdGhpcyBl ZmZlY3RpdmVseSBvcGVuIGNvZGVkIHAybV9nZXRfaW9yZXFfc2VydmVyKCkgYWN0dWFsbHkKPj4+ Pj4gb2theT8gSWYgc28sIHdoeSBkb2VzIHRoZSBmdW5jdGlvbiBuZWVkIHRvIGJlIHVzZWQgZWxz ZXdoZXJlLAo+Pj4+PiBpbnN0ZWFkIG9mIGRvaW5nIGRpcmVjdCwgbG9jay1mcmVlIGFjY2Vzc2Vz Pwo+Pj4+IE1heWJlIHlvdXIgY29tbWVudHMgaXMgYWJvdXQgd2hldGhlciBpdCBpcyBuZWNlc3Nh cnkgdG8gdXNlIHRoZSBsb2NrIGluCj4+Pj4gcDJtX2dldF9pb3JlcV9zZXJ2ZXIoKT8KPj4+PiBJ IHN0aWxsIGJlbGlldmUgc28sIGl0IGRvZXMgbm90IG9ubHkgcHJvdGVjdCB0aGUgdmFsdWUgb2Yg aW9yZXEgc2VydmVyLAo+Pj4+IGJ1dCBhbHNvIHRoZSBmbGFnIHRvZ2V0aGVyIHdpdGggaXQuCj4+ Pj4KPj4+PiBCZXNpZGVzLCBpdCBpcyB1c2VkIG5vdCBvbmx5IGluIHRoZSBlbXVsYXRpb24gcHJv Y2VzcywgYnV0IGFsc28gdGhlCj4+Pj4gaHlwZXJjYWxsIHRvIHNldCB0aGUgbWVtIHR5cGUuCj4+ Pj4gU28gdGhlIGxvY2sgY2FuIHN0aWxsIHByb3ZpZGUgc29tZSBraW5kIHByb3RlY3Rpb24gYWdh aW5zdCB0aGUKPj4+PiBwMm1fc2V0X2lvcmVxX3NlcnZlcigpIC0gZXZlbiBpdCBkb2VzCj4+Pj4g bm90IGFsd2F5cyBkbyBzby4KPj4+IFRoZSBxdWVzdGlvbiwgZnVuZGFtZW50YWxseSwgaXMgYWJv dXQgY29uc2lzdGVuY3k6IFRoZSBzYW1lCj4+PiBhY2Nlc3MgbW9kZWwgc2hvdWxkIGJlIGZvbGxv d2VkIHVuaXZlcnNhbGx5LCB1bmxlc3MgdGhlcmUgaXMgYW4KPj4+IGV4cGxpY2l0IHJlYXNvbiBm b3IgYW4gZXhjZXB0aW9uLgo+PiBTb3JyeSwgSSBkbyBub3QgcXVpdGUgdW5kZXJzdGFuZC4gV2h5 IHRoZSBjb25zaXN0ZW5jeSBpcyBicm9rZW4/Cj4gQmVjYXVzZSB5b3UgZG9uJ3QgY2FsbCBwMm1f Z2V0X2lvcmVxX3NlcnZlcigpIGhlcmUgKGRpc2NhcmRpbmcKPiB0aGUgcmV0dXJuIHZhbHVlLCBi dXQgdXNpbmcgdGhlIGZsYWdzKS4KCk9oLiBJIHNlZS4gWW91IGFyZSB3b3JyeWluZyBhYm91dCBw Mm0tPmlvcmVxLnNlcnZlci9mbGFnIGJlaW5nIGNsZWFyZWQgCmR1ZSB0byBhbiB1bm1hcC4KQmVs b3cgYXJlIHNvbWUgc2l0dWF0aW9uIEkgY2FuIHRoaW5rIG9mLi4uCgo+PiBJIHRoaW5rIHRoaXMg bG9jayBhdCBsZWFzdCBwcm90ZWN0cyB0aGUgaW9yZXEgc2VydmVyIGFuZCB0aGUgZmxhZy4gVGhl Cj4+IG9ubHkgZXhjZXB0aW9uCj4+IGlzIHRoZSBvbmUgeW91IG1lbnRpb25lZCAtIHMgY291bGQg YmVjb21lIHN0YWxlIHdoaWNoIHdlIGFncmVlZCB0byBsZXQKPj4gdGhlIGRldmljZQo+PiBtb2Rl bCBkbyB0aGUgY2hlY2suIFdpdGhvdXQgdGhpcyBsb2NrLCB0aGluZ3Mgd291bGQgYmVjb21lIG1v cmUgY29tcGxleAo+PiAtIG1vcmUKPj4gcmFjZSBjb25kaXRpb25zLi4uCj4gU3VyZSwgYWxsIHVu ZGVyc3Rvb2QuIEkgd2Fzbid0IHJlYWxseSBzdWdnZXN0aW5nIHRvIGRyb3AgdGhlIGxvY2tlZAo+ IGFjY2Vzc2VzLCBidXQgaW5zdGVhZCBJIHdhcyB1c2luZyB0aGlzIHRvIGlsbHVzdHJhdGUgdGhl IG5vbi1sb2NrZWQKPiBhY2Nlc3MgKGFuZCBoZW5jZSB0aGUgaW5jb25zaXN0ZW5jeSB3aXRoIG90 aGVyIGNvZGUpIGhlcmUuIEFzCj4gc2FpZCAtIGlmIHRoZXJlJ3MgYSBnb29kIHJlYXNvbiBub3Qg dG8gY2FsbCB0aGUgZnVuY3Rpb24gaGVyZSwgSSdtIGFsbAo+IGVhcnMuCgouLi4gdGhlIGVwdF9w Mm1fdHlwZV90b19mbGFncygpIGlzIHVzZWQgaW4gMiBjYXNlczoKMT4gaW4gcmVzb2x2ZV9taXNj b25maWcoKSB0byBkbyB0aGUgcmVjYWxjdWxhdGlvbiBmb3IgYSBwMm0gZW50cnkgLSBpbiAKc3Vj aCBjYXNlLCB3ZSB3b24ndAptZWV0IGEgcDJtX2lvcmVxX3NlcnZlciB0eXBlIGluIGVwdF9wMm1f dHlwZV90b19mbGFncygpLCBiZWNhdXNlIGl0J3MgCmFscmVhZHkgcmVjYWxjdWxhdGVkCmJhY2sg dG8gcDJtX3JhbV9ydyBpbiB0aGUgY2FsbGVyOwoKMj4gdHJpZ2dlcmVkIGJ5IHAybV9zZXRfZW50 cnkoKSB3aGljaCBpcyB0cnlpbmcgdG8gc2V0IG1lbSB0eXBlIGZvciBzb21lIApnZm5zLiBUaGUg b25seQpzY2VuYXJpbyBJIGNhbiBpbWFnaW5lKHdoaWNoIGlzIGFsc28gYW4gZXh0cmVtZSBvbmUp IHRoYXQgbWF5IGhhdmUgCnJhY2luZyBwb3RlbnRpYWwgaXM6CmR1cmluZyB0aGUgbWVtIHR5cGUg c2V0dGluZyBwcm9jZXNzLCB0aGUgaW9yZXEgc2VydmVyIHVubWFwcGluZyBpcyAKdHJpZ2dlcmVk IG9uIGFub3RoZXIKY3B1LCB3aGljaCB0aGVuIGludmFsaWRhdGVzIHRoZSB2YWx1ZSBwMm0tPmlv cmVxLmZsYWcsIGluIHN1Y2ggY2FzZSAKZXB0X3AybV90eXBlX3RvX2ZsYWcoKQp3aWxsIHJldHVy biBhbiBlbnRyeSB3aXRoIHdyaXRhYmxlIHBlcm1pc3Npb24uIEJ1dCByaWdodCBhZnRlciB0aGUg bWVtIAp0eXBlIHNldHRpbmcgaXMgZG9uZSwKcDJtIGxvY2sgd2lsbCBiZSBmcmVlZCBhbmQgdGhl IHVubWFwcGluZyBoeXBlcmNhbGwgd2lsbCBnZXQgb3Bwb3J0dW5pdHkgCnRvIHJlc2V0IHRoaXMg cDJtCmVudHJ5LiBXZSBkbyBub3QgbmVlZCBhIHdyaXRlLXByb3RlY3RlZCBlbnRyeSBpbiBzdWNo IGNhc2UgYW55d2F5LgoKQmVzaWRlcywgZXZlbiB0aGUgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoKSBp cyB1c2VkIGhlcmUgaW4gCmVwdF9wMm1fdHlwZV90b19mbGFncygpLCBpdCBjYW4gb25seQpwcm92 aWRlIGEgbGltaXRlZCBwcm90ZWN0aW9uLCB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgcmV0dXJuZWQg ZmxhZyBpbiAKZXB0X3AybV90eXBlX3RvX2ZsYWdzKCkKYmUgb3V0ZGF0ZWQgaW4gYWJvdmUgc2l0 dWF0aW9uLgoKU28sIHNpbmNlIHdlIGRvIG5vdCByZWFsbHkgY2FyZSBhYm91dCB0aGUgcDJtIGVu dHJ5IHBlcm1pc3Npb24gaW4gc3VjaCAKZXh0cmVtZSBzaXR1YXRpb24sIGFuZAp3ZSBjYW4gbm90 IDEwMCUgZ3VhcmFudGVlIHRoZSBsb2NrIHdpbGwgcHJvdGVjdCBpdCwgSSBkbyBub3QgdGhpbmsg d2UgCm5lZWQgdG8gdXNlIHRoZSBsb2NrIGhlcmUuCgpJIGFtIG5vdCBzdXJlIGlmIHRoaXMgZXhw bGFuYXRpb24gaXMgY29udmluY2luZyB0byB5b3UsIGJ1dCBJJ20gYWxzbyAKb3BlbiB0byBiZSBj b252aW5jZWQuIDotKQoKVGhhbmtzCll1CgoKPiBKYW4KPgoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=