From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: Re: [RFC Design Doc] Add vNVDIMM support for Xen Date: Wed, 24 Feb 2016 21:28:55 +0800 Message-ID: <20160224132855.GA2627@hz-desktop.sh.intel.com> References: <20160201054414.GA25211@hz-desktop.sh.intel.com> <56C60AB102000078000D3D22@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <56C60AB102000078000D3D22@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: Juergen Gross , Kevin Tian , Wei Liu , Ian Campbell , Stefano Stabellini , George Dunlap , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Jun Nakajima , Xiao Guangrong , Keir Fraser List-Id: xen-devel@lists.xenproject.org T24gMDIvMTgvMTYgMTA6MTcsIEphbiBCZXVsaWNoIHdyb3RlOgo+ID4+PiBPbiAwMS4wMi4xNiBh dCAwNjo0NCwgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4gd3JvdGU6Cj4gPiAgVGhpcyBkZXNp Z24gdHJlYXRzIGhvc3QgTlZESU1NIGRldmljZXMgYXMgb3JkaW5hcnkgTU1JTyBkZXZpY2VzOgo+ IAo+IFdydCB0aGUgY2FjaGFiaWxpdHkgbm90ZSBlYXJsaWVyIG9uLCBJIGFzc3VtZSB5b3UncmUg YXdhcmUgdGhhdCB3aXRoCj4gdGhlIFhTQS0xNTQgY2hhbmdlcyB3ZSBkaXNhbGxvdyBhbnkgY2Fj aGFibGUgbWFwcGluZ3Mgb2YgTU1JTwo+IGJ5IGRlZmF1bHQuCj4KCkVQVCBlbnRyaWVzIHRoYXQg bWFwIHRoZSBob3N0IE5WRElNTSBTUEFzIHRvIGd1ZXN0IHdpbGwgYmUgdGhlIG9ubHkKbWFwcGlu ZyB1c2VkIGZvciBOVkRJTU0uIElmIHRoZSBtZW1vcnkgdHlwZSBpbiB0aGUgbGFzdCBsZXZlbCBl bnRyaWVzIGlzCmFsd2F5cyBzZXQgdG8gdGhlIHNhbWUgdHlwZSByZXBvcnRlZCBieSBORklUIGFu ZCB0aGUgaXBhdCBiaXQgaXMgYWx3YXlzCnNldCBhcyB3ZWxsLCBJIHRoaW5rIGl0IHdvdWxkIG5v dCBzdWZmZXIgZnJvbSB0aGUgY2FjaGUtdHlwZQppbmNvbnNpc3RlbmN5IHByb2JsZW0gaW4gWFNB LTE1ND8KCj4gPiAgKDEpIERvbTAgTGludXggTlZESU1NIGRyaXZlciBpcyByZXNwb25zaWJsZSB0 byBkZXRlY3QgKHRocm91Z2ggTkZJVCkKPiA+ICAgICAgYW5kIGRyaXZlIGhvc3QgTlZESU1NIGRl dmljZXMgKGltcGxlbWVudGluZyBibG9jayBkZXZpY2UKPiA+ICAgICAgaW50ZXJmYWNlKS4gTmFt ZXNwYWNlcyBhbmQgZmlsZSBzeXN0ZW1zIG9uIGhvc3QgTlZESU1NIGRldmljZXMKPiA+ICAgICAg YXJlIGhhbmRsZWQgYnkgRG9tMCBMaW51eCBhcyB3ZWxsLgo+ID4gCj4gPiAgKDIpIFFFTVUgbW1h cCgyKSB0aGUgcG1lbSBOVkRJTU0gZGV2aWNlcyAoL2Rldi9wbWVtMCkgaW50byBpdHMKPiA+ICAg ICAgdmlydHVhbCBhZGRyZXNzIHNwYWNlIChidWYpLgo+ID4gCj4gPiAgKDMpIFFFTVUgZ2V0cyB0 aGUgaG9zdCBwaHlzaWNhbCBhZGRyZXNzIG9mIGJ1ZiwgaS5lLiB0aGUgaG9zdCBzeXN0ZW0KPiA+ ICAgICAgcGh5c2ljYWwgYWRkcmVzcyB0aGF0IGlzIG9jY3VwaWVkIGJ5IC9kZXYvcG1lbTAsIGFu ZCBjYWxscyBYZW4KPiA+ICAgICAgaHlwZXJjYWxsIFhFTl9ET01DVExfbWVtb3J5X21hcHBpbmcg dG8gbWFwIGl0IHRvIGEgRG9tVS4KPiA+IAo+ID4gIChBQ1BJIHBhcnQgaXMgZGVzY3JpYmVkIGlu IFNlY3Rpb24gMy4zIGxhdGVyKQo+ID4gCj4gPiAgQWJvdmUgKDEpKDIpIGhhdmUgYWxyZWFkeSBi ZWVuIGRvbmUgaW4gY3VycmVudCBRRU1VLiBPbmx5ICgzKSBpcwo+ID4gIG5lZWRlZCB0byBpbXBs ZW1lbnQgaW4gUUVNVS4gTm8gY2hhbmdlIGlzIG5lZWRlZCBpbiBYZW4gZm9yIGFkZHJlc3MKPiA+ ICBtYXBwaW5nIGluIHRoaXMgZGVzaWduLgo+ID4gCj4gPiAgT3BlbjogSXQgc2VlbXMgbm8gc3lz dGVtIGNhbGwvaW9jdGwgaXMgcHJvdmlkZWQgYnkgTGludXgga2VybmVsIHRvCj4gPiAgICAgICAg Z2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGZyb20gYSB2aXJ0dWFsIGFkZHJlc3MuCj4gPiAgICAg ICAgL3Byb2MvPHFlbXVfcGlkPi9wYWdlbWFwIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9mIG1hcHBp bmcgZnJvbQo+ID4gICAgICAgIFZBIHRvIFBBLiBJcyBpdCBhbiBhY2NlcHRhYmxlIHNvbHV0aW9u IHRvIGxldCBRRU1VIHBhcnNlIHRoaXMKPiA+ICAgICAgICBmaWxlIHRvIGdldCB0aGUgcGh5c2lj YWwgYWRkcmVzcz8KPiA+IAo+ID4gIE9wZW46IEZvciBhIGxhcmdlIHBtZW0sIG1tYXAoMikgaXMg dmVyeSBwb3NzaWJsZSB0byBub3QgbWFwIGFsbCBTUEEKPiA+ICAgICAgICBvY2N1cGllZCBieSBw bWVtIGF0IHRoZSBiZWdpbm5pbmcsIGkuZS4gUUVNVSBtYXkgbm90IGJlIGFibGUgdG8KPiA+ICAg ICAgICBnZXQgYWxsIFNQQSBvZiBwbWVtIGZyb20gYnVmIChpbiB2aXJ0dWFsIGFkZHJlc3Mgc3Bh Y2UpIHdoZW4KPiA+ICAgICAgICBjYWxsaW5nIFhFTl9ET01DVExfbWVtb3J5X21hcHBpbmcuCj4g PiAgICAgICAgQ2FuIG1tYXAgZmxhZyBNQVBfTE9DS0VEIG9yIG1sb2NrKDIpIGJlIHVzZWQgdG8g ZW5mb3JjZSB0aGUKPiA+ICAgICAgICBlbnRpcmUgcG1lbSBiZWluZyBtbWFwZWQ/Cj4gCj4gQSBm dW5kYW1lbnRhbCBxdWVzdGlvbiBJIGhhdmUgaGVyZSBpczogV2h5IGRvZXMgcWVtdSBuZWVkIHRv Cj4gbWFwIHRoaXMgYXQgYWxsPyBJdCBzaG91bGRuJ3QgaXRzZWxmIG5lZWQgdG8gYWNjZXNzIHRo b3NlIHJhbmdlcywKPiBzaW5jZSB0aGUgZ3Vlc3QgaXMgZ2l2ZW4gZGlyZWN0IGFjY2Vzcy4gSXQg d291bGQgc2VlbSBxdWl0ZSBhIGJpdAo+IG1vcmUgbmF0dXJhbCBpZiBxZW11IHNpbXBseSBpbnF1 aXJlZCB0byB1bmRlcmx5aW5nIEdGTiByYW5nZShzKQo+IGFuZCBoYW5kZWQgdGhvc2UgdG8gWGVu IGZvciB0cmFuc2xhdGlvbiB0byBNRk5zIGFuZCBtYXBwaW5nCj4gaW50byBndWVzdCBzcGFjZS4K PgoKVGhlIGFib3ZlIGRlc2lnbiBpcyBtb3JlIGxpa2UgYSBoYWNrIG9uIHRoZSBleGlzdGluZyBR RU1VCmltcGxlbWVudGF0aW9uIGZvciBLVk0gd2l0aG91dCBtb2RpZnlpbmcgdGhlIERvbTAga2Vy bmVsLgoKTWF5YmUgaXQncyBiZXR0ZXIgdG8gbGV0IFFFTVUgdG8gZ2V0IFNQQXMgZnJvbSBEb20w IGtlcm5lbCAoTlZESU1NCmRyaXZlcikgYW5kIHRoZW4gcGFzcyB0aGVtIHRvIFhlbiBmb3IgdGhl IGFkZHJlc3MgbWFwcGluZzoKKDEpIFFFTVUgcGFzc2VzIGZkIG9mIC9kZXYvcG1lbU4gb3IgZmls ZSBvbiAvZGV2L3BtZW1OIHRvIERvbTAga2VybmVsLgooMikgRG9tMCBrZXJuZWwgZmluZHMgYW5k IHJldHVybnMgYWxsIFNQQXMgb2NjdXBpZWQgYnkgL2Rldi9wbWVtTiBvcgogICAgcG9ydGlvbnMg b2YgL2Rldi9wbWVtTiB3aGVyZSB0aGUgZmlsZSBzaXRzLgooMykgUUVNVSBwYXNzZXMgYWJvdmUg U1BBcywgYW5kIEdNRk4gd2hlcmUgdGhleSB3aWxsIGJlIG1hcHBlZCB0byBYZW4KICAgIHdoaWNo IG1hcHMgU1BBcyB0byBHTUZOLgoKPiA+ICBJIG5vdGljZSB0aGF0IGN1cnJlbnQgWEVOX0RPTUNU TF9tZW1vcnlfbWFwcGluZyBkb2VzIG5vdCBtYWtlIHNhbnRpeQo+ID4gIGNoZWNrIGZvciB0aGUg cGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBwYXNzZWQgZnJvbSBjYWxsZXIKPiA+ICAoUUVNVSku IENhbiBRRU1VIGJlIGFsd2F5cyB0cnVzdGVkPyBJZiBub3QsIHdlIHdvdWxkIG5lZWQgdG8gbWFr ZSBYZW4KPiA+ICBhd2FyZSBvZiB0aGUgU1BBIHJhbmdlIG9mIHBtZW0gc28gdGhhdCBpdCBjYW4g cmVmdXNlIG1hcCBwaHlzaWNhbAo+ID4gIGFkZHJlc3MgaW4gbmVpdGhlciB0aGUgbm9ybWFsIHJh bSBub3IgcG1lbS4KPiAKPiBJJ20gbm90IHN1cmUgd2hhdCBtaXNzaW5nIHNhbml0eSBjaGVja3Mg dGhpcyBpcyBhYm91dDogVGhlIGhhbmRsaW5nCj4gaW52b2x2ZXMgdHdvIGlvbWVtX2FjY2Vzc19w ZXJtaXR0ZWQoKSBjYWxscy4KPgoKT2gsIEkgbWlzc2VkIGlvbWVtX2FjY2Vzc19wZXJtaXR0ZWQo KS4gU2VlbWluZ2x5IGl0IGlzIHdoYXQgSSBuZWVkIGlmCnRoZSBTUEEgcmFuZ2VzIG9mIGhvc3Qg TlZESU1NcyBhcmUgYWRkZWQgdG8gRG9tMCdzIGlvbWVtX2NhcCBpbml0aWFsbHkuCgo+ID4gMy4z IEd1ZXN0IEFDUEkgRW11bGF0aW9uCj4gPiAKPiA+IDMuMy4xIE15IERlc2lnbgo+ID4gCj4gPiAg R3Vlc3QgQUNQSSBlbXVsYXRpb24gaXMgY29tcG9zZWQgb2YgdHdvIHBhcnRzOiBidWlsZGluZyBn dWVzdCBORklUCj4gPiAgYW5kIFNTRFQgdGhhdCBkZWZpbmVzIEFDUEkgbmFtZXNwYWNlIGRldmlj ZXMgZm9yIE5WRElNTSwgYW5kCj4gPiAgZW11bGF0aW5nIGd1ZXN0IF9EU00uCj4gPiAKPiA+ICAo MSkgQnVpbGRpbmcgR3Vlc3QgQUNQSSBUYWJsZXMKPiA+IAo+ID4gICBUaGlzIGRlc2lnbiByZXVz ZXMgYW5kIGV4dGVuZHMgaHZtbG9hZGVyJ3MgZXhpc3RpbmcgbWVjaGFuaXNtIHRoYXQKPiA+ICAg bG9hZHMgcGFzc3Rocm91Z2ggQUNQSSB0YWJsZXMgZnJvbSBiaW5hcnkgZmlsZXMgdG8gbG9hZCBO RklUIGFuZAo+ID4gICBTU0RUIHRhYmxlcyBidWlsdCBieSBRRU1VOgo+ID4gICAxKSBCZWNhdXNl IHRoZSBjdXJyZW50IFFFTVUgZG9lcyBub3QgYnVpbGRpbmcgYW55IEFDUEkgdGFibGVzIHdoZW4K PiA+ICAgICAgaXQgcnVucyBhcyB0aGUgWGVuIGRldmljZSBtb2RlbCwgdGhpcyBkZXNpZ24gbmVl ZHMgdG8gcGF0Y2ggUUVNVQo+ID4gICAgICB0byBidWlsZCBORklUIGFuZCBTU0RUIChzbyBmYXIg b25seSBORklUIGFuZCBTU0RUKSBpbiB0aGlzIGNhc2UuCj4gPiAKPiA+ICAgMikgUUVNVSBjb3Bp ZXMgTkZJVCBhbmQgU1NEVCB0byB0aGUgZW5kIG9mIGd1ZXN0IG1lbW9yeSBiZWxvdwo+ID4gICAg ICA0Ry4gVGhlIGd1ZXN0IGFkZHJlc3MgYW5kIHNpemUgb2YgdGhvc2UgdGFibGVzIGFyZSB3cml0 dGVuIGludG8KPiA+ICAgICAgeGVuc3RvcmUgKC9sb2NhbC9kb21haW4vZG9taWQvaHZtbG9hZGVy L2RtLWFjcGkve2FkZHJlc3MsbGVuZ3RofSkuCj4gPiAKPiA+ICAgMykgaHZtbG9hZGVyIGlzIHBh dGNoZWQgdG8gcHJvYmUgYW5kIGxvYWQgZGV2aWNlIG1vZGVsIHBhc3N0aHJvdWdoCj4gPiAgICAg IEFDUEkgdGFibGVzIGZyb20gYWJvdmUgeGVuc3RvcmUga2V5cy4gVGhlIGRldGVjdGVkIEFDUEkg dGFibGVzCj4gPiAgICAgIGFyZSB0aGVuIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgZXhpc3Rpbmcg Z3Vlc3QgQUNQSSB0YWJsZXMganVzdAo+ID4gICAgICBsaWtlIHdoYXQgY3VycmVudCBjb25zdHJ1 Y3RfcGFzc3Rocm91Z2hfdGFibGVzKCkgZG9lcy4KPiA+IAo+ID4gICBSZWFzb25zIGZvciB0aGlz IGRlc2lnbiBhcmUgbGlzdGVkIGJlbG93Ogo+ID4gICAtIE5GSVQgYW5kIFNTRFQgaW4gcXVlc3Rp b24gYXJlIHF1aXRlIHNlbGYtY29udGFpbmVkLCBpLmUuIHRoZXkgZG8KPiA+ICAgICBub3QgcmVm ZXIgdG8gb3RoZXIgQUNQSSB0YWJsZXMgYW5kIG5vdCBjb25mbGljdCB3aXRoIGV4aXN0aW5nCj4g PiAgICAgZ3Vlc3QgQUNQSSB0YWJsZXMgaW4gWGVuLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8g Y29weSB0aGVtIGZyb20KPiA+ICAgICBRRU1VIGFuZCBhcHBlbmQgdG8gZXhpc3RpbmcgZ3Vlc3Qg QUNQSSB0YWJsZXMuCj4gCj4gSG93IGlzIHRoaXMgbm90IGNvbmZsaWN0aW5nIGJlaW5nIGd1YXJh bnRlZWQ/IEluIHBhcnRpY3VsYXIgSSBkb24ndAo+IHNlZSBob3cgdGFibGVzIGNvbnRhaW5pbmcg QU1MIGNvZGUgYW5kIGNvbWluZyBmcm9tIGRpZmZlcmVudAo+IHNvdXJjZXMgd29uJ3QgcG9zc2li bHkgY2F1c2UgQUNQSSBuYW1lIHNwYWNlIGNvbGxpc2lvbnMuCj4KClJlYWxseSB0aGVyZSBpcyBu byBlZmZlY3RpdmUgbWVjaGFuaXNtIHRvIGF2b2lkIEFDUEkgbmFtZSBzcGFjZQpjb2xsaXNpb25z IChhbmQgb3RoZXIga2luZHMgb2YgY29uZmxpY3RzKSBiZXR3ZWVuIEFDUEkgdGFibGVzIGxvYWRl ZApmcm9tIFFFTVUgYW5kIEFDUEkgdGFibGVzIGJ1aWx0IGJ5IGh2bWxvYWRlci4gQmVjYXVzZSB3 aGljaCBBQ1BJIHRhYmxlcwphcmUgbG9hZGVkIGlzIGRldGVybWluZWQgYnkgZGV2ZWxvcGVycywg SU1PIGl0J3MgZGV2ZWxvcGVycycKcmVzcG9uc2liaWxpdHkgdG8gYXZvaWQgYW55IGNvbGxpc2lv bnMgYW5kIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIEFDUEkKdGFibGVzLgoKPiA+IDMuMy4zIEFs dGVybmF0aXZlIERlc2lnbiAyOiBrZWVwaW5nIGluIFhlbgo+ID4gCj4gPiAgQWx0ZXJuYXRpdmUg dG8gc3dpdGNoaW5nIHRvIFFFTVUsIGFub3RoZXIgZGVzaWduIHdvdWxkIGJlIGJ1aWxkaW5nCj4g PiAgTkZJVCBhbmQgU1NEVCBpbiBodm1sb2FkZXIgb3IgdG9vbHN0YWNrLgo+ID4KPiA+ICBUaGUg YW1vdW50IGFuZCBwYXJhbWV0ZXJzIG9mIHN1Yi1zdHJ1Y3R1cmVzIGluIGd1ZXN0IE5GSVQgdmFy eQo+ID4gIGFjY29yZGluZyB0byBkaWZmZXJlbnQgdk5WRElNTSBjb25maWd1cmF0aW9ucyB0aGF0 IGNhbiBub3QgYmUgZGVjaWRlZAo+ID4gIGF0IGNvbXBpbGUtdGltZS4gSW4gY29udHJhc3QsIGN1 cnJlbnQgaHZtbG9hZGVyIGFuZCB0b29sc3RhY2sgY2FuCj4gPiAgb25seSBidWlsZCBzdGF0aWMg QUNQSSB0YWJsZXMsIGkuZS4gdGhlaXIgY29udGVudHMgYXJlIGRlY2lkZWQKPiA+ICBzdGF0aWNh bGx5IGF0IGNvbXBpbGUtdGltZSBhbmQgaW5kZXBlbmRlbnQgZnJvbSB0aGUgZ3Vlc3QKPiA+ICBj b25maWd1cmF0aW9uLiBJbiBvcmRlciB0byBidWlsZCBndWVzdCBORklUIGF0IHJ1bnRpbWUsIHRo aXMgZGVzaWduCj4gPiAgbWF5IHRha2UgZm9sbG93aW5nIHN0ZXBzOgo+ID4gICgxKSB4bCBjb252 ZXJ0cyBOVkRJTU0gY29uZmlndXJhdGlvbnMgaW4geGwuY2ZnIHRvIGNvcnJlc3BvbmRpbmcgUUVN VQo+ID4gICAgICBvcHRpb25zLAo+ID4gCj4gPiAgKDIpIFFFTVUgYWNjZXB0cyBhYm92ZSBvcHRp b25zLCBmaWd1cmVzIG91dCB0aGUgc3RhcnQgU1BBIHJhbmdlCj4gPiAgICAgIGFkZHJlc3Mvc2l6 ZS9OVkRJTU0gZGV2aWNlIGhhbmRsZXMvLi4uLCBhbmQgd3JpdGVzIHRoZW0gaW4KPiA+ICAgICAg eGVuc3RvcmUuIE5vIEFDUEkgdGFibGUgaXMgYnVpbHQgYnkgUUVNVS4KPiA+IAo+ID4gICgzKSBF aXRoZXIgeGwgb3IgaHZtbG9hZGVyIHJlYWRzIGFib3ZlIHBhcmFtZXRlcnMgZnJvbSB4ZW5zdG9y ZSBhbmQKPiA+ICAgICAgYnVpbGRzIHRoZSBORklUIHRhYmxlLgo+ID4gCj4gPiAgRm9yIGd1ZXN0 IFNTRFQsIGl0IHdvdWxkIHRha2UgbW9yZSB3b3JrLiBUaGUgQUNQSSBuYW1lc3BhY2UgZGV2aWNl cwo+ID4gIGFyZSBkZWZpbmVkIGluIFNTRFQgYnkgQU1MLCBzbyBhbiBBTUwgYnVpbGRlciB3b3Vs ZCBiZSBuZWVkZWQgdG8KPiA+ICBnZW5lcmF0ZSB0aG9zZSBkZWZpbml0aW9ucyBhdCBydW50aW1l Lgo+IAo+IEknbSBub3Qgc3VyZSB0aGlzIGxhc3QgaGFsZiBzZW50ZW5jZSBpcyB0cnVlOiBXZSBk byBzb21lIGR5bmFtaWMKPiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcHJlLWdlbmVyYXRlZCBEU0RU IGFscmVhZHksIHVzaW5nIHRoZSBydW50aW1lCj4gcG9wdWxhdGVkIGJsb2NrIGF0IEFDUElfSU5G T19QSFlTSUNBTF9BRERSRVNTLgo+CgpJSVVDLCBpZiBhbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2Ug aW4gZ3Vlc3QgRFNEVCBuZWVkcyB0byB1c2UgYW4KcGFyYW1ldGVyIHRoYXQgaXMgbm90IGF2YWls YWJsZSBhdCBidWlsZCB0aW1lLCBpdCBjYW4gcmVmZXIgdG8gdGhlCmNvcnJlc3BvbmRpbmcgZmll bGQgaW4gdGhlIG1lbW9yeSBibG9jayBhdCBBQ1BJX0lORk9fUEhZU0lDQUxfQUREUkVTUwp0aGF0 IGlzIGZpbGxlZCBhdCBydW50aW1lLgoKQnV0IGl0IGRvZXMgbm90IHdvcmsgZm9yIHZOVkRJTU0u IEFuIGV4YW1wbGUgb2YgTlZESU1NIEFNTCBjb2RlIGxvb2tzCmxpa2U6CgpTY29wZSAoXF9TQil7 CiAgICBEZXZpY2UgKE5WRFIpIC8vIFJvb3QgZGV2aWNlIGZvciBhbGwgTlZESU1NIGRldmljZXMK ICAgIHsKICAgICAgICBOYW1lIChfSElELCDigJxBQ1BJMDAxMuKAnSkKICAgICAgICBNZXRob2Qg KF9TVEEpIHsuLi59CiAgICAgICAgTWV0aG9kIChfRklUKSB7Li4ufQogICAgICAgIE1ldGhvZCAo X0RTTSwgLi4uKSB7CiAgICAgICAgICAgIC4uLgogICAgICAgIH0KCiAgICAgICAgRGV2aWNlIChO VkQwKSAgICAgLy8gMXN0IE5WRElNTSBkZXZpY2UKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUo X0FEUiwgaCkgLy93aGVyZSBoIGlzIE5GSVQgRGV2aWNlIEhhbmRsZSBmb3IgdGhpcyBOVkRJTU0K ICAgICAgICAgICAgTWV0aG9kIChfRFNNLCAuLi4pIHsKICAgICAgICAgICAgICAgIC4uLgogICAg ICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBEZXZpY2UgKE5WRDEpICAgICAvLyAybmQgTlZE SU1NIGRldmljZQogICAgICAgIHsKICAgICAgICAgICAgTmFtZShfQURSLCBoKSAvL3doZXJlIGgg aXMgTkZJVCBEZXZpY2UgSGFuZGxlIGZvciB0aGlzIE5WRElNTQogICAgICAgICAgICBNZXRob2Qg KF9EU00sIC4uLikgewogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIH0KICAgICAgICB9 CgogICAgICAgIC4uLgogICB9Cn0KCkZvciBlYWNoIE5WRElNTSBkZXZpY2UgZGVmaW5lZCBpbiBO RklULCB0aGVyZSBpcyBhIEFDUEkgbmFtZXNwYWNlIGRldmljZQooZS5nLiBOVkQwLCBOVkQxKSB1 bmRlciB0aGUgcm9vdCBOVkRJTU0gZGV2aWNlIChOVkRSKS4gQmVjYXVzZSB0aGUKbnVtYmVyIG9m IHZOVkRJTU0gZGV2aWNlcyBhcmUgdW5rbm93biBhdCBidWlsZCB0aW1lLCB3ZSBjYW4gbm90CmRl dGVybWluZSB3aGV0aGVyIGFuZCBob3cgbWFueSBOVkRJTU0gQUNQSSBuYW1lc3BhY2UgZGV2aWNl cyBzaG91bGQgYmUKZGVmaW5lZCBpbiB0aGUgcHJlLWdlbmVyYXRlZCBTU0RULgoKSGFvemhvbmcK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==