From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?utf-8?B?TW9ubsOp?= Subject: Re: [RFC PATCH 07/12] hvmloader: allocate MMCONFIG area in the MMIO hole + minor code refactoring Date: Wed, 21 Mar 2018 09:09:11 +0000 Message-ID: <20180321090911.qd6epofdaywc4blb@MacBook-Pro-de-Roger.local> References: <62c7a3037bb9f5631542f635dc36ae3338c7bf47.1520867741.git.x1917x@gmail.com> <20180319155802.immvsgqttrs3yezg@MacBook-Pro-de-Roger.local> <20180320054922.00005669@gmail.com> <20180320085048.orjv67qtwhe35ntl@MacBook-Pro-de-Roger.local> <20180321105840.00004698@gmail.com> 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 1eyZkQ-0004Nb-Sg for xen-devel@lists.xenproject.org; Wed, 21 Mar 2018 09:09:30 +0000 Content-Disposition: inline In-Reply-To: <20180321105840.00004698@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Alexey G Cc: Wei Liu , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBNYXIgMjEsIDIwMTggYXQgMTA6NTg6NDBBTSArMTAwMCwgQWxleGV5IEcgd3JvdGU6 Cj4gT24gVHVlLCAyMCBNYXIgMjAxOCAwODo1MDo0OCArMDAwMAo+IFJvZ2VyIFBhdSBNb25uw6kg PHJvZ2VyLnBhdUBjaXRyaXguY29tPiB3cm90ZToKPiAKPiA+T24gVHVlLCBNYXIgMjAsIDIwMTgg YXQgMDU6NDk6MjJBTSArMTAwMCwgQWxleGV5IEcgd3JvdGU6Cj4gPj4gT24gTW9uLCAxOSBNYXIg MjAxOCAxNTo1ODowMiArMDAwMAo+ID4+IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRy aXguY29tPiB3cm90ZToKPiA+PiAgIAo+ID4+ID5PbiBUdWUsIE1hciAxMywgMjAxOCBhdCAwNDoz Mzo1MkFNICsxMDAwLCBBbGV4ZXkgR2VyYXNpbWVua28KPiA+PiA+d3JvdGU6ICAKPiA+PiA+PiBN dWNoIGxpa2Ugbm9ybWFsIFBDSSBCQVJzIG9yIG90aGVyIGNoaXBzZXQtc3BlY2lmaWMgbWVtb3J5 LW1hcHBlZAo+ID4+ID4+IHJlc291cmNlcywgTU1DT05GSUcgYXJlYSBuZWVkcyBzcGFjZSBpbiBN TUlPIGhvbGUsIHNvIHdlIG11c3QKPiA+PiA+PiBhbGxvY2F0ZSBpdCBtYW51YWxseS4KPiA+PiA+ PiAKPiA+PiA+PiBUaGUgYWN0dWFsIE1NQ09ORklHIHNpemUgZGVwZW5kcyBvbiBhIG51bWJlciBv ZiBQQ0kgYnVzZXMKPiA+PiA+PiBhdmFpbGFibGUgd2hpY2ggc2hvdWxkIGJlIGNvdmVyZWQgYnkg RUNBTS4gUG9zc2libGUgb3B0aW9ucyBhcmUKPiA+PiA+PiA2NE1CLCAxMjhNQiBhbmQgMjU2TUIu IEFzIHdlIGFyZSBsaW1pdGVkIHRvIHRoZSBidXMgMCBjdXJyZW50bHksCj4gPj4gPj4gdGh1cyB1 c2luZyBsb3dlc3QgcG9zc2libGUgc2V0dGluZyAoNjRNQiksICNkZWZpbmVkIHZpYQo+ID4+ID4+ IFBDSV9NQVhfTUNGR19CVVNFUyBpbiBodm1sb2FkZXIvY29uZmlnLmguIFdoZW4gbXVsdGlwbGUg UENJIGJ1c2VzCj4gPj4gPj4gc3VwcG9ydCBmb3IgWGVuIHdpbGwgYmUgaW1wbGVtZW50ZWQsIFBD SV9NQVhfTUNGR19CVVNFUyBtYXkgYmUKPiA+PiA+PiBjaGFuZ2VkIHRvIGNhbGN1bGF0aW9uIG9m IHRoZSBudW1iZXIgb2YgYnVzZXMgYWNjb3JkaW5nIHRvCj4gPj4gPj4gcmVzdWx0cyBvZiB0aGUg UENJIGRldmljZXMgZW51bWVyYXRpb24uCj4gPj4gPj4gCj4gPj4gPj4gVGhlIHdheSB0byBhbGxv Y2F0ZSBNTUNPTkZJRyByYW5nZSBpbiBNTUlPIGhvbGUgaXMgc2ltaWxhciB0byBob3cKPiA+PiA+ PiBvdGhlciBQQ0kgQkFScyBhcmUgYWxsb2NhdGVkLiBUaGUgcGF0Y2ggZXh0ZW5kcyAnYmFycycg c3RydWN0dXJlCj4gPj4gPj4gdG8gbWFrZSBpdCB1bml2ZXJzYWwgZm9yIGFueSBhcmJpdHJhcnkg QkFSIHR5cGUgLS0gZWl0aGVyIElPLAo+ID4+ID4+IE1NSU8sIFJPTSBvciBhIGNoaXBzZXQtc3Bl Y2lmaWMgcmVzb3VyY2UuICAgIAo+ID4+ID4KPiA+PiA+SSdtIG5vdCBzdXJlIHRoaXMgaXMgZnVs bHkgY29ycmVjdC4gVGhlIElPUkVRIGludGVyZmFjZSBjYW4KPiA+PiA+ZGlmZmVyZW50aWF0ZSBQ Q0kgZGV2aWNlcyBhbmQgZm9yd2FyZCBjb25maWcgc3BhY2UgYWNjZXNzZXMgdG8KPiA+PiA+ZGlm ZmVyZW50IGVtdWxhdG9ycyAoc2VlIElPUkVRX1RZUEVfUENJX0NPTkZJRykuIFdpdGggdGhpcyBj aGFuZ2UKPiA+PiA+eW91IHdpbGwgZm9yd2FyZCBhbGwgTUNGRyBhY2Nlc3NlcyB0byBRRU1VLCB3 aGljaCB3aWxsIGxpa2VseSBiZQo+ID4+ID53cm9uZyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgUENJ LWRldmljZSBlbXVsYXRvcnMgZm9yIHRoZSBzYW1lCj4gPj4gPmRvbWFpbi4KPiA+PiA+Cj4gPj4g PkllOiBBRkFJQ1QgWGVuIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIE1DRkcgZW11bGF0aW9uIGFu ZCBkZXRlY3QKPiA+PiA+YWNjZXNzZXMgdG8gaXQgaW4gb3JkZXIgdG8gZm9yd2FyZCB0aGVtIHRv IHRoZSByaWdodCBlbXVsYXRvcnMuCj4gPj4gPgo+ID4+ID5BZGRpbmcgUGF1bCB3aG8ga25vd3Mg bW9yZSBhYm91dCBhbGwgdGhpcy4gIAo+ID4+IAo+ID4+IEluIHdoaWNoIHVzZSBjYXNlcyBtdWx0 aXBsZSBQQ0ktZGV2aWNlIGVtdWxhdG9ycyBhcmUgdXNlZCBmb3IgYQo+ID4+IHNpbmdsZSBIVk0g ZG9tYWluPyBJcyBpdCBhIHByb3ByaWV0YXJ5IHNldHVwPyAgCj4gPgo+ID5MaWtlbHkuIEkgdGhp bmsgWGVuR1QgbWlnaHQgYmUgdXNpbmcgaXQuIEl0J3MgYSBmZWF0dXJlIG9mIHRoZSBJT1JFUQo+ ID5pbXBsZW1lbnRhdGlvbiBpbiBYZW4uCj4gCj4gQWNjb3JkaW5nIHRvIHB1YmxpYyBzbGlkZXMg Zm9yIHRoZSBmZWF0dXJlLCBib3RoIFBDSSBjb25mIGFuZCBNTUlPCj4gYWNjZXNzZXMgY2FuIGJl IHJvdXRlZCB0byB0aGUgZGVzaWduYXRlZCBkZXZpY2UgbW9kZWwuIEl0IGxvb2tzIGxpa2UKPiBm b3IgdGhpcyBwYXJ0aWN1bGFyIHNldHVwIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGljaCBw YXJ0aWN1bGFyCj4gaW9yZXEgdHlwZSBtdXN0IGJlIHVzZWQgZm9yIE1NQ09ORklHIGFjY2Vzc2Vz IC0tIGVpdGhlcgo+IElPUkVRX1RZUEVfUENJX0NPTkZJRyBvciBJT1JFUV9UWVBFX0NPUFkgKE1N SU8gYWNjZXNzZXMpIHNob3VsZCBiZQo+IGFjY2VwdGFibGUuCgpJc24ndCB0aGF0IGdvaW5nIHRv IGJlIHF1aXRlIG1lc3N5PyBIb3cgaXMgdGhlIElPUkVRIHNlcnZlciBzdXBwb3NlZAp0byBkZWNv ZGUgYSBNQ0ZHIGFjY2VzcyByZWNlaXZlZCBhcyBJT1JFUV9UWVBFX0NPUFk/CgpJIGRvbid0IHRo aW5rIHRoZSBJT1JFUSBzZXJ2ZXIgbmVlZHMgdG8ga25vdyB0aGUgc3RhcnQgb2YgdGhlIE1DRkcK cmVnaW9uLCBpbiB3aGljaCBjYXNlIGl0IHdvbid0IGJlIGFibGUgdG8gZGV0ZWN0IGFuZCBkZWNv ZGUgdGhlCmFjY2VzcyBpZiBpdCdzIG9mIHR5cGUgSU9SRVFfVFlQRV9DT1BZLgoKTUNGRyBhY2Nl c3NlcyBuZWVkIHRvIGJlIHNlbnQgdG8gdGhlIElPUkVRIHNlcnZlciBhcwpJT1JFUV9UWVBFX1BD SV9DT05GSUcsIG9yIGVsc2UgeW91IGFyZSBmb3JjaW5nIGVhY2ggSU9SRVEgc2VydmVyIHRvCmtu b3cgdGhlIHBvc2l0aW9uIG9mIHRoZSBNQ0ZHIGFyZWEgaW4gb3JkZXIgdG8gZG8gdGhlIGRlY29k aW5nLiBJbgp5b3VyIGNhc2UgdGhpcyB3b3VsZCB3b3JrIGJlY2F1c2UgUUVNVSBjb250cm9scyB0 aGUgcG9zaXRpb24gb2YgdGhlCk1DRkcgcmVnaW9uLCBidXQgdGhlcmUncyBubyBuZWVkIGZvciBv dGhlciBJT1JFUSBzZXJ2ZXJzIHRvIGtub3cgdGhlCnBvc2l0aW9uIG9mIHRoZSBNQ0ZHIGFyZWEu Cgo+IFRoZSBvbmx5IHRoaW5nIHdoaWNoIG1hdHRlcnMgaXMgaW9yZXEgcm91dGluZyBpdHNlbGYg LS0KPiBtYWtpbmcgZGVjaXNpb25zIHRvIHdoaWNoIGRldmljZSBtb2RlbCB0aGUgUENJIGNvbmYv TU1JTyBpb3JlcSBzaG91bGQKPiBiZSBzZW50LgoKSG0sIHNlZSBhYm92ZSwgYnV0IEknbSBmYWly bHkgc3VyZSB5b3UgbmVlZCB0byBmb3J3YXJkIHRob3NlIE1DRkcKYWNjZXNzZXMgYXMgSU9SRVFf VFlQRV9QQ0lfQ09ORklHIHRvIHRoZSBJT1JFUSBzZXJ2ZXIuCgo+ID5UcmFkaXRpb25hbCBQQ0kg Y29uZmlnIHNwYWNlIGFjY2Vzc2VzIGFyZSBub3QgSU8gcG9ydCBzcGFjZSBhY2Nlc3Nlcy4KPiAK PiAoYXNzdW1pbmcgJ25vdCcgbWlzdHlwZWQgaGVyZSkKCk5vdCByZWFsbHksIHRoaXMgc2hvdWxk IGluc3RlYWQgYmU6CgoiVHJhZGl0aW9uYWwgUENJIGNvbmZpZyBzcGFjZSBhY2Nlc3NlcyBhcmUg bm90IGZvcndhcmRlZCB0byB0aGUgSU9SRVEKc2VydmVyIGFzIElPIHBvcnQgc3BhY2UgYWNjZXNz ZXMgKElPUkVRX1RZUEVfUElPKSBidXQgcmF0aGVyIGFzIFBDSQpjb25maWcgc3BhY2UgYWNjZXNz ZXMgKElPUkVRX1RZUEVfUENJX0NPTkZJRykuIgoKU29ycnkgZm9yIHRoZSBjb25mdXNpb24uCgo+ ID5UaGUgSU9SRVEgY29kZSBpbiBYZW4gZGV0ZWN0cyBhY2Nlc3NlcyB0byBwb3J0cyAweGNmOC8w eGNmYyBhbmQgSU9SRVEKPiA+c2VydmVycyBjYW4gcmVnaXN0ZXIgZGV2aWNlcyB0aGV5IHdvdWxk IGxpa2UgdG8gcmVjZWl2ZSBjb25maWd1cmF0aW9uCj4gPnNwYWNlIGFjY2Vzc2VzIGZvci4gUUVN VSBpcyBhbHJlYWR5IG1ha2luZyB1c2Ugb2YgdGhpcywgc2VlIGZvcgo+IAo+IFRoYXQncyBvbmUg b2YgdGhlIHJlYXNvbnMgd2h5IGN1cnJlbnQgSU9SRVFfVFlQRV9QQ0lfQ09ORklHCj4gaW1wbGVt ZW50YXRpb24gaXMgYSBiaXQgaW5jb252ZW5pZW50IGZvciBNTUNPTkZJRyBNTUlPIGFjY2Vzc2Vz IC0tIGl0J3MKPiB0b28gbXVjaCBDRjhoL0NGQ2gtY2VudHJpYyBpbiBpdHMgaW1wbGVtZW50YXRp b24sIG1pZ2h0IGJlIHBhaW5mdWwgdG8KPiBjaGFuZ2Ugc29tZXRoaW5nIGluIHRoZSBjb2RlIHdo aWNoIHdhcyBpbnRlbmRlZCBmb3IgQ0Y4aC9DRkNoIGhhbmRsaW5nCj4gKGFuZCBub3QgZm9yIE1N SU8gcHJvY2Vzc2luZykuCgpJJ20gbm90IHN1cmUgSSBmb2xsb3cuIERvIHlvdSBtZWFuIHRoYXQg Y2hhbmdlcyBzaG91bGQgYmUgbWFkZSB0byB0aGUKaW9yZXEgc3RydWN0IGluIG9yZGVyIHRvIGZv cndhcmQgTUNGRyBhY2Nlc3NlcyB1c2luZwpJT1JFUV9UWVBFX1BDSV9DT05GSUcgYXMgaXQncyB0 eXBlPwoKPiA+ZXhhbXBsZSB4ZW5fbWFwX3BjaWRldiBpbiB0aGUgUUVNVSBjb2RlLgo+ID4KPiA+ QnkgdHJlYXRpbmcgTUNGRyBhY2Nlc3NlcyBhcyBNTUlPIHlvdSBhcmUgYnlwYXNzaW5nIHRoZSBJ T1JFUSBQQ0kKPiA+bGF5ZXIsIGFuZCB0aHVzIGEgSU9SRVEgc2VydmVyIGNvdWxkIHJlZ2lzdGVy IGEgUENJIGRldmljZSBhbmQgb25seQo+ID5yZWNlaXZlIFBDSSBjb25maWd1cmF0aW9uIGFjY2Vz c2VzIGZyb20gdGhlIElPIHBvcnQgc3BhY2UsIHdoaWxlIE1DRkcKPiA+YWNjZXNzZXMgd291bGQg YmUgZm9yd2FyZGVkIHNvbWV3aGVyZSBlbHNlLgo+IAo+IEl0IHdpbGwgYmUgaGFuZGxlZCBieSBJ T1JFUSB0b28sIGp1c3QgdXNpbmcgYSBkaWZmZXJlbnQgSU9SRVEgdHlwZQo+IChNTUlPIG9uZSku IFRoZSBiYXNpYyBxdWVzdGlvbiBpcyB3aHkgZG8gd2UgaGF2ZSB0byBzdGljayB0byBQQ0kgY29u Zgo+IHNwYWNlIGlvcmVxcyBmb3IgZW11bGF0aW5nIE1NSU8gYWNjZXNzZXMgdG8gTU1DT05GSUcu CgpCZWNhdXNlIG90aGVyIElPUkVRIHNlcnZlcnMgZG9uJ3QgbmVlZCB0byBrbm93IGFib3V0IHRo ZSBwb3NpdGlvbi9zaXplCm9mIHRoZSBNQ0ZHIGFyZWEsIGFuZCBjYW5ub3QgcmVnaXN0ZXIgTU1J TyByYW5nZXMgdGhhdCBjb3ZlciB0aGVpcgpkZXZpY2UncyBQQ0kgY29uZmlndXJhdGlvbiBzcGFj ZSBpbiB0aGUgTUNGRyByZWdpb24uCgpOb3QgdG8gbWVudGlvbiB0aGF0IGl0IHdvdWxkIHdvdWxk IGJlIGEgdGVycmlibGUgZGVzaWduIGZsYXcgdG8gZm9yY2UKSU9SRVEgc2VydmVycyB0byByZWdp c3RlciBQQ0kgZGV2aWNlcyBhbmQgTUNGRyBhcmVhcyBiZWxvbmdpbmcgdG8KdGhvc2UgZGV2aWNl cyBzZXBhcmF0ZWx5IGFzIE1NSU8gaW4gb3JkZXIgdG8gdHJhcCBhbGwgcG9zc2libGUgUENJCmNv bmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzZXMuCgo+ID5JIHRoaW5rIHlvdSBuZWVkIHRvIG1ha2Ug dGhlIElPUkVRIGNvZGUgYXdhcmUgb2YgdGhlIE1DRkcgYXJlYSBhbmQKPiA+WEVOX0RNT1BfSU9f UkFOR0VfUENJIG5lZWRzIHRvIGZvcndhcmQgYm90aCBJTyBzcGFjZSBhbmQgTUNGRyBhY2Nlc3Nl cwo+ID50byB0aGUgcmlnaHQgSU9SRVEgc2VydmVyLgo+IAo+IFJpZ2h0IG5vdyB0aGVyZSBpcyBu byB3YXkgdG8gaW5mb3JtIFhlbiB3aGVyZSB0aGUgZW11bGF0ZWQgTU1DT05GSUcKPiBhcmVhIGlz IGxvY2F0ZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGlzIGRlY2lzaW9uLCBiYXNlZCBvbiB0aGUgYWRk cmVzcwo+IHdpdGhpbiBNTUNPTkZJRyByYW5nZS4gQSBuZXcgZG1vcC9oeXBlcmNhbGwgaXMgbmVl ZGVkICh3aXRoIGFyZ3MKPiBzaW1pbGFyIHRvIHBjaV9tbWNmZ19yZXNlcnZlZCkgYWxvbmcgd2l0 aCBpdHMgdXNhZ2UgaW4gUUVNVS4KPiAKPiBJJ2xsIHRyeSB0byBzdW1tYXJpemUgdHdvIGRpZmZl cmVudCBhcHByb2FjaGVzIHRvIE1NQ09ORklHCj4gaGFuZGxpbmcuIEZvciBib3RoIGFwcHJvYWNo ZXMgdGhlIGZpbmFsIFBDSSBjb25maWcgaG9zdCBpbnRlcmZhY2UgZm9yIGEKPiBwYXNzZWQgdGhy b3VnaCBkZXZpY2UgaW4gUUVNVSB3aWxsIHJlbWFpbiBzYW1lIGFzIGF0IHRoZSBtb21lbnQgLS0K PiB4ZW5faG9zdF9wY2lfKiBmdW5jdGlvbnMgaW4gL2h3L3hlbi4KPiAKPiAKPiBBcHByb2FjaCAj MS4gSW5mb3JtaW5nIFhlbiBhYm91dCBNTUNPTkZJRyBhcmVhIGNoYW5nZXMgYW5kIGxldHRpbmcg WGVuCj4gdG8gdHJhbnNsYXRlIE1NSU8gYWNjZXNzZXMgdG8gX1BDSV9DT05GSUcgaW9yZXFzOgo+ IAo+IDEuIFFFTVUgd2lsbCB0cmFwIGFjY2Vzc2VzIHRvIFBDSUVYQkFSLCBjYWxsaW5nIFhlbiB2 aWEgZG1vcC9oeXBlcmNhbGwKPiB0byBsZXQgdGhlIGxhdHRlciBrbm93IG9mIGFueSBNTUNPTkZJ RyBhcmVhIGFkZHJlc3Mvc2l6ZS9zdGF0dXMgY2hhbmdlcwo+IAo+IDIuIFhlbiB3aWxsIHRyYXAg TU1JTyBhY2Nlc3NlcyB0byB0aGUgY3VycmVudCBNTUNPTkZJRyBsb2NhdGlvbiBhbmQKPiBjb252 ZXJ0IG1lbW9yeSBhY2Nlc3NlcyBpbnRvIG9uZSBvciBzZXZlcmFsIF9QQ0lfQ09ORklHIGlvcmVx cyBhbmQgc2VuZAo+IHRoZW0gdG8gYSBjaG9zZW4gZGV2aWNlIG1vZGVsCj4gCj4gMy4gUUVNVSB3 aWxsIHJlY2VpdmUgX1BDSV9DT05GSUcgaW9yZXFzIHdpdGggU0JERiBhbmQgMTItYml0IG9mZnNl dHMKPiBpbnNpZGUgd2hpY2ggaXQgbmVlZHMgdG8gc29tZWhvdyBwYXNzIHRvCj4gcGNpX2hvc3Rf Y29uZmlnX3tyZWFkLHdyaXRlfV9jb21tb24oKSBmb3IgZW11bGF0aW9uLiBJdCBtaWdodCByZXF1 aXJlCj4gZmV3IGhhY2tzIHRvIG1ha2UgdGhlIGdlYXJzIHR1cm4gKGR1ZSB0byBRRU1VIHBjaSBj b25mIHJlYWQvd3JpdGUKPiBtb2RlbCkuCj4gQXQgdGhlIG1vbWVudCBlbXVsYXRlZCBDRjhoL0NG Q2ggcG9ydHMgcGxheSBhIHNwZWNpYWwgcm9sZQo+IGluIGFsbCB0aGlzIC0tIHhlbi1odm0uYyB3 cml0ZXMgYW4gQU1ELXN0eWxlIHZhbHVlIHRvIHRoZQo+IGVtdWxhdGVkIENGOGggcG9ydCAic28g dGhhdCB0aGUgY29uZmlnIHNwYWNlIGFjY2VzcyB3aWxsIHRhcmdldCB0aGUKPiBjb3JyZWN0IGRl dmljZSBtb2RlbCIgKHF1b3RlKS4gTm90IHN1cmUgYWJvdXQgdGhpcyBhbmQgd2h5IGl0J3MgaXMK PiBuZWVkZWQgaWYgWGVuIGFjdHVhbGx5IG1ha2VzIHRoZSBkZWNpc2lvbiB0byB3aGljaCBETSB0 aGUgUENJIGNvbmYKPiBpb3JlcSBzaG91bGQgYmUgc2VudC4KPiAKPiBPbmUgbWlub3Igbm90ZTog dGhlc2UgbmV3ICdzZXRfbW1jb25maWdfJyBkbW9wcy9oeXBlcmNhbGxzIGhhdmUgdG8gYmUKPiB0 cmlnZ2VyZWQgaW5zaWRlIHRoZSBjaGlwc2V0LXNwZWNpZmljIGVtdWxhdGlvbiBjb2RlIGluIFFF TVUgKFBDSUVYQkFSCj4gaGFuZGxpbmcgaW4gUTM1IGNhc2UpLiBJZiB0aGVyZSB3aWxsIGJlIGFu b3RoZXIgbWFjaGluZSB3aGljaCBuZWVkcyB0bwo+IGVtdWxhdGUgTU1DT05GSUcgY29udHJvbCBk aWZmZXJlbnRseSAtLSB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8KPiBpbnNlcnQgdGhlc2UgZG1v cHMvaHlwZXJjYWxscyBpbnRvIGFub3RoZXIgY2hpcHNldC1zcGVjaWZpYyBlbXVsYXRpb24KPiBj b2RlIGFzIHdlbGwsIGVnLiBpbnNpZGUgSEVDQkFTRSBlbXVsYXRpb24gY29kZS4KCk1heWJlIHlv dSBjb3VsZCBkZXRlY3Qgb2Zmc2V0cyA+PSAyNTYgYW5kIHJlcGxheSB0aGVtIGluIFFFTVUgbGlr ZQptbWlvIGFjY2Vzc2VzPyBVc2luZyB0aGUgYWRkcmVzc19zcGFjZV93cml0ZSBvcgpwY2llX21t Y2ZnX2RhdGFfcmVhZC93cml0ZSBmdW5jdGlvbnM/CgpJIGhhdmUgdG8gYWRtaXQgbXkga25vd2xl ZGdlIG9mIFFFTVUgaXMgcXVpdGUgbGltaXRlZCwgc28gSSdtIG5vdCBzdXJlCm9mIHRoZSBiZXN0 IHdheSB0byBoYW5kbGUgdGhpcy4KCklkZWFsbHkgd2Ugc2hvdWxkIGZpbmQgYSB3YXkgdGhhdCBk b2Vzbid0IGludm9sdmUgaGF2aW5nIHRvIG1vZGlmeQplYWNoIGNoaXBzZXQgdG8gaGFuZGxlIE1D RkcgYWNjZXNzZXMgZnJvbSBYZW4uIEl0IHdvdWxkIGJlIG5pY2UgdG8KaGF2ZSBzb21lIGtpbmQg b2YgaW50ZXJmYWNlIGluc2lkZSBvZiBRRU1VIHNvIGFsbCBjaGlwc2V0cyBjYW4KcmVnaXN0ZXIg TUNGRyBhcmVhcyBvciBtb2RpZnkgdGhlbSwgYnV0IHRoaXMgaXMgb3V0IG9mIHRoZSBzY29wZSBv Zgp0aGlzIHdvcmsuCgpSZWdhcmRsZXNzIG9mIGhvdyB0aGlzIGVuZHMgdXAgYmVpbmcgaW1wbGVt ZW50ZWQgaW5zaWRlIG9mIFFFTVUgSQp0aGluayB0aGUgYWJvdmUgYXBwcm9hY2ggaXMgdGhlIHJp Z2h0IG9uZSBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgUG9WLgoKQUZBSUNUIHRoZXJlIGFyZSBzdGls bCBzb21lIHJlc2VydmVkIGJpdHMgaW4gdGhlIGlvcmVxIHN0cnVjdCB0aGF0IHlvdQpjb3VsZCB1 c2UgdG8gc2lnbmFsICd0aGlzIGlzIGEgTUNGRyBQQ0kgYWNjZXNzJyBpZiByZXF1aXJlZC4KCj4g QXBwcm9hY2ggIzIuIEhhbmRsaW5nIE1NQ09ORklHIGFyZWEgaW5zaWRlIFFFTVUgdXNpbmcgdXN1 YWwgTU1JTwo+IGVtdWxhdGlvbjoKPiAKPiAxLiBRRU1VIHdpbGwgdHJhcCBhY2Nlc3NlcyB0byBQ Q0lFWEJBUiAob3Igd2hhdGV2ZXIgZWxzZSBwb3NzaWJseQo+IHN1cHBvcnRlZCBpbiB0aGUgZnV0 dXJlIGxpa2UgSEVDQkFTRSksIGV2ZW50dWFsbHkgYXNraW5nIFhlbiB0byBtYXAgdGhlCj4gTU1D T05GSUcgTU1JTyByYW5nZSBmb3IgaW9yZXEgc2VydmljaW5nIGp1c3QgbGlrZSBpdCBkb2VzIGZv ciBhbnkKPiBvdGhlciBlbXVsYXRlZCBNTUlPIHJhbmdlLCB2aWEgbWFwX2lvX3JhbmdlX3RvX2lv cmVxX3NlcnZlcigpLiBBbGwKPiBjaGFuZ2VzIGluIE1NQ09ORklHIHBsYWNlbWVudC9zdGF0dXMg d2lsbCBsZWFkIHRvIHJlbWFwcGluZy91bm1hcHBpbmcKPiB0aGUgTU1JTyByYW5nZS4KPiAKPiAy LiBYZW4gd2lsbCB0cmFwIE1NSU8gYWNjZXNzZXMgdG8gdGhpcyBhcmVhIGFuZCBmb3J3YXJkIHRo ZW0gdG8gUUVNVSBhcwo+IE1NSU8gKElPUkVRX1RZUEVfQ09QWSkgaW9yZXFzCj4gCj4gMy4gUUVN VSB3aWxsIHJlY2VpdmUgdGhlc2UgYWNjZXNzZXMgYW5kIHBhc3MgdGhlbSB0byB0aGUgZXhpc3Rp bmcKPiBNTUNPTkZJRyBlbXVsYXRpb24gLS0gcGNpZV9tbWNmZ19kYXRhX3JlYWQvd3JpdGUgaGFu ZGxlcnMsIGZpbmFsbHkKPiByZXN1bHRpbmcgaW4gc2FtZSB4ZW5faG9zdF9wY2lfKiBmdW5jdGlv biBjYWxscyBhcyBiZWZvcmUuCj4gCj4gVGhpcyBhcHByb2FjaCB3b3JrcyAicmlnaHQgb3V0IG9m IHRoZSBib3giLCBubyBjaGFuZ2VzIG5lZWRlZCBmb3IgZWl0aGVyCj4gWGVuIG9yIFFFTVUuIEFz IGJvdGggX1BDSV9DT05GSUcgYW5kIE1NSU8gdHlwZSBpb3JlcXMgYXJlIHByb2Nlc3NlZCwKPiBl aXRoZXIgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBQQ0kvZXh0ZW5kZWQgY29uZmlnIHNw YWNlIC0tCj4gQ0Y4L0NGQyBwb3J0IEkvTyBvciBNTUlPIGFjY2Vzc2VzIHRvIE1NQ09ORklHLgo+ IAo+IElPUkVRIHJvdXRpbmcgZm9yIG11bHRpcGxlIGRldmljZSBlbXVsYXRvcnMgY2FuIGJlIHN1 cHBvcnRlZCB0b28uIEluCj4gZmFjdCwgdGhlIHNhbWUgbW1jb25maWcgZG1vcHMvaHlwZXJjYWxs cyBjYW4gYmUgYWRkZWQgdG8gbGV0IFhlbiBrbm93Cj4gd2hlcmUgTU1DT05GSUcgYXJlYSByZXNp ZGVzLCBYZW4gd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBmb3J3YXJkCj4gTU1DT05GSUcg TU1JTyBpb3JlcXMgYWNjb3JkaW5nbHkgdG8gQkRGIG9mIHRoZSBhZGRyZXNzLiBUaGUgZGlmZmVy ZW5jZQo+IHdpdGggdGhlIGFwcHJvYWNoICMxIGlzIHRoYXQgdGhlc2UgaW50ZXJmYWNlcyBhcmUg bm93IGNvbXBsZXRlbHkKPiBvcHRpb25hbCB3aGVuIHdlIHVzZSBNTUlPIGlvcmVxcyBmb3IgTU1D T05GSUcgb24gdmFuaWxsYSBYZW4vUUVNVS4KCkFzIHNhaWQgYWJvdmUsIGlmIHlvdSBmb3J3YXJk IE1DRkcgYWNjZXNzZXMgYXMgSU9SRVFfVFlQRV9DT1BZIHlvdSBhcmUKZm9yY2luZyBlYWNoIElP UkVRIHNlcnZlciB0byBrbm93IHRoZSBwb3NpdGlvbiBvZiB0aGUgTUNGRyBhcmVhIGluCm9yZGVy IHRvIGRvIHRoZSBkZWNvZGluZywgdGhpcyBpcyBub3QgYWNjZXB0YWJsZSBJTU8uCgo+IFRoZSBx dWVzdGlvbiBpcyB3aHkgSU9SRVFfVFlQRV9DT1BZIC0+IElPUkVRX1RZUEVfUENJX0NPTkZJRwo+ IHRyYW5zbGF0aW9uIGlzIGEgbXVzdCBoYXZlIHRoaW5nIGF0IGFsbD8gSXQgd29uJ3QgbWFrZSBo YW5kbGluZyBzaW1wbGVyLgo+IEZvciBjdXJyZW50IFFFTVUgaW1wbGVtZW50YXRpb24gSU9SRVFf VFlQRV9DT1BZIChNTUlPIGFjY2Vzc2VzIGZvcgo+IE1NQ09ORklHKSB3b3VsZCBiZSBwcmVmZXJh YmxlIGFzIGl0IGFsbG93cyB0byB1c2UgdGhlIGV4aXN0aW5nIGNvZGUuCgpHcmFudGVkIGl0J3Mg bGlrZWx5IGVhc2llciB0byBpbXBsZW1lbnQsIGJ1dCBpdCdzIGFsc28gaW5jb3JyZWN0LiBZb3UK c2VlbSB0byBoYXZlIGluIG1pbmQgdGhlIHBpY3R1cmUgb2YgYSBzaW5nbGUgSU9SRVEgc2VydmVy IChRRU1VKQpoYW5kbGluZyBhbGwgdGhlIGRldmljZXMuCgpBbHRob3VnaCB0aGlzIGlzIHRoZSBt b3N0IGNvbW1vbiBzY2VuYXJpbywgaXQncyBub3QgdGhlIG9ubHkgb25lCnN1cHBvcnRlZCBieSBY ZW4uIFlvdXIgcHJvcG9zZWQgc29sdXRpb24gYnJlYWtzIHRoZSB1c2FnZSBvZiBtdWx0aXBsZQpJ T1JFUSBzZXJ2ZXJzIGFzIFBDSSBkZXZpY2UgZW11bGF0b3JzLgoKPiBJIHRoaW5rIGl0IHdpbGwg YmUgc2FmZSB0byB1c2UgTU1DT05GSUcgZW11bGF0aW9uIG9uIE1NSU8gbGV2ZWwgZm9yIG5vdwo+ IGFuZCBsYXRlciBleHRlbmQgaXQgd2l0aCAnc2V0X21tY29uZmlnXycgZG1vcC9oeXBlcmNhbGwg Zm9yIHRoZQo+ICdtdWx0aXBsZSBkZXZpY2UgZW11bGF0b3JzJyBJT1JFUV9UWVBFX0NPUFkgcm91 dGluZyB0byB3b3JrIHNhbWUgYXMgZm9yCj4gUENJIGNvbmYsIHNvIGl0IGNhbiBiZSB1c2VkIGJ5 IFhlbkdUIGV0YyBvbiBRMzUgYXMgd2VsbC4KCkknbSBhZnJhaWQgdGhpcyBraW5kIG9mIGlzc3Vl cyB3b3VsZCBoYXZlIGJlZW4gZmFpcmx5IGVhc2llciB0bwppZGVudGlmeSBpZiBhIGRlc2lnbiBk b2N1bWVudCBmb3IgdGhpcyBmZWF0dXJlIHdhcyBzZW50IHRvIHRoZSBsaXN0CnByaW9yIHRvIGl0 J3MgaW1wbGVtZW50YXRpb24uCgpSZWdhcmRpbmcgd2hldGhlciB0byBhY2NlcHQgc29tZXRoaW5n IGxpa2UgdGhpcywgSSdtIG5vdCByZWFsbHkgaW4KZmF2b3IsIGJ1dCBJTU8gaXQgZGVwZW5kcyBv biBob3cgbXVjaCBuZXcgY29kZSBpcyBhZGRlZCB0byBoYW5kbGUgdGhpcwppbmNvcnJlY3QgdXNh Z2UgdGhhdCB3b3VsZCB0aGVuIGdvIGF3YXkgKG9yIHdvdWxkIGhhdmUgdG8gYmUgY2hhbmdlZCkK aW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwcm9wZXIgaW1wbGVtZW50YXRpb24uCgpUaGFua3MsIFJv Z2VyLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==