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 EF9F5C2BA83 for ; Fri, 14 Feb 2020 12:35:05 +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 B5B4B2086A for ; Fri, 14 Feb 2020 12:35:05 +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="hFddJPND" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B5B4B2086A 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 1j2aBH-0007Z4-Cy; Fri, 14 Feb 2020 12:34:51 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j2aBF-0007Ye-LN for xen-devel@lists.xenproject.org; Fri, 14 Feb 2020 12:34:49 +0000 X-Inumbo-ID: 5c880884-4f26-11ea-aa99-bc764e2007e4 Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 5c880884-4f26-11ea-aa99-bc764e2007e4; Fri, 14 Feb 2020 12:34:37 +0000 (UTC) Received: by mail-wm1-x344.google.com with SMTP id t14so10424293wmi.5 for ; Fri, 14 Feb 2020 04:34:37 -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=+1+MTAURnPdy1Sl54EjqJNtO3w81gXNmMRrxIvoU2M8=; b=hFddJPNDShFrLJ2aAMZng+PvtGlJRBr9LyI89/4IjLysdJTspkOfGOWvTu9W3iKFvM bswtmY5e8JJmwp1xKJLoVsFWK8ItKAdTTWMik07GijveRoM6zP12yKnf5x06lOyYQyXf 4L5/B3CFUupS13W74nNdA083RyO07bM01tLdnx2BAT2Xh+FfrWk2lw1LGnDGYXwkVVHs U1b9UnvuwbZ8CcpToOOi+BPlaVJTpsE6mPFSVYS01JvBUEmYaQvouf61iSh9P8DvjQP9 /Y9yHO96OpCXlppeIiMadepr1W/8gSUVZXh4vLFqxMbp2mG6asUvXVNwY5kTagvwlxx3 pAEA== 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=+1+MTAURnPdy1Sl54EjqJNtO3w81gXNmMRrxIvoU2M8=; b=ZwjLxvJFfjW7+q1HSuru6mp4c213hE7P5itxEtLbWns5wZfcxxDQ5gDBZmqsAutfUD lsPwMoADv0zinTnBiTV2Yntx3EejR3ENo5mOTKeLRmgLDZYjRJimX7J9l5SeHtoykd3n cFsOSBNWbPwopgT+aVLANwOpb+nG+hWXZjtJ9j0bBUaouemYuX+4bMzQNHCO8aHcovW4 YvJGieikZ6JyM5WjKjqc20TRv0iTI57FA2025WrV8QFlPLpI7I6ETaSKVudcGpeF+r2U J02zmxGA+IK0G+YM+ekbs/miT7/abURbwpTI45bxjlxLhph0kUf+qvNMu/K0jTTQd1eZ vZwA== X-Gm-Message-State: APjAAAUnl97gwHeE+ksPon9iRWQWXZ+CoMKlJOHjp0q387vxyjYypDkZ kDm1T3PQLw1yviozcpSq/Nj/rKnJq5k= X-Google-Smtp-Source: APXvYqwyXoGKM2xf8m5PoOsFxW88JXCWegLhUPxwbN9TT61KFEwSs1BzLWuN3dEweOvYn3j4j1zSeQ== X-Received: by 2002:a05:600c:d5:: with SMTP id u21mr4529554wmm.98.1581683676009; Fri, 14 Feb 2020 04:34:36 -0800 (PST) Received: from localhost.localdomain (41.142.6.51.dyn.plus.net. [51.6.142.41]) by smtp.gmail.com with ESMTPSA id x11sm7035566wmg.46.2020.02.14.04.34.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2020 04:34:35 -0800 (PST) From: Wei Liu X-Google-Original-From: Wei Liu To: Xen Development List Date: Fri, 14 Feb 2020 12:34:30 +0000 Message-Id: <20200214123430.4942-4-liuwe@microsoft.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200214123430.4942-1-liuwe@microsoft.com> References: <20200214123430.4942-1-liuwe@microsoft.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 3/3] 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 PgotLS0KdjI6CjEuIEFkZHJlc3MgUm9nZXIgYW5kIEphbidzIGNvbW1lbnRzIHJlIHR5cGVzIGV0 Yy4KMi4gRml4IHBvaW50ZXIgYXJpdGhtZXRpYy4KMy4gTWlzYyBpbXByb3ZlbWVudCB0byBjb2Rl LgotLS0KIHhlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUgIHwgICAxICsKIHhlbi9h cmNoL3g4Ni9ndWVzdC9oeXBlcnYvcHJpdmF0ZS5oIHwgICA5ICsrCiB4ZW4vYXJjaC94ODYvZ3Vl c3QvaHlwZXJ2L3RsYi5jICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4 ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYyAgICB8ICA3NCArKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgMjU1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYwoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvZ3Vlc3Qv aHlwZXJ2L01ha2VmaWxlCmluZGV4IDE4OTAyYzMzZTkuLjBlMzk0MTA5NjggMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2d1 ZXN0L2h5cGVydi9NYWtlZmlsZQpAQCAtMSwyICsxLDMgQEAKIG9iai15ICs9IGh5cGVydi5vCiBv YmoteSArPSB0bGIubworb2JqLXkgKz0gdXRpbC5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv Z3Vlc3QvaHlwZXJ2L3ByaXZhdGUuaCBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvcHJpdmF0 ZS5oCmluZGV4IDUwOWJlZGFhZmEuLjc5YTc3OTMwYTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9ndWVzdC9oeXBlcnYvcHJpdmF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYv cHJpdmF0ZS5oCkBAIC0yNCwxMiArMjQsMjEgQEAKIAogI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+ CiAjaW5jbHVkZSA8eGVuL3BlcmNwdS5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgogCiBERUNM QVJFX1BFUl9DUFUodm9pZCAqLCBodl9pbnB1dF9wYWdlKTsKIERFQ0xBUkVfUEVSX0NQVSh2b2lk ICosIGh2X3ZwX2Fzc2lzdCk7CiBERUNMQVJFX1BFUl9DUFUodW5zaWduZWQgaW50LCBodl92cF9p bmRleCk7CiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGh2X3ZwX2luZGV4KHVuc2lnbmVk IGludCBjcHUpCit7CisgICAgcmV0dXJuIHBlcl9jcHUoaHZfdnBfaW5kZXgsIGNwdSk7Cit9CisK IGludCBoeXBlcnZfZmx1c2hfdGxiKGNvbnN0IGNwdW1hc2tfdCAqbWFzaywgY29uc3Qgdm9pZCAq dmEsCiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCisvKiBSZXR1 cm5zIG51bWJlciBvZiBiYW5rcywgLWV2IGlmIGVycm9yICovCitpbnQgY3B1bWFza190b192cHNl dChzdHJ1Y3QgaHZfdnBzZXQgKnZwc2V0LCBjb25zdCBjcHVtYXNrX3QgKm1hc2spOworCiAjZW5k aWYgLyogX19YRU5fSFlQRVJWX1BSSVZJQVRFX0hfXyAgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9ndWVzdC9oeXBlcnYvdGxiLmMgYi94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3RsYi5j CmluZGV4IDQ4ZjUyNzIyOWUuLmY2OGUxNGYxNTEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9n dWVzdC9oeXBlcnYvdGxiLmMKKysrIGIveGVuL2FyY2gveDg2L2d1ZXN0L2h5cGVydi90bGIuYwpA QCAtMTksMTUgKzE5LDE4NSBAQAogICogQ29weXJpZ2h0IChjKSAyMDIwIE1pY3Jvc29mdC4KICAq LwogCisjaW5jbHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+CiAjaW5j bHVkZSA8eGVuL2Vycm5vLmg+CiAKKyNpbmNsdWRlIDxhc20vZ3Vlc3QvaHlwZXJ2Lmg+CisjaW5j bHVkZSA8YXNtL2d1ZXN0L2h5cGVydi1oY2FsbC5oPgorI2luY2x1ZGUgPGFzbS9ndWVzdC9oeXBl cnYtdGxmcy5oPgorCiAjaW5jbHVkZSAicHJpdmF0ZS5oIgogCisvKgorICogSXQgaXMgcG9zc2li bGUgdG8gZW5jb2RlIHVwIHRvIDQwOTYgcGFnZXMgdXNpbmcgdGhlIGxvd2VyIDEyIGJpdHMKKyAq IGluIGFuIGVsZW1lbnQgb2YgZ3ZhX2xpc3QKKyAqLworI2RlZmluZSBIVl9UTEJfRkxVU0hfVU5J VCAoNDA5NiAqIFBBR0VfU0laRSkKKworc3RhdGljIHVuc2lnbmVkIGludCBmaWxsX2d2YV9saXN0 KHVpbnQ2NF90ICpndmFfbGlzdCwgY29uc3Qgdm9pZCAqdmEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9yZGVyKQoreworICAgIHVuc2lnbmVkIGxvbmcg c3RhcnQgPSAodW5zaWduZWQgbG9uZyl2YTsKKyAgICB1bnNpZ25lZCBsb25nIGVuZCA9IHN0YXJ0 ICsgKFBBR0VfU0laRSA8PCBvcmRlcikgLSAxOworICAgIHVuc2lnbmVkIGludCBuID0gMDsKKwor ICAgIGRvIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyByZW1haW4gPSBlbmQgLSBzdGFydDsKKwor ICAgICAgICBndmFfbGlzdFtuXSA9IHN0YXJ0ICYgUEFHRV9NQVNLOworCisgICAgICAgIC8qCisg ICAgICAgICAqIFVzZSBsb3dlciAxMiBiaXRzIHRvIGVuY29kZSB0aGUgbnVtYmVyIG9mIGFkZGl0 aW9uYWwgcGFnZXMKKyAgICAgICAgICogdG8gZmx1c2gKKyAgICAgICAgICovCisgICAgICAgIGlm ICggcmVtYWluID49IEhWX1RMQl9GTFVTSF9VTklUICkKKyAgICAgICAgeworICAgICAgICAgICAg Z3ZhX2xpc3Rbbl0gfD0gflBBR0VfTUFTSzsKKyAgICAgICAgICAgIHN0YXJ0ICs9IEhWX1RMQl9G TFVTSF9VTklUOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCByZW1haW4gKQorICAgICAg ICB7CisgICAgICAgICAgICBndmFfbGlzdFtuXSB8PSAocmVtYWluIC0gMSkgPj4gUEFHRV9TSElG VDsKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kOworICAgICAgICB9CisKKyAgICAgICAgbisrOwor ICAgIH0gd2hpbGUgKCBzdGFydCA8IGVuZCApOworCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRp YyB1aW50NjRfdCBmbHVzaF90bGJfZXgoY29uc3QgY3B1bWFza190ICptYXNrLCBjb25zdCB2b2lk ICp2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQor eworICAgIHN0cnVjdCBodl90bGJfZmx1c2hfZXggKmZsdXNoID0gdGhpc19jcHUoaHZfaW5wdXRf cGFnZSk7CisgICAgaW50IG5yX2JhbmtzOworICAgIHVuc2lnbmVkIGludCBtYXhfZ3Zhcywgb3Jk ZXIgPSBmbGFncyAmIEZMVVNIX09SREVSX01BU0s7CisgICAgdWludDY0X3QgcmV0OworCisgICAg aWYgKCAhZmx1c2ggfHwgbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSApCisgICAgeworICAgICAgICBB U1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIH4wVUxMOworICAgIH0KKworICAg IGlmICggIShtc19oeXBlcnYuaGludHMgJiBIVl9YNjRfRVhfUFJPQ0VTU09SX01BU0tTX1JFQ09N TUVOREVEKSApCisgICAgICAgIHJldHVybiB+MFVMTDsKKworICAgIGZsdXNoLT5hZGRyZXNzX3Nw YWNlID0gMDsKKyAgICBmbHVzaC0+ZmxhZ3MgPSBIVl9GTFVTSF9BTExfVklSVFVBTF9BRERSRVNT X1NQQUNFUzsKKyAgICBpZiAoICEoZmxhZ3MgJiBGTFVTSF9UTEJfR0xPQkFMKSApCisgICAgICAg IGZsdXNoLT5mbGFncyB8PSBIVl9GTFVTSF9OT05fR0xPQkFMX01BUFBJTkdTX09OTFk7CisKKyAg ICBucl9iYW5rcyA9IGNwdW1hc2tfdG9fdnBzZXQoJmZsdXNoLT5odl92cF9zZXQsIG1hc2spOwor ICAgIGlmICggbnJfYmFua3MgPCAwICkKKyAgICAgICAgcmV0dXJuIH4wVUxMOworCisgICAgbWF4 X2d2YXMgPQorICAgICAgICAoUEFHRV9TSVpFIC0gc2l6ZW9mKCpmbHVzaCkgLSBucl9iYW5rcyAq CisgICAgICAgICBzaXplb2YoZmx1c2gtPmh2X3ZwX3NldC5iYW5rX2NvbnRlbnRzWzBdKSkgLwor ICAgICAgICBzaXplb2YodWludDY0X3QpOyAgICAgICAvKiBndmEgaXMgcmVwcmVzZW50ZWQgYXMg dWludDY0X3QgKi8KKworICAgIC8qCisgICAgICogRmx1c2ggdGhlIGVudGlyZSBhZGRyZXNzIHNw YWNlIGlmIHZhIGlzIE5VTEwgb3IgaWYgdGhlcmUgaXMgbm90CisgICAgICogZW5vdWdoIHNwYWNl IGZvciBndmFfbGlzdC4KKyAgICAgKi8KKyAgICBpZiAoICF2YSB8fCAoUEFHRV9TSVpFIDw8IG9y ZGVyKSAvIEhWX1RMQl9GTFVTSF9VTklUID4gbWF4X2d2YXMgKQorICAgICAgICByZXQgPSBodl9k b19yZXBfaHlwZXJjYWxsKEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfU1BBQ0VfRVgsIDAs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJfYmFua3MsIHZpcnRfdG9fbWFk ZHIoZmx1c2gpLCAwKTsKKyAgICBlbHNlCisgICAgeworICAgICAgICB1aW50NjRfdCAqZ3ZhX2xp c3QgPQorICAgICAgICAgICAgKHVpbnQ2NF90ICopZmx1c2ggKyBzaXplb2YoKmZsdXNoKSAvIHNp emVvZih1aW50NjRfdCkgKyBucl9iYW5rczsKKyAgICAgICAgdW5zaWduZWQgaW50IGd2YXMgPSBm aWxsX2d2YV9saXN0KGd2YV9saXN0LCB2YSwgb3JkZXIpOworCisgICAgICAgIEJVSUxEX0JVR19P TihzaXplb2YoKmZsdXNoKSAlIHNpemVvZih1aW50NjRfdCkpOworCisgICAgICAgIHJldCA9IGh2 X2RvX3JlcF9oeXBlcmNhbGwoSFZDQUxMX0ZMVVNIX1ZJUlRVQUxfQUREUkVTU19MSVNUX0VYLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd2YXMsIG5yX2JhbmtzLCB2aXJ0X3Rv X21hZGRyKGZsdXNoKSwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwogaW50IGh5 cGVydl9mbHVzaF90bGIoY29uc3QgY3B1bWFza190ICptYXNrLCBjb25zdCB2b2lkICp2YSwKICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKLSAgICByZXR1cm4gLUVP UE5PVFNVUFA7CisgICAgdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7CisgICAgc3RydWN0IGh2X3Rs Yl9mbHVzaCAqZmx1c2ggPSB0aGlzX2NwdShodl9pbnB1dF9wYWdlKTsKKyAgICB1bnNpZ25lZCBp bnQgbWF4X2d2YXMsIG9yZGVyID0gZmxhZ3MgJiBGTFVTSF9PUkRFUl9NQVNLOworICAgIHVpbnQ2 NF90IHJldDsKKworICAgIEFTU0VSVChmbHVzaCk7CisgICAgQVNTRVJUKCFjcHVtYXNrX2VtcHR5 KG1hc2spKTsKKworICAgIGxvY2FsX2lycV9zYXZlKGlycV9mbGFncyk7CisKKyAgICBmbHVzaC0+ YWRkcmVzc19zcGFjZSA9IDA7CisgICAgZmx1c2gtPmZsYWdzID0gSFZfRkxVU0hfQUxMX1ZJUlRV QUxfQUREUkVTU19TUEFDRVM7CisgICAgZmx1c2gtPnByb2Nlc3Nvcl9tYXNrID0gMDsKKyAgICBp ZiAoICEoZmxhZ3MgJiBGTFVTSF9UTEJfR0xPQkFMKSApCisgICAgICAgIGZsdXNoLT5mbGFncyB8 PSBIVl9GTFVTSF9OT05fR0xPQkFMX01BUFBJTkdTX09OTFk7CisKKyAgICBpZiAoIGNwdW1hc2tf ZXF1YWwobWFzaywgJmNwdV9vbmxpbmVfbWFwKSApCisgICAgICAgIGZsdXNoLT5mbGFncyB8PSBI Vl9GTFVTSF9BTExfUFJPQ0VTU09SUzsKKyAgICBlbHNlCisgICAgeworICAgICAgICB1bnNpZ25l ZCBpbnQgY3B1OworCisgICAgICAgIC8qCisgICAgICAgICAqIE5vcm1hbGx5IFZQIGluZGljZXMg YXJlIGluIGFzY2VuZGluZyBvcmRlciBhbmQgbWF0Y2ggWGVuJ3MKKyAgICAgICAgICogaWRlYSBv ZiBDUFUgaWRzLiBDaGVjayB0aGUgbGFzdCBpbmRleCB0byBzZWUgaWYgVlAgaW5kZXggaXMKKyAg ICAgICAgICogPj0gNjQuIElmIHNvLCB3ZSBjYW4gc2tpcCBzZXR0aW5nIHVwIHBhcmFtZXRlcnMg Zm9yCisgICAgICAgICAqIG5vbi1hcHBsaWNhYmxlIGh5cGVyY2FsbHMgd2l0aG91dCBsb29raW5n IGZ1cnRoZXIuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGh2X3ZwX2luZGV4KGNwdW1hc2tf bGFzdChtYXNrKSkgPj0gNjQgKQorICAgICAgICAgICAgZ290byBkb19leF9oeXBlcmNhbGw7CisK KyAgICAgICAgZm9yX2VhY2hfY3B1ICggY3B1LCBtYXNrICkKKyAgICAgICAgeworICAgICAgICAg ICAgdWludDMyX3QgdnBpZCA9IGh2X3ZwX2luZGV4KGNwdSk7CisKKyAgICAgICAgICAgIGlmICgg dnBpZCA+IG1zX2h5cGVydi5tYXhfdnBfaW5kZXggKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgIGxvY2FsX2lycV9yZXN0b3JlKGlycV9mbGFncyk7CisgICAgICAgICAgICAgICAgcmV0 dXJuIC1FTlhJTzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCB2cGlkID49IDY0 ICkKKyAgICAgICAgICAgICAgICBnb3RvIGRvX2V4X2h5cGVyY2FsbDsKKworICAgICAgICAgICAg X19zZXRfYml0KHZwaWQsICZmbHVzaC0+cHJvY2Vzc29yX21hc2spOworICAgICAgICB9CisgICAg fQorCisgICAgbWF4X2d2YXMgPSAoUEFHRV9TSVpFIC0gc2l6ZW9mKCpmbHVzaCkpIC8gc2l6ZW9m KGZsdXNoLT5ndmFfbGlzdFswXSk7CisKKyAgICAvKgorICAgICAqIEZsdXNoIHRoZSBlbnRpcmUg YWRkcmVzcyBzcGFjZSBpZiB2YSBpcyBOVUxMIG9yIGlmIHRoZXJlIGlzIG5vdAorICAgICAqIGVu b3VnaCBzcGFjZSBmb3IgZ3ZhX2xpc3QuCisgICAgICovCisgICAgaWYgKCAhdmEgfHwgKFBBR0Vf U0laRSA8PCBvcmRlcikgLyBIVl9UTEJfRkxVU0hfVU5JVCA+IG1heF9ndmFzICkKKyAgICAgICAg cmV0ID0gaHZfZG9faHlwZXJjYWxsKEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfU1BBQ0Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0X3RvX21hZGRyKGZsdXNoKSwgMCk7 CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGd2YXMgPSBmaWxsX2d2YV9s aXN0KGZsdXNoLT5ndmFfbGlzdCwgdmEsIG9yZGVyKTsKKworICAgICAgICByZXQgPSBodl9kb19y ZXBfaHlwZXJjYWxsKEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfTElTVCwgZ3ZhcywgMCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0X3RvX21hZGRyKGZsdXNoKSwg MCk7CisgICAgfQorCisgICAgZ290byBkb25lOworCisgZG9fZXhfaHlwZXJjYWxsOgorICAgIHJl dCA9IGZsdXNoX3RsYl9leChtYXNrLCB2YSwgZmxhZ3MpOworCisgZG9uZToKKyAgICBsb2NhbF9p cnFfcmVzdG9yZShpcnFfZmxhZ3MpOworCisgICAgcmV0dXJuIHJldCAmIEhWX0hZUEVSQ0FMTF9S RVNVTFRfTUFTSyA/IC1FTlhJTyA6IDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdXRpbC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUwOTI1OTM3NDYKLS0tIC9k ZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYwpAQCAtMCwwICsx LDc0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBhcmNoL3g4Ni9ndWVzdC9oeXBlcnYv dXRpbC5jCisgKgorICogSHlwZXItViB1dGlsaXR5IGZ1bmN0aW9ucworICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgTWljcm9zb2Z0Lgor ICovCisKKyNpbmNsdWRlIDx4ZW4vY3B1Lmg+CisjaW5jbHVkZSA8eGVuL2NwdW1hc2suaD4KKyNp bmNsdWRlIDx4ZW4vZXJybm8uaD4KKworI2luY2x1ZGUgPGFzbS9ndWVzdC9oeXBlcnYuaD4KKyNp bmNsdWRlIDxhc20vZ3Vlc3QvaHlwZXJ2LXRsZnMuaD4KKworI2luY2x1ZGUgInByaXZhdGUuaCIK KworaW50IGNwdW1hc2tfdG9fdnBzZXQoc3RydWN0IGh2X3Zwc2V0ICp2cHNldCwKKyAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKK3sKKyAgICBpbnQgbnIgPSAxOwor ICAgIHVuc2lnbmVkIGludCBjcHUsIHZjcHVfYmFuaywgdmNwdV9vZmZzZXQ7CisgICAgdW5zaWdu ZWQgaW50IG1heF9iYW5rcyA9IG1zX2h5cGVydi5tYXhfdnBfaW5kZXggLyA2NDsKKworICAgIC8q IFVwIHRvIDY0IGJhbmtzIGNhbiBiZSByZXByZXNlbnRlZCBieSB2YWxpZF9iYW5rX21hc2sgKi8K KyAgICBpZiAoIG1heF9iYW5rcyA+PSA2NCApCisgICAgICAgIHJldHVybiAtRTJCSUc7CisKKyAg ICAvKiBDbGVhciBhbGwgYmFua3MgdG8gYXZvaWQgZmx1c2hpbmcgdW53YW50ZWQgQ1BVcyAqLwor ICAgIGZvciAoIHZjcHVfYmFuayA9IDA7IHZjcHVfYmFuayA8PSBtYXhfYmFua3M7IHZjcHVfYmFu aysrICkKKyAgICAgICAgdnBzZXQtPmJhbmtfY29udGVudHNbdmNwdV9iYW5rXSA9IDA7CisKKyAg ICB2cHNldC0+dmFsaWRfYmFua19tYXNrID0gMDsKKyAgICB2cHNldC0+Zm9ybWF0ID0gSFZfR0VO RVJJQ19TRVRfU1BBUlNFXzRLOworCisgICAgZm9yX2VhY2hfY3B1ICggY3B1LCBtYXNrICkKKyAg ICB7CisgICAgICAgIHVuc2lnbmVkIGludCB2Y3B1ID0gaHZfdnBfaW5kZXgoY3B1KTsKKworICAg ICAgICB2Y3B1X2JhbmsgPSB2Y3B1IC8gNjQ7CisgICAgICAgIHZjcHVfb2Zmc2V0ID0gdmNwdSAl IDY0OworCisgICAgICAgIF9fc2V0X2JpdCh2Y3B1X29mZnNldCwgJnZwc2V0LT5iYW5rX2NvbnRl bnRzW3ZjcHVfYmFua10pOworICAgICAgICBfX3NldF9iaXQodmNwdV9iYW5rLCAmdnBzZXQtPnZh bGlkX2JhbmtfbWFzayk7CisKKyAgICAgICAgaWYgKCB2Y3B1X2JhbmsgPj0gbnIgKQorICAgICAg ICAgICAgbnIgPSB2Y3B1X2JhbmsgKyAxOworICAgIH0KKworICAgIHJldHVybiBucjsKK30KKwor LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJT RCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJz LW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs