From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v6 14/21] xen+tools: Export maximum host and guest cpu featuresets via SYSCTL Date: Fri, 8 Apr 2016 21:31:50 +0100 Message-ID: <1460147517-11706-15-git-send-email-andrew.cooper3@citrix.com> References: <1460147517-11706-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: In-Reply-To: <1460147517-11706-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org QW5kIHByb3ZpZGUgc3R1YnMgZm9yIHRvb2xzdGFjayB1c2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRy ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpBY2tlZC1ieTogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KQWNrZWQtYnk6IERhdmlkIFNjb3R0IDxkYXZlQHJlY29pbC5v cmc+CkFja2VkLWJ5OiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkFja2VkLWJ5OiBE YW5pZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KUmV2aWV3ZWQtYnk6IEtvbnJh ZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KLS0tCnYyOgogKiBSZWJh c2VkIHRvIHVzZSBsaWJ4ZW5jYWxsCiAqIEltcHJvdmUgaHlwZXJjYWxsIGRvY3VtZW50YXRpb24K djM6CiAqIFByb3ZpZGUgbGlieGMgaW1wbGVtZW50YXRpb24gZm9yIFhFTl9TWVNDVExfZ2V0X2Nw dV9sZXZlbGxpbmdfY2FwcyBhcyB3ZWxsLgp2NDoKICogTW9yZSBjb25zdC4KdjU6CiAqIFhTTSBi aXRzLgotLS0KIHRvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlIHwg IDEgKwogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggICAgICAgICAgICAgICAgfCAgNCAr KysKIHRvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jICAgICAgICAgICAgICAgICAgIHwgNDEgKysr KysrKysrKysrKysrKysrKysrKwogdG9vbHMvb2NhbWwvbGlicy94Yy94ZW5jdHJsLm1sICAgICAg ICAgICAgICAgfCAgMyArKwogdG9vbHMvb2NhbWwvbGlicy94Yy94ZW5jdHJsLm1saSAgICAgICAg ICAgICAgfCAgNCArKysKIHRvb2xzL29jYW1sL2xpYnMveGMveGVuY3RybF9zdHVicy5jICAgICAg ICAgIHwgMzUgKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L3N5c2N0bC5jICAgICAg ICAgICAgICAgICAgICAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v aW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysr KysrKwogeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAr KwogeGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgICAgICAgICAgfCAgMiArKwog MTAgZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90b29scy9m bGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSBiL3Rvb2xzL2ZsYXNrL3BvbGlj eS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCmluZGV4IGMyOWIwNjcuLmE1NTE3NTYgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCisrKyBi L3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCkBAIC03Myw2ICs3 Myw3IEBAIGFsbG93IGRvbTBfdCB4ZW5fdDp4ZW4yIHsKICAgICBwbXVfY3RybAogICAgIGdldF9z eW1ib2wKICAgICBnZXRfY3B1X2xldmVsbGluZ19jYXBzCisgICAgZ2V0X2NwdV9mZWF0dXJlc2V0 CiB9OwogCiAjIEFsbG93IGRvbTAgdG8gdXNlIGFsbCBYRU5WRVJfIHN1Ym9wcyBhbmQgVkVSU0lP TiBzdWJvcHMgdGhhdCBoYXZlIGNoZWNrcy4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggZThjYjFl Yy4uMWM4NjVhMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysr IGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTI2MTgsNiArMjYxOCwxMCBAQCBp bnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IGRvbWlkLAogaW50IHhjX3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVp bnQzMl90IHNvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3Nf bWF4LCB1aW50MzJfdCAqY2JtX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg KmNkcF9lbmFibGVkKTsKKworaW50IHhjX2dldF9jcHVfbGV2ZWxsaW5nX2NhcHMoeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90ICpjYXBzKTsKK2ludCB4Y19nZXRfY3B1X2ZlYXR1cmVzZXQoeGNf aW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCAqbnJfZmVhdHVyZXMsIHVpbnQzMl90ICpmZWF0dXJlc2V0KTsKICNlbmRpZgog CiAvKiBDb21wYXQgc2hpbXMgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4 Ni5jIGIvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKaW5kZXggNzMzYWRkNC4uNTc4MDM5NyAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKKysrIGIvdG9vbHMvbGlieGMv eGNfY3B1aWRfeDg2LmMKQEAgLTMzLDYgKzMzLDQ3IEBACiAjZGVmaW5lIERFRl9NQVhfSU5URUxF WFQgIDB4ODAwMDAwMDh1CiAjZGVmaW5lIERFRl9NQVhfQU1ERVhUICAgIDB4ODAwMDAwMWN1CiAK K2ludCB4Y19nZXRfY3B1X2xldmVsbGluZ19jYXBzKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCAqY2FwcykKK3sKKyAgICBERUNMQVJFX1NZU0NUTDsKKyAgICBpbnQgcmV0OworCisgICAgc3lz Y3RsLmNtZCA9IFhFTl9TWVNDVExfZ2V0X2NwdV9sZXZlbGxpbmdfY2FwczsKKyAgICByZXQgPSBk b19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKKworICAgIGlmICggIXJldCApCisgICAgICAgICpjYXBz ID0gc3lzY3RsLnUuY3B1X2xldmVsbGluZ19jYXBzLmNhcHM7CisKKyAgICByZXR1cm4gcmV0Owor fQorCitpbnQgeGNfZ2V0X2NwdV9mZWF0dXJlc2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKm5yX2ZlYXR1cmVz LCB1aW50MzJfdCAqZmVhdHVyZXNldCkKK3sKKyAgICBERUNMQVJFX1NZU0NUTDsKKyAgICBERUNM QVJFX0hZUEVSQ0FMTF9CT1VOQ0UoZmVhdHVyZXNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKm5yX2ZlYXR1cmVzICogc2l6ZW9mKCpmZWF0dXJlc2V0KSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfT1VUKTsKKyAgICBpbnQg cmV0OworCisgICAgaWYgKCB4Y19oeXBlcmNhbGxfYm91bmNlX3ByZSh4Y2gsIGZlYXR1cmVzZXQp ICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExfZ2V0 X2NwdV9mZWF0dXJlc2V0OworICAgIHN5c2N0bC51LmNwdV9mZWF0dXJlc2V0LmluZGV4ID0gaW5k ZXg7CisgICAgc3lzY3RsLnUuY3B1X2ZlYXR1cmVzZXQubnJfZmVhdHVyZXMgPSAqbnJfZmVhdHVy ZXM7CisgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoc3lzY3RsLnUuY3B1X2ZlYXR1cmVzZXQuZmVh dHVyZXMsIGZlYXR1cmVzZXQpOworCisgICAgcmV0ID0gZG9fc3lzY3RsKHhjaCwgJnN5c2N0bCk7 CisKKyAgICB4Y19oeXBlcmNhbGxfYm91bmNlX3Bvc3QoeGNoLCBmZWF0dXJlc2V0KTsKKworICAg IGlmICggIXJldCApCisgICAgICAgICpucl9mZWF0dXJlcyA9IHN5c2N0bC51LmNwdV9mZWF0dXJl c2V0Lm5yX2ZlYXR1cmVzOworCisgICAgcmV0dXJuIHJldDsKK30KKwogc3RydWN0IGNwdWlkX2Rv bWFpbl9pbmZvCiB7CiAgICAgZW51bQpkaWZmIC0tZ2l0IGEvdG9vbHMvb2NhbWwvbGlicy94Yy94 ZW5jdHJsLm1sIGIvdG9vbHMvb2NhbWwvbGlicy94Yy94ZW5jdHJsLm1sCmluZGV4IDU4YTUzYTEu Ljc1MDA2ZTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29jYW1sL2xpYnMveGMveGVuY3RybC5tbAorKysg Yi90b29scy9vY2FtbC9saWJzL3hjL3hlbmN0cmwubWwKQEAgLTI0Miw2ICsyNDIsOSBAQCBleHRl cm5hbCB2ZXJzaW9uX2NoYW5nZXNldDogaGFuZGxlIC0+IHN0cmluZyA9ICJzdHViX3hjX3ZlcnNp b25fY2hhbmdlc2V0IgogZXh0ZXJuYWwgdmVyc2lvbl9jYXBhYmlsaXRpZXM6IGhhbmRsZSAtPiBz dHJpbmcgPQogICAic3R1Yl94Y192ZXJzaW9uX2NhcGFiaWxpdGllcyIKIAordHlwZSBmZWF0dXJl c2V0X2luZGV4ID0gRmVhdHVyZXNldF9yYXcgfCBGZWF0dXJlc2V0X2hvc3QgfCBGZWF0dXJlc2V0 X3B2IHwgRmVhdHVyZXNldF9odm0KK2V4dGVybmFsIGdldF9jcHVfZmVhdHVyZXNldCA6IGhhbmRs ZSAtPiBmZWF0dXJlc2V0X2luZGV4IC0+IGludDY0IGFycmF5ID0gInN0dWJfeGNfZ2V0X2NwdV9m ZWF0dXJlc2V0IgorCiBleHRlcm5hbCB3YXRjaGRvZyA6IGhhbmRsZSAtPiBpbnQgLT4gaW50MzIg LT4gaW50CiAgID0gInN0dWJfeGNfd2F0Y2hkb2ciCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL29jYW1s L2xpYnMveGMveGVuY3RybC5tbGkgYi90b29scy9vY2FtbC9saWJzL3hjL3hlbmN0cmwubWxpCmlu ZGV4IDE2NDQzZGYuLjcyMGU0YjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL29jYW1sL2xpYnMveGMveGVu Y3RybC5tbGkKKysrIGIvdG9vbHMvb2NhbWwvbGlicy94Yy94ZW5jdHJsLm1saQpAQCAtMTQ3LDYg KzE0NywxMCBAQCBleHRlcm5hbCB2ZXJzaW9uX2NvbXBpbGVfaW5mbyA6IGhhbmRsZSAtPiBjb21w aWxlX2luZm8KIGV4dGVybmFsIHZlcnNpb25fY2hhbmdlc2V0IDogaGFuZGxlIC0+IHN0cmluZyA9 ICJzdHViX3hjX3ZlcnNpb25fY2hhbmdlc2V0IgogZXh0ZXJuYWwgdmVyc2lvbl9jYXBhYmlsaXRp ZXMgOiBoYW5kbGUgLT4gc3RyaW5nCiAgID0gInN0dWJfeGNfdmVyc2lvbl9jYXBhYmlsaXRpZXMi CisKK3R5cGUgZmVhdHVyZXNldF9pbmRleCA9IEZlYXR1cmVzZXRfcmF3IHwgRmVhdHVyZXNldF9o b3N0IHwgRmVhdHVyZXNldF9wdiB8IEZlYXR1cmVzZXRfaHZtCitleHRlcm5hbCBnZXRfY3B1X2Zl YXR1cmVzZXQgOiBoYW5kbGUgLT4gZmVhdHVyZXNldF9pbmRleCAtPiBpbnQ2NCBhcnJheSA9ICJz dHViX3hjX2dldF9jcHVfZmVhdHVyZXNldCIKKwogdHlwZSBjb3JlX21hZ2ljID0gTWFnaWNfaHZt IHwgTWFnaWNfcHYKIHR5cGUgY29yZV9oZWFkZXIgPSB7CiAgIHhjaF9tYWdpYyA6IGNvcmVfbWFn aWM7CmRpZmYgLS1naXQgYS90b29scy9vY2FtbC9saWJzL3hjL3hlbmN0cmxfc3R1YnMuYyBiL3Rv b2xzL29jYW1sL2xpYnMveGMveGVuY3RybF9zdHVicy5jCmluZGV4IDRhYzVkY2UuLmU4N2YxNGYg MTAwNjQ0Ci0tLSBhL3Rvb2xzL29jYW1sL2xpYnMveGMveGVuY3RybF9zdHVicy5jCisrKyBiL3Rv b2xzL29jYW1sL2xpYnMveGMveGVuY3RybF9zdHVicy5jCkBAIC0xMjA3LDYgKzEyMDcsNDEgQEAg Q0FNTHByaW0gdmFsdWUgc3R1Yl94Y19kb21haW5fZGVhc3NpZ25fZGV2aWNlKHZhbHVlIHhjaCwg dmFsdWUgZG9taWQsIHZhbHVlIGRlc2MKIAlDQU1McmV0dXJuKFZhbF91bml0KTsKIH0KIAorQ0FN THByaW0gdmFsdWUgc3R1Yl94Y19nZXRfY3B1X2ZlYXR1cmVzZXQodmFsdWUgeGNoLCB2YWx1ZSBp ZHgpCit7CisJQ0FNTHBhcmFtMih4Y2gsIGlkeCk7CisJQ0FNTGxvY2FsMShiaXRtYXBfdmFsKTsK KworCS8qIFNhZmUsIGJlY2F1c2Ugb2YgdGhlIGdsb2JhbCBvY2FtbCBsb2NrLiAqLworCXN0YXRp YyB1aW50MzJfdCBmc19sZW47CisKKwlpZiAoZnNfbGVuID09IDApCisJeworCQlpbnQgcmV0ID0g eGNfZ2V0X2NwdV9mZWF0dXJlc2V0KF9IKHhjaCksIDAsICZmc19sZW4sIE5VTEwpOworCisJCWlm IChyZXQgfHwgKGZzX2xlbiA9PSAwKSkKKwkJCWZhaWx3aXRoX3hjKF9IKHhjaCkpOworCX0KKwor CXsKKwkJLyogVG8vZnJvbSBoeXBlcnZpc29yIHRvIHJldHJpZXZlIGFjdHVhbCBmZWF0dXJlc2V0 ICovCisJCXVpbnQzMl90IGZzW2ZzX2xlbl0sIGxlbiA9IGZzX2xlbjsKKwkJdW5zaWduZWQgaW50 IGk7CisKKwkJaW50IHJldCA9IHhjX2dldF9jcHVfZmVhdHVyZXNldChfSCh4Y2gpLCBJbnRfdmFs KGlkeCksICZsZW4sIGZzKTsKKworCQlpZiAocmV0KQorCQkJZmFpbHdpdGhfeGMoX0goeGNoKSk7 CisKKwkJYml0bWFwX3ZhbCA9IGNhbWxfYWxsb2MobGVuLCAwKTsKKworCQlmb3IgKGkgPSAwOyBp IDwgbGVuOyArK2kpCisJCQlTdG9yZV9maWVsZChiaXRtYXBfdmFsLCBpLCBjYW1sX2NvcHlfaW50 NjQoZnNbaV0pKTsKKwl9CisKKwlDQU1McmV0dXJuKGJpdG1hcF92YWwpOworfQorCiBDQU1McHJp bSB2YWx1ZSBzdHViX3hjX3dhdGNoZG9nKHZhbHVlIHhjaCwgdmFsdWUgZG9taWQsIHZhbHVlIHRp bWVvdXQpCiB7CiAJQ0FNTHBhcmFtMyh4Y2gsIGRvbWlkLCB0aW1lb3V0KTsKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9zeXNjdGwuYyBiL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYwppbmRleCBmNjhj YmVjLi45Yzc1ZGU2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc3lzY3RsLmMKKysrIGIveGVu L2FyY2gveDg2L3N5c2N0bC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8eGVuL2NwdS5o PgogI2luY2x1ZGUgPHhzbS94c20uaD4KICNpbmNsdWRlIDxhc20vcHNyLmg+CisjaW5jbHVkZSA8 YXNtL2NwdWlkLmg+CiAKIHN0cnVjdCBsM19jYWNoZV9pbmZvIHsKICAgICBpbnQgcmV0OwpAQCAt MTk2LDYgKzE5Nyw1NiBAQCBsb25nIGFyY2hfZG9fc3lzY3RsKAogICAgICAgICAgICAgcmV0ID0g LUVGQVVMVDsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFhFTl9TWVNDVExfZ2V0X2NwdV9m ZWF0dXJlc2V0OgorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90ICpjb25zdCBm ZWF0dXJlc2V0X3RhYmxlW10gPSB7CisgICAgICAgICAgICBbWEVOX1NZU0NUTF9jcHVfZmVhdHVy ZXNldF9yYXddICA9IHJhd19mZWF0dXJlc2V0LAorICAgICAgICAgICAgW1hFTl9TWVNDVExfY3B1 X2ZlYXR1cmVzZXRfaG9zdF0gPSBob3N0X2ZlYXR1cmVzZXQsCisgICAgICAgICAgICBbWEVOX1NZ U0NUTF9jcHVfZmVhdHVyZXNldF9wdl0gICA9IHB2X2ZlYXR1cmVzZXQsCisgICAgICAgICAgICBb WEVOX1NZU0NUTF9jcHVfZmVhdHVyZXNldF9odm1dICA9IGh2bV9mZWF0dXJlc2V0LAorICAgICAg ICB9OworICAgICAgICBjb25zdCB1aW50MzJfdCAqZmVhdHVyZXNldCA9IE5VTEw7CisgICAgICAg IHVuc2lnbmVkIGludCBucjsKKworICAgICAgICAvKiBSZXF1ZXN0IGZvciBtYXhpbXVtIG51bWJl ciBvZiBmZWF0dXJlcz8gKi8KKyAgICAgICAgaWYgKCBndWVzdF9oYW5kbGVfaXNfbnVsbChzeXNj dGwtPnUuY3B1X2ZlYXR1cmVzZXQuZmVhdHVyZXMpICkKKyAgICAgICAgeworICAgICAgICAgICAg c3lzY3RsLT51LmNwdV9mZWF0dXJlc2V0Lm5yX2ZlYXR1cmVzID0gRlNDQVBJTlRTOworICAgICAg ICAgICAgaWYgKCBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QodV9zeXNjdGwsIHN5c2N0bCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUuY3B1X2ZlYXR1cmVzZXQubnJfZmVh dHVyZXMpICkKKyAgICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOworICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBDbGlwIHRoZSBudW1iZXIgb2YgZW50cmllcy4g Ki8KKyAgICAgICAgbnIgPSBtaW4oc3lzY3RsLT51LmNwdV9mZWF0dXJlc2V0Lm5yX2ZlYXR1cmVz LCBGU0NBUElOVFMpOworCisgICAgICAgIC8qIExvb2sgdXAgcmVxdWVzdGVkIGZlYXR1cmVzZXQu ICovCisgICAgICAgIGlmICggc3lzY3RsLT51LmNwdV9mZWF0dXJlc2V0LmluZGV4IDwgQVJSQVlf U0laRShmZWF0dXJlc2V0X3RhYmxlKSApCisgICAgICAgICAgICBmZWF0dXJlc2V0ID0gZmVhdHVy ZXNldF90YWJsZVtzeXNjdGwtPnUuY3B1X2ZlYXR1cmVzZXQuaW5kZXhdOworCisgICAgICAgIC8q IEJhZCBmZWF0dXJlc2V0IGluZGV4PyAqLworICAgICAgICBpZiAoICFmZWF0dXJlc2V0ICkKKyAg ICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisKKyAgICAgICAgLyogQ29weSB0aGUgcmVxdWVzdGVk IGZlYXR1cmVzZXQgaW50byBwbGFjZS4gKi8KKyAgICAgICAgaWYgKCAhcmV0ICYmIGNvcHlfdG9f Z3Vlc3Qoc3lzY3RsLT51LmNwdV9mZWF0dXJlc2V0LmZlYXR1cmVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmZWF0dXJlc2V0LCBucikgKQorICAgICAgICAgICAgcmV0ID0g LUVGQVVMVDsKKworICAgICAgICAvKiBJbmZvcm0gdGhlIGNhbGxlciBvZiBob3cgbWFueSBmZWF0 dXJlcyB3ZSB3cm90ZS4gKi8KKyAgICAgICAgc3lzY3RsLT51LmNwdV9mZWF0dXJlc2V0Lm5yX2Zl YXR1cmVzID0gbnI7CisgICAgICAgIGlmICggIXJldCAmJiBfX2NvcHlfZmllbGRfdG9fZ3Vlc3Qo dV9zeXNjdGwsIHN5c2N0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1LmNwdV9mZWF0dXJlc2V0Lm5yX2ZlYXR1cmVzKSApCisgICAgICAgICAgICByZXQgPSAt RUZBVUxUOworCisgICAgICAgIC8qIEluZm9ybSB0aGUgY2FsbGVyIGlmIHRoZXJlIHdhcyBtb3Jl IGRhdGEgdG8gcHJvdmlkZS4gKi8KKyAgICAgICAgaWYgKCAhcmV0ICYmIG5yIDwgRlNDQVBJTlRT ICkKKyAgICAgICAgICAgIHJldCA9IC1FTk9CVUZTOworCisgICAgICAgIGJyZWFrOworICAgIH0K KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldCA9IC1FTk9TWVM7CiAgICAgICAgIGJyZWFrOwpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oCmluZGV4IDFhYjE2ZGIuLjQ1OTZkMjAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAg LTc4Nyw2ICs3ODcsMzEgQEAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2xldmVsbGluZ19jYXBzIHsK IHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2xldmVsbGluZ19jYXBzIHhlbl9zeXNjdGxf Y3B1X2xldmVsbGluZ19jYXBzX3Q7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3Rs X2NwdV9sZXZlbGxpbmdfY2Fwc190KTsKIAorLyoKKyAqIFhFTl9TWVNDVExfZ2V0X2NwdV9mZWF0 dXJlc2V0ICh4ODYgc3BlY2lmaWMpCisgKgorICogUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IGZl YXR1cmVzZXRzIGF2YWlsYWJsZSBvbiB0aGlzIGhvc3QuCisgKiAgLSAgUmF3OiBUaGUgcmVhbCBj cHVpZCB2YWx1ZXMuCisgKiAgLSBIb3N0OiBUaGUgdmFsdWVzIFhlbiBpcyB1c2luZywgKGFmdGVy IGNvbW1hbmQgbGluZSBvdmVycmlkZXMsIGV0YykuCisgKiAgLSAgIFBWOiBNYXhpbXVtIHNldCBv ZiBmZWF0dXJlcyB3aGljaCBjYW4gYmUgZ2l2ZW4gdG8gYSBQViBndWVzdC4KKyAqICAtICBIVk06 IE1heGltdW0gc2V0IG9mIGZlYXR1cmVzIHdoaWNoIGNhbiBiZSBnaXZlbiB0byBhIEhWTSBndWVz dC4KKyAqLworc3RydWN0IHhlbl9zeXNjdGxfY3B1X2ZlYXR1cmVzZXQgeworI2RlZmluZSBYRU5f U1lTQ1RMX2NwdV9mZWF0dXJlc2V0X3JhdyAgICAgIDAKKyNkZWZpbmUgWEVOX1NZU0NUTF9jcHVf ZmVhdHVyZXNldF9ob3N0ICAgICAxCisjZGVmaW5lIFhFTl9TWVNDVExfY3B1X2ZlYXR1cmVzZXRf cHYgICAgICAgMgorI2RlZmluZSBYRU5fU1lTQ1RMX2NwdV9mZWF0dXJlc2V0X2h2bSAgICAgIDMK KyAgICB1aW50MzJfdCBpbmRleDsgICAgICAgLyogSU46IFdoaWNoIGZlYXR1cmVzZXQgdG8gcXVl cnk/ICovCisgICAgdWludDMyX3QgbnJfZmVhdHVyZXM7IC8qIElOL09VVDogTnVtYmVyIG9mIGVu dHJpZXMgaW4vd3JpdHRlbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAnZmVhdHVy ZXMnLCBvciB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmVhdHVyZXMgaWYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICogdGhlIGd1ZXN0IGhhbmRsZSBpcyBOVUxMLiAgTkIuIEFsbCBmZWF0dXJl c2V0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjb21lIGZyb20gdGhlIHNhbWUgbnVt YmVyc3BhY2UsIHNvIGhhdmUgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICog bWF4aW11bSBsZW5ndGguICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50MzIpIGZlYXR1 cmVzOyAvKiBPVVQ6ICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9mZWF0dXJlc2V0 IHhlbl9zeXNjdGxfZmVhdHVyZXNldF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5 c2N0bF9mZWF0dXJlc2V0X3QpOworCiBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgdWludDMyX3Qg Y21kOwogI2RlZmluZSBYRU5fU1lTQ1RMX3JlYWRjb25zb2xlICAgICAgICAgICAgICAgICAgICAx CkBAIC04MTMsNiArODM4LDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogI2RlZmluZSBYRU5fU1lT Q1RMX3Bzcl9jYXRfb3AgICAgICAgICAgICAgICAgICAgIDIzCiAjZGVmaW5lIFhFTl9TWVNDVExf dG1lbV9vcCAgICAgICAgICAgICAgICAgICAgICAgMjQKICNkZWZpbmUgWEVOX1NZU0NUTF9nZXRf Y3B1X2xldmVsbGluZ19jYXBzICAgICAgICAyNQorI2RlZmluZSBYRU5fU1lTQ1RMX2dldF9jcHVf ZmVhdHVyZXNldCAgICAgICAgICAgIDI2CiAgICAgdWludDMyX3QgaW50ZXJmYWNlX3ZlcnNpb247 IC8qIFhFTl9TWVNDVExfSU5URVJGQUNFX1ZFUlNJT04gKi8KICAgICB1bmlvbiB7CiAgICAgICAg IHN0cnVjdCB4ZW5fc3lzY3RsX3JlYWRjb25zb2xlICAgICAgIHJlYWRjb25zb2xlOwpAQCAtODM5 LDYgKzg2NSw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfcHNyX2NhdF9vcCAgICAgICAgcHNyX2NhdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfdG1lbV9vcCAgICAgICAgICAgdG1lbV9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxf Y3B1X2xldmVsbGluZ19jYXBzIGNwdV9sZXZlbGxpbmdfY2FwczsKKyAgICAgICAgc3RydWN0IHhl bl9zeXNjdGxfY3B1X2ZlYXR1cmVzZXQgICAgY3B1X2ZlYXR1cmVzZXQ7CiAgICAgICAgIHVpbnQ4 X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOwogICAgIH0gdTsKIH07CmRp ZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMK aW5kZXggN2Y5ZDkwZC4uMjMzNjEyZSAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5j CisrKyBiL3hlbi94c20vZmxhc2svaG9va3MuYwpAQCAtODExLDYgKzgxMSw5IEBAIHN0YXRpYyBp bnQgZmxhc2tfc3lzY3RsKGludCBjbWQpCiAgICAgY2FzZSBYRU5fU1lTQ1RMX2dldF9jcHVfbGV2 ZWxsaW5nX2NhcHM6CiAgICAgICAgIHJldHVybiBkb21haW5faGFzX3hlbihjdXJyZW50LT5kb21h aW4sIFhFTjJfX0dFVF9DUFVfTEVWRUxMSU5HX0NBUFMpOwogCisgICAgY2FzZSBYRU5fU1lTQ1RM X2dldF9jcHVfZmVhdHVyZXNldDoKKyAgICAgICAgcmV0dXJuIGRvbWFpbl9oYXNfeGVuKGN1cnJl bnQtPmRvbWFpbiwgWEVOMl9fR0VUX0NQVV9GRUFUVVJFU0VUKTsKKwogICAgIGRlZmF1bHQ6CiAg ICAgICAgIHByaW50aygiZmxhc2tfc3lzY3RsOiBVbmtub3duIG9wICVkXG4iLCBjbWQpOwogICAg ICAgICByZXR1cm4gLUVQRVJNOwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNj ZXNzX3ZlY3RvcnMgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycwppbmRleCAz MWVjZjAyLi4wZWJiNTZiIDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycwpAQCAtOTUs NiArOTUsOCBAQCBjbGFzcyB4ZW4yCiAgICAgcG11X3VzZQogIyBYRU5fU1lTQ1RMX2dldF9jcHVf bGV2ZWxsaW5nX2NhcHMKICAgICBnZXRfY3B1X2xldmVsbGluZ19jYXBzCisjIFhFTl9TWVNDVExf Z2V0X2NwdV9mZWF0dXJlc2V0CisgICAgZ2V0X2NwdV9mZWF0dXJlc2V0CiB9CiAKICMgQ2xhc3Nl cyBkb21haW4gYW5kIGRvbWFpbjIgY29uc2lzdCBvZiBvcGVyYXRpb25zIHRoYXQgYSBkb21haW4g cGVyZm9ybXMgb24KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK