From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [RFC PATCH 07/12] hvmloader: allocate MMCONFIG area in the MMIO hole + minor code refactoring Date: Tue, 20 Mar 2018 09:25:20 +0000 Message-ID: <544070fff780455093b6f494dc0faea1@AMSPEX02CL03.citrite.net> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1eyDWF-0003xx-Od for xen-devel@lists.xenproject.org; Tue, 20 Mar 2018 09:25:23 +0000 In-Reply-To: <20180320085048.orjv67qtwhe35ntl@MacBook-Pro-de-Roger.local> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau Monne , Alexey G Cc: "xen-devel@lists.xenproject.org" , Ian Jackson , Wei Liu , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFJvZ2VyIFBhdSBNb25uZQo+IFNl bnQ6IDIwIE1hcmNoIDIwMTggMDg6NTEKPiBUbzogQWxleGV5IEcgPHgxOTE3eEBnbWFpbC5jb20+ Cj4gQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgQW5kcmV3IENvb3Blcgo+IDxB bmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGNpdHJp eC5jb20+OyBKYW4KPiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT47IFdlaSBMaXUgPHdlaS5s aXUyQGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQKPiA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+ Cj4gU3ViamVjdDogUmU6IFtYZW4tZGV2ZWxdIFtSRkMgUEFUQ0ggMDcvMTJdIGh2bWxvYWRlcjog YWxsb2NhdGUgTU1DT05GSUcKPiBhcmVhIGluIHRoZSBNTUlPIGhvbGUgKyBtaW5vciBjb2RlIHJl ZmFjdG9yaW5nCj4gCj4gT24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMDU6NDk6MjJBTSArMTAwMCwg QWxleGV5IEcgd3JvdGU6Cj4gPiBPbiBNb24sIDE5IE1hciAyMDE4IDE1OjU4OjAyICswMDAwCj4g PiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cj4gPgo+ID4g Pk9uIFR1ZSwgTWFyIDEzLCAyMDE4IGF0IDA0OjMzOjUyQU0gKzEwMDAsIEFsZXhleSBHZXJhc2lt ZW5rbyB3cm90ZToKPiA+ID4+IE11Y2ggbGlrZSBub3JtYWwgUENJIEJBUnMgb3Igb3RoZXIgY2hp cHNldC1zcGVjaWZpYyBtZW1vcnktbWFwcGVkCj4gPiA+PiByZXNvdXJjZXMsIE1NQ09ORklHIGFy ZWEgbmVlZHMgc3BhY2UgaW4gTU1JTyBob2xlLCBzbyB3ZSBtdXN0Cj4gPiA+PiBhbGxvY2F0ZSBp dCBtYW51YWxseS4KPiA+ID4+Cj4gPiA+PiBUaGUgYWN0dWFsIE1NQ09ORklHIHNpemUgZGVwZW5k cyBvbiBhIG51bWJlciBvZiBQQ0kgYnVzZXMgYXZhaWxhYmxlCj4gPiA+PiB3aGljaCBzaG91bGQg YmUgY292ZXJlZCBieSBFQ0FNLiBQb3NzaWJsZSBvcHRpb25zIGFyZSA2NE1CLCAxMjhNQgo+ID4g Pj4gYW5kIDI1Nk1CLiBBcyB3ZSBhcmUgbGltaXRlZCB0byB0aGUgYnVzIDAgY3VycmVudGx5LCB0 aHVzIHVzaW5nCj4gPiA+PiBsb3dlc3QgcG9zc2libGUgc2V0dGluZyAoNjRNQiksICNkZWZpbmVk IHZpYSBQQ0lfTUFYX01DRkdfQlVTRVMgaW4KPiA+ID4+IGh2bWxvYWRlci9jb25maWcuaC4gV2hl biBtdWx0aXBsZSBQQ0kgYnVzZXMgc3VwcG9ydCBmb3IgWGVuIHdpbGwgYmUKPiA+ID4+IGltcGxl bWVudGVkLCBQQ0lfTUFYX01DRkdfQlVTRVMgbWF5IGJlIGNoYW5nZWQgdG8gY2FsY3VsYXRpb24K PiBvZiB0aGUKPiA+ID4+IG51bWJlciBvZiBidXNlcyBhY2NvcmRpbmcgdG8gcmVzdWx0cyBvZiB0 aGUgUENJIGRldmljZXMgZW51bWVyYXRpb24uCj4gPiA+Pgo+ID4gPj4gVGhlIHdheSB0byBhbGxv Y2F0ZSBNTUNPTkZJRyByYW5nZSBpbiBNTUlPIGhvbGUgaXMgc2ltaWxhciB0byBob3cKPiA+ID4+ IG90aGVyIFBDSSBCQVJzIGFyZSBhbGxvY2F0ZWQuIFRoZSBwYXRjaCBleHRlbmRzICdiYXJzJyBz dHJ1Y3R1cmUgdG8KPiA+ID4+IG1ha2UgaXQgdW5pdmVyc2FsIGZvciBhbnkgYXJiaXRyYXJ5IEJB UiB0eXBlIC0tIGVpdGhlciBJTywgTU1JTywgUk9NCj4gPiA+PiBvciBhIGNoaXBzZXQtc3BlY2lm aWMgcmVzb3VyY2UuCj4gPiA+Cj4gPiA+SSdtIG5vdCBzdXJlIHRoaXMgaXMgZnVsbHkgY29ycmVj dC4gVGhlIElPUkVRIGludGVyZmFjZSBjYW4KPiA+ID5kaWZmZXJlbnRpYXRlIFBDSSBkZXZpY2Vz IGFuZCBmb3J3YXJkIGNvbmZpZyBzcGFjZSBhY2Nlc3NlcyB0bwo+ID4gPmRpZmZlcmVudCBlbXVs YXRvcnMgKHNlZSBJT1JFUV9UWVBFX1BDSV9DT05GSUcpLiBXaXRoIHRoaXMgY2hhbmdlCj4geW91 Cj4gPiA+d2lsbCBmb3J3YXJkIGFsbCBNQ0ZHIGFjY2Vzc2VzIHRvIFFFTVUsIHdoaWNoIHdpbGwg bGlrZWx5IGJlIHdyb25nIGlmCj4gPiA+dGhlcmUgYXJlIG11bHRpcGxlIFBDSS1kZXZpY2UgZW11 bGF0b3JzIGZvciB0aGUgc2FtZSBkb21haW4uCj4gPiA+Cj4gPiA+SWU6IEFGQUlDVCBYZW4gbmVl ZHMgdG8ga25vdyBhYm91dCB0aGUgTUNGRyBlbXVsYXRpb24gYW5kIGRldGVjdAo+ID4gPmFjY2Vz c2VzIHRvIGl0IGluIG9yZGVyIHRvIGZvcndhcmQgdGhlbSB0byB0aGUgcmlnaHQgZW11bGF0b3Jz Lgo+ID4gPgo+ID4gPkFkZGluZyBQYXVsIHdobyBrbm93cyBtb3JlIGFib3V0IGFsbCB0aGlzLgo+ ID4KPiA+IEluIHdoaWNoIHVzZSBjYXNlcyBtdWx0aXBsZSBQQ0ktZGV2aWNlIGVtdWxhdG9ycyBh cmUgdXNlZCBmb3IgYSBzaW5nbGUKPiA+IEhWTSBkb21haW4/IElzIGl0IGEgcHJvcHJpZXRhcnkg c2V0dXA/Cj4gCj4gTGlrZWx5LiBJIHRoaW5rIFhlbkdUIG1pZ2h0IGJlIHVzaW5nIGl0LiBJdCdz IGEgZmVhdHVyZSBvZiB0aGUgSU9SRVEKPiBpbXBsZW1lbnRhdGlvbiBpbiBYZW4uCj4gCgpNdWx0 aXBsZSBpb3JlcSBzZXJ2ZXJzIGFyZSBhIHN1cHBvcnRlZCB1c2UtY2FzZSBmb3IgWGVuLCBpZiBv bmx5IGV4cGVyaW1lbnRhbCBhdCB0aGlzIHBvaW50LiBBbmQgaW5kZWVkIHhlbmd0IGlzIG9uZSBz dWNoIHVzZS1jYXNlLgoKPiBUcmFkaXRpb25hbCBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc2VzIGFy ZSBub3QgSU8gcG9ydCBzcGFjZSBhY2Nlc3Nlcy4KPiBUaGUgSU9SRVEgY29kZSBpbiBYZW4gZGV0 ZWN0cyBhY2Nlc3NlcyB0byBwb3J0cyAweGNmOC8weGNmYyBhbmQgSU9SRVEKPiBzZXJ2ZXJzIGNh biByZWdpc3RlciBkZXZpY2VzIHRoZXkgd291bGQgbGlrZSB0byByZWNlaXZlIGNvbmZpZ3VyYXRp b24KPiBzcGFjZSBhY2Nlc3NlcyBmb3IuIFFFTVUgaXMgYWxyZWFkeSBtYWtpbmcgdXNlIG9mIHRo aXMsIHNlZSBmb3IKPiBleGFtcGxlIHhlbl9tYXBfcGNpZGV2IGluIHRoZSBRRU1VIGNvZGUuCj4g Cj4gQnkgdHJlYXRpbmcgTUNGRyBhY2Nlc3NlcyBhcyBNTUlPIHlvdSBhcmUgYnlwYXNzaW5nIHRo ZSBJT1JFUSBQQ0kKPiBsYXllciwgYW5kIHRodXMgYSBJT1JFUSBzZXJ2ZXIgY291bGQgcmVnaXN0 ZXIgYSBQQ0kgZGV2aWNlIGFuZCBvbmx5Cj4gcmVjZWl2ZSBQQ0kgY29uZmlndXJhdGlvbiBhY2Nl c3NlcyBmcm9tIHRoZSBJTyBwb3J0IHNwYWNlLCB3aGlsZSBNQ0ZHCj4gYWNjZXNzZXMgd291bGQg YmUgZm9yd2FyZGVkIHNvbWV3aGVyZSBlbHNlLgo+IAo+IEkgdGhpbmsgeW91IG5lZWQgdG8gbWFr ZSB0aGUgSU9SRVEgY29kZSBhd2FyZSBvZiB0aGUgTUNGRyBhcmVhIGFuZAo+IFhFTl9ETU9QX0lP X1JBTkdFX1BDSSBuZWVkcyB0byBmb3J3YXJkIGJvdGggSU8gc3BhY2UgYW5kIE1DRkcKPiBhY2Nl c3Nlcwo+IHRvIHRoZSByaWdodCBJT1JFUSBzZXJ2ZXIuCgpZZXMsIFhlbiBtdXN0IGludGVyY2Vw dCBhbGwgYWNjZXNzZXMgdG8gUENJIGNvbmZpZyBzcGFjZSBhbmQgcm91dGUgdGhlbSBhY2NvcmRp bmdseS4KCj4gCj4gPiBJIGFzc3VtZSBpdCBpcyBzb21laG93IHJlbGF0ZWQgdG8gdGhpcyBjb2Rl IGluIHhlbi1odm0uYzoKPiA+ICAgICAgICAgICAgICAgICAvKiBGYWtlIGEgd3JpdGUgdG8gcG9y dCAweENGOCBzbyB0aGF0Cj4gPiAgICAgICAgICAgICAgICAgICogdGhlIGNvbmZpZyBzcGFjZSBh Y2Nlc3Mgd2lsbCB0YXJnZXQgdGhlCj4gPiAgICAgICAgICAgICAgICAgICogY29ycmVjdCBkZXZp Y2UgbW9kZWwuCj4gPiAgICAgICAgICAgICAgICAgICovCj4gPiAgICAgICAgICAgICAgICAgdmFs ID0gKDF1IDw8IDMxKSB8ICgocmVxLT5hZGRyICYgMHgwZjAwKSA8Li4uPgo+ID4gICAgICAgICAg ICAgICAgIGRvX291dHAoMHhjZjgsIDQsIHZhbCk7Cj4gPiBpZiB5ZXMsIHNpbWlsYXIgdGhpbmcg Y2FuIGJlIG1hZGUgZm9yIElPUkVRX1RZUEVfQ09QWSBhY2Nlc3NlcyB0bwo+ID4gdGhlIGVtdWxh dGVkIE1NQ09ORklHIGlmIG5lZWRlZC4KPiAKPiBJIGhhdmUgdG8gYWRtaXQgSSBkb24ndCBrbm93 IHRoYXQgbXVjaCBhYm91dCBRRU1VLCBhbmQgSSBoYXZlIG5vIGlkZWEKPiB3aGF0IHRoZSBjaHVu ayBhYm92ZSBpcyBzdXBwb3NlZCB0byBhY2NvbXBsaXNoLgo+IAoKVGhlIGVhc2llc3Qgd2F5IHRv IG1ha2UgUUVNVSBiZWhhdmUgYXBwcm9wcmlhdGVseSB3aGVuIGRlYWxpbmcgd2l0aCBhIGNvbmZp ZyBzcGFjZSBpb3JlcSB3YXMgaW5kZWVkIHRvIG1ha2UgaXQgYXBwZWFyIGFzIGEgd3JpdGUgdG8g Y2Y4IGZvbGxvd2VkIGJ5IGEgcmVhZCBvciB3cml0ZSB0byBjZmMuCgo+ID4KPiA+IEluIEhWTStR RU1VIGNhc2Ugd2UgYXJlIG5vdCBsaW1pdGVkIHRvIG1lcmVseSBwYXNzZWQgdGhyb3VnaCBkZXZp Y2VzLAo+ID4gbW9zdCBvZiB0aGUgb2JzZXJ2YWJsZSBQQ0kgY29uZmlnIHNwYWNlIGRldmljZXMg YmVsb25nIHRvIG9uZSBwYXJ0aWN1bGFyCj4gPiBRRU1VIGluc3RhbmNlLiBUaGlzIGRpY3RhdGVz IHRoZSBvdmVyYWxsIGVtdWxhdGVkIE1NQ09ORklHIGxheW91dAo+ID4gZm9yIGEgZG9tYWluIHdo aWNoIHNob3VsZCBiZSBpbiBzeW5jIHRvIHdoYXQgUUVNVSBlbXVsYXRlcyB2aWEKPiBDRjhoL0NG Q2gKPiA+IGFjY2Vzc2VzLi4uIGFuZCBiZXR3ZWVuIG11bHRpcGxlIGRldmljZSBtb2RlbCBpbnN0 YW5jZXMgKGlmIHRoZXJlIGFyZQo+ID4gYW55LCBzdGlsbCBub3Qgc3VyZSB3aGF0IG11bHRpcGxl IFBDSS1kZXZpY2UgZW11bGF0b3JzIHlvdSBtZW50aW9uZWQKPiA+IHJlYWxseSBhcmUpLgo+IAo+ IEluIG5ld2VyIHZlcnNpb25zIG9mIFhlbiAoPjQuNSBJSVJDLCBQYXVsIGtub3dzIG1vcmUpLCBR RU1VIGRvZXNuJ3QKPiBkaXJlY3RseSB0cmFwIGFjY2Vzc2VzIHRvIHRoZSAweGNmOC8weGNmYyBJ TyBwb3J0cywgaXQncyBYZW4gaW5zdGVhZAo+IHRoZSBvbmUgdGhhdCBkZXRlY3RzIGFuZCBkZWNv ZGVzIHN1Y2ggYWNjZXNzZXMsIGFuZCB0aGVuIGZvcndhcmRzIHRoZW0KPiB0byB0aGUgSU9SRVEg c2VydmVyIHRoYXQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBoYW5kbGUgdGhlbS4KPiAKCkNvcnJl Y3QuCgo+IFlvdSBjYW5ub3Qgc2ltcGx5IGZvcndhcmQgYWxsIE1DRkcgYWNjZXNzZXMgdG8gUUVN VSBhcyBNTUlPIGFjY2Vzc2VzLAo+IFhlbiBuZWVkcyB0byBkZWNvZGUgdGhlbSBhbmQgdGhleSBu ZWVkIHRvIGJlIGhhbmRsZWQgYXMKPiBJT1JFUV9UWVBFX1BDSV9DT05GSUcgcmVxdWVzdHMsIG5v dCBJT1JFUV9UWVBFX0NPUFkgSU1PLgo+IAo+ID4KPiA+IEJhc2ljYWxseSwgd2UgaGF2ZSBhbiBl bXVsYXRlZCBNTUNPTkZJRyBhcmVhIG9mIDY0LzEyOC8yNTZNQiBzaXplIGluCj4gPiB0aGUgTU1J TyBob2xlIG9mIHRoZSBndWVzdCBIVk0gZG9tYWluLiAoQlRXLCB0aGlzIGFyZWEgaXRzZWxmIGNh biBiZQo+ID4gY29uc2lkZXJlZCBhIGZlYXR1cmUgb2YgdGhlIGNoaXBzZXQgdGhlIGRldmljZSBt b2RlbCBlbXVsYXRlcy4pCj4gPiBJdCBjYW4gYmUgcmVsb2NhdGVkIHRvIHNvbWUgb3RoZXIgcGxh Y2UgaW4gTU1JTyBob2xlLCB0aGlzIG1lYW5zIHRoYXQKPiA+IFFFTVUgd2lsbCB0cmFwIGFjY2Vz c2VzIHRvIHRoZSBzcGVjaWZpYyB0byB0aGUgZW11bGF0ZWQgY2hpcHNldAo+ID4gUENJRVhCQVIg cmVnaXN0ZXIgYW5kIHdpbGwgaXNzdWUgc2FtZSBNTUlPIHVubWFwL21hcCBjYWxscyBhcyBmb3IK PiA+IGFueSBub3JtYWwgZW11bGF0ZWQgTU1JTyByYW5nZS4KPiA+Cj4gPiBPbiB0aGUgb3RoZXIg aGFuZCwgaXQgd29uJ3QgYmUgZWFzeSB0byBwcm92aWRlIGVtdWxhdGVkIE1NQ09ORklHCj4gPiB0 cmFuc2xhdGlvbiBpbnRvIElPUkVRX1RZUEVfUENJX0NPTkZJRyBmcm9tIFhlbiBzaWRlLiBYZW4g c2hvdWxkIGtub3cKPiA+IGN1cnJlbnQgZW11bGF0ZWQgTU1DT05GSUcgYXJlYSBwb3NpdGlvbiBh bmQgc2l6ZSBpbiBvcmRlciB0byB0cmFuc2xhdGUKPiA+IChvciBub3QpIGFjY2Vzc2VzIHRvIGl0 IGludG8gY29ycmVzcG9uZGluZyBCREYvcmVnIHBhaXIgKCt3aGV0aGVyIHRoYXQKPiA+IGFyZWEg aXMgZW5hYmxlZCBmb3IgZGVjb2Rpbmcgb3Igbm90KS4gVGhpcyB3aWxsIGxpa2VseSByZXF1aXJl IHRvCj4gPiBpbnRyb2R1Y2UgbmV3IGh5cGVyY2FsbChzKS4KPiAKPiBZZXMsIHlvdSB3aWxsIGhh dmUgdG8gaW50cm9kdWNlIG5ldyBoeXBlcmNhbGxzIHRvIHRlbGwgWGVuIHRoZQo+IHBvc2l0aW9u L3NpemUgb2YgdGhlIE1DRkcgaG9sZS4gTGlrZWx5IHlvdSB3YW50IHRvIHRlbGwgaXQgdGhlIHN0 YXJ0Cj4gYWRkcmVzcywgdGhlIHBjaSBzZWdtZW50LCBzdGFydCBidXMgYW5kIGVuZCBidXMuIEkg a25vdyBwY2kgc2VnbWVudAo+IGFuZCBzdGFydCBidXMgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIDAg QVRNLCBidXQgaXQgd291bGQgYmUgbmljZSB0bwo+IGhhdmUgYSBjb21wbGV0ZSBpbnRlcmZhY2Uu Cj4gCj4gQnkgeW91ciBjb21tZW50IGFib3ZlIEkgdGhpbmsgeW91IHdhbnQgYW4gaW50ZXJmYWNl IHRoYXQgYWxsb3dzIHlvdSB0bwo+IHJlbW92ZS9hZGQgdGhvc2UgTUNGRyBhcmVhcyBhdCBydW50 aW1lLgo+IAoKV2UncmUgZ29pbmcgdG8gd2FudCBob3RwbHVnIGV2ZW50dWFsbHkgc28sIHllcywg ZGV2aWNlcyBuZWVkIHRvIGFwcGVhciBhbmQgZGlzYXBwZWFyIGR5bmFtaWNhbGx5LgoKPiA+IFRo ZSBxdWVzdGlvbiBpcyBpZiB0aGVyZSB3aWxsIGJlIGFueSBkaWZmZXJlbmNlIG9yIGJlbmVmaXQg YXQgYWxsLgo+IAo+IElNTyBpdCdzIG5vdCBhYm91dCBiZW5lZml0cyBvciBkaWZmZXJlbmNlcywg aXQncyBhYm91dCBjb3JyZWN0bmVzcy4KPiBYZW4gY3VycmVudGx5IGRldGVjdHMgYWNjZXNzZXMg dG8gdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGZyb20gSU8KPiBwb3J0cyBhbmQgZm9yIGNv bnNpc3RlbmN5IGl0IHNob3VsZCBhbHNvIGRldGVjdCBhY2Nlc3NlcyB0byB0aGlzIHNwYWNlCj4g YnkgYW55IG90aGVyIG1lYW5zLgo+IAoKWWVzLCB0aGlzIGlzIGEgJ211c3QnIHJhdGhlciB0aGFu IGEgJ3Nob3VsZCcgdGhvdWdoLgoKPiA+IEl0J3MgYmFzaWNhbGx5IHRoZSBzYW1lIGVtdWxhdGVk IE1NSU8gcmFuZ2UgYWZ0ZXIgYWxsLCBidXQgaW4gb25lIGNhc2UKPiA+IHdlIHRyYXAgYWNjZXNz ZXMgdG8gaXQgaW4gWGVuIGFuZCB0cmFuc2xhdGUgdGhlbSBpbnRvCj4gPiBJT1JFUV9UWVBFX1BD SV9DT05GSUcgcmVxdWVzdHMuCj4gPiBXZSBoYXZlIHRvIHByb3ZpZGUgc29tZSBpbmZyYXN0cnVj dHVyZSB0byBsZXQgWGVuIGtub3cgd2hlcmUgdGhlIGRldmljZQo+ID4gbW9kZWwvZ3Vlc3QgZXhw ZWN0cyB0byB1c2UgdGhlIE1NQ09ORklHIGFyZWEgKGFuZCBpdHMgc2l6ZSkuIFRoZQo+ID4gZGV2 aWNlIG1vZGVsIHdpbGwgbmVlZCB0byB1c2UgdGhpcyBpbmZyYXN0cnVjdHVyZSwgaW5mb3JtaW5n IFhlbiBvZgo+ID4gYW55IGNoYW5nZXMuIEFsc28sIGR1ZSB0byBNTUNPTkZJRyBuYXR1cmUgdGhl cmUgbWlnaHQgYmUgc29tZSBwaXRmYWxscwo+ID4gbGlrZSBhIG5lY2Vzc2l0eSB0byBzZW5kIG11 bHRpcGxlIElPUkVRX1RZUEVfUENJX0NPTkZJRyBpb3JlcXMgY2F1c2VkCj4gYnkKPiA+IGEgc2lu Z2xlIG1lbW9yeSByZWFkL3dyaXRlIG9wZXJhdGlvbi4KPiAKPiBUaGlzIHNlZW1zIGFsbCBmaW5l LiBXaHkgZG8geW91IGV4cGVjdCBNQ0ZHIGFjY2VzcyB0byBjcmVhdGUgbXVsdGlwbGUKPiBJT1JF UV9UWVBFX1BDSV9DT05GSUcgYnV0IG5vdCBtdWx0aXBsZSBJT1JFUV9UWVBFX0NPUFk/Cj4gCj4g PiBJbiBhbm90aGVyIGNhc2UsIHdlIHN0aWxsIGhhdmUgYW4gZW11bGF0ZWQgTU1JTyByYW5nZSwg YnV0IFhlbiB3aWxsIHNlbmQKPiA+IHBsYWluIElPUkVRX1RZUEVfQ09QWSByZXF1ZXN0cyB0byBR RU1VIHdoaWNoIGl0IGhhbmRsZXMgaXRzZWxmLgo+ID4gSW4gc3VjaCBjYXNlLCBhbGwgY29kZSB0 byB3b3JrIHdpdGggTU1DT05GSUcgYWNjZXNzZXMgaXMgYXZhaWxhYmxlIGZvcgo+ID4gcmV1c2Ug cmlnaHQgYXdheSAobW1jZmcgLT4gcGNpXyogdHJhbnNsYXRpb24gaW4gUUVNVSksIG5vIG5ldwo+ ID4gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBuZWl0aGVyIGluIFhlbiBvciBRRU1VLgo+IAo+IEFz IEkgdHJpZWQgdG8gYXJndW1lbnQgYWJvdmUsIEkgdGhpbmsgdGhpcyBpcyBub3QgY29ycmVjdCwg YnV0IEkgd291bGQKPiBhbHNvIGxpa2UgdGhhdCBQYXVsIGV4cHJlc3NlcyBoaXMgb3BpbmlvbiBh cyB0aGUgSU9SRVEgbWFpbnRhaW5lci4KClhlbiBzaG91bGQgaGFuZGxlIE1NQ09ORklHIGFjY2Vz c2VzLiBBbGwgUENJIGRldmljZSBlbXVsYXRvcnMgc2hvdWxkIHJlZ2lzdGVyIGZvciBQQ0kgY29u ZmlnIHNwYWNlIGJ5IFNCREYgYW5kIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggdGhlIFhlbiBpbnRl cmNlcHRzIHRoZSBjb25maWcgYWNjZXNzIGFuZCByb3V0ZXMgaXQgdG8gdGhlIGVtdWxhdG9yIHNo b3VsZCBiZSBub25lIG9mIHRoZSBlbXVsYXRvcnMgY29uY2Vybi4gUUVNVSBkb2VzIG5vdCBvd24g dGhlIFBDSSBidXMgdG9wb2xvZ3k7IFhlbiBkb2VzLCBhbmQgaXQncyBiZWVuIHRoaXMgd2F5IGZv ciBxdWl0ZSBzb21lIHRpbWUgKGV2ZW4gaWYgdGhlIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxl dGUpLgoKICBQYXVsCgo+IAo+ID4gPj4gIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcu aCAgIHwgICA0ICsrCj4gPiA+PiAgdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3BjaS5jICAgICAg fCAxMjcKPiA+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ID4gPj4g dG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3BjaV9yZWdzLmggfCAgIDIgKyAzIGZpbGVzIGNoYW5n ZWQsIDEwNgo+ID4gPj4gaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCj4gPiA+Pgo+ID4g Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaAo+ID4gPj4g Yi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmggaW5kZXggNmZkZTZiN2I2MC4uNTQ0 M2VjZDgwNAo+ID4gPj4gMTAwNjQ0IC0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25m aWcuaAo+ID4gPj4gKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oCj4gPiA+ PiBAQCAtNTMsMTAgKzUzLDE0IEBAIGV4dGVybiB1aW50OF90IGlvYXBpY192ZXJzaW9uOwo+ID4g Pj4gICNkZWZpbmUgUENJX0lTQV9ERVZGTiAgICAgICAweDA4ICAgIC8qIGRldiAxLCBmbiAwICov Cj4gPiA+PiAgI2RlZmluZSBQQ0lfSVNBX0lSUV9NQVNLICAgIDB4MGMyMFUgLyogSVNBIElSUXMg NSwxMCwxMSBhcmUgUENJCj4gPiA+PiBjb25uZWN0ZWQgKi8gI2RlZmluZSBQQ0lfSUNIOV9MUENf REVWRk4gIDB4ZjggICAgLyogZGV2IDMxLCBmbiAwICovCj4gPiA+PiArI2RlZmluZSBQQ0lfTUNI X0RFVkZOICAgICAgIDAgICAgICAgLyogYnVzIDAsIGRldiAwLCBmdW5jIDAgKi8KPiA+ID4+Cj4g PiA+PiAgLyogTU1JTyBob2xlOiBIYXJkY29kZWQgZGVmYXVsdHMsIHdoaWNoIGNhbiBiZSBkeW5h bWljYWxseQo+ID4gPj4gZXhwYW5kZWQuICovICNkZWZpbmUgUENJX01FTV9FTkQgICAgICAgICAw eGZjMDAwMDAwCj4gPiA+Pgo+ID4gPj4gKy8qIHBvc3NpYmxlIHZhbHVlcyBhcmU6IDY0LCAxMjgs IDI1NiAqLwo+ID4gPj4gKyNkZWZpbmUgUENJX01BWF9NQ0ZHX0JVU0VTICA2NAo+ID4gPgo+ID4g PldoYXQgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyB2YWx1ZT8gRG8gd2Uga25vdyB3aGljaCBkZXZp Y2VzIG5lZWQgRUNBTQo+ID4gPmFyZWFzPwo+ID4KPiA+IFllcywgWGVuIGlzIGxpbWl0ZWQgdG8g YnVzIDAgZW11bGF0aW9uIGN1cnJlbnRseSwgdGhlIGRlc2NyaXB0aW9uCj4gPiBzdGF0ZXMgIldo ZW4gbXVsdGlwbGUgUENJIGJ1c2VzIHN1cHBvcnQgZm9yIFhlbiB3aWxsIGJlIGltcGxlbWVudGVk LAo+ID4gUENJX01BWF9NQ0ZHX0JVU0VTIG1heSBiZSBjaGFuZ2VkIHRvIGNhbGN1bGF0aW9uIG9m IHRoZSBudW1iZXIgb2YKPiBidXNlcwo+ID4gYWNjb3JkaW5nIHRvIHJlc3VsdHMgb2YgdGhlIFBD SSBkZXZpY2VzIGVudW1lcmF0aW9uIi4KPiA+Cj4gPiBJIHRoaW5rIGl0IG1pZ2h0IGJlIGJldHRl ciB0byByZXBsYWNlICdzd2l0Y2ggKFBDSV9NQVhfTUNGR19CVVNFUyknCj4gPiB3aXRoIHRoZSBy ZWFsIGNvZGUgcmlnaHQgYXdheSwgaS5lLiBjaGFuZ2UgaXQgdG8KPiA+Cj4gPiAnc3dpdGNoICht YXhfYnVzX251bSwgYWxpZ25lZCB1cCB0byA2NC8xMjgvMjU2IGJvdW5kYXJ5KScsCj4gPiB3aGVy ZSBtYXhfYnVzX251bSBzaG91bGQgYmUgc2V0IGluIFBDSSBkZXZpY2UgZW51bWVyYXRpb24gY29k ZSBpbgo+ID4gcGNpX3NldHVwKCkuIEFzIHdlIGFyZSBsaW1pdGVkIHRvIGJ1cyAwIGN1cnJlbnRs eSwgd2UnbGwganVzdCBzZXQgaXQKPiA+IHRvIDAgZm9yIG5vdywgYmVmb3JlL2FmdGVyIHRoZSBQ Q0kgZGV2aWNlIGVudW1lcmF0aW9uIGxvb3AgKHdoaWNoIHNob3VsZAo+ID4gYmVjYW1lIG11bHRp LWJ1cyBjYXBhYmxlIGV2ZW50dWFsbHkpLgo+IAo+IEkgZ3Vlc3MgdGhpcyBpcyBhbGwgcHJldHR5 IG11Y2ggaGFyZGNvZGVkIHRvIGJ1cyAwIGluIHNldmVyYWwgcGxhY2VzLAo+IHNvIEknbSBub3Qg c3VyZSBpdCdzIHdvcnRoIHRvIGFkZCBQQ0lfTUFYX01DRkdfQlVTRVMuIElNTyBpZiBzb21ldGhp bmcKPiBsaWtlIHRoaXMgc2hvdWxkIGJlIGFkZGVkIGl0IHNob3VsZCBiZSBQQ0lfTUFYX0JVU0VT LCBhbmQgc2V2ZXJhbAo+IHBsYWNlcyBzaG91bGQgYmUgY2hhbmdlZCB0byBtYWtlIHVzZSBvZiBp dC4gT3IgaWRlYWxseSB3ZSBzaG91bGQgZmluZAo+IGEgd2F5IHRvIGRldGVjdCB0aGlzIGF0IHJ1 bnRpbWUsIHdpdGhvdXQgbmVlZGVkIGFueSBoYXJkY29kZWQgZGVmaW5lcy4KPiAKPiBJIHRoaW5r IGl0IHdvdWxkIGJlIGdvb2QgaWYgeW91IGNhbiBhZGQgYSBub3RlIGNvbW1lbnQgZGVzY3JpYmlu ZyB0aGUKPiBkaWZmZXJlbnQgTUNGRyBzaXplcyBzdXBwb3J0ZWQgYnkgdGhlIFEzNSBjaGlwc2V0 ICg2NC8xMjgvMjU2KS4KPiAKPiBUaGFua3MsIFJvZ2VyLgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==