From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2] x86/smt: Support for enabling/disabling SMT at runtime Date: Mon, 8 Apr 2019 18:02:19 +0100 Message-ID: <1554742939-18688-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCBhIHVzZXIgY2FuIGluIGNvbWJpbmUgdGhlIG91dHB1dCBvZiBgeGwgaW5mbyAt bmAsIHRoZSBBUENJIHRhYmxlcywKYW5kIHNvbWUgbWFudWFsIENQVUlEIGRhdGEgdG8gZmlndXJl IG91dCB3aGljaCBDUFUgbnVtYmVycyB0byBmZWVkIGludG8KYHhlbi1ocHRvb2wgY3B1LW9mZmxp bmVgIHRvIGVmZmVjdGl2ZWx5IGRpc2FibGUgU01UIGF0IHJ1bnRpbWUuCgpBIG1vcmUgY29udmVu aWVudCBvcHRpb24gaXMgdG8gdGVhY2ggWGVuIGhvdyB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLgoK RXh0ZW5kIFhFTl9TWVNDVExfY3B1X2hvdHBsdWcgd2l0aCB0d28gbmV3IG9wZXJhdGlvbnMuICBJ bnRyb2R1Y2UgYSBuZXcKc210X3VwX2Rvd25faGVscGVyKCkgd2hpY2ggd3JhcCB0aGUgY3B1X3t1 cCxkb3dufV9oZWxwZXIoKSBoZWxwZXJzIHdpdGggbG9naWMKd2hpY2ggdW5kZXJzdGFuZHMgc2li bGluZ3MgYmFzZWQgb24gdGhlaXIgQVBJQ19JRC4KCkFkZCBsaWJ4YyBzdHVicywgYW5kIGV4dGVu ZCB4ZW4taHB0b29sIHdpdGggc210LXtlbmFibGUsZGlzYWJsZX0gb3B0aW9ucy4KVGhlc2UgYXJl IGludGVuZGVkIHRvIGJlIHNob3J0aGFuZHMgZm9yIGEgbG9vcCBvdmVyIGNwdS17b25saW5lLG9m ZmxpbmV9LiAgSXQKaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBwcm9kdWN0aW9uIHNjZW5hcmlvcyB3 aGVyZSBkZWJ1Z2dpbmcgb3B0aW9ucyBzdWNoIGFzCmBtYXhjcHVzPWAgb3Igb3RoZXIgbWFudWFs IHBsdWcvdW5wbHVnIGNvbmZpZ3VyYXRpb24gaGFzIG5vdCBiZWVuIHVzZWQuCgpTaWduZWQtb2Zm LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEph biBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJp eC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KCnYyOgog KiBGb2xkIHNtdF97dXAsZG93bn1faGVscGVyKCkgaW50byBzbXRfdXBfZG93bl9oZWxwZXIoKQog KiBGaXggY2FsY3VsYXRpb24gb2Ygc2libGluZ19tYXNrCiAqIE1vcmUgY2xlYXJseSBkb2N1bWVu dCB0aGUgYmVoYXZpb3VyIGFuZCBleHBlY3RlZCByZXN0cmljdGlvbnMuCgpXaGlsZSB0ZXN0aW5n IHRoaXMsIEkndmUgZm91bmQgYSBmdXJ0aGVyIGJ1Zy4gIFRoaXMgaXMgcHJlZXhpc3RpbmcgYW5k IGNhbiBiZQpwcm92b2tlZCBvbiBzdGFnaW5nLCBhbHRob3VnaCBpdCBpcyBlYXNpZXIgdG8gcHJv dm9rZSB3aXRoIHRoaXMgcGF0Y2guCgooWEVOKSBBc3NlcnRpb24gJ2VudHJ5LT5wcmV2LT5uZXh0 ID09IGVudHJ5JyBmYWlsZWQgYXQgL2xvY2FsL3hlbi5naXQveGVuL2luY2x1ZGUveGVuL2xpc3Qu aDoxODQKKFhFTikgLS0tLVsgWGVuLTQuMTMtdW5zdGFibGUgIHg4Nl82NCAgZGVidWc9eSAgIE5v dCB0YWludGVkIF0tLS0tCihYRU4pIENQVTogICAgMAooWEVOKSBSSVA6ICAgIGUwMDg6WzxmZmZm ODJkMDgwMjQxZmFkPl0gbWlncmF0ZV90aW1lcisweDFkZi8weDJkYQooWEVOKSBSRkxBR1M6IDAw MDAwMDAwMDAwMTAwODcgICBDT05URVhUOiBoeXBlcnZpc29yCihYRU4pIHJheDogZmZmZjgzMDgz NzA4ODAzOCAgIHJieDogZmZmZjgzMDU3NTkyODg5MCAgIHJjeDogZmZmZjgzMDg0ZDY5ZTMyMAoo WEVOKSByZHg6IGZmZmY4MzA1NzU5Mjg4OTggICByc2k6IGZmZmY4MmQwODA5NDAwMmYgICByZGk6 IGZmZmY4MzA1NzU5Mjg4OTAKKFhFTikgcmJwOiBmZmZmODMwMGFiYzI3ZDI4ICAgcnNwOiBmZmZm ODMwMGFiYzI3Y2M4ICAgcjg6ICAwMDAwMDAwMDAwMDAwMDAwCihYRU4pIHI5OiAgZmZmZjgzMDU3 NTkyODc4MCAgIHIxMDogZmZmZjgzMDU3NTkyODAxMCAgIHIxMTogMDAwMDAwMDAwMDAwMDAwMAoo WEVOKSByMTI6IDAwMDAwMDAwMDAwMDAwMDAgICByMTM6IDAwMDAwMDAwMDAwMDAwMDAgICByMTQ6 IGZmZmY4MmQwODA5NjIwODAKKFhFTikgcjE1OiBmZmZmODJkMDgwOTYyMDgwICAgY3IwOiAwMDAw MDAwMDgwMDUwMDNiICAgY3I0OiAwMDAwMDAwMDAwMTUyNmUwCihYRU4pIGNyMzogMDAwMDAwMDBh YmMxNzAwMCAgIGNyMjogZmZmZjg4MDA3MmE5ZjhjMAooWEVOKSBmc2I6IDAwMDAwMDAwMDAwMDAw MDAgICBnc2I6IGZmZmY4ODAwN2NlMDAwMDAgICBnc3M6IDAwMDAwMDAwMDAwMDAwMDAKKFhFTikg ZHM6IDAwMDAgICBlczogMDAwMCAgIGZzOiAwMDAwICAgZ3M6IDAwMDAgICBzczogZTAxMCAgIGNz OiBlMDA4CihYRU4pIFhlbiBjb2RlIGFyb3VuZCA8ZmZmZjgyZDA4MDI0MWZhZD4gKG1pZ3JhdGVf dGltZXIrMHgxZGYvMHgyZGEpOgooWEVOKSAgOGIgNGIgMTAgNDggM2IgMTEgNzQgMDIgPDBmPiAw YiA0OCA4OSA0OCAwOCA0OCA4OSAwMSA0OCBiOCAwMCAwMSAxMCAwMCAwMQooWEVOKSBYZW4gc3Rh Y2sgdHJhY2UgZnJvbSByc3A9ZmZmZjgzMDBhYmMyN2NjODoKPHNuaXA+CihYRU4pIFhlbiBjYWxs IHRyYWNlOgooWEVOKSAgICBbPGZmZmY4MmQwODAyNDFmYWQ+XSBtaWdyYXRlX3RpbWVyKzB4MWRm LzB4MmRhCihYRU4pICAgIFs8ZmZmZjgyZDA4MDI5OThiNz5dIGRvX0lSUSsweDRmYy8weDY0ZQoo WEVOKSAgICBbPGZmZmY4MmQwODAzOTg4YWE+XSBjb21tb25faW50ZXJydXB0KzB4MTBhLzB4MTIw CihYRU4pICAgIFs8ZmZmZjgyZDA4MDJmODYxYz5dIG13YWl0LWlkbGUuYyNtd2FpdF9pZGxlKzB4 MzFkLzB4MzcwCihYRU4pICAgIFs8ZmZmZjgyZDA4MDI4OTQ5OT5dIGRvbWFpbi5jI2lkbGVfbG9v cCsweGE4LzB4YzMKKFhFTikKKFhFTikKKFhFTikgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgooWEVOKSBQYW5pYyBvbiBDUFUgMDoKKFhFTikgQXNzZXJ0aW9uICdlbnRy eS0+cHJldi0+bmV4dCA9PSBlbnRyeScgZmFpbGVkIGF0IC9sb2NhbC94ZW4uZ2l0L3hlbi9pbmNs dWRlL3hlbi9saXN0Lmg6MTg0CihYRU4pICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICAyICsrCiB0b29s cy9saWJ4Yy94Y19jcHVfaG90cGx1Zy5jICB8IDI2ICsrKysrKysrKysrKysrKysrKysrCiB0b29s cy9taXNjL3hlbi1ocHRvb2wuYyAgICAgICB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L3N5c2N0bC5jICAgICAgICAgfCA1NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vaW5jbHVkZS9wdWJs aWMvc3lzY3RsLmggICB8IDE5ICsrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNTkg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggYTM2 MjhlNS4uNDlhNmIyYSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgK KysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTE4NTQsNiArMTg1NCw4IEBA IGludCB4Y19wbV9yZXNldF9jeHN0YXQoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBjcHVpZCk7CiAK IGludCB4Y19jcHVfb25saW5lKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgY3B1KTsKIGludCB4Y19j cHVfb2ZmbGluZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGNwdSk7CitpbnQgeGNfc210X2VuYWJs ZSh4Y19pbnRlcmZhY2UgKnhjaCk7CitpbnQgeGNfc210X2Rpc2FibGUoeGNfaW50ZXJmYWNlICp4 Y2gpOwogCiAvKiAKICAqIGNwdWZyZXEgcGFyYSBuYW1lIG9mIHRoaXMgc3RydWN0dXJlIG5hbWVk IApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfY3B1X2hvdHBsdWcuYyBiL3Rvb2xzL2xpYnhj L3hjX2NwdV9ob3RwbHVnLmMKaW5kZXggNThjMmEwZi4uMmVhOTgyNSAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGMveGNfY3B1X2hvdHBsdWcuYworKysgYi90b29scy9saWJ4Yy94Y19jcHVfaG90cGx1 Zy5jCkBAIC00NiwzICs0NiwyOSBAQCBpbnQgeGNfY3B1X29mZmxpbmUoeGNfaW50ZXJmYWNlICp4 Y2gsIGludCBjcHUpCiAgICAgcmV0dXJuIHJldDsKIH0KIAoraW50IHhjX3NtdF9lbmFibGUoeGNf aW50ZXJmYWNlICp4Y2gpCit7CisgICAgREVDTEFSRV9TWVNDVEw7CisgICAgaW50IHJldDsKKwor ICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX2NwdV9ob3RwbHVnOworICAgIHN5c2N0bC51LmNw dV9ob3RwbHVnLmNwdSA9IDA7CisgICAgc3lzY3RsLnUuY3B1X2hvdHBsdWcub3AgPSBYRU5fU1lT Q1RMX0NQVV9IT1RQTFVHX1NNVF9FTkFCTEU7CisgICAgcmV0ID0geGNfc3lzY3RsKHhjaCwgJnN5 c2N0bCk7CisKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgeGNfc210X2Rpc2FibGUoeGNfaW50 ZXJmYWNlICp4Y2gpCit7CisgICAgREVDTEFSRV9TWVNDVEw7CisgICAgaW50IHJldDsKKworICAg IHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX2NwdV9ob3RwbHVnOworICAgIHN5c2N0bC51LmNwdV9o b3RwbHVnLmNwdSA9IDA7CisgICAgc3lzY3RsLnUuY3B1X2hvdHBsdWcub3AgPSBYRU5fU1lTQ1RM X0NQVV9IT1RQTFVHX1NNVF9ESVNBQkxFOworICAgIHJldCA9IHhjX3N5c2N0bCh4Y2gsICZzeXNj dGwpOworCisgICAgcmV0dXJuIHJldDsKK30KKwpkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy94ZW4t aHB0b29sLmMgYi90b29scy9taXNjL3hlbi1ocHRvb2wuYwppbmRleCA0MGNkOTY2Li42ZTI3ZDlj IDEwMDY0NAotLS0gYS90b29scy9taXNjL3hlbi1ocHRvb2wuYworKysgYi90b29scy9taXNjL3hl bi1ocHRvb2wuYwpAQCAtMTksNiArMTksOCBAQCB2b2lkIHNob3dfaGVscCh2b2lkKQogICAgICAg ICAgICAgIiAgbWVtLW9ubGluZSAgICA8bWZuPiAgICAgIG9ubGluZSBNRU1PUlkgPG1mbj5cbiIK ICAgICAgICAgICAgICIgIG1lbS1vZmZsaW5lICAgPG1mbj4gICAgICBvZmZsaW5lIE1FTU9SWSA8 bWZuPlxuIgogICAgICAgICAgICAgIiAgbWVtLXN0YXR1cyAgICA8bWZuPiAgICAgIHF1ZXJ5IE1l bW9yeSBzdGF0dXM8bWZuPlxuIgorICAgICAgICAgICAgIiAgc210LWVuYWJsZSAgICAgICAgICAg ICAgIG9ubGluZXMgYWxsIFNNVCB0aHJlYWRzXG4iCisgICAgICAgICAgICAiICBzbXQtZGlzYWJs ZSAgICAgICAgICAgICAgb2ZmbGluZXMgYWxsIFNNVCB0aHJlYWRzXG4iCiAgICAgICAgICAgICk7 CiB9CiAKQEAgLTMwNCw2ICszMDYsNTggQEAgc3RhdGljIGludCBocF9jcHVfb2ZmbGluZV9mdW5j KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGlu dCBtYWluX3NtdF9lbmFibGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgcmV0 OworCisgICAgaWYgKCBhcmdjICkKKyAgICB7CisgICAgICAgIHNob3dfaGVscCgpOworICAgICAg ICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yICggOzsgKQorICAgIHsKKyAgICAgICAgcmV0 ID0geGNfc210X2VuYWJsZSh4Y2gpOworICAgICAgICBpZiAoIChyZXQgPj0gMCkgfHwgKGVycm5v ICE9IEVCVVNZKSApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIHJldCA8 IDAgKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBlbmFibGUgU01UOiBlcnJu byAlZCwgJXNcbiIsCisgICAgICAgICAgICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Cisg ICAgZWxzZQorICAgICAgICBwcmludGYoIkVuYWJsZWQgU01UXG4iKTsKKworICAgIHJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBpbnQgbWFpbl9zbXRfZGlzYWJsZShpbnQgYXJnYywgY2hhciAqYXJn dltdKQoreworICAgIGludCByZXQ7CisKKyAgICBpZiAoIGFyZ2MgKQorICAgIHsKKyAgICAgICAg c2hvd19oZWxwKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKCA7OyAp CisgICAgeworICAgICAgICByZXQgPSB4Y19zbXRfZGlzYWJsZSh4Y2gpOworICAgICAgICBpZiAo IChyZXQgPj0gMCkgfHwgKGVycm5vICE9IEVCVVNZKSApCisgICAgICAgICAgICBicmVhazsKKyAg ICB9CisKKyAgICBpZiAoIHJldCA8IDAgKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJs ZSB0byBkaXNhYmxlIFNNVDogZXJybm8gJWQsICVzXG4iLAorICAgICAgICAgICAgICAgIGVycm5v LCBzdHJlcnJvcihlcnJubykpOworICAgIGVsc2UKKyAgICAgICAgcHJpbnRmKCJEaXNhYmxlZCBT TVRcbiIpOworCisgICAgcmV0dXJuIHJldDsKK30KKwogc3RydWN0IHsKICAgICBjb25zdCBjaGFy ICpuYW1lOwogICAgIGludCAoKmZ1bmN0aW9uKShpbnQgYXJnYywgY2hhciAqYXJndltdKTsKQEAg LTMxNCw2ICszNjgsOCBAQCBzdHJ1Y3QgewogICAgIHsgIm1lbS1zdGF0dXMiLCBocF9tZW1fcXVl cnlfZnVuY30sCiAgICAgeyAibWVtLW9ubGluZSIsIGhwX21lbV9vbmxpbmVfZnVuY30sCiAgICAg eyAibWVtLW9mZmxpbmUiLCBocF9tZW1fb2ZmbGluZV9mdW5jfSwKKyAgICB7ICJzbXQtZW5hYmxl IiwgbWFpbl9zbXRfZW5hYmxlIH0sCisgICAgeyAic210LWRpc2FibGUiLCBtYWluX3NtdF9kaXNh YmxlIH0sCiB9OwogCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYyBiL3hlbi9h cmNoL3g4Ni9zeXNjdGwuYwppbmRleCBjZmY0NDE1Li44YWNiNWY4IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvc3lzY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jCkBAIC0xMTQsNiAr MTE0LDQ4IEBAIGxvbmcgY3B1X2Rvd25faGVscGVyKHZvaWQgKmRhdGEpCiAgICAgcmV0dXJuIHJl dDsKIH0KIAorc3RhdGljIGxvbmcgc210X3VwX2Rvd25faGVscGVyKHZvaWQgKmRhdGEpCit7Cisg ICAgYm9vbCB1cCA9IChib29sKWRhdGE7CisgICAgdW5zaWduZWQgaW50IGNwdSwgc2libGluZ19t YXNrID0gYm9vdF9jcHVfZGF0YS54ODZfbnVtX3NpYmxpbmdzIC0gMTsKKyAgICBpbnQgcmV0ID0g MDsKKworICAgIG9wdF9zbXQgPSB1cDsKKworICAgIGZvcl9lYWNoX3ByZXNlbnRfY3B1ICggY3B1 ICkKKyAgICB7CisgICAgICAgIC8qIFNraXAgcHJpbWFyeSBzaWJsaW5ncyAodGhvc2Ugd2hvc2Ug dGhyZWFkIGlkIGlzIDApLiAqLworICAgICAgICBpZiAoICEoeDg2X2NwdV90b19hcGljaWRbY3B1 XSAmIHNpYmxpbmdfbWFzaykgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0 ID0gdXAgPyBjcHVfdXBfaGVscGVyKF9wKGNwdSkpCisgICAgICAgICAgICAgICAgIDogY3B1X2Rv d25faGVscGVyKF9wKGNwdSkpOworCisgICAgICAgIGlmICggcmV0ICYmIHJldCAhPSAtRUVYSVNU ICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIEVuc3VyZSBm b3J3YXJkIHByb2dyZXNzIGJ5IG9ubHkgY29uc2lkZXJpbmcgcHJlZW1wdGlvbiB3aGVuIHdlIGhh dmUKKyAgICAgICAgICogY2hhbmdlZCB0aGUgc3RhdGUgb2Ygb25lIG9yIG1vcmUgY3B1cy4KKyAg ICAgICAgICovCisgICAgICAgIGlmICggcmV0ICE9IC1FRVhJU1QgJiYgZ2VuZXJhbF9wcmVlbXB0 X2NoZWNrKCkgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBJbiB0YXNrbGV0IGNvbnRleHQg LSBjYW4ndCBjcmVhdGUgYSBjb250aW5hdGlvbi4gKi8KKyAgICAgICAgICAgIHJldCA9IC1FQlVT WTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0ID0gMDsgLyog QXZvaWQgZXhpdGluZyB3aXRoIC1FRVhJU1QgaW4gdGhlIHN1Y2Nlc3MgY2FzZS4gKi8KKyAgICB9 CisKKyAgICBpZiAoICFyZXQgKQorICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIlNNVCAlcyAt IG9ubGluZSBDUFVzIHslKnBibH1cbiIsCisgICAgICAgICAgICAgICB1cCA/ICJlbmFibGVkIiA6 ICJkaXNhYmxlZCIsCisgICAgICAgICAgICAgICBucl9jcHVfaWRzLCBjcHVtYXNrX2JpdHMoJmNw dV9vbmxpbmVfbWFwKSk7CisKKyAgICByZXR1cm4gcmV0OworfQorCiB2b2lkIGFyY2hfZG9fcGh5 c2luZm8oc3RydWN0IHhlbl9zeXNjdGxfcGh5c2luZm8gKnBpKQogewogICAgIG1lbWNweShwaS0+ aHdfY2FwLCBib290X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5LApAQCAtMTM3LDExICsxNzksMTIg QEAgbG9uZyBhcmNoX2RvX3N5c2N0bCgKICAgICBjYXNlIFhFTl9TWVNDVExfY3B1X2hvdHBsdWc6 CiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc3lzY3RsLT51LmNwdV9ob3RwbHVn LmNwdTsKKyAgICAgICAgdW5zaWduZWQgaW50IG9wICA9IHN5c2N0bC0+dS5jcHVfaG90cGx1Zy5v cDsKICAgICAgICAgYm9vbCBwbHVnOwogICAgICAgICBsb25nICgqZm4pKHZvaWQgKik7CiAgICAg ICAgIHZvaWQgKmhjcHU7CiAKLSAgICAgICAgc3dpdGNoICggc3lzY3RsLT51LmNwdV9ob3RwbHVn Lm9wICkKKyAgICAgICAgc3dpdGNoICggb3AgKQogICAgICAgICB7CiAgICAgICAgIGNhc2UgWEVO X1NZU0NUTF9DUFVfSE9UUExVR19PTkxJTkU6CiAgICAgICAgICAgICBwbHVnID0gdHJ1ZTsKQEAg LTE1NSw2ICsxOTgsMTggQEAgbG9uZyBhcmNoX2RvX3N5c2N0bCgKICAgICAgICAgICAgIGhjcHUg PSBfcChjcHUpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBYRU5fU1lTQ1RM X0NQVV9IT1RQTFVHX1NNVF9FTkFCTEU6CisgICAgICAgIGNhc2UgWEVOX1NZU0NUTF9DUFVfSE9U UExVR19TTVRfRElTQUJMRToKKyAgICAgICAgICAgIGlmICggIWNwdV9oYXNfaHR0IHx8IGJvb3Rf Y3B1X2RhdGEueDg2X251bV9zaWJsaW5ncyA8IDIgKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgIHJldCA9IC1FT1BOT1RTVVBQOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgcGx1ZyA9IG9wID09IFhFTl9TWVNDVExfQ1BVX0hPVFBMVUdf U01UX0VOQUJMRTsKKyAgICAgICAgICAgIGZuID0gc210X3VwX2Rvd25faGVscGVyOworICAgICAg ICAgICAgaGNwdSA9IF9wKHBsdWcpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVm YXVsdDoKICAgICAgICAgICAgIHJldCA9IC1FT1BOT1RTVVBQOwogICAgICAgICAgICAgYnJlYWs7 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9w dWJsaWMvc3lzY3RsLmgKaW5kZXggYzQ5YjRkYy4uOWU4OTAzZCAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaApA QCAtMjQ2LDggKzI0NiwyNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF9nZXRfcG1zdGF0IHsKIHN0cnVj dCB4ZW5fc3lzY3RsX2NwdV9ob3RwbHVnIHsKICAgICAvKiBJTiB2YXJpYWJsZXMgKi8KICAgICB1 aW50MzJfdCBjcHU7ICAgLyogUGh5c2ljYWwgY3B1LiAqLworCisgICAgLyogU2luZ2xlIENQVSBl bmFibGUvZGlzYWJsZS4gKi8KICNkZWZpbmUgWEVOX1NZU0NUTF9DUFVfSE9UUExVR19PTkxJTkUg IDAKICNkZWZpbmUgWEVOX1NZU0NUTF9DUFVfSE9UUExVR19PRkZMSU5FIDEKKworICAgIC8qCisg ICAgICogU01UIGVuYWJsZS9kaXNhYmxlLgorICAgICAqCisgICAgICogVGhlc2UgdHdvIG9wcyBs b29wIG92ZXIgYWxsIHByZXNlbnQgQ1BVcywgYW5kIGVpdGhlciBvbmxpbmUgb3Igb2ZmbGluZQor ICAgICAqIGV2ZXJ5IG5vbi1wcmltYXJ5IHNpYmxpbmcgdGhyZWFkICh0aG9zZSB3aXRoIGEgdGhy ZWFkIGlkIHdoaWNoIGlzIG5vdAorICAgICAqIDApLgorICAgICAqCisgICAgICogVGhleSBhcmUg aW50ZW5kZWQgYXMgYSBzaG9ydGhhbmQgZm9yIGlkZW50aWZ5aW5nIGFuZCBmZWVkaW5nIHRoZSBj cHUKKyAgICAgKiBudW1iZXJzIGluZGl2aWR1YWxseSB0byBIT1RQTFVHX3tPTixPRkZ9TElORS4K KyAgICAgKgorICAgICAqIFRoZXNlIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgdXNlZCBpbiBjb25q dW5jdGlvbiB3aXRoIGRlYnVnZ2luZyBvcHRpb25zCisgICAgICogc3VjaCBhcyBgbWF4Y3B1cz1g IG9yIHdoZW4gb3RoZXIgbWFudWFsIGNvbmZpZ3VyYXRpb24gb2Ygb2ZmbGluZSBjcHVzCisgICAg ICogaXMgaW4gdXNlLgorICAgICAqLworI2RlZmluZSBYRU5fU1lTQ1RMX0NQVV9IT1RQTFVHX1NN VF9FTkFCTEUgIDIKKyNkZWZpbmUgWEVOX1NZU0NUTF9DUFVfSE9UUExVR19TTVRfRElTQUJMRSAz CiAgICAgdWludDMyX3Qgb3A7ICAgIC8qIGhvdHBsdWcgb3Bjb2RlICovCiB9OwogCi0tIAoyLjEu NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=