From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huaitong Han Subject: [PATCH V4 4/6] x86/hvm: pkeys, add pkeys support for guest_walk_tables Date: Mon, 21 Dec 2015 15:21:42 +0800 Message-ID: <1450682504-32286-5-git-send-email-huaitong.han@intel.com> References: <1450682504-32286-1-git-send-email-huaitong.han@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1450682504-32286-1-git-send-email-huaitong.han@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: jbeulich@suse.com, andrew.cooper3@citrix.com, jun.nakajima@intel.com, eddie.dong@intel.com, kevin.tian@intel.com, george.dunlap@eu.citrix.com, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com, wei.liu2@citrix.com, keir@xen.org Cc: Huaitong Han , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org UHJvdGVjdGlvbiBrZXlzIGRlZmluZSBhIG5ldyA0LWJpdCBwcm90ZWN0aW9uIGtleSBmaWVsZChQ S0VZKSBpbiBiaXRzIDYyOjU5IG9mCmxlYWYgZW50cmllcyBvZiB0aGUgcGFnZSB0YWJsZXMuCgpQ S1JVIHJlZ2lzdGVyIGRlZmluZXMgMzIgYml0cywgdGhlcmUgYXJlIDE2IGRvbWFpbnMgYW5kIDIg YXR0cmlidXRlIGJpdHMgcGVyCmRvbWFpbiBpbiBwa3J1LCBmb3IgZWFjaCBpICgwIOKJpCBpIOKJ pCAxNSksIFBLUlVbMmldIGlzIHRoZSBhY2Nlc3MtZGlzYWJsZSBiaXQgZm9yCnByb3RlY3Rpb24g a2V5IGkgKEFEaSk7IFBLUlVbMmkrMV0gaXMgdGhlIHdyaXRlLWRpc2FibGUgYml0IGZvciBwcm90 ZWN0aW9uIGtleQppIChXRGkpLiBQS0VZIGlzIGluZGV4IHRvIGEgZGVmaW5lZCBkb21haW4uCgpB IGZhdWx0IGlzIGNvbnNpZGVyZWQgYXMgYSBQS1UgdmlvbGF0aW9uIGlmIGFsbCBvZiB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMgYXJlCnR1cmU6CjEuQ1I0X1BLRT0xLgoyLkVGRVJfTE1BPTEuCjMu UGFnZSBpcyBwcmVzZW50IHdpdGggbm8gcmVzZXJ2ZWQgYml0IHZpb2xhdGlvbnMuCjQuVGhlIGFj Y2VzcyBpcyBub3QgYW4gaW5zdHJ1Y3Rpb24gZmV0Y2guCjUuVGhlIGFjY2VzcyBpcyB0byBhIHVz ZXIgcGFnZS4KNi5QS1JVLkFEPTEKICAgIG9yIFRoZSBhY2Nlc3MgaXMgYSBkYXRhIHdyaXRlIGFu ZCBQS1JVLldEPTEKICAgICAgICBhbmQgZWl0aGVyIENSMC5XUD0xIG9yIGl0IGlzIGEgdXNlciBh Y2Nlc3MuCgpTaWduZWQtb2ZmLWJ5OiBIdWFpdG9uZyBIYW4gPGh1YWl0b25nLmhhbkBpbnRlbC5j b20+Ci0tLQogeGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYyAgICAgIHwgNjUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0 X3dhbGsuYyAgfCAgMyArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oICAgIHwgIDcg KysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAgICB8ICAyICsrCiB4ZW4vaW5j bHVkZS9hc20teDg2L3BhZ2UuaCAgICAgICAgfCAgNSArKysKIHhlbi9pbmNsdWRlL2FzbS14ODYv cHJvY2Vzc29yLmggICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9h c20teDg2L3g4Nl82NC9wYWdlLmggfCAxMiArKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMzMg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMg Yi94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCmluZGV4IDE4ZDFhY2YuLmY2NWJhMjcgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKKysrIGIveGVuL2FyY2gveDg2 L21tL2d1ZXN0X3dhbGsuYwpAQCAtOTAsNiArOTAsNTUgQEAgc3RhdGljIHVpbnQzMl90IHNldF9h ZF9iaXRzKHZvaWQgKmd1ZXN0X3AsIHZvaWQgKndhbGtfcCwgaW50IHNldF9kaXJ0eSkKICAgICBy ZXR1cm4gMDsKIH0KIAorI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPj0gQ09ORklHX1BBR0lOR19M RVZFTFMKK2Jvb2xfdCBsZWFmX3B0ZV9wa2V5c19jaGVjayhzdHJ1Y3QgdmNwdSAqdmNwdSwKKyAg ICAgICAgdWludDMyX3QgcGZlYywgdWludDMyX3QgcHRlX3BrZXkpCit7CisgICAgdW5zaWduZWQg aW50IHBrcnUgPSAwOworICAgIGJvb2xfdCBwa3J1X2FkLCBwa3J1X3dkOworCisgICAgYm9vbF90 IHBmID0gISEocGZlYyAmIFBGRUNfcGFnZV9wcmVzZW50KTsKKyAgICBib29sX3QgdWYgPSAhIShw ZmVjICYgUEZFQ191c2VyX21vZGUpOworICAgIGJvb2xfdCB3ZiA9ICEhKHBmZWMgJiBQRkVDX3dy aXRlX2FjY2Vzcyk7CisgICAgYm9vbF90IGZmID0gISEocGZlYyAmIFBGRUNfaW5zbl9mZXRjaCk7 CisgICAgYm9vbF90IHJzdmRmID0gISEocGZlYyAmIFBGRUNfcmVzZXJ2ZWRfYml0KTsKKworICAg IC8qIFdoZW4gcGFnZSBpcyBwcmVzZW50LCAgUEZFQ19wcm90X2tleSBpcyBhbHdheXMgY2hlY2tl ZCAqLworICAgIGlmICggIXBmIHx8IGlzX3B2X3ZjcHUodmNwdSkgKQorICAgICAgICByZXR1cm4g MDsKKworICAgIC8qCisgICAgICogUEtVOiAgYWRkaXRpb25hbCBtZWNoYW5pc20gYnkgd2hpY2gg dGhlIHBhZ2luZyBjb250cm9scworICAgICAqIGFjY2VzcyB0byB1c2VyLW1vZGUgYWRkcmVzc2Vz IGJhc2VkIG9uIHRoZSB2YWx1ZSBpbiB0aGUKKyAgICAgKiBQS1JVIHJlZ2lzdGVyLiBBIGZhdWx0 IGlzIGNvbnNpZGVyZWQgYXMgYSBQS1UgdmlvbGF0aW9uIGlmIGFsbAorICAgICAqIG9mIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHVyZToKKyAgICAgKiAxLkNSNF9QS0U9MS4KKyAgICAg KiAyLkVGRVJfTE1BPTEuCisgICAgICogMy5wYWdlIGlzIHByZXNlbnQgd2l0aCBubyByZXNlcnZl ZCBiaXQgdmlvbGF0aW9ucy4KKyAgICAgKiA0LnRoZSBhY2Nlc3MgaXMgbm90IGFuIGluc3RydWN0 aW9uIGZldGNoLgorICAgICAqIDUudGhlIGFjY2VzcyBpcyB0byBhIHVzZXIgcGFnZS4KKyAgICAg KiA2LlBLUlUuQUQ9MQorICAgICAqICAgICAgIG9yIFRoZSBhY2Nlc3MgaXMgYSBkYXRhIHdyaXRl IGFuZCBQS1JVLldEPTEKKyAgICAgKiAgICAgICAgICAgIGFuZCBlaXRoZXIgQ1IwLldQPTEgb3Ig aXQgaXMgYSB1c2VyIGFjY2Vzcy4KKyAgICAgKi8KKyAgICBpZiAoICFodm1fcGt1X2VuYWJsZWQo dmNwdSkgfHwKKyAgICAgICAgICAgICFodm1fbG9uZ19tb2RlX2VuYWJsZWQodmNwdSkgfHwgcnN2 ZGYgfHwgZmYgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHBrcnUgPSByZWFkX3BrcnUoKTsK KyAgICBpZiAoIHVubGlrZWx5KHBrcnUpICkKKyAgICB7CisgICAgICAgIHBrcnVfYWQgPSByZWFk X3BrcnVfYWQocGtydSwgcHRlX3BrZXkpOworICAgICAgICBwa3J1X3dkID0gcmVhZF9wa3J1X3dk KHBrcnUsIHB0ZV9wa2V5KTsKKyAgICAgICAgLyogQ29uZGl0aW9uIDYgKi8KKyAgICAgICAgaWYg KCBwa3J1X2FkIHx8IChwa3J1X3dkICYmIHdmICYmIChodm1fd3BfZW5hYmxlZCh2Y3B1KSB8fCB1 ZikpKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9Cisj ZW5kaWYKKwogLyogV2FsayB0aGUgZ3Vlc3QgcGFnZXRhYmxlcywgYWZ0ZXIgdGhlIG1hbm5lciBv ZiBhIGhhcmR3YXJlIHdhbGtlci4gKi8KIC8qIEJlY2F1c2UgdGhlIHdhbGsgaXMgZXNzZW50aWFs bHkgcmFuZG9tLCBpdCBjYW4gY2F1c2UgYSBkZWFkbG9jayAKICAqIHdhcm5pbmcgaW4gdGhlIHAy bSBsb2NraW5nIGNvZGUuIEhpZ2hseSB1bmxpa2VseSB0aGlzIGlzIGFuIGFjdHVhbApAQCAtMTA2 LDYgKzE1NSw3IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtLAogI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPj0gNCAvKiA2NC1iaXQgb25s eS4uLiAqLwogICAgIGd1ZXN0X2wzZV90ICpsM3AgPSBOVUxMOwogICAgIGd1ZXN0X2w0ZV90ICps NHA7CisgICAgdW5zaWduZWQgaW50IHBrZXk7CiAjZW5kaWYKICAgICB1aW50MzJfdCBnZmxhZ3Ms IG1mbGFncywgaWZsYWdzLCByYyA9IDA7CiAgICAgYm9vbF90IHNtZXAgPSAwLCBzbWFwID0gMDsK QEAgLTE5MCw2ICsyNDAsNyBAQCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3Ry dWN0IHAybV9kb21haW4gKnAybSwKICAgICAgICAgZ290byBvdXQ7CiAgICAgLyogR2V0IHRoZSBs M2UgYW5kIGNoZWNrIGl0cyBmbGFncyovCiAgICAgZ3ctPmwzZSA9IGwzcFtndWVzdF9sM190YWJs ZV9vZmZzZXQodmEpXTsKKyAgICBwa2V5ID0gZ3Vlc3RfbDNlX2dldF9wa2V5KGd3LT5sM2UpOwog ICAgIGdmbGFncyA9IGd1ZXN0X2wzZV9nZXRfZmxhZ3MoZ3ctPmwzZSkgXiBpZmxhZ3M7CiAgICAg aWYgKCAhKGdmbGFncyAmIF9QQUdFX1BSRVNFTlQpICkgewogICAgICAgICByYyB8PSBfUEFHRV9Q UkVTRU5UOwpAQCAtMTk5LDYgKzI1MCw5IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1 ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgIAogICAgIHBzZTFHID0gKGdmbGFncyAm IF9QQUdFX1BTRSkgJiYgZ3Vlc3Rfc3VwcG9ydHNfMUdfc3VwZXJwYWdlcyh2KTsgCiAKKyAgICBp ZiAoIHBzZTFHICYmIGxlYWZfcHRlX3BrZXlzX2NoZWNrKHYsIHBmZWMsIHBrZXkpICkKKyAgICAg ICAgcmMgfD0gX1BBR0VfUEtFWV9CSVRTOworCiAgICAgaWYgKCBwc2UxRyApCiAgICAgewogICAg ICAgICAvKiBHZW5lcmF0ZSBhIGZha2UgbDEgdGFibGUgZW50cnkgc28gY2FsbGVycyBkb24ndCBh bGwgCkBAIC0yNzAsNiArMzI0LDEyIEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2 LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogCiAgICAgcHNlMk0gPSAoZ2ZsYWdzICYgX1BBR0Vf UFNFKSAmJiBndWVzdF9zdXBwb3J0c19zdXBlcnBhZ2VzKHYpOyAKIAorI2lmIEdVRVNUX1BBR0lO R19MRVZFTFMgPj0gNAorICAgIHBrZXkgPSBndWVzdF9sMmVfZ2V0X3BrZXkoZ3ctPmwyZSk7Cisg ICAgaWYgKCBwc2UyTSAmJiBsZWFmX3B0ZV9wa2V5c19jaGVjayh2LCBwZmVjLCBwa2V5KSApCisg ICAgICAgIHJjIHw9IF9QQUdFX1BLRVlfQklUUzsKKyNlbmRpZgorCiAgICAgaWYgKCBwc2UyTSAp CiAgICAgewogICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IHRoaXMgZ3Vlc3QgVkEgaXMgaW4gYSBQ U0Ugc3VwZXJwYWdlLCBzbyB0aGVyZSdzCkBAIC0zMzAsNiArMzkwLDExIEBAIGd1ZXN0X3dhbGtf dGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICAg ICAgZ290byBvdXQ7CiAgICAgICAgIH0KICAgICAgICAgcmMgfD0gKChnZmxhZ3MgJiBtZmxhZ3Mp IF4gbWZsYWdzKTsKKyNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQKKyAgICAgICAgcGtleSA9 IGd1ZXN0X2wxZV9nZXRfcGtleShndy0+bDFlKTsKKyAgICAgICAgaWYgKCBsZWFmX3B0ZV9wa2V5 c19jaGVjayh2LCBwZmVjLCBwa2V5KSApCisgICAgICAgICAgICByYyB8PSBfUEFHRV9QS0VZX0JJ VFM7CisjZW5kaWYKICAgICB9CiAKICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQgLyogNjQt Yml0IG9ubHkuLi4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fs ay5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKaW5kZXggMTFjMWIzNS4uNDlk MDMyOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKKysrIGIv eGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKQEAgLTEzMCw2ICsxMzAsOSBAQCB1bnNp Z25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMpKAogICAgIGlm ICggbWlzc2luZyAmIF9QQUdFX0lOVkFMSURfQklUUyApIAogICAgICAgICBwZmVjWzBdIHw9IFBG RUNfcmVzZXJ2ZWRfYml0OwogCisgICAgaWYgKCBtaXNzaW5nICYgX1BBR0VfUEtFWV9CSVRTICkK KyAgICAgICAgcGZlY1swXSB8PSBQRkVDX3Byb3Rfa2V5OworCiAgICAgaWYgKCBtaXNzaW5nICYg X1BBR0VfUEFHRUQgKQogICAgICAgICBwZmVjWzBdID0gUEZFQ19wYWdlX3BhZ2VkOwogCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L2d1ZXN0X3B0LmgKaW5kZXggMzQ0Nzk3My4uZDAyZjI5NiAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3Rf cHQuaApAQCAtMTU0LDYgKzE1NCwxMyBAQCBzdGF0aWMgaW5saW5lIHUzMiBndWVzdF9sNGVfZ2V0 X2ZsYWdzKGd1ZXN0X2w0ZV90IGdsNGUpCiB7IHJldHVybiBsNGVfZ2V0X2ZsYWdzKGdsNGUpOyB9 CiAjZW5kaWYKIAorc3RhdGljIGlubGluZSB1MzIgZ3Vlc3RfbDFlX2dldF9wa2V5KGd1ZXN0X2wx ZV90IGdsMWUpCit7IHJldHVybiBsMWVfZ2V0X3BrZXkoZ2wxZSk7IH0KK3N0YXRpYyBpbmxpbmUg dTMyIGd1ZXN0X2wyZV9nZXRfcGtleShndWVzdF9sMmVfdCBnbDJlKQoreyByZXR1cm4gbDJlX2dl dF9wa2V5KGdsMmUpOyB9CitzdGF0aWMgaW5saW5lIHUzMiBndWVzdF9sM2VfZ2V0X3BrZXkoZ3Vl c3RfbDNlX3QgZ2wzZSkKK3sgcmV0dXJuIGwzZV9nZXRfcGtleShnbDNlKTsgfQorCiBzdGF0aWMg aW5saW5lIGd1ZXN0X2wxZV90IGd1ZXN0X2wxZV9mcm9tX2dmbihnZm5fdCBnZm4sIHUzMiBmbGFn cykKIHsgcmV0dXJuIGwxZV9mcm9tX3BmbihnZm5feChnZm4pLCBmbGFncyk7IH0KIHN0YXRpYyBp bmxpbmUgZ3Vlc3RfbDJlX3QgZ3Vlc3RfbDJlX2Zyb21fZ2ZuKGdmbl90IGdmbiwgdTMyIGZsYWdz KQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS9odm0uaAppbmRleCBmODBlMTQzLi43OWIzNDIxIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS9odm0uaApAQCAtMjc1LDYgKzI3NSw4IEBAIGludCBodm1fZ2lycV9kZXN0XzJfdmNwdV9pZChz dHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRlc3QsIHVpbnQ4X3QgZGVzdF9tb2RlKTsKICAgICAo aHZtX3BhZ2luZ19lbmFibGVkKHYpICYmICgodiktPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbNF0g JiBYODZfQ1I0X1NNQVApKQogI2RlZmluZSBodm1fbnhfZW5hYmxlZCh2KSBcCiAgICAgKCEhKCh2 KS0+YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVyICYgRUZFUl9OWCkpCisjZGVmaW5lIGh2bV9wa3Vf ZW5hYmxlZCh2KSBcCisgICAgKGh2bV9wYWdpbmdfZW5hYmxlZCh2KSAmJiAoKHYpLT5hcmNoLmh2 bV92Y3B1Lmd1ZXN0X2NyWzRdICYgWDg2X0NSNF9QS0UpKQogCiAvKiBDYW4gd2UgdXNlIHN1cGVy cGFnZXMgaW4gdGhlIEhBUCBwMm0gdGFibGU/ICovCiAjZGVmaW5lIGhhcF9oYXNfMWdiICghISho dm1fZnVuY3MuaGFwX2NhcGFiaWxpdGllcyAmIEhWTV9IQVBfU1VQRVJQQUdFXzFHQikpCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cGFnZS5oCmluZGV4IGEwOTVhOTMuLmQ2OWQ5MWQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnZS5oCkBAIC05Myw2ICs5 MywxMSBAQAogI2RlZmluZSBsM2VfZ2V0X2ZsYWdzKHgpICAgICAgICAgICAoZ2V0X3B0ZV9mbGFn cygoeCkubDMpKQogI2RlZmluZSBsNGVfZ2V0X2ZsYWdzKHgpICAgICAgICAgICAoZ2V0X3B0ZV9m bGFncygoeCkubDQpKQogCisvKiBHZXQgcHRlIHBrZXlzICh1bnNpZ25lZCBpbnQpLiAqLworI2Rl ZmluZSBsMWVfZ2V0X3BrZXkoeCkgICAgICAgICAgIChnZXRfcHRlX3BrZXkoKHgpLmwxKSkKKyNk ZWZpbmUgbDJlX2dldF9wa2V5KHgpICAgICAgICAgICAoZ2V0X3B0ZV9wa2V5KCh4KS5sMikpCisj ZGVmaW5lIGwzZV9nZXRfcGtleSh4KSAgICAgICAgICAgKGdldF9wdGVfcGtleSgoeCkubDMpKQor CiAvKiBDb25zdHJ1Y3QgYW4gZW1wdHkgcHRlLiAqLwogI2RlZmluZSBsMWVfZW1wdHkoKSAgICAg ICAgICAgICAgICAoKGwxX3BnZW50cnlfdCkgeyAwIH0pCiAjZGVmaW5lIGwyZV9lbXB0eSgpICAg ICAgICAgICAgICAgICgobDJfcGdlbnRyeV90KSB7IDAgfSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5o CmluZGV4IDNmODQxMWYuLjNmMjUxYWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv cHJvY2Vzc29yLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaApAQCAtMzcz LDYgKzM3Myw0NSBAQCBzdGF0aWMgYWx3YXlzX2lubGluZSB2b2lkIGNsZWFyX2luX2NyNCAodW5z aWduZWQgbG9uZyBtYXNrKQogICAgIHdyaXRlX2NyNChyZWFkX2NyNCgpICYgfm1hc2spOwogfQog CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCByZWFkX3BrcnUodm9pZCkKK3sKKyAgICB1bnNp Z25lZCBpbnQgcGtydTsKKworICAgIC8qCisgICAgICogX1BBR0VfUEtFWV9CSVRTIGhhdmUgYSBj b25mbGljdCB3aXRoIF9QQUdFX0dOVFRBQiB1c2VkIGJ5IFBWIGd1ZXN0cywKKyAgICAgKiBzbyB0 aGF0IFg4Nl9DUjRfUEtFIGlzIGRpc2FibGUgb24gaHlwZXJ2aXNvciwgUkRQS1JVIGluc3RydWN0 aW9uIGNhbgorICAgICAqIGJlIHVzZWQgd2l0aCB0ZW1wb3JhcmlseSBzZXR0aW5nIENSNC5QS0Uu CisgICAgICovCisgICAgc2V0X2luX2NyNChYODZfQ1I0X1BLRSk7CisgICAgYXNtIHZvbGF0aWxl ICgiLmJ5dGUgMHgwZiwweDAxLDB4ZWUiCisgICAgICAgIDogIj1hIiAocGtydSkgOiAiYyIgKDAp IDogImR4Iik7CisgICAgY2xlYXJfaW5fY3I0KFg4Nl9DUjRfUEtFKTsKKworICAgIHJldHVybiBw a3J1OworfQorCisvKiBNYWNyb3MgZm9yIFBLUlUgZG9tYWluICovCisjZGVmaW5lIFBLUlVfUkVB RCAgKDApCisjZGVmaW5lIFBLUlVfV1JJVEUgKDEpCisjZGVmaW5lIFBLUlVfQVRUUlMgKDIpCisK Ky8qCisgKiBQS1JVIGRlZmluZXMgMzIgYml0cywgdGhlcmUgYXJlIDE2IGRvbWFpbnMgYW5kIDIg YXR0cmlidXRlIGJpdHMgcGVyCisgKiBkb21haW4gaW4gcGtydSwgcGtleXMgaXMgaW5kZXggdG8g YSBkZWZpbmVkIGRvbWFpbiwgc28gdGhlIHZhbHVlIG9mCisgKiBwdGVfcGtleXMgKiBQS1JVX0FU VFJTICsgUi9XIGlzIG9mZnNldCBvZiBhIGRlZmluZWQgZG9tYWluIGF0dHJpYnV0ZS4KKyAqLwor c3RhdGljIGlubGluZSBib29sX3QgcmVhZF9wa3J1X2FkKHVuc2lnbmVkIGludCBwa3J1LCB1bnNp Z25lZCBpbnQgcGtleSkKK3sKKyAgICBBU1NFUlQocGtleSA8IDE2KTsKKyAgICByZXR1cm4gKHBr cnUgPj4gKHBrZXkgKiBQS1JVX0FUVFJTICsgUEtSVV9SRUFEKSkgJiAxOworfQorCitzdGF0aWMg aW5saW5lIGJvb2xfdCByZWFkX3BrcnVfd2QodW5zaWduZWQgaW50IHBrcnUsIHVuc2lnbmVkIGlu dCBwa2V5KQoreworICAgIEFTU0VSVChwa2V5IDwgMTYpOworICAgIHJldHVybiAocGtydSA+PiAo cGtleSAqIFBLUlVfQVRUUlMgKyBQS1JVX1dSSVRFKSkgJiAxOworfQorCiAvKgogICogICAgICBO U0MvQ3lyaXggQ1BVIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgaW5kZXhlcwogICovCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3g4Nl82NC9wYWdlLmgKaW5kZXggMTlhYjRkMC4uODZhYmI5NCAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv eDg2XzY0L3BhZ2UuaApAQCAtMTM0LDYgKzEzNCwxOCBAQCB0eXBlZGVmIGw0X3BnZW50cnlfdCBy b290X3BnZW50cnlfdDsKICNkZWZpbmUgZ2V0X3B0ZV9mbGFncyh4KSAoKChpbnQpKCh4KSA+PiA0 MCkgJiB+MHhGRkYpIHwgKChpbnQpKHgpICYgMHhGRkYpKQogI2RlZmluZSBwdXRfcHRlX2ZsYWdz KHgpICgoKGludHB0ZV90KSgoeCkgJiB+MHhGRkYpIDw8IDQwKSB8ICgoeCkgJiAweEZGRikpCiAK Ky8qCisgKiBQcm90ZWN0aW9uIGtleXMgZGVmaW5lIGEgbmV3IDQtYml0IHByb3RlY3Rpb24ga2V5 IGZpZWxkCisgKiAoUEtFWSkgaW4gYml0cyA2Mjo1OSBvZiBsZWFmIGVudHJpZXMgb2YgdGhlIHBh Z2UgdGFibGVzLgorICogVGhpcyBjb3JyZXNwb25kcyB0byBiaXQgMjI6MTkgb2YgYSAyNC1iaXQg ZmxhZ3MuCisgKgorICogTm90aWNlOiBCaXQgMjIgaXMgdXNlZCBieSBfUEFHRV9HTlRUQUIgd2hp Y2ggaXMgdmlzaWJsZSB0byBQViBndWVzdHMsCisgKiBzbyBQcm90ZWN0aW9uIGtleXMgbXVzdCBi ZSBkaXNhYmxlZCBvbiBQViBndWVzdHMuCisgKi8KKyNkZWZpbmUgX1BBR0VfUEtFWV9CSVRTICAo MHg3ODAwMDApCSAvKiBQcm90ZWN0aW9uIEtleXMsIDIyOjE5ICovCisKKyNkZWZpbmUgZ2V0X3B0 ZV9wa2V5KHgpIChNQVNLX0VYVFIoZ2V0X3B0ZV9mbGFncyh4KSwgX1BBR0VfUEtFWV9CSVRTKSkK KwogLyogQml0IDIzIG9mIGEgMjQtYml0IGZsYWcgbWFzay4gVGhpcyBjb3JyZXNwb25kcyB0byBi aXQgNjMgb2YgYSBwdGUuKi8KICNkZWZpbmUgX1BBR0VfTlhfQklUICgxVTw8MjMpCiAKLS0gCjIu NC4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK