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: Fri, 5 Aug 2016 09:29:31 -0400 Message-ID: <20160805132931.GB22627@char.us.oracle.com> References: <20160718002912.rva5n5jbrezdchwx@hz-desktop> <20160803212548.GA16869@char.us.oracle.com> <20160804085257.gztzkil5j4csqtxc@hz-desktop> <20160804145129.GB8847@char.us.oracle.com> <20160805062511.fftpsk7x527thecc@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: <20160805062511.fftpsk7x527thecc@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+ID4gQXMgYWJvdmUsIGlmIGxpbnV4IGRyaXZlciBkZXRlY3RzIHRoZSBzaWduYXR1cmUgIk5W RElNTV9QRk5fSU5GTyIgYW5kCj4gPiA+IGEgbWF0Y2hlZCBjaGVja3N1bSwgaXQgd2lsbCBrbm93 IGl0J3Mgc2FmZSB0byB3cml0ZSB0byB0aGUgcmVzZXJ2ZWQKPiA+ID4gYXJlYS4gT3RoZXJ3aXNl LCBpdCB3aWxsIHRyZWF0IHRoZSBwbWVtIG5hbWVzcGFjZSBhcyBhIHJhdyBkZXZpY2UgYW5kCj4g PiA+IHN0b3JlIHBhZ2Ugc3RydWN0J3MgaW4gdGhlIG5vcm1hbCBSQU0uCj4gPiAKPiA+IE9LLCBz byBteSB3b3JyeSBpcyB0aGF0IHdlIHdpbGwgaGF2ZSBhIGRpdmVyZ2VuY2UuIFdoaWNoIGlzIHRo YXQKPiA+IHRoZSBzeXN0ZW0gYWRtaW4gY3JlYXRlcyB0aGlzIHVuZGVyIG5kY3RsIHYwLCBib290 cyBYZW4gdXNlcyBpdC4KPiA+IFRoZW4gbW92ZXMgdGhlIE5WRElNTSB0byBhbm90aGVyIG1hY2hp bmUgd2hpY2ggaGFzIG5kY3RsIHYxIGFuZAo+ID4gaGUvc2hlIGJvb3RzIGluIExpbnV4Lgo+ID4g Cj4gPiBMaW51eCBnZXRzIGFsbCBjb25mdXNlZCBiL2MgdGhlIHJlZ2lvbiBoYXMgc29tZXRoaW5n IGl0IGNhbid0IHVuZGVyc3RhbmQKPiA+IGFuZCB0aGUgdXNlciBpcyB2ZXJ5IGFuZ3J5Lgo+ID4g Cj4gPiBTbyBpdCBzb3VuZHMgbGlrZSB0aGUgc2l6ZSB0aGUgbmRjdGwgcmVzZXJ2ZXMgTVVTVCBi ZSBiYWtlZCBpbiBhbiBBQkkKPiA+IGFuZCBtYWRlIHN1cmUgdG8gZXhwYW5kIGlmIG5lZWRlZC4K PiA+Cj4gCj4gbmRjdGwgaXMgYSBtYW5hZ2VtZW50IHRvb2wgd2hpY2ggcGFzc2VzIGFsbCBpdHMg cmVxdWVzdHMgdG8gdGhlIGRyaXZlcgo+IHZpYSBzeXNmcywgc28gdGhlIGNvbXBhdGliaWxpdHkg YWNyb3NzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBMaW51eAo+IHdvdWxkIGFjdHVhbCBiZSBpbnRy b2R1Y2VkIGJ5IHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgZHJpdmVycy4KPiAKPiBBbGwgbmV3 ZXIgdmVyc2lvbnMgb2YgZHJpdmVycyBzaG91bGQgcHJvdmlkZSBiYWNrd2FyZHMgY29tcGF0aWJp bGl0eQo+IHRvIHByZXZpb3VzIHZlcnNpb25zICh3aGljaCBpcyB0aGUgY3VycmVudCBkcml2ZXJz Jwo+IGJlaGF2aW9yKS4gSG93ZXZlciwgdGhlIGZvcndhcmRzIGNvbXBhdGliaWxpdHkgaXMgaGFy ZCB0byBwcmVzZXJ2ZWQsCj4gZS5nLgo+ICAtIGFuIG9sZCB2ZXJzaW9uIHcvbyByZXNlcnZlZCBh cmVhIHN1cHBvcnQgKGUuZy4gdGhlIG9uZSBpbiBsaW51eAo+ICAgIGtlcm5lbCA0LjIpIHJlY29n bml6ZXMgYSBwbWVtIG5hbWVzcGFjZSB3LyByZXNlcnZlZCBhcmVhIGFzIGEgcmF3Cj4gICAgZGV2 aWNlIGFuZCBtYXkgd3JpdGUgdG8gdGhlIHJlc2VydmVkIGFyZWEuIElmIGl0J3MgYSB4ZW4gcmVz ZXJ2ZWQKPiAgICBhcmVhIGFuZCB0aGUgZHJpdmVyIGlzIGluIGRvbTAsIHRoZSBkb20wIGtlcm5l bCB3aWxsIGNyYXNoLgoKWWlrZXMhCj4gICAgCj4gIC0gdGhlIHNhbWUgY3Jhc2ggd291bGQgaGFw cGVuIGlmIGFuIG9sZCB2ZXJzaW9uIGRyaXZlciB3LyByZXNlcnZlZAo+ICAgIGFyZWEgc3VwcG9y dCBidXQgeGVuIHJlc2VydmVkIGFyZWEgc3VwcG9ydCAoZS5nLiB0aGUgb25lIGluIGxpbnV4Cj4g ICAga2VybmVsIDQuNykgaXMgdXNlZCBmb3IgYSBwbWVtIG5hbWVzcGFjZSB3LyB4ZW4gcmVzZXJ2 ZWQgYXJlYS4KPiAKPiBGb3IgdGhlIGNyb3NzLU9TIGNvbXBhdGliaWxpdHksIHRoZXJlIGlzIGFu IGVmZm9ydCB0byBzdGFuZGFyZGl6ZSB0aGUKPiByZXNlcnZhdGlvbi4gSW4gdGhlIG1lYW50aW1l LCBvbmx5IGxpbnV4IGlzIGNhcGFibGUgdG8gaGFuZGxlIHN1Y2gKPiBwbWVtIG5hbWVzcGFjZXMg d2l0aCByZXNlcnZlZCBhcmVhLgoKSXQgbWF5IGJlIGdvb2QgdG8gbWVudGlvbiB0aGVzZSBkaWZm aWN1bHRpZXMgeW91IGVudW1lcmF0ZWQgaW4gdGhlIGRlc2lnbgpkb2Mgc28gaWYgc29tZWJvZHkg ZG9lcyBlbmQgdXAgaW4gdGhpcyBwb3NpdGlvbiBhbmQgdGhleSBzZWFyY2ggZm9yIGl0IC0gdGhl eQpjb3VsZCBmaW5kIGEgcmVmZXJlbmNlLgoKPiAKPiA+IC4uc25pcC4uCj4gPiA+ID4gVGhpcyAi YmFsbG9vbiBvdXQiIGlzIGludGVyZXN0aW5nLiBZb3UgYXJlIGVmZmVjdGl2ZWx5IHRlbGxpbmcg TGludXgKPiA+ID4gPiB0byBpZ25vcmUgYSBjZXJ0YWluIHJhbmdlIG9mICdzdHJ1Y3QgcGFnZV9p bmZvJywgc28gdGhhdCBpZiBzb21lYm9keQo+ID4gPiA+IHVzZXMgL3N5cy9kZWJ1Zy9rZXJuZWwv cGFnZV93YWxrIGl0IHdvbid0IGJsb3cgdXA/IChBcyB0aGUga2VybmUKPiA+ID4gPiBjYW4ndCBy ZWFkIHRoZSBzdHJ1Y3QgcGFnZV9pbmZvIGFueW1vcmUpLgo+ID4gPiA+Cj4gPiA+ID4gSG93IHdv dWxkIHlvdSBkbyB0aGlzPyBTaW11bGF0ZSBhbiBOVkRJTU0gdW5wbHVnPwo+ID4gPiAKPiA+ID4g cy9wYWdlX2luZm8vcGFnZS8gKHN0cnVjdCBwYWdlIGZvciBsaW51eCwgc3RydWN0IHBhZ2VfaW5m byBmb3IgeGVuKQo+ID4gPiAKPiA+ID4gQXMgaW4gSmFuJ3MgY29tbWVudCwgImJhbGxvb24gb3V0 IiBpcyBhIGNvbmZ1c2luZyBuYW1lIGhlcmUuCj4gPiA+IEJhc2ljYWxseSwgaXQncyB0byByZW1v dmUgdGhlIHJlc2VydmVkIGFyZWEgZnJvbSBzb21lIHJlc291cmNlIHN0cnVjdAo+ID4gPiBpbiBu dmRpbW0gZHJpdmVyIHRvIGF2b2lkIGl0J3MgYWNjZXNzZWQgb3V0IG9mIHRoZSBkcml2ZXIgdmlh IHRoZQo+ID4gPiByZXNvdXJjZSBzdHJ1Y3QuIEFuZCB0aGUgbnZkaW1tIGRyaXZlciBkb2VzIG5v dCBtYXAgdGhlIHJlc2VydmVkIGFyZWEsCj4gPiA+IHNvIEkgdGhpbmsgaXQgY2Fubm90IGJlIHRv dWNoZWQgdmlhIHBhZ2Vfd2Fsay4KPiA+IAo+ID4gT0ssIEkgbmVlZCB0byByZWFkIHRoZSBMaW51 eCBjb2RlIG1vcmUgdG8gbWFrZSBzdXJlIEkgYW0KPiA+IG5vdCBtaXNzaW5nIHNvbWV0aGluZy4K PiA+IAo+ID4gQmFzaWNhbGx5IHRoZSBxdWVzdGlvbiB0aGF0IGtlZXBzIHJldm9sdmluZyBpbiBt eSBoZWFkIGlzOgo+ID4gCj4gPiBXaHkgaXMgdGhpcyBldmVuIG5lY2Nlc3Nhcnk/Cj4gPiAKPiA+ IExldCBtZSBleHBhbmQgLSBpdCBmZWVscyBsaWtlIChhbmQgSSB0aGluayBJIGFtIG1pc3Npbmcg c29tZXRoaW5nCj4gPiBoZXJlKSB0aGF0IHdlIGFyZSBjcmlwcGxpbmcgdGhlIExpbnV4IGRyaXZl ciBzbyB0aGF0IGl0IHdvbid0Cj4gPiBicmVhayAtIGIvYyBpZiBpdCB0cmllZCB0byBhY2Nlc3Mg dGhlICdzdHJ1dCBwYWdlX2luZm8nIGluIHRoaXMKPiA+IHJlc2VydmVkIHJlZ2lvbiBpdCB3b3Vs ZCBjcmFzaC4gU28gd2UgZWxpbWluYXRlIHRoYXQsIGFuZCBtYWtlCj4gPiB0aGUgZHJpdmVyIGJl bGlldmUgdGhlIHJlZ2lvbiBleGlzdHMgKGlzIHJlc2VydmVkKSwgYnV0IGl0IGNhbid0Cj4gPiB1 c2UgaXQuIEFuZCBpbnN0ZWFkIHVzZSB0aGUgbm9ybWFsIFJBTSBwYWdlcyB0byBrZWVwIHRyYWNr Cj4gPiBvZiB0aGUgTlZESU1NIFNQQXMuCj4gPiAKPiA+IE9yIHBlcmhhcHMgbm90IGtlZXAgdHJh Y2sgYXQgYWxsIGFuZCBqdXN0IHRyZWF0IHRoZSB3aG9sZQo+ID4gTlZESU1NIGFzIG9wYXF1ZSBN TUlPIHRoYXQgaXMgaW5hY2Nlc3NpYmxlPwo+ID4KPiAKPiBJZiB3ZSB0cnVzdCB0aGUgZHJpdmVy IGluIGRvbTAga2VybmVsIGFsd2F5cyBkb2VzIGNvcnJlY3QgdGhpbmdzIChhbmQKPiB3ZSBjYW4g dHJ1c3QgaXQsIHJpZ2h0PyksIG5vIGNyYXNoIHdpbGwgaGFwcGVuLiBIb3dldmVyLCBhcyBKYW4K PiBjb21tZW50IChodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVu LWRldmVsLzIwMTYtMDgvbXNnMDA0MzMuaHRtbCk6Cj4gCj4gfCBSaWdodCBub3cgRG9tMCBpc24n dCBhbGxvd2VkIHRvIGFjY2VzcyBhbnkgbWVtb3J5IGluIHVzZSBieSBYZW4KPiB8IChhbmQgbm90 IGV4cGxpY2l0bHkgc2hhcmVkKSwgYW5kIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIGRldmlhdGUK PiB8IGZyb20gdGhhdCBtb2RlbCBmb3IgcG1lbS4KPiAKPiB4ZW4gaHlwZXJ2aXNvciBtdXN0IGV4 cGxpY2l0bHkgZGlzYWxsb3cgZG9tMCBmcm9tIGFjY2Vzc2luZyB0aGUKPiByZXNlcnZlZCBhcmVh LgoKUmlnaHQuCj4gCj4gPiBCdXQgaG93IHdpbGwgdGhhdCB3b3JrIGlmIHRoZXJlIGlzIGEgREFY IGZpbGVzeXN0ZW0gb24gaXQ/Cj4gPiBUaGUgZXh0NCBuZWVkcyBzb21lIG1lY2hhbmlzbSB0byBh Y2Nlc3MgdGhlIGZpbGVzIHRoYXQgYXJlIHRoZXJlLgo+ID4gKE90aGVyd2lzZSB5b3UgY291bGRu J3QgdXNlIHRoZSBmaWVtYXAgaW9jdGwgdG8gZmluZCB0aGUgU1BBcykuCj4gPgo+IAo+IE5vLCB0 aGUgZmlsZSBzeXN0ZW0gZG9lcyBub3QgdG91Y2ggdGhlIHJlc2VydmVkIGFyZWEuIElmIGEgcmVz ZXJ2ZWQKCkFoLCBPSyEKPiBhcmVhIGV4aXN0cywgdGhlIHN0YXJ0IFNQQSBvZiAvZGV2L3BtZW0w IHJlcG9ydGVkIHZpYSBzeXNmcyBpcyB0aGUKPiBzdGFydCBTUEEgb2YgdGhlIHJlc2VydmVkIGFy ZWEsIHNvIGZpZW1hcCBjYW4gc3RpbGwgd29yay4KPiAKPiA+IFtzZWUgYmVsb3ddCj4gPiA+IAo+ ID4gPiA+IAo+ID4gPiA+IEJ1dCBpZiB5b3UgZG8gdGhhdCBob3cgd2lsbCBTTUFSVCB0b29scyB3 b3JrIGFueW1vcmU/IEFuZAo+ID4gPiA+IHdobyB3b3VsZCBkbyB0aGUgX0RTTSBjaGVja3Mgb24g dGhlIGhlYWx0aCBvZiB0aGUgTlZESU1NPwo+ID4gPiA+Cj4gPiA+IAo+ID4gPiBBIHVzZXJzcGFj ZSBTTUFSVCB0b29sIGNhbm5vdCBhY2Nlc3MgdGhlIHJlc2VydmVkIGFyZWEsIHNvIEkgdGhpbmsg aXQKPiA+ID4gY2FuIHN0aWxsIHdvcmsuIEkgaGF2ZW4ndCBsb29rIGF0IHRoZSBpbXBsZW1lbnRh dGlvbiBvZiBhbnkgU01BUlQKPiA+ID4gdG9vbHMgZm9yIE5WRElNTSwgYnV0IEkgZ3Vlc3MgdGhl eSB3b3VsZCBmaW5hbGx5IGNhbGwgdGhlIGRyaXZlciB0bwo+ID4gPiBldmFsdWF0ZSB0aGUgQVJT IF9EU00gd2hpY2ggcmVwb3J0cyB0aGUgYmFkIGJsb2Nrcy4gQXMgbG9uZyBhcyB0aGUKPiA+ID4g ZHJpdmVyIGRvZXMgbm90IHJldHVybiB0aGUgYmFkIGJsb2NrcyBpbiB0aGUgcmVzZXJ2ZWQgYXJl YSB0byBTTUFSVAo+ID4gPiB0b29scyAod2hpY2ggSSBzdXBwb3NlIHRvIGJlIGhhbmRsZWQgYnkg ZHJpdmVyIGl0c2VsZiksIFNNQVJUIHRvb2xzCj4gPiA+IHNob3VsZCB3b3JrIGZpbmUuCj4gPiA+ IAo+ID4gPiA+IC9tZSBzY3JhdGNoZXMgaGlzIGhlYWQuIFBlcmhhcHMgdGhlIGFuc3dlcnMgYXJl IGxhdGVyIGluIHRoaXMKPiA+ID4gPiBkZXNpZ24uLgo+ID4gCj4gPiBTbyBJIHRoaW5rIEkgZmln dXJlZCBvdXQgdGhlIGlzc3VlIGhlcmUhIQo+ID4gCj4gPiBZb3UganVzdCB3YW50IHRvIGhhdmUg dGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgdG8gdXNlIG5vcm1hbCBSQU0KPiA+IHBhZ2VzIHRvIGtl ZXAgdHJhY2sgb2YgdGhlIE5WRElNTSBTUEEgcmFuZ2VzLgo+IAo+IFllcywgdGhpcyBpcyB3aGF0 IHRoZSBjdXJyZW50IGRyaXZlciBkb2VzIGZvciBhIHJhdyBkZXZpY2UuCj4gCj4gPiBBcyBpbiB0 cmVhdCB0aGUgTlZESU1NIGFzIGlmIGl0IGlzIG5vcm1hbCBSQU0/Cj4gCj4gSWYgeW91IGFyZSB0 YWxraW5nIGFib3V0IHRoZSBsb2NhdGlvbiBvZiBwYWdlIHN0cnVjdCwgdGhlbiB5ZXMuICBUaGUK PiBwYWdlIHN0cnVjdCdzIGZvciBOVkRJTU0gaXMgcHV0IGluIHRoZSBub3JtYWwgUkFNIGp1c3Qg bGlrZSB0aGUgcGFnZQo+IHN0cnVjdCdzIGZvciB0aGUgbm9ybWFsIFJBTS4gQnV0IE5WRElNTSBj YW4gbmV2ZXIsIGZvciBleGFtcGxlLCBiZQo+IGFsbG9jYXRlZCB2aWEgdGhlIGtlcm5lbCBtZW1v cnkgYWxsb2NhdG9yIChidWRkeS9zbGFiL2V0Yy4pLgoKUmlnaHQuIEkgd2FzIHRoaW5raW5nIG9m IHBhZ2Ugc3RydWN0IGxvY2F0aW9uLgo+IAo+ID4gCj4gPiBbT3IgaXMgTGludXggdHJlYXRpbmcg dGhpcyBhcmVhIGFzIE1NSU8gcmVnaW9uIChpbiB3aWhjaCBjYXNlIGl0IGRvZXMgbm90Cj4gPiBu ZWVkIHN0cnVjdCBwYWdlX2luZm8pPz9dCj4gPgo+ID4gQW5kIHRoZW4gWGVuIGNhbiB1c2UgdGhp cyByZXNlcnZlZCByZWdpb24gZm9yIGl0cyBvd24KPiA+IHB1cnBvc2UhCj4gPiAKPiA+IFBlcmhh cHMgdGhlbiB0aGUgc2VjdGlvbiB0aGF0IGV4cGxhaW5zIHRoaXMgJ3Jlc2VydmVkIHJlZ2lvbicg Y291bGQKPiA+IHNheSBzb21ldGhpbmcgYWxvbmc6Cj4gPiAKPiA+ICJXZSBuZWVkIHRvIGtlZXAg dHJhY2sgb2YgdGhlIFNQQXMuIFRoZSBndWVzdCBOVkRJTU0gJ2ZpbGUnCj4gPiBvbiB0aGUgTlZE SU1NIG1heSBiZSBpbiB0aGUgd29yc3QgY2FzZSBiZSByYW5kb21seSBhbmQgaW4gZGVzY2VuZGlu Zwo+ID4gZGlzY29udGluZ291cyBvcmRlciAoc2F5IGZyb20gdGhlIGVuZCBvZiB0aGUgTlZESU1N KSwgd2UgbmVlZAo+ID4gdG8ga2VlcCB0cmFjayBvZiBlYWNoIG9mIHRoZSBTUEFzLiBUaGUgcmVh c29uIGlzIHRoYXQgd2UgbmVlZAo+ID4gdGhlIFNQQXMgd2hlbiB3ZSBwb3B1bGF0ZSB0aGUgZ3Vl c3QgRVBULgo+ID4gCj4gPiBBcyBzdWNoIHdlIGNhbiBzdG9yZSB0aGUgZ3Vlc3QgU1BBIGluIG1l bW9yeSAobGluZWFyIGFycmF5PykKPiA+IG9yIHJlZC1ibGFjayB0cmVlLCBvciBhbnkgb3RoZXIg LSBidXQgYWxsIG9mIHRoZW0gd2lsbCBjb25zdW1lCj4gPiAibm9ybWFsIFJBTSIuIEFuZCB3aXRo IHN1ZmZpY2llbnQgbGFyZ2UgZW5vdWdoIE5WRElNTSB3ZSBtYXkKPiA+IG5vdCBoYXZlIGVub3Vn aCAnbm9ybWFsIFJBTScgdG8gc3RvcmUgdGhpcy4KPiA+IAo+ID4gQWxzbyB3ZSBvbmx5IG5lZWQg dG8ga25vdyB0aGVzZSBTUEFzIGR1cmluZyBndWVzdCBjcmVhdGlvbiwKPiA+IGRlc3RydWN0aW9u LCBiYWxsb29uaW5nLCBldGMgLSBoZW5jZSB3ZSBtYXkgc3RvcmUgdGhlbSBvbiB0aGUKPiA+IE5W RElNTSBpdHNlbGYuIEZvcnR1bmF0bHkgZm9yIHVzIHRoZSBuZGN0bCBhbmQgTGludXggYXJlCj4g PiBhdmFpbGFibGUgd2hpY2ggY2FydmUgb3V0IHJpZ2h0IGFmdGVyIHRoZSBuYW1lc3BhY2UgcmVn aW9uICgxMjhrYikKPiA+IGFuZCAncmVzZXJ2ZWQgcmVnaW9uJyB3aGljaCB0aGUgT1MgY2FuIHVz ZSB0byBzdG9yZSBpdHMKPiA+IHN0cnVjdCBwYWdlX2luZm8gdG8gY292ZXIgdGhlIGZ1bGwgcmFu Z2Ugb2YgdGhlIE5WRElNTS4KPiA+IAo+ID4gVGhlIGNvbXBsZXhpdHkgaW4gdGhpcyBpcyB0aGF0 Ogo+ID4gIC0gV2UgTVVTVCBtYWtlIHN1cmUgTGludXggZG9lcyBub3QgdHJ5IHRvIHVzZSBpdCB3 aGlsZQo+ID4gICAgd2UgdXNlIGl0Lgo+ID4gIC0gVGhhdCB0aGUgc2l6ZSBvZiB0aGlzICdyZXNl cnZlZCByZWdpb24nIGlzIHN1ZmZpY2llbnRseQo+ID4gICAgbGFyZ2UgZm9yIG91ciAnc3RydWN0 IHBhZ2VfaW5mbycgc3RydWN0dXJlLgo+ID4gIC0gVGhlIGxheW91dCBoYXMgYW4gQUJJIGJha2Vk Lgo+ID4gIC0gTGludXggZnMnZXMgd2l0aCBEQVggc3VwcG9ydCBNVVNUIGJlIGFibGUgbWxvY2sg dGhlc2UgU1BBCj4gPiAgICByZWdpb25zIChzbyB0aGF0IG5vYm9keSB0cmllcyB0byByZW1vdmUg dGhlICdmaWxlJyB3aGlsZQo+ID4gICAgYSBndWVzdCBpcyB1c2luZyBpdCkuCj4gCj4gSSBuZWVk IHRvIGNoZWNrIHdoZXRoZXIgbGludXggY3VycmVudGx5IGRvZXMgdGhpcy4KPiAKPiA+ICAtIExp bnVzIGZzJ2VzIHdpdGggREFYIHN1cHBvcnQgTVVTVCBiZSBhYmxlIHRvIHJlc2l6ZSB0aGUKPiA+ ICAgICdmaWxlJywgaGVyZWJ5IHVzaW5nIG1vcmUgb2YgdGhlIFNQQXMgYW5kIHJld3JpdHRpbmcg dGhlCj4gPiAgICBwcm9wZXJ0aWVzIG9mIHRoZSBmaWxlIG9uIERBWCAod2hpY2ggc2hvdWxkIHRo ZW4gY2F1c2UgYW4KPiA+ICAgIG1lbW9yeSBob3RwbHVnIEFDUEkgaW4gdGhlIGd1ZXN0IHRyZWF0 aW5nIHRoZSBuZXcgc2l6ZSBvZgo+ID4gICAgdGhlIGZpbGUgYXMgbmV3IE5GSVQgcmVnaW9uPykK PiA+Cj4gCj4gQ3VycmVudGx5IG15IHBsYW4gaXMgdG8gZGlzYWxsb3cgc3VjaCByZXNpemluZyBh bmQgcG9zc2libHkgb3RoZXIKPiBjaGFuZ2VzIG91dCBvZiBndWVzdCBpZiBpdCdzIGJlaW5nIHVz ZWQgYnkgZ3Vlc3QgKGFraW4gdG8gZGlzaykgaW4gdGhlCj4gZmlyc3QgaW1wbGVtZW50YXRpb24u IEl0J3MgbW9zdGx5IGZvciBzaW1wbGljaXR5IGFuZCB3ZSBjYW4gYWRkIGl0IGluCj4gZnV0dXJl LiBGb3IgaG90cGx1Zywgd2UgY2FuIHBhc3MgYW5vdGhlciBmaWxlIGFzIGEgbmV3IHBtZW0gbmFt ZXNwYWNlCj4gdG8gZ3Vlc3QuCj4gCj4gPiAiCj4gPiAKPiA+IEkgdGhpbmsgdGhhdCBjb3ZlcnMg aXQ/Cj4gPiAuLnNuaXAuLgo+ID4gPiA+ID4gIE91ciBkZXNpZ24gdGFrZXMgdGhlIGZvbGxvd2lu ZyBtZXRob2QgdG8gYXZvaWQgYW5kIGRldGVjdCBjb2xsaXNpb25zLgo+ID4gPiA+ID4gIDEpIFRo ZSBkYXRhIGxheW91dCBvZiBhcmVhIHdoZXJlIFFFTVUgY29waWVzIGl0cyBORklUIGFuZCBBQ1BJ Cj4gPiA+ID4gPiAgICAgbmFtZXNwYWNlIGRldmljZXMgaXMgb3JnYW5pemVkIGFzIGJlbG93Ogo+ ID4gPiA+IAo+ID4gPiA+IFdoeSBjYW4ndCB0aGlzIGJlIGV4cHJlc3NlZCBpbiBYZW5TdG9yZT8K PiA+ID4gPiAKPiA+ID4gPiBZb3UgY291bGQgaGF2ZSAvbG9jYWwvZG9tYWluL2RvbWlkL2h2bWxv YWRlci9kbS1hY3BpLzxuYW1lPi97YWRkcmVzcyxsZW5ndGgsIHR5cGV9Cj4gPiA+ID4gPwo+ID4g PiA+Cj4gPiA+IAo+ID4gPiBJZiBYZW5TdG9yZSBjYW4gYmUgdXNlZCwgdGhlbiBpdCBjb3VsZCBz YXZlIHNvbWUgZ3Vlc3QgbWVtb3J5Lgo+ID4gCj4gPiBJdCBpcyBhbHNvIGVhc2llciB0aGFuIHJl bGF5aW5nIG9uIHRoZSBmb3JtYXQgb2YgYSBibG9iIGluIG1lbW9yeS4KPiA+ID4gCj4gPiA+IFRo aXMgaXMgYSBnZW5lcmFsIG1lY2hhbmlzbSB0byBwYXNzIEFDUEkgd2hpY2ggYW5kIGlzIG5vdCBs aW1pdGVkIHRvCj4gPiA+IE5WRElNTSwgc28gaXQgbWVhbnMgUUVNVSBtYXkgcGFzcyBhIGxvdCBv ZiBlbnRyaWVzLiBJJ20gbm90IHN1cmUgaWYKPiA+ID4gWGVuU3RvcmUgaXMgc3RpbGwgYSBwcm9w ZXIgcGxhY2Ugd2hlbiB0aGUgbnVtYmVyIGlzIGxhcmdlLiBNYXliZSB3ZQo+ID4gPiBzaG91bGQg cHV0IGFuIHVwcGVyIGxpbWl0IGZvciB0aGUgbnVtYmVyIG9mIGVudHJpZXMuCj4gPiAKPiA+IFdo eSBwdXQgYSBsaW1pdCBvbiBpdD8gSXQgc2hvdWxkIGVhc2lseSBoYW5kbGUgdGhvdXNhbmRzIG9m IDxuYW1lPi4KPiA+IEFuZCB0aGUgb25seSBhdHRyaWJ1dGVzIHlvdSBoYXZlIHVuZGVyIDxuYW1l PiBhcmUganVzdCBhZGRyZXNzLAo+ID4gbGVuZ3RoIGFuZCB0eXBlLgo+ID4KPiAKPiBPSywgaWYg aXQncyBub3QgYSBwcm9ibGVtLCBJIHdpbGwgdXNlIHhlbnN0b3JlIHRvIHBhc3MgdGhvc2UKPiBp bmZvcm1hdGlvbi4KPiAKPiA+IC4uIHNuaXAuLgo+ID4gPiA+ID4gNC4zLjIgRW11bGF0aW5nIEd1 ZXN0IF9EU00KPiA+ID4gPiA+IAo+ID4gPiA+ID4gIE91ciBkZXNpZ24gbGVhdmVzIHRoZSBlbXVs YXRpb24gb2YgZ3Vlc3QgX0RTTSB0byBRRU1VLiBKdXN0IGFzIHdoYXQKPiA+ID4gPiA+ICBpdCBk b2VzIHdpdGggS1ZNLCBRRU1VIHJlZ2lzdGVycyB0aGUgX0RTTSBidWZmZXIgYXMgTU1JTyByZWdp b24gd2l0aAo+ID4gPiA+ID4gIFhlbiBhbmQgdGhlbiBhbGwgZ3Vlc3QgZXZhbHVhdGlvbnMgb2Yg X0RTTSBhcmUgdHJhcHBlZCBhbmQgZW11bGF0ZWQKPiA+ID4gPiA+ICBieSBRRU1VLgo+ID4gPiA+ IAo+ID4gPiA+IFN3ZWV0IQo+ID4gPiA+IAo+ID4gPiA+IFNvIG9uZSBxdWVzdGlvbiB0aGF0IEkg YW0gbm90IGlmIGl0IGhhcyBiZWVuIGFuc3dlcmVkLCB3aXRoIHRoZQo+ID4gPiA+ICdzdHJ1Y3Qg cGFnZV9pbmZvJyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGRvbTAgaG93IHdpbGwgT0VNIF9EU00g bWV0aG9kCj4gPiA+ID4gb3BlcmF0aW9uPyBGb3IgZXhhbXBsZSBzb21lIG9mIHRoZSBBTUwgY29k ZSBtYXkgYXNraW5nIHRvIHBva2UKPiA+ID4gPiBhdCBzcGVjaWZpYyBTUEFzLCBidXQgaG93IHdp bGwgTGludXggZG8gdGhpcyBwcm9wZXJseSB3aXRob3V0Cj4gPiA+ID4gJ3N0cnVjdCBwYWdlX2lu Zm8nIGJlIGF2YWlsYWJsZT8KPiA+ID4gPgo+ID4gPiAKPiA+ID4gKHMvcGFnZV9pbmZvL3BhZ2Uv KQo+ID4gPiAKPiA+ID4gVGhlIGN1cnJlbnQgSW50ZWwgTlZESU1NIGRyaXZlciBpbiBMaW51eCBk b2VzIG5vdCBldmFsdWF0ZSBhbnkgT0VNCj4gPiA+IF9EU00gbWV0aG9kLCBzbyBJJ20gbm90IHN1 cmUgd2hldGhlciB0aGUga2VybmVsIGhhcyB0byBhY2Nlc3MgYSBOVkRJTU0KPiA+ID4gcGFnZSBk dXJpbmcgZXZhbHVhdGluZyBfRFNNLgo+ID4gPiAKPiA+ID4gVGhlIG1vc3QgY2xvc2Ugb25lIGlu IG15IG1pbmQsIHRob3VnaCBub3QgYW4gT0VNIF9EU00sIGlzIGZ1bmN0aW9uIDEKPiA+ID4gb2Yg QVJTIF9EU00sIHdoaWNoIHJlcXVpcmVzIGlucHV0cyBvZiBhIHN0YXJ0IFNQQSBhbmQgYSBsZW5n dGggaW4KPiA+ID4gYnl0ZXMuIEFmdGVyIGtlcm5lbCBnaXZlcyB0aGUgaW5wdXRzLCB0aGUgc2Ny dWJiaW5nIG9mIHRoZSBzcGVjaWZpZWQKPiA+ID4gYXJlYSBpcyBkb25lIGJ5IHRoZSBoYXJkd2Fy ZSBhbmQgZG9lcyBub3QgcmVxdWlyZXMgYW55IG1hcHBpbmdzIGluIE9TLgo+ID4gCj4gPiA8bm9k cz4KPiA+ID4gCj4gPiA+IEFueSBleGFtcGxlIG9mIHN1Y2ggT0VNIF9EU00gbWV0aG9kcz8KPiA+ IAo+ID4gSSBjYW4ndCB0aGluayBvZiBhbnkgcmlnaHQgbm93IC0gYnV0IHRoYXQgaXMgdGhlIGRh bmdlciBvZiBPRU1zIC0gdGhleQo+ID4gbWF5IGRlY2lkZSB0byBkbyBzb21ldGhpbmcgLi4gaWxs IGFkdmlzYWJsZS4gSGVuY2UgaGF2aW5nIGl0IHdvcmsKPiA+IHRoZSBzYW1lIHdheSBhcyBMaW51 eCBpcyB3aGF0IHdlIHNob3VsZCBzdHJpdmUgZm9yLgo+ID4gCj4gCj4gSSBzZWU6IHRob3VnaCB0 aGUgZXZhbHVhdGlvbiBpdHNlbGYgZG9lcyBub3QgdXNlIGFueSBzb2Z0d2FyZQo+IG1haW50YWlu ZWQgbWFwcGluZ3MsIHRoZSBkcml2ZXIgbWF5IHVzZSB3aGVuIGhhbmRsaW5nIHRoZSByZXN1bHQg b2YKPiBldmFsdWF0aW9uLCBlLmcuIEFSUyBfRFNNIHJlcG9ydHMgYmFkIGJsb2NrcyBpbiB0aGUg cmVzZXJ2ZWQgYXJlYSBhbmQKPiB0aGUgZHJpdmVyIG1heSB0aGVuIGhhdmUgdG8gYWNjZXNzIHRo ZSByZXNlcnZlZCBhcmVhICh0aG91Z2ggdGhpcwo+IGNvdWxkIG5ldmVyIGhhcHBlbiBpbiB0aGUg Y3VycmVudCBrZXJuZWwgYmVjYXVzZSB0aGUgZHJpdmVyIGRvZXMgQVJTCj4gYmVmb3JlIHJlc2Vy dmF0aW9uKS4KPiAKPiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gT0VNIF9EU00gc3VwcG9ydCBpbiBs aW51eCBrZXJuZWwsIHNvIEkgY2Fubm90Cj4gdGhpbmsgb2YgYW55IHNvbHV0aW9uLiBIb3dldmVy LCBpZiBzdWNoIGFuIE9FTSBfRFNNIGNvbWVzLCB3ZSBtYXkgYWRkCj4geGVuIHNwZWNpZmljIGhh bmRsaW5nIHRvIHRoZSBkcml2ZXIgb3IgaW50cm9kdWNlIGEgd2F5IGluIG52ZGltbQo+IGRyaXZl ciBmcmFtZXdvcmsgdG8gYXZvaWQgYWNjZXNzaW5nIHRoZSByZXNlcnZlZCBhcmVhIGluIGNlcnRh aW4KPiBjaXJjdW1zdGFuY2VzIChlLmcuIHdoZW4gdXNlZCBpbiB4ZW4gZG9tMCkuCgpUaGFua3Mh Cj4gCj4gVGhhbmtzLAo+IEhhb3pob25nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK