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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 38749C3F68F for ; Wed, 12 Feb 2020 16:09:56 +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 F29FA2082F for ; Wed, 12 Feb 2020 16:09:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JFPn51+G" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F29FA2082F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org 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 1j1ua9-0003Rr-8o; Wed, 12 Feb 2020 16:09:45 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j1ua7-0003RC-DT for xen-devel@lists.xenproject.org; Wed, 12 Feb 2020 16:09:43 +0000 X-Inumbo-ID: 0bd48cac-4db2-11ea-ade5-bc764e2007e4 Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 0bd48cac-4db2-11ea-ade5-bc764e2007e4; Wed, 12 Feb 2020 16:09:29 +0000 (UTC) Received: by mail-wm1-x342.google.com with SMTP id t14so3153163wmi.5 for ; Wed, 12 Feb 2020 08:09:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ydWvk0smCY6uoEuwo9BlmC3I8ThSoNpZz7RCbSXh68Q=; b=JFPn51+G9Ql7ZSdKBwjRobPeLBIIoUlx1M6QqIK92YAVdMkfF0CVUMKwruBM246W64 P/k8G3bJDUCPS3vA01fjJTH3SgJ47FpXSIQrvdinzME9nMKVTDBHs9iv24ul4DCR0qwG OwV3A9iZ7nAKpwlnKejpIx85IfpGLFw1Wxb/vG+KhcM0ra86ED1cC5lVa7NDTw598xf9 wZOtYgw2W5NbhD26RQ1RRc2yCn2z1R2vchGFi4PrGP0fGR9a18vUv404LDSdt+hZj4Vt cTf+w4A0HpFK8jruv5enKUXEgwoe8a05euowC293ZamsWb63Yturn6tm5JZDph7/oPm8 NrNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ydWvk0smCY6uoEuwo9BlmC3I8ThSoNpZz7RCbSXh68Q=; b=IspWhbIa4Lr12IMV6Cgl3ORlkzLGTHmDO2R/vXgYGtgHc1LWqzuWdsJaQom3/SdJrD XzP2caweA32ArZndDD4pvnMke1PTOu2XeHPdYsePgXfTBqxdbbQW+a53b1r1UT800AgM f7RBbKmEGB9nVrk6GFQveldLbBhjbtcHQ26wvVyEpgTWsoNAJCL7thHV0IJz19l+LJ2K 7TXl9rWD7pE+C8RqbZPk8vWc1IM/6iFgBG17AJ0hNbsrHwkG7vA12VdIITn909+Nth8u MzSbKy2glcPTjptD7zPFVTuUkWDMxRFwVuAgIkHaQLQ893WrIGSZqGixQ2SU9Cin9ohj ttow== X-Gm-Message-State: APjAAAXrKSdzSZVJYGG8Ie9YmW4hPYg7TE2BGHeN7LWRSJNxcGxmuFMF Y57ywrG3ywRGxUTxU70NwdL6ws3L X-Google-Smtp-Source: APXvYqyzPBMXXPPLOqroBObFLj+zi2m4AJKiCOqpU4xeMM3zfmLKmc19nqOCXDdGEoe0Jtm2jViIOw== X-Received: by 2002:a1c:1f56:: with SMTP id f83mr13346342wmf.93.1581523766878; Wed, 12 Feb 2020 08:09:26 -0800 (PST) Received: from localhost.localdomain (41.142.6.51.dyn.plus.net. [51.6.142.41]) by smtp.gmail.com with ESMTPSA id o4sm1142500wrx.25.2020.02.12.08.09.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2020 08:09:26 -0800 (PST) From: Wei Liu X-Google-Original-From: Wei Liu To: Xen Development List Date: Wed, 12 Feb 2020 16:09:18 +0000 Message-Id: <20200212160918.18470-5-liuwe@microsoft.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200212160918.18470-1-liuwe@microsoft.com> References: <20200212160918.18470-1-liuwe@microsoft.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 4/4] x86/hyperv: L0 assisted TLB flush 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: Wei Liu , Wei Liu , Andrew Cooper , Paul Durrant , Michael Kelley , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SW1wbGVtZW50IEwwIGFzc2lzdGVkIFRMQiBmbHVzaCBmb3IgWGVuIG9uIEh5cGVyLVYuIEl0IHRh a2VzIGFkdmFudGFnZQpvZiBzZXZlcmFsIGh5cGVyY2FsbHM6CgogKiBIVkNBTExfRkxVU0hfVklS VFVBTF9BRERSRVNTX0xJU1QKICogSFZDQUxMX0ZMVVNIX1ZJUlRVQUxfQUREUkVTU19MSVNUX0VY CiAqIEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfU1BBQ0UKICogSFZDQUxMX0ZMVVNIX1ZJ UlRVQUxfQUREUkVTU19TUEFDRV9FWAoKUGljayB0aGUgbW9zdCBlZmZpY2llbnQgaHlwZXJjYWxs cyBhdmFpbGFibGUuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDxsaXV3ZUBtaWNyb3NvZnQuY29t PgotLS0KIHhlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUgIHwgICAxICsKIHhlbi9h cmNoL3g4Ni9ndWVzdC9oeXBlcnYvcHJpdmF0ZS5oIHwgICA5ICsrCiB4ZW4vYXJjaC94ODYvZ3Vl c3QvaHlwZXJ2L3RsYi5jICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4 ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYyAgICB8ICA3MiArKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYwoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvZ3Vlc3Qv aHlwZXJ2L01ha2VmaWxlCmluZGV4IDE4OTAyYzMzZTkuLjBlMzk0MTA5NjggMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2d1 ZXN0L2h5cGVydi9NYWtlZmlsZQpAQCAtMSwyICsxLDMgQEAKIG9iai15ICs9IGh5cGVydi5vCiBv YmoteSArPSB0bGIubworb2JqLXkgKz0gdXRpbC5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv Z3Vlc3QvaHlwZXJ2L3ByaXZhdGUuaCBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvcHJpdmF0 ZS5oCmluZGV4IDc4ZTUyZjc0Y2UuLjMxMWYwNjA0OTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9ndWVzdC9oeXBlcnYvcHJpdmF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYv cHJpdmF0ZS5oCkBAIC0yNCwxMiArMjQsMjEgQEAKIAogI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+ CiAjaW5jbHVkZSA8eGVuL3BlcmNwdS5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgogCiBERUNM QVJFX1BFUl9DUFUodm9pZCAqLCBodl9pbnB1dF9wYWdlKTsKIERFQ0xBUkVfUEVSX0NQVSh2b2lk ICosIGh2X3ZwX2Fzc2lzdCk7CiBERUNMQVJFX1BFUl9DUFUodWludDMyX3QsIGh2X3ZwX2luZGV4 KTsKIAorc3RhdGljIGlubGluZSB1aW50MzJfdCBodl92cF9pbmRleChpbnQgY3B1KQoreworICAg IHJldHVybiBwZXJfY3B1KGh2X3ZwX2luZGV4LCBjcHUpOworfQorCiBpbnQgaHlwZXJ2X2ZsdXNo X3RsYihjb25zdCBjcHVtYXNrX3QgKm1hc2ssIGNvbnN0IHZvaWQgKnZhLAogICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKIAorLyogUmV0dXJucyBudW1iZXIgb2YgYmFu a3MsIC1ldiBpZiBlcnJvciAqLworaW50IGNwdW1hc2tfdG9fdnBzZXQoc3RydWN0IGh2X3Zwc2V0 ICp2cHNldCwgY29uc3QgY3B1bWFza190ICptYXNrKTsKKwogI2VuZGlmIC8qIF9fWEVOX0hZUEVS Vl9QUklWSUFURV9IX18gICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2 L3RsYi5jIGIveGVuL2FyY2gveDg2L2d1ZXN0L2h5cGVydi90bGIuYwppbmRleCA0OGY1MjcyMjll Li45OWI3ODlkOWU5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3RsYi5j CisrKyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdGxiLmMKQEAgLTE5LDE1ICsxOSwxODUg QEAKICAqIENvcHlyaWdodCAoYykgMjAyMCBNaWNyb3NvZnQuCiAgKi8KIAorI2luY2x1ZGUgPHhl bi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vY3B1bWFzay5oPgogI2luY2x1ZGUgPHhlbi9lcnJuby5o PgogCisjaW5jbHVkZSA8YXNtL2d1ZXN0L2h5cGVydi5oPgorI2luY2x1ZGUgPGFzbS9ndWVzdC9o eXBlcnYtaGNhbGwuaD4KKyNpbmNsdWRlIDxhc20vZ3Vlc3QvaHlwZXJ2LXRsZnMuaD4KKwogI2lu Y2x1ZGUgInByaXZhdGUuaCIKIAorLyoKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGVuY29kZSB1cCB0 byA0MDk2IHBhZ2VzIHVzaW5nIHRoZSBsb3dlciAxMiBiaXRzCisgKiBpbiBhbiBlbGVtZW50IG9m IGd2YV9saXN0CisgKi8KKyNkZWZpbmUgSFZfVExCX0ZMVVNIX1VOSVQgKDQwOTYgKiBQQUdFX1NJ WkUpCisjZGVmaW5lIE9SREVSX1RPX0JZVEVTKG9yZGVyKSAoKDF1bCA8PCAob3JkZXIpKSAqIFBB R0VfU0laRSkKKworc3RhdGljIHVuc2lnbmVkIGludCBmaWxsX2d2YV9saXN0KHVpbnQ2NF90ICpn dmFfbGlzdCwgY29uc3Qgdm9pZCAqdmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IG9yZGVyKQoreworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQgPSAodW5z aWduZWQgbG9uZyl2YTsKKyAgICB1bnNpZ25lZCBsb25nIGVuZCA9IHN0YXJ0ICsgT1JERVJfVE9f QllURVMob3JkZXIpIC0gMTsKKyAgICB1bnNpZ25lZCBpbnQgbiA9IDA7CisKKyAgICBkbyB7Cisg ICAgICAgIHVuc2lnbmVkIGxvbmcgcmVtYWluID0gZW5kID4gc3RhcnQgPyBlbmQgLSBzdGFydCA6 IDA7CisKKyAgICAgICAgZ3ZhX2xpc3Rbbl0gPSBzdGFydCAmIFBBR0VfTUFTSzsKKworICAgICAg ICAvKgorICAgICAgICAgKiBVc2UgbG93ZXIgMTIgYml0cyB0byBlbmNvZGUgdGhlIG51bWJlciBv ZiBhZGRpdGlvbmFsIHBhZ2VzCisgICAgICAgICAqIHRvIGZsdXNoCisgICAgICAgICAqLworICAg ICAgICBpZiAoIHJlbWFpbiA+PSBIVl9UTEJfRkxVU0hfVU5JVCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGd2YV9saXN0W25dIHw9IH5QQUdFX01BU0s7CisgICAgICAgICAgICBzdGFydCArPSBI Vl9UTEJfRkxVU0hfVU5JVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggcmVtYWluICkK KyAgICAgICAgeworICAgICAgICAgICAgZ3ZhX2xpc3Rbbl0gfD0gKHJlbWFpbiAtIDEpID4+IFBB R0VfU0hJRlQ7CisgICAgICAgICAgICBzdGFydCA9IGVuZDsKKyAgICAgICAgfQorCisgICAgICAg IG4rKzsKKyAgICB9IHdoaWxlICggc3RhcnQgPCBlbmQgKTsKKworICAgIHJldHVybiBuOworfQor CitzdGF0aWMgdWludDY0X3QgZmx1c2hfdGxiX2V4KGNvbnN0IGNwdW1hc2tfdCAqbWFzaywgY29u c3Qgdm9pZCAqdmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBm bGFncykKK3sKKyAgICBzdHJ1Y3QgaHZfdGxiX2ZsdXNoX2V4ICpmbHVzaCA9IHRoaXNfY3B1KGh2 X2lucHV0X3BhZ2UpOworICAgIGludCBucl9iYW5rczsKKyAgICB1bnNpZ25lZCBpbnQgbWF4X2d2 YXM7CisgICAgdW5zaWduZWQgaW50IG9yZGVyID0gZmxhZ3MgJiBGTFVTSF9PUkRFUl9NQVNLOwor ICAgIHVpbnQ2NF90IHJldDsKKworICAgIEFTU0VSVChmbHVzaCk7CisgICAgQVNTRVJUKCFsb2Nh bF9pcnFfaXNfZW5hYmxlZCgpKTsKKworICAgIGlmICggIShtc19oeXBlcnYuaGludHMgJiBIVl9Y NjRfRVhfUFJPQ0VTU09SX01BU0tTX1JFQ09NTUVOREVEKSApCisgICAgICAgIHJldHVybiB+MFVM TDsKKworICAgIGZsdXNoLT5hZGRyZXNzX3NwYWNlID0gMDsKKyAgICBmbHVzaC0+ZmxhZ3MgPSBI Vl9GTFVTSF9BTExfVklSVFVBTF9BRERSRVNTX1NQQUNFUzsKKyAgICBpZiAoICEoZmxhZ3MgJiBG TFVTSF9UTEJfR0xPQkFMKSApCisgICAgICAgIGZsdXNoLT5mbGFncyB8PSBIVl9GTFVTSF9OT05f R0xPQkFMX01BUFBJTkdTX09OTFk7CisKKyAgICBmbHVzaC0+aHZfdnBfc2V0LnZhbGlkX2Jhbmtf bWFzayA9IDA7CisgICAgZmx1c2gtPmh2X3ZwX3NldC5mb3JtYXQgPSBIVl9HRU5FUklDX1NFVF9T UEFSU0VfNEs7CisKKyAgICBucl9iYW5rcyA9IGNwdW1hc2tfdG9fdnBzZXQoJmZsdXNoLT5odl92 cF9zZXQsIG1hc2spOworICAgIGlmICggbnJfYmFua3MgPCAwICkKKyAgICAgICAgcmV0dXJuIH4w VUxMOworCisgICAgbWF4X2d2YXMgPQorICAgICAgICAoUEFHRV9TSVpFIC0gc2l6ZW9mKCpmbHVz aCkgLSBucl9iYW5rcyAqCisgICAgICAgICBzaXplb2YoZmx1c2gtPmh2X3ZwX3NldC5iYW5rX2Nv bnRlbnRzWzBdKSkgLworICAgICAgICBzaXplb2YodWludDY0X3QpOyAgICAgICAvKiBndmEgaXMg cmVwcmVzZW50ZWQgYXMgdWludDY0X3QgKi8KKworICAgIC8qCisgICAgICogRmx1c2ggdGhlIGVu dGlyZSBhZGRyZXNzIHNwYWNlIGlmIHZhIGlzIE5VTEwgb3IgaWYgdGhlcmUgaXMgbm90CisgICAg ICogZW5vdWdoIHNwYWNlIGZvciBndmFfbGlzdC4KKyAgICAgKi8KKyAgICBpZiAoICF2YSB8fCAo T1JERVJfVE9fQllURVMob3JkZXIpIC8gSFZfVExCX0ZMVVNIX1VOSVQpID4gbWF4X2d2YXMgKQor ICAgICAgICByZXQgPSBodl9kb19yZXBfaHlwZXJjYWxsKEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FE RFJFU1NfU1BBQ0VfRVgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJf YmFua3MsIHZpcnRfdG9fbWFkZHIoZmx1c2gpLCAwKTsKKyAgICBlbHNlCisgICAgeworICAgICAg ICB1aW50NjRfdCAqZ3ZhX2xpc3QgPSAodWludDY0X3QgKilmbHVzaCArIHNpemVvZigqZmx1c2gp ICsgbnJfYmFua3M7CisgICAgICAgIHVuc2lnbmVkIGludCBndmFzID0gZmlsbF9ndmFfbGlzdChn dmFfbGlzdCwgdmEsIG9yZGVyKTsKKworICAgICAgICByZXQgPSBodl9kb19yZXBfaHlwZXJjYWxs KEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfTElTVF9FWCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndmFzLCBucl9iYW5rcywgdmlydF90b19tYWRkcihmbHVzaCksIDAp OworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKIGludCBoeXBlcnZfZmx1c2hfdGxiKGNv bnN0IGNwdW1hc2tfdCAqbWFzaywgY29uc3Qgdm9pZCAqdmEsCiAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIC1FT1BOT1RTVVBQOworICAgIHVu c2lnbmVkIGxvbmcgaXJxX2ZsYWdzOworICAgIHN0cnVjdCBodl90bGJfZmx1c2ggKmZsdXNoID0g dGhpc19jcHUoaHZfaW5wdXRfcGFnZSk7CisgICAgdWludDY0X3QgcmV0OworICAgIHVuc2lnbmVk IGludCBvcmRlciA9IGZsYWdzICYgRkxVU0hfT1JERVJfTUFTSzsKKyAgICB1bnNpZ25lZCBpbnQg bWF4X2d2YXM7CisKKyAgICBBU1NFUlQoZmx1c2gpOworICAgIEFTU0VSVCghY3B1bWFza19lbXB0 eShtYXNrKSk7CisKKyAgICBsb2NhbF9pcnFfc2F2ZShpcnFfZmxhZ3MpOworCisgICAgZmx1c2gt PmFkZHJlc3Nfc3BhY2UgPSAwOworICAgIGZsdXNoLT5mbGFncyA9IEhWX0ZMVVNIX0FMTF9WSVJU VUFMX0FERFJFU1NfU1BBQ0VTOworICAgIGZsdXNoLT5wcm9jZXNzb3JfbWFzayA9IDA7CisgICAg aWYgKCAhKGZsYWdzICYgRkxVU0hfVExCX0dMT0JBTCkgKQorICAgICAgICBmbHVzaC0+ZmxhZ3Mg fD0gSFZfRkxVU0hfTk9OX0dMT0JBTF9NQVBQSU5HU19PTkxZOworCisgICAgaWYgKCBjcHVtYXNr X2VxdWFsKG1hc2ssICZjcHVfb25saW5lX21hcCkgKQorICAgICAgICBmbHVzaC0+ZmxhZ3MgfD0g SFZfRkxVU0hfQUxMX1BST0NFU1NPUlM7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW50IGNw dTsKKworICAgICAgICAvKgorICAgICAgICAgKiBOb3JtYWxseSBWUCBpbmRpY2VzIGFyZSBpbiBh c2NlbmRpbmcgb3JkZXIgYW5kIG1hdGNoIFhlbidzCisgICAgICAgICAqIGlkZWEgb2YgQ1BVIGlk cy4gQ2hlY2sgdGhlIGxhc3QgaW5kZXggdG8gc2VlIGlmIFZQIGluZGV4IGlzCisgICAgICAgICAq ID49IDY0LiBJZiBzbywgd2UgY2FuIHNraXAgc2V0dGluZyB1cCBwYXJhbWV0ZXJzIGZvcgorICAg ICAgICAgKiBub24tYXBwbGljYWJsZSBoeXBlcmNhbGxzIHdpdGhvdXQgbG9va2luZyBmdXJ0aGVy LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBodl92cF9pbmRleChjcHVtYXNrX2xhc3QobWFz aykpID49IDY0ICkKKyAgICAgICAgICAgIGdvdG8gZG9fZXhfaHlwZXJjYWxsOworCisgICAgICAg IGZvcl9lYWNoX2NwdSAoIGNwdSwgbWFzayApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQz Ml90IHZwaWQgPSBodl92cF9pbmRleChjcHUpOworCisgICAgICAgICAgICBpZiAoIHZwaWQgPiBt c19oeXBlcnYubWF4X3ZwX2luZGV4ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBs b2NhbF9pcnFfcmVzdG9yZShpcnFfZmxhZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiAtRU5Y SU87CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggdnBpZCA+PSA2NCApCisgICAg ICAgICAgICAgICAgZ290byBkb19leF9oeXBlcmNhbGw7CisKKyAgICAgICAgICAgIF9fc2V0X2Jp dCh2cGlkLCAmZmx1c2gtPnByb2Nlc3Nvcl9tYXNrKTsKKyAgICAgICAgfQorICAgIH0KKworICAg IG1heF9ndmFzID0gKFBBR0VfU0laRSAtIHNpemVvZigqZmx1c2gpKSAvIHNpemVvZihmbHVzaC0+ Z3ZhX2xpc3RbMF0pOworCisgICAgLyoKKyAgICAgKiBGbHVzaCB0aGUgZW50aXJlIGFkZHJlc3Mg c3BhY2UgaWYgdmEgaXMgTlVMTCBvciBpZiB0aGVyZSBpcyBub3QKKyAgICAgKiBlbm91Z2ggc3Bh Y2UgZm9yIGd2YV9saXN0LgorICAgICAqLworICAgIGlmICggIXZhIHx8IChPUkRFUl9UT19CWVRF UyhvcmRlcikgLyBIVl9UTEJfRkxVU0hfVU5JVCkgPiBtYXhfZ3ZhcyApCisgICAgICAgIHJldCA9 IGh2X2RvX2h5cGVyY2FsbChIVkNBTExfRkxVU0hfVklSVFVBTF9BRERSRVNTX1NQQUNFLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydF90b19tYWRkcihmbHVzaCksIDApOworICAg IGVsc2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBndmFzID0gZmlsbF9ndmFfbGlzdChm bHVzaC0+Z3ZhX2xpc3QsIHZhLCBvcmRlcik7CisKKyAgICAgICAgcmV0ID0gaHZfZG9fcmVwX2h5 cGVyY2FsbChIVkNBTExfRkxVU0hfVklSVFVBTF9BRERSRVNTX0xJU1QsIGd2YXMsIDAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydF90b19tYWRkcihmbHVzaCksIDApOwor ICAgIH0KKworICAgIGdvdG8gZG9uZTsKKworIGRvX2V4X2h5cGVyY2FsbDoKKyAgICByZXQgPSBm bHVzaF90bGJfZXgobWFzaywgdmEsIGZsYWdzKTsKKworIGRvbmU6CisgICAgbG9jYWxfaXJxX3Jl c3RvcmUoaXJxX2ZsYWdzKTsKKworICAgIHJldHVybiByZXQgJiBIVl9IWVBFUkNBTExfUkVTVUxU X01BU0s7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0 aWwuYyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjlkMGI1ZjRhNDYKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4v YXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYwpAQCAtMCwwICsxLDcyIEBACisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiBhcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdXRpbC5jCisgKgorICogSHlw ZXItViB1dGlsaXR5IGZ1bmN0aW9ucworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgTWljcm9zb2Z0LgorICovCisKKyNpbmNsdWRlIDx4 ZW4vY3B1Lmg+CisjaW5jbHVkZSA8eGVuL2NwdW1hc2suaD4KKyNpbmNsdWRlIDx4ZW4vZXJybm8u aD4KKworI2luY2x1ZGUgPGFzbS9ndWVzdC9oeXBlcnYuaD4KKyNpbmNsdWRlIDxhc20vZ3Vlc3Qv aHlwZXJ2LXRsZnMuaD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIKKworaW50IGNwdW1hc2tfdG9f dnBzZXQoc3RydWN0IGh2X3Zwc2V0ICp2cHNldCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNwdW1hc2tfdCAqbWFzaykKK3sKKyAgICBpbnQgbnIgPSAxLCBjcHUsIHZjcHVfYmFuaywgdmNw dV9vZmZzZXQ7CisgICAgaW50IG1heF9iYW5rcyA9IG1zX2h5cGVydi5tYXhfdnBfaW5kZXggLyA2 NDsKKworICAgIC8qIFVwIHRvIDY0IGJhbmtzIGNhbiBiZSByZXByZXNlbnRlZCBieSB2YWxpZF9i YW5rX21hc2sgKi8KKyAgICBpZiAoIG1heF9iYW5rcyA+PSA2NCApCisgICAgICAgIHJldHVybiAt MTsKKworICAgIC8qIENsZWFyIGFsbCBiYW5rcyB0byBhdm9pZCBmbHVzaGluZyB1bndhbnRlZCBD UFVzICovCisgICAgZm9yICggdmNwdV9iYW5rID0gMDsgdmNwdV9iYW5rIDw9IG1heF9iYW5rczsg dmNwdV9iYW5rKysgKQorICAgICAgICB2cHNldC0+YmFua19jb250ZW50c1t2Y3B1X2JhbmtdID0g MDsKKworICAgIHZwc2V0LT52YWxpZF9iYW5rX21hc2sgPSAwOworCisgICAgZm9yX2VhY2hfY3B1 ICggY3B1LCBtYXNrICkKKyAgICB7CisgICAgICAgIGludCB2Y3B1ID0gaHZfdnBfaW5kZXgoY3B1 KTsKKworICAgICAgICB2Y3B1X2JhbmsgPSB2Y3B1IC8gNjQ7CisgICAgICAgIHZjcHVfb2Zmc2V0 ID0gdmNwdSAlIDY0OworCisgICAgICAgIF9fc2V0X2JpdCh2Y3B1X29mZnNldCwgJnZwc2V0LT5i YW5rX2NvbnRlbnRzW3ZjcHVfYmFua10pOworICAgICAgICBfX3NldF9iaXQodmNwdV9iYW5rLCAm dnBzZXQtPnZhbGlkX2JhbmtfbWFzayk7CisKKyAgICAgICAgaWYgKCB2Y3B1X2JhbmsgPj0gbnIg KQorICAgICAgICAgICAgbnIgPSB2Y3B1X2JhbmsgKyAxOworICAgIH0KKworICAgIHJldHVybiBu cjsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1z dHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGlu ZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjIwLjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs