From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC v1 21/74] x86/entry: Early PVH boot code Date: Thu, 4 Jan 2018 13:05:32 +0000 Message-ID: <20180104130625.28605-22-wei.liu2@citrix.com> References: <20180104130625.28605-1-wei.liu2@citrix.com> 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 1eX5aT-00066L-0e for xen-devel@lists.xenproject.org; Thu, 04 Jan 2018 13:29:37 +0000 In-Reply-To: <20180104130625.28605-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 eTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJj aC94ODYvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2Jvb3Qv aGVhZC5TICAgICAgICAgICAgIHwgIDQwICsrKysrKysrKysrLQogeGVuL2FyY2gveDg2L2Jvb3Qv eDg2XzY0LlMgICAgICAgICAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvZ3Vlc3QvTWFrZWZpbGUg ICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2d1ZXN0L3B2aC1ib290LmMgICAgICAgIHwg MTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvc2V0 dXAuYyAgICAgICAgICAgICAgICAgfCAgMTggKysrKystCiB4ZW4vaW5jbHVkZS9hc20teDg2L2d1 ZXN0LmggICAgICAgICAgfCAgMzQgKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVz dC9wdmgtYm9vdC5oIHwgIDU3ICsrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDI2 OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9h cmNoL3g4Ni9ndWVzdC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9n dWVzdC9wdmgtYm9vdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9n dWVzdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdC9wdmgt Ym9vdC5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2 L01ha2VmaWxlCmluZGV4IGI1ODE0MWVmZTIuLmE4YTM2ODY4MTIgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAgLTEsNiArMSw3 IEBACiBzdWJkaXIteSArPSBhY3BpCiBzdWJkaXIteSArPSBjcHUKIHN1YmRpci15ICs9IGdlbmFw aWMKK3N1YmRpci0kKENPTkZJR19YRU5fR1VFU1QpICs9IGd1ZXN0CiBzdWJkaXItJChDT05GSUdf SFZNKSArPSBodm0KIHN1YmRpci15ICs9IG1tCiBzdWJkaXItJChDT05GSUdfWEVOT1BST0YpICs9 IG9wcm9maWxlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgYi94ZW4vYXJj aC94ODYvYm9vdC9oZWFkLlMKaW5kZXggNjgxMDQyMjQzNS4uODlhOTY4ZjcwNCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQu UwpAQCAtMzgwLDcgKzM4MCwzOSBAQCBjczMyX3N3aXRjaDoKIEVMRk5PVEUoWGVuLCBYRU5fRUxG Tk9URV9QSFlTMzJfRU5UUlksIC5sb25nIHN5bV9vZmZzKF9fcHZoX3N0YXJ0KSkKIAogX19wdmhf c3RhcnQ6Ci0gICAgICAgIHVkMmEKKyAgICAgICAgY2xkCisgICAgICAgIGNsaQorCisgICAgICAg IC8qCisgICAgICAgICAqIFdlIG5lZWQgb25lIHB1c2gvcG9wIHRvIGRldGVybWluZSBsb2FkIGFk ZHJlc3MuICBVc2UgdGhlIHNhbWUKKyAgICAgICAgICogYWJzb2x1dGUgYWRkcmVzcyBhcyB0aGUg bmF0aXZlIHBhdGgsIGZvciBsYWNrIG9mIGEgYmV0dGVyCisgICAgICAgICAqIGFsdGVybmF0aXZl LgorICAgICAgICAgKi8KKyAgICAgICAgbW92ICAgICAkMHgxMDAwLCAlZXNwCisKKyAgICAgICAg LyogQ2FsY3VsYXRlIHRoZSBsb2FkIGJhc2UgYWRkcmVzcy4gKi8KKyAgICAgICAgY2FsbCAgICAx ZgorMTogICAgICBwb3AgICAgICVlc2kKKyAgICAgICAgc3ViICAgICAkc3ltX29mZnMoMWIpLCAl ZXNpCisKKyAgICAgICAgLyogU2V0IHVwIHN0YWNrLiAqLworICAgICAgICBsZWEgICAgIFNUQUNL X1NJWkUgKyBzeW1fZXNpKGNwdTBfc3RhY2spLCAlZXNwCisKKyAgICAgICAgbW92ICAgICAlZWJ4 LCBzeW1fZXNpKHB2aF9zdGFydF9pbmZvX3BhKQorCisgICAgICAgIC8qIFByZXBhcmUgZ2R0IGFu ZCBzZWdtZW50cyAqLworICAgICAgICBhZGQgICAgICVlc2ksIHN5bV9lc2koZ2R0X2Jvb3RfYmFz ZSkKKyAgICAgICAgbGdkdCAgICBzeW1fZXNpKGdkdF9ib290X2Rlc2NyKQorCisgICAgICAgIG1v diAgICAgJEJPT1RfRFMsICVlY3gKKyAgICAgICAgbW92ICAgICAlZWN4LCAlZHMKKyAgICAgICAg bW92ICAgICAlZWN4LCAlZXMKKyAgICAgICAgbW92ICAgICAlZWN4LCAlc3MKKworICAgICAgICAv KiBTa2lwIGJvb3Rsb2FkZXIgc2V0dXAgYW5kIGJpb3Mgc2V0dXAsIGdvIHN0cmFpZ2h0IHRvIHRy YW1wb2xpbmUgKi8KKyAgICAgICAgbW92YiAgICAkMSwgc3ltX2VzaShwdmhfYm9vdCkKKyAgICAg ICAgbW92YiAgICAkMSwgc3ltX2VzaShza2lwX3JlYWxtb2RlKQorICAgICAgICBqbXAgICAgIHRy YW1wb2xpbmVfc2V0dXAKIAogI2VuZGlmIC8qIENPTkZJR19QVkhfR1VFU1QgKi8KIApAQCAtNTQ0 LDEyICs1NzYsMTggQEAgdHJhbXBvbGluZV9zZXR1cDoKICAgICAgICAgLyogR2V0IGJvdHRvbS1t b3N0IGxvdy1tZW1vcnkgc3RhY2sgYWRkcmVzcy4gKi8KICAgICAgICAgYWRkICAgICAkVFJBTVBP TElORV9TUEFDRSwlZWN4CiAKKyNpZmRlZiBDT05GSUdfUFZIX0dVRVNUCisgICAgICAgIGNtcGIg ICAgJDEsIHN5bV9mcyhwdmhfYm9vdCkKKyAgICAgICAgamUgICAgICAxZgorI2VuZGlmCisKICAg ICAgICAgLyogU2F2ZSB0aGUgTXVsdGlib290IGluZm8gc3RydWN0IChhZnRlciByZWxvY2F0aW9u KSBmb3IgbGF0ZXIgdXNlLiAqLwogICAgICAgICBwdXNoICAgICVlY3ggICAgICAgICAgICAgICAg LyogQm90dG9tLW1vc3QgbG93LW1lbW9yeSBzdGFjayBhZGRyZXNzLiAqLwogICAgICAgICBwdXNo ICAgICVlYnggICAgICAgICAgICAgICAgLyogTXVsdGlib290IGluZm9ybWF0aW9uIGFkZHJlc3Mu ICovCiAgICAgICAgIHB1c2ggICAgJWVheCAgICAgICAgICAgICAgICAvKiBNdWx0aWJvb3QgbWFn aWMuICovCiAgICAgICAgIGNhbGwgICAgcmVsb2MKICAgICAgICAgbW92ICAgICAlZWF4LHN5bV9m cyhtdWx0aWJvb3RfcHRyKQorMToKIAogICAgICAgICAvKgogICAgICAgICAgKiBOb3cgdHJhbXBv bGluZV9waHlzIHBvaW50cyB0byB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSAobG93ZXN0IGFkZHJl c3MKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TIGIveGVuL2FyY2gveDg2 L2Jvb3QveDg2XzY0LlMKaW5kZXggOTI1ZmQ0YmIwYS4uY2Y0N2UwMTlmNSAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2Jvb3QveDg2XzY0LlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QveDg2XzY0 LlMKQEAgLTMxLDcgKzMxLDcgQEAgRU5UUlkoX19oaWdoX3N0YXJ0KQogICAgICAgICB0ZXN0ICAg ICVlYngsJWVieAogICAgICAgICBqbnogICAgIHN0YXJ0X3NlY29uZGFyeQogCi0gICAgICAgIC8q IFBhc3Mgb2ZmIHRoZSBNdWx0aWJvb3QgaW5mbyBzdHJ1Y3R1cmUgdG8gQyBsYW5kLiAqLworICAg ICAgICAvKiBQYXNzIG9mZiB0aGUgTXVsdGlib290IGluZm8gc3RydWN0dXJlIHRvIEMgbGFuZCAo aWYgYXBwbGljYWJsZSkuICovCiAgICAgICAgIG1vdiAgICAgbXVsdGlib290X3B0ciglcmlwKSwl ZWRpCiAgICAgICAgIGNhbGwgICAgX19zdGFydF94ZW4KICAgICAgICAgQlVHICAgICAvKiBfX3N0 YXJ0X3hlbigpIHNob3VsZG4ndCByZXR1cm4uICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv Z3Vlc3QvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvZ3Vlc3QvTWFrZWZpbGUKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTVmMTYyNWFiMQotLS0gL2Rldi9udWxsCisrKyBi L3hlbi9hcmNoL3g4Ni9ndWVzdC9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitvYmotYmluLSQoQ09O RklHX1BWSF9HVUVTVCkgKz0gcHZoLWJvb3QuaW5pdC5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvZ3Vlc3QvcHZoLWJvb3QuYyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9wdmgtYm9vdC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmI5Mzc2MWY5NDgKLS0tIC9kZXYvbnVs bAorKysgYi94ZW4vYXJjaC94ODYvZ3Vlc3QvcHZoLWJvb3QuYwpAQCAtMCwwICsxLDExOSBAQAor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogYXJjaC94ODYvZ3Vlc3QvcHZoLWJvb3QuYworICoK KyAqIFBWSCBib290IHRpbWUgc3VwcG9ydAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ2l0cml4IFN5c3RlbXMgTHRkLgorICovCisj aW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVu L21tLmg+CisKKyNpbmNsdWRlIDxhc20vZ3Vlc3QuaD4KKworI2luY2x1ZGUgPHB1YmxpYy9hcmNo LXg4Ni9odm0vc3RhcnRfaW5mby5oPgorCisvKiBJbml0aWFsaXNlZCBpbiBoZWFkLlMsIGJlZm9y ZSAuYnNzIGlzIHplcm9lZC4gKi8KK2Jvb2wgcHZoX2Jvb3QgX19pbml0ZGF0YTsKK3VpbnQzMl90 IHB2aF9zdGFydF9pbmZvX3BhIF9faW5pdGRhdGE7CisKK3N0YXRpYyBtdWx0aWJvb3RfaW5mb190 IF9faW5pdGRhdGEgcHZoX21iaTsKK3N0YXRpYyBtb2R1bGVfdCBfX2luaXRkYXRhIHB2aF9tYmlf bW9kc1szMl07CitzdGF0aWMgY2hhciAqX19pbml0ZGF0YSBwdmhfbG9hZGVyID0gIlBWSCBEaXJl Y3Rib290IjsKKworc3RhdGljIHZvaWQgX19pbml0IGNvbnZlcnRfcHZoX2luZm8odm9pZCkKK3sK KyAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gKnB2aF9pbmZvID0gX192YShwdmhfc3RhcnRfaW5m b19wYSk7CisgICAgc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5ICplbnRyeTsKKyAgICBtb2R1bGVf dCAqbW9kOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgQVNTRVJUKHB2aF9pbmZvLT5tYWdp YyA9PSBYRU5fSFZNX1NUQVJUX01BR0lDX1ZBTFVFKTsKKworICAgIC8qCisgICAgICogVHVybiBo dm1fc3RhcnRfaW5mbyBpbnRvIG1iaS4gTHVja2lseSBhbGwgbW9kdWxlcyBhcmUgcGxhY2VkIHVu ZGVyIDRHQgorICAgICAqIGJvdW5kYXJ5IG9uIHg4Ni4KKyAgICAgKi8KKyAgICBwdmhfbWJpLmZs YWdzID0gTUJJX0NNRExJTkUgfCBNQklfTU9EVUxFUyB8IE1CSV9MT0FERVJOQU1FOworCisgICAg QVNTRVJUKCEocHZoX2luZm8tPmNtZGxpbmVfcGFkZHIgPj4gMzIpKTsKKyAgICBwdmhfbWJpLmNt ZGxpbmUgPSBwdmhfaW5mby0+Y21kbGluZV9wYWRkcjsKKyAgICBwdmhfbWJpLmJvb3RfbG9hZGVy X25hbWUgPSBfX3BhKHB2aF9sb2FkZXIpOworCisgICAgQVNTRVJUKHB2aF9pbmZvLT5ucl9tb2R1 bGVzIDwgMzIpOworICAgIHB2aF9tYmkubW9kc19jb3VudCA9IHB2aF9pbmZvLT5ucl9tb2R1bGVz OworICAgIHB2aF9tYmkubW9kc19hZGRyID0gX19wYShwdmhfbWJpX21vZHMpOworCisgICAgbW9k ID0gcHZoX21iaV9tb2RzOworICAgIGVudHJ5ID0gX192YShwdmhfaW5mby0+bW9kbGlzdF9wYWRk cik7CisgICAgZm9yICggaSA9IDA7IGkgPCBwdmhfaW5mby0+bnJfbW9kdWxlczsgaSsrICkKKyAg ICB7CisgICAgICAgIEFTU0VSVCghKGVudHJ5W2ldLnBhZGRyID4+IDMyKSk7CisKKyAgICAgICAg bW9kW2ldLm1vZF9zdGFydCA9IGVudHJ5W2ldLnBhZGRyOworICAgICAgICBtb2RbaV0ubW9kX2Vu ZCAgID0gZW50cnlbaV0ucGFkZHIgKyBlbnRyeVtpXS5zaXplOworICAgICAgICBtb2RbaV0uc3Ry aW5nICAgID0gZW50cnlbaV0uY21kbGluZV9wYWRkcjsKKyAgICB9Cit9CisKK211bHRpYm9vdF9p bmZvX3QgKl9faW5pdCBwdmhfaW5pdCh2b2lkKQoreworICAgIGNvbnZlcnRfcHZoX2luZm8oKTsK KworICAgIHJldHVybiAmcHZoX21iaTsKK30KKwordm9pZCBfX2luaXQgcHZoX3ByaW50X2luZm8o dm9pZCkKK3sKKyAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gKnB2aF9pbmZvID0gX192YShwdmhf c3RhcnRfaW5mb19wYSk7CisgICAgc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5ICplbnRyeTsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKworICAgIEFTU0VSVChwdmhfaW5mby0+bWFnaWMgPT0gWEVOX0hW TV9TVEFSVF9NQUdJQ19WQUxVRSk7CisKKyAgICBwcmludGsoIlBWSCBzdGFydCBpbmZvOiAocGEg JTA4eClcbiIsIHB2aF9zdGFydF9pbmZvX3BhKTsKKyAgICBwcmludGsoIiAgdmVyc2lvbjogICAg JXVcbiIsIHB2aF9pbmZvLT52ZXJzaW9uKTsKKyAgICBwcmludGsoIiAgZmxhZ3M6ICAgICAgJSMi UFJJeDMyIlxuIiwgcHZoX2luZm8tPmZsYWdzKTsKKyAgICBwcmludGsoIiAgbnJfbW9kdWxlczog JXVcbiIsIHB2aF9pbmZvLT5ucl9tb2R1bGVzKTsKKyAgICBwcmludGsoIiAgbW9kbGlzdF9wYTog JTAxNiJQUkl4NjQiXG4iLCBwdmhfaW5mby0+bW9kbGlzdF9wYWRkcik7CisgICAgcHJpbnRrKCIg IGNtZGxpbmVfcGE6ICUwMTYiUFJJeDY0IlxuIiwgcHZoX2luZm8tPmNtZGxpbmVfcGFkZHIpOwor ICAgIGlmICggcHZoX2luZm8tPmNtZGxpbmVfcGFkZHIgKQorICAgICAgICBwcmludGsoIiAgY21k bGluZTogICAgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgIChjaGFyICopX192YShwdmhfaW5mby0+ Y21kbGluZV9wYWRkcikpOworICAgIHByaW50aygiICByc2RwX3BhOiAgICAlMDE2IlBSSXg2NCJc biIsIHB2aF9pbmZvLT5yc2RwX3BhZGRyKTsKKworICAgIGVudHJ5ID0gX192YShwdmhfaW5mby0+ bW9kbGlzdF9wYWRkcik7CisgICAgZm9yICggaSA9IDA7IGkgPCBwdmhfaW5mby0+bnJfbW9kdWxl czsgaSsrICkKKyAgICB7CisgICAgICAgIHByaW50aygiICAgIG1vZFsldV0ucGE6ICAgICAgICAg JTAxNiJQUkl4NjQiXG4iLCBpLCBlbnRyeVtpXS5wYWRkcik7CisgICAgICAgIHByaW50aygiICAg IG1vZFsldV0uc2l6ZTogICAgICAgJTAxNiJQUkl1NjQiXG4iLCBpLCBlbnRyeVtpXS5zaXplKTsK KyAgICAgICAgcHJpbnRrKCIgICAgbW9kWyV1XS5jbWRsaW5lX3BhOiAlMDE2IlBSSXg2NCJcbiIs CisgICAgICAgICAgICAgICBpLCBlbnRyeVtpXS5jbWRsaW5lX3BhZGRyKTsKKyAgICAgICAgaWYg KCBlbnRyeVtpXS5jbWRsaW5lX3BhZGRyICkKKyAgICAgICAgICAgIHByaW50aygiICAgIG1vZFsl dV0uY21kbGluZTogICAgJyVzJ1xuIiwgaSwKKyAgICAgICAgICAgICAgICAgICAoY2hhciAqKV9f dmEoZW50cnlbaV0uY21kbGluZV9wYWRkcikpOworICAgIH0KK30KKworLyoKKyAqIExvY2FsIHZh cmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMt b2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog RW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAuYyBiL3hlbi9hcmNoL3g4 Ni9zZXR1cC5jCmluZGV4IDJlMTBjNmJkZjQuLjRiOGQwOWI3NTEgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC01MSw2ICs1MSw3 IEBACiAjaW5jbHVkZSA8YXNtL2FsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8YXNtL21jMTQ2ODE4 cnRjLmg+CiAjaW5jbHVkZSA8YXNtL2NwdWlkLmg+CisjaW5jbHVkZSA8YXNtL2d1ZXN0Lmg+CiAK IC8qIG9wdF9ub3NtcDogSWYgdHJ1ZSwgc2Vjb25kYXJ5IHByb2Nlc3NvcnMgYXJlIGlnbm9yZWQu ICovCiBzdGF0aWMgYm9vbCBfX2luaXRkYXRhIG9wdF9ub3NtcDsKQEAgLTY0OSw4ICs2NTAsOCBA QCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQog ICAgIGNoYXIgKm1lbW1hcF90eXBlID0gTlVMTDsKICAgICBjaGFyICpjbWRsaW5lLCAqa2V4dHJh LCAqbG9hZGVyOwogICAgIHVuc2lnbmVkIGludCBpbml0cmRpZHgsIGRvbWNyX2ZsYWdzID0gRE9N Q1JGX3MzX2ludGVncml0eTsKLSAgICBtdWx0aWJvb3RfaW5mb190ICptYmkgPSBfX3ZhKG1iaV9w KTsKLSAgICBtb2R1bGVfdCAqbW9kID0gKG1vZHVsZV90ICopX192YShtYmktPm1vZHNfYWRkcik7 CisgICAgbXVsdGlib290X2luZm9fdCAqbWJpOworICAgIG1vZHVsZV90ICptb2Q7CiAgICAgdW5z aWduZWQgbG9uZyBucl9wYWdlcywgcmF3X21heF9wYWdlLCBtb2R1bGVzX2hlYWRyb29tLCAqbW9k dWxlX21hcDsKICAgICBpbnQgaSwgaiwgZTgyMF93YXJuID0gMCwgYnl0ZXMgPSAwOwogICAgIGJv b2wgYWNwaV9ib290X3RhYmxlX2luaXRfZG9uZSA9IGZhbHNlLCByZWxvY2F0ZWQgPSBmYWxzZTsK QEAgLTY4MCw2ICs2ODEsMTYgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5z aWduZWQgbG9uZyBtYmlfcCkKIAogICAgIC8qIEZ1bGwgZXhjZXB0aW9uIHN1cHBvcnQgZnJvbSBo ZXJlIG9uIGluLiAqLwogCisgICAgaWYgKCBwdmhfYm9vdCApCisgICAgeworICAgICAgICBBU1NF UlQobWJpX3AgPT0gMCk7CisgICAgICAgIG1iaSA9IHB2aF9pbml0KCk7CisgICAgfQorICAgIGVs c2UKKyAgICAgICAgbWJpID0gX192YShtYmlfcCk7CisKKyAgICBtb2QgPSBfX3ZhKG1iaS0+bW9k c19hZGRyKTsKKwogICAgIGxvYWRlciA9IChtYmktPmZsYWdzICYgTUJJX0xPQURFUk5BTUUpCiAg ICAgICAgID8gKGNoYXIgKilfX3ZhKG1iaS0+Ym9vdF9sb2FkZXJfbmFtZSkgOiAidW5rbm93biI7 CiAKQEAgLTcxOSw2ICs3MzAsOSBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1 bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIGVoY2lfZGJncF9pbml0KCk7CiAgICAgY29uc29sZV9p bml0X3ByZWlycSgpOwogCisgICAgaWYgKCBwdmhfYm9vdCApCisgICAgICAgIHB2aF9wcmludF9p bmZvKCk7CisKICAgICBwcmludGsoIkJvb3Rsb2FkZXI6ICVzXG4iLCBsb2FkZXIpOwogCiAgICAg cHJpbnRrKCJDb21tYW5kIGxpbmU6ICVzXG4iLCBjbWRsaW5lKTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvZ3Vlc3QuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42MzBjMDkyYzI1Ci0tLSAvZGV2L251 bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqIGFzbS14ODYvZ3Vlc3QuaAorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBDaXRy aXggU3lzdGVtcyBMdGQuCisgKi8KKworI2lmbmRlZiBfX1g4Nl9HVUVTVF9IX18KKyNkZWZpbmUg X19YODZfR1VFU1RfSF9fCisKKyNpbmNsdWRlIDxhc20vZ3Vlc3QvcHZoLWJvb3QuaD4KKworI2Vu ZGlmIC8qIF9fWDg2X0dVRVNUX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QvcHZoLWJvb3QuaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvZ3Vlc3QvcHZoLWJvb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4xYjQyOWY5NDAxCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9ndWVzdC9wdmgtYm9vdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqIGFzbS14ODYvZ3Vlc3QvcHZoLWJvb3QuaAorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor ICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBDaXRyaXggU3lz dGVtcyBMdGQuCisgKi8KKworI2lmbmRlZiBfX1g4Nl9QVkhfQk9PVF9IX18KKyNkZWZpbmUgX19Y ODZfUFZIX0JPT1RfSF9fCisKKyNpbmNsdWRlIDx4ZW4vbXVsdGlib290Lmg+CisKKyNpZmRlZiBD T05GSUdfUFZIX0dVRVNUCisKK2V4dGVybiBib29sIHB2aF9ib290OworCittdWx0aWJvb3RfaW5m b190ICpwdmhfaW5pdCh2b2lkKTsKK3ZvaWQgcHZoX3ByaW50X2luZm8odm9pZCk7CisKKyNlbHNl CisKKyNkZWZpbmUgcHZoX2Jvb3QgMAorCitzdGF0aWMgaW5saW5lIG11bHRpYm9vdF9pbmZvX3Qg KnB2aF9pbml0KHZvaWQpCit7CisgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJu IE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdmhfcHJpbnRfaW5mbyh2b2lkKQorewor ICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworfQorCisjZW5kaWYgLyogQ09ORklHX1BWSF9HVUVT VCAqLworI2VuZGlmIC8qIF9fWDg2X1BWSF9CT09UX0hfXyAqLworCisvKgorICogTG9jYWwgdmFy aWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1v ZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBF bmQ6CisgKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=