From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC Design Doc v2] Add vNVDIMM support for Xen Date: Thu, 4 Aug 2016 10:51:29 -0400 Message-ID: <20160804145129.GB8847@char.us.oracle.com> References: <20160718002912.rva5n5jbrezdchwx@hz-desktop> <20160803212548.GA16869@char.us.oracle.com> <20160804085257.gztzkil5j4csqtxc@hz-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160804085257.gztzkil5j4csqtxc@hz-desktop> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xen.org" , Jan Beulich , George Dunlap , Andrew Cooper , Ian Jackson , Stefano Stabellini , Juergen Gross , Wei Liu , "Tian, Kevin" , Xiao Guangrong , "Nakajima, Jun" List-Id: xen-devel@lists.xenproject.org PiA+ID4gIFN1Y2ggYSBwbWVtIG5hbWVzcGFjZSBjYW4gYmUgY3JlYXRlZCB2aWEgYSB1c2Vyc3Bh Y2UgdG9vbCBuZGN0bCBhbmQKPiA+ID4gIHRoZW4gcmVjb2duaXplZCBieSBMaW51eCBOVkRJTU0g ZHJpdmVyLiBIb3dldmVyLCB0aGV5IGN1cnJlbnRseSBvbmx5Cj4gPiA+ICByZXNlcnZlIHNwYWNl IGZvciBMaW51eCBrZXJuZWwncyBwYWdlIHN0cnVjdHMuIFRoZXJlZm9yZSwgb3VyIGRlc2lnbgo+ ID4gPiAgbmVlZCB0byBleHRlbmQgYm90aCBMaW51eCBOVkRJTU0gZHJpdmVyIGFuZCBuZGN0bCB0 byByZXNlcnZlCj4gPiA+ICBhcmJpdHJhcnkgc2l6ZS4KPiA+IAo+ID4gVGhhdCBzZWVtcyAuLiBm cmFnaWxlPyBXaGF0IGlmIFdpbmRvd3Mgb3IgRnJlZUJTRCB3YW50IHRvIHVzZSBpdAo+ID4gdG9v Pwo+IAo+IEFGQUlLLCB0aGUgd2F5IHVzZWQgYnkgY3VycmVudCBMaW51eCBOVkRJTU0gZHJpdmVy IGZvciByZXNlcnZhdGlvbiBoYXMKPiBub3QgYmVlbiBkb2N1bWVudGVkIGluIGFueSBwdWJsaWMg c3BlY2lmaWNhdGlvbnMgeWV0LiBJJ2xsIGNvbnN1bHQKPiBkcml2ZXIgZGV2ZWxvcGVycyBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4KPiAKPiA+IFdvdWxkIHRoaXMgJ3N0cnVjdCBwYWdlJyBvbiBvbiBO VkRJTU0gYmUgZ2VuZXJhbGl6ZWQgZW5vdWdoCj4gPiB0byB3b3JrIHdpdGggTGludXgsWGVuLCBG cmVlQlNEIGFuZCB3aGF0IG5vdD8KPiA+Cj4gCj4gTm8uIERpZmZlcmVudCBvcGVyYXRpbmcgc3lz dGVtcyBtYXkgY2hvb3NlIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZXMKPiB0byBtYW5hZ2UgTlZE SU1NIGFjY29yZGluZyB0byB0aGVpciBvd24gcmVxdWlyZW1lbnRzIGFuZAo+IGNvbnNpZGVyYXRp b24sIHNvIGl0IHdvdWxkIGJlIGhhcmQgdG8gcmVhY2ggYW4gYWdyZWVtZW50IG9uIHdoYXQgdG8K PiBwdXQgaW4gYSBnZW5lcmljIGRhdGEgc3RydWN0dXJlIChhbmQgbWFrZSBpdCBhcyBwYXJ0IG9m IEFCST8pLgoKWWVzLiBBcyBJIGNhbiBzZWUgZGlmZmVyZW50IE9TZXMgaGF2aW5nIGRpZmZlcmVu dCBzaXplcy4gQW5kIHRoZW4KdGhpcyBzaXplIG9mICdyZXNlcnZlZCByZWdpb24nIGVuZHMgdXAg YmVpbmcgdG9vIHNtYWxsIGFuZCBvbmx5CnNvbWUgcGFydCBvZiB0aGUgTlZESU1NIGNhbiBiZSB1 c2VkLgoKPiAKPiA+IEFuZCB0aGlzIG5kY3RsIGlzIGh0dHBzOi8vZ2l0aHViLmNvbS9wbWVtL25k Y3RsIEkgcHJlc3VtZT8KPiAKPiBZZXMuIFNvcnJ5IHRoYXQgSSBmb3Jnb3QgdG8gYXR0YWNoIHRo ZSBVUkwuCj4gCj4gPgo+ID4gQW5kIGhvdyBpcyB0aGlzIHN0cnVjdHVyZSByZXNlcnZlZD8gSXMg aXQgYSBzZXBlcmF0ZSBuYW1lc3BhY2UgZW50cnk/Cj4gCj4gTm8sIGl0IGRvZXMgbm90IGludHJv ZHVjZSBhbnkgZXh0cmEgbmFtZXNwYWNlIGVudHJ5LiBUaGUgY3VycmVudAo+IE5WRElNTSBkcml2 ZXIgaW4gTGludXggZG9lcyB0aGUgcmVzZXJ2YXRpb24gaW4gdGhlIHdheSBzaG93biBieSB0aGUK PiBmb2xsb3dpbmcgZGlhZ3JhbSAoSSBvbWl0IGRldGFpbHMgYWJvdXQgYWxpZ25tZW50IGFuZCBw YWRkaW5nIGZvcgo+IHNpbXBsaWNpdHkpOgo+IAo+ICBTUEEgIFNQQSs0Swo+ICAgfCAgICAgIHwK PiAgIFYgICAgICBWCj4gICArLS0tLS0tKy0tLS0tLS0tLS0tKy0tIC4uLiAtLS0rLS0tLS0uLi4t LS0tLSsKPiAgIHwgICAgICB8IG5kX3Bmbl9zYiB8IHJlc2VydmVkIHwgZnJlZSB0byB1c2UgfAo+ ICAgKy0tLS0tLSstLS0tLS0tLS0tLSstLSAuLi4gLS0tKy0tLS0tLi4uLS0tLS0rCj4gICB8PC0t ICAgbmRfcGZuX3NiLmRhdGFvZmYgICAtLT58ICAgICAgICAgICAgIHwKPiAgIHwgICAgKCsgbmVj ZXNzYXJ5IHBhZGRpbmcpICAgICAgICAgICAgICAgICAgfAo+ICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gICB8PC0tLS0tLS0tLS0tLS0gcG1lbSBuYW1l c3BhY2UgLS0tLS0tLS0tLS0tPnwKPiAKPiBHaXZlbiBhIHBtZW0gbmFtZXNwYWNlIHdoaWNoIHN0 YXJ0cyBmcm9tIFNQQSwKCkFBQUFoLCBzbyBpdCBpcyBhdCBzdGFydCBvZiB0aGUgbmFtZXNwYWNl ISBUaGFua3MKCj4gIDEpIHRoZSBkcml2ZXIgc3RvcmVzIGEgc3RydWN0IG5kX3Bmbl9zYiBhdCBT UEErNEsKPiAgMikgdGhlIHJlc2VydmVkIGFyZWEgaXMgYWZ0ZXIgbmRfcGZuX3NiCj4gIDMpIHRo ZSBmcmVlLXRvLXVzZSBhcmVhIGlzIGFmdGVyIHRoZSByZXNlcnZlZCBhcmVhLCBhbmQgaXRzIGxv Y2F0aW9uCj4gICAgIHJlbGF0aXZlIHRvIFNQQSBjYW4gYmUgZGVyaXZlZCBmcm9tIG5kX3Bmbl9z Yi5kYXRhb2ZmCj4gIDQpIG9ubHkgdGhlIGZyZWUtdG8tdXNlIGFyZWEgaXMgZXhwb3NlZCB0byBh IGJsb2NrIGRldmljZSAvZGV2L3BtZW1YLgo+ICAgICBBY2Nlc3MgdG8gc2VjdG9yIE4gb2YgL2Rl di9wbWVtWCBhY3R1YWxseSBnb2VzIHRvIChTUEEgKwo+ICAgICBuZF9wZm5fc2IuZGF0YW9mZiAr IE4gKiBTRUNUX1NJWkUpCj4gIDUpIG5kX3Bmbl9zYiBhbHNvIGNvbnRhaW5zIGEgc2lnbmF0dXJl ICJOVkRJTU1fUEZOX0lORk8iIGFuZCBhCj4gICAgIGNoZWNrc3VtLiBJZiB0aGUgZHJpdmVyIGZp bmRzIHN1Y2ggc2lnbmF0dXJlIGFuZCB0aGUgY2hlY2tzdW0KPiAgICAgbWF0Y2hlcywgdGhlbiBp dCBrbm93cyB0aGlzIGRldmljZSBjb250YWlucyByZXNlcnZlZCBhcmVhLgoKL21lIG5vZHMuCgpB bmQgb2YgY291cnNlIHRoaXMgbmljZSBkaWFncmFtIGFuZCBzdWNoIGlzIGdvaW5nIHRvIGJlIGlu CmEgcHVibGljIEFCSSBkb2N1bWVudCA6LSkKPiAKPiA+IEFuZCBRRU1VIGtub3dzIG5vdCB0byBh Y2Nlc3MgaXQ/Cj4gCj4gUUVNVSBhcyBhIHVzZXJzcGFjZSBwcm9ncmFtIGNhbiBvbmx5IGFjY2Vz cyAvZGV2L3BtZW1YIGFuZCBoZW5jZSBoYXMKPiBubyB3YXkgdG8gdG91Y2ggdGhlIHJlc2VydmVk IGFyZWEuCgpSaWdodHRvLgo+IAo+ID4gT3IgWGVuIG5lZWRzIHRvIG1ha2Ugc3VyZSBfbm9ib2R5 Xwo+ID4gZXhjZXB0IGl0IGNhbiBhY2Nlc3MgaXQ/IFdoaWNoIG1lYW5zIFhlbiBtYXkgbmVlZCB0 byBrbm93IHRoZSBmb3JtYXQKPiA+IG9mIHRoZSBuZGN0bCBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGxh aWQgb3V0IGluIHRoZSBOVkRJTU0gcmVnaW9uPwo+ID4KPiAKPiBYZW4gaHlwZXJ2aXNvciByZWxp ZXMgb24gZG9tMCBkcml2ZXIgdG8gcGFyc2UgdGhlIGxheW91dC4gIEF0IERvbTAKPiBib290LCBE b20wIE5WRElNTSBkcml2ZXIgcmVwb3J0cyBhZGRyZXNzL3NpemUgb2YgYXJlYSByZXNlcnZlZCBm b3IgWGVuCj4gdG8gWGVuIGh5cGVydmlzb3IsIHdoaWNoIHRoZW4gdW5tYXBzIHRoZSByZXNlcnZl ZCBhcmVhIGZyb20gRG9tMC4KCk9LLCBzbyB0aGUgL2Rldi9wbWVtIGRyaXZlciB3b3VsZCBjb25z dWx0IHRoaXMgd2hlbiBzb21lYm9keSBpcyBtbWFwaW5nCnRoZSBhcmVhLiBCdXQgc2luY2UgdGhp cyB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIGRyaXZlciAodW5yZWdpc3RlcmVkKQppdCB3b3Vs ZCByZXBvcnQgYW4gemVybyBzaXplPwoKT3Igd291bGQgaXQgIk90aGVyd2lzZSwgaXQgd2lsbCB0 cmVhdCB0aGUgcG1lbSBuYW1lc3BhY2UgYXMgYSByYXcgZGV2aWNlIGFuZApzdG9yZSBwYWdlIHN0 cnVjdCdzIGluIHRoZSBub3JtYWwgUkFNLiIgLSB3aGljaCBtZWFucyBkb20wIGNhbiBzdGlsbAph Y2Nlc3MgdGhlIFNQQSAoZXhjZXB0IG9idmlvdXNseSB0aGUgYXJlYSB0aGF0IGlzIGZvciB0aGlz IHJlc2VydmVkIHJlZ2lvbik/CgouLnNuaXAuLgo+ID4gPiAgICAgIGd1ZXN0cy4gT3RoZXJ3aXNl LCBYZW4gaHlwZXJ2aXNvciB3aWxsIHJlY29yZGVkIHRoZSByZXBvcnRlZAo+ID4gcy9yZWNvcmRl ZC9yZWNvcmQvCj4gPiA+ICAgICAgcGFyYW1ldGVycyBhbmQgY3JlYXRlIHBhZ2VfaW5mbyBzdHJ1 Y3RzIGluIHRoZSByZXNlcnZlZCBhcmVhLgo+ID4gCj4gPiBPaGguIFlvdSBqdXN0IGJsYXN0IGl0 IGF3YXk/IEkgZ3Vlc3MgaXQgbWFrZXMgc2Vuc2UuIFRoZW4gd2hhdCBpcyB0aGUKPiA+IHB1cnBv c2Ugb2YgdGhlIG5kY3RsPyBKdXN0IHRvIGNhcnZlIG91dCBhbiBuYW1lc3BhY2UgcmVnaW9uIGZv ciB0aGlzPwo+ID4KPiAKPiBuZGN0bCBpcyB1c2VkIGJ5LCBmb3IgZXhhbXBsZSwgYSBzeXN0ZW0g YWRtaW4gdG8gcmVzZXJ2ZSBzcGFjZSBvbiBhCj4gaG9zdCBwbWVtIG5hbWVzcGFjZS4gSWYgdGhl cmUgaXMgYWxyZWFkeSBkYXRhIGluIHRoZSBuYW1lc3BhY2UsIG5kY3RsCj4gd2lsbCBnaXZlIGEg d2FybmluZyBtZXNzYWdlIGFuZCBleGl0IGFzIGxvbmcgYXMgLS1mb3JjZSBvcHRpb24gaXMgbm90 Cj4gZ2l2ZW4uIEhvd2V2ZXIsIGlmIC0tZm9yY2UgaXMgcHJlc2VudCwgbmRjdGwgd2lsbCBicmVh ayB0aGUgZXhpc3RpbmcKPiBkYXRhLgo+IAo+ID4gQW5kIHdoYXQgaWYgdGhlcmUgaXMgc29tZXRo aW5nIHRoZXJlIGZyb20gcHJldmlvdXMgT1MgKHNheSBMaW51eCk/Cj4gPiBKdXN0IGJsYXN0IGl0 IGF3YXk/IEJ1dCBjb3VsZCBMaW51eCBkZXBlbmQgb24gdGhpcyBjb250YWluaW5nIHNvbWUKPiA+ IHBlcnNpc3RlbnQgaW5mb3JtYXRpb24/IE9yIGRvZXMgaXQgYWxzbyBibGFzdCBpdCBhd2F5Pwo+ ID4KPiAKPiBBcyBhYm92ZSwgaWYgbGludXggZHJpdmVyIGRldGVjdHMgdGhlIHNpZ25hdHVyZSAi TlZESU1NX1BGTl9JTkZPIiBhbmQKPiBhIG1hdGNoZWQgY2hlY2tzdW0sIGl0IHdpbGwga25vdyBp dCdzIHNhZmUgdG8gd3JpdGUgdG8gdGhlIHJlc2VydmVkCj4gYXJlYS4gT3RoZXJ3aXNlLCBpdCB3 aWxsIHRyZWF0IHRoZSBwbWVtIG5hbWVzcGFjZSBhcyBhIHJhdyBkZXZpY2UgYW5kCj4gc3RvcmUg cGFnZSBzdHJ1Y3QncyBpbiB0aGUgbm9ybWFsIFJBTS4KCk9LLCBzbyBteSB3b3JyeSBpcyB0aGF0 IHdlIHdpbGwgaGF2ZSBhIGRpdmVyZ2VuY2UuIFdoaWNoIGlzIHRoYXQKdGhlIHN5c3RlbSBhZG1p biBjcmVhdGVzIHRoaXMgdW5kZXIgbmRjdGwgdjAsIGJvb3RzIFhlbiB1c2VzIGl0LgpUaGVuIG1v dmVzIHRoZSBOVkRJTU0gdG8gYW5vdGhlciBtYWNoaW5lIHdoaWNoIGhhcyBuZGN0bCB2MSBhbmQK aGUvc2hlIGJvb3RzIGluIExpbnV4LgoKTGludXggZ2V0cyBhbGwgY29uZnVzZWQgYi9jIHRoZSBy ZWdpb24gaGFzIHNvbWV0aGluZyBpdCBjYW4ndCB1bmRlcnN0YW5kCmFuZCB0aGUgdXNlciBpcyB2 ZXJ5IGFuZ3J5LgoKU28gaXQgc291bmRzIGxpa2UgdGhlIHNpemUgdGhlIG5kY3RsIHJlc2VydmVz IE1VU1QgYmUgYmFrZWQgaW4gYW4gQUJJCmFuZCBtYWRlIHN1cmUgdG8gZXhwYW5kIGlmIG5lZWRl ZC4KCi4uc25pcC4uCj4gPiBUaGlzICJiYWxsb29uIG91dCIgaXMgaW50ZXJlc3RpbmcuIFlvdSBh cmUgZWZmZWN0aXZlbHkgdGVsbGluZyBMaW51eAo+ID4gdG8gaWdub3JlIGEgY2VydGFpbiByYW5n ZSBvZiAnc3RydWN0IHBhZ2VfaW5mbycsIHNvIHRoYXQgaWYgc29tZWJvZHkKPiA+IHVzZXMgL3N5 cy9kZWJ1Zy9rZXJuZWwvcGFnZV93YWxrIGl0IHdvbid0IGJsb3cgdXA/IChBcyB0aGUga2VybmUK PiA+IGNhbid0IHJlYWQgdGhlIHN0cnVjdCBwYWdlX2luZm8gYW55bW9yZSkuCj4gPgo+ID4gSG93 IHdvdWxkIHlvdSBkbyB0aGlzPyBTaW11bGF0ZSBhbiBOVkRJTU0gdW5wbHVnPwo+IAo+IHMvcGFn ZV9pbmZvL3BhZ2UvIChzdHJ1Y3QgcGFnZSBmb3IgbGludXgsIHN0cnVjdCBwYWdlX2luZm8gZm9y IHhlbikKPiAKPiBBcyBpbiBKYW4ncyBjb21tZW50LCAiYmFsbG9vbiBvdXQiIGlzIGEgY29uZnVz aW5nIG5hbWUgaGVyZS4KPiBCYXNpY2FsbHksIGl0J3MgdG8gcmVtb3ZlIHRoZSByZXNlcnZlZCBh cmVhIGZyb20gc29tZSByZXNvdXJjZSBzdHJ1Y3QKPiBpbiBudmRpbW0gZHJpdmVyIHRvIGF2b2lk IGl0J3MgYWNjZXNzZWQgb3V0IG9mIHRoZSBkcml2ZXIgdmlhIHRoZQo+IHJlc291cmNlIHN0cnVj dC4gQW5kIHRoZSBudmRpbW0gZHJpdmVyIGRvZXMgbm90IG1hcCB0aGUgcmVzZXJ2ZWQgYXJlYSwK PiBzbyBJIHRoaW5rIGl0IGNhbm5vdCBiZSB0b3VjaGVkIHZpYSBwYWdlX3dhbGsuCgpPSywgSSBu ZWVkIHRvIHJlYWQgdGhlIExpbnV4IGNvZGUgbW9yZSB0byBtYWtlIHN1cmUgSSBhbQpub3QgbWlz c2luZyBzb21ldGhpbmcuCgpCYXNpY2FsbHkgdGhlIHF1ZXN0aW9uIHRoYXQga2VlcHMgcmV2b2x2 aW5nIGluIG15IGhlYWQgaXM6CgpXaHkgaXMgdGhpcyBldmVuIG5lY2Nlc3Nhcnk/CgpMZXQgbWUg ZXhwYW5kIC0gaXQgZmVlbHMgbGlrZSAoYW5kIEkgdGhpbmsgSSBhbSBtaXNzaW5nIHNvbWV0aGlu ZwpoZXJlKSB0aGF0IHdlIGFyZSBjcmlwcGxpbmcgdGhlIExpbnV4IGRyaXZlciBzbyB0aGF0IGl0 IHdvbid0CmJyZWFrIC0gYi9jIGlmIGl0IHRyaWVkIHRvIGFjY2VzcyB0aGUgJ3N0cnV0IHBhZ2Vf aW5mbycgaW4gdGhpcwpyZXNlcnZlZCByZWdpb24gaXQgd291bGQgY3Jhc2guIFNvIHdlIGVsaW1p bmF0ZSB0aGF0LCBhbmQgbWFrZQp0aGUgZHJpdmVyIGJlbGlldmUgdGhlIHJlZ2lvbiBleGlzdHMg KGlzIHJlc2VydmVkKSwgYnV0IGl0IGNhbid0CnVzZSBpdC4gQW5kIGluc3RlYWQgdXNlIHRoZSBu b3JtYWwgUkFNIHBhZ2VzIHRvIGtlZXAgdHJhY2sKb2YgdGhlIE5WRElNTSBTUEFzLgoKT3IgcGVy aGFwcyBub3Qga2VlcCB0cmFjayBhdCBhbGwgYW5kIGp1c3QgdHJlYXQgdGhlIHdob2xlCk5WRElN TSBhcyBvcGFxdWUgTU1JTyB0aGF0IGlzIGluYWNjZXNzaWJsZT8KCkJ1dCBob3cgd2lsbCB0aGF0 IHdvcmsgaWYgdGhlcmUgaXMgYSBEQVggZmlsZXN5c3RlbSBvbiBpdD8KVGhlIGV4dDQgbmVlZHMg c29tZSBtZWNoYW5pc20gdG8gYWNjZXNzIHRoZSBmaWxlcyB0aGF0IGFyZSB0aGVyZS4KKE90aGVy d2lzZSB5b3UgY291bGRuJ3QgdXNlIHRoZSBmaWVtYXAgaW9jdGwgdG8gZmluZCB0aGUgU1BBcyku Cgpbc2VlIGJlbG93XQo+IAo+ID4gCj4gPiBCdXQgaWYgeW91IGRvIHRoYXQgaG93IHdpbGwgU01B UlQgdG9vbHMgd29yayBhbnltb3JlPyBBbmQKPiA+IHdobyB3b3VsZCBkbyB0aGUgX0RTTSBjaGVj a3Mgb24gdGhlIGhlYWx0aCBvZiB0aGUgTlZESU1NPwo+ID4KPiAKPiBBIHVzZXJzcGFjZSBTTUFS VCB0b29sIGNhbm5vdCBhY2Nlc3MgdGhlIHJlc2VydmVkIGFyZWEsIHNvIEkgdGhpbmsgaXQKPiBj YW4gc3RpbGwgd29yay4gSSBoYXZlbid0IGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFu eSBTTUFSVAo+IHRvb2xzIGZvciBOVkRJTU0sIGJ1dCBJIGd1ZXNzIHRoZXkgd291bGQgZmluYWxs eSBjYWxsIHRoZSBkcml2ZXIgdG8KPiBldmFsdWF0ZSB0aGUgQVJTIF9EU00gd2hpY2ggcmVwb3J0 cyB0aGUgYmFkIGJsb2Nrcy4gQXMgbG9uZyBhcyB0aGUKPiBkcml2ZXIgZG9lcyBub3QgcmV0dXJu IHRoZSBiYWQgYmxvY2tzIGluIHRoZSByZXNlcnZlZCBhcmVhIHRvIFNNQVJUCj4gdG9vbHMgKHdo aWNoIEkgc3VwcG9zZSB0byBiZSBoYW5kbGVkIGJ5IGRyaXZlciBpdHNlbGYpLCBTTUFSVCB0b29s cwo+IHNob3VsZCB3b3JrIGZpbmUuCj4gCj4gPiAvbWUgc2NyYXRjaGVzIGhpcyBoZWFkLiBQZXJo YXBzIHRoZSBhbnN3ZXJzIGFyZSBsYXRlciBpbiB0aGlzCj4gPiBkZXNpZ24uLgoKU28gSSB0aGlu ayBJIGZpZ3VyZWQgb3V0IHRoZSBpc3N1ZSBoZXJlISEKCllvdSBqdXN0IHdhbnQgdG8gaGF2ZSB0 aGUgTGludXgga2VybmVsIGRyaXZlciB0byB1c2Ugbm9ybWFsIFJBTQpwYWdlcyB0byBrZWVwIHRy YWNrIG9mIHRoZSBOVkRJTU0gU1BBIHJhbmdlcy4gQXMgaW4gdHJlYXQKdGhlIE5WRElNTSBhcyBp ZiBpdCBpcyBub3JtYWwgUkFNPwoKW09yIGlzIExpbnV4IHRyZWF0aW5nIHRoaXMgYXJlYSBhcyBN TUlPIHJlZ2lvbiAoaW4gd2loY2ggY2FzZSBpdCBkb2VzIG5vdApuZWVkIHN0cnVjdCBwYWdlX2lu Zm8pPz9dCgpBbmQgdGhlbiBYZW4gY2FuIHVzZSB0aGlzIHJlc2VydmVkIHJlZ2lvbiBmb3IgaXRz IG93bgpwdXJwb3NlIQoKUGVyaGFwcyB0aGVuIHRoZSBzZWN0aW9uIHRoYXQgZXhwbGFpbnMgdGhp cyAncmVzZXJ2ZWQgcmVnaW9uJyBjb3VsZApzYXkgc29tZXRoaW5nIGFsb25nOgoKIldlIG5lZWQg dG8ga2VlcCB0cmFjayBvZiB0aGUgU1BBcy4gVGhlIGd1ZXN0IE5WRElNTSAnZmlsZScKb24gdGhl IE5WRElNTSBtYXkgYmUgaW4gdGhlIHdvcnN0IGNhc2UgYmUgcmFuZG9tbHkgYW5kIGluIGRlc2Nl bmRpbmcKZGlzY29udGluZ291cyBvcmRlciAoc2F5IGZyb20gdGhlIGVuZCBvZiB0aGUgTlZESU1N KSwgd2UgbmVlZAp0byBrZWVwIHRyYWNrIG9mIGVhY2ggb2YgdGhlIFNQQXMuIFRoZSByZWFzb24g aXMgdGhhdCB3ZSBuZWVkCnRoZSBTUEFzIHdoZW4gd2UgcG9wdWxhdGUgdGhlIGd1ZXN0IEVQVC4K CkFzIHN1Y2ggd2UgY2FuIHN0b3JlIHRoZSBndWVzdCBTUEEgaW4gbWVtb3J5IChsaW5lYXIgYXJy YXk/KQpvciByZWQtYmxhY2sgdHJlZSwgb3IgYW55IG90aGVyIC0gYnV0IGFsbCBvZiB0aGVtIHdp bGwgY29uc3VtZQoibm9ybWFsIFJBTSIuIEFuZCB3aXRoIHN1ZmZpY2llbnQgbGFyZ2UgZW5vdWdo IE5WRElNTSB3ZSBtYXkKbm90IGhhdmUgZW5vdWdoICdub3JtYWwgUkFNJyB0byBzdG9yZSB0aGlz LgoKQWxzbyB3ZSBvbmx5IG5lZWQgdG8ga25vdyB0aGVzZSBTUEFzIGR1cmluZyBndWVzdCBjcmVh dGlvbiwKZGVzdHJ1Y3Rpb24sIGJhbGxvb25pbmcsIGV0YyAtIGhlbmNlIHdlIG1heSBzdG9yZSB0 aGVtIG9uIHRoZQpOVkRJTU0gaXRzZWxmLiBGb3J0dW5hdGx5IGZvciB1cyB0aGUgbmRjdGwgYW5k IExpbnV4IGFyZQphdmFpbGFibGUgd2hpY2ggY2FydmUgb3V0IHJpZ2h0IGFmdGVyIHRoZSBuYW1l c3BhY2UgcmVnaW9uICgxMjhrYikKYW5kICdyZXNlcnZlZCByZWdpb24nIHdoaWNoIHRoZSBPUyBj YW4gdXNlIHRvIHN0b3JlIGl0cwpzdHJ1Y3QgcGFnZV9pbmZvIHRvIGNvdmVyIHRoZSBmdWxsIHJh bmdlIG9mIHRoZSBOVkRJTU0uCgpUaGUgY29tcGxleGl0eSBpbiB0aGlzIGlzIHRoYXQ6CiAtIFdl IE1VU1QgbWFrZSBzdXJlIExpbnV4IGRvZXMgbm90IHRyeSB0byB1c2UgaXQgd2hpbGUKICAgd2Ug dXNlIGl0LgogLSBUaGF0IHRoZSBzaXplIG9mIHRoaXMgJ3Jlc2VydmVkIHJlZ2lvbicgaXMgc3Vm ZmljaWVudGx5CiAgIGxhcmdlIGZvciBvdXIgJ3N0cnVjdCBwYWdlX2luZm8nIHN0cnVjdHVyZS4K IC0gVGhlIGxheW91dCBoYXMgYW4gQUJJIGJha2VkLgogLSBMaW51eCBmcydlcyB3aXRoIERBWCBz dXBwb3J0IE1VU1QgYmUgYWJsZSBtbG9jayB0aGVzZSBTUEEKICAgcmVnaW9ucyAoc28gdGhhdCBu b2JvZHkgdHJpZXMgdG8gcmVtb3ZlIHRoZSAnZmlsZScgd2hpbGUKICAgYSBndWVzdCBpcyB1c2lu ZyBpdCkuCiAtIExpbnVzIGZzJ2VzIHdpdGggREFYIHN1cHBvcnQgTVVTVCBiZSBhYmxlIHRvIHJl c2l6ZSB0aGUKICAgJ2ZpbGUnLCBoZXJlYnkgdXNpbmcgbW9yZSBvZiB0aGUgU1BBcyBhbmQgcmV3 cml0dGluZyB0aGUKICAgcHJvcGVydGllcyBvZiB0aGUgZmlsZSBvbiBEQVggKHdoaWNoIHNob3Vs ZCB0aGVuIGNhdXNlIGFuCiAgIG1lbW9yeSBob3RwbHVnIEFDUEkgaW4gdGhlIGd1ZXN0IHRyZWF0 aW5nIHRoZSBuZXcgc2l6ZSBvZgogICB0aGUgZmlsZSBhcyBuZXcgTkZJVCByZWdpb24/KQoKIgoK SSB0aGluayB0aGF0IGNvdmVycyBpdD8KLi5zbmlwLi4KPiA+ID4gIE91ciBkZXNpZ24gdGFrZXMg dGhlIGZvbGxvd2luZyBtZXRob2QgdG8gYXZvaWQgYW5kIGRldGVjdCBjb2xsaXNpb25zLgo+ID4g PiAgMSkgVGhlIGRhdGEgbGF5b3V0IG9mIGFyZWEgd2hlcmUgUUVNVSBjb3BpZXMgaXRzIE5GSVQg YW5kIEFDUEkKPiA+ID4gICAgIG5hbWVzcGFjZSBkZXZpY2VzIGlzIG9yZ2FuaXplZCBhcyBiZWxv dzoKPiA+IAo+ID4gV2h5IGNhbid0IHRoaXMgYmUgZXhwcmVzc2VkIGluIFhlblN0b3JlPwo+ID4g Cj4gPiBZb3UgY291bGQgaGF2ZSAvbG9jYWwvZG9tYWluL2RvbWlkL2h2bWxvYWRlci9kbS1hY3Bp LzxuYW1lPi97YWRkcmVzcyxsZW5ndGgsIHR5cGV9Cj4gPiA/Cj4gPgo+IAo+IElmIFhlblN0b3Jl IGNhbiBiZSB1c2VkLCB0aGVuIGl0IGNvdWxkIHNhdmUgc29tZSBndWVzdCBtZW1vcnkuCgpJdCBp cyBhbHNvIGVhc2llciB0aGFuIHJlbGF5aW5nIG9uIHRoZSBmb3JtYXQgb2YgYSBibG9iIGluIG1l bW9yeS4KPiAKPiBUaGlzIGlzIGEgZ2VuZXJhbCBtZWNoYW5pc20gdG8gcGFzcyBBQ1BJIHdoaWNo IGFuZCBpcyBub3QgbGltaXRlZCB0bwo+IE5WRElNTSwgc28gaXQgbWVhbnMgUUVNVSBtYXkgcGFz cyBhIGxvdCBvZiBlbnRyaWVzLiBJJ20gbm90IHN1cmUgaWYKPiBYZW5TdG9yZSBpcyBzdGlsbCBh IHByb3BlciBwbGFjZSB3aGVuIHRoZSBudW1iZXIgaXMgbGFyZ2UuIE1heWJlIHdlCj4gc2hvdWxk IHB1dCBhbiB1cHBlciBsaW1pdCBmb3IgdGhlIG51bWJlciBvZiBlbnRyaWVzLgoKV2h5IHB1dCBh IGxpbWl0IG9uIGl0PyBJdCBzaG91bGQgZWFzaWx5IGhhbmRsZSB0aG91c2FuZHMgb2YgPG5hbWU+ LgpBbmQgdGhlIG9ubHkgYXR0cmlidXRlcyB5b3UgaGF2ZSB1bmRlciA8bmFtZT4gYXJlIGp1c3Qg YWRkcmVzcywKbGVuZ3RoIGFuZCB0eXBlLgoKLi4gc25pcC4uCj4gPiA+IDQuMy4yIEVtdWxhdGlu ZyBHdWVzdCBfRFNNCj4gPiA+IAo+ID4gPiAgT3VyIGRlc2lnbiBsZWF2ZXMgdGhlIGVtdWxhdGlv biBvZiBndWVzdCBfRFNNIHRvIFFFTVUuIEp1c3QgYXMgd2hhdAo+ID4gPiAgaXQgZG9lcyB3aXRo IEtWTSwgUUVNVSByZWdpc3RlcnMgdGhlIF9EU00gYnVmZmVyIGFzIE1NSU8gcmVnaW9uIHdpdGgK PiA+ID4gIFhlbiBhbmQgdGhlbiBhbGwgZ3Vlc3QgZXZhbHVhdGlvbnMgb2YgX0RTTSBhcmUgdHJh cHBlZCBhbmQgZW11bGF0ZWQKPiA+ID4gIGJ5IFFFTVUuCj4gPiAKPiA+IFN3ZWV0IQo+ID4gCj4g PiBTbyBvbmUgcXVlc3Rpb24gdGhhdCBJIGFtIG5vdCBpZiBpdCBoYXMgYmVlbiBhbnN3ZXJlZCwg d2l0aCB0aGUKPiA+ICdzdHJ1Y3QgcGFnZV9pbmZvJyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGRv bTAgaG93IHdpbGwgT0VNIF9EU00gbWV0aG9kCj4gPiBvcGVyYXRpb24/IEZvciBleGFtcGxlIHNv bWUgb2YgdGhlIEFNTCBjb2RlIG1heSBhc2tpbmcgdG8gcG9rZQo+ID4gYXQgc3BlY2lmaWMgU1BB cywgYnV0IGhvdyB3aWxsIExpbnV4IGRvIHRoaXMgcHJvcGVybHkgd2l0aG91dAo+ID4gJ3N0cnVj dCBwYWdlX2luZm8nIGJlIGF2YWlsYWJsZT8KPiA+Cj4gCj4gKHMvcGFnZV9pbmZvL3BhZ2UvKQo+ IAo+IFRoZSBjdXJyZW50IEludGVsIE5WRElNTSBkcml2ZXIgaW4gTGludXggZG9lcyBub3QgZXZh bHVhdGUgYW55IE9FTQo+IF9EU00gbWV0aG9kLCBzbyBJJ20gbm90IHN1cmUgd2hldGhlciB0aGUg a2VybmVsIGhhcyB0byBhY2Nlc3MgYSBOVkRJTU0KPiBwYWdlIGR1cmluZyBldmFsdWF0aW5nIF9E U00uCj4gCj4gVGhlIG1vc3QgY2xvc2Ugb25lIGluIG15IG1pbmQsIHRob3VnaCBub3QgYW4gT0VN IF9EU00sIGlzIGZ1bmN0aW9uIDEKPiBvZiBBUlMgX0RTTSwgd2hpY2ggcmVxdWlyZXMgaW5wdXRz IG9mIGEgc3RhcnQgU1BBIGFuZCBhIGxlbmd0aCBpbgo+IGJ5dGVzLiBBZnRlciBrZXJuZWwgZ2l2 ZXMgdGhlIGlucHV0cywgdGhlIHNjcnViYmluZyBvZiB0aGUgc3BlY2lmaWVkCj4gYXJlYSBpcyBk b25lIGJ5IHRoZSBoYXJkd2FyZSBhbmQgZG9lcyBub3QgcmVxdWlyZXMgYW55IG1hcHBpbmdzIGlu IE9TLgoKPG5vZHM+Cj4gCj4gQW55IGV4YW1wbGUgb2Ygc3VjaCBPRU0gX0RTTSBtZXRob2RzPwoK SSBjYW4ndCB0aGluayBvZiBhbnkgcmlnaHQgbm93IC0gYnV0IHRoYXQgaXMgdGhlIGRhbmdlciBv ZiBPRU1zIC0gdGhleQptYXkgZGVjaWRlIHRvIGRvIHNvbWV0aGluZyAuLiBpbGwgYWR2aXNhYmxl LiBIZW5jZSBoYXZpbmcgaXQgd29yawp0aGUgc2FtZSB3YXkgYXMgTGludXggaXMgd2hhdCB3ZSBz aG91bGQgc3RyaXZlIGZvci4KCgo+IAo+IFRoYW5rcywKPiBIYW96aG9uZwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==