From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huaitong Han Subject: [PATCH V8 2/5] x86/hvm: pkeys, add pkeys support for guest_walk_tables Date: Tue, 2 Feb 2016 15:35:39 +0800 Message-ID: <1454398542-4815-3-git-send-email-huaitong.han@intel.com> References: <1454398542-4815-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: <1454398542-4815-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, george.dunlap@eu.citrix.com, tim@xen.org, 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 bG93aW5nIGNvbmRpdGlvbnMgYXJlCnRydWU6CjEuQ1I0X1BLRT0xLgoyLkVGRVJfTE1BPTEuCjMu UGFnZSBpcyBwcmVzZW50IHdpdGggbm8gcmVzZXJ2ZWQgYml0IHZpb2xhdGlvbnMuCjQuVGhlIGFj Y2VzcyBpcyBub3QgYW4gaW5zdHJ1Y3Rpb24gZmV0Y2guCjUuVGhlIGFjY2VzcyBpcyB0byBhIHVz ZXIgcGFnZS4KNi5QS1JVLkFEPTEKICAgIG9yIFRoZSBhY2Nlc3MgaXMgYSBkYXRhIHdyaXRlIGFu ZCBQS1JVLldEPTEKICAgICAgICAgICAgICAgIGFuZCBlaXRoZXIgQ1IwLldQPTEgb3IgaXQgaXMg YSB1c2VyIGFjY2Vzcy4KClNpZ25lZC1vZmYtYnk6IEh1YWl0b25nIEhhbiA8aHVhaXRvbmcuaGFu QGludGVsLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjg6CipBYnN0cmFjdCBvdXQgX3dyaXRlX2NyNC4K CkNoYW5nZXMgaW4gdjc6CipBZGQgc3RhdGljIGZvciBwa2V5X2ZhdWx0LgoqQWRkIGEgY29tbWVu dCBmb3IgcGFnZSBwcmVzZW50IGNoZWNrIGFuZCBhZGp1c3QgaW5kZW50YXRpb24uCipJbml0IHBr cnVfYWQgYW5kIHBrcnVfd2QuCipEZWxldGUgbDNlX2dldF9wa2V5IHRoZSBvdXRlciBwYXJlbnRo ZXNlcy4KKlRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgcmVhZF9wa3J1XyogdXNlIHVpbnQzMl90IHR5 cGUuCgoKIHhlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMgICAgICB8IDU0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93 YWxrLmMgIHwgIDMgKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmggICAgfCAxMiAr KysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAgICB8ICAyICsrCiB4ZW4v aW5jbHVkZS9hc20teDg2L3BhZ2UuaCAgICAgICAgfCAgNSArKysrCiB4ZW4vaW5jbHVkZS9hc20t eDg2L3Byb2Nlc3Nvci5oICAgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdlLmggfCAxMiArKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgMTM0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jIGIveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dh bGsuYwppbmRleCAxOGQxYWNmLi41ZTExMTFiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0v Z3Vlc3Rfd2Fsay5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKQEAgLTkwLDYg KzkwLDU0IEBAIHN0YXRpYyB1aW50MzJfdCBzZXRfYWRfYml0cyh2b2lkICpndWVzdF9wLCB2b2lk ICp3YWxrX3AsIGludCBzZXRfZGlydHkpCiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZiBHVUVTVF9Q QUdJTkdfTEVWRUxTID49IDQKK3N0YXRpYyBib29sX3QgcGtleV9mYXVsdChzdHJ1Y3QgdmNwdSAq dmNwdSwgdWludDMyX3QgcGZlYywKKyAgICAgICAgdWludDMyX3QgcHRlX2ZsYWdzLCB1aW50MzJf dCBwdGVfcGtleSkKK3sKKyAgICB1aW50MzJfdCBwa3J1ID0gMDsKKyAgICBib29sX3QgcGtydV9h ZCA9IDAsIHBrcnVfd2QgPSAwOworCisgICAgLyogV2hlbiBwYWdlIGlzbid0IHByZXNlbnQsICBQ S0VZIGlzbid0IGNoZWNrZWQuICovCisgICAgaWYgKCAhKHBmZWMgJiBQRkVDX3BhZ2VfcHJlc2Vu dCkgfHwgaXNfcHZfdmNwdSh2Y3B1KSApCisgICAgICAgIHJldHVybiAwOworCisgICAgLyoKKyAg ICAgKiBQS1U6ICBhZGRpdGlvbmFsIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgcGFnaW5nIGNvbnRy b2xzCisgICAgICogYWNjZXNzIHRvIHVzZXItbW9kZSBhZGRyZXNzZXMgYmFzZWQgb24gdGhlIHZh bHVlIGluIHRoZQorICAgICAqIFBLUlUgcmVnaXN0ZXIuIEEgZmF1bHQgaXMgY29uc2lkZXJlZCBh cyBhIFBLVSB2aW9sYXRpb24gaWYgYWxsCisgICAgICogb2YgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zIGFyZSB0cnVlOgorICAgICAqIDEuQ1I0X1BLRT0xLgorICAgICAqIDIuRUZFUl9MTUE9MS4K KyAgICAgKiAzLlBhZ2UgaXMgcHJlc2VudCB3aXRoIG5vIHJlc2VydmVkIGJpdCB2aW9sYXRpb25z LgorICAgICAqIDQuVGhlIGFjY2VzcyBpcyBub3QgYW4gaW5zdHJ1Y3Rpb24gZmV0Y2guCisgICAg ICogNS5UaGUgYWNjZXNzIGlzIHRvIGEgdXNlciBwYWdlLgorICAgICAqIDYuUEtSVS5BRD0xIG9y CisgICAgICogICAgICB0aGUgYWNjZXNzIGlzIGEgZGF0YSB3cml0ZSBhbmQgUEtSVS5XRD0xIGFu ZAorICAgICAqICAgICAgICAgIGVpdGhlciBDUjAuV1A9MSBvciBpdCBpcyBhIHVzZXIgYWNjZXNz LgorICAgICAqLworICAgIGlmICggIWh2bV9wa3VfZW5hYmxlZCh2Y3B1KSB8fAorICAgICAgICAg IWh2bV9sb25nX21vZGVfZW5hYmxlZCh2Y3B1KSB8fAorICAgICAgICAgLyogVGhlIHBlcnNlbnQg Yml0IGlzIGd1YXJhbnRlZWQgYnkgdGhlIGNhbGxlci4gKi8KKyAgICAgICAgIChwZmVjICYgUEZF Q19yZXNlcnZlZF9iaXQpIHx8CisgICAgICAgICAocGZlYyAmIFBGRUNfaW5zbl9mZXRjaCkgfHwK KyAgICAgICAgICEocHRlX2ZsYWdzICYgX1BBR0VfVVNFUikgKQorICAgICAgICByZXR1cm4gMDsK KworICAgIHBrcnUgPSByZWFkX3BrcnUoKTsKKyAgICBpZiAoIHVubGlrZWx5KHBrcnUpICkKKyAg ICB7CisgICAgICAgIHBrcnVfYWQgPSByZWFkX3BrcnVfYWQocGtydSwgcHRlX3BrZXkpOworICAg ICAgICBwa3J1X3dkID0gcmVhZF9wa3J1X3dkKHBrcnUsIHB0ZV9wa2V5KTsKKyAgICAgICAgLyog Q29uZGl0aW9uIDYgKi8KKyAgICAgICAgaWYgKCBwa3J1X2FkIHx8IChwa3J1X3dkICYmIChwZmVj ICYgUEZFQ193cml0ZV9hY2Nlc3MpICYmCisgICAgICAgICAgICAgICAgICAgIChodm1fd3BfZW5h YmxlZCh2Y3B1KSB8fCAocGZlYyAmIFBGRUNfdXNlcl9tb2RlKSkpKQorICAgICAgICAgICAgcmV0 dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogLyogV2FsayB0aGUg Z3Vlc3QgcGFnZXRhYmxlcywgYWZ0ZXIgdGhlIG1hbm5lciBvZiBhIGhhcmR3YXJlIHdhbGtlci4g Ki8KIC8qIEJlY2F1c2UgdGhlIHdhbGsgaXMgZXNzZW50aWFsbHkgcmFuZG9tLCBpdCBjYW4gY2F1 c2UgYSBkZWFkbG9jayAKICAqIHdhcm5pbmcgaW4gdGhlIHAybSBsb2NraW5nIGNvZGUuIEhpZ2hs eSB1bmxpa2VseSB0aGlzIGlzIGFuIGFjdHVhbApAQCAtMTA3LDYgKzE1NSw3IEBAIGd1ZXN0X3dh bGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgIGd1 ZXN0X2wzZV90ICpsM3AgPSBOVUxMOwogICAgIGd1ZXN0X2w0ZV90ICpsNHA7CiAjZW5kaWYKKyAg ICB1bnNpZ25lZCBpbnQgcGtleTsKICAgICB1aW50MzJfdCBnZmxhZ3MsIG1mbGFncywgaWZsYWdz LCByYyA9IDA7CiAgICAgYm9vbF90IHNtZXAgPSAwLCBzbWFwID0gMDsKICAgICBib29sX3QgcHNl MUcgPSAwLCBwc2UyTSA9IDA7CkBAIC0xOTAsNiArMjM5LDcgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMo c3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAgIGdvdG8gb3V0 OwogICAgIC8qIEdldCB0aGUgbDNlIGFuZCBjaGVjayBpdHMgZmxhZ3MqLwogICAgIGd3LT5sM2Ug PSBsM3BbZ3Vlc3RfbDNfdGFibGVfb2Zmc2V0KHZhKV07CisgICAgcGtleSA9IGd1ZXN0X2wzZV9n ZXRfcGtleShndy0+bDNlKTsKICAgICBnZmxhZ3MgPSBndWVzdF9sM2VfZ2V0X2ZsYWdzKGd3LT5s M2UpIF4gaWZsYWdzOwogICAgIGlmICggIShnZmxhZ3MgJiBfUEFHRV9QUkVTRU5UKSApIHsKICAg ICAgICAgcmMgfD0gX1BBR0VfUFJFU0VOVDsKQEAgLTI2MSw2ICszMTEsNyBAQCBndWVzdF93YWxr X3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKIAogI2VuZGlm IC8qIEFsbCBsZXZlbHMuLi4gKi8KIAorICAgIHBrZXkgPSBndWVzdF9sMmVfZ2V0X3BrZXkoZ3ct PmwyZSk7CiAgICAgZ2ZsYWdzID0gZ3Vlc3RfbDJlX2dldF9mbGFncyhndy0+bDJlKSBeIGlmbGFn czsKICAgICBpZiAoICEoZ2ZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKSB7CiAgICAgICAgIHJjIHw9 IF9QQUdFX1BSRVNFTlQ7CkBAIC0zMjQsNiArMzc1LDcgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3Ry dWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAgIGlmKGwxcCA9PSBO VUxMKQogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIGd3LT5sMWUgPSBsMXBbZ3Vlc3Rf bDFfdGFibGVfb2Zmc2V0KHZhKV07CisgICAgICAgIHBrZXkgPSBndWVzdF9sMWVfZ2V0X3BrZXko Z3ctPmwxZSk7CiAgICAgICAgIGdmbGFncyA9IGd1ZXN0X2wxZV9nZXRfZmxhZ3MoZ3ctPmwxZSkg XiBpZmxhZ3M7CiAgICAgICAgIGlmICggIShnZmxhZ3MgJiBfUEFHRV9QUkVTRU5UKSApIHsKICAg ICAgICAgICAgIHJjIHw9IF9QQUdFX1BSRVNFTlQ7CkBAIC0zMzQsNiArMzg2LDggQEAgZ3Vlc3Rf d2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAKICNp ZiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQgLyogNjQtYml0IG9ubHkuLi4gKi8KIHNldF9hZDoK KyAgICBpZiAoIHBrZXlfZmF1bHQodiwgcGZlYywgZ2ZsYWdzLCBwa2V5KSApCisgICAgICAgIHJj IHw9IF9QQUdFX1BLRVlfQklUUzsKICNlbmRpZgogICAgIC8qIE5vdyByZS1pbnZlcnQgdGhlIHVz ZXItbW9kZSByZXF1aXJlbWVudCBmb3IgU01FUCBhbmQgU01BUCAqLwogICAgIGlmICggc21lcCB8 fCBzbWFwICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jIGIv eGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKaW5kZXggMTFjMWIzNS4uNDlkMDMyOCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKKysrIGIveGVuL2Fy Y2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKQEAgLTEzMCw2ICsxMzAsOSBAQCB1bnNpZ25lZCBs b25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMpKAogICAgIGlmICggbWlz c2luZyAmIF9QQUdFX0lOVkFMSURfQklUUyApIAogICAgICAgICBwZmVjWzBdIHw9IFBGRUNfcmVz ZXJ2ZWRfYml0OwogCisgICAgaWYgKCBtaXNzaW5nICYgX1BBR0VfUEtFWV9CSVRTICkKKyAgICAg ICAgcGZlY1swXSB8PSBQRkVDX3Byb3Rfa2V5OworCiAgICAgaWYgKCBtaXNzaW5nICYgX1BBR0Vf UEFHRUQgKQogICAgICAgICBwZmVjWzBdID0gUEZFQ19wYWdlX3BhZ2VkOwogCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1 ZXN0X3B0LmgKaW5kZXggMzQ0Nzk3My4uZWIyOWU2MiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9ndWVzdF9wdC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaApA QCAtODEsNiArODEsMTEgQEAgc3RhdGljIGlubGluZSB1MzIgZ3Vlc3RfbDFlX2dldF9mbGFncyhn dWVzdF9sMWVfdCBnbDFlKQogc3RhdGljIGlubGluZSB1MzIgZ3Vlc3RfbDJlX2dldF9mbGFncyhn dWVzdF9sMmVfdCBnbDJlKQogeyByZXR1cm4gZ2wyZS5sMiAmIDB4ZmZmOyB9CiAKK3N0YXRpYyBp bmxpbmUgdTMyIGd1ZXN0X2wxZV9nZXRfcGtleShndWVzdF9sMWVfdCBnbDFlKQoreyByZXR1cm4g MDsgfQorc3RhdGljIGlubGluZSB1MzIgZ3Vlc3RfbDJlX2dldF9wa2V5KGd1ZXN0X2wyZV90IGds MmUpCit7IHJldHVybiAwOyB9CisKIHN0YXRpYyBpbmxpbmUgZ3Vlc3RfbDFlX3QgZ3Vlc3RfbDFl X2Zyb21fZ2ZuKGdmbl90IGdmbiwgdTMyIGZsYWdzKQogeyByZXR1cm4gKGd1ZXN0X2wxZV90KSB7 IChnZm5feChnZm4pIDw8IFBBR0VfU0hJRlQpIHwgZmxhZ3MgfTsgfQogc3RhdGljIGlubGluZSBn dWVzdF9sMmVfdCBndWVzdF9sMmVfZnJvbV9nZm4oZ2ZuX3QgZ2ZuLCB1MzIgZmxhZ3MpCkBAIC0x NTQsNiArMTU5LDEzIEBAIHN0YXRpYyBpbmxpbmUgdTMyIGd1ZXN0X2w0ZV9nZXRfZmxhZ3MoZ3Vl c3RfbDRlX3QgZ2w0ZSkKIHsgcmV0dXJuIGw0ZV9nZXRfZmxhZ3MoZ2w0ZSk7IH0KICNlbmRpZgog CitzdGF0aWMgaW5saW5lIHUzMiBndWVzdF9sMWVfZ2V0X3BrZXkoZ3Vlc3RfbDFlX3QgZ2wxZSkK K3sgcmV0dXJuIGwxZV9nZXRfcGtleShnbDFlKTsgfQorc3RhdGljIGlubGluZSB1MzIgZ3Vlc3Rf bDJlX2dldF9wa2V5KGd1ZXN0X2wyZV90IGdsMmUpCit7IHJldHVybiBsMmVfZ2V0X3BrZXkoZ2wy ZSk7IH0KK3N0YXRpYyBpbmxpbmUgdTMyIGd1ZXN0X2wzZV9nZXRfcGtleShndWVzdF9sM2VfdCBn bDNlKQoreyByZXR1cm4gbDNlX2dldF9wa2V5KGdsM2UpOyB9CisKIHN0YXRpYyBpbmxpbmUgZ3Vl c3RfbDFlX3QgZ3Vlc3RfbDFlX2Zyb21fZ2ZuKGdmbl90IGdmbiwgdTMyIGZsYWdzKQogeyByZXR1 cm4gbDFlX2Zyb21fcGZuKGdmbl94KGdmbiksIGZsYWdzKTsgfQogc3RhdGljIGlubGluZSBndWVz dF9sMmVfdCBndWVzdF9sMmVfZnJvbV9nZm4oZ2ZuX3QgZ2ZuLCB1MzIgZmxhZ3MpCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2h2bS5oCmluZGV4IGE4NzIyNGIuLjczMWRkNDQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2h2bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCkBA IC0yNzcsNiArMjc3LDggQEAgaW50IGh2bV9naXJxX2Rlc3RfMl92Y3B1X2lkKHN0cnVjdCBkb21h aW4gKmQsIHVpbnQ4X3QgZGVzdCwgdWludDhfdCBkZXN0X21vZGUpOwogICAgIChodm1fcGFnaW5n X2VuYWJsZWQodikgJiYgKCh2KS0+YXJjaC5odm1fdmNwdS5ndWVzdF9jcls0XSAmIFg4Nl9DUjRf U01BUCkpCiAjZGVmaW5lIGh2bV9ueF9lbmFibGVkKHYpIFwKICAgICAoISEoKHYpLT5hcmNoLmh2 bV92Y3B1Lmd1ZXN0X2VmZXIgJiBFRkVSX05YKSkKKyNkZWZpbmUgaHZtX3BrdV9lbmFibGVkKHYp IFwKKyAgICAoaHZtX3BhZ2luZ19lbmFibGVkKHYpICYmICgodiktPmFyY2guaHZtX3ZjcHUuZ3Vl c3RfY3JbNF0gJiBYODZfQ1I0X1BLRSkpCiAKIC8qIENhbiB3ZSB1c2Ugc3VwZXJwYWdlcyBpbiB0 aGUgSEFQIHAybSB0YWJsZT8gKi8KICNkZWZpbmUgaGFwX2hhc18xZ2IgKCEhKGh2bV9mdW5jcy5o YXBfY2FwYWJpbGl0aWVzICYgSFZNX0hBUF9TVVBFUlBBR0VfMUdCKSkKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcGFnZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdlLmgKaW5k ZXggYTA5NWE5My4uOTIwMmYzZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdl LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdlLmgKQEAgLTkzLDYgKzkzLDExIEBACiAj ZGVmaW5lIGwzZV9nZXRfZmxhZ3MoeCkgICAgICAgICAgIChnZXRfcHRlX2ZsYWdzKCh4KS5sMykp CiAjZGVmaW5lIGw0ZV9nZXRfZmxhZ3MoeCkgICAgICAgICAgIChnZXRfcHRlX2ZsYWdzKCh4KS5s NCkpCiAKKy8qIEdldCBwdGUgcGtleXMgKHVuc2lnbmVkIGludCkuICovCisjZGVmaW5lIGwxZV9n ZXRfcGtleSh4KSAgICAgICAgICAgZ2V0X3B0ZV9wa2V5KCh4KS5sMSkKKyNkZWZpbmUgbDJlX2dl dF9wa2V5KHgpICAgICAgICAgICBnZXRfcHRlX3BrZXkoKHgpLmwyKQorI2RlZmluZSBsM2VfZ2V0 X3BrZXkoeCkgICAgICAgICAgIGdldF9wdGVfcGtleSgoeCkubDMpCisKIC8qIENvbnN0cnVjdCBh biBlbXB0eSBwdGUuICovCiAjZGVmaW5lIGwxZV9lbXB0eSgpICAgICAgICAgICAgICAgICgobDFf cGdlbnRyeV90KSB7IDAgfSkKICNkZWZpbmUgbDJlX2VtcHR5KCkgICAgICAgICAgICAgICAgKChs Ml9wZ2VudHJ5X3QpIHsgMCB9KQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9j ZXNzb3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKaW5kZXggMjZiYTE0MS4u ZGE1ZDBlOCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAorKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCkBAIC0zMzIsNiArMzMyLDExIEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX2NyMih2b2lkKQogCiBERUNMQVJFX1BFUl9D UFUodW5zaWduZWQgbG9uZywgY3I0KTsKIAorc3RhdGljIGlubGluZSB2b2lkIF93cml0ZV9jcjQo dW5zaWduZWQgbG9uZyB2YWwpCit7CisgICAgYXNtIHZvbGF0aWxlICggIm1vdiAlMCwlJWNyNCIg OiA6ICJyIiAodmFsKSApOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9j cjQodm9pZCkKIHsKICAgICByZXR1cm4gdGhpc19jcHUoY3I0KTsKQEAgLTM0MCw3ICszNDUsNyBA QCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9jcjQodm9pZCkKIHN0YXRpYyBpbmxp bmUgdm9pZCB3cml0ZV9jcjQodW5zaWduZWQgbG9uZyB2YWwpCiB7CiAgICAgdGhpc19jcHUoY3I0 KSA9IHZhbDsKLSAgICBhc20gdm9sYXRpbGUgKCAibW92ICUwLCUlY3I0IiA6IDogInIiICh2YWwp ICk7CisgICAgX3dyaXRlX2NyNCh2YWwpOwogfQogCiAvKiBDbGVhciBhbmQgc2V0ICdUUycgYml0 IHJlc3BlY3RpdmVseSAqLwpAQCAtMzc0LDYgKzM3OSw0NiBAQCBzdGF0aWMgYWx3YXlzX2lubGlu ZSB2b2lkIGNsZWFyX2luX2NyNCAodW5zaWduZWQgbG9uZyBtYXNrKQogICAgIHdyaXRlX2NyNChy ZWFkX2NyNCgpICYgfm1hc2spOwogfQogCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCByZWFk X3BrcnUodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcGtydTsKKyAgICB1bnNpZ25lZCBsb25n IGNyNCA9IHJlYWRfY3I0KCk7CisKKyAgICAvKgorICAgICAqIF9QQUdFX1BLRVlfQklUUyBoYXZl IGEgY29uZmxpY3Qgd2l0aCBfUEFHRV9HTlRUQUIgdXNlZCBieSBQViBndWVzdHMsCisgICAgICog c28gdGhhdCBYODZfQ1I0X1BLRSAgaXMgZGlzYWJsZWQgb24gaHlwZXJ2aXNvci4gVG8gdXNlIFJE UEtSVSwgQ1I0LlBLRQorICAgICAqIGdldHMgdGVtcG9yYXJpbHkgZW5hYmxlZC4KKyAgICAgKi8K KyAgICBfd3JpdGVfY3I0KGNyNCB8IFg4Nl9DUjRfUEtFKTsKKyAgICBhc20gdm9sYXRpbGUgKCIu Ynl0ZSAweDBmLDB4MDEsMHhlZSIKKyAgICAgICAgOiAiPWEiIChwa3J1KSA6ICJjIiAoMCkgOiAi ZHgiKTsKKyAgICBfd3JpdGVfY3I0KGNyNCk7CisKKyAgICByZXR1cm4gcGtydTsKK30KKworLyog TWFjcm9zIGZvciBQS1JVIGRvbWFpbiAqLworI2RlZmluZSBQS1JVX1JFQUQgICgwKQorI2RlZmlu ZSBQS1JVX1dSSVRFICgxKQorI2RlZmluZSBQS1JVX0FUVFJTICgyKQorCisvKgorICogUEtSVSBk ZWZpbmVzIDMyIGJpdHMsIHRoZXJlIGFyZSAxNiBkb21haW5zIGFuZCAyIGF0dHJpYnV0ZSBiaXRz IHBlcgorICogZG9tYWluIGluIHBrcnUsIHBrZXlzIGlzIGluZGV4IHRvIGEgZGVmaW5lZCBkb21h aW4sIHNvIHRoZSB2YWx1ZSBvZgorICogcHRlX3BrZXlzICogUEtSVV9BVFRSUyArIFIvVyBpcyBv ZmZzZXQgb2YgYSBkZWZpbmVkIGRvbWFpbiBhdHRyaWJ1dGUuCisgKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbF90IHJlYWRfcGtydV9hZCh1aW50MzJfdCBwa3J1LCB1bnNpZ25lZCBpbnQgcGtleSkKK3sK KyAgICBBU1NFUlQocGtleSA8IDE2KTsKKyAgICByZXR1cm4gKHBrcnUgPj4gKHBrZXkgKiBQS1JV X0FUVFJTICsgUEtSVV9SRUFEKSkgJiAxOworfQorCitzdGF0aWMgaW5saW5lIGJvb2xfdCByZWFk X3BrcnVfd2QodWludDMyX3QgcGtydSwgdW5zaWduZWQgaW50IHBrZXkpCit7CisgICAgQVNTRVJU KHBrZXkgPCAxNik7CisgICAgcmV0dXJuIChwa3J1ID4+IChwa2V5ICogUEtSVV9BVFRSUyArIFBL UlVfV1JJVEUpKSAmIDE7Cit9CisKIC8qCiAgKiAgICAgIE5TQy9DeXJpeCBDUFUgY29uZmlndXJh dGlvbiByZWdpc3RlciBpbmRleGVzCiAgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14 ODYveDg2XzY0L3BhZ2UuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3BhZ2UuaAppbmRl eCAxOWFiNGQwLi44NmFiYjk0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82 NC9wYWdlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oCkBAIC0xMzQs NiArMTM0LDE4IEBAIHR5cGVkZWYgbDRfcGdlbnRyeV90IHJvb3RfcGdlbnRyeV90OwogI2RlZmlu ZSBnZXRfcHRlX2ZsYWdzKHgpICgoKGludCkoKHgpID4+IDQwKSAmIH4weEZGRikgfCAoKGludCko eCkgJiAweEZGRikpCiAjZGVmaW5lIHB1dF9wdGVfZmxhZ3MoeCkgKCgoaW50cHRlX3QpKCh4KSAm IH4weEZGRikgPDwgNDApIHwgKCh4KSAmIDB4RkZGKSkKIAorLyoKKyAqIFByb3RlY3Rpb24ga2V5 cyBkZWZpbmUgYSBuZXcgNC1iaXQgcHJvdGVjdGlvbiBrZXkgZmllbGQKKyAqIChQS0VZKSBpbiBi aXRzIDYyOjU5IG9mIGxlYWYgZW50cmllcyBvZiB0aGUgcGFnZSB0YWJsZXMuCisgKiBUaGlzIGNv cnJlc3BvbmRzIHRvIGJpdCAyMjoxOSBvZiBhIDI0LWJpdCBmbGFncy4KKyAqCisgKiBOb3RpY2U6 IEJpdCAyMiBpcyB1c2VkIGJ5IF9QQUdFX0dOVFRBQiB3aGljaCBpcyB2aXNpYmxlIHRvIFBWIGd1 ZXN0cywKKyAqIHNvIFByb3RlY3Rpb24ga2V5cyBtdXN0IGJlIGRpc2FibGVkIG9uIFBWIGd1ZXN0 cy4KKyAqLworI2RlZmluZSBfUEFHRV9QS0VZX0JJVFMgICgweDc4MDAwMCkJIC8qIFByb3RlY3Rp b24gS2V5cywgMjI6MTkgKi8KKworI2RlZmluZSBnZXRfcHRlX3BrZXkoeCkgKE1BU0tfRVhUUihn ZXRfcHRlX2ZsYWdzKHgpLCBfUEFHRV9QS0VZX0JJVFMpKQorCiAvKiBCaXQgMjMgb2YgYSAyNC1i aXQgZmxhZyBtYXNrLiBUaGlzIGNvcnJlc3BvbmRzIHRvIGJpdCA2MyBvZiBhIHB0ZS4qLwogI2Rl ZmluZSBfUEFHRV9OWF9CSVQgKDFVPDwyMykKIAotLSAKMi40LjMKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=