From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huaitong Han Subject: [PATCH V9 2/5] x86/hvm: pkeys, add pkeys support for guest_walk_tables Date: Wed, 3 Feb 2016 22:12:02 +0800 Message-ID: <1454508725-22786-3-git-send-email-huaitong.han@intel.com> References: <1454508725-22786-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: <1454508725-22786-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, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com 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 QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K LS0tCkNoYW5nZXMgaW4gdjk6CipSZW5hbWUgX3dyaXRlX2NyNCB0byByYXdfd3JpdGVfY3I0LgoK Q2hhbmdlcyBpbiB2ODoKKkFic3RyYWN0IG91dCBfd3JpdGVfY3I0LgoKQ2hhbmdlcyBpbiB2NzoK KkFkZCBzdGF0aWMgZm9yIHBrZXlfZmF1bHQuCipBZGQgYSBjb21tZW50IGZvciBwYWdlIHByZXNl bnQgY2hlY2sgYW5kIGFkanVzdCBpbmRlbnRhdGlvbi4KKkluaXQgcGtydV9hZCBhbmQgcGtydV93 ZC4KKkRlbGV0ZSBsM2VfZ2V0X3BrZXkgdGhlIG91dGVyIHBhcmVudGhlc2VzLgoqVGhlIGZpcnN0 IHBhcmFtZXRlciBvZiByZWFkX3BrcnVfKiB1c2UgdWludDMyX3QgdHlwZS4KCiB4ZW4vYXJjaC94 ODYvbW0vZ3Vlc3Rfd2Fsay5jICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jICB8ICAzICsrKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oICAgIHwgMTIgKysrKysrKysrCiB4ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9odm0uaCAgICAgfCAgMiArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9w YWdlLmggICAgICAgIHwgIDUgKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCAg IHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2luY2x1ZGUvYXNt LXg4Ni94ODZfNjQvcGFnZS5oIHwgMTIgKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDEzNCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21t L2d1ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKaW5kZXggMThkMWFj Zi4uNWUxMTExYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYworKysg Yi94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCkBAIC05MCw2ICs5MCw1NCBAQCBzdGF0aWMg dWludDMyX3Qgc2V0X2FkX2JpdHModm9pZCAqZ3Vlc3RfcCwgdm9pZCAqd2Fsa19wLCBpbnQgc2V0 X2RpcnR5KQogICAgIHJldHVybiAwOwogfQogCisjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSA0 CitzdGF0aWMgYm9vbF90IHBrZXlfZmF1bHQoc3RydWN0IHZjcHUgKnZjcHUsIHVpbnQzMl90IHBm ZWMsCisgICAgICAgIHVpbnQzMl90IHB0ZV9mbGFncywgdWludDMyX3QgcHRlX3BrZXkpCit7Cisg ICAgdWludDMyX3QgcGtydSA9IDA7CisgICAgYm9vbF90IHBrcnVfYWQgPSAwLCBwa3J1X3dkID0g MDsKKworICAgIC8qIFdoZW4gcGFnZSBpc24ndCBwcmVzZW50LCAgUEtFWSBpc24ndCBjaGVja2Vk LiAqLworICAgIGlmICggIShwZmVjICYgUEZFQ19wYWdlX3ByZXNlbnQpIHx8IGlzX3B2X3ZjcHUo dmNwdSkgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qCisgICAgICogUEtVOiAgYWRkaXRp b25hbCBtZWNoYW5pc20gYnkgd2hpY2ggdGhlIHBhZ2luZyBjb250cm9scworICAgICAqIGFjY2Vz cyB0byB1c2VyLW1vZGUgYWRkcmVzc2VzIGJhc2VkIG9uIHRoZSB2YWx1ZSBpbiB0aGUKKyAgICAg KiBQS1JVIHJlZ2lzdGVyLiBBIGZhdWx0IGlzIGNvbnNpZGVyZWQgYXMgYSBQS1UgdmlvbGF0aW9u IGlmIGFsbAorICAgICAqIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZToKKyAg ICAgKiAxLkNSNF9QS0U9MS4KKyAgICAgKiAyLkVGRVJfTE1BPTEuCisgICAgICogMy5QYWdlIGlz IHByZXNlbnQgd2l0aCBubyByZXNlcnZlZCBiaXQgdmlvbGF0aW9ucy4KKyAgICAgKiA0LlRoZSBh Y2Nlc3MgaXMgbm90IGFuIGluc3RydWN0aW9uIGZldGNoLgorICAgICAqIDUuVGhlIGFjY2VzcyBp cyB0byBhIHVzZXIgcGFnZS4KKyAgICAgKiA2LlBLUlUuQUQ9MSBvcgorICAgICAqICAgICAgdGhl IGFjY2VzcyBpcyBhIGRhdGEgd3JpdGUgYW5kIFBLUlUuV0Q9MSBhbmQKKyAgICAgKiAgICAgICAg ICBlaXRoZXIgQ1IwLldQPTEgb3IgaXQgaXMgYSB1c2VyIGFjY2Vzcy4KKyAgICAgKi8KKyAgICBp ZiAoICFodm1fcGt1X2VuYWJsZWQodmNwdSkgfHwKKyAgICAgICAgICFodm1fbG9uZ19tb2RlX2Vu YWJsZWQodmNwdSkgfHwKKyAgICAgICAgIC8qIFRoZSBwZXJzZW50IGJpdCBpcyBndWFyYW50ZWVk IGJ5IHRoZSBjYWxsZXIuICovCisgICAgICAgICAocGZlYyAmIFBGRUNfcmVzZXJ2ZWRfYml0KSB8 fAorICAgICAgICAgKHBmZWMgJiBQRkVDX2luc25fZmV0Y2gpIHx8CisgICAgICAgICAhKHB0ZV9m bGFncyAmIF9QQUdFX1VTRVIpICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwa3J1ID0gcmVh ZF9wa3J1KCk7CisgICAgaWYgKCB1bmxpa2VseShwa3J1KSApCisgICAgeworICAgICAgICBwa3J1 X2FkID0gcmVhZF9wa3J1X2FkKHBrcnUsIHB0ZV9wa2V5KTsKKyAgICAgICAgcGtydV93ZCA9IHJl YWRfcGtydV93ZChwa3J1LCBwdGVfcGtleSk7CisgICAgICAgIC8qIENvbmRpdGlvbiA2ICovCisg ICAgICAgIGlmICggcGtydV9hZCB8fCAocGtydV93ZCAmJiAocGZlYyAmIFBGRUNfd3JpdGVfYWNj ZXNzKSAmJgorICAgICAgICAgICAgICAgICAgICAoaHZtX3dwX2VuYWJsZWQodmNwdSkgfHwgKHBm ZWMgJiBQRkVDX3VzZXJfbW9kZSkpKSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KKwor ICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIC8qIFdhbGsgdGhlIGd1ZXN0IHBhZ2V0YWJsZXMs IGFmdGVyIHRoZSBtYW5uZXIgb2YgYSBoYXJkd2FyZSB3YWxrZXIuICovCiAvKiBCZWNhdXNlIHRo ZSB3YWxrIGlzIGVzc2VudGlhbGx5IHJhbmRvbSwgaXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sgCiAg KiB3YXJuaW5nIGluIHRoZSBwMm0gbG9ja2luZyBjb2RlLiBIaWdobHkgdW5saWtlbHkgdGhpcyBp cyBhbiBhY3R1YWwKQEAgLTEwNyw2ICsxNTUsNyBAQCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3Qg dmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICBndWVzdF9sM2VfdCAqbDNwID0g TlVMTDsKICAgICBndWVzdF9sNGVfdCAqbDRwOwogI2VuZGlmCisgICAgdW5zaWduZWQgaW50IHBr ZXk7CiAgICAgdWludDMyX3QgZ2ZsYWdzLCBtZmxhZ3MsIGlmbGFncywgcmMgPSAwOwogICAgIGJv b2xfdCBzbWVwID0gMCwgc21hcCA9IDA7CiAgICAgYm9vbF90IHBzZTFHID0gMCwgcHNlMk0gPSAw OwpAQCAtMTkwLDYgKzIzOSw3IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICBnb3RvIG91dDsKICAgICAvKiBHZXQgdGhl IGwzZSBhbmQgY2hlY2sgaXRzIGZsYWdzKi8KICAgICBndy0+bDNlID0gbDNwW2d1ZXN0X2wzX3Rh YmxlX29mZnNldCh2YSldOworICAgIHBrZXkgPSBndWVzdF9sM2VfZ2V0X3BrZXkoZ3ctPmwzZSk7 CiAgICAgZ2ZsYWdzID0gZ3Vlc3RfbDNlX2dldF9mbGFncyhndy0+bDNlKSBeIGlmbGFnczsKICAg ICBpZiAoICEoZ2ZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKSB7CiAgICAgICAgIHJjIHw9IF9QQUdF X1BSRVNFTlQ7CkBAIC0yNjEsNiArMzExLDcgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3RydWN0IHZj cHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAKICNlbmRpZiAvKiBBbGwgbGV2ZWxzLi4u ICovCiAKKyAgICBwa2V5ID0gZ3Vlc3RfbDJlX2dldF9wa2V5KGd3LT5sMmUpOwogICAgIGdmbGFn cyA9IGd1ZXN0X2wyZV9nZXRfZmxhZ3MoZ3ctPmwyZSkgXiBpZmxhZ3M7CiAgICAgaWYgKCAhKGdm bGFncyAmIF9QQUdFX1BSRVNFTlQpICkgewogICAgICAgICByYyB8PSBfUEFHRV9QUkVTRU5UOwpA QCAtMzI0LDYgKzM3NSw3IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICBpZihsMXAgPT0gTlVMTCkKICAgICAgICAgICAg IGdvdG8gb3V0OwogICAgICAgICBndy0+bDFlID0gbDFwW2d1ZXN0X2wxX3RhYmxlX29mZnNldCh2 YSldOworICAgICAgICBwa2V5ID0gZ3Vlc3RfbDFlX2dldF9wa2V5KGd3LT5sMWUpOwogICAgICAg ICBnZmxhZ3MgPSBndWVzdF9sMWVfZ2V0X2ZsYWdzKGd3LT5sMWUpIF4gaWZsYWdzOwogICAgICAg ICBpZiAoICEoZ2ZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKSB7CiAgICAgICAgICAgICByYyB8PSBf UEFHRV9QUkVTRU5UOwpAQCAtMzM0LDYgKzM4Niw4IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVj dCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogCiAjaWYgR1VFU1RfUEFHSU5HX0xF VkVMUyA+PSA0IC8qIDY0LWJpdCBvbmx5Li4uICovCiBzZXRfYWQ6CisgICAgaWYgKCBwa2V5X2Zh dWx0KHYsIHBmZWMsIGdmbGFncywgcGtleSkgKQorICAgICAgICByYyB8PSBfUEFHRV9QS0VZX0JJ VFM7CiAjZW5kaWYKICAgICAvKiBOb3cgcmUtaW52ZXJ0IHRoZSB1c2VyLW1vZGUgcmVxdWlyZW1l bnQgZm9yIFNNRVAgYW5kIFNNQVAgKi8KICAgICBpZiAoIHNtZXAgfHwgc21hcCApCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9o YXAvZ3Vlc3Rfd2Fsay5jCmluZGV4IDExYzFiMzUuLjQ5ZDAzMjggMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vl c3Rfd2Fsay5jCkBAIC0xMzAsNiArMTMwLDkgQEAgdW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3Rv X2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgKICAgICBpZiAoIG1pc3NpbmcgJiBfUEFHRV9JTlZB TElEX0JJVFMgKSAKICAgICAgICAgcGZlY1swXSB8PSBQRkVDX3Jlc2VydmVkX2JpdDsKIAorICAg IGlmICggbWlzc2luZyAmIF9QQUdFX1BLRVlfQklUUyApCisgICAgICAgIHBmZWNbMF0gfD0gUEZF Q19wcm90X2tleTsKKwogICAgIGlmICggbWlzc2luZyAmIF9QQUdFX1BBR0VEICkKICAgICAgICAg cGZlY1swXSA9IFBGRUNfcGFnZV9wYWdlZDsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9ndWVzdF9wdC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCmluZGV4IDM0 NDc5NzMuLmViMjllNjIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQu aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmgKQEAgLTgxLDYgKzgxLDExIEBA IHN0YXRpYyBpbmxpbmUgdTMyIGd1ZXN0X2wxZV9nZXRfZmxhZ3MoZ3Vlc3RfbDFlX3QgZ2wxZSkK IHN0YXRpYyBpbmxpbmUgdTMyIGd1ZXN0X2wyZV9nZXRfZmxhZ3MoZ3Vlc3RfbDJlX3QgZ2wyZSkK IHsgcmV0dXJuIGdsMmUubDIgJiAweGZmZjsgfQogCitzdGF0aWMgaW5saW5lIHUzMiBndWVzdF9s MWVfZ2V0X3BrZXkoZ3Vlc3RfbDFlX3QgZ2wxZSkKK3sgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxp bmUgdTMyIGd1ZXN0X2wyZV9nZXRfcGtleShndWVzdF9sMmVfdCBnbDJlKQoreyByZXR1cm4gMDsg fQorCiBzdGF0aWMgaW5saW5lIGd1ZXN0X2wxZV90IGd1ZXN0X2wxZV9mcm9tX2dmbihnZm5fdCBn Zm4sIHUzMiBmbGFncykKIHsgcmV0dXJuIChndWVzdF9sMWVfdCkgeyAoZ2ZuX3goZ2ZuKSA8PCBQ QUdFX1NISUZUKSB8IGZsYWdzIH07IH0KIHN0YXRpYyBpbmxpbmUgZ3Vlc3RfbDJlX3QgZ3Vlc3Rf bDJlX2Zyb21fZ2ZuKGdmbl90IGdmbiwgdTMyIGZsYWdzKQpAQCAtMTU0LDYgKzE1OSwxMyBAQCBz dGF0aWMgaW5saW5lIHUzMiBndWVzdF9sNGVfZ2V0X2ZsYWdzKGd1ZXN0X2w0ZV90IGdsNGUpCiB7 IHJldHVybiBsNGVfZ2V0X2ZsYWdzKGdsNGUpOyB9CiAjZW5kaWYKIAorc3RhdGljIGlubGluZSB1 MzIgZ3Vlc3RfbDFlX2dldF9wa2V5KGd1ZXN0X2wxZV90IGdsMWUpCit7IHJldHVybiBsMWVfZ2V0 X3BrZXkoZ2wxZSk7IH0KK3N0YXRpYyBpbmxpbmUgdTMyIGd1ZXN0X2wyZV9nZXRfcGtleShndWVz dF9sMmVfdCBnbDJlKQoreyByZXR1cm4gbDJlX2dldF9wa2V5KGdsMmUpOyB9CitzdGF0aWMgaW5s aW5lIHUzMiBndWVzdF9sM2VfZ2V0X3BrZXkoZ3Vlc3RfbDNlX3QgZ2wzZSkKK3sgcmV0dXJuIGwz ZV9nZXRfcGtleShnbDNlKTsgfQorCiBzdGF0aWMgaW5saW5lIGd1ZXN0X2wxZV90IGd1ZXN0X2wx ZV9mcm9tX2dmbihnZm5fdCBnZm4sIHUzMiBmbGFncykKIHsgcmV0dXJuIGwxZV9mcm9tX3Bmbihn Zm5feChnZm4pLCBmbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUgZ3Vlc3RfbDJlX3QgZ3Vlc3RfbDJl X2Zyb21fZ2ZuKGdmbl90IGdmbiwgdTMyIGZsYWdzKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vaHZtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAppbmRleCBh ODcyMjRiLi43MzFkZDQ0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0u aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaApAQCAtMjc3LDYgKzI3Nyw4IEBA IGludCBodm1fZ2lycV9kZXN0XzJfdmNwdV9pZChzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRl c3QsIHVpbnQ4X3QgZGVzdF9tb2RlKTsKICAgICAoaHZtX3BhZ2luZ19lbmFibGVkKHYpICYmICgo diktPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbNF0gJiBYODZfQ1I0X1NNQVApKQogI2RlZmluZSBo dm1fbnhfZW5hYmxlZCh2KSBcCiAgICAgKCEhKCh2KS0+YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVy ICYgRUZFUl9OWCkpCisjZGVmaW5lIGh2bV9wa3VfZW5hYmxlZCh2KSBcCisgICAgKGh2bV9wYWdp bmdfZW5hYmxlZCh2KSAmJiAoKHYpLT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdICYgWDg2X0NS NF9QS0UpKQogCiAvKiBDYW4gd2UgdXNlIHN1cGVycGFnZXMgaW4gdGhlIEhBUCBwMm0gdGFibGU/ ICovCiAjZGVmaW5lIGhhcF9oYXNfMWdiICghIShodm1fZnVuY3MuaGFwX2NhcGFiaWxpdGllcyAm IEhWTV9IQVBfU1VQRVJQQUdFXzFHQikpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L3BhZ2UuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnZS5oCmluZGV4IGEwOTVhOTMuLjkyMDJm M2QgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnZS5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcGFnZS5oCkBAIC05Myw2ICs5MywxMSBAQAogI2RlZmluZSBsM2VfZ2V0X2Zs YWdzKHgpICAgICAgICAgICAoZ2V0X3B0ZV9mbGFncygoeCkubDMpKQogI2RlZmluZSBsNGVfZ2V0 X2ZsYWdzKHgpICAgICAgICAgICAoZ2V0X3B0ZV9mbGFncygoeCkubDQpKQogCisvKiBHZXQgcHRl IHBrZXlzICh1bnNpZ25lZCBpbnQpLiAqLworI2RlZmluZSBsMWVfZ2V0X3BrZXkoeCkgICAgICAg ICAgIGdldF9wdGVfcGtleSgoeCkubDEpCisjZGVmaW5lIGwyZV9nZXRfcGtleSh4KSAgICAgICAg ICAgZ2V0X3B0ZV9wa2V5KCh4KS5sMikKKyNkZWZpbmUgbDNlX2dldF9wa2V5KHgpICAgICAgICAg ICBnZXRfcHRlX3BrZXkoKHgpLmwzKQorCiAvKiBDb25zdHJ1Y3QgYW4gZW1wdHkgcHRlLiAqLwog I2RlZmluZSBsMWVfZW1wdHkoKSAgICAgICAgICAgICAgICAoKGwxX3BnZW50cnlfdCkgeyAwIH0p CiAjZGVmaW5lIGwyZV9lbXB0eSgpICAgICAgICAgICAgICAgICgobDJfcGdlbnRyeV90KSB7IDAg fSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCmluZGV4IDI2YmExNDEuLjYxN2E0ZGIgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9wcm9jZXNzb3IuaApAQCAtMzMyLDYgKzMzMiwxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgcmVhZF9jcjIodm9pZCkKIAogREVDTEFSRV9QRVJfQ1BVKHVuc2lnbmVkIGxvbmcs IGNyNCk7CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCByYXdfd3JpdGVfY3I0KHVuc2lnbmVkIGxvbmcg dmFsKQoreworICAgIGFzbSB2b2xhdGlsZSAoICJtb3YgJTAsJSVjcjQiIDogOiAiciIgKHZhbCkg KTsKK30KKwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJlYWRfY3I0KHZvaWQpCiB7CiAg ICAgcmV0dXJuIHRoaXNfY3B1KGNyNCk7CkBAIC0zNDAsNyArMzQ1LDcgQEAgc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBsb25nIHJlYWRfY3I0KHZvaWQpCiBzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVf Y3I0KHVuc2lnbmVkIGxvbmcgdmFsKQogewogICAgIHRoaXNfY3B1KGNyNCkgPSB2YWw7Ci0gICAg YXNtIHZvbGF0aWxlICggIm1vdiAlMCwlJWNyNCIgOiA6ICJyIiAodmFsKSApOworICAgIHJhd193 cml0ZV9jcjQodmFsKTsKIH0KIAogLyogQ2xlYXIgYW5kIHNldCAnVFMnIGJpdCByZXNwZWN0aXZl bHkgKi8KQEAgLTM3NCw2ICszNzksNDYgQEAgc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBjbGVh cl9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKICAgICB3cml0ZV9jcjQocmVhZF9jcjQoKSAm IH5tYXNrKTsKIH0KIAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcmVhZF9wa3J1KHZvaWQp Cit7CisgICAgdW5zaWduZWQgaW50IHBrcnU7CisgICAgdW5zaWduZWQgbG9uZyBjcjQgPSByZWFk X2NyNCgpOworCisgICAgLyoKKyAgICAgKiBfUEFHRV9QS0VZX0JJVFMgaGF2ZSBhIGNvbmZsaWN0 IHdpdGggX1BBR0VfR05UVEFCIHVzZWQgYnkgUFYgZ3Vlc3RzLAorICAgICAqIHNvIHRoYXQgWDg2 X0NSNF9QS0UgIGlzIGRpc2FibGVkIG9uIGh5cGVydmlzb3IuIFRvIHVzZSBSRFBLUlUsIENSNC5Q S0UKKyAgICAgKiBnZXRzIHRlbXBvcmFyaWx5IGVuYWJsZWQuCisgICAgICovCisgICAgcmF3X3dy aXRlX2NyNChjcjQgfCBYODZfQ1I0X1BLRSk7CisgICAgYXNtIHZvbGF0aWxlICgiLmJ5dGUgMHgw ZiwweDAxLDB4ZWUiCisgICAgICAgIDogIj1hIiAocGtydSkgOiAiYyIgKDApIDogImR4Iik7Cisg ICAgcmF3X3dyaXRlX2NyNChjcjQpOworCisgICAgcmV0dXJuIHBrcnU7Cit9CisKKy8qIE1hY3Jv cyBmb3IgUEtSVSBkb21haW4gKi8KKyNkZWZpbmUgUEtSVV9SRUFEICAoMCkKKyNkZWZpbmUgUEtS VV9XUklURSAoMSkKKyNkZWZpbmUgUEtSVV9BVFRSUyAoMikKKworLyoKKyAqIFBLUlUgZGVmaW5l cyAzMiBiaXRzLCB0aGVyZSBhcmUgMTYgZG9tYWlucyBhbmQgMiBhdHRyaWJ1dGUgYml0cyBwZXIK KyAqIGRvbWFpbiBpbiBwa3J1LCBwa2V5cyBpcyBpbmRleCB0byBhIGRlZmluZWQgZG9tYWluLCBz byB0aGUgdmFsdWUgb2YKKyAqIHB0ZV9wa2V5cyAqIFBLUlVfQVRUUlMgKyBSL1cgaXMgb2Zmc2V0 IG9mIGEgZGVmaW5lZCBkb21haW4gYXR0cmlidXRlLgorICovCitzdGF0aWMgaW5saW5lIGJvb2xf dCByZWFkX3BrcnVfYWQodWludDMyX3QgcGtydSwgdW5zaWduZWQgaW50IHBrZXkpCit7CisgICAg QVNTRVJUKHBrZXkgPCAxNik7CisgICAgcmV0dXJuIChwa3J1ID4+IChwa2V5ICogUEtSVV9BVFRS UyArIFBLUlVfUkVBRCkpICYgMTsKK30KKworc3RhdGljIGlubGluZSBib29sX3QgcmVhZF9wa3J1 X3dkKHVpbnQzMl90IHBrcnUsIHVuc2lnbmVkIGludCBwa2V5KQoreworICAgIEFTU0VSVChwa2V5 IDwgMTYpOworICAgIHJldHVybiAocGtydSA+PiAocGtleSAqIFBLUlVfQVRUUlMgKyBQS1JVX1dS SVRFKSkgJiAxOworfQorCiAvKgogICogICAgICBOU0MvQ3lyaXggQ1BVIGNvbmZpZ3VyYXRpb24g cmVnaXN0ZXIgaW5kZXhlcwogICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3g4 Nl82NC9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdlLmgKaW5kZXggMTlh YjRkMC4uODZhYmI5NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZfNjQvcGFn ZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3BhZ2UuaApAQCAtMTM0LDYgKzEz NCwxOCBAQCB0eXBlZGVmIGw0X3BnZW50cnlfdCByb290X3BnZW50cnlfdDsKICNkZWZpbmUgZ2V0 X3B0ZV9mbGFncyh4KSAoKChpbnQpKCh4KSA+PiA0MCkgJiB+MHhGRkYpIHwgKChpbnQpKHgpICYg MHhGRkYpKQogI2RlZmluZSBwdXRfcHRlX2ZsYWdzKHgpICgoKGludHB0ZV90KSgoeCkgJiB+MHhG RkYpIDw8IDQwKSB8ICgoeCkgJiAweEZGRikpCiAKKy8qCisgKiBQcm90ZWN0aW9uIGtleXMgZGVm aW5lIGEgbmV3IDQtYml0IHByb3RlY3Rpb24ga2V5IGZpZWxkCisgKiAoUEtFWSkgaW4gYml0cyA2 Mjo1OSBvZiBsZWFmIGVudHJpZXMgb2YgdGhlIHBhZ2UgdGFibGVzLgorICogVGhpcyBjb3JyZXNw b25kcyB0byBiaXQgMjI6MTkgb2YgYSAyNC1iaXQgZmxhZ3MuCisgKgorICogTm90aWNlOiBCaXQg MjIgaXMgdXNlZCBieSBfUEFHRV9HTlRUQUIgd2hpY2ggaXMgdmlzaWJsZSB0byBQViBndWVzdHMs CisgKiBzbyBQcm90ZWN0aW9uIGtleXMgbXVzdCBiZSBkaXNhYmxlZCBvbiBQViBndWVzdHMuCisg Ki8KKyNkZWZpbmUgX1BBR0VfUEtFWV9CSVRTICAoMHg3ODAwMDApCSAvKiBQcm90ZWN0aW9uIEtl eXMsIDIyOjE5ICovCisKKyNkZWZpbmUgZ2V0X3B0ZV9wa2V5KHgpIChNQVNLX0VYVFIoZ2V0X3B0 ZV9mbGFncyh4KSwgX1BBR0VfUEtFWV9CSVRTKSkKKwogLyogQml0IDIzIG9mIGEgMjQtYml0IGZs YWcgbWFzay4gVGhpcyBjb3JyZXNwb25kcyB0byBiaXQgNjMgb2YgYSBwdGUuKi8KICNkZWZpbmUg X1BBR0VfTlhfQklUICgxVTw8MjMpCiAKLS0gCjIuNC4zCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK