From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: Re: [RFC KERNEL PATCH 0/2] Add Dom0 NVDIMM support for Xen Date: Thu, 20 Oct 2016 17:14:53 +0800 Message-ID: <20161020091453.mutfhmlgb2lc4gmj__42933.3712127574$1476955000$gmane$org@hz-desktop> References: <57FF633E0200007800116F59@prv-mh.provo.novell.com> <20161013085344.ulju7pnnbvufc4em@hz-desktop> <57FF6B130200007800116F96@prv-mh.provo.novell.com> <20161014070850.hbirvazu3e2pp4gb@hz-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bx9RF-0000J7-Lm for xen-devel@lists.xenproject.org; Thu, 20 Oct 2016 09:15:01 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper Cc: Juergen Gross , Xiao Guangrong , Andrew Morton , Arnd Bergmann , "linux-nvdimm@lists.01.org" , "linux-kernel@vger.kernel.org" , Stefano Stabellini , David Vrabel , Jan Beulich , Johannes Thumshirn , xen-devel@lists.xenproject.org, Dan Williams , Ross Zwisler , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org T24gMTAvMTQvMTYgMTM6MTggKzAxMDAsIEFuZHJldyBDb29wZXIgd3JvdGU6Cj5PbiAxNC8xMC8x NiAwODowOCwgSGFvemhvbmcgWmhhbmcgd3JvdGU6Cj4+IE9uIDEwLzEzLzE2IDIwOjMzICswMTAw LCBBbmRyZXcgQ29vcGVyIHdyb3RlOgo+Pj4gT24gMTMvMTAvMTYgMTk6NTksIERhbiBXaWxsaWFt cyB3cm90ZToKPj4+PiBPbiBUaHUsIE9jdCAxMywgMjAxNiBhdCA5OjAxIEFNLCBBbmRyZXcgQ29v cGVyCj4+Pj4gPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+IHdyb3RlOgo+Pj4+PiBPbiAxMy8x MC8xNiAxNjo0MCwgRGFuIFdpbGxpYW1zIHdyb3RlOgo+Pj4+Pj4gT24gVGh1LCBPY3QgMTMsIDIw MTYgYXQgMjowOCBBTSwgSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPgo+Pj4+Pj4gd3Jv dGU6Cj4+Pj4+PiBbLi5dCj4+Pj4+Pj4+IEkgdGhpbmsgd2UgY2FuIGRvIHRoZSBzaW1pbGFyIGZv ciBYZW4sIGxpa2UgdG8gbGF5IGFub3RoZXIgcHNldWRvCj4+Pj4+Pj4+IGRldmljZSBvbiAvZGV2 L3BtZW0gYW5kIGRvIHRoZSByZXNlcnZhdGlvbiwgbGlrZSAyLiBpbiBteSBwcmV2aW91cwo+Pj4+ Pj4+PiByZXBseS4KPj4+Pj4+PiBXZWxsLCBteSBvcGluaW9uIGNlcnRhaW5seSBkb2Vzbid0IGNv dW50IG11Y2ggaGVyZSwgYnV0IEkKPj4+Pj4+PiBjb250aW51ZSB0bwo+Pj4+Pj4+IGNvbnNpZGVy IHRoaXMgYSBiYWQgaWRlYS4gRm9yIGVudGl0aWVzIGxpa2UgZHJpdmVycyBpdCBtYXkgd2VsbCBi ZQo+Pj4+Pj4+IGFwcHJvcHJpYXRlLCBidXQgSSB0aGluayB0aGVyZSBvdWdodCB0byBiZSBhbiBp bmRlcGVuZGVudCBjb25jZXB0Cj4+Pj4+Pj4gb2YgIk9TIHJlc2VydmVkIiwgYW5kIGluIHRoZSBY ZW4gY2FzZSB0aGlzIGNvdWxkIHRoZW4gYmUgc2hhcmVkCj4+Pj4+Pj4gYmV0d2VlbiBoeXBlcnZp c29yIGFuZCBEb20wIGtlcm5lbC4gT3IgaWYgd2Ugd2VyZSB0byBjb25zaWRlciBEb20wCj4+Pj4+ Pj4gImp1c3QgYSBndWVzdCIsIHRoaW5ncyBzaG91bGQgZXZlbiBiZSB0aGUgb3RoZXIgd2F5IGFy b3VuZDogWGVuIGdldHMKPj4+Pj4+PiBhbGwgb2YgdGhlIE9TIHJlc2VydmVkIHNwYWNlLCBhbmQg RG9tMCBuZWVkcyBzb21ldGhpbmcgY3VzdG9tLgo+Pj4+Pj4gWW91IGhhdmVuJ3QgbWFkZSB0aGUg Y2FzZSB3aHkgWGVuIGlzIHNwZWNpYWwgYW5kIG90aGVyCj4+Pj4+PiBhcHBsaWNhdGlvbnMgb2YK Pj4+Pj4+IHBlcnNpc3RlbnQgbWVtb3J5IGFyZSBub3QuCj4+Pj4+IEluIGEgWGVuIHN5c3RlbSwg WGVuIHJ1bnMgaW4gdGhlIGJhcmVtZXRhbCByb290LW1vZGUgcmluZzAsIGFuZAo+Pj4+PiBkb20w IGlzCj4+Pj4+IGEgVk0gcnVubmluZyBpbiByaW5nMS8zIHdpdGggdGhlIG52ZGltbSBkcml2ZXIu ICBUaGlzIGlzIHRoZSBvcHBvc2l0ZQo+Pj4+PiB3YXkgYXJvdW5kIHRvIHRoZSBLVk0gbW9kZWwu Cj4+Pj4+Cj4+Pj4+IERvbTAsIGJlaW5nIHRoZSBoYXJkd2FyZSBkb21haW4sIGhhcyBkZWZhdWx0 IG93bmVyc2hpcCBvZiBhbGwgdGhlCj4+Pj4+IGhhcmR3YXJlLCBidXQgdG8gZ2FpbiBhY2Nlc3Mg aW4gdGhlIGZpcnN0IHBsYWNlLCBpdCBtdXN0IHJlcXVlc3QgYQo+Pj4+PiBtYXBwaW5nIGZyb20g WGVuLgo+Pj4+IFRoaXMgaXMgd2hlcmUgbXkgdW5kZXJzdGFuZGluZyB0aGUgWGVuIG1vZGVsIGJy ZWFrcyBkb3duLiAgQXJlIHlvdQo+Pj4+IHNheWluZyBkb20wIGNhbid0IGFjY2VzcyB0aGUgcGVy c2lzdGVudCBtZW1vcnkgcmFuZ2UgdW5sZXNzIHRoZSByaW5nMAo+Pj4+IGFnZW50IGhhcyBtZXRh ZGF0YSBzdG9yYWdlIHNwYWNlIGZvciB0cmFja2luZyB3aGF0IGl0IG1hcHMgaW50byBkb20wPwo+ Pj4KPj4+IE5vLiAgSSBhbSB0cnlpbmcgdG8gcG9pbnQgb3V0IHRoYXQgdGhlIGN1cnJlbnQgc3Vn Z2VzdGlvbiB3b250IHdvcmssIGFuZAo+Pj4gbmVlZHMgcmUtZGVzaWduaW5nLgo+Pj4KPj4+IFhl biAqbXVzdCogYmUgYWJsZSB0byBwcm9wZXJseSBjb25maWd1cmUgbWFwcGluZ3Mgb2YgdGhlIE5W RElNTSBmb3IKPj4+IGRvbTAsICp3aXRob3V0KiBtb2RpZnlpbmcgYW55IGNvbnRlbnQgb24gdGhl IE5WRElNTS4gIE90aGVyd2lzZSwgZGF0YQo+Pj4gY29ycnVwdGlvbiB3aWxsIG9jY3VyLgo+Pj4K Pj4+IFdoZXRoZXIgdGhpcyBtZWFucyBubyBYZW4gbWV0YWRhdGEsIG9yIHRoZSBtZXRhZGF0YSBs aXZpbmcgZWxzZXdoZXJlIGluCj4+PiByZWd1bGFyIHJhbSwgc3VjaCBhcyB0aGUgbWFpbiBmcmFt ZXRhYmxlLCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCj4+Pgo+Pj4+Cj4+Pj4+IE9uY2Ug ZG9tMCBoYXMgYSBtYXBwaW5nIG9mIHRoZSBudmRpbW0sIHRoZSBudmRpbW0gZHJpdmVyIGNhbiBn byB0bwo+Pj4+PiB3b3JrCj4+Pj4+IGFuZCBmaWd1cmUgb3V0IHdoYXQgaXMgb24gdGhlIERJTU0s IGFuZCB3aGljaCBhcmVhcyBhcmUgc2FmZSB0byB1c2UuCj4+Pj4gSSBkb24ndCB1bmRlcnN0YW5k IHRoaXMgb3JkZXJpbmcgb2YgZXZlbnRzLiAgRG9tMCBuZWVkcyB0byBoYXZlIGEKPj4+PiBtYXBw aW5nIHRvIGV2ZW4gd3JpdGUgdGhlIG9uLW1lZGlhIHN0cnVjdHVyZSB0byBpbmRpY2F0ZSBhCj4+ Pj4gcmVzZXJ2YXRpb24uICBTbywgaW5pdGlhbCBkb20wIGFjY2VzcyBjYW4ndCBkZXBlbmQgb24g bWV0YWRhdGEKPj4+PiByZXNlcnZhdGlvbiBhbHJlYWR5IGJlaW5nIHByZXNlbnQuCj4+Pgo+Pj4g SSBhZ3JlZS4KPj4+Cj4+PiBPdmVyYWxsLCBJIHRoaW5rIHRoZSBmb2xsb3dpbmcgaXMgbmVlZGVk Lgo+Pj4KPj4+ICogWGVuIHN0YXJ0cyB1cC4KPj4+ICoqIFhlbiBtaWdodCBmaW5kIHNvbWUgTlZE SU1NIFNQQS9NRk4gcmFuZ2VzIGluIHRoZSBORklUIHRhYmxlLCBhbmQKPj4+IG5lZWRzIHRvIG5v dGUgdGhpcyBpbmZvcm1hdGlvbiBzb21laG93Lgo+Pj4gKiogWGVuIG1pZ2h0IGZpbmQgc29tZSBU eXBlIDcgRTgyMCByZWdpb25zLCBhbmQgbmVlZHMgdG8gbm90ZSB0aGlzCj4+PiBpbmZvcm1hdGlv biBzb21laG93Lgo+Pgo+PiBJSVVDLCB0aGlzIGlzIHRvIGNvbGxlY3QgTUZOcyBhbmQgbm8gbmVl ZCB0byBjcmVhdGUgZnJhbWUgdGFibGUgYW5kCj4+IE0yUCBhdCB0aGlzIHN0YWdlLiBJZiBzbywg d2hhdCBpcyBkaWZmZXJlbnQgZnJvbSAuLi4KPj4KPj4+ICogWGVuIHN0YXJ0cyBkb20wLgo+Pj4g KiBPbmNlIE9TUE0gaXMgcnVubmluZywgYSBYZW4gY29tcG9uZW50IGluIExpbnV4IG5lZWRzIHRv IGNvbGxlY3QgYW5kCj4+PiByZXBvcnQgYWxsIE5WRElNTSBTUEEvTUZOIHJlZ2lvbnMgaXQga25v d25zIGFib3V0Lgo+Pj4gKiogVGhpcyBjb3ZlcnMgdGhlIEFNTC1vbmx5IGNhc2UsIGFuZCB0aGUg aG90cGx1ZyBjYXNlLgo+Pgo+PiAuLi4gdGhlIE1GTnMgcmVwb3J0ZWQgaGVyZSwgZXNwZWNpYWxs eSB0aGF0IHRoZSBmb3JtZXIgaXMgYSBzdWJzZXQKPj4gKGhvdHBsdWcgb25lcyBub3QgaW5jbHVk ZWQgaW4gdGhlIGZvcm1lcikgb2YgbGF0dGVyLgo+Cj5Ib3BlZnVsbHkgbm90aGluZy4gIEhvd2V2 ZXIsIFhlbiBzaG91bGRuJ3QgZXhjbHVzaXZlbHkgcmVseSBvbiB0aGUgZG9tMAo+d2hlbiBpdCBp cyBjYXBhYmxlIG9mIHdvcmtpbmcgdGhpbmdzIG91dCBpdHNlbGYsICh3aGljaCBjYW4gYWlkIHdp dGgKPmRlYnVnZ2luZyBvbmUgaGFsZiBvZiB0aGlzIGFycmFuZ2VtZW50KS4gIEFsc28sIHRoZSBN Rk5TIGZvdW5kIGJ5IFhlbgo+YWxvbmUgY2FuIGJlIHByZXNlbnQgaW4gdGhlIGRlZmF1bHQgbWVt b3J5IG1hcCBmb3IgZG9tMC4KPgoKU3VyZSwgSSdsbCBhZGQgY29kZSB0byBwYXJzaW5nIE5GSVQg aW4gWGVuIHRvIGRpc2NvdmVyIHN0YXRpY2FsbHkKcGx1Z2dlZCBwbWVtIG1vZGUgTlZESU1NIGFu ZCB0aGVpciBNRk5zLgoKQnkgdGhlIGRlZmF1bHQgbWVtb3J5IG1hcCBmb3IgZG9tMCwgZG8geW91 IG1lYW4gbWFraW5nClhFTk1FTV9tZW1vcnlfbWFwIHJldHVybnMgYWJvdmUgTUZOcyBpbiBEb20w IEU4MjA/Cgo+Pgo+PiAoVGhlcmUgaXMgbm8gRTgyMCBob2xlIG9yIFNSQVQgZW50cmllcyB0byB0 ZWxsIHdoaWNoIGFkZHJlc3MgcmFuZ2UgaXMKPj4gcmVzZXJ2ZWQgZm9yIGhvdHBsdWdnZWQgTlZE SU1NKQo+Pgo+Pj4gKiBEb20wIHJlcXVlc3RzIGEgbWFwcGluZyBvZiB0aGUgTlZESU1NcyB2aWEg dGhlIHVzdWFsIG1lY2hhbmlzbS4KPj4KPj4gVHdvIHF1ZXN0aW9uczoKPj4gMS4gV2h5IGlzIHRo aXMgcmVxdWVzdCBuZWNlc3Nhcnk/IEV2ZW4gd2l0aG91dCBzdWNoIHJlcXVlc3RzIGxpa2Ugd2hh dAo+PiAgIG15IGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIERvbTAgY2FuIHN0aWxsIGFjY2VzcyBO VkRJTU0uCj4KPkNhbiBpdD8gIChpZiBzbywgZ3JlYXQsIGJ1dCBJIGRvbid0IHRoaW5rIHRoaXMg aG9sZHMgaW4gdGhlIGdlbmVyYWwKPmNhc2UuKSAgSXMgdGhhdCBhIHNpZGUgZWZmZWN0IG9mIHRo ZSBOVkRJTU0gYmVpbmcgY292ZXJlZCBieSBhIGhvbGUgaW4KPnRoZSBFODIwPwoKSW4gbXkgZGV2 ZWxvcG1lbnQgZW52aXJvbm1lbnQsIE5WRElNTSBNRk5zIGFyZSBub3QgY292ZXJlZCBieSBhbnkg RTgyMAplbnRyeSBhbmQgYXBwZWFyIGFmdGVyIFJBTSBNRk5zLgoKQ2FuIHlvdSBleHBsYWluIG1v cmUgYWJvdXQgdGhpcyBwb2ludD8gV2h5IGNhbiBpdCB3b3JrIGlmIGNvdmVyZWQgYnkKRTgyMCBo b2xlPwoKPlRoZSBjdXJyZW50IGxvZ2ljIGZvciB3aGF0IGRvbTAgbWF5IGFjY2VzcyBieSBkZWZh dWx0IGlzCj5zb21ld2hhdCBhZC1ob2MsIGFuZCBJIGhhdmUgYSBndXQgZmVlbGluZyB0aGF0IGl0 IHdvbid0IHdvcmsgd2l0aCBFODIwCj50eXBlIDcgcmVnaW9ucy4KPgo+Pgo+PiAgIE9yIGRvIHlv dSBtZWFuIFhlbiBoeXBlcnZpc29yIHNob3VsZCBieSBkZWZhdWx0IGRpc2FsbG93IERvbTAgdG8K Pj4gICBhY2Nlc3MgTUZOcyByZXBvcnRlZCBpbiBwcmV2aW91cyBzdGVwIHVudGlsIHRoZXkgYXJl IHJlcXVlc3RlZD8KPgo+Tm8gLSBJIGFtIG5vdCBzdWdnZXN0aW5nIHRoaXMuCj4KPj4KPj4gMi4g V2hvIGluaXRpYXRlcyB0aGUgcmVxdWVzdHM/IElmIGl0J3MgdGhlIGxpYm52ZGltbSBkcml2ZXIs IHRoYXQKPj4gICBtZWFucyB3ZSBzdGlsbCBuZWVkIHRvIGludHJvZHVjZSBYZW4gc3BlY2lmaWMg Y29kZSB0byB0aGUgZHJpdmVyLgo+Pgo+PiAgIE9yIHRoZSByZXF1ZXN0cyBhcmUgaXNzdWVkIGJ5 IE9TUE0gKG9yIHRoZSBYZW4gY29tcG9uZW50IHlvdQo+PiAgIG1lbnRpb25lZCBhYm92ZSkgd2hl biB0aGV5IHByb2JlIG5ldyBkaW1tcz8KPj4KPj4gICBGb3IgdGhlIGxhdHRlciwgRGFuLCBkbyB5 b3UgdGhpbmsgaXQncyBhY2NlcHRhYmxlIGluIE5GSVQgY29kZSB0bwo+PiAgIGNhbGwgdGhlIFhl biBjb21wb25lbnQgdG8gcmVxdWVzdCB0aGUgYWNjZXNzIHBlcm1pc3Npb24gb2YgdGhlIHBtZW0K Pj4gICByZWdpb25zLCBlLmcuIGluIGFwaWNfbmZpdF9pbnNlcnRfcmVzb3VyY2UoKS4gT2YgY291 cnNlLCBpdCdzIG9ubHkKPj4gICB1c2VkIGZvciBEb20wIGNhc2UuCj4KPlRoZSBsaWJudmRpbW0g ZHJpdmVyIHNob3VsZCBjb250aW51ZSB0byB1c2UgaW9yZW1hcCgpIG9yIHdoYXRldmVyIGl0Cj5j dXJyZW50bHkgZG9lcy4gIFRoZXJlIHNob3VsZG4ndCBiZSBYZW4gbW9kaWZpY2F0aW9ucyBsaWtl IHRoYXQuCj4KPlRoZSBvbmUgaXNzdWUgd2lsbCBjb21lIGlmIGxpYm52ZGltbSB0cmllcyB0byBp b3JlbWFwKCkvb3RoZXIgYW4gYXJlYQo+d2hpY2ggWGVuIGlzIHVuYXdhcmUgaXMgYW4gTlZESU1N LCBhbmQgcmVqZWN0cyB0aGUgbWFwcGluZyByZXF1ZXN0Lgo+U29tZWhvdywgYSBYZW4gY29tcG9u ZW50IHdpbGwgbmVlZCB0byBmaW5kIHRoZSBNRk4vU1BBIGxheW91dCBhbmQKPnJlZ2lzdGVyIHRo aXMgaW5mb3JtYXRpb24gd2l0aCBYZW4sIGJlZm9yZSB0aGUgaW9yZW1hcCgpIGNhbGwgbWFkZSBi eQo+dGhlIGxpYm52ZGltbSBkcml2ZXIuICBQZXJoYXBzIGEgbm90aWZpZXIgbWVjaGFuaXNtIG91 dCBmcm9tIHRoZSBBQ1BJCj5zdWJzeXN0ZW0gbWlnaHQgYmUgdGhlIGJlc3Qgd2F5IHRvIG1ha2Ug dGhpcyB3b3JrIGluIGEgY2xlYW4gd2F5Lgo+CgpZZXMsIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBo b3RwbHVnZ2VkIE5WRElNTS4KCj4+Cj4+PiAqKiBUaGlzIHNob3VsZCB3b3JrLCBhcyBYZW4gaXMg YXdhcmUgdGhhdCB0aGVyZSBpcyBzb21ldGhpbmcgdGhlcmUgdG8gYmUKPj4+IG1hcHBlZCAocmF0 aGVyIHRoYW4ganVzdCBlbXB0eSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlKS4KPj4+ICogRG9tMCBm aW5kcyB0aGF0IHNvbWUgTlZESU1NIHJhbmdlcyBhcmUgbm93IGF2YWlsYWJsZSBmb3IgdXNlIChw cm9iYWJseQo+Pj4gbW9kZWxsZWQgYXMgaG90cGx1ZyBldmVudHMpLgo+Pj4gKiAvZGV2L3BtZW0g JFNUVUZGIHN0YXJ0cyBoYXBwZW5pbmcgYXMgbm9ybWFsLgo+Pj4KPj4+IEF0IHNvbWUgcG9pbnRl ciBsYXRlciBhZnRlciBkb20wIHBvbGljeSBkZWNpc2lvbnMgYXJlIG1hZGUgKHVsdGltYXRlbHks Cj4+PiBieSB0aGUgaG9zdCBhZG1pbmlzdHJhdG9yKToKPj4+ICogSWYgYW4gYXJlYSBvZiBOVkRJ TU0gaXMgY2hvc2VuIGZvciBYZW4gdG8gdXNlLCBEb20wIG5lZWRzIHRvIGluZm9ybQo+Pj4gWGVu IG9mIHRoZSBTUEEvTUZOIHJlZ2lvbnMgd2hpY2ggYXJlIHNhZmUgdG8gdXNlLgo+Pj4gKiBYZW4g dGhlbiBpbmNvcnBvcmF0ZXMgdGhlc2UgcmVnaW9ucyBpbnRvIGl0cyBpZGVhIG9mIFJBTSwgYW5k IHN0YXJ0cwo+Pj4gdXNpbmcgdGhlbSBmb3Igd2hhdGV2ZXIuCj4+Pgo+Pgo+PiBBZ3JlZS4gSSB0 aGluayB3ZSBtYXkgbm90IG5lZWQgdG8gZml4IHRoZSB3YXkvZm9ybWF0Ly4uLiB0byBtYWtlIHRo ZQo+PiByZXNlcnZhdGlvbiwgYW5kIGluc3RlYWQgbGV0IHRoZSB1c2VycyAoaG9zdCBhZG1pbmlz dHJhdG9ycyksIHdobyBoYXZlCj4+IGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIGRhdGEs IG1ha2UgdGhlIHByb3BlciBkZWNpc2lvbi4KPgo+WWVzLiAgVGhpcyBpcyB0aGUgYmVzdCBjb3Vy c2Ugb2YgYWN0aW9uLgo+Cj4+Cj4+IEluIGEgd29yc2UgY2FzZSB0aGF0IG5vIHJlc2VydmF0aW9u IGlzIG1hZGUsIFhlbiBoeXBlcnZpc29yIGNvdWxkIHR1cm4KPj4gdG8gdXNlIFJBTSBmb3IgbWFu YWdlbWVudCBzdHJ1Y3R1cmVzIGZvciBOVkRJTU0sIHdpdGggdGhlIGNvc3Qgb2YgbGVzcwo+PiBS QU0gZm9yIGd1ZXN0cy4KPgo+T3Igc2ltcGx5IG5vdCBtYW5hZ2UgdGhlIE5WRElNTSBhdCBhbGwu Cj4KPk9UT0gsIGEgZGlmZmVyZW50IHVzZWNhc2UgbWlnaHQgYmUgdG8gcmVnaXN0ZXIgYSBzbWFs bCBhcmVhIGZvciBYZW4gdG8KPnVzZSB0byBjcmFzaCBsb2cgaW50by4KPgoKYW4gaW50ZXJlc3Rp bmcgdXNhZ2UsIGJ1dCBJJ2QgbGlrZSB0byBwdXQgaXQgaW4gdGhlIGZ1dHVyZSB3b3JrLgoKVGhh bmtzLApIYW96aG9uZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==