From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH RFC v2 12/12] x86: activate per-vcpu stacks in case of xpti Date: Mon, 22 Jan 2018 13:32:56 +0100 Message-ID: <20180122123256.1431-13-jgross@suse.com> References: <20180122123256.1431-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1edbHg-0008F6-1c for xen-devel@lists.xenproject.org; Mon, 22 Jan 2018 12:33:08 +0000 In-Reply-To: <20180122123256.1431-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, dfaggioli@suse.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org V2hlbiBzY2hlZHVsaW5nIGEgdmNwdSBzdWJqZWN0IHRvIHhwdGkgYWN0aXZhdGUgdGhlIHBlci12 Y3B1IHN0YWNrcwpieSBsb2FkaW5nIHRoZSB2Y3B1IHNwZWNpZmljIGdkdCBhbmQgdHNzLiBXaGVu IGRlLXNjaGVkdWxpbmcgc3VjaCBhCnZjcHUgc3dpdGNoIGJhY2sgdG8gdGhlIHBlciBwaHlzaWNh bCBjcHUgZ2R0IGFuZCB0c3MuCgpBY2Nlc3NpbmcgdGhlIHVzZXIgcmVnaXN0ZXJzIG9uIHRoZSBz dGFjayBpcyBkb25lIHZpYSBoZWxwZXJzIGFzCmRlcGVuZGluZyBvbiBYUFRJIGFjdGl2ZSBvciBu b3QgdGhlIHJlZ2lzdGVycyBhcmUgbG9jYXRlZCBlaXRoZXIgb24KdGhlIHBlci12Y3B1IHN0YWNr IG9yIG9uIHRoZSBkZWZhdWx0IHN0YWNrLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8 amdyb3NzQHN1c2UuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAgICAg fCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogeGVuL2FyY2gveDg2 L3B2L2RvbWFpbi5jICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKy0tCiB4ZW4vaW5jbHVk ZS9hc20teDg2L2Rlc2MuaCAgICAgICAgIHwgIDUgKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Jl Z3MuaCAgICAgICAgIHwgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMDcgaW5zZXJ0aW9ucygrKSwg MTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVu L2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IGRhMWJmMWE5N2IuLmQ3NTIzNGNhMzUgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAg LTE1ODUsOSArMTU4NSwyOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbmVlZF9mdWxsX2dkdChjb25z dCBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiBpc19wdl9kb21haW4oZCkgJiYgIWlzX2lk bGVfZG9tYWluKGQpOwogfQogCitzdGF0aWMgdm9pZCBjb3B5X3VzZXJfcmVnc19mcm9tX3N0YWNr KHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpzdGFja19yZWdz OworCisgICAgc3RhY2tfcmVncyA9IChpc19wdl92Y3B1KHYpICYmIHYtPmRvbWFpbi0+YXJjaC5w dl9kb21haW4ueHB0aSkKKyAgICAgICAgICAgICAgICAgPyB2LT5hcmNoLnB2X3ZjcHUuc3RhY2tf cmVncworICAgICAgICAgICAgICAgICA6ICZnZXRfY3B1X2luZm8oKS0+Z3Vlc3RfY3B1X3VzZXJf cmVnczsKKyAgICBtZW1jcHkoJnYtPmFyY2gudXNlcl9yZWdzLCBzdGFja19yZWdzLCBDVFhUX1NX SVRDSF9TVEFDS19CWVRFUyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlfdXNlcl9yZWdzX3RvX3N0 YWNrKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpzdGFja19y ZWdzOworCisgICAgc3RhY2tfcmVncyA9IChpc19wdl92Y3B1KHYpICYmIHYtPmRvbWFpbi0+YXJj aC5wdl9kb21haW4ueHB0aSkKKyAgICAgICAgICAgICAgICAgPyB2LT5hcmNoLnB2X3ZjcHUuc3Rh Y2tfcmVncworICAgICAgICAgICAgICAgICA6ICZnZXRfY3B1X2luZm8oKS0+Z3Vlc3RfY3B1X3Vz ZXJfcmVnczsKKyAgICBtZW1jcHkoc3RhY2tfcmVncywgJnYtPmFyY2gudXNlcl9yZWdzLCBDVFhU X1NXSVRDSF9TVEFDS19CWVRFUyk7Cit9CisKIHN0YXRpYyB2b2lkIF9fY29udGV4dF9zd2l0Y2go dm9pZCkKIHsKLSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqc3RhY2tfcmVncyA9IGd1ZXN0X2Nw dV91c2VyX3JlZ3MoKTsKICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgY3B1ID0gc21wX3Byb2Nl c3Nvcl9pZCgpOwogICAgIHN0cnVjdCB2Y3B1ICAgICAgICAgICpwID0gcGVyX2NwdShjdXJyX3Zj cHUsIGNwdSk7CiAgICAgc3RydWN0IHZjcHUgICAgICAgICAgKm4gPSBjdXJyZW50OwpAQCAtMTYw MCw3ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgX19jb250ZXh0X3N3aXRjaCh2b2lkKQogCiAgICAg aWYgKCAhaXNfaWRsZV9kb21haW4ocGQpICkKICAgICB7Ci0gICAgICAgIG1lbWNweSgmcC0+YXJj aC51c2VyX3JlZ3MsIHN0YWNrX3JlZ3MsIENUWFRfU1dJVENIX1NUQUNLX0JZVEVTKTsKKyAgICAg ICAgY29weV91c2VyX3JlZ3NfZnJvbV9zdGFjayhwKTsKICAgICAgICAgdmNwdV9zYXZlX2ZwdShw KTsKICAgICAgICAgcGQtPmFyY2guY3R4dF9zd2l0Y2gtPmZyb20ocCk7CiAgICAgfQpAQCAtMTYx Niw3ICsxNjM1LDcgQEAgc3RhdGljIHZvaWQgX19jb250ZXh0X3N3aXRjaCh2b2lkKQogCiAgICAg aWYgKCAhaXNfaWRsZV9kb21haW4obmQpICkKICAgICB7Ci0gICAgICAgIG1lbWNweShzdGFja19y ZWdzLCAmbi0+YXJjaC51c2VyX3JlZ3MsIENUWFRfU1dJVENIX1NUQUNLX0JZVEVTKTsKKyAgICAg ICAgY29weV91c2VyX3JlZ3NfdG9fc3RhY2sobik7CiAgICAgICAgIGlmICggY3B1X2hhc194c2F2 ZSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHU2NCB4Y3IwID0gbi0+YXJjaC54Y3IwID86IFhT VEFURV9GUF9TU0U7CkBAIC0xNjM1LDcgKzE2NTQsNyBAQCBzdGF0aWMgdm9pZCBfX2NvbnRleHRf c3dpdGNoKHZvaWQpCiAKICAgICBnZHQgPSAhaXNfcHZfMzJiaXRfZG9tYWluKG5kKSA/IHBlcl9j cHUoZ2R0X3RhYmxlLCBjcHUpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBlcl9jcHUoY29tcGF0X2dkdF90YWJsZSwgY3B1KTsKLSAgICBpZiAoIG5lZWRfZnVsbF9nZHQo bmQpICkKKyAgICBpZiAoIG5lZWRfZnVsbF9nZHQobmQpICYmICFuZC0+YXJjaC5wdl9kb21haW4u eHB0aSApCiAgICAgewogICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHZpcnRfdG9fbWZuKGdk dCk7CiAgICAgICAgIGwxX3BnZW50cnlfdCAqcGwxZSA9IHB2X2dkdF9wdGVzKG4pOwpAQCAtMTY0 NywyMyArMTY2Niw2OCBAQCBzdGF0aWMgdm9pZCBfX2NvbnRleHRfc3dpdGNoKHZvaWQpCiAgICAg fQogCiAgICAgaWYgKCBuZWVkX2Z1bGxfZ2R0KHBkKSAmJgotICAgICAgICAgKChwLT52Y3B1X2lk ICE9IG4tPnZjcHVfaWQpIHx8ICFuZWVkX2Z1bGxfZ2R0KG5kKSkgKQorICAgICAgICAgKChwLT52 Y3B1X2lkICE9IG4tPnZjcHVfaWQpIHx8ICFuZWVkX2Z1bGxfZ2R0KG5kKSB8fAorICAgICAgICAg IHBkLT5hcmNoLnB2X2RvbWFpbi54cHRpKSApCiAgICAgewogICAgICAgICBnZHRfZGVzYy5saW1p dCA9IExBU1RfUkVTRVJWRURfR0RUX0JZVEU7CiAgICAgICAgIGdkdF9kZXNjLmJhc2UgID0gKHVu c2lnbmVkIGxvbmcpKGdkdCAtIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSk7CiAKKyAgICAgICAg aWYgKCBwZC0+YXJjaC5wdl9kb21haW4ueHB0aSApCisgICAgICAgICAgICBfc2V0X3Rzc2xkdF90 eXBlKGdkdCArIFRTU19FTlRSWSAtIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU1lTX0RFU0NfdHNzX2F2YWlsKTsKKwogICAgICAgICBsZ2R0 KCZnZHRfZGVzYyk7CisKKyAgICAgICAgaWYgKCBwZC0+YXJjaC5wdl9kb21haW4ueHB0aSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3R1Yl92YSA9IHRoaXNfY3B1KHN0 dWJzLmFkZHIpOworCisgICAgICAgICAgICBsdHIoVFNTX0VOVFJZIDw8IDMpOworICAgICAgICAg ICAgZ2V0X2NwdV9pbmZvKCktPmZsYWdzICY9IH5WQ1BVU1RBQ0tfQUNUSVZFOworICAgICAgICAg ICAgd3Jtc3JsKE1TUl9MU1RBUiwgc3R1Yl92YSk7CisgICAgICAgICAgICB3cm1zcmwoTVNSX0NT VEFSLCBzdHViX3ZhICsgU1RVQl9UUkFNUE9MSU5FX1NJWkVfUEVSQ1BVKTsKKyAgICAgICAgICAg IGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfSU5URUwgfHwKKyAg ICAgICAgICAgICAgICAgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQ0VO VEFVUiApCisgICAgICAgICAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1NZU0VOVEVSX0VTUCwKKyAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpJmdldF9jcHVfaW5mbygpLT5ndWVz dF9jcHVfdXNlcl9yZWdzLmVzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHdyaXRlX3B0YmFz ZShuKTsKIAogICAgIGlmICggbmVlZF9mdWxsX2dkdChuZCkgJiYKLSAgICAgICAgICgocC0+dmNw dV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAhbmVlZF9mdWxsX2dkdChwZCkpICkKKyAgICAgICAgICgo cC0+dmNwdV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAhbmVlZF9mdWxsX2dkdChwZCkgfHwKKyAgICAg ICAgICBuZC0+YXJjaC5wdl9kb21haW4ueHB0aSkgKQogICAgIHsKICAgICAgICAgZ2R0X2Rlc2Mu bGltaXQgPSBMQVNUX1JFU0VSVkVEX0dEVF9CWVRFOwogICAgICAgICBnZHRfZGVzYy5iYXNlID0g R0RUX1ZJUlRfU1RBUlQobik7CiAKKyAgICAgICAgaWYgKCBuZC0+YXJjaC5wdl9kb21haW4ueHB0 aSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBjcHVfaW5mbyAqaW5mbzsKKworICAg ICAgICAgICAgZ2R0ID0gKHN0cnVjdCBkZXNjX3N0cnVjdCAqKUdEVF9WSVJUX1NUQVJUKG4pOwor ICAgICAgICAgICAgZ2R0W1BFUl9DUFVfR0RUX0VOVFJZXS5hID0gY3B1OworICAgICAgICAgICAg X3NldF90c3NsZHRfdHlwZShnZHQgKyBUU1NfRU5UUlksIFNZU19ERVNDX3Rzc19hdmFpbCk7Cisg ICAgICAgICAgICBpbmZvID0gKHN0cnVjdCBjcHVfaW5mbyAqKShYUFRJX1NUQVJUKG4pICsgU1RB Q0tfU0laRSkgLSAxOworICAgICAgICAgICAgaW5mby0+c3RhY2tfYm90dG9tX2NwdSA9ICh1bnNp Z25lZCBsb25nKWd1ZXN0X2NwdV91c2VyX3JlZ3MoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGxn ZHQoJmdkdF9kZXNjKTsKKworICAgICAgICBpZiAoIG5kLT5hcmNoLnB2X2RvbWFpbi54cHRpICkK KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdHViX3ZhID0gWFBUSV9UUkFN UE9MSU5FKG4pOworCisgICAgICAgICAgICBsdHIoVFNTX0VOVFJZIDw8IDMpOworICAgICAgICAg ICAgZ2V0X2NwdV9pbmZvKCktPmZsYWdzIHw9IFZDUFVTVEFDS19BQ1RJVkU7CisgICAgICAgICAg ICB3cm1zcmwoTVNSX0xTVEFSLCBzdHViX3ZhKTsKKyAgICAgICAgICAgIHdybXNybChNU1JfQ1NU QVIsIHN0dWJfdmEgKyBTVFVCX1RSQU1QT0xJTkVfU0laRV9QRVJWQ1BVKTsKKyAgICAgICAgICAg IGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfSU5URUwgfHwKKyAg ICAgICAgICAgICAgICAgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQ0VO VEFVUiApCisgICAgICAgICAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1NZU0VOVEVSX0VTUCwKKyAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpJmd1ZXN0X2NwdV91c2VyX3JlZ3Mo KS0+ZXMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCBwZCAhPSBuZCApCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMK aW5kZXggODM0YmU5NmVkOC4uNjE1ODA4NjA4NyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2 L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwpAQCAtMTMzLDEwICsxMzMs MzYgQEAgaW50IHN3aXRjaF9jb21wYXQoc3RydWN0IGRvbWFpbiAqZCkKIAogc3RhdGljIGludCBw dl9jcmVhdGVfZ2R0X2xkdF9sMXRhYihzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICByZXR1cm4gY3Jl YXRlX3BlcmRvbWFpbl9tYXBwaW5nKHYtPmRvbWFpbiwgR0RUX1ZJUlRfU1RBUlQodiksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxVSA8PCBHRFRfTERUX1ZDUFVfU0hJRlQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5kb21haW4tPmFyY2gucHZf ZG9tYWluLmdkdF9sZHRfbDF0YWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMKTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGNyZWF0ZV9wZXJkb21haW5fbWFwcGlu Zyh2LT5kb21haW4sIEdEVF9WSVJUX1NUQVJUKHYpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDFVIDw8IEdEVF9MRFRfVkNQVV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2LT5kb21haW4tPmFyY2gucHZfZG9tYWluLmdkdF9sZHRfbDF0YWIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKCAhcmMgJiYg di0+ZG9tYWluLT5hcmNoLnB2X2RvbWFpbi54cHRpICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBk ZXNjX3N0cnVjdCAqZ2R0OworICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpnZHRfcGc7CisKKyAg ICAgICAgQlVJTERfQlVHX09OKE5SX1JFU0VSVkVEX0dEVF9QQUdFUyA+IDEpOworICAgICAgICBn ZHQgPSAoc3RydWN0IGRlc2Nfc3RydWN0ICopR0RUX1ZJUlRfU1RBUlQodikgKworICAgICAgICAg ICAgICBGSVJTVF9SRVNFUlZFRF9HRFRfRU5UUlk7CisgICAgICAgIHJjID0gY3JlYXRlX3BlcmRv bWFpbl9tYXBwaW5nKHYtPmRvbWFpbiwgKHVuc2lnbmVkIGxvbmcpZ2R0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOUl9SRVNFUlZFRF9HRFRfUEFHRVMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZnZHRfcGcpOworICAgICAgICBp ZiAoICFyYyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdkdCA9IF9fbWFwX2RvbWFpbl9wYWdl KGdkdF9wZyk7CisgICAgICAgICAgICBtZW1jcHkoZ2R0LCBib290X2NwdV9nZHRfdGFibGUsIE5S X1JFU0VSVkVEX0dEVF9CWVRFUyk7CisgICAgICAgICAgICBfc2V0X3Rzc2xkdF9kZXNjKGdkdCAr IFRTU19FTlRSWSAtIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBYUFRJX1RTUyh2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihz dHJ1Y3QgdHNzX3N0cnVjdCwgX19jYWNoZWxpbmVfZmlsbGVyKSAtIDEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgU1lTX0RFU0NfdHNzX2F2YWlsKTsKKyAgICAgICAgICAgIHVubWFwX2RvbWFp bl9wYWdlKGdkdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0 YXRpYyB2b2lkIHB2X2Rlc3Ryb3lfZ2R0X2xkdF9sMXRhYihzdHJ1Y3QgdmNwdSAqdikKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZGVzYy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9k ZXNjLmgKaW5kZXggNDA5M2M2NWZhYS4uZDVmZmY0Y2NlNSAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9kZXNjLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kZXNjLmgKQEAgLTE4 NSw2ICsxODUsMTEgQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAoKCh1MzIpKGFkZHIpICYgMHgwMEZGMDAwMFUpID4+ IDE2KTsgICAgICAgICAgICAgXAogfSB3aGlsZSAoMCkKIAorI2RlZmluZSBfc2V0X3Rzc2xkdF90 eXBlKGRlc2MsdHlwZSkgICAgICAgICAgICAgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodTggKikmKGRl c2MpWzBdLmIpWzFdID0gKHR5cGUpIHwgMHg4MDsgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkK Kwogc3RydWN0IF9fcGFja2VkIGRlc2NfcHRyIHsKIAl1bnNpZ25lZCBzaG9ydCBsaW1pdDsKIAl1 bnNpZ25lZCBsb25nIGJhc2U7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3JlZ3Mu aCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcmVncy5oCmluZGV4IDcyNWE2NjRlMGEuLjM2MWRlNGM1 NGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcmVncy5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcmVncy5oCkBAIC03LDYgKzcsOCBAQAogI2RlZmluZSBndWVzdF9tb2RlKHIp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHVuc2lnbmVkIGxvbmcgZGlmZiA9IChjaGFy ICopZ3Vlc3RfY3B1X3VzZXJfcmVncygpIC0gKGNoYXIgKikocik7ICAgICAgICAgXAorICAgIGlm ICggZGlmZiA+PSBTVEFDS19TSVpFICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICBkaWZmID0gKGNoYXIgKikmZ2V0X2NwdV9pbmZvKCkt Pmd1ZXN0X2NwdV91c2VyX3JlZ3MgLSAoY2hhciAqKShyKTsgICAgXAogICAgIC8qIEZyYW1lIHBv aW50ZXIgbXVzdCBwb2ludCBpbnRvIGN1cnJlbnQgQ1BVIHN0YWNrLiAqLyAgICAgICAgICAgICAg ICAgICAgXAogICAgIEFTU0VSVChkaWZmIDwgU1RBQ0tfU0laRSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIElmIG5vdCBhIGd1ZXN0IGZy YW1lLCBpdCBtdXN0IGJlIGEgaHlwZXJ2aXNvciBmcmFtZS4gKi8gICAgICAgICAgICAgICAgXAot LSAKMi4xMy42CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==