From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 03/34] xsm/xen_version: Add XSM for the xen_version hypercall Date: Tue, 15 Mar 2016 13:56:25 -0400 Message-ID: <1458064616-23101-4-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftGn-0001VT-IY for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:00:37 +0000 In-Reply-To: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Wei Liu , Daniel De Graaf , Stefano Stabellini , Ian Jackson , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org QWxsIG9mIFhFTlZFUl8qIGhhdmUgbm93IGFuIFhTTSBjaGVjayBmb3IgdGhlaXIgc3ViLW9wcy4K ClRoZSBzdWJvcCBmb3IgWEVOVkVSX2NvbW1hbmRsaW5lIGlzIG5vdyBhIHByaXZpbGlnZWQgb3Bl cmF0aW9uLgpUbyBub3QgYnJlYWsgZ3Vlc3RzIHdlIHN0aWxsIHJldHVybiBhbiBzdHJpbmcgLSBi dXQgaXQgaXMKanVzdCAnPGRlbmllZD5cMCcuCgpUaGUgcmVzdDogWEVOVkVSX1t2ZXJzaW9ufGV4 dHJhdmVyc2lvbnxjYXBhYmlsaXRpZXN8CnBhcmFtZXRlcnN8Z2V0X2ZlYXR1cmVzfHBhZ2Vfc2l6 ZXxndWVzdF9oYW5kbGV8Y2hhbmdlc2V0fApjb21waWxlX2luZm9dIGJlaGF2ZSBhcyBiZWZvcmUg LSBhbGxvd2VkIGJ5IGRlZmF1bHQgZm9yIGFsbApndWVzdHMgaWYgdXNpbmcgdGhlIFhTTSBkZWZh dWx0IHBvbGljeSBvciB3aXRoIHRoZSBkdW1teSBvbmUuCgpUaGUgYWRtaW4gY2FuIGNob29zZSB0 byBjaGFuZ2UgdGhlIHN1Yi1vcHMgdG8gYmUgZGVuaWVkCmFzIHRoZXkgc2VlIGZpdC4KCkFsc28g d2UgYWRkIGEgbG9jYWwgdmFyaWFibGUgYmxvY2suCgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnpl c3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CgotLS0KQ2M6IERhbmllbCBEZSBH cmFhZiA8ZGdkZWdyYUB0eWNoby5uc2EuZ292PgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29u QGV1LmNpdHJpeC5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGlu aUBldS5jaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KCnYyOiBE byBYU00gY2hlY2sgZm9yIGFsbCB0aGUgWEVOVkVSXyBvcHMuCnYzOiBBZGQgZW1wdHkgZGF0YSBj b25kaXRpb25zLgp2NDogUmV0dXJuIDxkZW5pZWQ+IGZvciBwcml2IHN1Ym9wcy4KdjU6IE1vdmUg ZXh0cmF2ZXJzaW9uIGZyb20gcHJpdiB0byBub3JtYWwuIERyb3AgdGhlIFhTTSBjaGVjawogICAg Zm9yIHRoZSBub24tcHJpdiBzdWJvcHMuCnY2OiBBZGQgKzEgZm9yIHN0cmxlbih4ZW5fZGVueSgp KSB0byBpbmNsdWRlIE5VTEwuIE1vdmUgY2hhbmdlc2V0LAogICAgY29tcGlsZV9pbmZvIHRvIG5v bi1wcml2IHN1Ym9wcy4Kdjc6IFJlbW92ZSB0aGUgXDAgb24geGVuX2RlbnkoKQp2ODogQWRkIG5l dyBYU00gZG9tYWluIGZvciB4ZW52ZXIgaHlwZXJjYWxsLiBBZGQgYWxsIHN1Ym9wcyB0byBpdC4K djk6IFJlbW92ZSB0aGUgZXh0cmEgbGluZSwgQWRkIEFjayBmcm9tIERhbmllbAp2MTA6IFJlbmFt ZSB0aGUgWFNNIGZyb20geGVuX3ZlcnNpb25fb3AgdG8geHNtX3hlbl92ZXJzaW9uLgogICAgUHJl Zml4IHRoZSB0eXBlcyB3aXRoICd4ZW4nIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gYW5vdGhlcgog ICAgaHlwZXJjYWxsIHBlcmZvcm1pbmcgc2ltaWxhciBvcGVyYXRpb24uIFJlbW92ZWQgQWNrIGZy b20gRGFuaWVsCiAgICBhcyBpdCB3YXMgc28gbGFyZ2UuIEFkZCBsb2NhbCB2YXJpYWJsZSBibG9j ay4KLS0tCiB0b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSB8IDE1 ICsrKysrKysrCiB4ZW4vY29tbW9uL2tlcm5lbC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDUzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHhlbi9jb21tb24vdmVyc2lvbi5jICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi92ZXJz aW9uLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5o ICAgICAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94c20v eHNtLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKwogeGVuL3hzbS9kdW1teS5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiB4ZW4veHNtL2ZsYXNrL2hvb2tzLmMg ICAgICAgICAgICAgICAgICAgICAgICB8IDQzICsrKysrKysrKysrKysrKysrKysrKysKIHhlbi94 c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzICAgICAgICAgIHwgMjggKysrKysrKysrKysr KysrCiB4ZW4veHNtL2ZsYXNrL3BvbGljeS9zZWN1cml0eV9jbGFzc2VzICAgICAgICB8ICAxICsK IDEwIGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSBi L3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCmluZGV4IGQzNWFl MjIuLjdlNzQwMGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxl cy94ZW4veGVuLnRlCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4v eGVuLnRlCkBAIC03Myw2ICs3MywxNSBAQCBhbGxvdyBkb20wX3QgeGVuX3Q6eGVuMiB7CiAgICAg cG11X2N0cmwKICAgICBnZXRfc3ltYm9sCiB9OworCisjIEFsbG93IGRvbTAgdG8gdXNlIGFsbCBY RU5WRVJfIHN1Ym9wcworIyBOb3RlIHRoYXQgZG9tMCBpcyBwYXJ0IG9mIGRvbWFpbl90eXBlIHNv IHRoaXMgaGFzIGR1cGxpY2F0ZXMuCithbGxvdyBkb20wX3QgeGVuX3Q6dmVyc2lvbiB7CisgICAg eGVuX3ZlcnNpb24geGVuX2V4dHJhdmVyc2lvbiB4ZW5fY29tcGlsZV9pbmZvIHhlbl9jYXBhYmls aXRpZXMKKyAgICB4ZW5fY2hhbmdlc2V0IHhlbl9wbGF0Zm9ybV9wYXJhbWV0ZXJzIHhlbl9nZXRf ZmVhdHVyZXMgeGVuX3BhZ2VzaXplCisgICAgeGVuX2d1ZXN0X2hhbmRsZSB4ZW5fY29tbWFuZGxp bmUKK307CisKIGFsbG93IGRvbTBfdCB4ZW5fdDptbXUgbWVtb3J5bWFwOwogCiAjIEFsbG93IGRv bTAgdG8gdXNlIHRoZXNlIGRvbWN0bHMgb24gaXRzZWxmLiBGb3IgZG9tY3RscyBhY3Rpbmcgb24g b3RoZXIKQEAgLTEzNyw2ICsxNDYsMTIgQEAgaWYgKGd1ZXN0X3dyaXRlY29uc29sZSkgewogIyBw bXVfY3RybCBpcyBmb3IpCiBhbGxvdyBkb21haW5fdHlwZSB4ZW5fdDp4ZW4yIHBtdV91c2U7CiAK KyMgRm9yIG5vcm1hbCBndWVzdHMgYWxsIGV4Y2VwdCBYRU5WRVJfY29tbWFuZGxpbmUKK2FsbG93 IGRvbWFpbl90eXBlIHhlbl90OnZlcnNpb24geworICAgIHhlbl92ZXJzaW9uIHhlbl9leHRyYXZl cnNpb24geGVuX2NvbXBpbGVfaW5mbyB4ZW5fY2FwYWJpbGl0aWVzCisgICAgeGVuX2NoYW5nZXNl dCB4ZW5fcGxhdGZvcm1fcGFyYW1ldGVycyB4ZW5fZ2V0X2ZlYXR1cmVzIHhlbl9wYWdlc2l6ZQor ICAgIHhlbl9ndWVzdF9oYW5kbGUKK307CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCiAjIERv bWFpbiBjcmVhdGlvbgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9rZXJuZWwuYyBiL3hlbi9jb21t b24va2VybmVsLmMKaW5kZXggMDYxOGRhMi4uMjY5OWFjMCAxMDA2NDQKLS0tIGEveGVuL2NvbW1v bi9rZXJuZWwuYworKysgYi94ZW4vY29tbW9uL2tlcm5lbC5jCkBAIC0xMyw2ICsxMyw3IEBACiAj aW5jbHVkZSA8eGVuL25taS5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNs dWRlIDx4ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8eHNtL3hzbS5oPgogI2luY2x1ZGUgPGFz bS9jdXJyZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL25taS5oPgogI2luY2x1ZGUgPHB1YmxpYy92 ZXJzaW9uLmg+CkBAIC0yMjMsMTIgKzIyNCwxNSBAQCB2b2lkIF9faW5pdCBkb19pbml0Y2FsbHMo dm9pZCkKIC8qCiAgKiBTaW1wbGUgaHlwZXJjYWxscy4KICAqLwotCiBETyh4ZW5fdmVyc2lvbiko aW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiB7CisgICAgYm9vbF90 IGRlbnkgPSAhIXhzbV94ZW5fdmVyc2lvbihYU01fT1RIRVIsIGNtZCk7CisKICAgICBzd2l0Y2gg KCBjbWQgKQogICAgIHsKICAgICBjYXNlIFhFTlZFUl92ZXJzaW9uOgorICAgICAgICBpZiAoIGRl bnkgKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiAoeGVuX21ham9yX3Zl cnNpb24oKSA8PCAxNikgfCB4ZW5fbWlub3JfdmVyc2lvbigpOwogCiAgICAgY2FzZSBYRU5WRVJf ZXh0cmF2ZXJzaW9uOgpAQCAtMjM2LDcgKzI0MCw3IEBAIERPKHhlbl92ZXJzaW9uKShpbnQgY21k LCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKICAgICAgICAgeGVuX2V4dHJhdmVy c2lvbl90IGV4dHJhdmVyc2lvbjsKIAogICAgICAgICBtZW1zZXQoZXh0cmF2ZXJzaW9uLCAwLCBz aXplb2YoZXh0cmF2ZXJzaW9uKSk7Ci0gICAgICAgIHNhZmVfc3RyY3B5KGV4dHJhdmVyc2lvbiwg eGVuX2V4dHJhX3ZlcnNpb24oKSk7CisgICAgICAgIHNhZmVfc3RyY3B5KGV4dHJhdmVyc2lvbiwg ZGVueSA/IHhlbl9kZW55KCkgOiB4ZW5fZXh0cmFfdmVyc2lvbigpKTsKICAgICAgICAgaWYgKCBj b3B5X3RvX2d1ZXN0KGFyZywgZXh0cmF2ZXJzaW9uLCBBUlJBWV9TSVpFKGV4dHJhdmVyc2lvbikp ICkKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI0 NywxMCArMjUxLDEwIEBAIERPKHhlbl92ZXJzaW9uKShpbnQgY21kLCBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHZvaWQpIGFyZykKICAgICAgICAgeGVuX2NvbXBpbGVfaW5mb190IGluZm87CiAKICAg ICAgICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOwotICAgICAgICBzYWZlX3N0cmNw eShpbmZvLmNvbXBpbGVyLCAgICAgICB4ZW5fY29tcGlsZXIoKSk7Ci0gICAgICAgIHNhZmVfc3Ry Y3B5KGluZm8uY29tcGlsZV9ieSwgICAgIHhlbl9jb21waWxlX2J5KCkpOwotICAgICAgICBzYWZl X3N0cmNweShpbmZvLmNvbXBpbGVfZG9tYWluLCB4ZW5fY29tcGlsZV9kb21haW4oKSk7Ci0gICAg ICAgIHNhZmVfc3RyY3B5KGluZm8uY29tcGlsZV9kYXRlLCAgIHhlbl9jb21waWxlX2RhdGUoKSk7 CisgICAgICAgIHNhZmVfc3RyY3B5KGluZm8uY29tcGlsZXIsICAgICAgIGRlbnkgPyB4ZW5fZGVu eSgpIDogeGVuX2NvbXBpbGVyKCkpOworICAgICAgICBzYWZlX3N0cmNweShpbmZvLmNvbXBpbGVf YnksICAgICBkZW55ID8geGVuX2RlbnkoKSA6IHhlbl9jb21waWxlX2J5KCkpOworICAgICAgICBz YWZlX3N0cmNweShpbmZvLmNvbXBpbGVfZG9tYWluLCBkZW55ID8geGVuX2RlbnkoKSA6IHhlbl9j b21waWxlX2RvbWFpbigpKTsKKyAgICAgICAgc2FmZV9zdHJjcHkoaW5mby5jb21waWxlX2RhdGUs ICAgZGVueSA/IHhlbl9kZW55KCkgOiB4ZW5fY29tcGlsZV9kYXRlKCkpOwogICAgICAgICBpZiAo IGNvcHlfdG9fZ3Vlc3QoYXJnLCAmaW5mbywgMSkgKQogICAgICAgICAgICAgcmV0dXJuIC1FRkFV TFQ7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjYxLDcgKzI2NSw4IEBAIERPKHhlbl92ZXJzaW9u KShpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKICAgICAgICAgeGVu X2NhcGFiaWxpdGllc19pbmZvX3QgaW5mbzsKIAogICAgICAgICBtZW1zZXQoaW5mbywgMCwgc2l6 ZW9mKGluZm8pKTsKLSAgICAgICAgYXJjaF9nZXRfeGVuX2NhcHMoJmluZm8pOworICAgICAgICBp ZiAoICFkZW55ICkKKyAgICAgICAgICAgIGFyY2hfZ2V0X3hlbl9jYXBzKCZpbmZvKTsKIAogICAg ICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3QoYXJnLCBpbmZvLCBBUlJBWV9TSVpFKGluZm8pKSApCiAg ICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKQEAgLTI3NCw2ICsyNzksOSBAQCBETyh4ZW5fdmVy c2lvbikoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAg ICAgICAudmlydF9zdGFydCA9IEhZUEVSVklTT1JfVklSVF9TVEFSVAogICAgICAgICB9OwogCisg ICAgICAgIGlmICggZGVueSApCisgICAgICAgICAgICBwYXJhbXMudmlydF9zdGFydCA9IDA7CisK ICAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFyZywgJnBhcmFtcywgMSkgKQogICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjg1LDcgKzI5Myw3IEBA IERPKHhlbl92ZXJzaW9uKShpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFy ZykKICAgICAgICAgeGVuX2NoYW5nZXNldF9pbmZvX3QgY2hnc2V0OwogCiAgICAgICAgIG1lbXNl dChjaGdzZXQsIDAsIHNpemVvZihjaGdzZXQpKTsKLSAgICAgICAgc2FmZV9zdHJjcHkoY2hnc2V0 LCB4ZW5fY2hhbmdlc2V0KCkpOworICAgICAgICBzYWZlX3N0cmNweShjaGdzZXQsIGRlbnkgPyB4 ZW5fZGVueSgpIDogeGVuX2NoYW5nZXNldCgpKTsKICAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0 KGFyZywgY2hnc2V0LCBBUlJBWV9TSVpFKGNoZ3NldCkpICkKICAgICAgICAgICAgIHJldHVybiAt RUZBVUxUOwogICAgICAgICByZXR1cm4gMDsKQEAgLTMwMiw2ICszMTAsOCBAQCBETyh4ZW5fdmVy c2lvbikoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAg IHN3aXRjaCAoIGZpLnN1Ym1hcF9pZHggKQogICAgICAgICB7CiAgICAgICAgIGNhc2UgMDoKKyAg ICAgICAgICAgIGlmICggZGVueSApCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICBmaS5zdWJtYXAgPSAoMVUgPDwgWEVORkVBVF9tZW1vcnlfb3Bfdm5vZGVfc3VwcG9ydGVkKTsK ICAgICAgICAgICAgIGlmICggVk1fQVNTSVNUKGQsIHBhZV9leHRlbmRlZF9jcjMpICkKICAgICAg ICAgICAgICAgICBmaS5zdWJtYXAgfD0gKDFVIDw8IFhFTkZFQVRfcGFlX3BnZGlyX2Fib3ZlXzRn Yik7CkBAIC0zNDIsMTkgKzM1MiwzOCBAQCBETyh4ZW5fdmVyc2lvbikoaW50IGNtZCwgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgfQogCiAgICAgY2FzZSBYRU5WRVJfcGFn ZXNpemU6CisgICAgICAgIGlmICggZGVueSApCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg ICAgcmV0dXJuICghZ3Vlc3RfaGFuZGxlX2lzX251bGwoYXJnKSA/IC1FSU5WQUwgOiBQQUdFX1NJ WkUpOwogCiAgICAgY2FzZSBYRU5WRVJfZ3Vlc3RfaGFuZGxlOgotICAgICAgICBpZiAoIGNvcHlf dG9fZ3Vlc3QoYXJnLCBjdXJyZW50LT5kb21haW4tPmhhbmRsZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFSUkFZX1NJWkUoY3VycmVudC0+ZG9tYWluLT5oYW5kbGUpKSApCisgICAgewor ICAgICAgICB4ZW5fZG9tYWluX2hhbmRsZV90IGhkbDsKKyAgICAgICAgc3NpemVfdCBsZW47CisK KyAgICAgICAgaWYgKCBkZW55ICkKKyAgICAgICAgeworICAgICAgICAgICAgbGVuID0gc2l6ZW9m KGhkbCk7CisgICAgICAgICAgICBtZW1zZXQoJmhkbCwgMCwgbGVuKTsKKyAgICAgICAgfSBlbHNl CisgICAgICAgICAgICBsZW4gPSBBUlJBWV9TSVpFKGN1cnJlbnQtPmRvbWFpbi0+aGFuZGxlKTsK KworICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3QoYXJnLCBkZW55ID8gaGRsIDogY3VycmVudC0+ ZG9tYWluLT5oYW5kbGUsIGxlbiApICkKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAg ICAgICByZXR1cm4gMDsKLQorICAgIH0KICAgICBjYXNlIFhFTlZFUl9jb21tYW5kbGluZToKLSAg ICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFyZywgc2F2ZWRfY21kbGluZSwgQVJSQVlfU0laRShz YXZlZF9jbWRsaW5lKSkgKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGxlbiA9IEFSUkFZX1NJWkUo c2F2ZWRfY21kbGluZSk7CisKKyAgICAgICAgaWYgKCBkZW55ICkKKyAgICAgICAgICAgIGxlbiA9 IHN0cmxlbih4ZW5fZGVueSgpKSArIDE7CisKKyAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KGFy ZywgZGVueSA/IHhlbl9kZW55KCkgOiBzYXZlZF9jbWRsaW5lLCBsZW4pICkKICAgICAgICAgICAg IHJldHVybiAtRUZBVUxUOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgfQogCiAgICAg cmV0dXJuIC1FTk9TWVM7CiB9CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZlcnNpb24uYyBiL3hl bi9jb21tb24vdmVyc2lvbi5jCmluZGV4IGIxNTJlMjcuLmZjOWJmNDIgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vdmVyc2lvbi5jCisrKyBiL3hlbi9jb21tb24vdmVyc2lvbi5jCkBAIC01NSwzICs1 NSwxOCBAQCBjb25zdCBjaGFyICp4ZW5fYmFubmVyKHZvaWQpCiB7CiAgICAgcmV0dXJuIFhFTl9C QU5ORVI7CiB9CisKK2NvbnN0IGNoYXIgKnhlbl9kZW55KHZvaWQpCit7CisgICAgcmV0dXJuICI8 ZGVuaWVkPiI7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0 CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL3ZlcnNpb24uaCBiL3hlbi9pbmNsdWRlL3hlbi92ZXJzaW9uLmgKaW5kZXgg ODFhM2M3ZC4uMDE2YTU2YyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3ZlcnNpb24uaAor KysgYi94ZW4vaW5jbHVkZS94ZW4vdmVyc2lvbi5oCkBAIC0xMiw1ICsxMiw1IEBAIHVuc2lnbmVk IGludCB4ZW5fbWlub3JfdmVyc2lvbih2b2lkKTsKIGNvbnN0IGNoYXIgKnhlbl9leHRyYV92ZXJz aW9uKHZvaWQpOwogY29uc3QgY2hhciAqeGVuX2NoYW5nZXNldCh2b2lkKTsKIGNvbnN0IGNoYXIg Knhlbl9iYW5uZXIodm9pZCk7Ci0KK2NvbnN0IGNoYXIgKnhlbl9kZW55KHZvaWQpOwogI2VuZGlm IC8qIF9fWEVOX1ZFUlNJT05fSF9fICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94c20vZHVt bXkuaCBiL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCmluZGV4IDFkMTM4MjYuLjk0Yjg4NTUgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCisrKyBiL3hlbi9pbmNsdWRlL3hzbS9k dW1teS5oCkBAIC03MjcsMyArNzI3LDI1IEBAIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21fcG11 X29wIChYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50CiB9CiAK ICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCisKKyNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5oPgor c3RhdGljIFhTTV9JTkxJTkUgaW50IHhzbV94ZW5fdmVyc2lvbiAoWFNNX0RFRkFVTFRfQVJHIHVp bnQzMl90IG9wKQoreworICAgIFhTTV9BU1NFUlRfQUNUSU9OKFhTTV9PVEhFUik7CisgICAgc3dp dGNoICggb3AgKQorICAgIHsKKyAgICBjYXNlIFhFTlZFUl92ZXJzaW9uOgorICAgIGNhc2UgWEVO VkVSX2V4dHJhdmVyc2lvbjoKKyAgICBjYXNlIFhFTlZFUl9jb21waWxlX2luZm86CisgICAgY2Fz ZSBYRU5WRVJfY2FwYWJpbGl0aWVzOgorICAgIGNhc2UgWEVOVkVSX2NoYW5nZXNldDoKKyAgICBj YXNlIFhFTlZFUl9wbGF0Zm9ybV9wYXJhbWV0ZXJzOgorICAgIGNhc2UgWEVOVkVSX2dldF9mZWF0 dXJlczoKKyAgICBjYXNlIFhFTlZFUl9wYWdlc2l6ZToKKyAgICBjYXNlIFhFTlZFUl9ndWVzdF9o YW5kbGU6CisgICAgICAgIC8qIFRoZXNlIE1VU1QgYWx3YXlzIGJlIGFjY2Vzc2libGUgdG8gYW55 IGd1ZXN0IGJ5IGRlZmF1bHQuICovCisgICAgICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24o WFNNX0hPT0ssIGN1cnJlbnQtPmRvbWFpbiwgTlVMTCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg cmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihYU01fUFJJViwgY3VycmVudC0+ZG9tYWluLCBOVUxM KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94c20veHNtLmggYi94ZW4vaW5j bHVkZS94c20veHNtLmgKaW5kZXggM2FmZWQ3MC4uZGI0NDBmNiAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUveHNtL3hzbS5oCisrKyBiL3hlbi9pbmNsdWRlL3hzbS94c20uaApAQCAtMTkzLDYgKzE5 Myw3IEBAIHN0cnVjdCB4c21fb3BlcmF0aW9ucyB7CiAgICAgaW50ICgqaW9wb3J0X21hcHBpbmcp IChzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBzLCB1aW50MzJfdCBlLCB1aW50OF90IGFsbG93 KTsKICAgICBpbnQgKCpwbXVfb3ApIChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgb3Ap OwogI2VuZGlmCisgICAgaW50ICgqeGVuX3ZlcnNpb24pICh1aW50MzJfdCBjbWQpOwogfTsKIAog I2lmZGVmIENPTkZJR19YU00KQEAgLTczMSw2ICs3MzIsMTAgQEAgc3RhdGljIGlubGluZSBpbnQg eHNtX3BtdV9vcCAoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGludAogCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCitzdGF0aWMgaW5saW5lIGludCB4c21f eGVuX3ZlcnNpb24gKHhzbV9kZWZhdWx0X3QgZGVmLCB1aW50MzJfdCBvcCkKK3sKKyAgICByZXR1 cm4geHNtX29wcy0+eGVuX3ZlcnNpb24ob3ApOworfQogI2VuZGlmIC8qIFhTTV9OT19XUkFQUEVS UyAqLwogCiAjaWZkZWYgQ09ORklHX01VTFRJQk9PVApkaWZmIC0tZ2l0IGEveGVuL3hzbS9kdW1t eS5jIGIveGVuL3hzbS9kdW1teS5jCmluZGV4IDBmMzI2MzYuLjk3OTFhZDQgMTAwNjQ0Ci0tLSBh L3hlbi94c20vZHVtbXkuYworKysgYi94ZW4veHNtL2R1bW15LmMKQEAgLTE2Miw0ICsxNjIsNSBA QCB2b2lkIHhzbV9maXh1cF9vcHMgKHN0cnVjdCB4c21fb3BlcmF0aW9ucyAqb3BzKQogICAgIHNl dF90b19kdW1teV9pZl9udWxsKG9wcywgaW9wb3J0X21hcHBpbmcpOwogICAgIHNldF90b19kdW1t eV9pZl9udWxsKG9wcywgcG11X29wKTsKICNlbmRpZgorICAgIHNldF90b19kdW1teV9pZl9udWxs KG9wcywgeGVuX3ZlcnNpb24pOwogfQpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9ob29rcy5j IGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDQ4MTM2MjMuLmQxYmVmNDMgMTAwNjQ0Ci0t LSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKQEAg LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVkZSA8cHVibGlj L3BoeXNkZXYuaD4KICNpbmNsdWRlIDxwdWJsaWMvcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJs aWMvdmVyc2lvbi5oPgogCiAjaW5jbHVkZSA8cHVibGljL3hzbS9mbGFza19vcC5oPgogCkBAIC0x NjIwLDYgKzE2MjEsNDcgQEAgc3RhdGljIGludCBmbGFza19wbXVfb3AgKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGludCBvcCkKIH0KICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCiAKK3N0YXRp YyBpbnQgZmxhc2tfeGVuX3ZlcnNpb24gKHVpbnQzMl90IG9wKQoreworICAgIHUzMiBkc2lkID0g ZG9tYWluX3NpZChjdXJyZW50LT5kb21haW4pOworCisgICAgc3dpdGNoICggb3AgKQorICAgIHsK KyAgICBjYXNlIFhFTlZFUl92ZXJzaW9uOgorICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRz aWQsIFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19WRVJTSU9OLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZFUlNJT05fX1hFTl9WRVJTSU9OLCBOVUxMKTsKKyAgICBjYXNlIFhFTlZFUl9l eHRyYXZlcnNpb246CisgICAgICAgIHJldHVybiBhdmNfaGFzX3Blcm0oZHNpZCwgU0VDSU5JVFNJ RF9YRU4sIFNFQ0NMQVNTX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVS U0lPTl9fWEVOX0VYVFJBVkVSU0lPTiwgTlVMTCk7CisgICAgY2FzZSBYRU5WRVJfY29tcGlsZV9p bmZvOgorICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVOLCBT RUNDTEFTU19WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05fX1hF Tl9DT01QSUxFX0lORk8sIE5VTEwpOworICAgIGNhc2UgWEVOVkVSX2NhcGFiaWxpdGllczoKKyAg ICAgICAgcmV0dXJuIGF2Y19oYXNfcGVybShkc2lkLCBTRUNJTklUU0lEX1hFTiwgU0VDQ0xBU1Nf VkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX19YRU5fQ0FQQUJJ TElUSUVTLCBOVUxMKTsKKyAgICBjYXNlIFhFTlZFUl9jaGFuZ2VzZXQ6CisgICAgICAgIHJldHVy biBhdmNfaGFzX3Blcm0oZHNpZCwgU0VDSU5JVFNJRF9YRU4sIFNFQ0NMQVNTX1ZFUlNJT04sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lPTl9fWEVOX0NIQU5HRVNFVCwgTlVMTCk7 CisgICAgY2FzZSBYRU5WRVJfcGxhdGZvcm1fcGFyYW1ldGVyczoKKyAgICAgICAgcmV0dXJuIGF2 Y19oYXNfcGVybShkc2lkLCBTRUNJTklUU0lEX1hFTiwgU0VDQ0xBU1NfVkVSU0lPTiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX19YRU5fUExBVEZPUk1fUEFSQU1FVEVSUywg TlVMTCk7CisgICAgY2FzZSBYRU5WRVJfZ2V0X2ZlYXR1cmVzOgorICAgICAgICByZXR1cm4gYXZj X2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19WRVJTSU9OLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05fX1hFTl9HRVRfRkVBVFVSRVMsIE5VTEwpOwor ICAgIGNhc2UgWEVOVkVSX3BhZ2VzaXplOgorICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRz aWQsIFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19WRVJTSU9OLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZFUlNJT05fX1hFTl9QQUdFU0laRSwgTlVMTCk7CisgICAgY2FzZSBYRU5WRVJf Z3Vlc3RfaGFuZGxlOgorICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRT SURfWEVOLCBTRUNDTEFTU19WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZF UlNJT05fX1hFTl9HVUVTVF9IQU5ETEUsIE5VTEwpOworICAgIGNhc2UgWEVOVkVSX2NvbW1hbmRs aW5lOgorICAgICAgICByZXR1cm4gYXZjX2hhc19wZXJtKGRzaWQsIFNFQ0lOSVRTSURfWEVOLCBT RUNDTEFTU19WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05fX1hF Tl9DT01NQU5ETElORSwgTlVMTCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIC1FUEVS TTsKKyAgICB9Cit9CisKIGxvbmcgZG9fZmxhc2tfb3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 c21fb3BfdCkgdV9mbGFza19vcCk7CiBpbnQgY29tcGF0X2ZsYXNrX29wKFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0oeHNtX29wX3QpIHVfZmxhc2tfb3ApOwogCkBAIC0xNzU4LDYgKzE4MDAsNyBAQCBz dGF0aWMgc3RydWN0IHhzbV9vcGVyYXRpb25zIGZsYXNrX29wcyA9IHsKICAgICAuaW9wb3J0X21h cHBpbmcgPSBmbGFza19pb3BvcnRfbWFwcGluZywKICAgICAucG11X29wID0gZmxhc2tfcG11X29w LAogI2VuZGlmCisgICAgLnhlbl92ZXJzaW9uID0gZmxhc2tfeGVuX3ZlcnNpb24sCiB9OwogCiBz dGF0aWMgX19pbml0IHZvaWQgZmxhc2tfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL3hzbS9m bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycwppbmRleCBlZmZiNTlmLi42MjhkZDVjIDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNr L3BvbGljeS9hY2Nlc3NfdmVjdG9ycworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycwpAQCAtNDk1LDMgKzQ5NSwzMSBAQCBjbGFzcyBzZWN1cml0eQogIyByZW1vdmUgb2Nv bnRleHQgbGFiZWwgZGVmaW5pdGlvbnMgZm9yIHJlc291cmNlcwogICAgIGRlbF9vY29udGV4dAog fQorCisjIENsYXNzIHZlcnNpb24gaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgWEVOVkVSXyBoeXBl cmNhbGwuCisjIEVhY2ggc3ViLW9wcyBpcyBkZXNjcmliZWQgaGVyZSAtIGluIHRoZSBkZWZhdWx0 IGNhc2UgYWxsIG9mIHRoZW0gc2hvdWxkCisjIGJlIGFsbG93ZWQgZXhjZXB0IHRoZSBYRU5WRVJf Y29tbWFuZGxpbmUuCisjCitjbGFzcyB2ZXJzaW9uCit7CisjIE9mdGVuIGNhbGxlZCBieSBQViBr ZXJuZWxzIHRvIGZvcmNlIGFuIGNhbGxiYWNrLgorICAgIHhlbl92ZXJzaW9uCisjIEV4dHJhIGlu Zm9ybWF0aW9ucyAoLXVuc3RhYmxlKS4KKyAgICB4ZW5fZXh0cmF2ZXJzaW9uCisjIENvbXBpbGUg aW5mb3JtYXRpb24gb2YgdGhlIGh5cGVydmlzb3IuCisgICAgeGVuX2NvbXBpbGVfaW5mbworIyBT dWNoIGFzICJ4ZW4tMy4wLXg4Nl82NCB4ZW4tMy4wLXg4Nl8zMnAgaHZtLTMuMC14ODZfMzIgaHZt LTMuMC14ODZfMzJwIGh2bS0zLjAteDg2XzY0Ii4KKyAgICB4ZW5fY2FwYWJpbGl0aWVzCisjIFN1 Y2ggYXMgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiB3aGVyZSB0aGUgaHlwZXJ2aXNvciByZXNpZGVz LgorICAgIHhlbl9wbGF0Zm9ybV9wYXJhbWV0ZXJzCisjIFNvdXJjZSBjb2RlIGNoYW5nZXNldC4K KyAgICB4ZW5fY2hhbmdlc2V0CisjIFRoZSBmZWF0dXJlcyB0aGUgaHlwZXJ2aXNvciBzdXBwb3J0 cy4KKyAgICB4ZW5fZ2V0X2ZlYXR1cmVzCisjIFBhZ2Ugc2l6ZSB0aGUgaHlwZXJ2aXNvciB1c2Vz LgorICAgIHhlbl9wYWdlc2l6ZQorIyBBbiB2YWx1ZSB0aGF0IHRoZSBjb250cm9sIHN0YWNrIGNh biBjaG9vc2UuCisgICAgeGVuX2d1ZXN0X2hhbmRsZQorIyBYZW4gY29tbWFuZCBsaW5lLgorICAg IHhlbl9jb21tYW5kbGluZQorfQpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9wb2xpY3kvc2Vj dXJpdHlfY2xhc3NlcyBiL3hlbi94c20vZmxhc2svcG9saWN5L3NlY3VyaXR5X2NsYXNzZXMKaW5k ZXggY2ExOTFkYi4uY2RlNGUxYSAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kvc2Vj dXJpdHlfY2xhc3NlcworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9zZWN1cml0eV9jbGFzc2Vz CkBAIC0xOCw1ICsxOCw2IEBAIGNsYXNzIHNoYWRvdwogY2xhc3MgZXZlbnQKIGNsYXNzIGdyYW50 CiBjbGFzcyBzZWN1cml0eQorY2xhc3MgdmVyc2lvbgogCiAjIEZMQVNLCi0tIAoyLjUuMAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==