From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v4 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Fri, 24 Jun 2016 12:16:08 +0800 Message-ID: <576CB408.90104@linux.intel.com> References: <1463648711-26595-1-git-send-email-yu.c.zhang@linux.intel.com> <4d634904-fd09-1336-0023-3be37d6d698c@citrix.com> <5767C5C9.5090505@linux.intel.com> <5767E56A02000078000F699E@prv-mh.provo.novell.com> <5767CE28.1000808@linux.intel.com> <5767ED8D02000078000F6A0F@prv-mh.provo.novell.com> <5767DC60.5010703@linux.intel.com> <57680DE502000078000F6D43@prv-mh.provo.novell.com> <5768F07F.7010308@linux.intel.com> <5769157902000078000F71B7@prv-mh.provo.novell.com> <576905E4.7020407@linux.intel.com> <5769296002000078000F7250@prv-mh.provo.novell.com> <576A4ED702000078000F7733@prv-mh.provo.novell.com> <576A768702000078000F789F@prv-mh.provo.novell.com> <97d44932-1623-7009-a2af-039f1e0ad584@citrix.com> <576A6367.9080402@linux.intel.com> <3f202dab-e36b-7b52-8ad7-1fcf0d0a15ef@citrix.com> <576B91B7.9070204@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: George Dunlap , Jan Beulich Cc: Kevin Tian , George Dunlap , Andrew Cooper , Tim Deegan , xen-devel@lists.xen.org, Paul Durrant , zhiyuan.lv@intel.com, JunNakajima List-Id: xen-devel@lists.xenproject.org CgpPbiA2LzIzLzIwMTYgNjozMyBQTSwgR2VvcmdlIER1bmxhcCB3cm90ZToKPiBPbiAyMy8wNi8x NiAwODozNywgWXUgWmhhbmcgd3JvdGU6Cj4+IE9uIDYvMjIvMjAxNiA3OjMzIFBNLCBHZW9yZ2Ug RHVubGFwIHdyb3RlOgo+Pj4gT24gMjIvMDYvMTYgMTE6MDcsIFl1IFpoYW5nIHdyb3RlOgo+Pj4+ IE9uIDYvMjIvMjAxNiA1OjQ3IFBNLCBHZW9yZ2UgRHVubGFwIHdyb3RlOgo+Pj4+PiBPbiAyMi8w Ni8xNiAxMDoyOSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4+Pj4+PiBPbiAyMi4wNi4xNiBhdCAx MToxNiwgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4+Pj4gT24gMjIvMDYv MTYgMDc6MzksIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+Pj4+Pj4+PiBPbiAyMS4wNi4xNiBhdCAx NjozOCwgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4+Pj4+PiBPbiAyMS8w Ni8xNiAxMDo0NywgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4+IEFuZCB0aGVuIC0g ZGlkbid0IHdlIG1lYW4gdG8gZGlzYWJsZSB0aGF0IHBhcnQgb2YgWGVuR1QgZHVyaW5nCj4+Pj4+ Pj4+Pj4+Pj4+IG1pZ3JhdGlvbiwgaS5lLiB0ZW1wb3JhcmlseSBhY2NlcHQgdGhlIGhpZ2hlciBw ZXJmb3JtYW5jZQo+Pj4+Pj4+Pj4+Pj4+PiBvdmVyaGVhZCB3aXRob3V0IHRoZSBwMm1faW9yZXFf c2VydmVyIGVudHJpZXM/IEluIHdoaWNoIGNhc2UKPj4+Pj4+Pj4+Pj4+Pj4gZmxpcHBpbmcgZXZl cnl0aGluZyBiYWNrIHRvIHAybV9yYW1fcncgYWZ0ZXIgKGNvbXBsZXRlZCBvcgo+Pj4+Pj4+Pj4+ Pj4+PiBjYW5jZWxlZCkgbWlncmF0aW9uIHdvdWxkIGJlIGV4YWN0bHkgd2hhdCB3ZSB3YW50LiBU aGUgKG5ldwo+Pj4+Pj4+Pj4+Pj4+PiBvciBwcmV2aW91cykgaW9yZXEgc2VydmVyIHNob3VsZCBh dHRhY2ggb25seSBhZnRlcndhcmRzLCBhbmQKPj4+Pj4+Pj4+Pj4+Pj4gY2FuIHRoZW4gZnJlZWx5 IHJlLWVzdGFibGlzaCBhbnkgcDJtX2lvcmVxX3NlcnZlciBlbnRyaWVzIGl0Cj4+Pj4+Pj4+Pj4+ Pj4+IGRlZW1zIG5lY2Vzc2FyeS4KPj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiBXZWxsLCBJ IGFncmVlIHRoaXMgcGFydCBvZiBYZW5HVCBzaG91bGQgYmUgZGlzYWJsZWQgZHVyaW5nCj4+Pj4+ Pj4+Pj4+Pj4gbWlncmF0aW9uLgo+Pj4+Pj4+Pj4+Pj4+IEJ1dCBpbiBzdWNoCj4+Pj4+Pj4+Pj4+ Pj4gY2FzZSBJIHRoaW5rIGl0J3MgZGV2aWNlIG1vZGVsJ3Mgam9iIHRvIHRyaWdnZXIgdGhlIHAy bSB0eXBlCj4+Pj4+Pj4+Pj4+Pj4gZmxpcHBpbmcoaS5lLiBieSBjYWxsaW5nCj4+Pj4+Pj4+Pj4+ Pj4gSFZNT1Bfc2V0X21lbV90eXBlKS4KPj4+Pj4+Pj4+Pj4+IEkgYWdyZWUgLSB0aGlzIHdvdWxk IHNlZW0gdG8gYmUgdGhlIHNpbXBsZXIgbW9kZWwgaGVyZSwgZGVzcGl0ZQo+Pj4+Pj4+Pj4+Pj4g KGFzCj4+Pj4+Pj4+Pj4+PiBHZW9yZ2UgdmFsaWRseSBzYXlzKSB0aGUgbW9yZSBjb25zaXN0ZW50 IG1vZGVsIHdvdWxkIGJlIGZvciB0aGUKPj4+Pj4+Pj4+Pj4+IGh5cGVydmlzb3IgdG8gZG8gdGhl IGNsZWFudXAuIFN1Y2ggY2xlYW51cCB3b3VsZCBpbW8gYmUKPj4+Pj4+Pj4+Pj4+IHJlYXNvbmFi bGUKPj4+Pj4+Pj4+Pj4+IG9ubHkgaWYgdGhlcmUgd2FzIGFuIGVhc3kgd2F5IGZvciB0aGUgaHlw ZXJ2aXNvciB0byBlbnVtZXJhdGUKPj4+Pj4+Pj4+Pj4+IGFsbAo+Pj4+Pj4+Pj4+Pj4gcDJtX2lv cmVxX3NlcnZlciBwYWdlcy4KPj4+Pj4+Pj4+Pj4gV2VsbCwgZm9yIG1lLCB0aGUgImVhc3kgd2F5 IiBtZWFucyB3ZSBzaG91bGQgYXZvaWQgdHJhdmVyc2luZwo+Pj4+Pj4+Pj4+PiB0aGUgd2hvbGUg ZXB0Cj4+Pj4+Pj4+Pj4+IHBhZ2luZyBzdHJ1Y3R1cmUgYWxsIGF0IG9uY2UsIHJpZ2h0Pwo+Pj4+ Pj4+Pj4+IFllcy4KPj4+Pj4+Pj4+IERvZXMgY2FsbGluZyBwMm1fY2hhbmdlX2VudHJ5X3R5cGVf Z2xvYmFsKCkgbm90IHNhdGlzZnkgdGhpcwo+Pj4+Pj4+Pj4gcmVxdWlyZW1lbnQ/Cj4+Pj4+Pj4+ IE5vdCByZWFsbHkgLSB0aGF0IGFkZHJlc3NlcyB0aGUgImxvdyBvdmVyaGVhZCIgYXNwZWN0LCBi dXQgbm90IHRoZQo+Pj4+Pj4+PiAiZW51bWVyYXRlIGFsbCBzdWNoIGVudHJpZXMiIG9uZS4KPj4+ Pj4+PiBJJ20gc29ycnksIEkgdGhpbmsgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGhlcmUuICBXaGF0 IGRvIHdlIG5lZWQgdGhlCj4+Pj4+Pj4gZW51bWVyYXRpb24gZm9yPwo+Pj4+Pj4gV2UnZCBuZWVk IHRoYXQgaWYgd2Ugd2VyZSB0byBkbyB0aGUgY2xlYW51cCBpbiB0aGUgaHlwZXJ2aXNvciAoYXMK Pj4+Pj4+IHdlIGNhbid0IHJlbHkgb24gYWxsIHAybSBlbnRyeSByZS1jYWxjdWxhdGlvbiB0byBo YXZlIGhhcHBlbmVkIGJ5Cj4+Pj4+PiB0aGUgdGltZSBhIG5ldyBpb3JlcSBzZXJ2ZXIgcmVnaXN0 ZXJzIGZvciB0aGUgdHlwZSkuCj4+Pj4+IFNvIHlvdSdyZSBhZnJhaWQgb2YgdGhpcyBzZXF1ZW5j ZSBvZiBldmVudHM/Cj4+Pj4+IDEpIFNlcnZlciBBIGRlLXJlZ2lzdGVyZWQsIHRyaWdnZXJpbmcg YSBpb3JlcV9zZXJ2ZXIgLT4gcmFtX3J3IHR5cGUKPj4+Pj4gY2hhbmdlCj4+Pj4+IDIpIGdmbiBO IGlzIG1hcmtlZCBhcyBtaXNjb25maWd1cmVkCj4+Pj4+IDMpIFNlcnZlciBCIHJlZ2lzdGVycyBh bmQgbWFya3MgZ2ZuIE4gYXMgaW9yZXFfc2VydmVyCj4+Pj4+IDQpIFdoZW4gTiBpcyBhY2Nlc3Nl ZCwgdGhlIG1pc2NvbmZpZ3VyYXRpb24gaXMgcmVzb2x2ZWQgaW5jb3JyZWN0bHkgdG8KPj4+Pj4g cmFtX3J3Cj4+Pj4+Cj4+Pj4+IEJ1dCB0aGF0IGNhbid0IGhhcHBlbiwgYmVjYXVzZSBtaXNjb25m aWd1cmVkIGVudHJpZXMgYXJlIHJlc29sdmVkCj4+Pj4+IGJlZm9yZQo+Pj4+PiBzZXR0aW5nIGEg cDJtIGVudHJ5OyBzbyBhdCBzdGVwIDMsIGdmbiBOIHdpbGwgYmUgZmlyc3Qgc2V0IHRvCj4+Pj4+ IChub24tbWlzY29uZmlndXJlZCkgcmFtX3J3LCB0aGVuIGNoYW5nZWQgdG8gKG5vbi1taXNjb25m aWd1cmVkKQo+Pj4+PiBpb3JlcV9zZXJ2ZXIuCj4+Pj4+Cj4+Pj4+IE9yIGlzIHRoZXJlIGFub3Ro ZXIgc2VxdWVuY2Ugb2YgZXZlbnRzIHRoYXQgSSdtIG1pc3Npbmc/Cj4+Pj4gVGhhbmtzIGZvciB5 b3VyIHJlcGx5LCBHZW9yZ2UuIDopCj4+Pj4gSWYgbm8gbG9nIGRpcnR5IGlzIHRyaWdnZXJlZCBk dXJpbmcgdGhpcyBwcm9jZXNzLCB5b3VyIHNlcXVlbmNlIGlzCj4+Pj4gY29ycmVjdC4KPj4+PiBI b3dldmVyLCBpZiBsb2cgZGlydHkgaXMgdHJpZ2dlcmVkLCB3ZSdsbCBtZXQgcHJvYmxlbXMuIEkg aGF2ZSBkZXNjcmliZWQKPj4+PiB0aGlzCj4+Pj4gaW4gcHJldmlvdXMgbWFpbHMgOgo+Pj4+Cj4+ Pj4gaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIw MTYtMDYvbXNnMDI0MjYuaHRtbAo+Pj4+Cj4+Pj4gb24gSnVuIDIwCj4+Pj4KPj4+PiBhbmQKPj4+ Pgo+Pj4+IGh0dHA6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZl bC8yMDE2LTA2L21zZzAyNTc1Lmh0bWwKPj4+Pgo+Pj4+IG9uIEp1biAyMQo+Pj4gUmlnaHQgLS0g c29ycnksIG5vdyBJIHNlZSB0aGUgaXNzdWU6Cj4+Pgo+Pj4gMS4gU2VydmVyIEEgbWFya3MgZ2Zu IFggYXMgaW9yZXFfc2VydmVyCj4+PiAyLiBTZXJ2ZXIgQSBkZXJlZ2lzdGVycywgZ2ZuIFggbWlz Y29uZmlndXJlZAo+Pj4gMy4gU2VydmVyIEIgcmVnaXN0ZXJzLCBtYXJrcyBnZm4gWSBhcyBpb3Jl cV9zZXJ2ZXIKPj4+IDQuIExvZ2RpcnR5IG1vZGUgZW5hYmxlZDsgZ2ZuIFkgbWlzY29uZmlndXJl ZAo+Pj4gNS4gV2hlbiBYIG9yIFkgYXJlIGFjY2Vzc2VkLCByZXNvbHZlX21pc2NvbmZpZ3VyZSgp IGhhcyBubyB3YXkgb2YKPj4+IHRlbGxpbmcgd2hldGhlciB0aGUgZW50cnkgaXMgZnJvbSBzZXJ2 ZXIgQSAod2hpY2ggc2hvdWxkIGJlIHNldCB0bwo+Pj4gbG9nZGlydHkpIG9yIGZyb20gc2VydmVy IEIgKHdoaWNoIHNob3VsZCBiZSBsZWZ0IGFzIGlvcmVxX3NlcnZlcikuCj4+IEV4YWN0bHkuICA6 KQo+PiBBbm90aGVyIHNpbXBsZXIgc2NlbmFyaW8gd291bGQgYmUKPj4gMS4gU2VydmVyIEEgbWFy a3MgZ2ZuIFggYXMgcDJtX2lvcmVxX3NlcnZlcjsKPj4gMi4gTG9nZGlydHkgbW9kZSBlbmFibGVk OyBnZm4gWCBtaXNjb25maWd1cmVkOwo+PiAzLiBXaGVuIFggaXMgd3JpdHRlbiwgaXQgd2lsbCBu b3QgY2F1c2UgZXB0IHZpb2FsYXRpb24sIGJ1dCBlcHQKPj4gbWlzY29uZmlnLCBhbmQgdGhlCj4+ IHJlc29sdmVfbWlzY29uZmlnKCkgd291bGQgc2V0IGdmbiBYIGJhY2sgdG8gcDJtX3JhbV9ydywg dGhlcmVhZnRlciB3ZQo+PiBjYW4gbm90Cj4+IHRyYWNrIGFjY2VzcyB0byBYOwo+IFJpZ2h0LCBz byB0aGlzIGlzIGEgcmVhc29uIHRoYXQgc2ltcGx5IG1ha2luZyBtaXNjb25maWd1cmF0aW9ucyBh bHdheXMKPiByZXNvbHZlIGlvcmVxX3NlcnZlciBpbnRvIHJhbV9ydyBpc24ndCBjb21wYXRpYmxl IHdpdGggbG9nZGlydHkuCj4KPj4gTm90ZTogTm90IHJlc2V0dGluZyB0aGUgcDJtIHR5cGUgZm9y IHAybV9pb3JlcV9zZXJ2ZXIgd2hlbgo+PiBwMm0tPmlvcmVxX3NlcnZlciBpcwo+PiBub3QgTlVM TCBpcyBzdWl0YWJsZSBmb3IgdGhpcyBzaW1wbGVyIHNjZW5hcmlvLCBidXQgaXMgbm90IGNvcnJl Y3QgaWYKPj4gdGFrZSB5b3VyIHNjZW5hcmlvCj4+IGludG8gYWNjb3VudC4KPj4KPj4gVGhlIGNv cmUgcmVhc29uIGlzIEkgY291bGQgbm90IGZpbmQgYSBzaW1wbGUgc29sdXRpb24gaW4KPj4gcmVz b2x2ZV9taXNjb25maWcoKSB0byBoYW5kbGUKPj4gaGFuZGxlIGJvdGggdGhlIG91dGRhdGVkIHAy bV9pb3JlcV9zZXJ2ZXIgZW50cmllcywgdGhlIGluLXVzZSBvbmVzIGFuZAo+PiB0byBzdXBwb3J0 Cj4+IHRoZSBsb2dkaXJ0eSBmZWF0dXJlIGF0IHRoZSBzYW1lIHRpbWUuCj4gSW5kZWVkOyBhbmQg YXMgSSBzYWlkLCB0aGUgcmVhbCBwcm9ibGVtIGlzIHRoYXQKPiBwMm1fY2hhbmdlX2VudHJ5X3R5 cGVfZ2xvYmFsKCkgaXNuJ3QgcmVhbGx5IHByb3Blcmx5IGFic3RyYWN0ZWQ7IGluCj4gb3JkZXIg dG8gdXNlIGl0IHlvdSBuZWVkIHRvIGtub3cgaG93IGl0IHdvcmtzIGFuZCBiZSBjYXJlZnVsIG5v dCB0byB1c2UKPiBpdCBhdCB0aGUgd3JvbmcgdGltZS4KPgo+IFNob3J0LXRlcm0sIHRoaW5raW5n IHRocm91Z2ggYSBoYW5kZnVsIG9mIHRoZSBzY2VuYXJpb3Mgd2Ugd2FudCB0bwo+IHN1cHBvcnQg c2hvdWxkIGJlIGdvb2QgZW5vdWdoLiAgTG9uZy10ZXJtLCBtYWtpbmcgaXQgbW9yZSByb2J1c3Qg c28gdGhhdAo+IHdlIGRvbid0IGhhdmUgdG8gdGhpbmsgc28gaGFyZCBhYm91dCBpcyBwcm9iYWJs eSBiZXR0ZXIuCj4KPj4+IEluIGEgc2Vuc2UgdGhpcyBpcyBhIGRlZmljaWVuY3kgaW4gdGhlIGNo YW5nZV9lbnRyeV90eXBlX2dsb2JhbCgpCj4+PiBpbnRlcmZhY2UuICBBIGNvbW1vbiBPUyBwcmlu Y2lwbGUgaXMgIm1ha2UgdGhlIGNvbW1vbiBjYXNlIGZhc3QsIGFuZCB0aGUKPj4+IHVuY29tbW9u IGNhc2UgY29ycmVjdCIuICBUaGUgc2NlbmFyaW8gZGVzY3JpYmVkIGFib3ZlIHNlZW1zIHRvIG1l IHRvIGJlCj4+PiBhbiB1bmNvbW1vbiBjYXNlIHdoaWNoIGlzIGhhbmRsZWQgcXVpY2tseSBidXQg aW5jb3JyZWN0bHk7IGlkZWFsbHkgd2UKPj4+IHNob3VsZCBoYW5kbGUgaXQgY29ycmVjdGx5LCBl dmVuIGlmIGl0J3Mgbm90IHZlcnkgcXVpY2suCj4+Pgo+Pj4gU3luY2hyb25vdXNseSByZXNvbHZp bmcgYSBwcmV2aW91cyBtaXNjb25maWcgaXMgcHJvYmFibHkgdGhlIG1vc3QKPj4+IHN0cmFpZ2h0 Zm9yd2FyZCB0aGluZyB0byBkby4gIEl0IGNvdWxkIGJlIGRvbmUgYXQgcG9pbnQgIzMsIHdoZW4g YW4gTS0+Tgo+Pj4gdHlwZSBjaGFuZ2UgaXMgbm90IGNvbXBsZXRlIGFuZCBhIG5ldyBwMm0gZW50 cnkgb2YgdHlwZSBNIGlzIHdyaXR0ZW47IGl0Cj4+PiBjb3VsZCBiZSBhdCBwb2ludCAjNCwgd2hl biBhbiBOLT5PIHR5cGUgY2hhbmdlIGlzIGluaXRpYXRlZCB3aGlsZSBhbgo+Pj4gTS0+TiB0eXBl IGNoYW5nZSBoYXNuJ3QgY29tcGxldGVkLiAgT3IgaXQgY291bGQgYmUgd2hlbiBhbiBOLT5PIHR5 cGUKPj4+IGNoYW5nZSBoYXBwZW5zIHdoaWxlIHRoZXJlIGFyZSB1bmZpbmlzaGVkIE0tPk4gdHJh bnNpdGlvbnMgKmFuZCoKPj4+IHBvc3QtdHlwZS1jaGFuZ2UgTSBlbnRyaWVzLgo+PiBTb3JyeSwg SSBkaWQgbm90IHF1aXRlIGdldCBpdC4gIENvdWxkIHlvdSBwbGVhc2UgZWxhYm9yYXRlIG1vcmU/ IFRoYW5rcyEgOikKPiBXZWxsIHRoZSBiYXNpYyBpZGVhIGlzIHRvIG1ha2UgY2hhbmdlX2VudHJ5 X3R5cGVfZ2xvYmFsKCkgKmFwcGVhciogdG8KPiBhbGwgZXh0ZXJuYWwgY2FsbGVycyBhcyB0aG91 Z2ggdGhlIGNoYW5nZSBoYXBwZW5lZCBpbW1lZGlhdGVseS4gIEFuZCB0aGUKPiBiYXNpYyBwcm9i bGVtIGlzIHRoYXQgYXQgdGhlIG1vbWVudCwgeW91IGNhbiBzdGFydCBhIHNlY29uZAo+IGNoYW5n ZV9lbnRyeV90eXBlX2dsb2JhbCgpIGJlZm9yZSB0aGUgZmlyc3Qgb25lIGhhcyBhY3R1YWxseSBm aW5pc2hlZAo+IGNoYW5naW5nIGFsbCB0aGUgdHlwZXMgaXQgd2FzIG1lYW50IHRvIGNoYW5nZS4g IFNvIHRoZSBpbXByb3ZlbWVudCBpcyB0bwo+IG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgdHlwZXMg d2hpY2ggbmVlZCB0byBiZSBjaGFuZ2VkIGFjdHVhbGx5IGdldAo+IGNoYW5nZWQgYmVmb3JlIHRo ZSBzZWNvbmQgaW52b2NhdGlvbiBzdGFydHMuCj4KPiBUaGUgYWJzb2x1dGUgc2ltcGxlc3QgdGhp bmcgdG8gZG8gd291bGQgYmUgdG8gbWFrZSBpdCBhY3R1YWxseSBzZWFyY2gKPiB0aHJvdWdoIHRo ZSBwMm0gdGFibGUgYW5kIG1ha2UgdGhlIGNoYW5nZSBpbW1lZGlhdGVseS4gIEJ1dCB3ZSdkIGxp a2UgdG8KPiBhdm9pZCB0aGlzIGlmIHdlIGNhbiBiZWNhdXNlIGl0J3Mgc28gc2xvdy4KPgo+IFNv IHRoZSBuZXh0IHNpbXBsZXN0IHRoaW5nIHRvIGRvIHdvdWxkIGJlIHRoYXQgd2hlbiBzb21lb25l IGNhbGxzCj4gY2hhbmdlX2VudHJ5X3R5cGVfZ2xvYmFsKCkgYSBzZWNvbmQgdGltZSwgeW91IGdv IHRocm91Z2ggZXZlcnkKPiBtaXNjb25maWd1cmVkIGVudHJ5IGFuZCByZXNvbHZlIGl0LCBzbyB0 aGF0IHRoZSBuZXcKPiBjaGFuZ2VfZW50cnlfdHlwZV9nbG9iYWwoKSBzdGFydHMgd2l0aCBhIGNs ZWFuIHNsYXRlLiAgVGhpcyBzaG91bGQgYmUKPiBmYXN0ZXIgdGhhbiBqdXN0IHN3ZWVwaW5nIHRo ZSB3aG9sZSBwMm0gdGFibGUsIHNpbmNlIHdlIG9ubHkgbmVlZCB0bwo+IGNoZWNrIHRoZSBwMm0g ZW50cmllcyB0aGF0IGhhdmVuJ3QgYmVlbiB0b3VjaGVkIHNpbmNlIHdlIGRpZCB0aGUgdHlwZQo+ IGNoYW5nZSwgYnV0IGl0IG1heSBzdGlsbCBiZSBhIGxvdCBvZiB3b3JrLgo+Cj4gU28gdGhlcmUg YXJlIG90aGVyIG9wdGltaXphdGlvbnMgd2UgbWlnaHQgYmUgYWJsZSB0byBtYWtlIHRvIHRyeSB0 bwo+IGF2b2lkIGdvaW5nIHRocm91Z2ggYW5kIHJlLXN5bmNpbmcgdGhpbmdzOyBhbmQgdGhvc2Ug YXJlIHRoZSBleGFtcGxlcwo+IHRoYXQgSSBnYXZlLgo+Cj4+PiBGb3IgdGhlIHRpbWUgYmVpbmcg dGhvdWdoLCB0aGlzIHdpbGwgZmFpbCBhdCAjNCwgcmlnaHQ/ICBUaGF0IGlzLAo+Pj4gbG9nZGly dHkgbW9kZSBjYW5ub3QgYmUgZW5hYmxlZCB3aGlsZSBzZXJ2ZXIgQiBpcyByZWdpc3RlcmVkPwo+ Pj4KPj4+IFRoYXQgZG9lcyBtZWFuIHdlJ2QgYmUgZm9yY2VkIHRvIHNvcnQgb3V0IHRoZSBzaXR1 YXRpb24gYmVmb3JlIHdlIGFsbG93Cj4+PiBsb2dkaXJ0eSBhbmQgaW9yZXFfc2VydmVyIHRvIGJl IHVzZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHRoYXQgZG9lc24ndAo+Pj4gcmVhbGx5IHNlZW0g bGlrZSBzdWNoIGEgYmFkIGlkZWEgdG8gbWUuCj4+IE9uZSBzb2x1dGlvbiBJIHRob3VnaHQgb2Yg aXMgdG8ganVzdCByZXR1cm4gZmFpbHVyZSBpbgo+PiBoYXBfZW5hYmxlX2xvZ19kaXJ0eSgpCj4+ IGlmIHAybS0+aW9yZXEuc2VydmVyIGlzIG5vdCBOVUxMLiBCdXQgSSBkaWQgbm90IGNob29zZSBz dWNoIGFwcHJvYWNoLAo+PiBiZWNhdXNlOgo+Pgo+PiAxPiBJIHN0aWxsIHdhbnQgdG8ga2VlcCB0 aGUgbG9nZGlydHkgZmVhdHVyZSBzbyB0aGF0IFhlbkdUIGNhbiB1c2UgaXQgdG8KPj4ga2VlcCB0 cmFjawo+PiBvZiB0aGUgZGlydHkgcmFtcyB3aGVuIHdlIHN1cHBvcnQgbGl2ZSBtaWdyYXRpb24g aW4gdGhlIGZ1dHVyZTsKPiBCdXQgdGhhdCdzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBzZXQgaW4g c3RvbmUgLS0geW91IGNhbiBoYXZlIGl0IHJldHVybgo+IC1FQlVTWSBub3csIGFuZCB0aGVuIGF0 IHN1Y2ggdGltZSBhcyB5b3UgYWRkIGRpcnR5IHZyYW0gc3VwcG9ydCBmb3IKPiBpb3JlcV9zZXJ2 ZXIgcDJtIHR5cGVzICh3aGljaCBJIGRvbid0IHRoaW5rIHNob3VsZCBiZSBoYXJkIGF0IGFsbCwK PiBhY3R1YWxseSksIHlvdSBjYW4gcmVtb3ZlIHRoYXQgcmVzdHJpY3Rpb24uCgpPSy4gUmV0dXJu aW5nIC1FQlVTWSBpcyBmaW5lIHRvIG1lLgpJbiBmYWN0LCBJIGRvIG5vdCByZWFsbHkgd29ycnkg YWJvdXQgdGhlIHRyYWNraW5nIG9mIGlvcmVxX3NlcnZlciBnZm5zLCAKSSB3YXMKd29ycnlpbmcg YWJvdXQgdGhlIG5vcm1hbCBkaXJ0eSByYW0gcGFnZXMuIEJ1dCBpZiBwMm1fY2hhbmdlX2VudHJ5 X3R5cGUoKQpjYW4gYmUgZW5oYW5jZWQgaW4gdGhlIGZ1dHVyZSwgSSBjYW4gcmVtb3ZlIHRoYXQg cmVzdHJpY3Rpb24gdGhlbi4gOikKCj4gVGhlIGZhY3QgaXMgdGhhdCBhdCBoZSBtb21lbnQsIHNl dHRpbmcgbG9nZGlydHkgKndpbGwgbm90IHdvcmsqOyBhbmQgdGhlCj4gYmVzdCBpbnRlcmZhY2Ug aXMgb25lIGluIHdoaWNoIGJyb2tlbiB0aGluZ3MgY2Fubm90IGhhcHBlbiBldmVuIGJ5Cj4gYWNj aWRlbnQuICBSZWdhcmRsZXNzIG9mIHdoYXQgd2UgZW5kIHVwIGRlY2lkaW5nIHdydCBYZW4gY2hh bmdpbmcgdGhlCj4gZW50cmllcywgSSB0aGluayB0aGF0IFhlbiBzaG91bGQgcmVmdXNlIHRvIGVu YWJsZSBsb2dkaXJ0eSBtb2RlIHdoZW4KPiB0aGVyZSBpcyBhbiBpb3JlcSBzZXJ2ZXIgcmVnaXN0 ZXJlZCBmb3IgaW9yZXFfc2VydmVyIHAybSBlbnRyaWVzLgo+Cj4+IDI+IEkgYWxzbyBhZ3JlZSB3 aXRoIFBhdWwncyBhcmd1bWVudDogaXQgaXMgZGV2aWNlIG1vZGVsJ3MgZHV0eSB0byBkbwo+PiB0 aGUgcDJtIHR5cGUKPj4gcmVzZXR0aW5nIHdvcmsuCj4gQnV0IHRoYXQncyBub3QgcmVhbGx5IHRo ZSBwb2ludC4gIFdlIGFsbCBhZ3JlZSB0aGF0IHBlb3BsZSBzaG91bGQgbG9vawo+IHdoZXJlIHRo ZXkncmUgZ29pbmcgYW5kIGl0J3MgZ2VuZXJhbGx5IGFuIGluZGl2aWR1YWwncyByZXNwb25zaWJp bGl0eQo+IG5vdCB0byBmYWxsIGludG8gcGl0cyBvciBydW4gaW50byB0aGluZ3MgaW4gdGhlIHJv YWQgb3Igb24gdGhlIHNpZGV3YWxrLgo+ICAgQnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoYXQgaXQn cyB0aGVyZWZvcmUgT0sgdG8gZGlnIGEgcGl0IHdpdGggc3Bpa2VzCj4gYXQgdGhlIGJvdHRvbSBp biB0aGUgbWlkZGxlIG9mIHdoZXJlIHBlb3BsZSBub3JtYWxseSB3YWxrIG9yIGN5Y2xlLgo+IEJl Y2F1c2UgZXZlbiB0aG91Z2ggaXQgaXMgYW4gaW5kaXZpZHVhbCBwZXJzb24ncyByZXNwb25zaWJp bGl0eSBub3QgdG8KPiB3YWxrIGludG8gaG9sZXMsIG9jY2FzaW9uYWxseSBwZW9wbGUgYXJlIGRp c3RyYWN0ZWQgb3IgZG9uJ3Qgc2VlIHdlbGwgb3IKPiBtYWtlIG1pc3Rha2VzOyBhbmQgdGhlIGNv bnNlcXVlbmNlcyBmb3IgYmVpbmcgdGVtcG9yYXJpbHkgZGlzdHJhY3RlZAo+IHNob3VsZCBuZXZl ciBiZSAiZmFsbGluZyBvbnRvIGEgYmVkIG9mIHNoYXJwIHNwaWtlcyIuIDotKSAgSWYgeW91IGRv Cj4gaGF2ZSB0byBkaWcgYSBob2xlIGluIHRoZSBzaWRld2FsaywgdGhlbiBhdCB2ZXJ5IGxlYXN0 IHlvdSBuZWVkIHRvIHB1dCBhCj4gcGh5c2ljYWwgYmFycmllciBhcm91bmQgaXQsIHNvIHRoYXQg dGhlIGNvbnNlcXVlbmNlcyBmb3IgYmVpbmcKPiBkaXN0cmFjdGVkIGFyZSAicnVucyBpbnRvIGEg YmFycmllciIgcmF0aGVyIHRoYW4gImZhbGxzIGludG8gYSBwaXQiLgo+IEJ1dCB0aGUgYmVzdCBv ZiBhbGwsIGlmIHlvdSBjYW4gbWFuYWdlIGl0LCBpcyBub3QgdG8gZGlnIHRoZSBob2xlIGF0IGFs bC4KPgo+IFNpbWlsYXJseSwgZXZlbiBpZiBpdCBjb3VsZCBiZSBpbiB0aGVvcnkgdGhlIGRldmlj ZSBtb2RlbCdzIGR1dHkgdG8KPiByZXNldCB0aGUgcDJtIGVudHJpZXMgaXQgY2hhbmdlZCwgaXQn cyBzdGlsbCB0aGUgY2FzZSB0aGF0IHByb2dyYW1tZXJzCj4gbWFrZSBtaXN0YWtlcy4gIFdoZW4g dGhvc2UgbWlzdGFrZXMgaGFwcGVuLCB3ZSBhdCB2ZXJ5IGxlYXN0IHdhbnQgaXQgdG8KPiBiZSBh cyBlYXN5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgcHJvYmxlbSBpcyBhcyBwb3NzaWJsZTsgYW5k IGlmIHdlIGNhbiwKPiB3ZSB3YW50IHRvIG1ha2UgdGhvc2UgbWlzdGFrZXMgY29tcGxldGVseSBo YXJtbGVzcy4KPgo+IE1ha2luZyBpdCBwb3NzaWJsZSBmb3IgaW9yZXEgc2VydmVyIEEncyBlbnRy aWVzIHRvIHJlbWFpbiBvdXRzdGFuZGluZwo+IGFmdGVyIGlvcmVxIHNlcnZlciBCIGNvbm5lY3Rz IGlzIHRoZSBwcm9ncmFtbWluZyBlcXVpdmFsZW50IG9mIGxlYXZpbmcgYQo+IGJpZyBvcGVuIGhv bGUgaW4gdGhlIG1pZGRsZSBvZiBhIHNpZGV3YWxrOiBpdCBtZWFucyB0aGF0IHdoZW4gdGhlcmUn cyBhCj4gbWlzdGFrZSBtYWRlLCB0aGVyZSBhcmVuJ3QgYW55IG9idmlvdXMgaW1tZWRpYXRlIGZh aWx1cmVzIHRoYXQgdGVsbCB5b3UsCj4gIlNlcnZlciBBIGZvcmdvdCB0byByZWxlYXNlIHNvbWUg ZW50cmllcyIuICBJbnN0ZWFkLCB5b3Ugd2lsbCBnZXQgcmFuZG9tCj4gZmFpbHVyZXMsIGFzIGJp dHMgb2YgbWVtb3J5IGJlaGF2ZSBzdHJhbmdlbHkgb3IgcnVuIHZlcnkgc2xvd2x5IGZvciBubwo+ IGFwcGFyZW50IHJlYXNvbi4KPgo+IEhhdmluZyBpdCBpbXBvc3NpYmxlIHRvIGNvbm5lY3QgaW9y ZXEgc2VydmVyIEIgaWYgdGhlcmUgYXJlIHN0aWxsCj4gb3V0c3RhbmRpbmcgZW50cmllcyBmcm9t IGlvcmVxIHNlcnZlciBBIGlzIHRoZSBlcXVpdmFsZW50IG9mIGRpZ2dpbmcgYQo+IGhvbGUgYW5k IHRoZW4gcHV0dGluZyB1cCBhIGJhcnJpZXIuICBOb3cgeW91IGdldCBhIGZhaWx1cmUgd2hlbiB5 b3UgdHJ5Cj4gaXQsIGFuZCB5b3UncmUgdG9sZCBleGFjdGx5IHdoYXQgdGhlIHByb2JsZW0gaXMg LS0gdGhlIGxhc3QgZ3V5IGRpZG4ndAo+IHJlbGVhc2UgYWxsIGhpcyBlbnRyaWVzLiAgSWYgeW91 IGRvbid0IGhhdmUgdGhlIGNvZGUgeW91J3JlIHN0aWxsIGEgYml0Cj4gc3R1Y2ssIGJ1dCBhdCBs ZWFzdCB5b3Uga25vdyBpdCBqdXN0IGRvZXNuJ3Qgd29yaywgcmF0aGVyIHRoYW4gZmFpbGluZwo+ IGluIG15c3RlcmlvdXMgYW5kIGRpZmZpY3VsdCB0byBkZXRlY3Qgd2F5cyBsYXRlci4KPgo+IEhh dmluZyBYZW4gcmVzZXQgdGhlIGVudHJpZXMganVzdCBtYWtlcyB0aGlzIGVudGlyZSBwcm9ibGVt IGdvIGF3YXkgLS0KPiBpdCdzIGxpa2UgYWNjZXNzaW5nIHdoYXRldmVyIHlvdSBuZWVkZWQgdG8g YWNjZXNzIGJ5IGRpZ2dpbmcgc2lkZXdheXMKPiBmcm9tIHRoZSBzdG9ybSBkcmFpbnMsIHJhdGhl ciB0aGFuIGRpZ2dpbmcgYSBob2xlIGluIHRoZSBzaWRld2Fsay4KPgo+IEl0J3MgYWxsIHdlbGwg YW5kIGdvb2QgdG8gc2F5LCAiSXQncyB0aGUgZGV2aWNlIG1vZGVsJ3MgcmVzcG9uc2liaWxpdHki LAo+IGJ1dCB3ZSBuZWVkIHRvIHBsYW4gb24gcHJvZ3JhbW1lcnMgbWFraW5nIG1pc3Rha2VzLiAg KEFuZCB3ZSBhbHNvIG5lZWQKPiB0byBwbGFuIGZvciBhZG1pbmlzdHJhdG9ycyBtYWtpbmcgbWlz dGFrZXMsIHdoaWNoIGlzIHdoeSBJIHRoaW5rCj4gcmV0dXJuaW5nIC1FQlVTWSB3aGVuIHlvdSB0 cnkgdG8gZW5hYmxlIGxvZ2RpcnR5IHdpdGgKCkhhaC4gVGhpcyBpcyBhIHZlcnkgZ29vZCBtZXRh cGhvci4gSSBhbSBjb252aW5jZWQuIDopClRob3VnaCBJIGhhdmUgZG91YnRzIGFib3V0IGhvdyB0 byByZWZhY3RvciB0aGUgCnAybV9jaGFuZ2VfZW50cnlfdHlwZV9nbG9iYWwoKSBpbnRlcmZhY2Us CkknbSBub3cgd2lsbGluZyB0byB0YWtlIHlvdXIgc3VnZ2VzdGlvbnM6CmE+IHN0aWxsIG5lZWQg dGhlIHAybSByZXNldHRpbmcgd2hlbiBpb3JlcSBzZXJ2ZXIgaXMgdW5ib3VuZGVkOwpiPiBkaXNh YmxlIGxvZyBkaXJ0eSBmZWF0dXJlIGlmIG9uZSBpb3JlcSBzZXJ2ZXIgaXMgYm91bmRlZC4KCkRv ZXMgYW55b25lIGVsc2UgaGFzIGRpZmZlcmVudCBvcGluaW9ucz8gVGhhbmtzIQoKPj4+IEknbSBz dGlsbCBvcGVuIHRvIGJlaW5nIGNvbnZpbmNlZCwgYnV0IGF0IHRoZSBtb21lbnQgaXQgcmVhbGx5 IHNlZW1zIHRvCj4+PiBtZSBsaWtlIGltcHJvdmluZyB0aGUgc2l0dWF0aW9uIGlzIHRoZSBiZXR0 ZXIgbG9uZy10ZXJtIG9wdGlvbi4KPj4+Cj4+IFRoYW5rcyBmb3IgYWxsIHlvdXIgYWR2aWNlcywg R2VvcmdlLiBJJ20gYWxzbyB3aWxsaW5nIHRvIHRha2luZyBvdGhlcgo+PiBhZHZpY2VzLCBpZiB3 ZSBoYXZlCj4+IGEgbW9yZSBhY2NlcHRhYmxlKGZvciB5b3UsIEphbiBhbmQgb3RoZXIgbWFpbnRh aW5lcnMpIHJlc3luYyBhcHByb2FjaCBpbgo+PiBoeXBlcnZpc29yLAo+PiBJJ2QgbGlrZSAgdG8g YWRkIHRoaXMuIElmIHRoZSBjb2RlIGlzIHRvbyBjb21wbGljYXRlZCwgSSBjYW4gc3VibWl0IGl0 Cj4+IGluIGEgc2VwYXJhdGUgbmV3Cj4+IHBhdGNoc2V0LiA6KQo+IFdlbGwgSSB0aGluayBzb21l dGltZSBpbiBlYXJseSBKdWx5IEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBzb21lIHRpbWUKPiB0 byB0YWtlIGEgbG9vayBhdCBpdCBwcm9wZXJseS4gIE1heWJlIEkgY2FuIHN0YXJ0IHdpdGggYSAi ZHJhZnQiIHBhdGNoLAo+IGFuZCB5b3UgY2FuIHRha2UgaXQgYW5kIGZpeCBpdCB1cCBhbmQgbWFr ZSBpdCB3b3JrLiAgT3IgbWF5YmUgSSdsbCBmaW5kCj4gaXQncyBhY3R1YWxseSB0b28gY29tcGxp Y2F0ZWQsIGFuZCB0aGVuIGFncmVlIHdpdGggeW91IHRoYXQgcmVseWluZyBvbgo+IHRoZSBzZXJ2 ZXIgdG8gY2xlYW4gdXAgYWZ0ZXIgaXRzZWxmIGlzIHRoZSBvbmx5IG9wdGlvbi4gOi0pCgpUaGFu ayB5b3UsIEdlb3JnZS4gSSBkZWZpbml0ZWx5IHdvdWxkIGxpa2UgdG8gdGFrZSB0aGlzIHdvcmsu CkFuZCBiZWZvcmUgdGhhdCwgSSB0aGluayBkaXNhYmxlIHRoZSBsb2cgZGlydHkgY291bGQgYmUg T0sgZm9yIG1lKAphZnRlciBhbGwsIG1ha2luZyB2R1BVIGxpdmUgbWlncmF0aWJsZSByZXF1aXJl cyBtb3JlIGZlYXR1cmVzIGFkZGVkKS4KCll1CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK