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: Mon, 19 Mar 2018 15:58:02 +0000 Message-ID: <20180319155802.immvsgqttrs3yezg@MacBook-Pro-de-Roger.local> References: <62c7a3037bb9f5631542f635dc36ae3338c7bf47.1520867741.git.x1917x@gmail.com> 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.84_2) (envelope-from ) id 1exxbE-0001au-GW for xen-devel@lists.xenproject.org; Mon, 19 Mar 2018 16:25:28 +0000 Content-Disposition: inline In-Reply-To: <62c7a3037bb9f5631542f635dc36ae3338c7bf47.1520867741.git.x1917x@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Alexey Gerasimenko Cc: Wei Liu , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMTMsIDIwMTggYXQgMDQ6MzM6NTJBTSArMTAwMCwgQWxleGV5IEdlcmFzaW1l bmtvIHdyb3RlOgo+IE11Y2ggbGlrZSBub3JtYWwgUENJIEJBUnMgb3Igb3RoZXIgY2hpcHNldC1z cGVjaWZpYyBtZW1vcnktbWFwcGVkCj4gcmVzb3VyY2VzLCBNTUNPTkZJRyBhcmVhIG5lZWRzIHNw YWNlIGluIE1NSU8gaG9sZSwgc28gd2UgbXVzdCBhbGxvY2F0ZQo+IGl0IG1hbnVhbGx5Lgo+IAo+ IFRoZSBhY3R1YWwgTU1DT05GSUcgc2l6ZSBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIFBDSSBidXNl cyBhdmFpbGFibGUgd2hpY2gKPiBzaG91bGQgYmUgY292ZXJlZCBieSBFQ0FNLiBQb3NzaWJsZSBv cHRpb25zIGFyZSA2NE1CLCAxMjhNQiBhbmQgMjU2TUIuCj4gQXMgd2UgYXJlIGxpbWl0ZWQgdG8g dGhlIGJ1cyAwIGN1cnJlbnRseSwgdGh1cyB1c2luZyBsb3dlc3QgcG9zc2libGUKPiBzZXR0aW5n ICg2NE1CKSwgI2RlZmluZWQgdmlhIFBDSV9NQVhfTUNGR19CVVNFUyBpbiBodm1sb2FkZXIvY29u ZmlnLmguCj4gV2hlbiBtdWx0aXBsZSBQQ0kgYnVzZXMgc3VwcG9ydCBmb3IgWGVuIHdpbGwgYmUg aW1wbGVtZW50ZWQsCj4gUENJX01BWF9NQ0ZHX0JVU0VTIG1heSBiZSBjaGFuZ2VkIHRvIGNhbGN1 bGF0aW9uIG9mIHRoZSBudW1iZXIgb2YgYnVzZXMKPiBhY2NvcmRpbmcgdG8gcmVzdWx0cyBvZiB0 aGUgUENJIGRldmljZXMgZW51bWVyYXRpb24uCj4gCj4gVGhlIHdheSB0byBhbGxvY2F0ZSBNTUNP TkZJRyByYW5nZSBpbiBNTUlPIGhvbGUgaXMgc2ltaWxhciB0byBob3cgb3RoZXIKPiBQQ0kgQkFS cyBhcmUgYWxsb2NhdGVkLiBUaGUgcGF0Y2ggZXh0ZW5kcyAnYmFycycgc3RydWN0dXJlIHRvIG1h a2UKPiBpdCB1bml2ZXJzYWwgZm9yIGFueSBhcmJpdHJhcnkgQkFSIHR5cGUgLS0gZWl0aGVyIElP LCBNTUlPLCBST00gb3IKPiBhIGNoaXBzZXQtc3BlY2lmaWMgcmVzb3VyY2UuCgpJJ20gbm90IHN1 cmUgdGhpcyBpcyBmdWxseSBjb3JyZWN0LiBUaGUgSU9SRVEgaW50ZXJmYWNlIGNhbgpkaWZmZXJl bnRpYXRlIFBDSSBkZXZpY2VzIGFuZCBmb3J3YXJkIGNvbmZpZyBzcGFjZSBhY2Nlc3NlcyB0bwpk aWZmZXJlbnQgZW11bGF0b3JzIChzZWUgSU9SRVFfVFlQRV9QQ0lfQ09ORklHKS4gV2l0aCB0aGlz IGNoYW5nZSB5b3UKd2lsbCBmb3J3YXJkIGFsbCBNQ0ZHIGFjY2Vzc2VzIHRvIFFFTVUsIHdoaWNo IHdpbGwgbGlrZWx5IGJlIHdyb25nIGlmCnRoZXJlIGFyZSBtdWx0aXBsZSBQQ0ktZGV2aWNlIGVt dWxhdG9ycyBmb3IgdGhlIHNhbWUgZG9tYWluLgoKSWU6IEFGQUlDVCBYZW4gbmVlZHMgdG8ga25v dyBhYm91dCB0aGUgTUNGRyBlbXVsYXRpb24gYW5kIGRldGVjdAphY2Nlc3NlcyB0byBpdCBpbiBv cmRlciB0byBmb3J3YXJkIHRoZW0gdG8gdGhlIHJpZ2h0IGVtdWxhdG9ycy4KCkFkZGluZyBQYXVs IHdobyBrbm93cyBtb3JlIGFib3V0IGFsbCB0aGlzLgoKPiBPbmUgaW1wb3J0YW50IG5ldyBmaWVs ZCBpcyBhZGRyX21hc2ssIHdoaWNoIHRlbGxzIHdoaWNoIGJpdHMgb2YgdGhlIGJhc2UKPiBhZGRy ZXNzIGNhbiAoc2hvdWxkKSBiZSB3cml0dGVuLiBEaWZmZXJlbnQgYWRkcmVzcyB0eXBlcyAoUk9N LCBNTUlPIEJBUiwKPiBQQ0lFWEJBUikgd2lsbCBoYXZlIGRpZmZlcmVudCBhZGRyX21hc2sgdmFs dWVzLgo+IAo+IEZvciBldmVyeSBhc3NpZ25hYmxlIEJBUiByYW5nZSB3ZSBzdG9yZSBpdHMgc2l6 ZSwgUENJIGRldmljZSBCREYgKGRldmZuCj4gYWN0dWFsbHkpIHRvIHdoaWNoIGl0IGJlbG9uZ3Ms IEJBUiB0eXBlIChtZW0vaW8vbWVtNjQpIGFuZCBjb3JyZXNwb25kaW5nCj4gcmVnaXN0ZXIgb2Zm c2V0IGluIGRldmljZSBQQ0kgY29uZiBzcGFjZS4gVGhpcyB3YXkgd2UgY2FuIGluc2VydCBNTUNP TkZJRwo+IGVudHJ5IGludG8gYmFycyBhcnJheSBpbiB0aGUgc2FtZSBtYW5uZXIgbGlrZSBmb3Ig YW55IG90aGVyIEJBUnMuIEluIHRoaXMKPiBjYXNlLCB0aGUgZGV2Zm4gZmllbGQgd2lsbCBwb2lu dCB0byBNQ0ggUENJIGRldmljZSBhbmQgYmFyX3JlZyB3aWxsCj4gY29udGFpbiBQQ0lFWEJBUiBy ZWdpc3RlciBvZmZzZXQuIEl0IHdpbGwgYmUgYXNzaWduZWQgYSBzbG90IGluIE1NSU8gaG9sZQo+ IGxhdGVyIGluIGEgdmVyeSBzYW1lIHdheSBsaWtlIGZvciBwbGFpbiBQQ0kgQkFScywgd2l0aCBy ZXNwZWN0IHRvIGl0cyBzaXplCj4gYWxpZ25tZW50Lgo+IAo+IEFsc28sIHRvIHJlZHVjZSBjb2Rl IGNvbXBsZXhpdHksIGFsbCBsb25nIG1lbS9tZW02NCBCQVIgZmxhZ3MgY2hlY2tzIGFyZQo+IHJl cGxhY2VkIGJ5IHNpbXBsZSBiYXJzW2ldIGZpZWxkIHByb2JpbmcsIGVnLjoKPiAtICAgICAgICBp ZiAoIChiYXJfcmVnID09IFBDSV9ST01fQUREUkVTUykgfHwKPiAtICAgICAgICAgICAgICgoYmFy X2RhdGEgJiBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFKSA9PQo+IC0gICAgICAgICAgICAgIFBDSV9C QVNFX0FERFJFU1NfU1BBQ0VfTUVNT1JZKSApCj4gKyAgICAgICAgaWYgKCBiYXJzW2ldLmlzX21l bSApCgpUaGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIGNoYW5nZSBJTU8uCgo+IAo+IFNpZ25lZC1v ZmYtYnk6IEFsZXhleSBHZXJhc2ltZW5rbyA8eDE5MTd4QGdtYWlsLmNvbT4KPiAtLS0KPiAgdG9v bHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oICAgfCAgIDQgKysKPiAgdG9vbHMvZmlybXdh cmUvaHZtbG9hZGVyL3BjaS5jICAgICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCj4gIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9wY2lfcmVncy5oIHwgICAyICsK PiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaCBiL3Rvb2xz L2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaAo+IGluZGV4IDZmZGU2YjdiNjAuLjU0NDNlY2Q4 MDQgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oCj4gKysr IGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oCj4gQEAgLTUzLDEwICs1MywxNCBA QCBleHRlcm4gdWludDhfdCBpb2FwaWNfdmVyc2lvbjsKPiAgI2RlZmluZSBQQ0lfSVNBX0RFVkZO ICAgICAgIDB4MDggICAgLyogZGV2IDEsIGZuIDAgKi8KPiAgI2RlZmluZSBQQ0lfSVNBX0lSUV9N QVNLICAgIDB4MGMyMFUgLyogSVNBIElSUXMgNSwxMCwxMSBhcmUgUENJIGNvbm5lY3RlZCAqLwo+ ICAjZGVmaW5lIFBDSV9JQ0g5X0xQQ19ERVZGTiAgMHhmOCAgICAvKiBkZXYgMzEsIGZuIDAgKi8K PiArI2RlZmluZSBQQ0lfTUNIX0RFVkZOICAgICAgIDAgICAgICAgLyogYnVzIDAsIGRldiAwLCBm dW5jIDAgKi8KPiAgCj4gIC8qIE1NSU8gaG9sZTogSGFyZGNvZGVkIGRlZmF1bHRzLCB3aGljaCBj YW4gYmUgZHluYW1pY2FsbHkgZXhwYW5kZWQuICovCj4gICNkZWZpbmUgUENJX01FTV9FTkQgICAg ICAgICAweGZjMDAwMDAwCj4gIAo+ICsvKiBwb3NzaWJsZSB2YWx1ZXMgYXJlOiA2NCwgMTI4LCAy NTYgKi8KPiArI2RlZmluZSBQQ0lfTUFYX01DRkdfQlVTRVMgIDY0CgpXaGF0IHRoZSByZWFzb25p bmcgZm9yIHRoaXMgdmFsdWU/IERvIHdlIGtub3cgd2hpY2ggZGV2aWNlcyBuZWVkIEVDQU0KYXJl YXM/Cgo+ICsKPiAgI2RlZmluZSBBQ1BJX1RJU19IRFJfQUREUkVTUyAweEZFRDQwRjAwVUwKPiAg Cj4gIGV4dGVybiB1bnNpZ25lZCBsb25nIHBjaV9tZW1fc3RhcnQsIHBjaV9tZW1fZW5kOwo+IGRp ZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvcGNpLmMgYi90b29scy9maXJtd2Fy ZS9odm1sb2FkZXIvcGNpLmMKPiBpbmRleCAwMzNiZDIwOTkyLi42ZGUxMjRiYmQ1IDEwMDY0NAo+ IC0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9wY2kuYwo+ICsrKyBiL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci9wY2kuYwo+IEBAIC0xNTgsOSArMTU4LDEwIEBAIHN0YXRpYyB2b2lkIGNs YXNzX3NwZWNpZmljX3BjaV9kZXZpY2Vfc2V0dXAodWludDE2X3QgdmVuZG9yX2lkLAo+ICAKPiAg dm9pZCBwY2lfc2V0dXAodm9pZCkKPiAgewo+IC0gICAgdWludDhfdCBpc182NGJhciwgdXNpbmdf NjRiYXIsIGJhcjY0X3JlbG9jYXRlID0gMDsKPiArICAgIHVpbnQ4X3QgaXNfNjRiYXIsIHVzaW5n XzY0YmFyLCBiYXI2NF9yZWxvY2F0ZSA9IDAsIGlzX21lbTsKPiAgICAgIHVpbnQzMl90IGRldmZu LCBiYXJfcmVnLCBjbWQsIGJhcl9kYXRhLCBiYXJfZGF0YV91cHBlcjsKPiAgICAgIHVpbnQ2NF90 IGJhc2UsIGJhcl9zeiwgYmFyX3N6X3VwcGVyLCBtbWlvX3RvdGFsID0gMDsKPiArICAgIHVpbnQ2 NF90IGFkZHJfbWFzazsKPiAgICAgIHVpbnQxNl90IHZlbmRvcl9pZCwgZGV2aWNlX2lkOwo+ICAg ICAgdW5zaWduZWQgaW50IGJhciwgcGluLCBsaW5rLCBpc2FfaXJxOwo+ICAgICAgaW50IGlzX3J1 bm5pbmdfb25fcTM1ID0gMDsKPiBAQCAtMTcyLDEwICsxNzMsMTQgQEAgdm9pZCBwY2lfc2V0dXAo dm9pZCkKPiAgCj4gICAgICAvKiBDcmVhdGUgYSBsaXN0IG9mIGRldmljZSBCQVJzIGluIGRlc2Nl bmRpbmcgb3JkZXIgb2Ygc2l6ZS4gKi8KPiAgICAgIHN0cnVjdCBiYXJzIHsKPiAtICAgICAgICB1 aW50MzJfdCBpc182NGJhcjsKPiAgICAgICAgICB1aW50MzJfdCBkZXZmbjsKPiAgICAgICAgICB1 aW50MzJfdCBiYXJfcmVnOwo+ICAgICAgICAgIHVpbnQ2NF90IGJhcl9zejsKPiArICAgICAgICB1 aW50NjRfdCBhZGRyX21hc2s7IC8qIHdoaWNoIGJpdHMgb2YgdGhlIGJhc2UgYWRkcmVzcyBjYW4g YmUgd3JpdHRlbiAqLwo+ICsgICAgICAgIHVpbnQzMl90IGJhcl9kYXRhOyAgLyogaW5pdGlhbCB2 YWx1ZSAtIEJBUiBmbGFncyBoZXJlICovCj4gKyAgICAgICAgdWludDhfdCAgaXNfNjRiYXI7Cj4g KyAgICAgICAgdWludDhfdCAgaXNfbWVtOwo+ICsgICAgICAgIHVpbnQ4X3QgIHBhZGRpbmdbMl07 CgpXaHkgYXJlIHlvdSBtYW51YWxseSBhZGRpbmcgYSBwYWRkaW5nIGhlcmU/IEFsc28gd2h5IG5v dCBtYWtlIHRoaXMKZmllbGRzIGJvb2w/Cgo+ICAgICAgfSAqYmFycyA9IChzdHJ1Y3QgYmFycyAq KXNjcmF0Y2hfc3RhcnQ7Cj4gICAgICB1bnNpZ25lZCBpbnQgaSwgbnJfYmFycyA9IDA7Cj4gICAg ICB1aW50NjRfdCBtbWlvX2hvbGVfc2l6ZSA9IDA7Cj4gQEAgLTI1OSwxMyArMjY0LDIxIEBAIHZv aWQgcGNpX3NldHVwKHZvaWQpCj4gICAgICAgICAgICAgICAgICBiYXJfcmVnID0gUENJX1JPTV9B RERSRVNTOwo+ICAKPiAgICAgICAgICAgICAgYmFyX2RhdGEgPSBwY2lfcmVhZGwoZGV2Zm4sIGJh cl9yZWcpOwo+ICsKPiArICAgICAgICAgICAgaXNfbWVtID0gISEoKChiYXJfZGF0YSAmIFBDSV9C QVNFX0FERFJFU1NfU1BBQ0UpID09Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0Vf QUREUkVTU19TUEFDRV9NRU1PUlkpIHx8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgKGJhcl9y ZWcgPT0gUENJX1JPTV9BRERSRVNTKSk7Cj4gKwo+ICAgICAgICAgICAgICBpZiAoIGJhcl9yZWcg IT0gUENJX1JPTV9BRERSRVNTICkKPiAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAg aXNfNjRiYXIgPSAhISgoYmFyX2RhdGEgJiAoUENJX0JBU0VfQUREUkVTU19TUEFDRSB8Cj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV9NQVNL KSkgPT0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUENJX0JBU0VfQUREUkVTU19T UEFDRV9NRU1PUlkgfAo+ICsgICAgICAgICAgICAgICAgaXNfNjRiYXIgPSAhIShpc19tZW0gJiYK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGJhcl9kYXRhICYgUENJX0JBU0VfQURE UkVTU19NRU1fVFlQRV9NQVNLKSA9PQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD SV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQpKTsKPiArCj4gICAgICAgICAgICAgICAgICBwY2lf d3JpdGVsKGRldmZuLCBiYXJfcmVnLCB+MCk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgYWRkcl9t YXNrID0gaXNfbWVtID8gUENJX0JBU0VfQUREUkVTU19NRU1fTUFTSwo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogUENJX0JBU0VfQUREUkVTU19JT19NQVNLOwo+ICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgewo+IEBAIC0yNzMs MjggKzI4NiwzNSBAQCB2b2lkIHBjaV9zZXR1cCh2b2lkKQo+ICAgICAgICAgICAgICAgICAgcGNp X3dyaXRlbChkZXZmbiwgYmFyX3JlZywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJh cl9kYXRhIHwgUENJX1JPTV9BRERSRVNTX01BU0spICYKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgflBDSV9ST01fQUREUkVTU19FTkFCTEUpOwo+ICsKPiArICAgICAgICAgICAgICAgIGFk ZHJfbWFzayA9IFBDSV9ST01fQUREUkVTU19NQVNLOwo+ICAgICAgICAgICAgICB9Cj4gKwo+ICAg ICAgICAgICAgICBiYXJfc3ogPSBwY2lfcmVhZGwoZGV2Zm4sIGJhcl9yZWcpOwo+ICAgICAgICAg ICAgICBwY2lfd3JpdGVsKGRldmZuLCBiYXJfcmVnLCBiYXJfZGF0YSk7Cj4gIAo+ICAgICAgICAg ICAgICBpZiAoIGJhcl9yZWcgIT0gUENJX1JPTV9BRERSRVNTICkKPiAtICAgICAgICAgICAgICAg IGJhcl9zeiAmPSAoKChiYXJfZGF0YSAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UpID09Cj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFX01FTU9SWSkg Pwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNL IDoKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBDSV9CQVNFX0FERFJFU1NfSU9fTUFT SyAmIDB4ZmZmZikpOwo+ICsgICAgICAgICAgICAgICAgYmFyX3N6ICY9IGlzX21lbSA/IFBDSV9C QVNFX0FERFJFU1NfTUVNX01BU0sgOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChQQ0lfQkFTRV9BRERSRVNTX0lPX01BU0sgJiAweGZmZmYpOwo+ICAgICAgICAgICAgICBl bHNlCj4gICAgICAgICAgICAgICAgICBiYXJfc3ogJj0gUENJX1JPTV9BRERSRVNTX01BU0s7Cj4g LSAgICAgICAgICAgIGlmIChpc182NGJhcikgewo+ICsKPiArICAgICAgICAgICAgaWYgKGlzXzY0 YmFyKQoKQ29kaW5nIHN0eWxlIChzcGFjZXMgYmV0d2VlbiBwYXJlbnRoZXNlcykuCgo+ICsgICAg ICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICBiYXJfZGF0YV91cHBlciA9IHBjaV9yZWFkbChk ZXZmbiwgYmFyX3JlZyArIDQpOwo+ICAgICAgICAgICAgICAgICAgcGNpX3dyaXRlbChkZXZmbiwg YmFyX3JlZyArIDQsIH4wKTsKPiAgICAgICAgICAgICAgICAgIGJhcl9zel91cHBlciA9IHBjaV9y ZWFkbChkZXZmbiwgYmFyX3JlZyArIDQpOwo+ICAgICAgICAgICAgICAgICAgcGNpX3dyaXRlbChk ZXZmbiwgYmFyX3JlZyArIDQsIGJhcl9kYXRhX3VwcGVyKTsKPiAgICAgICAgICAgICAgICAgIGJh cl9zeiA9IChiYXJfc3pfdXBwZXIgPDwgMzIpIHwgYmFyX3N6Owo+ICAgICAgICAgICAgICB9Cj4g Kwo+ICAgICAgICAgICAgICBiYXJfc3ogJj0gfihiYXJfc3ogLSAxKTsKPiAgICAgICAgICAgICAg aWYgKCBiYXJfc3ogPT0gMCApCj4gICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAgCj4gKyAg ICAgICAgICAgIC8qIGxlYXZlIG9ubHkgbWVtdHlwZS9lbmFibGUgYml0cyBldGMgKi8KPiArICAg ICAgICAgICAgYmFyX2RhdGEgJj0gfmFkZHJfbWFzazsKPiArCj4gICAgICAgICAgICAgIGZvciAo IGkgPSAwOyBpIDwgbnJfYmFyczsgaSsrICkKPiAgICAgICAgICAgICAgICAgIGlmICggYmFyc1tp XS5iYXJfc3ogPCBiYXJfc3ogKQo+ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IEBAIC0z MDIsMTQgKzMyMiwxNSBAQCB2b2lkIHBjaV9zZXR1cCh2b2lkKQo+ICAgICAgICAgICAgICBpZiAo IGkgIT0gbnJfYmFycyApCj4gICAgICAgICAgICAgICAgICBtZW1tb3ZlKCZiYXJzW2krMV0sICZi YXJzW2ldLCAobnJfYmFycy1pKSAqIHNpemVvZigqYmFycykpOwo+ICAKPiAtICAgICAgICAgICAg YmFyc1tpXS5pc182NGJhciA9IGlzXzY0YmFyOwo+IC0gICAgICAgICAgICBiYXJzW2ldLmRldmZu ICAgPSBkZXZmbjsKPiAtICAgICAgICAgICAgYmFyc1tpXS5iYXJfcmVnID0gYmFyX3JlZzsKPiAt ICAgICAgICAgICAgYmFyc1tpXS5iYXJfc3ogID0gYmFyX3N6Owo+ICsgICAgICAgICAgICBiYXJz W2ldLmlzXzY0YmFyICA9IGlzXzY0YmFyOwo+ICsgICAgICAgICAgICBiYXJzW2ldLmlzX21lbSAg ICA9IGlzX21lbTsKPiArICAgICAgICAgICAgYmFyc1tpXS5kZXZmbiAgICAgPSBkZXZmbjsKPiAr ICAgICAgICAgICAgYmFyc1tpXS5iYXJfcmVnICAgPSBiYXJfcmVnOwo+ICsgICAgICAgICAgICBi YXJzW2ldLmJhcl9zeiAgICA9IGJhcl9zejsKPiArICAgICAgICAgICAgYmFyc1tpXS5hZGRyX21h c2sgPSBhZGRyX21hc2s7Cj4gKyAgICAgICAgICAgIGJhcnNbaV0uYmFyX2RhdGEgID0gYmFyX2Rh dGE7Cj4gIAo+IC0gICAgICAgICAgICBpZiAoICgoYmFyX2RhdGEgJiBQQ0lfQkFTRV9BRERSRVNT X1NQQUNFKSA9PQo+IC0gICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFX01F TU9SWSkgfHwKPiAtICAgICAgICAgICAgICAgICAoYmFyX3JlZyA9PSBQQ0lfUk9NX0FERFJFU1Mp ICkKPiArICAgICAgICAgICAgaWYgKCBpc19tZW0gKQo+ICAgICAgICAgICAgICAgICAgbW1pb190 b3RhbCArPSBiYXJfc3o7Cj4gIAo+ICAgICAgICAgICAgICBucl9iYXJzKys7Cj4gQEAgLTMzOSw2 ICszNjAsNjMgQEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKPiAgICAgICAgICBwY2lfd3JpdGV3KGRl dmZuLCBQQ0lfQ09NTUFORCwgY21kKTsKPiAgICAgIH0KPiAgCj4gKyAgICAvKgo+ICsgICAgICog IENhbGN1bGF0ZSBNTUNPTkZJRyBhcmVhIHNpemUgYW5kIHNxdWVlemUgaXQgaW50byB0aGUgYmFy cyBhcnJheQo+ICsgICAgICogIGZvciBhc3NpZ25pbmcgYSBzbG90IGluIHRoZSBNTUlPIGhvbGUK PiArICAgICAqLwo+ICsgICAgaWYgKGlzX3J1bm5pbmdfb25fcTM1KQo+ICsgICAgewo+ICsgICAg ICAgIC8qIGRpc2FibGUgUENJRVhCQVIgZGVjb2RpbmcgZm9yIG5vdyAqLwo+ICsgICAgICAgIHBj aV93cml0ZWwoUENJX01DSF9ERVZGTiwgUENJX01DSF9QQ0lFWEJBUiwgMCk7Cj4gKyAgICAgICAg cGNpX3dyaXRlbChQQ0lfTUNIX0RFVkZOLCBQQ0lfTUNIX1BDSUVYQkFSICsgNCwgMCk7CgpJJ20g YWZyYWlkIEkgd2lsbCBuZWVkIHNvbWUgY29udGV4dCBoZXJlLCB3aGVyZSBpcyB0aGUgZGVzY3Jp cHRpb24gZm9yCnRoZSBjb25maWcgc3BhY2Ugb2YgZGV2IDAgZm4gMD8gSSBkb24ndCBzZWVtIHRv IGJlIGFibGUgdG8gZmluZCBpdCBpbgp0aGUgaWNoOSBzcGVjLgoKPiArCj4gKyNkZWZpbmUgUENJ RVhCQVJfNjRfQlVTRVMgICAgKDIgPDwgMSkKPiArI2RlZmluZSBQQ0lFWEJBUl8xMjhfQlVTRVMg ICAoMSA8PCAxKQo+ICsjZGVmaW5lIFBDSUVYQkFSXzI1Nl9CVVNFUyAgICgwIDw8IDEpCj4gKyNk ZWZpbmUgUENJRVhCQVJfRU5BQkxFICAgICAgKDEgPDwgMCkKCldoeSB0aG9zZSBzdHJhbmdlIGRl ZmluaXRpb25zPyAoMCA8PCAxKT8gKDIgPDwgMSkgaW5zdGVhZCBvZiAoMSA8PCAyKT8KCj4gKwo+ ICsgICAgICAgIHN3aXRjaCAoUENJX01BWF9NQ0ZHX0JVU0VTKQo+ICsgICAgICAgIHsKPiArICAg ICAgICBjYXNlIDY0Ogo+ICsgICAgICAgICAgICBiYXJfZGF0YSA9IFBDSUVYQkFSXzY0X0JVU0VT IHwgUENJRVhCQVJfRU5BQkxFOwo+ICsgICAgICAgICAgICBiYXJfc3ogPSBNQig2NCk7Cj4gKyAg ICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICBjYXNlIDEyODoKPiArICAgICAgICAgICAg YmFyX2RhdGEgPSBQQ0lFWEJBUl8xMjhfQlVTRVMgfCBQQ0lFWEJBUl9FTkFCTEU7Cj4gKyAgICAg ICAgICAgIGJhcl9zeiA9IE1CKDEyOCk7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAg ICAgICBjYXNlIDI1NjoKPiArICAgICAgICAgICAgYmFyX2RhdGEgPSBQQ0lFWEJBUl8yNTZfQlVT RVMgfCBQQ0lFWEJBUl9FTkFCTEU7Cj4gKyAgICAgICAgICAgIGJhcl9zeiA9IE1CKDI1Nik7Cj4g KyAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAg ICAvKiB1bnN1cHBvcnRlZCBudW1iZXIgb2YgYnVzZXMgc3BlY2lmaWVkICovCj4gKyAgICAgICAg ICAgIEJVRygpOwo+ICsgICAgICAgIH0KCkkgZG9uJ3Qgc2VlIGhvdyBQQ0lfTUFYX01DRkdfQlVT RVMgc2hvdWxkIGJlIHVzZWQuIElzIHRoZSB1c2VyCnN1cHBvc2VkIHRvIGtub3cgd2hhdCB2YWx1 ZSB0byB1c2UgYXQgY29tcGlsZSB0aW1lPyBXaGF0IGFib3V0IGRpc3RybwpwYWNrYWdlcnM/CgpU aGFua3MsIFJvZ2VyLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==