From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey G Subject: Re: [RFC PATCH 07/12] hvmloader: allocate MMCONFIG area in the MMIO hole + minor code refactoring Date: Tue, 27 Mar 2018 05:42:11 +1000 Message-ID: <20180327054211.00003e13@gmail.com> References: <6dd0dcee536c44409bda0729bdac5164@AMSPEX02CL03.citrite.net> <20180322215636.000042ea@gmail.com> <5AB3AB1802000078001B5065@prv-mh.provo.novell.com> <20180322230511.00000b6a@gmail.com> <5AB3BB9002000078001B5134@prv-mh.provo.novell.com> <20180323003421.00000566@gmail.com> <5AB3CED102000078001B529A@prv-mh.provo.novell.com> <20180323010833.0000444c@gmail.com> <20180324083244.00003d8e@gmail.com> <20180326092438.7auduhpx5eu3adb3@MacBook-Pro-de-Roger.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f0Y0c-0005gp-6Z for xen-devel@lists.xenproject.org; Mon, 26 Mar 2018 19:42:22 +0000 Received: by mail-lf0-x229.google.com with SMTP id q5-v6so4645955lff.12 for ; Mon, 26 Mar 2018 12:42:19 -0700 (PDT) In-Reply-To: <20180326092438.7auduhpx5eu3adb3@MacBook-Pro-de-Roger.local> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau =?UTF-8?Q?Monn=C3=A9?= Cc: StefanoStabellini , Wei Liu , Andrew Cooper , Paul Durrant , Jan Beulich , "xen-devel@lists.xenproject.org" , Anthony Perard , Ian Jackson List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAyNiBNYXIgMjAxOCAxMDoyNDozOCArMDEwMApSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cgo+T24gU2F0LCBNYXIgMjQsIDIwMTggYXQgMDg6MzI6 NDRBTSArMTAwMCwgQWxleGV5IEcgd3JvdGU6ClsuLi5dCj4+IEluIGZhY3QsIHRoZSBlbXVsYXRl ZCBjaGlwc2V0IChOQitTQiBjb21ibyB3aXRob3V0IHN1cHBsZW1lbnRhbAo+PiBkZXZpY2VzKSBp dHNlbGYgaXMgYSBzbWFsbCBwYXJ0IG9mIHJlcXVpcmVkIGVtdWxhdGlvbi4gSXQncwo+PiByZWxh dGl2ZWx5IGVhc3kgdG8gcHJvdmlkZSBvd24gYW5hbG9ncyBvZiBmb3IgZWcuICdtY2gnIGFuZAo+ PiAnSUNIOS1MUEMnIFFFTVUgUENJRGV2aWNlJ3MsIHRoZSBwcm9ibGVtIGlzIHRvIGdsdWUgYWxs IHJlbWFpbmluZwo+PiBwYXJ0cyB0b2dldGhlci4KPj4gCj4+IEkgYXNzdW1lIHRoZSBmaW5hbCBn b2FsIGluIHRoaXMgY2FzZSBpcyB0byBoYXZlIG9ubHkgYSBzZXQgb2YKPj4gbmVjZXNzYXJ5IFFF TVUgUENJRGV2aWNlJ3MgZm9yIHdoaWNoIHdlIHdpbGwgYmUgcHJvdmlkaW5nIEkvTywgTU1JTwo+ PiBhbmQgUENJIGNvbmYgdHJhcHBpbmcgZmFjaWxpdGllcy4gT25seSBkZXZpY2VzIHN1Y2ggYXMg cnRsODEzOSwKPj4gaWNoOS1haGNpIGFuZCBmZXcgb3RoZXJzLgo+PiAKPj4gQmFzaWNhbGx5LCB0 aGlzIG1lYW5zIGEgbmV3LCBjaGlwc2V0LWxlc3MgUUVNVSBtYWNoaW5lIHR5cGUuCj4+IFdlbGws IGluIHRoZW9yeSBpdCBpcyBwb3NzaWJsZSB3aXRoIGEgYml0IG9mIGVmZm9ydCBJIHRoaW5rLiBU aGUgbWFpbgo+PiBxdWVzdGlvbiBpcyB3aGVyZSB3aWxsIGJlIHRoZSBOQi9TQi9QQ0lidXMgZW11 bGF0aW5nIHBhcnQgcmVzaWRlIGluCj4+IHRoaXMgY2FzZS4gIAo+Cj5Nb3N0bHkgaW5zaWRlIG9m IFhlbi4gT2YgY291cnNlIHRoZSBJREUvU0FUQS9VU0IvRXRoZXJuZXQuLi4gcGFydCBvZgo+dGhl IHNvdXRoYnJpZ2RlIHdpbGwgYmUgZW11bGF0ZWQgYnkgYSBkZXZpY2UgbW9kZWwgKGllOiBRRU1V KS4KPgo+QXMgeW91IG1lbnRpb24gYWJvdmUsIEkgYWxzbyB0b29rIGEgbG9vayBhbmQgaXQgc2Vl bXMgbGlrZSB0aGUgYW1vdW50Cj5vZiByZWdpc3RlcnMgdGhhdCB3ZSBzaG91bGQgZW11bGF0ZSBm b3IgUTM1IERSQU0gY29udHJvbGxlciAoRDA6RjApIGlzCj5mYWlybHkgbWluaW1hbCBiYXNlZCBv biBjdXJyZW50IFFFTVUgaW1wbGVtZW50YXRpb24uIFdlIGNvdWxkIGV2ZW4KPnBvc3NpYmx5IGdl dCBhd2F5IGJ5IGp1c3QgZW11bGF0aW5nIFBDSUVYQkFSLgoKTUNIIGVtdWxhdGlvbiBhbG9uZSBt aWdodCBiZSBub3QgYW4gb3B0aW9uLiBCZXNpZGVzLCBzb21lCnNvdXRoYnJpZGdlLXNwZWNpZmlj IGZlYXR1cmVzIGxpa2UgZW11bGF0aW5nIEFDUEkgUE0gZmFjaWxpdGllcyBmb3IKZG9tYWluIHBv d2VyIG1hbmFnZW1lbnQgKGJhc2ljYWxseSwgYW55dGhpbmcgYXQgUE1CQVNFKSB3aWxsIGJlCnBy ZWZlcmFibGUgdG8gaW1wbGVtZW50IG9uIFhlbiBzaWRlLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5n IHRoZSBmYWN0CnRoYXQgQUNQSSB0YWJsZXMgYXJlIGFscmVhZHkgcHJvdmlkZWQgYnkgWGVuJ3Mg bGliYWNwaS9odm1sb2FkZXIsIG5vdAp0aGUgZGV2aWNlIG1vZGVsLgpJIHRoaW5rIHRoZSBmZWF0 dXJlIG1heSByZXF1aXJlIHRvIGNvdmVyIGF0IGxlYXN0IHRoZSBOQitTQgpjb21iaW5hdGlvbiwg YXQgbGVhc3QgUTM1IE1DSCArIElDSDkgZm9yIHN0YXJ0LCBpZGVhbGx5IDgyNDQxRlgrUElJWDQK YXMgd2VsbC4gQWxzbywgWGVuIHNob3VsZCBjb250cm9sIGVtdWxhdGVkL1BUIFBDSSBkZXZpY2Ug cGxhY2VtZW50LgoKQmVmb3JlIGdvaW5nIHRoaXMgd2F5LCBpdCB3b3VsZCBiZSBnb29kIHRvIG1l YXN1cmUgYWxsIHJpc2tzLgpMb29rcyBsaWtlIHRoZXJlIGFyZSB0d28gbWFpbiBkaXJlY3Rpb25z IGN1cnJlbnRseToKCkkuIChjb25zZXJ2YXRpdmUpIExldCB0aGUgbWFpbiBkZXZpY2UgbW9kZWwg KFFFTVUpIHRvIGluZm9ybSBYZW4gYWJvdXQKdGhlIGN1cnJlbnQgY2hpcHNldC1zcGVjaWZpYyBN TUNPTkZJRyBsb2NhdGlvbiwgdG8gYWxsb3cgWGVuIHRvIGtub3cKdGhhdCBzb21lIE1NSU8gYWNj ZXNzZXMgdG8gdGhpcyBhcmVhIG11c3QgYmUgZm9yd2FyZGVkIHRvIG90aGVyIGlvcmVxCnNlcnZl cnMgKGRldmljZSBlbXVsYXRvcnMpIGluIGEgZm9ybSBvZiBQQ0kgY29uZmlnIHJlYWQvd3JpdGUg aW9yZXFzLAppZiBCREYgY29ycmVzcG9uZGluZyB0byBhIE1NQ09ORklHIG9mZnNldCB3aWxsIHBv aW50IHRvIHRoZSBQQ0kgZGV2aWNlCm93bmVkIGJ5IGEgZGV2aWNlIGVtdWxhdG9yLgpJbiBjYXNl IG9mIGRldmljZSBlbXVsYXRvcnMgdGhlIGNvbnZlcnNpb24gb2YgTU1JTyBhY2Nlc3NlcyB0byBQ Q0kKY29uZmlnIG9uZXMgaXMgYSBtYW5kYXRvcnkgc3RlcCwgd2hpbGUgdGhlIG93bmVyIG9mIHRo ZSBNTUNPTkZJRyBNTUlPCnJhbmdlIG1heSByZWNlaXZlIE1NSU8gYWNjZXNzZXMgaW4gYSBuYXRp dmUgZm9ybSB3aXRob3V0IGNvbnZlcnNpb24KKGEgc3Ryb25nbHkgcHJlZmVyYWJsZSBvcHRpb24g Zm9yIFFFTVUpLgoKVGhpcyBhcHByb2FjaCBhc3N1bWVzIGludHJvZHVjaW5nIG9mIHRoZSBuZXcg ZG1vcC9oeXBlcmNhbGwgKHNvbWV0aGluZwpsaWtlIFhFTl9ETU9QX21tY2ZnX2xvY2F0aW9uX2No YW5nZSkgdG8gcGFzcyB0byBYZW4gYmFzaWMgTU1DT05GSUcKaW5mb3JtYXRpb24gLS0gYWRkcmVz cywgZW5hYmxlZC9kaXNhYmxlZCBzdGF0dXMgKG9yIHNpbXBseSBhZGRyZXNzPTAKaW5zdGVhZCkg YW5kIHNpemUgb2YgdGhlIE1NQ09ORklHIGFyZWEsIGVnLiBhcyBhIG51bWJlciBvZiBidXNlcy4K VGhpcyBpbmZvcm1hdGlvbiBpcyBlbm91Z2ggdG8gc2VsZWN0IGEgcHJvcGVyIGlvcmVxIHNlcnZl ciBpbiBYZW4gYW5kCmFsbG93IG11bHRpcGxlIGRldmljZSBlbXVsYXRvcnMgdG8gZnVuY3Rpb24g cHJvcGVybHkuCkZvciBmdXR1cmUgY29tcGF0aWJpbGl0eSB3ZSBjYW4gYWxzbyBwcm92aWRlIHRo ZSBzZWdtZW50IGFuZApzdGFydC9lbmQgYnVzIHJhbmdlIGFzIGFyZ3VtZW50cy4KCldoYXQgdGhp cyBhcHByb2FjaCB3aWxsIHJlcXVpcmU6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgotIG5ldyBub3RpZmljYXRpb24tc3R5bGUgZG1vcC9oeXBlcmNhbGwgdG8gdGVsbCBYZW4gYWJv dXQgdGhlIGN1cnJlbnQKICBlbXVsYXRlZCBNTUNPTkZJRyBsb2NhdGlvbgoKLSB0cml2aWFsIGNo YW5nZXMgaW4gUUVNVSB0byB1c2UgdGhpcyBkbW9wIGluIFEzNSBQQ0lFWEJBUiBoYW5kbGluZyBj b2RlCgotIHJlbGF0aXZlbHkgc2ltcGxlIFhlbiBjaGFuZ2VzIGluIGlvcmVxLmMgdG8gdXNlIHRo ZSBwcm92aWRlZCByYW5nZQogIGZvciBpb3JlcSBzZXJ2ZXIgc2VsZWN0aW9uLiBBbHNvLCB0byBw cm92aWRlIE1NSU8gLT4gUENJIGNvbmZpZyBpb3JlcQogIHRyYW5zbGF0aW9uIGZvciBzdXBwbGVt ZW50YWwgaW9yZXEgc2VydmVycyB3aGljaCBkb24ndCBrbm93IGFueXRoaW5nCiAgYWJvdXQgdGhl IGVtdWxhdGVkIHN5c3RlbQoKUmlza3M6Ci0tLS0tLQoKUmlzayB0byBicmVhayBhbnl0aGluZyBp cyBtaW5pbWFsIGluIHRoaXMgY2FzZS4KCklmIFFFTVUgd2lsbCBub3QgcHJvdmlkZSB0aGlzIGlu Zm9ybWF0aW9uIChlZy4gZHVlIHRvIGFuIG91dGRhdGVkCnZlcnNpb24gaW5zdGFsbGVkKSwgb25s eSBiYXNpYyBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc2VzIHZpYSBDRjgvQ0ZDCndpbGwgYmUgZm9y d2FyZGVkIHRvIGEgZGlzdGluY3QgaW9yZXEgc2VydmVyLiBUaGlzIG1lYW5zIHRoZSBleHRlbmRl ZApQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc2VzIHdvbid0IGJlIGZvcndhcmRlZCB0byBzcGVjaWZp YyBkZXZpY2UKZW11bGF0b3JzLiBPdGhlciB0aGFuIHRoZXNlIGRldmljZSBlbXVsYXRvcnMsIGFu eXRoaW5nIGVsc2Ugd2lsbApjb250aW51ZSB0byB3b3JrIHByb3Blcmx5IGluIHRoaXMgY2FzZS4g Tm8gZGlmZmVyZW5jZXMgd2lsbCBiZSBmb3IKZ3Vlc3QgT1NlcyB3aXRob3V0IFBDSWUgRUNBTSBz dXBwb3J0IGluIGVpdGhlciBjYXNlLgoKSW4gZ2VuZXJhbCwgbm8gYnJlYWt0aHJvdWdoIGltcHJv dmVtZW50cywgbm8gbmVnYXRpdmUgc2lkZS1lZmZlY3RzLgpKdXN0IFBDSWUgRUNBTSB3b3JraW5n IGFzIGV4cGVjdGVkIGFuZCBjb21wYXRpYmlsaXR5IHdpdGggbXVsdGlwbGUKaW9yZXEgc2VydmVy cyBpcyByZXRhaW5lZC4KCgpJSS4gKGEgbmV3IGZlYXR1cmUpIE1vdmUgY2hpcHNldCBlbXVsYXRp b24gdG8gWGVuIGRpcmVjdGx5LgoKSW4gdGhpcyBjYXNlIG5vIHNlcGFyYXRlIG5vdGlmaWNhdGlv biBuZWNlc3NhcnkgYXMgWGVuIHdpbGwgYmUKZW11bGF0aW5nIHRoZSBjaG9zZW4gY2hpcHNldCBp dHNlbGYuIE1NQ09ORklHIGxvY2F0aW9uIHdpbGwgYmUga25vd24KZnJvbSBvd24gUENJRVhCQVIg ZW11bGF0aW9uLgoKUUVNVSB3aWxsIGJlIHVzZWQgb25seSB0byBlbXVsYXRlIGEgbWluaW1hbCBz ZXQgb2YgdW5yZWxhdGVkIGRldmljZXMKKGVnLiBzdG9yYWdlL25ldHdvcmsvdmdhKS4gTGVzcyBk ZXBlbmRlbmN5IG9uIFFFTVUgb3ZlcmFsbC4KCk1vcmUgZnJlZWRvbSB0byBpbXBsZW1lbnQgc29t ZSBzcGVjaWZpYyBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIGxpa2UKc21yYW0gc3VwcG9ydCBmb3Ig RUZJIGZpcm13YXJlIG5lZWRzLiBDaGlwc2V0IHJlbWFwcGluZyAoYWthIHJlY2xhaW0pCmZ1bmN0 aW9uYWxpdHkgZm9yIG1lbW9yeSByZWxvY2F0aW9uIG1heSBiZSBpbXBsZW1lbnRlZCB1bmRlciBj b21wbGV0ZQpYZW4gY29udHJvbCwgYXZvaWRpbmcgdXNhZ2Ugb2YgdW5zYWZlIGFkZF90b19waHlz bWFwIGh5cGVyY2FsbHMuCgpJbiBmdXR1cmUgdGhpcyB3aWxsIGFsbG93IHRvIG1vdmUgcGFzc3Ro cm91Z2gtc3VwcG9ydGluZyBjb2RlIGZyb20gUUVNVQooaHcveGVuL3hlbi1wdCouYykgdG8gWGVu LCBtZXJnaW5nIGl0IHdpdGggUm9nZXIncyB2cGNpIHNlcmllcy4KVGhpcyB3aWxsIGltcHJvdmUg ZWcuIHRoZSBQVCArIHN0dWJkb21haW4gc2l0dWF0aW9uIGEgbG90IC0tIFBDSSBjb25maWcKc3Bh Y2UgYWNjZXNzZXMgZm9yIFBUIGRldmljZXMgd2lsbCBiZSBoYW5kbGVkIGluIGEgdW5pZm9ybSB3 YXkgd2l0aG91dApEb20wIGludGVyYWN0aW9uLgpUaGlzIHBhcnRpY3VsYXIgZmVhdHVyZSBjYW4g YmUgaW1wbGVtZW50ZWQgZm9yIHRoZSBwcmV2aW91cyBhcHByb2FjaCBhcwp3ZWxsLCBzdGlsbCBp dCBpcyBlYXNpZXIgdG8gZG8gd2hlbiBYZW4gY29udHJvbHMgdGhlIGVtdWxhdGVkIG1hY2hpbmUK CkluIGdlbmVyYWwsIHRoaXMgaXMgYSBnb29kIGxvbmctdGVybSBkaXJlY3Rpb24uCgpXaGF0IHRo aXMgYXBwcm9hY2ggd2lsbCByZXF1aXJlOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoKLSBDaGFuZ2VzIGluIFFFTVUgY29kZSB0byBzdXBwb3J0IGEgbmV3IGNoaXBzZXQtbGVzcyBt YWNoaW5lKHMpLiBJbgogIHRoZW9yeSBtaWdodCBiZSBwb3NzaWJsZSB0byBpbXBsZW1lbnQgb24g dG9wIG9mIHRoZSAibnVsbCIgbWFjaGluZQogIGNvbmNlcHQKCi0gTWFqb3IgY2hhbmdlcyBpbiBY ZW4gY29kZSB0byBpbXBsZW1lbnQgdGhlIGFjdHVhbCBjaGlwc2V0IGVtdWxhdGlvbgogIHRoZXJl CgotIENoYW5nZXMgb24gdGhlIHRvb2xzdGFjayBzaWRlIGFzIHRoZSBlbXVsYXRlZCBtYWNoaW5l IHdpbGwgYmUKICBzZWxlY3RlZCBhbmQgdXNlZCBkaWZmZXJlbnRseQoKLSBNb3ZpbmcgcGFzc3Ro cm91Z2ggc3VwcG9ydCBmcm9tIFFFTVUgdG8gWGVuIHdpbGwgbGlrZWx5IHJlcXVpcmUgdG8KICBy ZS1kaXZpZGUgYXJlYXMgb2YgcmVzcG9uc2liaWxpdHkgZm9yIFBDSSBkZXZpY2UgcGFzc3Rocm91 Z2ggYmV0d2VlbgogIHhlbi1wY2liYWNrIGFuZCB0aGUgaHlwZXJ2aXNvci4gSXQgbWlnaHQgYmUg bW9yZSBjb252ZW5pZW50IHRvCiAgcGVyZm9ybSBzb21lIHRhc2tzIG9mIHhlbi1wY2liYWNrIGlu IFhlbiBkaXJlY3RseQoKLSBzdHJvbmcgZGVwZW5kZW5jeSBiZXR3ZWVuIFhlbi9saWJ4bC9RRU1V L2V0YyB2ZXJzaW9ucyAtLSBhbnkgb3V0ZGF0ZWQKICBjb21wb25lbnQgd2lsbCBiZSBhIG1ham9y IHByb2JsZW0uIENhbiBiZSByZXNvbHZlZCBieSBwcm92aWRpbmcgc29tZQogIGNvbXBhdGliaWxp dHkgY29kZQoKLSBsb25nZXIgaW1wbGVtZW50YXRpb24gdGltZQoKUmlza3M6Ci0tLS0tLQoKLSBB IG1ham9yIGFyY2hpdGVjdHVyZSBjaGFuZ2Ugd2l0aCBwb3NzaWJsZSBpc3N1ZXMgZW5jb3VudGVy ZWQgZHVyaW5nCiAgdGhlIGltcGxlbWVudGF0aW9uCgotIE1vdmluZyB0aGUgZW11bGF0aW9uIG9m IHRoZSBtYWNoaW5lIHRvIFhlbiBjcmVhdGVzIGEgbm9uLXplcm8gcmlzayBvZgogIGludHJvZHVj aW5nIGEgc2VjdXJpdHkgaXNzdWUgd2hpbGUgZXh0ZW5kaW5nIHRoZSBlbXVsYXRpb24gc3VwcG9y dAogIGZ1cnRoZXIuIEFzIGFsbCBlbXVsYXRpb24gd2lsbCB0YWtlIHBsYWNlIG9uIGEgbW9zdCB0 cnVzdGVkIGxldmVsLCBhbnkKICBleHBsb2l0YWJsZSBidWcgaW4gdGhlIGNoaXBzZXQgZW11bGF0 aW9uIGNvZGUgbWF5IGNvbXByb21pc2UgdGhlCiAgd2hvbGUgc3lzdGVtCgotIHRoZXJlIGlzIGEg cmlzayB0byBlbmNvdW50ZXIgc29tZSBkZXBlbmRlbmN5IG9uIG1pc3NpbmcgY2hpcHNldAogIGRl dmljZXMgaW4gUUVNVS4gU29tZSBvZiBRRU1VIGRldmljZXMgKHdoaWNoIGRlcGVuZCBvbiBRRU1V IGNoaXBzZXQKICBkZXZpY2VzL3Byb3BlcnRpZXMpIG1pZ2h0IG5vdCB3b3JrIHdpdGhvdXQgZXh0 cmEgcGF0Y2hlcy4gSW4gdGhlb3J5CiAgdGhpcyBtYXkgYmUgYWRkcmVzc2VkIGJ5IGxlYXZpbmcg dGhlIGR1bW15IE1DSC9MUEMvcGNpLWhvc3QgZGV2aWNlcwogIGluIHBsYWNlIHdoaWxlIG5vdCBm b3J3YXJkaW5nIGFueSBJTy9NTUlPL1BDSSBjb25mIGFjY2Vzc2VzIHRvIHRoZW0KICAodXNpbmcg c2ltcGx5IGFzIGNvbXBhdCBwbGFjZWhvbGRlcnMpCgotIHJpc2sgb2YgaW5jb21wYXRpYmlsaXR5 IHdpdGggZnV0dXJlIFFFTVUgdmVyc2lvbnMKCkluIGJvdGggY2FzZXMsIGZvciBzZWN1cml0eSBj b25jZXJucyBQQ0lFWEJBUiBhbmQgb3RoZXIgTUNIIHJlZ2lzdGVycwpjYW4gYmUgbWFkZSB3cml0 ZS1vbmNlIChSTyBvbiBhbGwgZnVydGhlciBhY2Nlc3Nlcywgc2ltaWxhciB0byBhClRYVC1sb2Nr ZWQgc3lzdGVtKS4KClsuLi5dCj4+IFJlZ2FyZGluZyBjb250cm9sIG9mIHRoZSBndWVzdCBtZW1v cnkgbWFwIGluIHRoZSB0b29sc3RhY2sgb25seS4uLgo+PiBUaGUgcHJvYmxlbSBpcywgb25seSBm aXJtd2FyZSBjYW4gc2VlIGEgZmluYWwgbWVtb3J5IG1hcCBhdCB0aGUKPj4gbW9tZW50LiBBbmQg b25seSB0aGUgZGV2aWNlIG1vZGVsIGtub3dzIGFib3V0IGludmlzaWJsZSAic2VydmljZSIKPj4g cmFuZ2VzIGZvciBlbXVsYXRlZCBkZXZpY2VzLCBsaWtlIHRoZSBMRkIgY29udGVudCAoYWthICJW UkFNIikgd2hlbgo+PiBpdCBpcyBub3QgbWFwcGVkIHRvIGEgZ3Vlc3QuCj4+IAo+PiBJbiBvcmRl ciB0byBjYWxjdWxhdGUgdGhlIGZpbmFsIG1lbW9yeS9NTUlPIGhvbGUgc3BsaXQsIHdlIG5lZWQg dG8KPj4ga25vdzoKPj4gCj4+IDEpIGFsbCBQQ0kgZGV2aWNlcyBvbiBhIFBDSSBidXMuIEF0IHRo ZSBtb21lbnQgWGVuIGNvbnRyaWJ1dGVzIG9ubHkKPj4gZGV2aWNlcyBsaWtlIFBUIHRvIHRoZSBm aW5hbCBQQ0kgYnVzICh2aWEgUU1QIGRldmljZV9hZGQpLiBPdGhlcnMgYXJlCj4+IFFFTVUgb25l cy4gRXZlbiBYZW4gcGxhdGZvcm0gUENJIGRldmljZSByZWxpZXMgb24gUUVNVSBlbXVsYXRpb24u Cj4+IE5vbi1RRU1VIGRldmljZSBlbXVsYXRvcnMgYXJlIGFub3RoZXIgc291cmNlIG9mIHZpcnR1 YWwgUENJIGRldmljZXMgSQo+PiBndWVzcy4KPj4gCj4+IDIpIGFsbCBjaGlwc2V0LXNwZWNpZmlj IGVtdWxhdGVkIE1NSU8gcmFuZ2VzLiBNTUNPTkZJRyBpcyBvbmUgb2YgdGhlbQo+PiBhbmQgbGFy Z2VzdCAodXAgdG8gMjU2TWIgZm9yIGEgc2VnbWVudCkuIFRoZXJlIGFyZSBmZXcgb3RoZXIgc21h bGxlcgo+PiByYW5nZXMsIGVnLiBSb290IENvbXBsZXggcmVnaXN0ZXJzLiBBbGwgdGhpcyByYW5n ZXMgZGVwZW5kIG9uIHRoZQo+PiBlbXVsYXRlZCBjaGlwc2V0Lgo+PiAKPj4gMykgYWxsIHJlc2Vy dmVkIG1lbW9yeSByYW5nZXMgKHRoaXMgb25lIHdoYXQgdG9vbHN0YWNrIGFscmVhZHkga25vd3Mp Cj4+IAo+PiA0KSBhbGwgInNlcnZpY2UiIGd1ZXN0IG1lbW9yeSByYW5nZXMgbGlrZSBiYWNraW5n IHN0b3JhZ2UgZm9yIFZSQU0gaW4KPj4gUUVNVS4gRW11bGF0ZWQgT3B0aW9uIFJPTXMgc2hvdWxk IGJlbG9uZyBoZXJlIHRvbywgYnV0IElJUkMgeGVuLWh2bS5jCj4+IGVpdGhlciBpbnRlbnRpb25h bGx5IG9yIGJ5IG1pc3RhdGUgaGFuZGxlcyB0aGVtIGFzIGVtdWxhdGVkIHJhbmdlcwo+PiBjdXJy ZW50bHkuCj4+IAo+PiBJZiB3ZSBtaXNzIGFueSBvZiB0aGVzZSAobGlrZSB3aGF0IGFyZSB0aGUg Y2hpcHNldC1zcGVjaWZpYyByYW5nZXMKPj4gYW5kIHRoZWlyIHNpemUgYWxpZ25tZW50IHJlcXVp cmVtZW50cykgLS0gd2UncmUgaW4gdHJvdWJsZS4gQnV0LCBpZgo+PiB3ZSBrbm93ICphbGwqIG9m IHRoZXNlLCB3ZSBjYW4gcHJlLWNhbGN1bGF0ZSB0aGUgTU1JTyBob2xlIHNpemUuCj4+IEFsdGhv dWdoIHRoaXMgaXMgYSBiaXQgZnJhZ2lsZSB0byBkbyBmcm9tIHRoZSB0b29sc3RhY2sgYmVjYXVz ZSBib3RoCj4+IHNpemluZyBhbGdvIGluIHRoZSB0b29sc3RhY2sgYW5kIE1NSU8gQkFSIGFsbG9j YXRpb24gY29kZSBpbiB0aGUKPj4gZmlybXdhcmUgKGh2bWxvYWRlcikgbXVzdCBoYXZlIHRoZWly IGFsZ29yaXRobXMgc3luY2hyb25pemVkLAo+PiBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlIHRvIHNy dWZmIEJBUnMgdG8gTU1JTyBob2xlIGluIGRpZmZlcmVudCB3YXlzLAo+PiBlc3BlY2lhbGx5IHdo ZW4gUENJLVBDSSBicmlkZ2VzIHdpbGwgYXBwZWFyIG9uIHRoZSBzY2VuZS4gQm90aCBuZWVkCj4+ IHRvIGRvIGl0IGluIGEgY29uc2lzdGVudCB3YXkgKHJlc3VsdGluZyBpbiBzaW1pbGFyIHNldCBv ZiBnYXBzCj4+IGJldHdlZW4gYWxsb2NhdGVkIEJBUnMpLCBvdGhlcndpc2UgZXhwZWN0ZWQgTU1J TyBob2xlIHNpemVzIHdvbid0Cj4+IG1hdGNoLCB3aGljaCBtZWFucyB3ZSBtYXkgbmVlZCB0byBy ZWxvY2F0ZSBNTUlPIEJBUnMgdG8gdGhlIGhpZ2gKPj4gTU1JTyBob2xlIGFuZCB0aGlzIGluIHR1 cm4gbWF5IGxlYWQgdG8gdGhvc2Ugb3ZlcmxhcHMgd2l0aCBRRU1VCj4+IG1lbW9yaWVzLiAgCj4K PkkgYWdyZWUgdGhhdCB0aGUgY3VycmVudCBtZW1vcnkgbGF5b3V0IG1hbmFnZW1lbnQgKG9yIHRo ZSBsYWNrIG9mIGl0KQo+aXMgY29uY2VybmluZy4gQWx0aG91Z2ggcmVsYXRlZCwgSSB0aGluayB0 aGlzIHNob3VsZCBiZSB0YWNrbGVkIGFzIGEKPmRpZmZlcmVudCBpc3N1ZSBmcm9tIHRoZSBjaGlw c2V0IG9uZSBJTUhPLgo+Cj5TaW5jZSB5b3UgYWxyZWFkeSBwb3N0ZWQgdGhlIFEzNSBzZXJpZXMg SSB3b3VsZCBhdHRlbXB0IHRvIGdldCB0aGF0Cj5kb25lIGZpcnN0IGJlZm9yZSBqdW1waW5nIGlu dG8gdGhlIG1lbW9yeSBsYXlvdXQgb25lLgoKSXQgaXMgc29tZXdoYXQgcmVsYXRlZCB0byB0aGUg Y2hpcHNldCBiZWNhdXNlIG1lbW9yeS9NTUlPIGxheW91dAppbmNvbnNpc3RlbmN5IGNhbiBiZSBz b2x2ZWQgbW9yZSwgd2VsbCwgbmF0dXJhbGx5IG9uIFEzNS4KCkJhc2ljYWxseSwgd2UgaGF2ZSBh IG5vbi1zdGFuZGFyZCBNTUlPIGhvbGUgbGF5b3V0IHdoZXJlIHRoZQpzdGFydCBvZiB0aGUgaGln aCBNTUlPIGhvbGUgZG8gbm90IG1hdGNoIHRoZSB0b3Agb2YgYWRkcmVzc2FibGUgUkFNCihkdWUg dG8gaW52aXNpYmxlIHJhbmdlcyBvZiB0aGUgZGV2aWNlIG1vZGVsKS4KClEzNSBpbml0aWFsbHkg aGF2ZSBmYWNpbGl0aWVzIHRvIGFsbG93IGZpcm13YXJlIHRvIG1vZGlmeSAodmlhCmVtdWxhdGlv bikgb3IgZGlzY292ZXIgc3VjaCBNTUlPIGhvbGUgc2V0dXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9y IHNhZmUKTU1JTyBCQVIgYWxsb2NhdGlvbiB0byBhdm9pZCBvdmVybGFwcyB3aXRoIFFFTVUtb3du ZWQgaW52aXNpYmxlIHJhbmdlcy4KCkl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGljaCByZWdp c3RlcnMgdG8gcGljayBmb3IgdGhpcyB0YXNrLCBidXQgZm9yClEzNSB0aGlzIGFwcHJvYWNoIGlz IGF0IGxlYXN0IGNvbnNpc3RlbnQgd2l0aCB3aGF0IGEgcmVhbCBzeXN0ZW0gZG9lcwooUFYvUFZI IHBlb3BsZSB3aWxsIGZpbmQgdGhpcyBwZWN1bGlhcml0eSBwb2ludGxlc3MgSSBzdXBwb3NlIDop ICkuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs