From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8BA8C432C2 for ; Wed, 25 Sep 2019 15:25:30 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B19F42054F for ; Wed, 25 Sep 2019 15:25:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B19F42054F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iD9AL-00067w-Uw; Wed, 25 Sep 2019 15:25:17 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iD9AK-00067h-Ff for xen-devel@lists.xenproject.org; Wed, 25 Sep 2019 15:25:16 +0000 X-Inumbo-ID: ac581f68-dfa8-11e9-9636-12813bfff9fa Received: from mx1.suse.de (unknown [195.135.220.15]) by localhost (Halon) with ESMTPS id ac581f68-dfa8-11e9-9636-12813bfff9fa; Wed, 25 Sep 2019 15:25:15 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 8FCDEACA5; Wed, 25 Sep 2019 15:25:14 +0000 (UTC) From: Jan Beulich To: "xen-devel@lists.xenproject.org" References: <3ce4ab2c-8cb6-1482-6ce9-3d5b019e10c1@suse.com> Message-ID: Date: Wed, 25 Sep 2019 17:25:14 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <3ce4ab2c-8cb6-1482-6ce9-3d5b019e10c1@suse.com> Content-Language: en-US Subject: [Xen-devel] [PATCH v3 3/5] x86/HVM: move NOFLUSH handling out of hvm_set_cr3() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Petre Pircalabu , Kevin Tian , Tamas K Lengyel , Razvan Cojocaru , Wei Liu , Paul Durrant , George Dunlap , Andrew Cooper , Suravee Suthikulpanit , Jun Nakajima , Alexandru Isaila , Boris Ostrovsky , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VGhlIGJpdCBpcyBtZWFuaW5nZnVsIG9ubHkgZm9yIE1PVi10by1DUjMgaW5zbnMsIG5vdCBhbnl3 aGVyZSBlbHNlLCBpbgpwYXJ0aWN1bGFyIG5vdCB3aGVuIGxvYWRpbmcgbmVzdGVkIGd1ZXN0IHN0 YXRlLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpSZXZp ZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsQHhlbi5vcmc+Ci0tLQp2MzogRnVydGhlciByZXN0 cmljdCAibm9mbHVzaCIgbG9jYWwgdmFyaWFibGUgc2NvcGVzLiBSZW1vdmUgKG5vdwogICAgcmVk dW5kYW50KSB6YXBwaW5nIG9mIFg4Nl9DUjNfTk9GTFVTSCBmcm9tIGh2bV9tb25pdG9yX2NyKCku CgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICB8ICAgIDggKysrKysrKy0K IHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrKy0tLS0t LS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vbW9uaXRvci5jICAgICAgICB8ICAgIDMgLS0tCiB4ZW4v YXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYyAgfCAgICA2ICsrKy0tLQogeGVuL2FyY2gveDg2 L2h2bS92bV9ldmVudC5jICAgICAgIHwgICAgMiArLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdnZt eC5jICAgICAgIHwgICAgNCArKy0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oICAgICAg fCAgICAyICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdXBwb3J0LmggfCAgICAyICstCiA4 IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRl LmMKQEAgLTIxMjMsOCArMjEyMywxNCBAQCBzdGF0aWMgaW50IGh2bWVtdWxfd3JpdGVfY3IoCiAg ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAzOgotICAgICAgICByYyA9IGh2bV9zZXRfY3IzKHZh bCwgdHJ1ZSk7CisgICAgeworICAgICAgICBib29sIG5vZmx1c2ggPSBodm1fcGNpZF9lbmFibGVk KGN1cnJlbnQpICYmICh2YWwgJiBYODZfQ1IzX05PRkxVU0gpOworCisgICAgICAgIGlmICggbm9m bHVzaCApCisgICAgICAgICAgICB2YWwgJj0gflg4Nl9DUjNfTk9GTFVTSDsKKyAgICAgICAgcmMg PSBodm1fc2V0X2NyMyh2YWwsIG5vZmx1c2gsIHRydWUpOwogICAgICAgICBicmVhazsKKyAgICB9 CiAKICAgICBjYXNlIDQ6CiAgICAgICAgIHJjID0gaHZtX3NldF9jcjQodmFsLCB0cnVlKTsKLS0t IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBA IC0yMDc2LDggKzIwNzYsMTQgQEAgaW50IGh2bV9tb3ZfdG9fY3IodW5zaWduZWQgaW50IGNyLCB1 bnNpZwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMzoKLSAgICAgICAgcmMgPSBodm1fc2V0 X2NyMyh2YWwsIHRydWUpOworICAgIHsKKyAgICAgICAgYm9vbCBub2ZsdXNoID0gaHZtX3BjaWRf ZW5hYmxlZChjdXJyKSAmJiAodmFsICYgWDg2X0NSM19OT0ZMVVNIKTsKKworICAgICAgICBpZiAo IG5vZmx1c2ggKQorICAgICAgICAgICAgdmFsICY9IH5YODZfQ1IzX05PRkxVU0g7CisgICAgICAg IHJjID0gaHZtX3NldF9jcjModmFsLCBub2ZsdXNoLCB0cnVlKTsKICAgICAgICAgYnJlYWs7Cisg ICAgfQogCiAgICAgY2FzZSA0OgogICAgICAgICByYyA9IGh2bV9zZXRfY3I0KHZhbCwgdHJ1ZSk7 CkBAIC0yMjk0LDEyICsyMzAwLDExIEBAIGludCBodm1fc2V0X2NyMCh1bnNpZ25lZCBsb25nIHZh bHVlLCBib28KICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCi1pbnQgaHZtX3NldF9jcjMo dW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbCBtYXlfZGVmZXIpCitpbnQgaHZtX3NldF9jcjModW5z aWduZWQgbG9uZyB2YWx1ZSwgYm9vbCBub2ZsdXNoLCBib29sIG1heV9kZWZlcikKIHsKICAgICBz dHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKICAg ICB1bnNpZ25lZCBsb25nIG9sZCA9IHYtPmFyY2guaHZtLmd1ZXN0X2NyWzNdOwotICAgIGJvb2wg bm9mbHVzaCA9IGZhbHNlOwogCiAgICAgaWYgKCBtYXlfZGVmZXIgJiYgdW5saWtlbHkodi0+ZG9t YWluLT5hcmNoLm1vbml0b3Iud3JpdGVfY3RybHJlZ19lbmFibGVkICYKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb25pdG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVOVF9YODZfQ1Iz KSkgKQpAQCAtMjMxMSwxNyArMjMxNiwxMiBAQCBpbnQgaHZtX3NldF9jcjModW5zaWduZWQgbG9u ZyB2YWx1ZSwgYm9vCiAgICAgICAgICAgICAvKiBUaGUgYWN0dWFsIHdyaXRlIHdpbGwgb2NjdXIg aW4gaHZtX2RvX3Jlc3VtZSgpLCBpZiBwZXJtaXR0ZWQuICovCiAgICAgICAgICAgICB2LT5hcmNo LnZtX2V2ZW50LT53cml0ZV9kYXRhLmRvX3dyaXRlLmNyMyA9IDE7CiAgICAgICAgICAgICB2LT5h cmNoLnZtX2V2ZW50LT53cml0ZV9kYXRhLmNyMyA9IHZhbHVlOworICAgICAgICAgICAgdi0+YXJj aC52bV9ldmVudC0+d3JpdGVfZGF0YS5jcjNfbm9mbHVzaCA9IG5vZmx1c2g7CiAKICAgICAgICAg ICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIGh2 bV9wY2lkX2VuYWJsZWQodikgKSAvKiBDbGVhciB0aGUgbm9mbHVzaCBiaXQuICovCi0gICAgewot ICAgICAgICBub2ZsdXNoID0gdmFsdWUgJiBYODZfQ1IzX05PRkxVU0g7Ci0gICAgICAgIHZhbHVl ICY9IH5YODZfQ1IzX05PRkxVU0g7Ci0gICAgfQotCiAgICAgaWYgKCBodm1fcGFnaW5nX2VuYWJs ZWQodikgJiYgIXBhZ2luZ19tb2RlX2hhcCh2LT5kb21haW4pICYmCiAgICAgICAgICAoKHZhbHVl IF4gdi0+YXJjaC5odm0uZ3Vlc3RfY3JbM10pID4+IFBBR0VfU0hJRlQpICkKICAgICB7CkBAIC0z MDE2LDcgKzMwMTYsNyBAQCB2b2lkIGh2bV90YXNrX3N3aXRjaCgKICAgICBpZiAoIHRhc2tfc3dp dGNoX2xvYWRfc2VnKHg4Nl9zZWdfbGR0ciwgdHNzLmxkdCwgbmV3X2NwbCwgMCkgKQogICAgICAg ICBnb3RvIG91dDsKIAotICAgIHJjID0gaHZtX3NldF9jcjModHNzLmNyMywgdHJ1ZSk7CisgICAg cmMgPSBodm1fc2V0X2NyMyh0c3MuY3IzLCBmYWxzZSwgdHJ1ZSk7CiAgICAgaWYgKCByYyA9PSBY ODZFTVVMX0VYQ0VQVElPTiApCiAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBf Z3BfZmF1bHQsIDApOwogICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKLS0tIGEveGVuL2Fy Y2gveDg2L2h2bS9tb25pdG9yLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9tb25pdG9yLmMKQEAg LTM4LDkgKzM4LDYgQEAgYm9vbCBodm1fbW9uaXRvcl9jcih1bnNpZ25lZCBpbnQgaW5kZXgsCiAg ICAgc3RydWN0IGFyY2hfZG9tYWluICphZCA9ICZjdXJyLT5kb21haW4tPmFyY2g7CiAgICAgdW5z aWduZWQgaW50IGN0cmxyZWdfYml0bWFzayA9IG1vbml0b3JfY3RybHJlZ19iaXRtYXNrKGluZGV4 KTsKIAotICAgIGlmICggaW5kZXggPT0gVk1fRVZFTlRfWDg2X0NSMyAmJiBodm1fcGNpZF9lbmFi bGVkKGN1cnIpICkKLSAgICAgICAgdmFsdWUgJj0gflg4Nl9DUjNfTk9GTFVTSDsgLyogQ2xlYXIg dGhlIG5vZmx1c2ggYml0LiAqLwotCiAgICAgaWYgKCAoYWQtPm1vbml0b3Iud3JpdGVfY3RybHJl Z19lbmFibGVkICYgY3RybHJlZ19iaXRtYXNrKSAmJgogICAgICAgICAgKCEoYWQtPm1vbml0b3Iu d3JpdGVfY3RybHJlZ19vbmNoYW5nZW9ubHkgJiBjdHJscmVnX2JpdG1hc2spIHx8CiAgICAgICAg ICAgdmFsdWUgIT0gb2xkKSAmJgotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0u YworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYwpAQCAtMzI0LDcgKzMyNCw3 IEBAIHN0YXRpYyBpbnQgbnN2bV92Y3B1X2hvc3RyZXN0b3JlKHN0cnVjdAogICAgICAgICB2LT5h cmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxlX251bGwoKTsKICAgICAgICAgLyogaHZtX3NldF9j cjMoKSBiZWxvdyBzZXRzIHYtPmFyY2guaHZtLmd1ZXN0X2NyWzNdIGZvciB1cy4gKi8KICAgICB9 Ci0gICAgcmMgPSBodm1fc2V0X2NyMyhuMXZtY2ItPl9jcjMsIHRydWUpOworICAgIHJjID0gaHZt X3NldF9jcjMobjF2bWNiLT5fY3IzLCBmYWxzZSwgdHJ1ZSk7CiAgICAgaWYgKCByYyA9PSBYODZF TVVMX0VYQ0VQVElPTiApCiAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3Bf ZmF1bHQsIDApOwogICAgIGlmIChyYyAhPSBYODZFTVVMX09LQVkpCkBAIC01ODQsNyArNTg0LDcg QEAgc3RhdGljIGludCBuc3ZtX3ZtY2JfcHJlcGFyZTR2bXJ1bihzdHJ1YwogICAgICAgICBuZXN0 ZWRzdm1fdm1jYl9zZXRfbmVzdGVkcDJtKHYsIG5zX3ZtY2IsIG4ydm1jYik7CiAKICAgICAgICAg LyogaHZtX3NldF9jcjMoKSBiZWxvdyBzZXRzIHYtPmFyY2guaHZtLmd1ZXN0X2NyWzNdIGZvciB1 cy4gKi8KLSAgICAgICAgcmMgPSBodm1fc2V0X2NyMyhuc192bWNiLT5fY3IzLCB0cnVlKTsKKyAg ICAgICAgcmMgPSBodm1fc2V0X2NyMyhuc192bWNiLT5fY3IzLCBmYWxzZSwgdHJ1ZSk7CiAgICAg ICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQogICAgICAgICAgICAgaHZtX2luamVj dF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgICAgIGlmIChyYyAhPSBYODZF TVVMX09LQVkpCkBAIC01OTgsNyArNTk4LDcgQEAgc3RhdGljIGludCBuc3ZtX3ZtY2JfcHJlcGFy ZTR2bXJ1bihzdHJ1YwogICAgICAgICAgKiB3ZSBhc3N1bWUgaXQgaW50ZXJjZXB0cyBwYWdlIGZh dWx0cy4KICAgICAgICAgICovCiAgICAgICAgIC8qIGh2bV9zZXRfY3IzKCkgYmVsb3cgc2V0cyB2 LT5hcmNoLmh2bS5ndWVzdF9jclszXSBmb3IgdXMuICovCi0gICAgICAgIHJjID0gaHZtX3NldF9j cjMobnNfdm1jYi0+X2NyMywgdHJ1ZSk7CisgICAgICAgIHJjID0gaHZtX3NldF9jcjMobnNfdm1j Yi0+X2NyMywgZmFsc2UsIHRydWUpOwogICAgICAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBU SU9OICkKICAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQs IDApOwogICAgICAgICBpZiAocmMgIT0gWDg2RU1VTF9PS0FZKQotLS0gYS94ZW4vYXJjaC94ODYv aHZtL3ZtX2V2ZW50LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bV9ldmVudC5jCkBAIC0xMTAs NyArMTEwLDcgQEAgdm9pZCBodm1fdm1fZXZlbnRfZG9fcmVzdW1lKHN0cnVjdCB2Y3B1CiAKICAg ICBpZiAoIHVubGlrZWx5KHctPmRvX3dyaXRlLmNyMykgKQogICAgIHsKLSAgICAgICAgaWYgKCBo dm1fc2V0X2NyMyh3LT5jcjMsIGZhbHNlKSA9PSBYODZFTVVMX0VYQ0VQVElPTiApCisgICAgICAg IGlmICggaHZtX3NldF9jcjMody0+Y3IzLCB3LT5jcjNfbm9mbHVzaCwgZmFsc2UpID09IFg4NkVN VUxfRVhDRVBUSU9OICkKICAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBf Z3BfZmF1bHQsIDApOwogCiAgICAgICAgIHctPmRvX3dyaXRlLmNyMyA9IDA7Ci0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vdm14L3Z2bXguYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMK QEAgLTEwMzIsNyArMTAzMiw3IEBAIHN0YXRpYyB2b2lkIGxvYWRfc2hhZG93X2d1ZXN0X3N0YXRl KHN0cnUKICAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKICAgICAgICAgaHZtX2lu amVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAKLSAgICByYyA9IGh2bV9zZXRf Y3IzKGdldF92dm1jcyh2LCBHVUVTVF9DUjMpLCB0cnVlKTsKKyAgICByYyA9IGh2bV9zZXRfY3Iz KGdldF92dm1jcyh2LCBHVUVTVF9DUjMpLCBmYWxzZSwgdHJ1ZSk7CiAgICAgaWYgKCByYyA9PSBY ODZFTVVMX0VYQ0VQVElPTiApCiAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBf Z3BfZmF1bHQsIDApOwogCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBzdGF0aWMgdm9pZCBsb2FkX3Z2 bWNzX2hvc3Rfc3RhdGUoc3RydWN0CiAgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiAp CiAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwogCi0g ICAgcmMgPSBodm1fc2V0X2NyMyhnZXRfdnZtY3ModiwgSE9TVF9DUjMpLCB0cnVlKTsKKyAgICBy YyA9IGh2bV9zZXRfY3IzKGdldF92dm1jcyh2LCBIT1NUX0NSMyksIGZhbHNlLCB0cnVlKTsKICAg ICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKICAgICAgICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9k b21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCkBAIC0yNzQsNiArMjc0 LDggQEAgc3RydWN0IG1vbml0b3Jfd3JpdGVfZGF0YSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBj cjQgOiAxOwogICAgIH0gZG9fd3JpdGU7CiAKKyAgICBib29sIGNyM19ub2ZsdXNoOworCiAgICAg dWludDMyX3QgbXNyOwogICAgIHVpbnQ2NF90IHZhbHVlOwogICAgIHVpbnQ2NF90IGNyMDsKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3N1cHBvcnQuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgaHZtX3NoYWRvd19o YW5kbGVfY2Qoc3RydWN0IHZjcHUgKnYKICAqLwogaW50IGh2bV9zZXRfZWZlcih1aW50NjRfdCB2 YWx1ZSk7CiBpbnQgaHZtX3NldF9jcjAodW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbCBtYXlfZGVm ZXIpOwotaW50IGh2bV9zZXRfY3IzKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2wgbWF5X2RlZmVy KTsKK2ludCBodm1fc2V0X2NyMyh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sIG5vZmx1c2gsIGJv b2wgbWF5X2RlZmVyKTsKIGludCBodm1fc2V0X2NyNCh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29s IG1heV9kZWZlcik7CiBpbnQgaHZtX2Rlc2NyaXB0b3JfYWNjZXNzX2ludGVyY2VwdCh1aW50NjRf dCBleGl0X2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCB2bXhfZXhpdF9xdWFsaWZpY2F0aW9uLAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=