From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 19/62] x86/entry: Early PVH boot code Date: Fri, 12 Jan 2018 11:28:27 +0000 Message-ID: <20180112112910.16762-20-wei.liu2@citrix.com> References: <20180112112910.16762-1-wei.liu2@citrix.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 1eZxz9-0003En-WD for xen-devel@lists.xenproject.org; Fri, 12 Jan 2018 11:59:00 +0000 In-Reply-To: <20180112112910.16762-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1i eTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCnYyOgoxLiBG aXggY29tbWVudC4KMi4gVXNlIGNtcGIgJDAuCjMuIEFkZHJlc3MgY29tbWVudHMgb24gcHZoLWJv b3QuYy4KNC4gSGF2ZW4ndCBjaGFuZ2VkIHRoZSBwcml0bmsgbW9kaWZpZXJzIHRvIGFjY29tbW9k YXRlIGZ1dHVyZSBjaGFuZ2VzLgo1LiBNaXNzaW5nIGEgcHJlcmVxdWlzaXRlIHBhdGNoIHRvIHJl bG9jYXRlIHB2aF9pbmZvIHRvIG1ha2UgX192YSB3b3JrIHJlbGlhYmx5LgogICBbQkxPQ0tFUl0u Ci0tLQogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKIHhlbi9h cmNoL3g4Ni9ib290L2hlYWQuUyAgICAgICAgICAgICB8ICA0MCArKysrKysrKysrKy0KIHhlbi9h cmNoL3g4Ni9ib290L3g4Nl82NC5TICAgICAgICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2L2d1 ZXN0L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9ndWVzdC9wdmgtYm9v dC5jICAgICAgICB8IDExOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgICAgIHwgIDE4ICsrKysrLQogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9ndWVzdC5oICAgICAgICAgIHwgIDM0ICsrKysrKysrKysKIHhlbi9pbmNsdWRl L2FzbS14ODYvZ3Vlc3QvcHZoLWJvb3QuaCB8ICA1NyArKysrKysrKysrKysrKysrKwogOCBmaWxl cyBjaGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vYXJjaC94ODYvZ3Vlc3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4 ZW4vYXJjaC94ODYvZ3Vlc3QvcHZoLWJvb3QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNs dWRlL2FzbS14ODYvZ3Vlc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS14 ODYvZ3Vlc3QvcHZoLWJvb3QuaAoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBi L3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQppbmRleCAwMWQxMTc4NTMwLi5hYzkxZTEzNjA2IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxl CkBAIC0xLDYgKzEsNyBAQAogc3ViZGlyLXkgKz0gYWNwaQogc3ViZGlyLXkgKz0gY3B1CiBzdWJk aXIteSArPSBnZW5hcGljCitzdWJkaXItJChDT05GSUdfWEVOX0dVRVNUKSArPSBndWVzdAogc3Vi ZGlyLSQoQ09ORklHX0hWTSkgKz0gaHZtCiBzdWJkaXIteSArPSBtbQogc3ViZGlyLSQoQ09ORklH X1hFTk9QUk9GKSArPSBvcHJvZmlsZQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvaGVh ZC5TIGIveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCmluZGV4IDQ3MjI1NWE0YjcuLjRmZTVhNzc2 YjEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUworKysgYi94ZW4vYXJjaC94 ODYvYm9vdC9oZWFkLlMKQEAgLTM3OSw3ICszNzksMzkgQEAgY3MzMl9zd2l0Y2g6CiBFTEZOT1RF KFhlbiwgWEVOX0VMRk5PVEVfUEhZUzMyX0VOVFJZLCAubG9uZyBzeW1fb2ZmcyhfX3B2aF9zdGFy dCkpCiAKIF9fcHZoX3N0YXJ0OgotICAgICAgICB1ZDJhCisgICAgICAgIGNsZAorICAgICAgICBj bGkKKworICAgICAgICAvKgorICAgICAgICAgKiBXZSBuZWVkIG9uZSBwdXNoL3BvcCB0byBkZXRl cm1pbmUgbG9hZCBhZGRyZXNzLiAgVXNlIHRoZSBzYW1lCisgICAgICAgICAqIGFic29sdXRlIHN0 YWNrIGFkZHJlc3MgYXMgdGhlIG5hdGl2ZSBwYXRoLCBmb3IgbGFjayBvZiBhIGJldHRlcgorICAg ICAgICAgKiBhbHRlcm5hdGl2ZS4KKyAgICAgICAgICovCisgICAgICAgIG1vdiAgICAgJDB4MTAw MCwgJWVzcAorCisgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgbG9hZCBiYXNlIGFkZHJlc3MuICov CisgICAgICAgIGNhbGwgICAgMWYKKzE6ICAgICAgcG9wICAgICAlZXNpCisgICAgICAgIHN1YiAg ICAgJHN5bV9vZmZzKDFiKSwgJWVzaQorCisgICAgICAgIC8qIFNldCB1cCBzdGFjay4gKi8KKyAg ICAgICAgbGVhICAgICBTVEFDS19TSVpFICsgc3ltX2VzaShjcHUwX3N0YWNrKSwgJWVzcAorCisg ICAgICAgIG1vdiAgICAgJWVieCwgc3ltX2VzaShwdmhfc3RhcnRfaW5mb19wYSkKKworICAgICAg ICAvKiBQcmVwYXJlIGdkdCBhbmQgc2VnbWVudHMgKi8KKyAgICAgICAgYWRkICAgICAlZXNpLCBz eW1fZXNpKGdkdF9ib290X2Jhc2UpCisgICAgICAgIGxnZHQgICAgc3ltX2VzaShnZHRfYm9vdF9k ZXNjcikKKworICAgICAgICBtb3YgICAgICRCT09UX0RTLCAlZWN4CisgICAgICAgIG1vdiAgICAg JWVjeCwgJWRzCisgICAgICAgIG1vdiAgICAgJWVjeCwgJWVzCisgICAgICAgIG1vdiAgICAgJWVj eCwgJXNzCisKKyAgICAgICAgLyogU2tpcCBib290bG9hZGVyIHNldHVwIGFuZCBiaW9zIHNldHVw LCBnbyBzdHJhaWdodCB0byB0cmFtcG9saW5lICovCisgICAgICAgIG1vdmIgICAgJDEsIHN5bV9l c2kocHZoX2Jvb3QpCisgICAgICAgIG1vdmIgICAgJDEsIHN5bV9lc2koc2tpcF9yZWFsbW9kZSkK KyAgICAgICAgam1wICAgICB0cmFtcG9saW5lX3NldHVwCiAKICNlbmRpZiAvKiBDT05GSUdfUFZI X0dVRVNUICovCiAKQEAgLTU0MywxMiArNTc1LDE4IEBAIHRyYW1wb2xpbmVfc2V0dXA6CiAgICAg ICAgIC8qIEdldCBib3R0b20tbW9zdCBsb3ctbWVtb3J5IHN0YWNrIGFkZHJlc3MuICovCiAgICAg ICAgIGFkZCAgICAgJFRSQU1QT0xJTkVfU1BBQ0UsJWVjeAogCisjaWZkZWYgQ09ORklHX1BWSF9H VUVTVAorICAgICAgICBjbXBiICAgICQwLCBzeW1fZnMocHZoX2Jvb3QpCisgICAgICAgIGpuZSAg ICAgMWYKKyNlbmRpZgorCiAgICAgICAgIC8qIFNhdmUgdGhlIE11bHRpYm9vdCBpbmZvIHN0cnVj dCAoYWZ0ZXIgcmVsb2NhdGlvbikgZm9yIGxhdGVyIHVzZS4gKi8KICAgICAgICAgcHVzaCAgICAl ZWN4ICAgICAgICAgICAgICAgIC8qIEJvdHRvbS1tb3N0IGxvdy1tZW1vcnkgc3RhY2sgYWRkcmVz cy4gKi8KICAgICAgICAgcHVzaCAgICAlZWJ4ICAgICAgICAgICAgICAgIC8qIE11bHRpYm9vdCBp bmZvcm1hdGlvbiBhZGRyZXNzLiAqLwogICAgICAgICBwdXNoICAgICVlYXggICAgICAgICAgICAg ICAgLyogTXVsdGlib290IG1hZ2ljLiAqLwogICAgICAgICBjYWxsICAgIHJlbG9jCiAgICAgICAg IG1vdiAgICAgJWVheCxzeW1fZnMobXVsdGlib290X3B0cikKKzE6CiAKICAgICAgICAgLyoKICAg ICAgICAgICogTm93IHRyYW1wb2xpbmVfcGh5cyBwb2ludHMgdG8gdGhlIGZvbGxvd2luZyBzdHJ1 Y3R1cmUgKGxvd2VzdCBhZGRyZXNzCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC94ODZf NjQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TCmluZGV4IDkyNWZkNGJiMGEuLmNmNDdl MDE5ZjUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TCisrKyBiL3hlbi9h cmNoL3g4Ni9ib290L3g4Nl82NC5TCkBAIC0zMSw3ICszMSw3IEBAIEVOVFJZKF9faGlnaF9zdGFy dCkKICAgICAgICAgdGVzdCAgICAlZWJ4LCVlYngKICAgICAgICAgam56ICAgICBzdGFydF9zZWNv bmRhcnkKIAotICAgICAgICAvKiBQYXNzIG9mZiB0aGUgTXVsdGlib290IGluZm8gc3RydWN0dXJl IHRvIEMgbGFuZC4gKi8KKyAgICAgICAgLyogUGFzcyBvZmYgdGhlIE11bHRpYm9vdCBpbmZvIHN0 cnVjdHVyZSB0byBDIGxhbmQgKGlmIGFwcGxpY2FibGUpLiAqLwogICAgICAgICBtb3YgICAgIG11 bHRpYm9vdF9wdHIoJXJpcCksJWVkaQogICAgICAgICBjYWxsICAgIF9fc3RhcnRfeGVuCiAgICAg ICAgIEJVRyAgICAgLyogX19zdGFydF94ZW4oKSBzaG91bGRuJ3QgcmV0dXJuLiAqLwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2d1ZXN0L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L2d1ZXN0L01h a2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE1ZjE2MjVhYjEK LS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvZ3Vlc3QvTWFrZWZpbGUKQEAgLTAsMCAr MSBAQAorb2JqLWJpbi0kKENPTkZJR19QVkhfR1VFU1QpICs9IHB2aC1ib290LmluaXQubwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2d1ZXN0L3B2aC1ib290LmMgYi94ZW4vYXJjaC94ODYvZ3Vl c3QvcHZoLWJvb3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xODZl MzMyNjU3Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gveDg2L2d1ZXN0L3B2aC1ib290LmMK QEAgLTAsMCArMSwxMTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGFyY2gveDg2L2d1 ZXN0L3B2aC1ib290LmMKKyAqCisgKiBQVkggYm9vdCB0aW1lIHN1cHBvcnQKKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE3IENpdHJpeCBT eXN0ZW1zIEx0ZC4KKyAqLworI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL2xp Yi5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorCisjaW5jbHVkZSA8YXNtL2d1ZXN0Lmg+CisKKyNp bmNsdWRlIDxwdWJsaWMvYXJjaC14ODYvaHZtL3N0YXJ0X2luZm8uaD4KKworLyogSW5pdGlhbGlz ZWQgaW4gaGVhZC5TLCBiZWZvcmUgLmJzcyBpcyB6ZXJvZWQuICovCitib29sIF9faW5pdGRhdGEg cHZoX2Jvb3Q7Cit1aW50MzJfdCBfX2luaXRkYXRhIHB2aF9zdGFydF9pbmZvX3BhOworCitzdGF0 aWMgbXVsdGlib290X2luZm9fdCBfX2luaXRkYXRhIHB2aF9tYmk7CitzdGF0aWMgbW9kdWxlX3Qg X19pbml0ZGF0YSBwdmhfbWJpX21vZHNbOF07CitzdGF0aWMgY29uc3QgY2hhciAqX19pbml0ZGF0 YSBwdmhfbG9hZGVyID0gIlBWSCBEaXJlY3Rib290IjsKKworc3RhdGljIHZvaWQgX19pbml0IGNv bnZlcnRfcHZoX2luZm8odm9pZCkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8g KnB2aF9pbmZvID0gX192YShwdmhfc3RhcnRfaW5mb19wYSk7CisgICAgY29uc3Qgc3RydWN0IGh2 bV9tb2RsaXN0X2VudHJ5ICplbnRyeTsKKyAgICBtb2R1bGVfdCAqbW9kOworICAgIHVuc2lnbmVk IGludCBpOworCisgICAgQVNTRVJUKHB2aF9pbmZvLT5tYWdpYyA9PSBYRU5fSFZNX1NUQVJUX01B R0lDX1ZBTFVFKTsKKworICAgIC8qCisgICAgICogVHVybiBodm1fc3RhcnRfaW5mbyBpbnRvIG1i aS4gTHVja2lseSBhbGwgbW9kdWxlcyBhcmUgcGxhY2VkIHVuZGVyIDRHQgorICAgICAqIGJvdW5k YXJ5IG9uIHg4Ni4KKyAgICAgKi8KKyAgICBwdmhfbWJpLmZsYWdzID0gTUJJX0NNRExJTkUgfCBN QklfTU9EVUxFUyB8IE1CSV9MT0FERVJOQU1FOworCisgICAgQlVHX09OKHB2aF9pbmZvLT5jbWRs aW5lX3BhZGRyID4+IDMyKTsKKyAgICBwdmhfbWJpLmNtZGxpbmUgPSBwdmhfaW5mby0+Y21kbGlu ZV9wYWRkcjsKKyAgICBwdmhfbWJpLmJvb3RfbG9hZGVyX25hbWUgPSBfX3BhKHB2aF9sb2FkZXIp OworCisgICAgQlVHX09OKHB2aF9pbmZvLT5ucl9tb2R1bGVzID49IEFSUkFZX1NJWkUocHZoX21i aV9tb2RzKSk7CisgICAgcHZoX21iaS5tb2RzX2NvdW50ID0gcHZoX2luZm8tPm5yX21vZHVsZXM7 CisgICAgcHZoX21iaS5tb2RzX2FkZHIgPSBfX3BhKHB2aF9tYmlfbW9kcyk7CisKKyAgICBtb2Qg PSBwdmhfbWJpX21vZHM7CisgICAgZW50cnkgPSBfX3ZhKHB2aF9pbmZvLT5tb2RsaXN0X3BhZGRy KTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IHB2aF9pbmZvLT5ucl9tb2R1bGVzOyBpKysgKQorICAg IHsKKyAgICAgICAgQlVHX09OKGVudHJ5W2ldLnBhZGRyID4+IDMyKTsKKyAgICAgICAgQlVHX09O KGVudHJ5W2ldLmNtZGxpbmVfcGFkZHIgPj4gMzIpOworCisgICAgICAgIG1vZFtpXS5tb2Rfc3Rh cnQgPSBlbnRyeVtpXS5wYWRkcjsKKyAgICAgICAgbW9kW2ldLm1vZF9lbmQgICA9IGVudHJ5W2ld LnBhZGRyICsgZW50cnlbaV0uc2l6ZTsKKyAgICAgICAgbW9kW2ldLnN0cmluZyAgICA9IGVudHJ5 W2ldLmNtZGxpbmVfcGFkZHI7CisgICAgfQorfQorCittdWx0aWJvb3RfaW5mb190ICpfX2luaXQg cHZoX2luaXQodm9pZCkKK3sKKyAgICBjb252ZXJ0X3B2aF9pbmZvKCk7CisKKyAgICByZXR1cm4g JnB2aF9tYmk7Cit9CisKK3ZvaWQgX19pbml0IHB2aF9wcmludF9pbmZvKHZvaWQpCit7CisgICAg Y29uc3Qgc3RydWN0IGh2bV9zdGFydF9pbmZvICpwdmhfaW5mbyA9IF9fdmEocHZoX3N0YXJ0X2lu Zm9fcGEpOworICAgIGNvbnN0IHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeSAqZW50cnk7CisgICAg dW5zaWduZWQgaW50IGk7CisKKyAgICBBU1NFUlQocHZoX2luZm8tPm1hZ2ljID09IFhFTl9IVk1f U1RBUlRfTUFHSUNfVkFMVUUpOworCisgICAgcHJpbnRrKCJQVkggc3RhcnQgaW5mbzogKHBhICUw OHgpXG4iLCBwdmhfc3RhcnRfaW5mb19wYSk7CisgICAgcHJpbnRrKCIgIHZlcnNpb246ICAgICV1 XG4iLCBwdmhfaW5mby0+dmVyc2lvbik7CisgICAgcHJpbnRrKCIgIGZsYWdzOiAgICAgICUjIlBS SXgzMiJcbiIsIHB2aF9pbmZvLT5mbGFncyk7CisgICAgcHJpbnRrKCIgIG5yX21vZHVsZXM6ICV1 XG4iLCBwdmhfaW5mby0+bnJfbW9kdWxlcyk7CisgICAgcHJpbnRrKCIgIG1vZGxpc3RfcGE6ICUw MTYiUFJJeDY0IlxuIiwgcHZoX2luZm8tPm1vZGxpc3RfcGFkZHIpOworICAgIHByaW50aygiICBj bWRsaW5lX3BhOiAlMDE2IlBSSXg2NCJcbiIsIHB2aF9pbmZvLT5jbWRsaW5lX3BhZGRyKTsKKyAg ICBpZiAoIHB2aF9pbmZvLT5jbWRsaW5lX3BhZGRyICkKKyAgICAgICAgcHJpbnRrKCIgIGNtZGxp bmU6ICAgICclcydcbiIsIChjaGFyICopX192YShwdmhfaW5mby0+Y21kbGluZV9wYWRkcikpOwor ICAgIHByaW50aygiICByc2RwX3BhOiAgICAlMDE2IlBSSXg2NCJcbiIsIHB2aF9pbmZvLT5yc2Rw X3BhZGRyKTsKKworICAgIGVudHJ5ID0gX192YShwdmhfaW5mby0+bW9kbGlzdF9wYWRkcik7Cisg ICAgZm9yICggaSA9IDA7IGkgPCBwdmhfaW5mby0+bnJfbW9kdWxlczsgaSsrICkKKyAgICB7Cisg ICAgICAgIHByaW50aygiICAgIG1vZFsldV0ucGE6ICAgICAgICAgJTAxNiJQUkl4NjQiXG4iLCBp LCBlbnRyeVtpXS5wYWRkcik7CisgICAgICAgIHByaW50aygiICAgIG1vZFsldV0uc2l6ZTogICAg ICAgJTAxNiJQUkl1NjQiXG4iLCBpLCBlbnRyeVtpXS5zaXplKTsKKyAgICAgICAgcHJpbnRrKCIg ICAgbW9kWyV1XS5jbWRsaW5lX3BhOiAlMDE2IlBSSXg2NCJcbiIsCisgICAgICAgICAgICAgICBp LCBlbnRyeVtpXS5jbWRsaW5lX3BhZGRyKTsKKyAgICAgICAgaWYgKCBlbnRyeVtpXS5jbWRsaW5l X3BhZGRyICkKKyAgICAgICAgICAgIHByaW50aygiICAgIG1vZFslMXVdLmNtZGxpbmU6ICAgICcl cydcbiIsIGksCisgICAgICAgICAgICAgICAgICAgKGNoYXIgKilfX3ZhKGVudHJ5W2ldLmNtZGxp bmVfcGFkZHIpKTsKKyAgICB9Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl OiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFi LXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwppbmRleCA2 NTE3MGZlNTRjLi5mNTA3ZDIyYTJkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAuYwor KysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgPGFz bS9hbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPGFzbS9tYzE0NjgxOHJ0Yy5oPgogI2luY2x1ZGUg PGFzbS9jcHVpZC5oPgorI2luY2x1ZGUgPGFzbS9ndWVzdC5oPgogCiAvKiBvcHRfbm9zbXA6IElm IHRydWUsIHNlY29uZGFyeSBwcm9jZXNzb3JzIGFyZSBpZ25vcmVkLiAqLwogc3RhdGljIGJvb2wg X19pbml0ZGF0YSBvcHRfbm9zbXA7CkBAIC02NDksOCArNjUwLDggQEAgdm9pZCBfX2luaXQgbm9y ZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICBjaGFyICptZW1tYXBf dHlwZSA9IE5VTEw7CiAgICAgY2hhciAqY21kbGluZSwgKmtleHRyYSwgKmxvYWRlcjsKICAgICB1 bnNpZ25lZCBpbnQgaW5pdHJkaWR4LCBkb21jcl9mbGFncyA9IERPTUNSRl9zM19pbnRlZ3JpdHk7 Ci0gICAgbXVsdGlib290X2luZm9fdCAqbWJpID0gX192YShtYmlfcCk7Ci0gICAgbW9kdWxlX3Qg Km1vZCA9IChtb2R1bGVfdCAqKV9fdmEobWJpLT5tb2RzX2FkZHIpOworICAgIG11bHRpYm9vdF9p bmZvX3QgKm1iaTsKKyAgICBtb2R1bGVfdCAqbW9kOwogICAgIHVuc2lnbmVkIGxvbmcgbnJfcGFn ZXMsIHJhd19tYXhfcGFnZSwgbW9kdWxlc19oZWFkcm9vbSwgKm1vZHVsZV9tYXA7CiAgICAgaW50 IGksIGosIGU4MjBfd2FybiA9IDAsIGJ5dGVzID0gMDsKICAgICBib29sIGFjcGlfYm9vdF90YWJs ZV9pbml0X2RvbmUgPSBmYWxzZSwgcmVsb2NhdGVkID0gZmFsc2U7CkBAIC02ODAsNiArNjgxLDE2 IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3Ap CiAKICAgICAvKiBGdWxsIGV4Y2VwdGlvbiBzdXBwb3J0IGZyb20gaGVyZSBvbiBpbi4gKi8KIAor ICAgIGlmICggcHZoX2Jvb3QgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1iaV9wID09IDApOwor ICAgICAgICBtYmkgPSBwdmhfaW5pdCgpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIG1iaSA9 IF9fdmEobWJpX3ApOworCisgICAgbW9kID0gX192YShtYmktPm1vZHNfYWRkcik7CisKICAgICBs b2FkZXIgPSAobWJpLT5mbGFncyAmIE1CSV9MT0FERVJOQU1FKQogICAgICAgICA/IChjaGFyICop X192YShtYmktPmJvb3RfbG9hZGVyX25hbWUpIDogInVua25vd24iOwogCkBAIC03MTksNiArNzMw LDkgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlf cCkKICAgICBlaGNpX2RiZ3BfaW5pdCgpOwogICAgIGNvbnNvbGVfaW5pdF9wcmVpcnEoKTsKIAor ICAgIGlmICggcHZoX2Jvb3QgKQorICAgICAgICBwdmhfcHJpbnRfaW5mbygpOworCiAgICAgcHJp bnRrKCJCb290bG9hZGVyOiAlc1xuIiwgbG9hZGVyKTsKIAogICAgIHByaW50aygiQ29tbWFuZCBs aW5lOiAlc1xuIiwgY21kbGluZSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1 ZXN0LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNjMwYzA5MmMyNQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvZ3Vlc3QuaApAQCAtMCwwICsxLDM0IEBACisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKiBhc20teDg2L2d1ZXN0LmgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UsIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ2l0cml4IFN5c3RlbXMgTHRkLgor ICovCisKKyNpZm5kZWYgX19YODZfR1VFU1RfSF9fCisjZGVmaW5lIF9fWDg2X0dVRVNUX0hfXwor CisjaW5jbHVkZSA8YXNtL2d1ZXN0L3B2aC1ib290Lmg+CisKKyNlbmRpZiAvKiBfX1g4Nl9HVUVT VF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmls ZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAq IGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2d1ZXN0L3B2aC1ib290LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0 L3B2aC1ib290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWI0Mjlm OTQwMQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QvcHZoLWJv b3QuaApAQCAtMCwwICsxLDU3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBhc20teDg2 L2d1ZXN0L3B2aC1ib290LmgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Us IHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ2l0cml4IFN5c3RlbXMgTHRkLgorICovCisK KyNpZm5kZWYgX19YODZfUFZIX0JPT1RfSF9fCisjZGVmaW5lIF9fWDg2X1BWSF9CT09UX0hfXwor CisjaW5jbHVkZSA8eGVuL211bHRpYm9vdC5oPgorCisjaWZkZWYgQ09ORklHX1BWSF9HVUVTVAor CitleHRlcm4gYm9vbCBwdmhfYm9vdDsKKworbXVsdGlib290X2luZm9fdCAqcHZoX2luaXQodm9p ZCk7Cit2b2lkIHB2aF9wcmludF9pbmZvKHZvaWQpOworCisjZWxzZQorCisjZGVmaW5lIHB2aF9i b290IDAKKworc3RhdGljIGlubGluZSBtdWx0aWJvb3RfaW5mb190ICpwdmhfaW5pdCh2b2lkKQor eworICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgcHZoX3ByaW50X2luZm8odm9pZCkKK3sKKyAgICBBU1NFUlRfVU5SRUFD SEFCTEUoKTsKK30KKworI2VuZGlmIC8qIENPTkZJR19QVkhfR1VFU1QgKi8KKyNlbmRpZiAvKiBf X1g4Nl9QVkhfQk9PVF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjEx LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs