From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: Re: [RFC Design Doc v2] Add vNVDIMM support for Xen Date: Thu, 4 Aug 2016 16:52:57 +0800 Message-ID: <20160804085257.gztzkil5j4csqtxc@hz-desktop> References: <20160718002912.rva5n5jbrezdchwx@hz-desktop> <20160803212548.GA16869@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160803212548.GA16869@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Juergen Gross , "Tian, Kevin" , Stefano Stabellini , Wei Liu , "Nakajima, Jun" , George Dunlap , Andrew Cooper , Ian Jackson , "xen-devel@lists.xen.org" , Jan Beulich , Xiao Guangrong List-Id: xen-devel@lists.xenproject.org SGkgS29ucmFkLAoKT24gMDgvMDMvMTYgMTc6MjUsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90 ZToKPiBPbiBNb24sIEp1bCAxOCwgMjAxNiBhdCAwODoyOToxMkFNICswODAwLCBIYW96aG9uZyBa aGFuZyB3cm90ZToKPiA+IEhpLAo+ID4gCj4gCj4gSGV5IQo+IAo+IFRoYW5rcyBmb3IgcG9zdGlu ZyEgU29ycnkgZm9yIHRoZSBsYXRlIHJldmlldy4gQmVsb3cgYXJlIHNvbWUgb2YgbXkKPiBjb21t ZW50Lgo+CgpUaGFuayB5b3UgZm9yIHRoZSByZXZpZXchCgpbLi5dCj4gQW5kIGlzIHRoZXJlIGFu eSBuZWVkIGZvciB0aGUgRTgyMCB0eXBlIDcgdG8gYmUgZXhwb3NlZD8gSSBwcmVzdW1lCj4gbm90 IGFzIHRoZSBBQ1BJIE5GSVQgaXMgc3VmZmljaWVudD8KPgoKTm8sIE5GSVQgaXMgc3VmZmljaWVu dCBhbmQgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbiB0aGFuIEU4MjAuCgo+IAo+ID4gICBHdWVz dCBfRklUIG1ldGhvZCB3aWxsIGJlIGltcGxlbWVudGVkIHNpbWlsYXJseSBpbiB0aGUgZnV0dXJl Lgo+ID4gCj4gPiAKPiA+IAo+ID4gMy4gVXNhZ2UgRXhhbXBsZSBvZiB2TlZESU1NIGluIFhlbgo+ ID4gCj4gPiAgT3VyIGRlc2lnbiBpcyB0byBwcm92aWRlIHZpcnR1YWwgcG1lbSBkZXZpY2VzIHRv IEhWTSBkb21haW5zLiBUaGUKPiA+ICB2aXJ0dWFsIHBtZW0gZGV2aWNlcyBhcmUgYmFja2VkIGJ5 IGhvc3QgcG1lbSBkZXZpY2VzLgo+ID4gCj4gPiAgRG9tMCBMaW51eCBrZXJuZWwgY2FuIGRldGVj dCB0aGUgaG9zdCBwbWVtIGRldmljZXMgYW5kIGNyZWF0ZQo+ID4gIC9kZXYvcG1lbVhYIGZvciBl YWNoIGRldGVjdGVkIGRldmljZXMuIFVzZXJzIGluIERvbTAgY2FuIHRoZW4gY3JlYXRlCj4gPiAg REFYIGZpbGUgc3lzdGVtIG9uIC9kZXYvcG1lbVhYIGFuZCBjcmVhdGUgc2V2ZXJhbCBwcmUtYWxs b2NhdGUgZmlsZXMKPiA+ICBpbiB0aGUgREFYIGZpbGUgc3lzdGVtLgo+ID4gCj4gPiAgQWZ0ZXIg c2V0dXAgdGhlIGZpbGUgc3lzdGVtIG9uIHRoZSBob3N0IHBtZW0sIHVzZXJzIGNhbiBhZGQgdGhl Cj4gPiAgZm9sbG93aW5nIGxpbmVzIGluIHRoZSB4bCBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGFz c2lnbiB0aGUgaG9zdCBwbWVtCj4gPiAgcmVnaW9ucyB0byBkb21haW5zOgo+ID4gICAgICB2bnZk aW1tID0gWyAnZmlsZT0vZGV2L3BtZW0wJyBdCj4gPiAgb3IKPiA+ICAgICAgdm52ZGltbSA9IFsg J2ZpbGU9L21udC9kYXgvcHJlX2FsbG9jYXRlZF9maWxlJyBdCj4gPiAKPiA+ICAgVGhlIGZpcnN0 IHR5cGUgb2YgY29uZmlndXJhdGlvbiBhc3NpZ25zIHRoZSBlbnRpcmUgcG1lbSBkZXZpY2UKPiA+ ICAgKC9kZXYvcG1lbTApIHRvIHRoZSBkb21haW4sIHdoaWxlIHRoZSBzZWNvbmQgYXNzaWducyB0 aGUgc3BhY2UKPiA+ICAgYWxsb2NhdGVkIHRvIC9tbnQvZGF4L3ByZV9hbGxvY2F0ZWRfZmlsZSBv biB0aGUgaG9zdCBwbWVtIGRldmljZSB0bwo+ID4gICB0aGUgZG9tYWluLgo+ID4gCj4gPiAgIFdo ZW4gdGhlIGRvbWFpbiBzdGFydHMsIGd1ZXN0IGNhbiBkZXRlY3QgdGhlICh2aXJ0dWFsKSBwbWVt IGRldmljZXMKPiA+ICAgdmlhIEFDUEkgYW5kIGd1ZXN0IHJlYWQvd3JpdGUgb24gdGhlIHZpcnR1 YWwgcG1lbSBkZXZpY2VzIGFyZQo+ID4gICBkaXJlY3RseSBhcHBsaWVkIG9uIHRoZWlyIGhvc3Qg YmFja2VuZHMuCj4gCj4gV291bGQgZ3Vlc3QgbmFtZXNwYWNlICgxMjhrYikgYmUgd3JpdHRlbiBh dCBvZmZzZXQgMCBvZiBzYWlkIGZpbGUgKG9yIGJsb2NrKT8KPiBBbmQgb2YgY291cnNlIHRoZSBn dWVzdCBjYW4gb25seSBtYW5pcHVsYXRlIHRoaXMgdXNpbmcgQUNQSSBfRFNNIG1ldGhvZHM/Cj4K CkkgZ3Vlc3MgeW91IG1lYW4gdGhlIGxhYmVsIHN0b3JhZ2UgYXJlYSB3aGljaCBzdG9yZXMgbGFi ZWxzIG9mCm5hbWVzcGFjZXMuIEluIHRoZSBjdXJyZW50IFFFTVUgaW1wbGVtZW50YXRpb24sIHRo ZSBndWVzdCBsYWJlbApzdG9yYWdlIGFyZWEgaXMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBvciB0 aGUgYmxvY2sgZGV2aWNlLiBJdCdzIG5vdAptYXBwZWQgdG8gdGhlIGd1ZXN0IGFkZHJlc3Mgc3Bh Y2UgKHdoaWNoIEkgbWlzc2VkIHRvIHN0YXRlIGhlcmUpIGFuZApjYW4gYmUgYWNjZXNzZWQgb25s eSB2aWEgZ3Vlc3QgX0RTTS4KClsuLl0gCj4gPiA0LjIgcG1lbSBBZGRyZXNzIE1hbmFnZW1lbnQK PiA+IAo+ID4gIHBtZW0gYWRkcmVzcyBtYW5hZ2VtZW50IGlzIHByaW1hcmlseSBjb21wb3NlZCBv ZiB0aHJlZSBwYXJ0czoKPiA+ICAoMSkgZGV0ZWN0aW9uIG9mIHBtZW0gZGV2aWNlcyBhbmQgdGhl aXIgYWRkcmVzcyByYW5nZXMsIHdoaWNoIGlzCj4gPiAgICAgIGFjY29tcGxpc2hlZCBieSBEb20w IExpbnV4IHBtZW0gZHJpdmVyIGFuZCBYZW4gaHlwZXJ2aXNvcjsKPiA+ICAoMikgZ2V0IFNQQSBy YW5nZXMgb2YgYW4gcG1lbSBhcmVhIHRoYXQgd2lsbCBiZSBtYXBwZWQgdG8gZG9tYWluCj4gPiAg ICAgIHdoaWNoIGlzIGFjY29tcGxpc2hlZCBieSB4bDsKPiA+ICAoMykgbWFwIHRoZSBwbWVtIGFy ZWEgdG8gYSBkb21haW4sIHdoaWNoIGlzIGFjY29tcGxpc2hlZCBieSBxZW11IGFuZAo+IHMvcWVt dS9RRU1VLwo+ID4gICAgICBYZW4gaHlwZXJ2aXNvci4KPiA+IAo+ID4gIE91ciBkZXNpZ24gaW50 ZW5kcyB0byByZXVzZSB0aGUgY3VycmVudCBtZW1vcnkgbWFuYWdlbWVudCBmb3Igbm9ybWFsCj4g PiAgUkFNIGluIFhlbiB0byBtYW5hZ2UgdGhlIG1hcHBpbmcgb2YgcG1lbS4gVGhlbiB3ZSB3aWxs IGNvbWUgYWNyb3NzIGEKPiA+ICBwcm9ibGVtOiB3aGVyZSB3ZSBzdG9yZSB0aGUgbWVtb3J5IG1h bmFnZW1lbnQgZGF0YSBzdHJ1Y3RzIGZvciBwbWVtLgo+IAo+IHMvd2Ugc3RvcmUvd2hlcmUgdG8v Cj4gPiAKPiA+ICBUaGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24gYWRkcmVzc2VzIGFib3ZlIGFzcGVj dHMgcmVzcGVjdGl2ZWx5Lgo+IAo+IFdhaXQuIFdoYXQgYWJvdXQgYWx0ZXJuYXRpdmVzPyBXaHkg dHJlYXQgaXQgYXMgYSBSQU0gcmVnaW9uIGluc3RlYWQgb2YKPiBhcyBhbiBNTUlPIHJlZ2lvbj8K PgoKVGhlIHBhcnQgdXNlZCBhcyB0aGUgbGFiZWwgc3RvcmFnZSBhcmVhIG9mIHZOVkRJTU0gaXMg dHJlYXRlZCBhcyBNTUlPCmFzIGRlc2NyaWJlZCBieSBhIGxhdGVyIHNlY3Rpb24gb2YgdGhpcyBk ZXNpZ24uIE90aGVyIHBhcnRzIG9mIHZOVkRJTU0KYXJlIGRpcmVjdGx5IGFjY2Vzc2VkIGJ5IGd1 ZXN0LCBzbyBJIHRoaW5rIHdlIGNhbiB0cmVhdCB0aGVtIGFzIG5vcm1hbApSQU0gcmVnaW9ucyBh bmQgbWFwIHRvIGd1ZXN0LCB0aG91Z2ggd2UgZGVmaW5pdGVseSBuZWVkIHRvIG1hcmsgdGhlbQph cyBwbWVtIHJlZ2lvbnMgdmlhIHZpcnR1YWwgTkZJVC4KCj4gPiAKPiA+IDQuMi4xIFJlc2VydmUg U3RvcmFnZSBmb3IgTWFuYWdlbWVudCBTdHJ1Y3R1cmVzCj4gPiAKPiA+ICBBIGNvcmUgZGF0YSBz dHJ1Y3QgaW4gWGVuIG1lbW9yeSBtYW5hZ2VtZW50IGlzICdzdHJ1Y3QgcGFnZV9pbmZvJy4KPiA+ ICBGb3Igbm9ybWFsIHJhbSwgWGVuIGNyZWF0ZXMgYSBwYWdlX2luZm8gc3RydWN0IGZvciBlYWNo IHBhZ2UuIEZvcgo+ID4gIHBtZW0sIHdlIGFyZSBnb2luZyB0byBkbyB0aGUgc2FtZS4gSG93ZXZl ciwgZm9yIGxhcmdlIGNhcGFjaXR5IHBtZW0KPiA+ICBkZXZpY2VzIChlLmcuIHNldmVyYWwgdGVy YWJ5dGVzIG9yIGV2ZW4gbGFyZ2VyKSwgYSBsYXJnZSBhbW91bnQgb2YKPiA+ICBwYWdlX2luZm8g c3RydWN0cyB3aWxsIG9jY3VweSB0b28gbXVjaCBzdG9yYWdlIHNwYWNlIHRoYXQgY2Fubm90Cj4g PiAgZml0IGluIHRoZSBub3JtYWwgcmFtLgo+ID4gCj4gPiAgT3VyIHNvbHV0aW9uLCBhcyB1c2Vk IGJ5IExpbnV4IGtlcm5lbCwgaXMgdG8gcmVzZXJ2ZSBhbiBhcmVhIG9uIHBtZW0KPiA+ICBhbmQg cGxhY2UgcG1lbSdzIHBhZ2VfaW5mbyBzdHJ1Y3RzIGluIHRoYXQgcmVzZXJ2ZWQgYXJlYS4gVGhl cmVmb3JlLAo+ID4gIHdlIGNhbiBhbHdheXMgZW5zdXJlIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBm b3IgcG1lbSBwYWdlX2luZm8KPiA+ICBzdHJ1Y3RzLCB0aG91Z2ggdGhlIGFjY2VzcyB0byB0aGVt IGlzIHNsb3dlciB0aGFuIGRpcmVjdGx5IGZyb20gdGhlCj4gPiAgbm9ybWFsIHJhbS4KPiA+IAo+ ID4gIFN1Y2ggYSBwbWVtIG5hbWVzcGFjZSBjYW4gYmUgY3JlYXRlZCB2aWEgYSB1c2Vyc3BhY2Ug dG9vbCBuZGN0bCBhbmQKPiA+ICB0aGVuIHJlY29nbml6ZWQgYnkgTGludXggTlZESU1NIGRyaXZl ci4gSG93ZXZlciwgdGhleSBjdXJyZW50bHkgb25seQo+ID4gIHJlc2VydmUgc3BhY2UgZm9yIExp bnV4IGtlcm5lbCdzIHBhZ2Ugc3RydWN0cy4gVGhlcmVmb3JlLCBvdXIgZGVzaWduCj4gPiAgbmVl ZCB0byBleHRlbmQgYm90aCBMaW51eCBOVkRJTU0gZHJpdmVyIGFuZCBuZGN0bCB0byByZXNlcnZl Cj4gPiAgYXJiaXRyYXJ5IHNpemUuCj4gCj4gVGhhdCBzZWVtcyAuLiBmcmFnaWxlPyBXaGF0IGlm IFdpbmRvd3Mgb3IgRnJlZUJTRCB3YW50IHRvIHVzZSBpdAo+IHRvbz8KCkFGQUlLLCB0aGUgd2F5 IHVzZWQgYnkgY3VycmVudCBMaW51eCBOVkRJTU0gZHJpdmVyIGZvciByZXNlcnZhdGlvbiBoYXMK bm90IGJlZW4gZG9jdW1lbnRlZCBpbiBhbnkgcHVibGljIHNwZWNpZmljYXRpb25zIHlldC4gSSds bCBjb25zdWx0CmRyaXZlciBkZXZlbG9wZXJzIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKPiBXb3Vs ZCB0aGlzICdzdHJ1Y3QgcGFnZScgb24gb24gTlZESU1NIGJlIGdlbmVyYWxpemVkIGVub3VnaAo+ IHRvIHdvcmsgd2l0aCBMaW51eCxYZW4sIEZyZWVCU0QgYW5kIHdoYXQgbm90Pwo+CgpOby4gRGlm ZmVyZW50IG9wZXJhdGluZyBzeXN0ZW1zIG1heSBjaG9vc2UgZGlmZmVyZW50IGRhdGEgc3RydWN0 dXJlcwp0byBtYW5hZ2UgTlZESU1NIGFjY29yZGluZyB0byB0aGVpciBvd24gcmVxdWlyZW1lbnRz IGFuZApjb25zaWRlcmF0aW9uLCBzbyBpdCB3b3VsZCBiZSBoYXJkIHRvIHJlYWNoIGFuIGFncmVl bWVudCBvbiB3aGF0IHRvCnB1dCBpbiBhIGdlbmVyaWMgZGF0YSBzdHJ1Y3R1cmUgKGFuZCBtYWtl IGl0IGFzIHBhcnQgb2YgQUJJPykuCgo+IEFuZCB0aGlzIG5kY3RsIGlzIGh0dHBzOi8vZ2l0aHVi LmNvbS9wbWVtL25kY3RsIEkgcHJlc3VtZT8KClllcy4gU29ycnkgdGhhdCBJIGZvcmdvdCB0byBh dHRhY2ggdGhlIFVSTC4KCj4KPiBBbmQgaG93IGlzIHRoaXMgc3RydWN0dXJlIHJlc2VydmVkPyBJ cyBpdCBhIHNlcGVyYXRlIG5hbWVzcGFjZSBlbnRyeT8KCk5vLCBpdCBkb2VzIG5vdCBpbnRyb2R1 Y2UgYW55IGV4dHJhIG5hbWVzcGFjZSBlbnRyeS4gVGhlIGN1cnJlbnQKTlZESU1NIGRyaXZlciBp biBMaW51eCBkb2VzIHRoZSByZXNlcnZhdGlvbiBpbiB0aGUgd2F5IHNob3duIGJ5IHRoZQpmb2xs b3dpbmcgZGlhZ3JhbSAoSSBvbWl0IGRldGFpbHMgYWJvdXQgYWxpZ25tZW50IGFuZCBwYWRkaW5n IGZvcgpzaW1wbGljaXR5KToKCiBTUEEgIFNQQSs0SwogIHwgICAgICB8CiAgViAgICAgIFYKICAr LS0tLS0tKy0tLS0tLS0tLS0tKy0tIC4uLiAtLS0rLS0tLS0uLi4tLS0tLSsKICB8ICAgICAgfCBu ZF9wZm5fc2IgfCByZXNlcnZlZCB8IGZyZWUgdG8gdXNlIHwKICArLS0tLS0tKy0tLS0tLS0tLS0t Ky0tIC4uLiAtLS0rLS0tLS0uLi4tLS0tLSsKICB8PC0tICAgbmRfcGZuX3NiLmRhdGFvZmYgICAt LT58ICAgICAgICAgICAgIHwKICB8ICAgICgrIG5lY2Vzc2FyeSBwYWRkaW5nKSAgICAgICAgICAg ICAgICAgIHwKICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK ICB8PC0tLS0tLS0tLS0tLS0gcG1lbSBuYW1lc3BhY2UgLS0tLS0tLS0tLS0tPnwKCkdpdmVuIGEg cG1lbSBuYW1lc3BhY2Ugd2hpY2ggc3RhcnRzIGZyb20gU1BBLAogMSkgdGhlIGRyaXZlciBzdG9y ZXMgYSBzdHJ1Y3QgbmRfcGZuX3NiIGF0IFNQQSs0SwogMikgdGhlIHJlc2VydmVkIGFyZWEgaXMg YWZ0ZXIgbmRfcGZuX3NiCiAzKSB0aGUgZnJlZS10by11c2UgYXJlYSBpcyBhZnRlciB0aGUgcmVz ZXJ2ZWQgYXJlYSwgYW5kIGl0cyBsb2NhdGlvbgogICAgcmVsYXRpdmUgdG8gU1BBIGNhbiBiZSBk ZXJpdmVkIGZyb20gbmRfcGZuX3NiLmRhdGFvZmYKIDQpIG9ubHkgdGhlIGZyZWUtdG8tdXNlIGFy ZWEgaXMgZXhwb3NlZCB0byBhIGJsb2NrIGRldmljZSAvZGV2L3BtZW1YLgogICAgQWNjZXNzIHRv IHNlY3RvciBOIG9mIC9kZXYvcG1lbVggYWN0dWFsbHkgZ29lcyB0byAoU1BBICsKICAgIG5kX3Bm bl9zYi5kYXRhb2ZmICsgTiAqIFNFQ1RfU0laRSkKIDUpIG5kX3Bmbl9zYiBhbHNvIGNvbnRhaW5z IGEgc2lnbmF0dXJlICJOVkRJTU1fUEZOX0lORk8iIGFuZCBhCiAgICBjaGVja3N1bS4gSWYgdGhl IGRyaXZlciBmaW5kcyBzdWNoIHNpZ25hdHVyZSBhbmQgdGhlIGNoZWNrc3VtCiAgICBtYXRjaGVz LCB0aGVuIGl0IGtub3dzIHRoaXMgZGV2aWNlIGNvbnRhaW5zIHJlc2VydmVkIGFyZWEuCgo+IEFu ZCBRRU1VIGtub3dzIG5vdCB0byBhY2Nlc3MgaXQ/CgpRRU1VIGFzIGEgdXNlcnNwYWNlIHByb2dy YW0gY2FuIG9ubHkgYWNjZXNzIC9kZXYvcG1lbVggYW5kIGhlbmNlIGhhcwpubyB3YXkgdG8gdG91 Y2ggdGhlIHJlc2VydmVkIGFyZWEuCgo+IE9yIFhlbiBuZWVkcyB0byBtYWtlIHN1cmUgX25vYm9k eV8KPiBleGNlcHQgaXQgY2FuIGFjY2VzcyBpdD8gV2hpY2ggbWVhbnMgWGVuIG1heSBuZWVkIHRv IGtub3cgdGhlIGZvcm1hdAo+IG9mIHRoZSBuZGN0bCBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGxhaWQg b3V0IGluIHRoZSBOVkRJTU0gcmVnaW9uPwo+CgpYZW4gaHlwZXJ2aXNvciByZWxpZXMgb24gZG9t MCBkcml2ZXIgdG8gcGFyc2UgdGhlIGxheW91dC4gIEF0IERvbTAKYm9vdCwgRG9tMCBOVkRJTU0g ZHJpdmVyIHJlcG9ydHMgYWRkcmVzcy9zaXplIG9mIGFyZWEgcmVzZXJ2ZWQgZm9yIFhlbgp0byBY ZW4gaHlwZXJ2aXNvciwgd2hpY2ggdGhlbiB1bm1hcHMgdGhlIHJlc2VydmVkIGFyZWEgZnJvbSBE b20wLgoKPiA+IAo+ID4gNC4yLjIgRGV0ZWN0aW9uIG9mIEhvc3QgcG1lbSBEZXZpY2VzCj4gPiAK PiA+ICBUaGUgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXplIGhvc3QgcG1lbSBkZXZpY2VzIHJlcXVp cmUgYSBub24tdHJpdmlhbAo+ID4gIGRyaXZlciB0byBpbnRlcmFjdCB3aXRoIHRoZSBjb3JyZXNw b25kaW5nIEFDUEkgbmFtZXNwYWNlIGRldmljZXMsCj4gPiAgcGFyc2UgbmFtZXNwYWNlIGxhYmVs cyBhbmQgbWFrZSBuZWNlc3NhcnkgcmVjb3ZlcnkgYWN0aW9ucy4gSW5zdGVhZAo+ID4gIG9mIGR1 cGxpY2F0aW5nIHRoZSBjb21wcmVoZW5zaXZlIExpbnV4IHBtZW0gZHJpdmVyIGluIFhlbiBoeXBl cnZpc29yLAo+ID4gIG91ciBkZXNpZ25zIGxlYXZlcyBpdCB0byBEb20wIExpbnV4IGFuZCBsZXQg RG9tMCBMaW51eCByZXBvcnQKPiA+ICBkZXRlY3RlZCBob3N0IHBtZW0gZGV2aWNlcyB0byBYZW4g aHlwZXJ2aXNvci4KPiAKPiBTbyBYZW4gd291bGQgaWdub3JlIGF0IGJvb3R1cCBBQ1BJIE5GSVQg c3RydWN0dXJlcz8KClllcywgcGFyc2luZyBORklUIGlzIGxlZnQgdG8gRG9tMCB3aGljaCBoYXMg dGhlIGNvcnJlY3QgZHJpdmVyLgoKPiA+IAo+ID4gIE91ciBkZXNpZ24gdGFrZXMgZm9sbG93aW5n IHN0ZXBzIHRvIGRldGVjdCBob3N0IHBtZW0gZGV2aWNlcyB3aGVuIFhlbgo+ID4gIGJvb3RzLgo+ ID4gICgxKSBBcyBib290aW5nIG9uIGJhcmUgbWV0YWwsIGhvc3QgcG1lbSBkZXZpY2VzIGFyZSBk ZXRlY3RlZCBieSBEb20wCj4gPiAgICAgIExpbnV4IE5WRElNTSBkcml2ZXIuCj4gPiAKPiA+ICAo MikgT3VyIGRlc2lnbiBleHRlbmRzIExpbnV4IE5WRElNTSBkcml2ZXIgdG8gcmVwb3J0cyBTUEEn cyBhbmQgc2l6ZXMKPiA+ICAgICAgb2YgdGhlIHBtZW0gZGV2aWNlcyBhbmQgcmVzZXJ2ZWQgYXJl YXMgdG8gWGVuIGh5cGVydmlzb3IgdmlhIGEKPiA+ICAgICAgbmV3IGh5cGVyY2FsbC4KPiAKPiBy ZXNlcnZlZCBhcmVhcz8gVGhhdCBpcyB0aGUgbmFtZXNwYWNlIHJlZ2lvbiBhbmQgdGhlIFNQQSA8 c3RhcnQsZW5kPgo+IGZvciB0aGUgbmRjdGwgYXJlYXM/IEFyZSB0aGUgbmRjdGwgYXJlYXMgZ3Vh cm5hdGVlZCB0byBiZSBjb250aW5nb3VzPwo+CgpleHBsYWluZWQgYWJvdmUuIFRoZSByZXNlcnZl ZCBhcmVhIG9uIGFuIGluZGl2aWR1YWwgcG1lbSBuYW1lc3BhY2UgaXMKY29udGlndW91cy4KCj4g SXMgdGhlcmUgc29tZSBzcGVjIG9uIHRoZSBuZGN0bCBhbmQgaG93L3doZXJlIHRoZXkgYXJlIHN0 dWNrIGluIHRoZSBOVkRJTU0/Cj4KCk5vIHB1YmxpYyBzcGVjIHNvIGZhciwgYXMgbWVudGlvbmVk IGFib3ZlLgoKPiA+IAo+ID4gICgzKSBYZW4gaHlwZXJ2aXNvciB0aGVuIGNoZWNrcwo+ID4gICAg ICAtIHdoZXRoZXIgU1BBIGFuZCBzaXplIG9mIHRoZSBuZXdseSByZXBvcnRlZCBwbWVtIGRldmlj ZSBpcyBvdmVybGFwCj4gPiAgICAgICAgd2l0aCBhbnkgcHJldmlvdXNseSByZXBvcnRlZCBwbWVt IGRldmljZXM7Cj4gCj4gT3Igbm9ybWFsIFJBTT8KPgoKWWVzLCBJIG1pc3NlZCBub3JtYWwgUkFN IGhlcmUuCgo+ID4gICAgICAtIHdoZXRoZXIgdGhlIHJlc2VydmVkIGFyZWEgY2FuIGZpdCBpbiB0 aGUgcG1lbSBkZXZpY2UgYW5kIGlzCj4gPiAgICAgICAgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgcGFn ZV9pbmZvIHN0cnVjdHMgZm9yIGl0c2VsZi4KPiAKPiBJIHRoaW5rIEkga25vdyB3aGF0IHlvdSBt ZWFuIGJ1dCBpdCBzb3VuZHMgb2RkLgo+IAo+IFBlcmhhcHM6Cj4gCj4gIGxhcmdlIGVub3VnaCB0 byBob2xkIHBhZ2VfaW5mbyBzdHJ1Y3QncyBmb3IgaXQncyBlbnRpcmUgcmFuZ2U/Cj4KClllcywg dGhhdCBpcyB3aGF0IEkgbWVhbgoKPiBOYXRpdmUgc3BlYWtlciwgbGlrZSBJYW4sIHdvdWxkIGtu b3cgaG93IHRvIHNheSB0aGlzIHJpZ2h0IEkgdGhpbmsuCj4gCj4gQW55aG93LCB3b3VsZG4ndCB0 aGlzICdzaXplb2Yoc3RydWN0IHBhZ2VfaW5mbyknIGRlcGVuZCBvbiB0aGUgbmRjdGwKPiB0b29s IGFuZCB3aGF0IHZlcnNpb24gd2FzIHVzZWQgdG8gY3JlYXRlIHRoaXM/IFdoYXQgaWYgb25lIHZl cnNpb24KPiB1c2VkIDMyLWJ5dGVzIGZvciBhIFBBR0UsIHdoaWxlIGFub3RoZXIgdXNlZCA2NC1i eXRlcyBmb3IgYSBQQUdFIHRvbz8KPiBJdCB3b3VsZCBiZSBhIGJpdCBvZiBjYXRjaGluZyB1cCAu LiB3YWl0LCB0aGlzIHNhbWUgcHJvYmxlbSBNVVNUCj4gYmUgd2l0aCBMaW51eD8gSG93IGRvZXMg aXQgZGVhbCB3aXRoIHRoaXM/Cj4KCkdvb2QgcXVlc3Rpb24uIExpbnV4IGNob29zZXMgYSBzaXpl ICg2NCBieXRlcykgbGFyZ2VyIHRoYW4gaXRzIGN1cnJlbnQKc2l6ZW9mKHN0cnVjdCBwYWdlKSAo NDAgYnl0ZXMpLiBXZSBtYXkgYWxzbyBkbyBpbiB0aGUgc2FtZSB3YXksCmUuZy4gMzIgYnl0ZXMg dnMuIDY0IGJ5dGVzPwoKPiA+IAo+ID4gICAgICBJZiBhbnkgY2hlY2tzIGZhaWwsIHRoZSByZXBv cnRlZCBwbWVtIGRldmljZSB3aWxsIGJlIGlnbm9yZWQgYnkKPiA+ICAgICAgWGVuIGh5cGVydmlz b3IgYW5kIGhlbmNlIHdpbGwgbm90IGJlIHVzZWQgYnkgYW55Cj4gCj4gSSBob3BlIHRoaXMgaHlw ZXJjYWxsIHJldHVybnMgYW4gZXJyb3IgY29kZSB0b28/Cj4KCkRlZmluaXRlbHkgeWVzCgo+ID4g ICAgICBndWVzdHMuIE90aGVyd2lzZSwgWGVuIGh5cGVydmlzb3Igd2lsbCByZWNvcmRlZCB0aGUg cmVwb3J0ZWQKPiBzL3JlY29yZGVkL3JlY29yZC8KPiA+ICAgICAgcGFyYW1ldGVycyBhbmQgY3Jl YXRlIHBhZ2VfaW5mbyBzdHJ1Y3RzIGluIHRoZSByZXNlcnZlZCBhcmVhLgo+IAo+IE9oaC4gWW91 IGp1c3QgYmxhc3QgaXQgYXdheT8gSSBndWVzcyBpdCBtYWtlcyBzZW5zZS4gVGhlbiB3aGF0IGlz IHRoZQo+IHB1cnBvc2Ugb2YgdGhlIG5kY3RsPyBKdXN0IHRvIGNhcnZlIG91dCBhbiBuYW1lc3Bh Y2UgcmVnaW9uIGZvciB0aGlzPwo+CgpuZGN0bCBpcyB1c2VkIGJ5LCBmb3IgZXhhbXBsZSwgYSBz eXN0ZW0gYWRtaW4gdG8gcmVzZXJ2ZSBzcGFjZSBvbiBhCmhvc3QgcG1lbSBuYW1lc3BhY2UuIElm IHRoZXJlIGlzIGFscmVhZHkgZGF0YSBpbiB0aGUgbmFtZXNwYWNlLCBuZGN0bAp3aWxsIGdpdmUg YSB3YXJuaW5nIG1lc3NhZ2UgYW5kIGV4aXQgYXMgbG9uZyBhcyAtLWZvcmNlIG9wdGlvbiBpcyBu b3QKZ2l2ZW4uIEhvd2V2ZXIsIGlmIC0tZm9yY2UgaXMgcHJlc2VudCwgbmRjdGwgd2lsbCBicmVh ayB0aGUgZXhpc3RpbmcKZGF0YS4KCj4gQW5kIHdoYXQgaWYgdGhlcmUgaXMgc29tZXRoaW5nIHRo ZXJlIGZyb20gcHJldmlvdXMgT1MgKHNheSBMaW51eCk/Cj4gSnVzdCBibGFzdCBpdCBhd2F5PyBC dXQgY291bGQgTGludXggZGVwZW5kIG9uIHRoaXMgY29udGFpbmluZyBzb21lCj4gcGVyc2lzdGVu dCBpbmZvcm1hdGlvbj8gT3IgZG9lcyBpdCBhbHNvIGJsYXN0IGl0IGF3YXk/Cj4KCkFzIGFib3Zl LCBpZiBsaW51eCBkcml2ZXIgZGV0ZWN0cyB0aGUgc2lnbmF0dXJlICJOVkRJTU1fUEZOX0lORk8i IGFuZAphIG1hdGNoZWQgY2hlY2tzdW0sIGl0IHdpbGwga25vdyBpdCdzIHNhZmUgdG8gd3JpdGUg dG8gdGhlIHJlc2VydmVkCmFyZWEuIE90aGVyd2lzZSwgaXQgd2lsbCB0cmVhdCB0aGUgcG1lbSBu YW1lc3BhY2UgYXMgYSByYXcgZGV2aWNlIGFuZApzdG9yZSBwYWdlIHN0cnVjdCdzIGluIHRoZSBu b3JtYWwgUkFNLgoKPiBCdXQgdGhvc2UgcmVnaW9ucyBtYXkgYmUgbm9uLWNvbnRpbmdvdXMgKG9y IG1heWJlIG5vdD8gSSBuZWVkIHRvIGNoZWNrCj4gdGhlIHNwZWMgdG8gZG91YmxlLWNoZWNrKSBz byBob3cgZG8geW91IGZpZ3VyZSBvdXQgdGhpcyAncmVzZXJ2ZWQgYXJlYScKPiBhcyBpdCBtYXkg YmUgYW4gTiBTUEEncyBvZiB0aGUgPHN0YXJ0Piw8ZW5kPiB0eXBlPwo+Cgp0aGUgcmVzZXJ2ZWQg YXJlYSBpcyBwZXIgcG1lbSBuYW1lc3BhY2UuCgo+ID4gCj4gPiAgKDQpIEJlY2F1c2UgdGhlIHJl c2VydmVkIGFyZWEgaXMgbm93IHVzZWQgYnkgWGVuIGh5cGVydmlzb3IsIGl0Cj4gPiAgICAgIHNo b3VsZCBub3QgYmUgYWNjZXNzaWJsZSBieSBEb20wIGFueSBtb3JlLiBUaGVyZWZvcmUsIGlmIGEg aG9zdAo+ID4gICAgICBwbWVtIGRldmljZSBpcyByZWNvcmRlZCBieSBYZW4gaHlwZXJ2aXNvciwg WGVuIHdpbGwgdW5tYXAgaXRzCj4gCj4gcy9yZWNvcmRlZC91c3VycGVkLz8gTWF5YmUgbW9ub3Bv bGl6ZWQ/IE93bmVkPyBBaCwgcG9zc2VzZWQhCj4gCj4gcy9pdHMvdGhpcy8KPiA+ICAgICAgcmVz ZXJ2ZWQgYXJlYSBmcm9tIERvbTAuIE91ciBkZXNpZ24gYWxzbyBuZWVkcyB0byBleHRlbmQgTGlu dXgKPiA+ICAgICAgTlZESU1NIGRyaXZlciB0byAiYmFsbG9vbiBvdXQiIHRoZSByZXNlcnZlZCBh cmVhIGFmdGVyIGl0Cj4gPiAgICAgIHN1Y2Nlc3NmdWxseSByZXBvcnRzIGEgcG1lbSBkZXZpY2Ug dG8gWGVuIGh5cGVydmlzb3IuCj4gCj4gVGhpcyAiYmFsbG9vbiBvdXQiIGlzIGludGVyZXN0aW5n LiBZb3UgYXJlIGVmZmVjdGl2ZWx5IHRlbGxpbmcgTGludXgKPiB0byBpZ25vcmUgYSBjZXJ0YWlu IHJhbmdlIG9mICdzdHJ1Y3QgcGFnZV9pbmZvJywgc28gdGhhdCBpZiBzb21lYm9keQo+IHVzZXMg L3N5cy9kZWJ1Zy9rZXJuZWwvcGFnZV93YWxrIGl0IHdvbid0IGJsb3cgdXA/IChBcyB0aGUga2Vy bmUKPiBjYW4ndCByZWFkIHRoZSBzdHJ1Y3QgcGFnZV9pbmZvIGFueW1vcmUpLgo+Cj4gSG93IHdv dWxkIHlvdSBkbyB0aGlzPyBTaW11bGF0ZSBhbiBOVkRJTU0gdW5wbHVnPwoKcy9wYWdlX2luZm8v cGFnZS8gKHN0cnVjdCBwYWdlIGZvciBsaW51eCwgc3RydWN0IHBhZ2VfaW5mbyBmb3IgeGVuKQoK QXMgaW4gSmFuJ3MgY29tbWVudCwgImJhbGxvb24gb3V0IiBpcyBhIGNvbmZ1c2luZyBuYW1lIGhl cmUuCkJhc2ljYWxseSwgaXQncyB0byByZW1vdmUgdGhlIHJlc2VydmVkIGFyZWEgZnJvbSBzb21l IHJlc291cmNlIHN0cnVjdAppbiBudmRpbW0gZHJpdmVyIHRvIGF2b2lkIGl0J3MgYWNjZXNzZWQg b3V0IG9mIHRoZSBkcml2ZXIgdmlhIHRoZQpyZXNvdXJjZSBzdHJ1Y3QuIEFuZCB0aGUgbnZkaW1t IGRyaXZlciBkb2VzIG5vdCBtYXAgdGhlIHJlc2VydmVkIGFyZWEsCnNvIEkgdGhpbmsgaXQgY2Fu bm90IGJlIHRvdWNoZWQgdmlhIHBhZ2Vfd2Fsay4KCj4gCj4gQnV0IGlmIHlvdSBkbyB0aGF0IGhv dyB3aWxsIFNNQVJUIHRvb2xzIHdvcmsgYW55bW9yZT8gQW5kCj4gd2hvIHdvdWxkIGRvIHRoZSBf RFNNIGNoZWNrcyBvbiB0aGUgaGVhbHRoIG9mIHRoZSBOVkRJTU0/Cj4KCkEgdXNlcnNwYWNlIFNN QVJUIHRvb2wgY2Fubm90IGFjY2VzcyB0aGUgcmVzZXJ2ZWQgYXJlYSwgc28gSSB0aGluayBpdApj YW4gc3RpbGwgd29yay4gSSBoYXZlbid0IGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFu eSBTTUFSVAp0b29scyBmb3IgTlZESU1NLCBidXQgSSBndWVzcyB0aGV5IHdvdWxkIGZpbmFsbHkg Y2FsbCB0aGUgZHJpdmVyIHRvCmV2YWx1YXRlIHRoZSBBUlMgX0RTTSB3aGljaCByZXBvcnRzIHRo ZSBiYWQgYmxvY2tzLiBBcyBsb25nIGFzIHRoZQpkcml2ZXIgZG9lcyBub3QgcmV0dXJuIHRoZSBi YWQgYmxvY2tzIGluIHRoZSByZXNlcnZlZCBhcmVhIHRvIFNNQVJUCnRvb2xzICh3aGljaCBJIHN1 cHBvc2UgdG8gYmUgaGFuZGxlZCBieSBkcml2ZXIgaXRzZWxmKSwgU01BUlQgdG9vbHMKc2hvdWxk IHdvcmsgZmluZS4KCj4gL21lIHNjcmF0Y2hlcyBoaXMgaGVhZC4gUGVyaGFwcyB0aGUgYW5zd2Vy cyBhcmUgbGF0ZXIgaW4gdGhpcwo+IGRlc2lnbi4uCj4KPiA+IAo+ID4gNC4yLjMgR2V0IEhvc3Qg TWFjaGluZSBBZGRyZXNzIChTUEEpIG9mIEhvc3QgcG1lbSBGaWxlcwo+ID4gCj4gPiAgQmVmb3Jl IGEgcG1lbSBmaWxlIGlzIGFzc2lnbmVkIHRvIGEgZG9tYWluLCB3ZSBuZWVkIHRvIGtub3cgdGhl IGhvc3QKPiA+ICBTUEEgcmFuZ2VzIHRoYXQgYXJlIGFsbG9jYXRlZCB0byB0aGlzIGZpbGUuIFdl IGRvIHRoaXMgd29yayBpbiB4bC4KPiA+IAo+ID4gIElmIGEgcG1lbSBkZXZpY2UgL2Rldi9wbWVt MCBpcyBnaXZlbiwgeGwgd2lsbCByZWFkCj4gPiAgL3N5cy9ibG9jay9wbWVtMC9kZXZpY2Uve3Jl c291cmNlLHNpemV9IHJlc3BlY3RpdmVseSBmb3IgdGhlIHN0YXJ0Cj4gPiAgU1BBIGFuZCBzaXpl IG9mIHRoZSBwbWVtIGRldmljZS4KPiAKPiBPaCEgSG93IGNvbnZpZW50IQo+ID4gCj4gPiAgSWYg YSBwcmUtYWxsb2NhdGVkIGZpbGUgL21udC9kYXgvZmlsZSBpcyBnaXZlbiwKPiA+ICAoMSkgeGwg Zmlyc3QgZmluZHMgdGhlIGhvc3QgcG1lbSBkZXZpY2Ugd2hlcmUgL21udC9kYXgvZmlsZSBpcy4g VGhlbgo+ID4gICAgICBpdCB1c2VzIHRoZSBtZXRob2QgYWJvdmUgdG8gZ2V0IHRoZSBzdGFydCBT UEEgb2YgdGhlIGhvc3QgcG1lbQo+ID4gICAgICBkZXZpY2UuCj4gPiAgKDIpIHhsIHRoZW4gdXNl cyBmaWVtYXAgaW9jdGwgdG8gZ2V0IHRoZSBleHRlbmQgbWFwcGluZ3Mgb2YKPiA+ICAgICAgL21u dC9kYXgvZmlsZSwgYW5kIGFkZHMgdGhlIGNvcnJlc3BvbmRpbmcgcGh5c2ljYWwgb2Zmc2V0cyBh bmQKPiA+ICAgICAgbGVuZ3RocyBpbiBlYWNoIG1hcHBpbmcgZW50cmllcyB0byBhYm92ZSBzdGFy dCBTUEEgdG8gZ2V0IHRoZSBTUEEKPiA+ICAgICAgcmFuZ2VzIHByZS1hbGxvY2F0ZWQgZm9yIHRo aXMgZmlsZS4KPiAKPiBOaWNlICEKPiA+IAo+ID4gIFRoZSByZXN1bHRpbmcgaG9zdCBTUEEgcmFu Z2VzIHdpbGwgYmUgcGFzc2VkIHRvIFFFTVUgd2hpY2ggYWxsb2NhdGVzCj4gPiAgZ3Vlc3QgYWRk cmVzcyBzcGFjZSBmb3Igdk5WRElNTSBkZXZpY2VzIGFuZCBjYWxscyBYZW4gaHlwZXJ2aXNvciB0 bwo+ID4gIG1hcCB0aGUgZ3Vlc3QgYWRkcmVzcyB0byB0aGUgaG9zdCBTUEEgcmFuZ2VzLgo+ID4g Cj4gPiA0LjIuNCBNYXAgSG9zdCBwbWVtIHRvIEd1ZXN0cwo+ID4gCj4gPiAgT3VyIGRlc2lnbiBy ZXVzZXMgdGhlIGV4aXN0aW5nIGFkZHJlc3MgbWFwcGluZyBpbiBYZW4gZm9yIHRoZSBub3JtYWwK PiA+ICByYW0gdG8gbWFwIHBtZW0uIFdlIHdpbGwgc3RpbGwgaW5pdGlhdGUgdGhlIG1hcHBpbmcg Zm9yIHBtZW0gZnJvbQo+ID4gIFFFTVUsIGFuZCB0aGVyZSBpcyBvbmUgZGlmZmVyZW5jZSBmcm9t IHRoZSBtYXBwaW5nIG9mIG5vcm1hbCByYW06Cj4gPiAgLSBGb3IgdGhlIG5vcm1hbCByYW0sIFFF TVUgb25seSBuZWVkcyB0byBwcm92aWRlIGdwZm4sIGFuZCB0aGUgYWN0dWFsCj4gPiAgICBob3N0 IG1lbW9yeSB3aGVyZSBncGZuIGlzIG1hcHBlZCBpcyBhbGxvY2F0ZWQgYnkgWGVuIGh5cGVydmlz b3IuCj4gPiAgLSBGb3IgcG1lbSwgUUVNVSBwcm92aWRlcyBib3RoIGdwZm4gYW5kIG1mbiB3aGVy ZSBncGZuIGlzIGV4cGVjdGVkIHRvCj4gPiAgICBiZSBtYXBwZWQgdG8uIG1mbiBpcyBwcm92aWRl ZCBieSB4bCBhcyBkZXNjcmliZWQgaW4gU2VjdGlvbiA0LjIuMy4KPiA+IAo+ID4gIE91ciBkZXNp Z24gaW50cm9kdWNlIGEgbmV3IFhFTk1FTSBvcCBmb3IgdGhlIHBtZW0gbWFwcGluZywgd2hpY2gK PiA+ICBmaW5hbGx5IGNhbGxzIGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoKSB0byBhZGQgdGhlIGhv c3QgcG1lbSBwYWdlIHRvIGEKPiA+ICBkb21haW4ncyBhZGRyZXNzIHNwYWNlLgo+ID4gCj4gPiA0 LjIuNSBNaXNjIDE6IFJBUwo+ID4gCj4gPiAgTWFjaGluZSBjaGVjayBjYW4gb2NjdXIgZnJvbSBO VkRJTU0gYXMgbm9ybWFsIHJhbSwgc28gdGhhdCB3ZSBmb2xsb3cKPiA+ICB0aGUgY3VycmVudCBt YWNoaW5lIGNoZWNrIGhhbmRsaW5nIGluIFhlbiBmb3IgTUMjIGZyb20gTlZESU1NLgo+IAo+IE9L LCBzbyB0aGF0IGlzIG1jX21lbWVycl9kaGFuZGxlci4gT0ssCj4gCj4gSXMgdGhlcmUgZW5vdWdo dCB0ZWxlbXRyeSBpbmZvcm1hdGlvbiBmb3IgdGhlIGd1ZXN0IHRvIGtub3cKPiBpdCBpcyBOVkRJ TU0gYW5kIGhhbmRsZSBpdCB2aWEgdGhlIE5WRElNTSAjTUNFIGVycm9yIGhhbmRsaW5nIHdoaWNo Cj4gaXMgZGlmZmVyZW50IHRoYW4gbm9ybWFsICNNQ0U/Cj4gCj4gSSBwcmVzdW1lIHRoaXMgbWVh bnMgYSBjZXJ0YWluIExpbnV4IGd1ZXN0IGRlcGVuZGVuY3kgYXMgd2VsbAo+IGZvciB0aGlzIHRv IHdvcms/Cj4KClllcywgdGhlIGd1ZXN0IHNob3VsZCBhdCBsZWFzdCBrbm93IHdoaWNoIGFkZHJl c3MgYmVsb25ncyB0bwp2TlZESU1NLiBUaGVuIGl0IGNhbiB0ZWxsIGZyb20gdGhlIGFkZHJlc3Mg b2YgdmlydHVhbCAjTUMgd2hlcmUgdGhlCmVycm9yIGNvbWVzIGZyb20uIE90aGVyd2lzZSwgdGhl IGd1ZXN0IHdpbGwgc2VlIGFuICNNQyBmb3IgYW4gYWRkcmVzcwppdCBkb2Vzbid0IGtub3cuCgo+ ID4gCj4gPiA0LjIuNiBNaXNjIDI6IGhvdHBsdWcKPiA+IAo+ID4gIFRoZSBob3RwbHVnZ2VkIGhv c3QgTlZESU1NIGRldmljZXMgaXMgZGV0ZWN0ZWQgdmlhIF9GSVQgbWV0aG9kIHVuZGVyCj4gPiAg dGhlIHJvb3QgQUNQSSBuYW1lc3BhY2UgZGV2aWNlIGZvciBOVkRJTU0uIFdlIHJlbHkgb24gRG9t MCBMaW51eAo+ID4gIGtlcm5lbCB0byBkaXNjb3ZlciB0aGUgaG90cGx1Z2dlZCBOVkRJTU0gZGV2 aWNlcyBhbmQgZm9sbG93IHN0ZXBzIGluCj4gPiAgU2VjdGlvbiA0LjIuMiB0byByZXBvcnQgdGhl IGhvdHBsdWdnZWQgZGV2aWNlcyB0byBYZW4gaHlwZXJ2aXNvci4KPiA+IAo+ID4gCj4gPiA0LjMg R3Vlc3QgQUNQSSBFbXVsYXRpb24KPiA+IAo+ID4gIEd1ZXN0IEFDUEkgZW11bGF0aW9uIGlzIGNv bXBvc2VkIG9mIHR3byBwYXJ0czogYnVpbGRpbmcgZ3Vlc3QgTkZJVAo+ID4gIGFuZCBTU0RUIHRo YXQgZGVmaW5lcyBBQ1BJIG5hbWVzcGFjZSBkZXZpY2VzIGZvciBOVkRJTU0sIGFuZAo+ID4gIGVt dWxhdGluZyBndWVzdCBfRFNNLiBBcyBRRU1VIGhhcyBhbHJlYWR5IGltcGxlbWVudGVkIEFDUEkg c3VwcG9ydAo+ID4gIGZvciB2TlZESU1NIG9uIEtWTSwgb3VyIGRlc2lnbiBpbnRlbmRzIHRvIHJl dXNlIGl0cyBpbXBsZW1lbnRhdGlvbi4KPiA+IAo+ID4gNC4zLjEgQnVpbGRpbmcgR3Vlc3QgQUNQ SSBUYWJsZXMKPiA+IAo+ID4gIFR3byB0YWJsZXMgZm9yIHZOVkRJTU0gbmVlZCB0byBiZSBidWls dDoKPiA+ICAtIE5GSVQsIHdoaWNoIGRlZmluZXMgdGhlIGJhc2ljIHBhcmFtZXRlcnMgb2Ygdk5W RElNTSBkZXZpY2VzIGFuZAo+ID4gICAgZG9lcyBub3QgY29udGFpbiBhbnkgQU1MIGNvZGUuCj4g PiAgLSBTU0RULCB3aGljaCBkZWZpbmVzIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgZm9yIHZOVkRJ TU0gaW4gQU1MIGNvZGUuCj4gPiAKPiA+ICBUaGUgY29udGVudHMgb2YgYm90aCB0YWJsZXMgYXJl IGFmZmVjdGVkIGJ5IHNvbWUgcGFyYW1ldGVycwo+ID4gIChlLmcuIGFkZHJlc3MgYW5kIHNpemUg b2Ygdk5WRElNTSBkZXZpY2VzKSB0aGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkCj4gPiAgdW50aWwg YSBndWVzdCBjb25maWd1cmF0aW9uIGlzIGdpdmVuLiBIb3dldmVyLCBhbGwgQU1MIGNvZGUgaW4g Z3Vlc3QKPiA+ICBBQ1BJIGFyZSBjdXJyZW50bHkgZ2VuZXJhdGVkIGF0IGNvbXBpbGUgdGltZSBm cm8gcHJlLWNyYWZ0ZWQgLmFzbAo+IAo+IHMvZnJvL2Zvci8KPiAKPiA+ICBmaWxlcywgd2hpY2gg aXMgbm90IGZlYXNpYmxlIGZvciBBQ1BJIG5hbWVzcGFjZSBkZXZpY2VzIGZvciB2TlZESU1NLgo+ ID4gCj4gPiAgV2UgY291bGQgZWl0aGVyIGludHJvZHVjZSBhbiBBTUwgYnVpbGRlciB0byBnZW5l cmF0ZSBBTUwgY29kZSBhdAo+ID4gIHJ1bnRpbWUgbGlrZSB3aGF0IFFFTVUgaXMgY3VycmVudGx5 IGRvaW5nLCBvciBwYXNzIHZOVkRJTU0gQUNQSQo+ID4gIHRhYmxlcyBmcm9tIFFFTVUgdG8gWGVu LiBJbiBvcmRlciB0byByZWR1Y2UgdGhlIGR1cGxpY2F0ZWQgY29kZSAodG8KPiAKPiBzL3RvIFhl bi90byBodm1sb2FkZXIvIEkgdGhpbms/Cj4KCnllcwoKPiA+ICBBTUwgYnVpbGRlciBpbiBRRU1V KSwgb3VyIGRlc2lnbiB0YWtlcyB0aGUgbGF0dGVyIGFwcHJvYWNoLiBCYXNpY2FsbHksCj4gPiAg b3VyIGRlc2lnbiB0YWtlcyB0aGUgZm9sbG93aW5nIHN0ZXBzOgo+ID4gIDEpIFRoZSBjdXJyZW50 IFFFTVUgZG9lcyBub3QgYnVpbGQgYW55IEFDUEkgc3R1ZmZzIHdoZW4gaXQgcnVucyBhcwo+ID4g ICAgIHRoZSBYZW4gZGV2aWNlIG1vZGVsLCBzbyB3ZSBuZWVkIHRvIHBhdGNoIGl0IHRvIGdlbmVy YXRlIE5GSVQgYW5kCj4gPiAgICAgQU1MIGNvZGUgb2YgQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBm b3Igdk5WRElNTS4KPiA+IAo+ID4gIDIpIFFFTVUgdGhlbiBjb3BpZXMgYWJvdmUgTkZJVCBhbmQg QUNQSSBuYW1lc3BhY2UgZGV2aWNlcyB0byBhbiBhcmVhCj4gPiAgICAgYXQgdGhlIGVuZCBvZiBn dWVzdCBtZW1vcnkgYmVsb3cgNEcuIFRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzCj4gPiAgICAg YW5kIHNpemUgb2YgdGhpcyBhcmVhIGFyZSB3cml0dGVuIHRvIHhlbnN0b3JlIGtleXMKPiA+ICAg ICAoL2xvY2FsL2RvbWFpbi9kb21pZC9odm1sb2FkZXIvZG0tYWNwaS97YWRkcmVzcyxsZW5ndGh9 KSBUaGUKPiA+ICAgICBkZXRhaWxlZCBmb3JtYXQgb2YgZGF0YSBpbiB0aGlzIGFyZWEgaXMgZXhw bGFpbmVkIGxhdGVyLgo+ID4gCj4gPiAgMykgaHZtbG9hZGVyIHJlYWRzIGFib3ZlIHhlbnN0b3Jl IGtleXMgdG8gcHJvYmUgdGhlIHBhc3NlZC1pbiBBQ1BJCj4gPiAgICAgdGFibGVzIGFuZCBBQ1BJ IG5hbWVzcGFjZSBkZXZpY2VzLCBhbmQgZGV0ZWN0cyB0aGUgcG90ZW50aWFsCj4gPiAgICAgY29s bGlzaW9ucyBhcyBleHBsYWluZWQgbGF0ZXIuCj4gPiAKPiA+ICA0KSBJZiBubyBjb2xsaXNpb25z IGFyZSBmb3VuZCwgaHZtbG9hZGVyIHdpbGwKPiA+ICAgICAoMSkgYXBwZW5kIHRoZSBwYXNzZWQt aW4gQUNQSSB0YWJsZXMgdG8gdGhlIGVuZCBvZiBleGlzdGluZyBndWVzdAo+ID4gICAgICAgICBB Q1BJIHRhYmxlcywgbGlrZSB3aGF0IGN1cnJlbnQgY29uc3RydWN0X3Bhc3N0aHJvdWdoX3RhYmxl cygpCj4gPiAgICAgICAgIGRvZXMuCj4gPiAgICAgKDIpIGNvbnN0cnVjdCBhIFNTRFQgZm9yIGVh Y2ggcGFzc2VkLWluIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgYW5kCj4gPiAgICAgICAgIGFwcGVu ZCB0byB0aGUgZW5kIG9mIGV4aXN0aW5nIGd1ZXN0IEFDUEkgdGFibGVzLgo+ID4gCj4gPiAgUGFz c2luZyBhcmJpdHJhcnkgQUNQSSB0YWJsZXMgYW5kIEFNTCBjb2RlIGZyb20gUUVNVSBjb3VsZAo+ ID4gIGludHJvZHVjZSBhdCBsZWFzdCB0d28gdHlwZXMgb2YgY29sbGlzaW9uczoKPiA+ICAxKSBh IHBhc3NlZC1pbiB0YWJsZSBhbmQgYSBYZW4tYnVpbHQgdGFibGUgaGF2ZSB0aGUgc2FtZSBzaWdu YXR1cmUKPiA+ICAyKSBhIHBhc3NlZC1pbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UgYW5kIGEgWGVu LWJ1aWx0IEFDUEkgbmFtZXNwYWNlCj4gPiAgICAgZGV2aWNlIGhhdmUgdGhlIHNhbWUgZGV2aWNl IG5hbWUuCj4gPiAKPiA+ICBPdXIgZGVzaWduIHRha2VzIHRoZSBmb2xsb3dpbmcgbWV0aG9kIHRv IGF2b2lkIGFuZCBkZXRlY3QgY29sbGlzaW9ucy4KPiA+ICAxKSBUaGUgZGF0YSBsYXlvdXQgb2Yg YXJlYSB3aGVyZSBRRU1VIGNvcGllcyBpdHMgTkZJVCBhbmQgQUNQSQo+ID4gICAgIG5hbWVzcGFj ZSBkZXZpY2VzIGlzIG9yZ2FuaXplZCBhcyBiZWxvdzoKPiAKPiBXaHkgY2FuJ3QgdGhpcyBiZSBl eHByZXNzZWQgaW4gWGVuU3RvcmU/Cj4gCj4gWW91IGNvdWxkIGhhdmUgL2xvY2FsL2RvbWFpbi9k b21pZC9odm1sb2FkZXIvZG0tYWNwaS88bmFtZT4ve2FkZHJlc3MsbGVuZ3RoLCB0eXBlfQo+ID8K PgoKSWYgWGVuU3RvcmUgY2FuIGJlIHVzZWQsIHRoZW4gaXQgY291bGQgc2F2ZSBzb21lIGd1ZXN0 IG1lbW9yeS4KClRoaXMgaXMgYSBnZW5lcmFsIG1lY2hhbmlzbSB0byBwYXNzIEFDUEkgd2hpY2gg YW5kIGlzIG5vdCBsaW1pdGVkIHRvCk5WRElNTSwgc28gaXQgbWVhbnMgUUVNVSBtYXkgcGFzcyBh IGxvdCBvZiBlbnRyaWVzLiBJJ20gbm90IHN1cmUgaWYKWGVuU3RvcmUgaXMgc3RpbGwgYSBwcm9w ZXIgcGxhY2Ugd2hlbiB0aGUgbnVtYmVyIGlzIGxhcmdlLiBNYXliZSB3ZQpzaG91bGQgcHV0IGFu IHVwcGVyIGxpbWl0IGZvciB0aGUgbnVtYmVyIG9mIGVudHJpZXMuCgo+ID4gCj4gPiAgICAgIDEg Ynl0ZSA0IGJ5dGVzICBsZW5ndGggYnl0ZXMKPiA+ICAgICArLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLQo+ID4gICAgIHwgdHlwZSB8 IGxlbmd0aCB8IGRhdGEgYmxvYiB8IHR5cGUgfCBsZW5ndGggfCBkYXRhIGJsb2IgfCAuLi4KPiA+ ICAgICArLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLQo+ID4gCj4gPiAgICAgdHlwZTogMCAtIGRhdGEgYmxvYiBjb250YWlucyBhIGNv bXBsZXRlIEFDUEkgdGFibGUKPiA+ICAgICAgICAgICAxIC0gZGF0YSBibG9iIGNvbnRhaW5zIEFN TCBjb2RlIGZvciBhbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UKPiA+IAo+ID4gICAgIGxlbmd0aDog dGhlIG51bWJlciBvZiBieXRlcyBvZiBkYXRhIGJsb2IKPiA+IAo+ID4gICAgIGRhdGEgYmxvYjog dHlwZSAwIC0gYSBjb21wbGV0ZSBBQ1BJIHRhYmxlCj4gPiAgICAgICAgICAgICAgICB0eXBlIDEg LSBjb21wb3NlZCBhcyBiZWxvdzoKPiA+IAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIDQg Ynl0ZXMgICAobGVuZ3RoIC0gNCkgYnl0ZXMKPiA+IAkgICAgICAgICAgICAgICAgKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rCj4gPiAJCQl8IG5hbWVbNF0gfCBBTUwgY29kZSBzbmlwcGV0 IHwKPiA+IAkJCSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4gCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBuYW1lWzRdICAgICAgICAgOiBuYW1lIG9mIEFDUEkgbmFtZXNwYWNl IGRldmljZQo+ID4gCQkJQU1MIGNvZGUgc25pcHBldDogQU1MIGNvZGUgaW5zaWRlICJEZXZpY2Uo bmFtZVs0XSkiCj4gPiAKPiA+ICAgICAgICAgICAgICAgIGUuZy4gZm9yIGFuIEFDUEkgbmFtZXNw YWNlIGRldmljZSBkZWZpbmVkIGJ5Cj4gPiAJICAgICAgICAgICAgIERldmljZShOVkRSKQo+ID4g CQkgICAgIHsKPiA+IAkJICAgICAgIE5hbWUgKF9ISUQsICJBQ1BJMDAxMiIpCj4gPiAJCSAgICAg ICAuLi4KPiA+IAkJICAgICB9Cj4gPiAJCSAgICBRRU1VIGJ1aWxkcyBhIGRhdGEgYmxvYiBsaWtl Cj4gPiAJCSAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+ID4gCQkJfCAnTicsICdWJywgJ0QnLCAnUicgfCBOYW1lIChfSElELCAiQUNQ STAwMTIiKSAuLi4gfAo+ID4gCQkJKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+ID4gCj4gPiAgMikgaHZtbG9hZGVyIHN0b3JlcyBzaWduYXR1cmVz IG9mIGl0cyBvd24gZ3Vlc3QgQUNQSSB0YWJsZXMgaW4gYW4KPiA+ICAgICBhcnJheSBidWlsdGlu X3RhYmxlX3NpZ3NbXSwgYW5kIG5hbWVzIG9mIGl0cyBvd24gZ3Vlc3QgQUNQSQo+ID4gICAgIG5h bWVzcGFjZSBkZXZpY2VzIGluIGFuIGFycmF5IGJ1aWx0aW5fbmRfbmFtZXNbXS4gQmVjYXVzZSB0 aGVyZQo+ID4gICAgIGFyZSBvbmx5IGEgZmV3IGd1ZXN0IEFDUEkgdGFibGVzIGFuZCBuYW1lc3Bh Y2UgZGV2aWNlcyBidWlsdCBieQo+ID4gICAgIFhlbiwgd2UgY2FuIGhhcmRjb2RlIHRoZWlyIHNp Z25hdHVyZXMgb3IgbmFtZXMgaW4gaHZtbG9hZGVyLgo+ID4gCj4gPiAgMykgV2hlbiBodm1sb2Fk ZXIgbG9hZHMgYSB0eXBlIDAgZW50cnksIGl0IGV4dHJhY3RzIHRoZSBzaWduYXR1cmUKPiAKPiBz L3R5cGUgMC9kYXRhIGJsb2ItPnR5cGUgMC8gPwo+CgpubywgdHlwZSBpbmZvcm1hdGlvbiBpcyBv dXQgb2YgZGF0YSBibG9iICh7dHlwZSwgbGVuZ3RoLCBkYXRhIGJsb2J9KQoKPiA+ICAgICBmcm9t IHRoZSBkYXRhIGJsb2IgYW5kIHNlYXJjaCBmb3IgaXQgaW4gYnVpbHRpbl90YWJsZV9zaWdzW10u ICBJZgo+ID4gICAgIGZvdW5kIGFueW9uZSwgaHZtbG9hZGVyIHdpbGwgcmVwb3J0IGFuIGVycm9y IGFuZCBzdG9wLiBPdGhlcndpc2UsCj4gPiAgICAgaXQgd2lsbCBhcHBlbmQgaXQgdG8gdGhlIGVu ZCBvZiBsb2FkZWQgZ3Vlc3QgQUNQSS4KPiA+IAo+ID4gIDQpIFdoZW4gaHZtbG9hZGVyIGxvYWRz IGEgdHlwZSAxIGVudHJ5LCBpdCBleHRyYWN0cyB0aGUgZGV2aWNlIG5hbWUKPiA+ICAgICBmcm9t IHRoZSBkYXRhIGJsb2IgYW5kIHNlYXJjaCBmb3IgaXQgaW4gYnVpbHRpbl9uZF9uYW1lc1tdLiBJ Zgo+ID4gICAgIGZvdW5kIGFueW9uZSwgaHZtbG9hZGVyIHdpbGwgcmVwb3J0IGFuZCBlcnJvciBh bmQgc3RvcC4gT3RoZXJ3aXNlLAo+ID4gICAgIGl0IHdpbGwgd3JhcCB0aGUgQU1MIGNvZGUgc25p cHBldCBieSAiRGV2aWNlIChuYW1lWzRdKSB7Li4ufSIgYW5kCj4gPiAgICAgaW5jbHVkZSBpdCBp biBhIG5ldyBTU0RUIHdoaWNoIGlzIHRoZW4gYXBwZW5kZWQgdG8gdGhlIGVuZCBvZgo+ID4gICAg IGxvYWRlZCBndWVzdCBBQ1BJLgo+ID4gCj4gPiA0LjMuMiBFbXVsYXRpbmcgR3Vlc3QgX0RTTQo+ ID4gCj4gPiAgT3VyIGRlc2lnbiBsZWF2ZXMgdGhlIGVtdWxhdGlvbiBvZiBndWVzdCBfRFNNIHRv IFFFTVUuIEp1c3QgYXMgd2hhdAo+ID4gIGl0IGRvZXMgd2l0aCBLVk0sIFFFTVUgcmVnaXN0ZXJz IHRoZSBfRFNNIGJ1ZmZlciBhcyBNTUlPIHJlZ2lvbiB3aXRoCj4gPiAgWGVuIGFuZCB0aGVuIGFs bCBndWVzdCBldmFsdWF0aW9ucyBvZiBfRFNNIGFyZSB0cmFwcGVkIGFuZCBlbXVsYXRlZAo+ID4g IGJ5IFFFTVUuCj4gCj4gU3dlZXQhCj4gCj4gU28gb25lIHF1ZXN0aW9uIHRoYXQgSSBhbSBub3Qg aWYgaXQgaGFzIGJlZW4gYW5zd2VyZWQsIHdpdGggdGhlCj4gJ3N0cnVjdCBwYWdlX2luZm8nIGJl aW5nIHJlbW92ZWQgZnJvbSB0aGUgZG9tMCBob3cgd2lsbCBPRU0gX0RTTSBtZXRob2QKPiBvcGVy YXRpb24/IEZvciBleGFtcGxlIHNvbWUgb2YgdGhlIEFNTCBjb2RlIG1heSBhc2tpbmcgdG8gcG9r ZQo+IGF0IHNwZWNpZmljIFNQQXMsIGJ1dCBob3cgd2lsbCBMaW51eCBkbyB0aGlzIHByb3Blcmx5 IHdpdGhvdXQKPiAnc3RydWN0IHBhZ2VfaW5mbycgYmUgYXZhaWxhYmxlPwo+Cgoocy9wYWdlX2lu Zm8vcGFnZS8pCgpUaGUgY3VycmVudCBJbnRlbCBOVkRJTU0gZHJpdmVyIGluIExpbnV4IGRvZXMg bm90IGV2YWx1YXRlIGFueSBPRU0KX0RTTSBtZXRob2QsIHNvIEknbSBub3Qgc3VyZSB3aGV0aGVy IHRoZSBrZXJuZWwgaGFzIHRvIGFjY2VzcyBhIE5WRElNTQpwYWdlIGR1cmluZyBldmFsdWF0aW5n IF9EU00uCgpUaGUgbW9zdCBjbG9zZSBvbmUgaW4gbXkgbWluZCwgdGhvdWdoIG5vdCBhbiBPRU0g X0RTTSwgaXMgZnVuY3Rpb24gMQpvZiBBUlMgX0RTTSwgd2hpY2ggcmVxdWlyZXMgaW5wdXRzIG9m IGEgc3RhcnQgU1BBIGFuZCBhIGxlbmd0aCBpbgpieXRlcy4gQWZ0ZXIga2VybmVsIGdpdmVzIHRo ZSBpbnB1dHMsIHRoZSBzY3J1YmJpbmcgb2YgdGhlIHNwZWNpZmllZAphcmVhIGlzIGRvbmUgYnkg dGhlIGhhcmR3YXJlIGFuZCBkb2VzIG5vdCByZXF1aXJlcyBhbnkgbWFwcGluZ3MgaW4gT1MuCgpB bnkgZXhhbXBsZSBvZiBzdWNoIE9FTSBfRFNNIG1ldGhvZHM/CgpUaGFua3MsCkhhb3pob25nCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK