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: Wed, 28 Mar 2018 01:37:29 +1000 Message-ID: <20180328013729.00000de9@gmail.com> References: <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> <20180327054211.00003e13@gmail.com> <20180327084530.woyza2twwzr2caqe@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 1f0qfN-0008VR-HL for xen-devel@lists.xenproject.org; Tue, 27 Mar 2018 15:37:41 +0000 Received: by mail-lf0-x22d.google.com with SMTP id o102-v6so33947099lfg.8 for ; Tue, 27 Mar 2018 08:37:39 -0700 (PDT) In-Reply-To: <20180327084530.woyza2twwzr2caqe@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 =?iso-8859-1?Q?Monn=E9?= Cc: StefanoStabellini , Wei Liu , Paul Durrant , Jan Beulich , "xen-devel@lists.xenproject.org" , Anthony Perard , Ian Jackson List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAyNyBNYXIgMjAxOCAwOTo0NTozMCArMDEwMApSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cgo+T24gVHVlLCBNYXIgMjcsIDIwMTggYXQgMDU6NDI6 MTFBTSArMTAwMCwgQWxleGV5IEcgd3JvdGU6Cj4+IE9uIE1vbiwgMjYgTWFyIDIwMTggMTA6MjQ6 MzggKzAxMDAKPj4gUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+IHdyb3Rl Ogo+PiAgIAo+PiA+T24gU2F0LCBNYXIgMjQsIDIwMTggYXQgMDg6MzI6NDRBTSArMTAwMCwgQWxl eGV5IEcgd3JvdGU6ICAKPj4gWy4uLl0gIAo+PiA+PiBJbiBmYWN0LCB0aGUgZW11bGF0ZWQgY2hp cHNldCAoTkIrU0IgY29tYm8gd2l0aG91dCBzdXBwbGVtZW50YWwKPj4gPj4gZGV2aWNlcykgaXRz ZWxmIGlzIGEgc21hbGwgcGFydCBvZiByZXF1aXJlZCBlbXVsYXRpb24uIEl0J3MKPj4gPj4gcmVs YXRpdmVseSBlYXN5IHRvIHByb3ZpZGUgb3duIGFuYWxvZ3Mgb2YgZm9yIGVnLiAnbWNoJyBhbmQK Pj4gPj4gJ0lDSDktTFBDJyBRRU1VIFBDSURldmljZSdzLCB0aGUgcHJvYmxlbSBpcyB0byBnbHVl IGFsbCByZW1haW5pbmcKPj4gPj4gcGFydHMgdG9nZXRoZXIuCj4+ID4+IAo+PiA+PiBJIGFzc3Vt ZSB0aGUgZmluYWwgZ29hbCBpbiB0aGlzIGNhc2UgaXMgdG8gaGF2ZSBvbmx5IGEgc2V0IG9mCj4+ ID4+IG5lY2Vzc2FyeSBRRU1VIFBDSURldmljZSdzIGZvciB3aGljaCB3ZSB3aWxsIGJlIHByb3Zp ZGluZyBJL08sCj4+ID4+IE1NSU8gYW5kIFBDSSBjb25mIHRyYXBwaW5nIGZhY2lsaXRpZXMuIE9u bHkgZGV2aWNlcyBzdWNoIGFzCj4+ID4+IHJ0bDgxMzksIGljaDktYWhjaSBhbmQgZmV3IG90aGVy cy4KPj4gPj4gCj4+ID4+IEJhc2ljYWxseSwgdGhpcyBtZWFucyBhIG5ldywgY2hpcHNldC1sZXNz IFFFTVUgbWFjaGluZSB0eXBlLgo+PiA+PiBXZWxsLCBpbiB0aGVvcnkgaXQgaXMgcG9zc2libGUg d2l0aCBhIGJpdCBvZiBlZmZvcnQgSSB0aGluay4gVGhlCj4+ID4+IG1haW4gcXVlc3Rpb24gaXMg d2hlcmUgd2lsbCBiZSB0aGUgTkIvU0IvUENJYnVzIGVtdWxhdGluZyBwYXJ0Cj4+ID4+IHJlc2lk ZSBpbiB0aGlzIGNhc2UuICAgIAo+PiA+Cj4+ID5Nb3N0bHkgaW5zaWRlIG9mIFhlbi4gT2YgY291 cnNlIHRoZSBJREUvU0FUQS9VU0IvRXRoZXJuZXQuLi4gcGFydCBvZgo+PiA+dGhlIHNvdXRoYnJp Z2RlIHdpbGwgYmUgZW11bGF0ZWQgYnkgYSBkZXZpY2UgbW9kZWwgKGllOiBRRU1VKS4KPj4gPgo+ PiA+QXMgeW91IG1lbnRpb24gYWJvdmUsIEkgYWxzbyB0b29rIGEgbG9vayBhbmQgaXQgc2VlbXMg bGlrZSB0aGUKPj4gPmFtb3VudCBvZiByZWdpc3RlcnMgdGhhdCB3ZSBzaG91bGQgZW11bGF0ZSBm b3IgUTM1IERSQU0gY29udHJvbGxlcgo+PiA+KEQwOkYwKSBpcyBmYWlybHkgbWluaW1hbCBiYXNl ZCBvbiBjdXJyZW50IFFFTVUgaW1wbGVtZW50YXRpb24uIFdlCj4+ID5jb3VsZCBldmVuIHBvc3Np Ymx5IGdldCBhd2F5IGJ5IGp1c3QgZW11bGF0aW5nIFBDSUVYQkFSLiAgCj4+IAo+PiBNQ0ggZW11 bGF0aW9uIGFsb25lIG1pZ2h0IGJlIG5vdCBhbiBvcHRpb24uIEJlc2lkZXMsIHNvbWUKPj4gc291 dGhicmlkZ2Utc3BlY2lmaWMgZmVhdHVyZXMgbGlrZSBlbXVsYXRpbmcgQUNQSSBQTSBmYWNpbGl0 aWVzIGZvcgo+PiBkb21haW4gcG93ZXIgbWFuYWdlbWVudCAoYmFzaWNhbGx5LCBhbnl0aGluZyBh dCBQTUJBU0UpIHdpbGwgYmUKPj4gcHJlZmVyYWJsZSB0byBpbXBsZW1lbnQgb24gWGVuIHNpZGUs IGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGZhY3QKPj4gdGhhdCBBQ1BJIHRhYmxlcyBhcmUg YWxyZWFkeSBwcm92aWRlZCBieSBYZW4ncyBsaWJhY3BpL2h2bWxvYWRlciwgbm90Cj4+IHRoZSBk ZXZpY2UgbW9kZWwuICAKPgo+TGlrZWx5LCBidXQgQUZBSUNUIHRoaXMgaXMga2luZCBvZiBhbHJl YWR5IGJyb2tlbiwgYmVjYXVzZSBQTTFhIGFuZAo+VE1SIGlzIGFscmVhZHkgZW11bGF0ZWQgYnkg WGVuIGF0IGhhcmRjb2RlZCB2YWx1ZXMuIFNlZQo+eGVuL2FyY2gveDg2L2h2bS9wbXRpbWVyLmMu CgpZZXMsIHRoYXQgc2hvdWxkIGJlIGFuIGFyZ3VtZW50IHRvIHRyeSB0byBpbXBsZW1lbnQgUE1C QVNFIGVtdWxhdGlvbiBpbgpYZW4gdG9vLiBBbHRob3VnaCB0aGlzIG5lZWRzIHRvIGJlIGNoZWNr ZWQgYWdhaW5zdCBkZXBlbmRlbmNpZXMgaW4KUUVNVSBmaXJzdCwgZXNwZWNpYWxseSB3aXRoIEFD UEktcmVsYXRlZCBjb2RlLgoKVGhpcyB3YXkgd2UgY2FuIGhhdmUgYSBiZXR0ZXIgZmxleGliaWxp dHkgdG8gdXNlIGFuIGFyYml0cmFyeSBQTUJBU0UKdmFsdWUsIG5vdCBqdXN0IGhhdmluZyB0byBo YXJkY29kZSBpdCB0byBBQ1BJX1BNMUFfRVZUX0JMS19BRERSRVNTX1YxCmluIGFsbCByZWxhdGVk IGNvbXBvbmVudHMuCgo+PiBJIHRoaW5rIHRoZSBmZWF0dXJlIG1heSByZXF1aXJlIHRvIGNvdmVy IGF0IGxlYXN0IHRoZSBOQitTQgo+PiBjb21iaW5hdGlvbiwgYXQgbGVhc3QgUTM1IE1DSCArIElD SDkgZm9yIHN0YXJ0LCBpZGVhbGx5IDgyNDQxRlgrUElJWDQKPj4gYXMgd2VsbC4gQWxzbywgWGVu IHNob3VsZCBjb250cm9sIGVtdWxhdGVkL1BUIFBDSSBkZXZpY2UgcGxhY2VtZW50LiAgCj4KPlEz NSBNQ0ggKEQwOkYwKSBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIHRyYXAgYWNjZXNzIHRvIFBD SUVYQkFSLgoKQWJzb2x1dGVseS4KCgpCVFcsIGFub3RoZXIgc29tZXdoYXQgcmVsYXRlZCBwcm9i bGVtIGF0IHRoZSBtb21lbnQgaXMgdGhhdCBYZW4ga25vd3MKbm90aGluZyBhYm91dCBhIGNoaXBz ZXQtc3BlY2lmaWMgTU1JTyBob2xlKHMpLiBEdWUgdG8gdGhpcywgaXQgaXMKcG9zc2libGUgZm9y IGEgZ3Vlc3QgdG8gbWFwIFBUIEJBUnMgb3V0c2lkZSB0aGUgTU1JTyBob2xlLCBsZWFkaW5nIHRv CmVycm9ycyBsaWtlIHRoaXM6CgooWEVOKSBtZW1vcnlfbWFwOnJlbW92ZTogZG9tNCBnZm49Yzgw MDAgbWZuPWM4MDAwIG5yPTIwMDAKKFhFTikgbWVtb3J5X21hcDphZGQ6IGRvbTQgZ2ZuPWZmZmZm ZmZmYzgwMDAgbWZuPWM4MDAwIG5yPTIwMDAKKFhFTikgcDJtLmM6MTEyMTpkMHY1IHAybV9zZXRf ZW50cnk6IDB4ZmZmZmZmZmZjODAwMDo5IC0+IC0yMiAoMHhjODAwMCkKKFhFTikgbWVtb3J5X21h cDpmYWlsOiBkb200IGdmbj1mZmZmZmZmZmM4MDAwIG1mbj1jODAwMCBucj0yMDAwIHJldDotMjIK KFhFTikgbWVtb3J5X21hcDpyZW1vdmU6IGRvbTQgZ2ZuPWZmZmZmZmZmYzgwMDAgbWZuPWM4MDAw IG5yPTIwMDAKKFhFTikgcDJtLmM6MTIyODpkMHY1IGdmbl90b19tZm4gZmFpbGVkISBnZm49ZmZm ZmZmZmZjODAwMCB0eXBlOjQKKFhFTikgbWVtb3J5X21hcDogZXJyb3IgLTIyIHJlbW92aW5nIGRv bTQgYWNjZXNzIHRvIFtjODAwMCxjOWZmZl0KKFhFTikgbWVtb3J5X21hcDpyZW1vdmU6IGRvbTQg Z2ZuPWZmZmZmZmZmYzgwMDAgbWZuPWM4MDAwIG5yPTIwMDAKKFhFTikgcDJtLmM6MTIyODpkMHY1 IGdmbl90b19tZm4gZmFpbGVkISBnZm49ZmZmZmZmZmZjODAwMCB0eXBlOjQKKFhFTikgbWVtb3J5 X21hcDogZXJyb3IgLTIyIHJlbW92aW5nIGRvbTQgYWNjZXNzIHRvIFtjODAwMCxjOWZmZl0KKFhF TikgbWVtb3J5X21hcDphZGQ6IGRvbTQgZ2ZuPWM4MDAwIG1mbj1jODAwMCBucj0yMDAwCgpOb3Rl IHRoYXQgaXQgd2FzIG1lcmVseSBhIGxhbWUgQkFSIHNpemluZyBhdHRlbXB0IGZyb20gdGhlIGd1 ZXN0LXNpZGUgU1cKKGEgUENJIGNvbmZpZyBzcGFjZSB2aWV3aW5nIHRvb2wpIC0tIHdyaXRpbmcg RidzIHRvIHRoZSBoaWdoIHBhcnQgb2YgdGhlCk1NSU8gQkFSIGZpcnN0LgoKSWYgd2Ugd2lsbCBr bm93IHRoZSBndWVzdCdzIE1NSU8gaG9sZSBib3VuZHMsIHdlIGNhbiBhZGFwdCB0byB0aGlzCmJl aGF2aW9yLCBhdm9pZGluZyBlcnJvbmVvdXMgbWFwcGluZyBhdHRlbXB0cyB0byBhIHdyb25nIGFk ZHJlc3MKb3V0c2lkZSB0aGUgTU1JTyBob2xlLiBPbmx5IHRoZSBNTUlPIGhvbGUgZGVzaWduYXRl ZCByYW5nZSBjYW4gYmUgdXNlZAp0byBtYXAgUFQgZGV2aWNlIEJBUnMuCgpTbywgaWYgd2Ugd2ls bCBiZSBhY3R1YWxseSBlbXVsYXRpbmcgTUNIJ3MgTU1JTyBob2xlIHJlbGF0ZWQgcmVnaXN0ZXJz CmluIFhlbiBhcyB3ZWxsIC0tIHdlIGNhbiB1c2UgdGhlbSBhcyBzY3JhdGNocGFkIHJlZ2lzdGVy cyAod3JpdGUtb25jZQpvZiBjb3Vyc2UpIHRvIHBhc3MgdGhpcyBraW5kIG9mIGluZm9ybWF0aW9u IGJldHdlZW4gWGVuIGFuZCBvdGhlcgppbnZvbHZlZCBwYXJ0aWVzIGFzIGFuIGFsdGVybmF0aXZl IHRvIGVnLiBhIGRlZGljYXRlZCBoeXBlcmNhbGwuCgo+Q291bGQgeW91IGJlIG1vcmUgY29uY2lz ZSBhYm91dCBJQ0g5Pwo+Cj5UaGUgSUNIOSBzcGVjIGNvbnRhaW5zIG11bHRpcGxlIGRldmljZXMs IGZvciBleGFtcGxlIGl0IGluY2x1ZGVzIGFuCj5ldGhlcm5ldCBjb250cm9sbGVyIGFuZCBhIFNB VEEgY29udHJvbGxlciwgd2hpY2ggd2Ugc2hvdWxkIG5vdCBlbXVsYXRlCj5pbnNpZGUgb2YgWGVu LgoKSUNIIGJ1aWx0LWluIGRldmljZXMgZnJvbSBvdXQgUG9WIGNhbiBiZSBjb25zaWRlcmVkIGFz IGRpc3RpbmN0IFBDSQpkZXZpY2VzIChhcyBsb25nIGFzIHRoZXkncmUgYWN0dWFsbHkgZGlzdGlu Y3QgZGV2aWNlcyBpbiBQQ0kgY29uZmlnCnNwYWNlKS4KSXQncyBhIFFFTVUncyBhcHByb2FjaCBm b3IgdGhlbSAtLSB0aGVzZSBkZXZpY2VzIGNhbiBiZSBhZGRlZCB0byBhIHEzNQptYWNoaW5lIG9w dGlvbmFsbHkuIE9ubHkgYSBtaW5pbWFsIHNldCBvZiBkZXZpY2VzIHByb3ZpZGVkIGluaXRpYWxs eSwKbGlrZSBNQ0gvTFBDL0FIQ0kuIFNNQnVzIGNvbnRyb2xsZXIgKDA6MUYuMykgYWRkZWQgYnkg ZGVmYXVsdCB0b28sIGJ1dAppdCdzIG5vdCB1c2VmdWwgbXVjaCBhdCB0aGUgbW9tZW50LgoKU28g bW9zdGx5IHdlIGNhbiBjb25zaWRlciB0aGUgTFBDIGJyaWRnZSAoMDoxRi4wKSBmb3IgZW11bGF0 aW9uIG9mCmFsbCBkZXZpY2VzIHByb3ZpZGVkIGJ5IGEgcmVhbCBJQ0ggU0IuCgo+PiBJSS4gKGEg bmV3IGZlYXR1cmUpIE1vdmUgY2hpcHNldCBlbXVsYXRpb24gdG8gWGVuIGRpcmVjdGx5Lgo+PiAK Pj4gSW4gdGhpcyBjYXNlIG5vIHNlcGFyYXRlIG5vdGlmaWNhdGlvbiBuZWNlc3NhcnkgYXMgWGVu IHdpbGwgYmUKPj4gZW11bGF0aW5nIHRoZSBjaG9zZW4gY2hpcHNldCBpdHNlbGYuIE1NQ09ORklH IGxvY2F0aW9uIHdpbGwgYmUga25vd24KPj4gZnJvbSBvd24gUENJRVhCQVIgZW11bGF0aW9uLgo+ PiAKPj4gUUVNVSB3aWxsIGJlIHVzZWQgb25seSB0byBlbXVsYXRlIGEgbWluaW1hbCBzZXQgb2Yg dW5yZWxhdGVkIGRldmljZXMKPj4gKGVnLiBzdG9yYWdlL25ldHdvcmsvdmdhKS4gTGVzcyBkZXBl bmRlbmN5IG9uIFFFTVUgb3ZlcmFsbC4KPj4gCj4+IE1vcmUgZnJlZWRvbSB0byBpbXBsZW1lbnQg c29tZSBzcGVjaWZpYyBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIGxpa2UKPj4gc21yYW0gc3VwcG9y dCBmb3IgRUZJIGZpcm13YXJlIG5lZWRzLiBDaGlwc2V0IHJlbWFwcGluZyAoYWthIHJlY2xhaW0p Cj4+IGZ1bmN0aW9uYWxpdHkgZm9yIG1lbW9yeSByZWxvY2F0aW9uIG1heSBiZSBpbXBsZW1lbnRl ZCB1bmRlciBjb21wbGV0ZQo+PiBYZW4gY29udHJvbCwgYXZvaWRpbmcgdXNhZ2Ugb2YgdW5zYWZl IGFkZF90b19waHlzbWFwIGh5cGVyY2FsbHMuCj4+IAo+PiBJbiBmdXR1cmUgdGhpcyB3aWxsIGFs bG93IHRvIG1vdmUgcGFzc3Rocm91Z2gtc3VwcG9ydGluZyBjb2RlIGZyb20KPj4gUUVNVSAoaHcv eGVuL3hlbi1wdCouYykgdG8gWGVuLCBtZXJnaW5nIGl0IHdpdGggUm9nZXIncyB2cGNpIHNlcmll cy4KPj4gVGhpcyB3aWxsIGltcHJvdmUgZWcuIHRoZSBQVCArIHN0dWJkb21haW4gc2l0dWF0aW9u IGEgbG90IC0tIFBDSQo+PiBjb25maWcgc3BhY2UgYWNjZXNzZXMgZm9yIFBUIGRldmljZXMgd2ls bCBiZSBoYW5kbGVkIGluIGEgdW5pZm9ybQo+PiB3YXkgd2l0aG91dCBEb20wIGludGVyYWN0aW9u Lgo+PiBUaGlzIHBhcnRpY3VsYXIgZmVhdHVyZSBjYW4gYmUgaW1wbGVtZW50ZWQgZm9yIHRoZSBw cmV2aW91cyBhcHByb2FjaAo+PiBhcyB3ZWxsLCBzdGlsbCBpdCBpcyBlYXNpZXIgdG8gZG8gd2hl biBYZW4gY29udHJvbHMgdGhlIGVtdWxhdGVkCj4+IG1hY2hpbmUKPj4gCj4+IEluIGdlbmVyYWws IHRoaXMgaXMgYSBnb29kIGxvbmctdGVybSBkaXJlY3Rpb24uCj4+IAo+PiBXaGF0IHRoaXMgYXBw cm9hY2ggd2lsbCByZXF1aXJlOgo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiAKPj4gLSBDaGFuZ2VzIGluIFFFTVUgY29kZSB0byBzdXBwb3J0IGEgbmV3IGNoaXBzZXQtbGVz cyBtYWNoaW5lKHMpLiBJbgo+PiAgIHRoZW9yeSBtaWdodCBiZSBwb3NzaWJsZSB0byBpbXBsZW1l bnQgb24gdG9wIG9mIHRoZSAibnVsbCIgbWFjaGluZQo+PiAgIGNvbmNlcHQgIAo+Cj5Ob3QgYWxs IHBhcnRzIG9mIHRoZSBjaGlwc2V0IHNob3VsZCBnbyBpbnNpZGUgb2YgWGVuLCBBVE0gSSBvbmx5 Cj5mb3Jlc2VlIFEzNSBNQ0ggYmVpbmcgaW1wbGVtZW50ZWQgaW5zaWRlIG9mIFhlbi4gU28gSSdt IG5vdCBzdXJlCj5jYWxsaW5nIHRoaXMgYSBjaGlwc2V0LWxlc3MgbWFjaGluZSBpcyBjb3JyZWN0 IGZyb20gUUVNVSBQb1YuCgpFbXVsYXRpbmcgb25seSBNQ0ggaW4gWGVuIHdpbGwgc3RpbGwgcmVx dWlyZSBsb3Qgb2YgY2hhbmdlcyBidXQgCm92ZXJhbGwgYmVuZWZpdCB3aWxsIGJlY29tZSB1bmNs ZWFyIC0tIGJhc2ljYWxseSwgd2UganVzdCBtb3ZlClBDSUVYQkFSIGVtdWxhdGlvbiB0byBYZW4g ZnJvbSBRRU1VLgoKPj4gLSBNYWpvciBjaGFuZ2VzIGluIFhlbiBjb2RlIHRvIGltcGxlbWVudCB0 aGUgYWN0dWFsIGNoaXBzZXQgZW11bGF0aW9uCj4+ICAgdGhlcmUKPj4gCj4+IC0gQ2hhbmdlcyBv biB0aGUgdG9vbHN0YWNrIHNpZGUgYXMgdGhlIGVtdWxhdGVkIG1hY2hpbmUgd2lsbCBiZQo+PiAg IHNlbGVjdGVkIGFuZCB1c2VkIGRpZmZlcmVudGx5Cj4+IAo+PiAtIE1vdmluZyBwYXNzdGhyb3Vn aCBzdXBwb3J0IGZyb20gUUVNVSB0byBYZW4gd2lsbCBsaWtlbHkgcmVxdWlyZSB0bwo+PiAgIHJl LWRpdmlkZSBhcmVhcyBvZiByZXNwb25zaWJpbGl0eSBmb3IgUENJIGRldmljZSBwYXNzdGhyb3Vn aAo+PiBiZXR3ZWVuIHhlbi1wY2liYWNrIGFuZCB0aGUgaHlwZXJ2aXNvci4gSXQgbWlnaHQgYmUg bW9yZSBjb252ZW5pZW50Cj4+IHRvIHBlcmZvcm0gc29tZSB0YXNrcyBvZiB4ZW4tcGNpYmFjayBp biBYZW4gZGlyZWN0bHkgIAo+Cj5Nb3ZpbmcgcGNpLXBhc3N0aG91Z2ggZnJvbSBRRU1VIHRvIFhl biBpcyBJTU8gYSBzZXBhcmF0ZSBwcm9qZWN0LCBhbmQKPmJ5IHRoZSB0ZXh0IHlvdSBwcm92aWRl IEknbSBub3Qgc3VyZSBob3cgaXMgdGhhdCByZWxhdGVkIHRvIHRoZSBRMzUKPmNoaXBzZXQgaW1w bGVtZW50YXRpb24uCgpZZXMsIGl0J3MgbW9yZSBhIHNlcGFyYXRlIGZlYXR1cmUgb24gdG9wIG9m IHRoYXQgYXBwcm9hY2guIAoKPj4gLSBzdHJvbmcgZGVwZW5kZW5jeSBiZXR3ZWVuIFhlbi9saWJ4 bC9RRU1VL2V0YyB2ZXJzaW9ucyAtLSBhbnkKPj4gb3V0ZGF0ZWQgY29tcG9uZW50IHdpbGwgYmUg YSBtYWpvciBwcm9ibGVtLiBDYW4gYmUgcmVzb2x2ZWQgYnkKPj4gcHJvdmlkaW5nIHNvbWUgY29t cGF0aWJpbGl0eSBjb2RlICAKPgo+V2VsbCwgeW91IHdvdWxkIG9ubHkgYmUgYWJsZSB0byB1c2Ug dGhlIFEzNSBmZWF0dXJlIHdpdGggdGhlIHJpZ2h0Cj52ZXJzaW9uIG9mIHRoZSBjb21wb25lbnRz Lgo+Cj4+IC0gbG9uZ2VyIGltcGxlbWVudGF0aW9uIHRpbWUKPj4gCj4+IFJpc2tzOgo+PiAtLS0t LS0KPj4gCj4+IC0gQSBtYWpvciBhcmNoaXRlY3R1cmUgY2hhbmdlIHdpdGggcG9zc2libGUgaXNz dWVzIGVuY291bnRlcmVkIGR1cmluZwo+PiAgIHRoZSBpbXBsZW1lbnRhdGlvbgo+PiAKPj4gLSBN b3ZpbmcgdGhlIGVtdWxhdGlvbiBvZiB0aGUgbWFjaGluZSB0byBYZW4gY3JlYXRlcyBhIG5vbi16 ZXJvIHJpc2sKPj4gb2YgaW50cm9kdWNpbmcgYSBzZWN1cml0eSBpc3N1ZSB3aGlsZSBleHRlbmRp bmcgdGhlIGVtdWxhdGlvbiBzdXBwb3J0Cj4+ICAgZnVydGhlci4gQXMgYWxsIGVtdWxhdGlvbiB3 aWxsIHRha2UgcGxhY2Ugb24gYSBtb3N0IHRydXN0ZWQgbGV2ZWwsCj4+IGFueSBleHBsb2l0YWJs ZSBidWcgaW4gdGhlIGNoaXBzZXQgZW11bGF0aW9uIGNvZGUgbWF5IGNvbXByb21pc2UgdGhlCj4+ ICAgd2hvbGUgc3lzdGVtCj4+IAo+PiAtIHRoZXJlIGlzIGEgcmlzayB0byBlbmNvdW50ZXIgc29t ZSBkZXBlbmRlbmN5IG9uIG1pc3NpbmcgY2hpcHNldAo+PiAgIGRldmljZXMgaW4gUUVNVS4gU29t ZSBvZiBRRU1VIGRldmljZXMgKHdoaWNoIGRlcGVuZCBvbiBRRU1VIGNoaXBzZXQKPj4gICBkZXZp Y2VzL3Byb3BlcnRpZXMpIG1pZ2h0IG5vdCB3b3JrIHdpdGhvdXQgZXh0cmEgcGF0Y2hlcy4gSW4g dGhlb3J5Cj4+ICAgdGhpcyBtYXkgYmUgYWRkcmVzc2VkIGJ5IGxlYXZpbmcgdGhlIGR1bW15IE1D SC9MUEMvcGNpLWhvc3QgZGV2aWNlcwo+PiAgIGluIHBsYWNlIHdoaWxlIG5vdCBmb3J3YXJkaW5n IGFueSBJTy9NTUlPL1BDSSBjb25mIGFjY2Vzc2VzIHRvIHRoZW0KPj4gICAodXNpbmcgc2ltcGx5 IGFzIGNvbXBhdCBwbGFjZWhvbGRlcnMpCj4+IAo+PiAtIHJpc2sgb2YgaW5jb21wYXRpYmlsaXR5 IHdpdGggZnV0dXJlIFFFTVUgdmVyc2lvbnMKPj4gCj4+IEluIGJvdGggY2FzZXMsIGZvciBzZWN1 cml0eSBjb25jZXJucyBQQ0lFWEJBUiBhbmQgb3RoZXIgTUNIIHJlZ2lzdGVycwo+PiBjYW4gYmUg bWFkZSB3cml0ZS1vbmNlIChSTyBvbiBhbGwgZnVydGhlciBhY2Nlc3Nlcywgc2ltaWxhciB0byBh Cj4+IFRYVC1sb2NrZWQgc3lzdGVtKS4gIAo+Cj5JIHRoaW5rIG9wdGlvbiBJSSBpcyB0aGUgcmln aHQgd2F5IHRvIG1vdmUgZm9yd2FyZC4KCkFncmVlLCBpdCdzIGEgZ29vZCBsb25nLXRlcm0gZGly ZWN0aW9uLgpXZWxsLCB0aGUgcHJvYmxlbSBpcywgb3B0aW9uIDEgY2FuIGJlIGltcGxlbWVudGVk IGluIGEgbWF0dGVyIG9mIDEtMwpkYXlzLiBJdCB3aWxsIGFsbG93IE1NQ09ORklHIHRvIHdvcmsg d2l0aCBtdWx0aXBsZSBkZXZpY2UgZW11bGF0b3JzCndoaWxlIGJlaW5nIHZlcnkgbGlnaHQgb24g cmVxdWlyZW1lbnRzIC0tIG5vIGJpZyBjb2RlIGNoYW5nZXMKbmVjZXNzYXJ5LCBlYXN5IHRvIHRl c3QvcmV2aWV3LCBldGMuCgpPVE9ILCBvcHRpb24gMiB3aWxsIHJlcXVpcmUgc29tZSByZXNlYXJj aCBmaXJzdCBhcyB0aGUgY2hhbmdlIGlzCm5vbi10cml2aWFsIGFuZCBtYXkgcG9zc2libHkgcHJv ZHVjZSBhbnkga2luZCBvZiBpbmNvbXBhdGliaWxpdHkgaXNzdWVzCndpdGggUUVNVS4KCkVtdWxh dGluZyBqdXN0IE1DSCBpbiBYZW4gd2hpbGUgc3RpbGwgbGVhdmluZyBhbnl0aGluZyBlbHNlIHRv ClFFTVUgZG9lcyBub3Qgc2hvdyBhbiBvYnZpb3VzIGFkdmFudGFnZS4gV2l0aG91dCBleHRlbmRp bmcgdGhlCmNoaXBzZXQgZW11bGF0aW9uIGluIFhlbiBmdXJ0aGVyLCBpdCB3aWxsIGJlIGp1c3Qg YW4gb3ZlcmNvbXBsaWNhdGVkCmVtdWxhdGlvbiBvZiBQQ0lFWEJBUiByZWdpc3Rlci4gSWYgdGhp cyB3aWxsIGJlIHRoZSBvbmx5IGZpcnN0IG9iamVjdGl2ZQpmb3IgdGhlIGZlYXR1cmUsIHRoZW4g d2UgbmVlZCBzb21lIHN0cm9uZyBqdXN0aWZpY2F0aW9uIHdoeSBtb3ZpbmcgdGhlCmVtdWxhdGlv biBvZiBndWVzdCdzIFBDSUVYQkFSIGZyb20gUUVNVSB0byBYZW4gaXMgYSBtYW5kYXRvcnkgdGhp bmcuCgpXZSBuZWVkIHRvIGJlIGV4dHJhIHN1cmUgdGhhdCBoYXZpbmcgTUNIIGVtdWxhdGVkIGlu IFhlbiB3aGlsZSBJQ0g5IGFuZAphbGwgdGhlIHJlc3Qgd2lsbCByZW1haW4gdG8gYmUgZW11bGF0 ZWQgYnkgUUVNVSBpcyBhIGdvb2Qgc29sdXRpb24gZm9yClBDSUVYQkFSIGVtdWxhdGlvbi4gT3Ro ZXJ3aXNlLCBoYXZpbmcgYSBzcGxpdC10eXBlIGNoaXBzZXQgZW11bGF0aW9uCmJldHdlZW4gWGVu L1FFTVUganVzdCB0byBoYW5kbGUgdGhlIFEzNScgUENJRVhCQVIgcmVnaXN0ZXIgaXMgYW4Kb3Zl cmtpbGwuCgpJIHdvdWxkIHBlcnNvbmFsbHkgcHJlZmVyIHRvIGltcGxlbWVudCB0aGUgb3B0aW9u IDEgZmlyc3QsIHdoaWxlCnJlc2VhcmNoaW5nIGFuZCBpbXBsZW1lbnRpbmcgdGhlIG9wdGlvbiAy IGluIHRoZSBuZWFyIHBlcnNwZWN0aXZlLgoKVGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGluIFBD SUVYQkFSLCBpdCdzIGp1c3Qgb25lIG9mIHRoZSBlbXVsYXRlZApjaGlwc2V0IHJlZ2lzdGVycywg aG9sZGluZyB0aGUgYWRkcmVzcyBvZiB0aGUgZW11bGF0ZWQgTU1JTyBhcmVhLiBUaGlzCnJlZ2lz dGVyIGRvZXNuJ3QgZGlmZmVyIG11Y2ggd2l0aCBlZy4gQUhDSSBBQkFSLiBJbiBmYWN0LCBpdCdz IGFjdHVhbGx5Cm1vcmUgaGFybWxlc3MgLS0gIGZvciBNTUNPTkZJRyBNTUlPIHdlIG1lcmVseSBm b3J3YXJkIGFjY2Vzc2VzIGZvciBQQ0kKY29uZmlnIHJlYWQvd3JpdGUgZW11bGF0aW9uIChzYW1l IHRoaW5nIGFzIGZvciBlbXVsYXRlZCBDRjgvQ0ZDIEkvTyksCndoaWxlIGhhbmRsaW5nIEFIQ0kg QUJBUiBNTUlPIG1lYW5zIHRoYXQgd2UgZG8gc2VyaW91cyB0aGluZ3MgbGlrZQppbml0aWF0aW5n IHJlYWwgYmxvY2sgSS9PIHdpdGggdGhlIGhvc3QuIEZvciBQVCBkZXZpY2VzIE1NQ09ORklHCmFj Y2Vzc2VzIHN0aWxsIGdvIHRocnUgaHcveGVuLXB0Ki5jIGZvciBmaWx0ZXJpbmcgb3IgZW11bGF0 aW9uLgoKPj4gSXQgaXMgc29tZXdoYXQgcmVsYXRlZCB0byB0aGUgY2hpcHNldCBiZWNhdXNlIG1l bW9yeS9NTUlPIGxheW91dAo+PiBpbmNvbnNpc3RlbmN5IGNhbiBiZSBzb2x2ZWQgbW9yZSwgd2Vs bCwgbmF0dXJhbGx5IG9uIFEzNS4KPj4gCj4+IEJhc2ljYWxseSwgd2UgaGF2ZSBhIG5vbi1zdGFu ZGFyZCBNTUlPIGhvbGUgbGF5b3V0IHdoZXJlIHRoZQo+PiBzdGFydCBvZiB0aGUgaGlnaCBNTUlP IGhvbGUgZG8gbm90IG1hdGNoIHRoZSB0b3Agb2YgYWRkcmVzc2FibGUgUkFNCj4+IChkdWUgdG8g aW52aXNpYmxlIHJhbmdlcyBvZiB0aGUgZGV2aWNlIG1vZGVsKS4gIAo+Cj5CdXQgdGhhdCdzIGEg ZGV2aWNlIG1vZGVsIGlzc3VlIHRoZW4/IEknbSBub3Qgc3VyZSBJJ20gZ2V0dGluZyB3aGF0Cj55 b3UgbWVhbiBoZXJlLgoKV2UgZGVwZW5kIG9uIHRoZSBkZXZpY2UgbW9kZWwgaW4gdGhlIHF1ZXN0 aW9uIHdoZXJlIHdlIGNhbiBwbGFjZQp0aGUgc3RhcnQgb2YgdGhlIGhpZ2ggTU1JTyBob2xlIGN1 cnJlbnRseS4gVGhpcyBhbHNvIGJhZGx5IGFmZmVjdHMKbWVtb3J5IHJlbG9jYXRpb24gc3VwcG9y dCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIE1NSU8gaG9sZSBhdXRvLXNpemluZy4KVGhlcmUgYXJl IG11bHRpcGxlIG9wdGlvbnMgaG93IHRvIHJlc29sdmUgdGhpcyBwcm9ibGVtLCBlZy4gcGxhY2lu ZwpWUkFNIHRvIHNvbWUgYWRkcmVzc2VzIGZhciBiZXlvbmQgPjRHYiBidXQgdGhpcyBhcHByb2Fj aCBpcyBub3QgaWRlYWwKdG9vIGFzIHRoZSBkZXZpY2UgbW9kZWwgY2Fubm90IGtub3cgd2hlcmUg NjQtYml0IEJBUnMgd2lsbCBiZQphbGxvY2F0ZWQuIEFsdGhvdWdoIHRoaXMgaXMgYSBzaW1wbGVz dCBhcHByb2FjaCB0byBhdm9pZCBvdmVybGFwcyBhbmQKdG8gaGF2ZSB0aGUgaGlnaCBNTUlPIGhv bGUgYmFzZSBlcXVhbCB0byB0aGUgbWF4IGd1ZXN0IFJBTSBhZGRyZXNzLgoKPj4gUTM1IGluaXRp YWxseSBoYXZlIGZhY2lsaXRpZXMgdG8gYWxsb3cgZmlybXdhcmUgdG8gbW9kaWZ5ICh2aWEKPj4g ZW11bGF0aW9uKSBvciBkaXNjb3ZlciBzdWNoIE1NSU8gaG9sZSBzZXR1cCB3aGljaCBjYW4gYmUg dXNlZCBmb3IKPj4gc2FmZSBNTUlPIEJBUiBhbGxvY2F0aW9uIHRvIGF2b2lkIG92ZXJsYXBzIHdp dGggUUVNVS1vd25lZCBpbnZpc2libGUKPj4gcmFuZ2VzLiAgCj4KPklNTyBhIHNpbmdsZSBlbnRp dHkgc2hvdWxkIGJlIGluIGNvbnRyb2wgb2YgdGhlIG1lbW9yeSBsYXlvdXQsIGFuZAo+dGhhdCdz IHRoZSB0b29sc3RhY2suCj4KPklkZWFsbHkgd2Ugc2hvdWxkIG5vdCBhbGxvdyB0aGUgZmlybXdh cmUgdG8gY2hhbmdlIHRoZSBsYXlvdXQgYXQgYWxsLgoKVGhpcyBhcHByb2FjaCBpcyB0ZXJyaWJs eSB3cm9uZywgSSBkb24ndCBrbm93IHdoeSBvcGluaW9ucyBsaWtlIHRoaXMKc28gY29tbW9uIGF0 IENpdHJpeC4gVGhlIHRvb2xzdGFjayBpcyBhIGxlYXN0IGluZm9ybWVkIHNpZGUuIElmCk1NSU8v bWVtb3J5IGxheW91dCBzaG91bGQgYmUgaW1tdXRhYmxlLCBpdCBtdXN0IGJlIGNhbGN1bGF0ZWQK Y29uc2lkZXJpbmcgYWxsIGZhY3RvcnMsIGxpa2UgY2hpcHNldC1zcGVjaWZpYyBNTUlPIHJhbmdl cyBvciByYW5nZXMKd2hpY2ggY2Fubm90IGJlIHVzZWQgZm9yIHRoZSBNTUlPIGhvbGUuCgpXZSBu ZWVkIHRvIGtub3cgYWxsIHJlc291cmNlIHJlcXVpcmVtZW50cyBvZiBkZXZpY2UtbW9kZWwncyBh bmQgUFQKUENJIGRldmljZXMsIGFsbCBjaGlwc2V0LXNwZWNpZmljIE1NSU8gcmFuZ2VzICh3aGlj aCBiZWxvbmcgdG8gYSBkZXZpY2UKbW9kZWwpLCBhbGwgUk1SUnMgKGhvc3QncyBwcm9wZXJ0eSkg YW5kIGFsbCBkZXZpY2UtbW9kZWwgaW52aXNpYmxlCnJhbmdlcyBsaWtlIFZSQU0gYmFja2luZyBz dG9yZSAoYW5vdGhlciBkZXZpY2UgbW9kZWwncyBwcm9wZXJ0eSkuCkFuZCB3ZSBuZWVkIHRvIGtu b3cgaW4gd2hpY2ggbWFubmVyIGh2bWxvYWRlciB3aWxsIGJlIGFsbG9jYXRpbmcgQkFScwp0byB0 aGUgTU1JTyBob2xlIC0tIGVnLiBlaXRoZXIgaW4gYSBmb3J3YXJkIGRpcmVjdGlvbiBzdGFydGlu ZyBmcm9tIHNvbWUKYmFzZSBvciBtb3ZpbmcgYmFja3dhcmRzIGZyb20gdGhlIGVuZCBvZiA0R2Ig KG1pbnVzIGhhcmRjb2RlZCByYW5nZXMpLgpCYXNpY2FsbHkgdGhpcyBtZWFucyB0aGF0IHdlIGhh dmUgdG8gZGVwZW5kIG9uIGh2bWxvYWRlciBjb2RlL3ZlcnNpb24KdG9vIGluIHRoZSB0b29sc3Rh Y2ssIHdoaWNoIGlzIHdyb25nIG9uIGl0cyBvd24gLS0gd2Ugc2hvdWxkIGhhdmUgYQpmcmVlZG9t IHRvIG1vZGlmeSB0aGUgQkFSIGFsbG9jYXRpb24gYWxnbyBpbiBodm1sb2FkZXIgYXQgYW55IHRp bWUuCgpBdCB0aGUgbW9tZW50IGFsbCB0aGlzIGluZm9ybWF0aW9uIGNhbiBiZSBkaXNjb3ZlcmVk IG9ubHkgZnJvbQp0aGUgZmlybXdhcmUgc2lkZS4gTG90IG9mIGNoYW5nZXMgbmVlZGVkIHRvIGdh dGhlciBhbGwgcmVxdWlyZWQKaW5mb3JtYXRpb24gZnJvbSB0aGUgdG9vbHN0YWNrLgoKPldoYXQg YXJlIHNwZWNpZmljYWxseSB0aGUgcmVnaXN0ZXJzIHRoYXQgeW91IG1lbnRpb24/CgpXcml0ZS1v bmNlIGVtdWxhdGlvbiBvZiBUT0xVRC9UT1VVRC9SRU1BUEJBU0UvUkVNQVBMSU1JVCByZWdpc3Rl cnMgZm9yCmh2bWxvYWRlciB0byB1c2UuIFRoYXQncyB0aGUgYXBwcm9hY2ggSSdtIGFjdHVhbGx5 IHVzaW5nIHRvIG1ha2UKJ2h2bWxvYWRlci9hbGxvdy1tZW1vcnktcmVsb2NhdGU9MScgdG8gd29y ay4gTWVtb3J5IHJlbG9jYXRpb24gd2l0aG91dApyZWx5aW5nIG9uIGFkZF90b19waHlzbWFwIGh5 cGVyY2FsbCBmb3IgaHZtbG9hZGVyICh3aGljaCBpdCBkb2VzCmN1cnJlbnRseSkgd2hpbGUgaGF2 aW5nIE1NSU8vbWVtb3J5IGxheW91dCBzeW5jaHJvbml6ZWQgYmV0d2VlbiBhbGwKcGFydGllcy4g VGhlcmUgYXJlIG11bHRpcGxlIGJlbmVmaXRzIChtb3N0bHkgZm9yIFBUIG5lZWRzKSwgaW5jbHVk aW5nCnRoZSBNTUlPIGhvbGUgYXV0by1zaXppbmcgc3VwcG9ydCBidXQgdGhpcyBhcHByb2FjaCB3 b24ndCBiZSBhY2NlcHRlZAp3ZWxsIHdpdGggInRvb2xzdGFjayBzaG91bGQgZG8gZXZlcnl0aGlu ZyIgYXR0aXR1ZGUgSSdtIGFmcmFpZC4KCj4+IEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGlj aCByZWdpc3RlcnMgdG8gcGljayBmb3IgdGhpcyB0YXNrLCBidXQKPj4gZm9yIFEzNSB0aGlzIGFw cHJvYWNoIGlzIGF0IGxlYXN0IGNvbnNpc3RlbnQgd2l0aCB3aGF0IGEgcmVhbCBzeXN0ZW0KPj4g ZG9lcyAoUFYvUFZIIHBlb3BsZSB3aWxsIGZpbmQgdGhpcyBwZWN1bGlhcml0eSBwb2ludGxlc3Mg SQo+PiBzdXBwb3NlIDopICkuICAKCj5SaWdodCwgYnV0IEkgZG9uJ3QgdGhpbmsgd2UgYWltIHRv IGVtdWxhdGUgYSBmdWxseSBjb21wbGV0ZSBRMzUgTUNIIG9yCj5JQ0g5IGZvciBleGFtcGxlLCB3 aGljaCBoYXMgdG9ucyBvZiByZWdpc3RlcnMsIG5vdCBldmVuIFFFTVUgaXMgdHJ5aW5nCj50byBk byB0aGF0LiBUaGUgbWFpbiBnb2FsIGlzIHRvIGVtdWxhdGUgdGhlIHJlZ2lzdGVycyB3ZSBrbm93 IGFyZQo+cmVxdWlyZWQgZm9yIE9TZXMgdG8gd29yay4KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=