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, 20 Mar 2018 05:49:22 +1000 Message-ID: <20180320054922.00005669@gmail.com> References: <62c7a3037bb9f5631542f635dc36ae3338c7bf47.1520867741.git.x1917x@gmail.com> <20180319155802.immvsgqttrs3yezg@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.84_2) (envelope-from ) id 1ey0mk-0002JO-9o for xen-devel@lists.xenproject.org; Mon, 19 Mar 2018 19:49:34 +0000 Received: by mail-lf0-x231.google.com with SMTP id y2-v6so25143842lfc.5 for ; Mon, 19 Mar 2018 12:49:32 -0700 (PDT) In-Reply-To: <20180319155802.immvsgqttrs3yezg@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: Wei Liu , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAxOSBNYXIgMjAxOCAxNTo1ODowMiArMDAwMApSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cgo+T24gVHVlLCBNYXIgMTMsIDIwMTggYXQgMDQ6MzM6 NTJBTSArMTAwMCwgQWxleGV5IEdlcmFzaW1lbmtvIHdyb3RlOgo+PiBNdWNoIGxpa2Ugbm9ybWFs IFBDSSBCQVJzIG9yIG90aGVyIGNoaXBzZXQtc3BlY2lmaWMgbWVtb3J5LW1hcHBlZAo+PiByZXNv dXJjZXMsIE1NQ09ORklHIGFyZWEgbmVlZHMgc3BhY2UgaW4gTU1JTyBob2xlLCBzbyB3ZSBtdXN0 Cj4+IGFsbG9jYXRlIGl0IG1hbnVhbGx5Lgo+PiAKPj4gVGhlIGFjdHVhbCBNTUNPTkZJRyBzaXpl IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgUENJIGJ1c2VzIGF2YWlsYWJsZQo+PiB3aGljaCBzaG91 bGQgYmUgY292ZXJlZCBieSBFQ0FNLiBQb3NzaWJsZSBvcHRpb25zIGFyZSA2NE1CLCAxMjhNQgo+ PiBhbmQgMjU2TUIuIEFzIHdlIGFyZSBsaW1pdGVkIHRvIHRoZSBidXMgMCBjdXJyZW50bHksIHRo dXMgdXNpbmcKPj4gbG93ZXN0IHBvc3NpYmxlIHNldHRpbmcgKDY0TUIpLCAjZGVmaW5lZCB2aWEg UENJX01BWF9NQ0ZHX0JVU0VTIGluCj4+IGh2bWxvYWRlci9jb25maWcuaC4gV2hlbiBtdWx0aXBs ZSBQQ0kgYnVzZXMgc3VwcG9ydCBmb3IgWGVuIHdpbGwgYmUKPj4gaW1wbGVtZW50ZWQsIFBDSV9N QVhfTUNGR19CVVNFUyBtYXkgYmUgY2hhbmdlZCB0byBjYWxjdWxhdGlvbiBvZiB0aGUKPj4gbnVt YmVyIG9mIGJ1c2VzIGFjY29yZGluZyB0byByZXN1bHRzIG9mIHRoZSBQQ0kgZGV2aWNlcyBlbnVt ZXJhdGlvbi4KPj4gCj4+IFRoZSB3YXkgdG8gYWxsb2NhdGUgTU1DT05GSUcgcmFuZ2UgaW4gTU1J TyBob2xlIGlzIHNpbWlsYXIgdG8gaG93Cj4+IG90aGVyIFBDSSBCQVJzIGFyZSBhbGxvY2F0ZWQu IFRoZSBwYXRjaCBleHRlbmRzICdiYXJzJyBzdHJ1Y3R1cmUgdG8KPj4gbWFrZSBpdCB1bml2ZXJz YWwgZm9yIGFueSBhcmJpdHJhcnkgQkFSIHR5cGUgLS0gZWl0aGVyIElPLCBNTUlPLCBST00KPj4g b3IgYSBjaGlwc2V0LXNwZWNpZmljIHJlc291cmNlLiAgCj4KPkknbSBub3Qgc3VyZSB0aGlzIGlz IGZ1bGx5IGNvcnJlY3QuIFRoZSBJT1JFUSBpbnRlcmZhY2UgY2FuCj5kaWZmZXJlbnRpYXRlIFBD SSBkZXZpY2VzIGFuZCBmb3J3YXJkIGNvbmZpZyBzcGFjZSBhY2Nlc3NlcyB0bwo+ZGlmZmVyZW50 IGVtdWxhdG9ycyAoc2VlIElPUkVRX1RZUEVfUENJX0NPTkZJRykuIFdpdGggdGhpcyBjaGFuZ2Ug eW91Cj53aWxsIGZvcndhcmQgYWxsIE1DRkcgYWNjZXNzZXMgdG8gUUVNVSwgd2hpY2ggd2lsbCBs aWtlbHkgYmUgd3JvbmcgaWYKPnRoZXJlIGFyZSBtdWx0aXBsZSBQQ0ktZGV2aWNlIGVtdWxhdG9y cyBmb3IgdGhlIHNhbWUgZG9tYWluLgo+Cj5JZTogQUZBSUNUIFhlbiBuZWVkcyB0byBrbm93IGFi b3V0IHRoZSBNQ0ZHIGVtdWxhdGlvbiBhbmQgZGV0ZWN0Cj5hY2Nlc3NlcyB0byBpdCBpbiBvcmRl ciB0byBmb3J3YXJkIHRoZW0gdG8gdGhlIHJpZ2h0IGVtdWxhdG9ycy4KPgo+QWRkaW5nIFBhdWwg d2hvIGtub3dzIG1vcmUgYWJvdXQgYWxsIHRoaXMuCgpJbiB3aGljaCB1c2UgY2FzZXMgbXVsdGlw bGUgUENJLWRldmljZSBlbXVsYXRvcnMgYXJlIHVzZWQgZm9yIGEgc2luZ2xlCkhWTSBkb21haW4/ IElzIGl0IGEgcHJvcHJpZXRhcnkgc2V0dXA/CgpJIGFzc3VtZSBpdCBpcyBzb21laG93IHJlbGF0 ZWQgdG8gdGhpcyBjb2RlIGluIHhlbi1odm0uYzoKICAgICAgICAgICAgICAgIC8qIEZha2UgYSB3 cml0ZSB0byBwb3J0IDB4Q0Y4IHNvIHRoYXQKICAgICAgICAgICAgICAgICAqIHRoZSBjb25maWcg c3BhY2UgYWNjZXNzIHdpbGwgdGFyZ2V0IHRoZQogICAgICAgICAgICAgICAgICogY29ycmVjdCBk ZXZpY2UgbW9kZWwuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIHZhbCA9ICgx dSA8PCAzMSkgfCAoKHJlcS0+YWRkciAmIDB4MGYwMCkgPC4uLj4KICAgICAgICAgICAgICAgIGRv X291dHAoMHhjZjgsIDQsIHZhbCk7CmlmIHllcywgc2ltaWxhciB0aGluZyBjYW4gYmUgbWFkZSBm b3IgSU9SRVFfVFlQRV9DT1BZIGFjY2Vzc2VzIHRvCnRoZSBlbXVsYXRlZCBNTUNPTkZJRyBpZiBu ZWVkZWQuCgpJbiBIVk0rUUVNVSBjYXNlIHdlIGFyZSBub3QgbGltaXRlZCB0byBtZXJlbHkgcGFz c2VkIHRocm91Z2ggZGV2aWNlcywKbW9zdCBvZiB0aGUgb2JzZXJ2YWJsZSBQQ0kgY29uZmlnIHNw YWNlIGRldmljZXMgYmVsb25nIHRvIG9uZSBwYXJ0aWN1bGFyClFFTVUgaW5zdGFuY2UuIFRoaXMg ZGljdGF0ZXMgdGhlIG92ZXJhbGwgZW11bGF0ZWQgTU1DT05GSUcgbGF5b3V0CmZvciBhIGRvbWFp biB3aGljaCBzaG91bGQgYmUgaW4gc3luYyB0byB3aGF0IFFFTVUgZW11bGF0ZXMgdmlhIENGOGgv Q0ZDaAphY2Nlc3Nlcy4uLiBhbmQgYmV0d2VlbiBtdWx0aXBsZSBkZXZpY2UgbW9kZWwgaW5zdGFu Y2VzIChpZiB0aGVyZSBhcmUKYW55LCBzdGlsbCBub3Qgc3VyZSB3aGF0IG11bHRpcGxlIFBDSS1k ZXZpY2UgZW11bGF0b3JzIHlvdSBtZW50aW9uZWQKcmVhbGx5IGFyZSkuCgpCYXNpY2FsbHksIHdl IGhhdmUgYW4gZW11bGF0ZWQgTU1DT05GSUcgYXJlYSBvZiA2NC8xMjgvMjU2TUIgc2l6ZSBpbgp0 aGUgTU1JTyBob2xlIG9mIHRoZSBndWVzdCBIVk0gZG9tYWluLiAoQlRXLCB0aGlzIGFyZWEgaXRz ZWxmIGNhbiBiZQpjb25zaWRlcmVkIGEgZmVhdHVyZSBvZiB0aGUgY2hpcHNldCB0aGUgZGV2aWNl IG1vZGVsIGVtdWxhdGVzLikKSXQgY2FuIGJlIHJlbG9jYXRlZCB0byBzb21lIG90aGVyIHBsYWNl IGluIE1NSU8gaG9sZSwgdGhpcyBtZWFucyB0aGF0ClFFTVUgd2lsbCB0cmFwIGFjY2Vzc2VzIHRv IHRoZSBzcGVjaWZpYyB0byB0aGUgZW11bGF0ZWQgY2hpcHNldApQQ0lFWEJBUiByZWdpc3RlciBh bmQgd2lsbCBpc3N1ZSBzYW1lIE1NSU8gdW5tYXAvbWFwIGNhbGxzIGFzIGZvcgphbnkgbm9ybWFs IGVtdWxhdGVkIE1NSU8gcmFuZ2UuCgpPbiB0aGUgb3RoZXIgaGFuZCwgaXQgd29uJ3QgYmUgZWFz eSB0byBwcm92aWRlIGVtdWxhdGVkIE1NQ09ORklHCnRyYW5zbGF0aW9uIGludG8gSU9SRVFfVFlQ RV9QQ0lfQ09ORklHIGZyb20gWGVuIHNpZGUuIFhlbiBzaG91bGQga25vdwpjdXJyZW50IGVtdWxh dGVkIE1NQ09ORklHIGFyZWEgcG9zaXRpb24gYW5kIHNpemUgaW4gb3JkZXIgdG8gdHJhbnNsYXRl CihvciBub3QpIGFjY2Vzc2VzIHRvIGl0IGludG8gY29ycmVzcG9uZGluZyBCREYvcmVnIHBhaXIg KCt3aGV0aGVyIHRoYXQKYXJlYSBpcyBlbmFibGVkIGZvciBkZWNvZGluZyBvciBub3QpLiBUaGlz IHdpbGwgbGlrZWx5IHJlcXVpcmUgdG8KaW50cm9kdWNlIG5ldyBoeXBlcmNhbGwocykuCgpUaGUg cXVlc3Rpb24gaXMgaWYgdGhlcmUgd2lsbCBiZSBhbnkgZGlmZmVyZW5jZSBvciBiZW5lZml0IGF0 IGFsbC4KCkl0J3MgYmFzaWNhbGx5IHRoZSBzYW1lIGVtdWxhdGVkIE1NSU8gcmFuZ2UgYWZ0ZXIg YWxsLCBidXQgaW4gb25lIGNhc2UKd2UgdHJhcCBhY2Nlc3NlcyB0byBpdCBpbiBYZW4gYW5kIHRy YW5zbGF0ZSB0aGVtIGludG8KSU9SRVFfVFlQRV9QQ0lfQ09ORklHIHJlcXVlc3RzLgpXZSBoYXZl IHRvIHByb3ZpZGUgc29tZSBpbmZyYXN0cnVjdHVyZSB0byBsZXQgWGVuIGtub3cgd2hlcmUgdGhl IGRldmljZSAKbW9kZWwvZ3Vlc3QgZXhwZWN0cyB0byB1c2UgdGhlIE1NQ09ORklHIGFyZWEgKGFu ZCBpdHMgc2l6ZSkuIFRoZQpkZXZpY2UgbW9kZWwgd2lsbCBuZWVkIHRvIHVzZSB0aGlzIGluZnJh c3RydWN0dXJlLCBpbmZvcm1pbmcgWGVuIG9mCmFueSBjaGFuZ2VzLiBBbHNvLCBkdWUgdG8gTU1D T05GSUcgbmF0dXJlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgcGl0ZmFsbHMKbGlrZSBhIG5lY2Vzc2l0 eSB0byBzZW5kIG11bHRpcGxlIElPUkVRX1RZUEVfUENJX0NPTkZJRyBpb3JlcXMgY2F1c2VkIGJ5 CmEgc2luZ2xlIG1lbW9yeSByZWFkL3dyaXRlIG9wZXJhdGlvbi4KCkluIGFub3RoZXIgY2FzZSwg d2Ugc3RpbGwgaGF2ZSBhbiBlbXVsYXRlZCBNTUlPIHJhbmdlLCBidXQgWGVuIHdpbGwgc2VuZApw bGFpbiBJT1JFUV9UWVBFX0NPUFkgcmVxdWVzdHMgdG8gUUVNVSB3aGljaCBpdCBoYW5kbGVzIGl0 c2VsZi4KSW4gc3VjaCBjYXNlLCBhbGwgY29kZSB0byB3b3JrIHdpdGggTU1DT05GSUcgYWNjZXNz ZXMgaXMgYXZhaWxhYmxlIGZvcgpyZXVzZSByaWdodCBhd2F5IChtbWNmZyAtPiBwY2lfKiB0cmFu c2xhdGlvbiBpbiBRRU1VKSwgbm8gbmV3CmZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgbmVpdGhlciBp biBYZW4gb3IgUUVNVS4KCj4+IE9uZSBpbXBvcnRhbnQgbmV3IGZpZWxkIGlzIGFkZHJfbWFzaywg d2hpY2ggdGVsbHMgd2hpY2ggYml0cyBvZiB0aGUKPj4gYmFzZSBhZGRyZXNzIGNhbiAoc2hvdWxk KSBiZSB3cml0dGVuLiBEaWZmZXJlbnQgYWRkcmVzcyB0eXBlcyAoUk9NLAo+PiBNTUlPIEJBUiwg UENJRVhCQVIpIHdpbGwgaGF2ZSBkaWZmZXJlbnQgYWRkcl9tYXNrIHZhbHVlcy4KPj4gCj4+IEZv ciBldmVyeSBhc3NpZ25hYmxlIEJBUiByYW5nZSB3ZSBzdG9yZSBpdHMgc2l6ZSwgUENJIGRldmlj ZSBCREYKPj4gKGRldmZuIGFjdHVhbGx5KSB0byB3aGljaCBpdCBiZWxvbmdzLCBCQVIgdHlwZSAo bWVtL2lvL21lbTY0KSBhbmQKPj4gY29ycmVzcG9uZGluZyByZWdpc3RlciBvZmZzZXQgaW4gZGV2 aWNlIFBDSSBjb25mIHNwYWNlLiBUaGlzIHdheSB3ZQo+PiBjYW4gaW5zZXJ0IE1NQ09ORklHIGVu dHJ5IGludG8gYmFycyBhcnJheSBpbiB0aGUgc2FtZSBtYW5uZXIgbGlrZQo+PiBmb3IgYW55IG90 aGVyIEJBUnMuIEluIHRoaXMgY2FzZSwgdGhlIGRldmZuIGZpZWxkIHdpbGwgcG9pbnQgdG8gTUNI Cj4+IFBDSSBkZXZpY2UgYW5kIGJhcl9yZWcgd2lsbCBjb250YWluIFBDSUVYQkFSIHJlZ2lzdGVy IG9mZnNldC4gSXQKPj4gd2lsbCBiZSBhc3NpZ25lZCBhIHNsb3QgaW4gTU1JTyBob2xlIGxhdGVy IGluIGEgdmVyeSBzYW1lIHdheSBsaWtlCj4+IGZvciBwbGFpbiBQQ0kgQkFScywgd2l0aCByZXNw ZWN0IHRvIGl0cyBzaXplIGFsaWdubWVudC4KPj4gCj4+IEFsc28sIHRvIHJlZHVjZSBjb2RlIGNv bXBsZXhpdHksIGFsbCBsb25nIG1lbS9tZW02NCBCQVIgZmxhZ3MgY2hlY2tzCj4+IGFyZSByZXBs YWNlZCBieSBzaW1wbGUgYmFyc1tpXSBmaWVsZCBwcm9iaW5nLCBlZy46Cj4+IC0gICAgICAgIGlm ICggKGJhcl9yZWcgPT0gUENJX1JPTV9BRERSRVNTKSB8fAo+PiAtICAgICAgICAgICAgICgoYmFy X2RhdGEgJiBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFKSA9PQo+PiAtICAgICAgICAgICAgICBQQ0lf QkFTRV9BRERSRVNTX1NQQUNFX01FTU9SWSkgKQo+PiArICAgICAgICBpZiAoIGJhcnNbaV0uaXNf bWVtICkgIAo+Cj5UaGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIGNoYW5nZSBJTU8uCgpPSywgbm8g cHJvYmxlbS4KCj4+ICB0b29scy9maXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmggICB8ICAgNCAr Kwo+PiAgdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3BjaS5jICAgICAgfCAxMjcKPj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4+IHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRl ci9wY2lfcmVncy5oIHwgICAyICsgMyBmaWxlcyBjaGFuZ2VkLCAxMDYKPj4gaW5zZXJ0aW9ucygr KSwgMjcgZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZt bG9hZGVyL2NvbmZpZy5oCj4+IGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oIGlu ZGV4IDZmZGU2YjdiNjAuLjU0NDNlY2Q4MDQKPj4gMTAwNjQ0IC0tLSBhL3Rvb2xzL2Zpcm13YXJl L2h2bWxvYWRlci9jb25maWcuaAo+PiArKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvY29u ZmlnLmgKPj4gQEAgLTUzLDEwICs1MywxNCBAQCBleHRlcm4gdWludDhfdCBpb2FwaWNfdmVyc2lv bjsKPj4gICNkZWZpbmUgUENJX0lTQV9ERVZGTiAgICAgICAweDA4ICAgIC8qIGRldiAxLCBmbiAw ICovCj4+ICAjZGVmaW5lIFBDSV9JU0FfSVJRX01BU0sgICAgMHgwYzIwVSAvKiBJU0EgSVJRcyA1 LDEwLDExIGFyZSBQQ0kKPj4gY29ubmVjdGVkICovICNkZWZpbmUgUENJX0lDSDlfTFBDX0RFVkZO ICAweGY4ICAgIC8qIGRldiAzMSwgZm4gMCAqLwo+PiArI2RlZmluZSBQQ0lfTUNIX0RFVkZOICAg ICAgIDAgICAgICAgLyogYnVzIDAsIGRldiAwLCBmdW5jIDAgKi8KPj4gIAo+PiAgLyogTU1JTyBo b2xlOiBIYXJkY29kZWQgZGVmYXVsdHMsIHdoaWNoIGNhbiBiZSBkeW5hbWljYWxseQo+PiBleHBh bmRlZC4gKi8gI2RlZmluZSBQQ0lfTUVNX0VORCAgICAgICAgIDB4ZmMwMDAwMDAKPj4gIAo+PiAr LyogcG9zc2libGUgdmFsdWVzIGFyZTogNjQsIDEyOCwgMjU2ICovCj4+ICsjZGVmaW5lIFBDSV9N QVhfTUNGR19CVVNFUyAgNjQgIAo+Cj5XaGF0IHRoZSByZWFzb25pbmcgZm9yIHRoaXMgdmFsdWU/ IERvIHdlIGtub3cgd2hpY2ggZGV2aWNlcyBuZWVkIEVDQU0KPmFyZWFzPwoKWWVzLCBYZW4gaXMg bGltaXRlZCB0byBidXMgMCBlbXVsYXRpb24gY3VycmVudGx5LCB0aGUgZGVzY3JpcHRpb24Kc3Rh dGVzICJXaGVuIG11bHRpcGxlIFBDSSBidXNlcyBzdXBwb3J0IGZvciBYZW4gd2lsbCBiZSBpbXBs ZW1lbnRlZCwKUENJX01BWF9NQ0ZHX0JVU0VTIG1heSBiZSBjaGFuZ2VkIHRvIGNhbGN1bGF0aW9u IG9mIHRoZSBudW1iZXIgb2YgYnVzZXMKYWNjb3JkaW5nIHRvIHJlc3VsdHMgb2YgdGhlIFBDSSBk ZXZpY2VzIGVudW1lcmF0aW9uIi4KCkkgdGhpbmsgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIHJlcGxh Y2UgJ3N3aXRjaCAoUENJX01BWF9NQ0ZHX0JVU0VTKScKd2l0aCB0aGUgcmVhbCBjb2RlIHJpZ2h0 IGF3YXksIGkuZS4gY2hhbmdlIGl0IHRvCgonc3dpdGNoIChtYXhfYnVzX251bSwgYWxpZ25lZCB1 cCB0byA2NC8xMjgvMjU2IGJvdW5kYXJ5KScsCndoZXJlIG1heF9idXNfbnVtIHNob3VsZCBiZSBz ZXQgaW4gUENJIGRldmljZSBlbnVtZXJhdGlvbiBjb2RlIGluCnBjaV9zZXR1cCgpLiBBcyB3ZSBh cmUgbGltaXRlZCB0byBidXMgMCBjdXJyZW50bHksIHdlJ2xsIGp1c3Qgc2V0IGl0CnRvIDAgZm9y IG5vdywgYmVmb3JlL2FmdGVyIHRoZSBQQ0kgZGV2aWNlIGVudW1lcmF0aW9uIGxvb3AgKHdoaWNo IHNob3VsZApiZWNhbWUgbXVsdGktYnVzIGNhcGFibGUgZXZlbnR1YWxseSkuCgo+PiAgI2RlZmlu ZSBBQ1BJX1RJU19IRFJfQUREUkVTUyAweEZFRDQwRjAwVUwKPj4gIAo+PiAgZXh0ZXJuIHVuc2ln bmVkIGxvbmcgcGNpX21lbV9zdGFydCwgcGNpX21lbV9lbmQ7Cj4+IGRpZmYgLS1naXQgYS90b29s cy9maXJtd2FyZS9odm1sb2FkZXIvcGNpLmMKPj4gYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIv cGNpLmMgaW5kZXggMDMzYmQyMDk5Mi4uNmRlMTI0YmJkNSAxMDA2NDQKPj4gLS0tIGEvdG9vbHMv ZmlybXdhcmUvaHZtbG9hZGVyL3BjaS5jCj4+ICsrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRl ci9wY2kuYwo+PiBAQCAtMTU4LDkgKzE1OCwxMCBAQCBzdGF0aWMgdm9pZAo+PiBjbGFzc19zcGVj aWZpY19wY2lfZGV2aWNlX3NldHVwKHVpbnQxNl90IHZlbmRvcl9pZCwgCj4+ICB2b2lkIHBjaV9z ZXR1cCh2b2lkKQo+PiAgewo+PiAtICAgIHVpbnQ4X3QgaXNfNjRiYXIsIHVzaW5nXzY0YmFyLCBi YXI2NF9yZWxvY2F0ZSA9IDA7Cj4+ICsgICAgdWludDhfdCBpc182NGJhciwgdXNpbmdfNjRiYXIs IGJhcjY0X3JlbG9jYXRlID0gMCwgaXNfbWVtOwo+PiAgICAgIHVpbnQzMl90IGRldmZuLCBiYXJf cmVnLCBjbWQsIGJhcl9kYXRhLCBiYXJfZGF0YV91cHBlcjsKPj4gICAgICB1aW50NjRfdCBiYXNl LCBiYXJfc3osIGJhcl9zel91cHBlciwgbW1pb190b3RhbCA9IDA7Cj4+ICsgICAgdWludDY0X3Qg YWRkcl9tYXNrOwo+PiAgICAgIHVpbnQxNl90IHZlbmRvcl9pZCwgZGV2aWNlX2lkOwo+PiAgICAg IHVuc2lnbmVkIGludCBiYXIsIHBpbiwgbGluaywgaXNhX2lycTsKPj4gICAgICBpbnQgaXNfcnVu bmluZ19vbl9xMzUgPSAwOwo+PiBAQCAtMTcyLDEwICsxNzMsMTQgQEAgdm9pZCBwY2lfc2V0dXAo dm9pZCkKPj4gIAo+PiAgICAgIC8qIENyZWF0ZSBhIGxpc3Qgb2YgZGV2aWNlIEJBUnMgaW4gZGVz Y2VuZGluZyBvcmRlciBvZiBzaXplLiAqLwo+PiAgICAgIHN0cnVjdCBiYXJzIHsKPj4gLSAgICAg ICAgdWludDMyX3QgaXNfNjRiYXI7Cj4+ICAgICAgICAgIHVpbnQzMl90IGRldmZuOwo+PiAgICAg ICAgICB1aW50MzJfdCBiYXJfcmVnOwo+PiAgICAgICAgICB1aW50NjRfdCBiYXJfc3o7Cj4+ICsg ICAgICAgIHVpbnQ2NF90IGFkZHJfbWFzazsgLyogd2hpY2ggYml0cyBvZiB0aGUgYmFzZSBhZGRy ZXNzIGNhbgo+PiBiZSB3cml0dGVuICovCj4+ICsgICAgICAgIHVpbnQzMl90IGJhcl9kYXRhOyAg LyogaW5pdGlhbCB2YWx1ZSAtIEJBUiBmbGFncyBoZXJlICovCj4+ICsgICAgICAgIHVpbnQ4X3Qg IGlzXzY0YmFyOwo+PiArICAgICAgICB1aW50OF90ICBpc19tZW07Cj4+ICsgICAgICAgIHVpbnQ4 X3QgIHBhZGRpbmdbMl07ICAKPgo+V2h5IGFyZSB5b3UgbWFudWFsbHkgYWRkaW5nIGEgcGFkZGlu ZyBoZXJlPyBBbHNvIHdoeSBub3QgbWFrZSB0aGlzCj5maWVsZHMgYm9vbD8KCkp1c3QgZm9sbG93 aW5nIGV4aXN0aW5nIGNvZGUgc3R5bGUsIGh2bWxvYWRlci9wY2kuYyBmb3Igc29tZQpyZWFzb24g cHJlZmVycyB0byBzcGVjaWZ5IHVpbnQ4X3QgZm9yIGJvb2wgdmFycy4gT0ssIHdpbGwgY2hhbmdl IGl0CnRvIGJvb2xzLgoKPj4gICAgICB9ICpiYXJzID0gKHN0cnVjdCBiYXJzICopc2NyYXRjaF9z dGFydDsKPj4gICAgICB1bnNpZ25lZCBpbnQgaSwgbnJfYmFycyA9IDA7Cj4+ICAgICAgdWludDY0 X3QgbW1pb19ob2xlX3NpemUgPSAwOwo+PiBAQCAtMjU5LDEzICsyNjQsMjEgQEAgdm9pZCBwY2lf c2V0dXAodm9pZCkKPj4gICAgICAgICAgICAgICAgICBiYXJfcmVnID0gUENJX1JPTV9BRERSRVNT Owo+PiAgCj4+ICAgICAgICAgICAgICBiYXJfZGF0YSA9IHBjaV9yZWFkbChkZXZmbiwgYmFyX3Jl Zyk7Cj4+ICsKPj4gKyAgICAgICAgICAgIGlzX21lbSA9ICEhKCgoYmFyX2RhdGEgJiBQQ0lfQkFT RV9BRERSRVNTX1NQQUNFKSA9PQo+PiArICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9B RERSRVNTX1NQQUNFX01FTU9SWSkgfHwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgKGJhcl9y ZWcgPT0gUENJX1JPTV9BRERSRVNTKSk7Cj4+ICsKPj4gICAgICAgICAgICAgIGlmICggYmFyX3Jl ZyAhPSBQQ0lfUk9NX0FERFJFU1MgKQo+PiAgICAgICAgICAgICAgewo+PiAtICAgICAgICAgICAg ICAgIGlzXzY0YmFyID0gISEoKGJhcl9kYXRhICYgKFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UgfAo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBF X01BU0spKSA9PQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUENJX0JBU0VfQURE UkVTU19TUEFDRV9NRU1PUlkgfAo+PiArICAgICAgICAgICAgICAgIGlzXzY0YmFyID0gISEoaXNf bWVtICYmCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYmFyX2RhdGEgJgo+PiBQ Q0lfQkFTRV9BRERSRVNTX01FTV9UWVBFX01BU0spID09IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZ UEVfNjQpKTsKPj4gKwo+PiAgICAgICAgICAgICAgICAgIHBjaV93cml0ZWwoZGV2Zm4sIGJhcl9y ZWcsIH4wKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgIGFkZHJfbWFzayA9IGlzX21lbSA/IFBD SV9CQVNFX0FERFJFU1NfTUVNX01BU0sKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBQQ0lfQkFTRV9BRERSRVNTX0lPX01BU0s7Cj4+ICAgICAgICAgICAgICB9Cj4+ICAg ICAgICAgICAgICBlbHNlCj4+ICAgICAgICAgICAgICB7Cj4+IEBAIC0yNzMsMjggKzI4NiwzNSBA QCB2b2lkIHBjaV9zZXR1cCh2b2lkKQo+PiAgICAgICAgICAgICAgICAgIHBjaV93cml0ZWwoZGV2 Zm4sIGJhcl9yZWcsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFyX2RhdGEgfCBQ Q0lfUk9NX0FERFJFU1NfTUFTSykgJgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgflBD SV9ST01fQUREUkVTU19FTkFCTEUpOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgYWRkcl9tYXNr ID0gUENJX1JPTV9BRERSRVNTX01BU0s7Cj4+ICAgICAgICAgICAgICB9Cj4+ICsKPj4gICAgICAg ICAgICAgIGJhcl9zeiA9IHBjaV9yZWFkbChkZXZmbiwgYmFyX3JlZyk7Cj4+ICAgICAgICAgICAg ICBwY2lfd3JpdGVsKGRldmZuLCBiYXJfcmVnLCBiYXJfZGF0YSk7Cj4+ICAKPj4gICAgICAgICAg ICAgIGlmICggYmFyX3JlZyAhPSBQQ0lfUk9NX0FERFJFU1MgKQo+PiAtICAgICAgICAgICAgICAg IGJhcl9zeiAmPSAoKChiYXJfZGF0YSAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UpID09Cj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkp ID8KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9CQVNFX0FERFJFU1NfTUVNX01B U0sgOgo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBDSV9CQVNFX0FERFJFU1NfSU9f TUFTSyAmIDB4ZmZmZikpOwo+PiArICAgICAgICAgICAgICAgIGJhcl9zeiAmPSBpc19tZW0gPyBQ Q0lfQkFTRV9BRERSRVNTX01FTV9NQVNLIDoKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFBDSV9CQVNFX0FERFJFU1NfSU9fTUFTSyAmCj4+IDB4ZmZmZik7IGVsc2UKPj4g ICAgICAgICAgICAgICAgICBiYXJfc3ogJj0gUENJX1JPTV9BRERSRVNTX01BU0s7Cj4+IC0gICAg ICAgICAgICBpZiAoaXNfNjRiYXIpIHsKPj4gKwo+PiArICAgICAgICAgICAgaWYgKGlzXzY0YmFy KSAgCj4KPkNvZGluZyBzdHlsZSAoc3BhY2VzIGJldHdlZW4gcGFyZW50aGVzZXMpLgoKT0ssIHdp bGwgYWRkLgoKPj4gKyAgICAgICAgICAgIHsKPj4gICAgICAgICAgICAgICAgICBiYXJfZGF0YV91 cHBlciA9IHBjaV9yZWFkbChkZXZmbiwgYmFyX3JlZyArIDQpOwo+PiAgICAgICAgICAgICAgICAg IHBjaV93cml0ZWwoZGV2Zm4sIGJhcl9yZWcgKyA0LCB+MCk7Cj4+ICAgICAgICAgICAgICAgICAg YmFyX3N6X3VwcGVyID0gcGNpX3JlYWRsKGRldmZuLCBiYXJfcmVnICsgNCk7Cj4+ICAgICAgICAg ICAgICAgICAgcGNpX3dyaXRlbChkZXZmbiwgYmFyX3JlZyArIDQsIGJhcl9kYXRhX3VwcGVyKTsK Pj4gICAgICAgICAgICAgICAgICBiYXJfc3ogPSAoYmFyX3N6X3VwcGVyIDw8IDMyKSB8IGJhcl9z ejsKPj4gICAgICAgICAgICAgIH0KPj4gKwo+PiAgICAgICAgICAgICAgYmFyX3N6ICY9IH4oYmFy X3N6IC0gMSk7Cj4+ICAgICAgICAgICAgICBpZiAoIGJhcl9zeiA9PSAwICkKPj4gICAgICAgICAg ICAgICAgICBjb250aW51ZTsKPj4gIAo+PiArICAgICAgICAgICAgLyogbGVhdmUgb25seSBtZW10 eXBlL2VuYWJsZSBiaXRzIGV0YyAqLwo+PiArICAgICAgICAgICAgYmFyX2RhdGEgJj0gfmFkZHJf bWFzazsKPj4gKwo+PiAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBucl9iYXJzOyBpKysg KQo+PiAgICAgICAgICAgICAgICAgIGlmICggYmFyc1tpXS5iYXJfc3ogPCBiYXJfc3ogKQo+PiAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gQEAgLTMwMiwxNCArMzIyLDE1IEBAIHZvaWQg cGNpX3NldHVwKHZvaWQpCj4+ICAgICAgICAgICAgICBpZiAoIGkgIT0gbnJfYmFycyApCj4+ICAg ICAgICAgICAgICAgICAgbWVtbW92ZSgmYmFyc1tpKzFdLCAmYmFyc1tpXSwgKG5yX2JhcnMtaSkg Kgo+PiBzaXplb2YoKmJhcnMpKTsgCj4+IC0gICAgICAgICAgICBiYXJzW2ldLmlzXzY0YmFyID0g aXNfNjRiYXI7Cj4+IC0gICAgICAgICAgICBiYXJzW2ldLmRldmZuICAgPSBkZXZmbjsKPj4gLSAg ICAgICAgICAgIGJhcnNbaV0uYmFyX3JlZyA9IGJhcl9yZWc7Cj4+IC0gICAgICAgICAgICBiYXJz W2ldLmJhcl9zeiAgPSBiYXJfc3o7Cj4+ICsgICAgICAgICAgICBiYXJzW2ldLmlzXzY0YmFyICA9 IGlzXzY0YmFyOwo+PiArICAgICAgICAgICAgYmFyc1tpXS5pc19tZW0gICAgPSBpc19tZW07Cj4+ ICsgICAgICAgICAgICBiYXJzW2ldLmRldmZuICAgICA9IGRldmZuOwo+PiArICAgICAgICAgICAg YmFyc1tpXS5iYXJfcmVnICAgPSBiYXJfcmVnOwo+PiArICAgICAgICAgICAgYmFyc1tpXS5iYXJf c3ogICAgPSBiYXJfc3o7Cj4+ICsgICAgICAgICAgICBiYXJzW2ldLmFkZHJfbWFzayA9IGFkZHJf bWFzazsKPj4gKyAgICAgICAgICAgIGJhcnNbaV0uYmFyX2RhdGEgID0gYmFyX2RhdGE7Cj4+ICAK Pj4gLSAgICAgICAgICAgIGlmICggKChiYXJfZGF0YSAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0Up ID09Cj4+IC0gICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFX01FTU9SWSkg fHwKPj4gLSAgICAgICAgICAgICAgICAgKGJhcl9yZWcgPT0gUENJX1JPTV9BRERSRVNTKSApCj4+ ICsgICAgICAgICAgICBpZiAoIGlzX21lbSApCj4+ICAgICAgICAgICAgICAgICAgbW1pb190b3Rh bCArPSBiYXJfc3o7Cj4+ICAKPj4gICAgICAgICAgICAgIG5yX2JhcnMrKzsKPj4gQEAgLTMzOSw2 ICszNjAsNjMgQEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKPj4gICAgICAgICAgcGNpX3dyaXRldyhk ZXZmbiwgUENJX0NPTU1BTkQsIGNtZCk7Cj4+ICAgICAgfQo+PiAgCj4+ICsgICAgLyoKPj4gKyAg ICAgKiAgQ2FsY3VsYXRlIE1NQ09ORklHIGFyZWEgc2l6ZSBhbmQgc3F1ZWV6ZSBpdCBpbnRvIHRo ZSBiYXJzCj4+IGFycmF5Cj4+ICsgICAgICogIGZvciBhc3NpZ25pbmcgYSBzbG90IGluIHRoZSBN TUlPIGhvbGUKPj4gKyAgICAgKi8KPj4gKyAgICBpZiAoaXNfcnVubmluZ19vbl9xMzUpCj4+ICsg ICAgewo+PiArICAgICAgICAvKiBkaXNhYmxlIFBDSUVYQkFSIGRlY29kaW5nIGZvciBub3cgKi8K Pj4gKyAgICAgICAgcGNpX3dyaXRlbChQQ0lfTUNIX0RFVkZOLCBQQ0lfTUNIX1BDSUVYQkFSLCAw KTsKPj4gKyAgICAgICAgcGNpX3dyaXRlbChQQ0lfTUNIX0RFVkZOLCBQQ0lfTUNIX1BDSUVYQkFS ICsgNCwgMCk7ICAKPgo+SSdtIGFmcmFpZCBJIHdpbGwgbmVlZCBzb21lIGNvbnRleHQgaGVyZSwg d2hlcmUgaXMgdGhlIGRlc2NyaXB0aW9uIGZvcgo+dGhlIGNvbmZpZyBzcGFjZSBvZiBkZXYgMCBm biAwPyBJIGRvbid0IHNlZW0gdG8gYmUgYWJsZSB0byBmaW5kIGl0IGluCj50aGUgaWNoOSBzcGVj LgoKSUNIOSBpcyBhIHNvdXRoIGJyaWRnZSwgeW91IG5lZWQgdG8gY2hlY2sgdGhlIE5CL01DSCBk YXRhc2hlZXQsIG5hbWVseQoiSW50ZWzCriAzIFNlcmllcyBFeHByZXNzIENoaXBzZXQgRmFtaWx5 Ii4KCj4+ICsKPj4gKyNkZWZpbmUgUENJRVhCQVJfNjRfQlVTRVMgICAgKDIgPDwgMSkKPj4gKyNk ZWZpbmUgUENJRVhCQVJfMTI4X0JVU0VTICAgKDEgPDwgMSkKPj4gKyNkZWZpbmUgUENJRVhCQVJf MjU2X0JVU0VTICAgKDAgPDwgMSkKPj4gKyNkZWZpbmUgUENJRVhCQVJfRU5BQkxFICAgICAgKDEg PDwgMCkgIAo+Cj5XaHkgdGhvc2Ugc3RyYW5nZSBkZWZpbml0aW9ucz8gKDAgPDwgMSk/ICgyIDw8 IDEpIGluc3RlYWQgb2YgKDEgPDwgMik/CgpUaGVzZSBhcmUgYml0ZmllbGRzLiBJdCdzIGp1c3Qg dG8gc2hvdyB0aGVpciBiaXRmaWVsZCBuYXR1cmUsCmJpdHNbMi4uMV0gYW5kIGJpdDAuIEknbGwg Y2hhbmdlIHRoZW0gdG8gc29tZXRoaW5nIG1vcmUgcmVhZGFibGUKKGxpa2Ugc2hpZnRzIHdpdGgg X0JJVFBPUy1kZWZpbmVzKSBpbiBub24tUkZDIHBhdGNoZXMuCgo+PiArCj4+ICsgICAgICAgIHN3 aXRjaCAoUENJX01BWF9NQ0ZHX0JVU0VTKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAgIGNhc2Ug NjQ6Cj4+ICsgICAgICAgICAgICBiYXJfZGF0YSA9IFBDSUVYQkFSXzY0X0JVU0VTIHwgUENJRVhC QVJfRU5BQkxFOwo+PiArICAgICAgICAgICAgYmFyX3N6ID0gTUIoNjQpOwo+PiArICAgICAgICAg ICAgYnJlYWs7Cj4+ICsKPj4gKyAgICAgICAgY2FzZSAxMjg6Cj4+ICsgICAgICAgICAgICBiYXJf ZGF0YSA9IFBDSUVYQkFSXzEyOF9CVVNFUyB8IFBDSUVYQkFSX0VOQUJMRTsKPj4gKyAgICAgICAg ICAgIGJhcl9zeiA9IE1CKDEyOCk7Cj4+ICsgICAgICAgICAgICBicmVhazsKPj4gKwo+PiArICAg ICAgICBjYXNlIDI1NjoKPj4gKyAgICAgICAgICAgIGJhcl9kYXRhID0gUENJRVhCQVJfMjU2X0JV U0VTIHwgUENJRVhCQVJfRU5BQkxFOwo+PiArICAgICAgICAgICAgYmFyX3N6ID0gTUIoMjU2KTsK Pj4gKyAgICAgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgICAgIGRlZmF1bHQ6Cj4+ICsgICAg ICAgICAgICAvKiB1bnN1cHBvcnRlZCBudW1iZXIgb2YgYnVzZXMgc3BlY2lmaWVkICovCj4+ICsg ICAgICAgICAgICBCVUcoKTsKPj4gKyAgICAgICAgfSAgCj4KPkkgZG9uJ3Qgc2VlIGhvdyBQQ0lf TUFYX01DRkdfQlVTRVMgc2hvdWxkIGJlIHVzZWQuIElzIHRoZSB1c2VyCj5zdXBwb3NlZCB0byBr bm93IHdoYXQgdmFsdWUgdG8gdXNlIGF0IGNvbXBpbGUgdGltZT8gV2hhdCBhYm91dCBkaXN0cm8K PnBhY2thZ2Vycz8KCkFuc3dlcmVkIGFib3ZlIG1vc3RseS4KV2UncmUgbGltaXRlZCB0byBidXMg MCBjdXJyZW50bHkuIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZQpNTUNPTkZJRyBz aXplIG1hbnVhbGx5IGZvciBub3cgKGVnLiB0byAyNTZNQiB3aGljaCBhbGxvd3MgdG8gY292ZXIg dGhlCndob2xlIDAtRkYgYnVzIHJhbmdlKS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=