From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Gerasimenko Subject: [RFC PATCH 07/12] hvmloader: allocate MMCONFIG area in the MMIO hole + minor code refactoring Date: Tue, 13 Mar 2018 04:33:52 +1000 Message-ID: <62c7a3037bb9f5631542f635dc36ae3338c7bf47.1520867741.git.x1917x@gmail.com> References: 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 1evSHj-0007Er-Rq for xen-devel@lists.xenproject.org; Mon, 12 Mar 2018 18:34:59 +0000 Received: by mail-pg0-x235.google.com with SMTP id g12so6878584pgs.0 for ; Mon, 12 Mar 2018 11:34:58 -0700 (PDT) In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Ian Jackson , Alexey Gerasimenko , Jan Beulich , Wei Liu List-Id: xen-devel@lists.xenproject.org TXVjaCBsaWtlIG5vcm1hbCBQQ0kgQkFScyBvciBvdGhlciBjaGlwc2V0LXNwZWNpZmljIG1lbW9y eS1tYXBwZWQKcmVzb3VyY2VzLCBNTUNPTkZJRyBhcmVhIG5lZWRzIHNwYWNlIGluIE1NSU8gaG9s ZSwgc28gd2UgbXVzdCBhbGxvY2F0ZQppdCBtYW51YWxseS4KClRoZSBhY3R1YWwgTU1DT05GSUcg c2l6ZSBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIFBDSSBidXNlcyBhdmFpbGFibGUgd2hpY2gKc2hv dWxkIGJlIGNvdmVyZWQgYnkgRUNBTS4gUG9zc2libGUgb3B0aW9ucyBhcmUgNjRNQiwgMTI4TUIg YW5kIDI1Nk1CLgpBcyB3ZSBhcmUgbGltaXRlZCB0byB0aGUgYnVzIDAgY3VycmVudGx5LCB0aHVz IHVzaW5nIGxvd2VzdCBwb3NzaWJsZQpzZXR0aW5nICg2NE1CKSwgI2RlZmluZWQgdmlhIFBDSV9N QVhfTUNGR19CVVNFUyBpbiBodm1sb2FkZXIvY29uZmlnLmguCldoZW4gbXVsdGlwbGUgUENJIGJ1 c2VzIHN1cHBvcnQgZm9yIFhlbiB3aWxsIGJlIGltcGxlbWVudGVkLApQQ0lfTUFYX01DRkdfQlVT RVMgbWF5IGJlIGNoYW5nZWQgdG8gY2FsY3VsYXRpb24gb2YgdGhlIG51bWJlciBvZiBidXNlcwph Y2NvcmRpbmcgdG8gcmVzdWx0cyBvZiB0aGUgUENJIGRldmljZXMgZW51bWVyYXRpb24uCgpUaGUg d2F5IHRvIGFsbG9jYXRlIE1NQ09ORklHIHJhbmdlIGluIE1NSU8gaG9sZSBpcyBzaW1pbGFyIHRv IGhvdyBvdGhlcgpQQ0kgQkFScyBhcmUgYWxsb2NhdGVkLiBUaGUgcGF0Y2ggZXh0ZW5kcyAnYmFy cycgc3RydWN0dXJlIHRvIG1ha2UKaXQgdW5pdmVyc2FsIGZvciBhbnkgYXJiaXRyYXJ5IEJBUiB0 eXBlIC0tIGVpdGhlciBJTywgTU1JTywgUk9NIG9yCmEgY2hpcHNldC1zcGVjaWZpYyByZXNvdXJj ZS4KCk9uZSBpbXBvcnRhbnQgbmV3IGZpZWxkIGlzIGFkZHJfbWFzaywgd2hpY2ggdGVsbHMgd2hp Y2ggYml0cyBvZiB0aGUgYmFzZQphZGRyZXNzIGNhbiAoc2hvdWxkKSBiZSB3cml0dGVuLiBEaWZm ZXJlbnQgYWRkcmVzcyB0eXBlcyAoUk9NLCBNTUlPIEJBUiwKUENJRVhCQVIpIHdpbGwgaGF2ZSBk aWZmZXJlbnQgYWRkcl9tYXNrIHZhbHVlcy4KCkZvciBldmVyeSBhc3NpZ25hYmxlIEJBUiByYW5n ZSB3ZSBzdG9yZSBpdHMgc2l6ZSwgUENJIGRldmljZSBCREYgKGRldmZuCmFjdHVhbGx5KSB0byB3 aGljaCBpdCBiZWxvbmdzLCBCQVIgdHlwZSAobWVtL2lvL21lbTY0KSBhbmQgY29ycmVzcG9uZGlu ZwpyZWdpc3RlciBvZmZzZXQgaW4gZGV2aWNlIFBDSSBjb25mIHNwYWNlLiBUaGlzIHdheSB3ZSBj YW4gaW5zZXJ0IE1NQ09ORklHCmVudHJ5IGludG8gYmFycyBhcnJheSBpbiB0aGUgc2FtZSBtYW5u ZXIgbGlrZSBmb3IgYW55IG90aGVyIEJBUnMuIEluIHRoaXMKY2FzZSwgdGhlIGRldmZuIGZpZWxk IHdpbGwgcG9pbnQgdG8gTUNIIFBDSSBkZXZpY2UgYW5kIGJhcl9yZWcgd2lsbApjb250YWluIFBD SUVYQkFSIHJlZ2lzdGVyIG9mZnNldC4gSXQgd2lsbCBiZSBhc3NpZ25lZCBhIHNsb3QgaW4gTU1J TyBob2xlCmxhdGVyIGluIGEgdmVyeSBzYW1lIHdheSBsaWtlIGZvciBwbGFpbiBQQ0kgQkFScywg d2l0aCByZXNwZWN0IHRvIGl0cyBzaXplCmFsaWdubWVudC4KCkFsc28sIHRvIHJlZHVjZSBjb2Rl IGNvbXBsZXhpdHksIGFsbCBsb25nIG1lbS9tZW02NCBCQVIgZmxhZ3MgY2hlY2tzIGFyZQpyZXBs YWNlZCBieSBzaW1wbGUgYmFyc1tpXSBmaWVsZCBwcm9iaW5nLCBlZy46Ci0gICAgICAgIGlmICgg KGJhcl9yZWcgPT0gUENJX1JPTV9BRERSRVNTKSB8fAotICAgICAgICAgICAgICgoYmFyX2RhdGEg JiBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFKSA9PQotICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERS RVNTX1NQQUNFX01FTU9SWSkgKQorICAgICAgICBpZiAoIGJhcnNbaV0uaXNfbWVtICkKClNpZ25l ZC1vZmYtYnk6IEFsZXhleSBHZXJhc2ltZW5rbyA8eDE5MTd4QGdtYWlsLmNvbT4KLS0tCiB0b29s cy9maXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmggICB8ICAgNCArKwogdG9vbHMvZmlybXdhcmUv aHZtbG9hZGVyL3BjaS5jICAgICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tCiB0b29scy9maXJtd2FyZS9odm1sb2FkZXIvcGNpX3JlZ3MuaCB8ICAgMiArCiAzIGZp bGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmggYi90b29scy9maXJtd2FyZS9o dm1sb2FkZXIvY29uZmlnLmgKaW5kZXggNmZkZTZiN2I2MC4uNTQ0M2VjZDgwNCAxMDA2NDQKLS0t IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oCisrKyBiL3Rvb2xzL2Zpcm13YXJl L2h2bWxvYWRlci9jb25maWcuaApAQCAtNTMsMTAgKzUzLDE0IEBAIGV4dGVybiB1aW50OF90IGlv YXBpY192ZXJzaW9uOwogI2RlZmluZSBQQ0lfSVNBX0RFVkZOICAgICAgIDB4MDggICAgLyogZGV2 IDEsIGZuIDAgKi8KICNkZWZpbmUgUENJX0lTQV9JUlFfTUFTSyAgICAweDBjMjBVIC8qIElTQSBJ UlFzIDUsMTAsMTEgYXJlIFBDSSBjb25uZWN0ZWQgKi8KICNkZWZpbmUgUENJX0lDSDlfTFBDX0RF VkZOICAweGY4ICAgIC8qIGRldiAzMSwgZm4gMCAqLworI2RlZmluZSBQQ0lfTUNIX0RFVkZOICAg ICAgIDAgICAgICAgLyogYnVzIDAsIGRldiAwLCBmdW5jIDAgKi8KIAogLyogTU1JTyBob2xlOiBI YXJkY29kZWQgZGVmYXVsdHMsIHdoaWNoIGNhbiBiZSBkeW5hbWljYWxseSBleHBhbmRlZC4gKi8K ICNkZWZpbmUgUENJX01FTV9FTkQgICAgICAgICAweGZjMDAwMDAwCiAKKy8qIHBvc3NpYmxlIHZh bHVlcyBhcmU6IDY0LCAxMjgsIDI1NiAqLworI2RlZmluZSBQQ0lfTUFYX01DRkdfQlVTRVMgIDY0 CisKICNkZWZpbmUgQUNQSV9USVNfSERSX0FERFJFU1MgMHhGRUQ0MEYwMFVMCiAKIGV4dGVybiB1 bnNpZ25lZCBsb25nIHBjaV9tZW1fc3RhcnQsIHBjaV9tZW1fZW5kOwpkaWZmIC0tZ2l0IGEvdG9v bHMvZmlybXdhcmUvaHZtbG9hZGVyL3BjaS5jIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3Bj aS5jCmluZGV4IDAzM2JkMjA5OTIuLjZkZTEyNGJiZDUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci9wY2kuYworKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvcGNpLmMK QEAgLTE1OCw5ICsxNTgsMTAgQEAgc3RhdGljIHZvaWQgY2xhc3Nfc3BlY2lmaWNfcGNpX2Rldmlj ZV9zZXR1cCh1aW50MTZfdCB2ZW5kb3JfaWQsCiAKIHZvaWQgcGNpX3NldHVwKHZvaWQpCiB7Ci0g ICAgdWludDhfdCBpc182NGJhciwgdXNpbmdfNjRiYXIsIGJhcjY0X3JlbG9jYXRlID0gMDsKKyAg ICB1aW50OF90IGlzXzY0YmFyLCB1c2luZ182NGJhciwgYmFyNjRfcmVsb2NhdGUgPSAwLCBpc19t ZW07CiAgICAgdWludDMyX3QgZGV2Zm4sIGJhcl9yZWcsIGNtZCwgYmFyX2RhdGEsIGJhcl9kYXRh X3VwcGVyOwogICAgIHVpbnQ2NF90IGJhc2UsIGJhcl9zeiwgYmFyX3N6X3VwcGVyLCBtbWlvX3Rv dGFsID0gMDsKKyAgICB1aW50NjRfdCBhZGRyX21hc2s7CiAgICAgdWludDE2X3QgdmVuZG9yX2lk LCBkZXZpY2VfaWQ7CiAgICAgdW5zaWduZWQgaW50IGJhciwgcGluLCBsaW5rLCBpc2FfaXJxOwog ICAgIGludCBpc19ydW5uaW5nX29uX3EzNSA9IDA7CkBAIC0xNzIsMTAgKzE3MywxNCBAQCB2b2lk IHBjaV9zZXR1cCh2b2lkKQogCiAgICAgLyogQ3JlYXRlIGEgbGlzdCBvZiBkZXZpY2UgQkFScyBp biBkZXNjZW5kaW5nIG9yZGVyIG9mIHNpemUuICovCiAgICAgc3RydWN0IGJhcnMgewotICAgICAg ICB1aW50MzJfdCBpc182NGJhcjsKICAgICAgICAgdWludDMyX3QgZGV2Zm47CiAgICAgICAgIHVp bnQzMl90IGJhcl9yZWc7CiAgICAgICAgIHVpbnQ2NF90IGJhcl9zejsKKyAgICAgICAgdWludDY0 X3QgYWRkcl9tYXNrOyAvKiB3aGljaCBiaXRzIG9mIHRoZSBiYXNlIGFkZHJlc3MgY2FuIGJlIHdy aXR0ZW4gKi8KKyAgICAgICAgdWludDMyX3QgYmFyX2RhdGE7ICAvKiBpbml0aWFsIHZhbHVlIC0g QkFSIGZsYWdzIGhlcmUgKi8KKyAgICAgICAgdWludDhfdCAgaXNfNjRiYXI7CisgICAgICAgIHVp bnQ4X3QgIGlzX21lbTsKKyAgICAgICAgdWludDhfdCAgcGFkZGluZ1syXTsKICAgICB9ICpiYXJz ID0gKHN0cnVjdCBiYXJzICopc2NyYXRjaF9zdGFydDsKICAgICB1bnNpZ25lZCBpbnQgaSwgbnJf YmFycyA9IDA7CiAgICAgdWludDY0X3QgbW1pb19ob2xlX3NpemUgPSAwOwpAQCAtMjU5LDEzICsy NjQsMjEgQEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKICAgICAgICAgICAgICAgICBiYXJfcmVnID0g UENJX1JPTV9BRERSRVNTOwogCiAgICAgICAgICAgICBiYXJfZGF0YSA9IHBjaV9yZWFkbChkZXZm biwgYmFyX3JlZyk7CisKKyAgICAgICAgICAgIGlzX21lbSA9ICEhKCgoYmFyX2RhdGEgJiBQQ0lf QkFTRV9BRERSRVNTX1NQQUNFKSA9PQorICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9B RERSRVNTX1NQQUNFX01FTU9SWSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGJhcl9yZWcg PT0gUENJX1JPTV9BRERSRVNTKSk7CisKICAgICAgICAgICAgIGlmICggYmFyX3JlZyAhPSBQQ0lf Uk9NX0FERFJFU1MgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzXzY0YmFyID0g ISEoKGJhcl9kYXRhICYgKFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UgfAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFX01BU0spKSA9PQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkgfAor ICAgICAgICAgICAgICAgIGlzXzY0YmFyID0gISEoaXNfbWVtICYmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoYmFyX2RhdGEgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFX01BU0sp ID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZ UEVfNjQpKTsKKwogICAgICAgICAgICAgICAgIHBjaV93cml0ZWwoZGV2Zm4sIGJhcl9yZWcsIH4w KTsKKworICAgICAgICAgICAgICAgIGFkZHJfbWFzayA9IGlzX21lbSA/IFBDSV9CQVNFX0FERFJF U1NfTUVNX01BU0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBQQ0lfQkFT RV9BRERSRVNTX0lPX01BU0s7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICB7CkBAIC0yNzMsMjggKzI4NiwzNSBAQCB2b2lkIHBjaV9zZXR1cCh2b2lkKQogICAg ICAgICAgICAgICAgIHBjaV93cml0ZWwoZGV2Zm4sIGJhcl9yZWcsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYmFyX2RhdGEgfCBQQ0lfUk9NX0FERFJFU1NfTUFTSykgJgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgflBDSV9ST01fQUREUkVTU19FTkFCTEUpOworCisgICAgICAgICAg ICAgICAgYWRkcl9tYXNrID0gUENJX1JPTV9BRERSRVNTX01BU0s7CiAgICAgICAgICAgICB9CisK ICAgICAgICAgICAgIGJhcl9zeiA9IHBjaV9yZWFkbChkZXZmbiwgYmFyX3JlZyk7CiAgICAgICAg ICAgICBwY2lfd3JpdGVsKGRldmZuLCBiYXJfcmVnLCBiYXJfZGF0YSk7CiAKICAgICAgICAgICAg IGlmICggYmFyX3JlZyAhPSBQQ0lfUk9NX0FERFJFU1MgKQotICAgICAgICAgICAgICAgIGJhcl9z eiAmPSAoKChiYXJfZGF0YSAmIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0UpID09Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkpID8KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBDSV9CQVNFX0FERFJFU1NfTUVNX01BU0sgOgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFBDSV9CQVNFX0FERFJFU1NfSU9fTUFTSyAmIDB4ZmZmZikp OworICAgICAgICAgICAgICAgIGJhcl9zeiAmPSBpc19tZW0gPyBQQ0lfQkFTRV9BRERSRVNTX01F TV9NQVNLIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBDSV9CQVNFX0FE RFJFU1NfSU9fTUFTSyAmIDB4ZmZmZik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg ICAgYmFyX3N6ICY9IFBDSV9ST01fQUREUkVTU19NQVNLOwotICAgICAgICAgICAgaWYgKGlzXzY0 YmFyKSB7CisKKyAgICAgICAgICAgIGlmIChpc182NGJhcikKKyAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICBiYXJfZGF0YV91cHBlciA9IHBjaV9yZWFkbChkZXZmbiwgYmFyX3JlZyArIDQp OwogICAgICAgICAgICAgICAgIHBjaV93cml0ZWwoZGV2Zm4sIGJhcl9yZWcgKyA0LCB+MCk7CiAg ICAgICAgICAgICAgICAgYmFyX3N6X3VwcGVyID0gcGNpX3JlYWRsKGRldmZuLCBiYXJfcmVnICsg NCk7CiAgICAgICAgICAgICAgICAgcGNpX3dyaXRlbChkZXZmbiwgYmFyX3JlZyArIDQsIGJhcl9k YXRhX3VwcGVyKTsKICAgICAgICAgICAgICAgICBiYXJfc3ogPSAoYmFyX3N6X3VwcGVyIDw8IDMy KSB8IGJhcl9zejsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgYmFyX3N6ICY9IH4oYmFy X3N6IC0gMSk7CiAgICAgICAgICAgICBpZiAoIGJhcl9zeiA9PSAwICkKICAgICAgICAgICAgICAg ICBjb250aW51ZTsKIAorICAgICAgICAgICAgLyogbGVhdmUgb25seSBtZW10eXBlL2VuYWJsZSBi aXRzIGV0YyAqLworICAgICAgICAgICAgYmFyX2RhdGEgJj0gfmFkZHJfbWFzazsKKwogICAgICAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBucl9iYXJzOyBpKysgKQogICAgICAgICAgICAgICAgIGlm ICggYmFyc1tpXS5iYXJfc3ogPCBiYXJfc3ogKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK QEAgLTMwMiwxNCArMzIyLDE1IEBAIHZvaWQgcGNpX3NldHVwKHZvaWQpCiAgICAgICAgICAgICBp ZiAoIGkgIT0gbnJfYmFycyApCiAgICAgICAgICAgICAgICAgbWVtbW92ZSgmYmFyc1tpKzFdLCAm YmFyc1tpXSwgKG5yX2JhcnMtaSkgKiBzaXplb2YoKmJhcnMpKTsKIAotICAgICAgICAgICAgYmFy c1tpXS5pc182NGJhciA9IGlzXzY0YmFyOwotICAgICAgICAgICAgYmFyc1tpXS5kZXZmbiAgID0g ZGV2Zm47Ci0gICAgICAgICAgICBiYXJzW2ldLmJhcl9yZWcgPSBiYXJfcmVnOwotICAgICAgICAg ICAgYmFyc1tpXS5iYXJfc3ogID0gYmFyX3N6OworICAgICAgICAgICAgYmFyc1tpXS5pc182NGJh ciAgPSBpc182NGJhcjsKKyAgICAgICAgICAgIGJhcnNbaV0uaXNfbWVtICAgID0gaXNfbWVtOwor ICAgICAgICAgICAgYmFyc1tpXS5kZXZmbiAgICAgPSBkZXZmbjsKKyAgICAgICAgICAgIGJhcnNb aV0uYmFyX3JlZyAgID0gYmFyX3JlZzsKKyAgICAgICAgICAgIGJhcnNbaV0uYmFyX3N6ICAgID0g YmFyX3N6OworICAgICAgICAgICAgYmFyc1tpXS5hZGRyX21hc2sgPSBhZGRyX21hc2s7CisgICAg ICAgICAgICBiYXJzW2ldLmJhcl9kYXRhICA9IGJhcl9kYXRhOwogCi0gICAgICAgICAgICBpZiAo ICgoYmFyX2RhdGEgJiBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFKSA9PQotICAgICAgICAgICAgICAg ICAgUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkpIHx8Ci0gICAgICAgICAgICAgICAgIChi YXJfcmVnID09IFBDSV9ST01fQUREUkVTUykgKQorICAgICAgICAgICAgaWYgKCBpc19tZW0gKQog ICAgICAgICAgICAgICAgIG1taW9fdG90YWwgKz0gYmFyX3N6OwogCiAgICAgICAgICAgICBucl9i YXJzKys7CkBAIC0zMzksNiArMzYwLDYzIEBAIHZvaWQgcGNpX3NldHVwKHZvaWQpCiAgICAgICAg IHBjaV93cml0ZXcoZGV2Zm4sIFBDSV9DT01NQU5ELCBjbWQpOwogICAgIH0KIAorICAgIC8qCisg ICAgICogIENhbGN1bGF0ZSBNTUNPTkZJRyBhcmVhIHNpemUgYW5kIHNxdWVlemUgaXQgaW50byB0 aGUgYmFycyBhcnJheQorICAgICAqICBmb3IgYXNzaWduaW5nIGEgc2xvdCBpbiB0aGUgTU1JTyBo b2xlCisgICAgICovCisgICAgaWYgKGlzX3J1bm5pbmdfb25fcTM1KQorICAgIHsKKyAgICAgICAg LyogZGlzYWJsZSBQQ0lFWEJBUiBkZWNvZGluZyBmb3Igbm93ICovCisgICAgICAgIHBjaV93cml0 ZWwoUENJX01DSF9ERVZGTiwgUENJX01DSF9QQ0lFWEJBUiwgMCk7CisgICAgICAgIHBjaV93cml0 ZWwoUENJX01DSF9ERVZGTiwgUENJX01DSF9QQ0lFWEJBUiArIDQsIDApOworCisjZGVmaW5lIFBD SUVYQkFSXzY0X0JVU0VTICAgICgyIDw8IDEpCisjZGVmaW5lIFBDSUVYQkFSXzEyOF9CVVNFUyAg ICgxIDw8IDEpCisjZGVmaW5lIFBDSUVYQkFSXzI1Nl9CVVNFUyAgICgwIDw8IDEpCisjZGVmaW5l IFBDSUVYQkFSX0VOQUJMRSAgICAgICgxIDw8IDApCisKKyAgICAgICAgc3dpdGNoIChQQ0lfTUFY X01DRkdfQlVTRVMpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSA2NDoKKyAgICAgICAgICAgIGJh cl9kYXRhID0gUENJRVhCQVJfNjRfQlVTRVMgfCBQQ0lFWEJBUl9FTkFCTEU7CisgICAgICAgICAg ICBiYXJfc3ogPSBNQig2NCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDEy ODoKKyAgICAgICAgICAgIGJhcl9kYXRhID0gUENJRVhCQVJfMTI4X0JVU0VTIHwgUENJRVhCQVJf RU5BQkxFOworICAgICAgICAgICAgYmFyX3N6ID0gTUIoMTI4KTsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgMjU2OgorICAgICAgICAgICAgYmFyX2RhdGEgPSBQQ0lFWEJBUl8y NTZfQlVTRVMgfCBQQ0lFWEJBUl9FTkFCTEU7CisgICAgICAgICAgICBiYXJfc3ogPSBNQigyNTYp OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8q IHVuc3VwcG9ydGVkIG51bWJlciBvZiBidXNlcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgICAgIEJV RygpOworICAgICAgICB9CisKKyAgICAgICAgYWRkcl9tYXNrID0gfihiYXJfc3ogLSAxKTsKKwor ICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2JhcnM7IGkrKyApCisgICAgICAgICAgICBpZiAo IGJhcnNbaV0uYmFyX3N6IDwgYmFyX3N6ICkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAg ICAgICBpZiAoIGkgIT0gbnJfYmFycyApCisgICAgICAgICAgICBtZW1tb3ZlKCZiYXJzW2krMV0s ICZiYXJzW2ldLCAobnJfYmFycy1pKSAqIHNpemVvZigqYmFycykpOworCisgICAgICAgIGJhcnNb aV0uaXNfbWVtICAgID0gMTsKKyAgICAgICAgYmFyc1tpXS5kZXZmbiAgICAgPSBQQ0lfTUNIX0RF VkZOOworICAgICAgICBiYXJzW2ldLmJhcl9yZWcgICA9IFBDSV9NQ0hfUENJRVhCQVI7CisgICAg ICAgIGJhcnNbaV0uYmFyX3N6ICAgID0gYmFyX3N6OworICAgICAgICBiYXJzW2ldLmFkZHJfbWFz ayA9IGFkZHJfbWFzazsKKyAgICAgICAgYmFyc1tpXS5iYXJfZGF0YSAgPSBiYXJfZGF0YTsKKwor ICAgICAgICBtbWlvX3RvdGFsICs9IGJhcl9zejsKKyAgICAgICAgbnJfYmFycysrOworICAgIH0K KwogICAgIGlmICggbW1pb19ob2xlX3NpemUgKQogICAgIHsKICAgICAgICAgdWludDY0X3QgbWF4 X3JhbV9iZWxvd180ZyA9IEdCKDQpIC0gbW1pb19ob2xlX3NpemU7CkBAIC00NzMsMTAgKzU1MSwx MCBAQCB2b2lkIHBjaV9zZXR1cCh2b2lkKQogICAgICAgICAgKi8KICAgICAgICAgdXNpbmdfNjRi YXIgPSBiYXJzW2ldLmlzXzY0YmFyICYmIGJhcjY0X3JlbG9jYXRlCiAgICAgICAgICAgICAmJiAo bW1pb190b3RhbCA+IChtZW1fcmVzb3VyY2UubWF4IC0gbWVtX3Jlc291cmNlLmJhc2UpKTsKLSAg ICAgICAgYmFyX2RhdGEgPSBwY2lfcmVhZGwoZGV2Zm4sIGJhcl9yZWcpOwogCi0gICAgICAgIGlm ICggKGJhcl9kYXRhICYgUENJX0JBU0VfQUREUkVTU19TUEFDRSkgPT0KLSAgICAgICAgICAgICBQ Q0lfQkFTRV9BRERSRVNTX1NQQUNFX01FTU9SWSApCisgICAgICAgIGJhcl9kYXRhID0gYmFyc1tp XS5iYXJfZGF0YTsKKworICAgICAgICBpZiAoIGJhcnNbaV0uaXNfbWVtICkKICAgICAgICAgewog ICAgICAgICAgICAgLyogTWFwcGluZyBoaWdoIG1lbW9yeSBpZiBQQ0kgZGV2aWNlIGlzIDY0IGJp dHMgYmFyICovCiAgICAgICAgICAgICBpZiAoIHVzaW5nXzY0YmFyICkgewpAQCAtNDg2LDE4ICs1 NjQsMTUgQEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKICAgICAgICAgICAgICAgICBpZiAoICFwY2lf aGlfbWVtX3N0YXJ0ICkKICAgICAgICAgICAgICAgICAgICAgcGNpX2hpX21lbV9zdGFydCA9IGhp Z2hfbWVtX3Jlc291cmNlLmJhc2U7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UgPSAmaGlnaF9t ZW1fcmVzb3VyY2U7Ci0gICAgICAgICAgICAgICAgYmFyX2RhdGEgJj0gflBDSV9CQVNFX0FERFJF U1NfTUVNX01BU0s7CiAgICAgICAgICAgICB9IAogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg ICAgICAgICAgcmVzb3VyY2UgPSAmbWVtX3Jlc291cmNlOwotICAgICAgICAgICAgICAgIGJhcl9k YXRhICY9IH5QQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNLOwogICAgICAgICAgICAgfQogICAgICAg ICAgICAgbW1pb190b3RhbCAtPSBiYXJfc3o7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg ICAgICB7CiAgICAgICAgICAgICByZXNvdXJjZSA9ICZpb19yZXNvdXJjZTsKLSAgICAgICAgICAg IGJhcl9kYXRhICY9IH5QQ0lfQkFTRV9BRERSRVNTX0lPX01BU0s7CiAgICAgICAgIH0KIAogICAg ICAgICBiYXNlID0gKHJlc291cmNlLT5iYXNlICArIGJhcl9zeiAtIDEpICYgfih1aW50NjRfdCko YmFyX3N6IC0gMSk7CkBAIC01MTksNyArNTk0LDcgQEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKICAg ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJhcl9kYXRhIHw9ICh1aW50MzJfdCli YXNlOworICAgICAgICBiYXJfZGF0YSB8PSAodWludDMyX3QpIChiYXNlICYgYmFyc1tpXS5hZGRy X21hc2spOwogICAgICAgICBiYXJfZGF0YV91cHBlciA9ICh1aW50MzJfdCkoYmFzZSA+PiAzMik7 CiAgICAgICAgIGJhc2UgKz0gYmFyX3N6OwogCkBAIC01NDQsOSArNjE5LDcgQEAgdm9pZCBwY2lf c2V0dXAodm9pZCkKIAogICAgICAgICAvKiBOb3cgZW5hYmxlIHRoZSBtZW1vcnkgb3IgSS9PIG1h cHBpbmcuICovCiAgICAgICAgIGNtZCA9IHBjaV9yZWFkdyhkZXZmbiwgUENJX0NPTU1BTkQpOwot ICAgICAgICBpZiAoIChiYXJfcmVnID09IFBDSV9ST01fQUREUkVTUykgfHwKLSAgICAgICAgICAg ICAoKGJhcl9kYXRhICYgUENJX0JBU0VfQUREUkVTU19TUEFDRSkgPT0KLSAgICAgICAgICAgICAg UENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkpICkKKyAgICAgICAgaWYgKCBiYXJzW2ldLmlz X21lbSApCiAgICAgICAgICAgICBjbWQgfD0gUENJX0NPTU1BTkRfTUVNT1JZOwogICAgICAgICBl bHNlCiAgICAgICAgICAgICBjbWQgfD0gUENJX0NPTU1BTkRfSU87CmRpZmYgLS1naXQgYS90b29s cy9maXJtd2FyZS9odm1sb2FkZXIvcGNpX3JlZ3MuaCBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRl ci9wY2lfcmVncy5oCmluZGV4IGJhNDk4Yjg0MGUuLjRmMWM2ZDA4MDAgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2Zpcm13YXJlL2h2bWxvYWRlci9wY2lfcmVncy5oCisrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2 bWxvYWRlci9wY2lfcmVncy5oCkBAIC0xMTEsNiArMTExLDggQEAKICNkZWZpbmUgUENJX0RFVklD RV9JRF9JTlRFTF84MjQ0MSAgICAgICAgMHgxMjM3CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5U RUxfUTM1X01DSCAgICAgIDB4MjljMAogCisjZGVmaW5lIFBDSV9NQ0hfUENJRVhCQVIgICAgICAg ICAgICAgICAgIDB4NjAKKwogCiAjZW5kaWYgLyogX19IVk1MT0FERVJfUENJX1JFR1NfSF9fICov CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=