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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,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 9E1DCC2BA83 for ; Thu, 13 Feb 2020 12:21:14 +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 6B86A2073C for ; Thu, 13 Feb 2020 12:21:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B86A2073C 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 1j2DU0-0002iM-Mh; Thu, 13 Feb 2020 12:20:40 +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 1j2DTz-0002iH-GP for xen-devel@lists.xenproject.org; Thu, 13 Feb 2020 12:20:39 +0000 X-Inumbo-ID: 3e51fd8c-4e5b-11ea-b88e-12813bfff9fa Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3e51fd8c-4e5b-11ea-b88e-12813bfff9fa; Thu, 13 Feb 2020 12:20:38 +0000 (UTC) Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j2DTx-0006zi-DT; Thu, 13 Feb 2020 12:20:37 +0000 Received: from 41.142.6.51.dyn.plus.net ([51.6.142.41] helo=debian) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1j2DTw-0006k7-Tr; Thu, 13 Feb 2020 12:20:37 +0000 Date: Thu, 13 Feb 2020 12:20:33 +0000 From: Wei Liu To: Roger Pau =?utf-8?B?TW9ubsOp?= Message-ID: <20200213122033.gyrv6dia3jdrwgpx@debian> References: <20200212160918.18470-1-liuwe@microsoft.com> <20200212160918.18470-5-liuwe@microsoft.com> <20200212174347.GU4679@Air-de-Roger> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200212174347.GU4679@Air-de-Roger> User-Agent: NeoMutt/20180716 Subject: Re: [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 , Xen Development List Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gV2VkLCBGZWIgMTIsIDIwMjAgYXQgMDY6NDM6NDdQTSArMDEwMCwgUm9nZXIgUGF1IE1vbm7D qSB3cm90ZToKPiBPbiBXZWQsIEZlYiAxMiwgMjAyMCBhdCAwNDowOToxOFBNICswMDAwLCBXZWkg TGl1IHdyb3RlOgo+ID4gSW1wbGVtZW50IEwwIGFzc2lzdGVkIFRMQiBmbHVzaCBmb3IgWGVuIG9u IEh5cGVyLVYuIEl0IHRha2VzIGFkdmFudGFnZQo+ID4gb2Ygc2V2ZXJhbCBoeXBlcmNhbGxzOgo+ ID4gCj4gPiAgKiBIVkNBTExfRkxVU0hfVklSVFVBTF9BRERSRVNTX0xJU1QKPiA+ICAqIEhWQ0FM TF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfTElTVF9FWAo+ID4gICogSFZDQUxMX0ZMVVNIX1ZJUlRV QUxfQUREUkVTU19TUEFDRQo+ID4gICogSFZDQUxMX0ZMVVNIX1ZJUlRVQUxfQUREUkVTU19TUEFD RV9FWAo+ID4gCj4gPiBQaWNrIHRoZSBtb3N0IGVmZmljaWVudCBoeXBlcmNhbGxzIGF2YWlsYWJs ZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogV2VpIExpdSA8bGl1d2VAbWljcm9zb2Z0LmNvbT4K PiA+IC0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvTWFrZWZpbGUgIHwgICAxICsK PiA+ICB4ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3ByaXZhdGUuaCB8ICAgOSArKwo+ID4gIHhl bi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdGxiLmMgICAgIHwgMTcyICsrKysrKysrKysrKysrKysr KysrKysrKysrKy0KPiA+ICB4ZW4vYXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3V0aWwuYyAgICB8ICA3 MiArKysrKysrKysrKysKPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDI1MyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ndWVzdC9o eXBlcnYvdXRpbC5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlw ZXJ2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L2d1ZXN0L2h5cGVydi9NYWtlZmlsZQo+ID4gaW5k ZXggMTg5MDJjMzNlOS4uMGUzOTQxMDk2OCAxMDA2NDQKPiA+IC0tLSBhL3hlbi9hcmNoL3g4Ni9n dWVzdC9oeXBlcnYvTWFrZWZpbGUKPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYv TWFrZWZpbGUKPiA+IEBAIC0xLDIgKzEsMyBAQAo+ID4gIG9iai15ICs9IGh5cGVydi5vCj4gPiAg b2JqLXkgKz0gdGxiLm8KPiA+ICtvYmoteSArPSB1dGlsLm8KPiA+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvZ3Vlc3QvaHlwZXJ2L3ByaXZhdGUuaCBiL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBl cnYvcHJpdmF0ZS5oCj4gPiBpbmRleCA3OGU1MmY3NGNlLi4zMTFmMDYwNDk1IDEwMDY0NAo+ID4g LS0tIGEveGVuL2FyY2gveDg2L2d1ZXN0L2h5cGVydi9wcml2YXRlLmgKPiA+ICsrKyBiL3hlbi9h cmNoL3g4Ni9ndWVzdC9oeXBlcnYvcHJpdmF0ZS5oCj4gPiBAQCAtMjQsMTIgKzI0LDIxIEBACj4g PiAgCj4gPiAgI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+Cj4gPiAgI2luY2x1ZGUgPHhlbi9wZXJj cHUuaD4KPiA+ICsjaW5jbHVkZSA8eGVuL3R5cGVzLmg+Cj4gPiAgCj4gPiAgREVDTEFSRV9QRVJf Q1BVKHZvaWQgKiwgaHZfaW5wdXRfcGFnZSk7Cj4gPiAgREVDTEFSRV9QRVJfQ1BVKHZvaWQgKiwg aHZfdnBfYXNzaXN0KTsKPiA+ICBERUNMQVJFX1BFUl9DUFUodWludDMyX3QsIGh2X3ZwX2luZGV4 KTsKPiA+ICAKPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90IGh2X3ZwX2luZGV4KGludCBjcHUp Cj4gCj4gdW5zaWduZWQgaW50IGZvciBjcHUuCj4gCj4gPiArewo+ID4gKyAgICByZXR1cm4gcGVy X2NwdShodl92cF9pbmRleCwgY3B1KTsKPiA+ICt9Cj4gPiArCj4gPiAgaW50IGh5cGVydl9mbHVz aF90bGIoY29uc3QgY3B1bWFza190ICptYXNrLCBjb25zdCB2b2lkICp2YSwKPiA+ICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwo+ID4gIAo+ID4gKy8qIFJldHVybnMg bnVtYmVyIG9mIGJhbmtzLCAtZXYgaWYgZXJyb3IgKi8KPiA+ICtpbnQgY3B1bWFza190b192cHNl dChzdHJ1Y3QgaHZfdnBzZXQgKnZwc2V0LCBjb25zdCBjcHVtYXNrX3QgKm1hc2spOwo+ID4gKwo+ ID4gICNlbmRpZiAvKiBfX1hFTl9IWVBFUlZfUFJJVklBVEVfSF9fICAqLwo+ID4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdGxiLmMgYi94ZW4vYXJjaC94ODYvZ3Vlc3Qv aHlwZXJ2L3RsYi5jCj4gPiBpbmRleCA0OGY1MjcyMjllLi45OWI3ODlkOWU5IDEwMDY0NAo+ID4g LS0tIGEveGVuL2FyY2gveDg2L2d1ZXN0L2h5cGVydi90bGIuYwo+ID4gKysrIGIveGVuL2FyY2gv eDg2L2d1ZXN0L2h5cGVydi90bGIuYwo+ID4gQEAgLTE5LDE1ICsxOSwxODUgQEAKPiA+ICAgKiBD b3B5cmlnaHQgKGMpIDIwMjAgTWljcm9zb2Z0Lgo+ID4gICAqLwo+ID4gIAo+ID4gKyNpbmNsdWRl IDx4ZW4vY3B1Lmg+Cj4gPiAgI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+Cj4gPiAgI2luY2x1ZGUg PHhlbi9lcnJuby5oPgo+ID4gIAo+ID4gKyNpbmNsdWRlIDxhc20vZ3Vlc3QvaHlwZXJ2Lmg+Cj4g PiArI2luY2x1ZGUgPGFzbS9ndWVzdC9oeXBlcnYtaGNhbGwuaD4KPiA+ICsjaW5jbHVkZSA8YXNt L2d1ZXN0L2h5cGVydi10bGZzLmg+Cj4gPiArCj4gPiAgI2luY2x1ZGUgInByaXZhdGUuaCIKPiA+ ICAKPiA+ICsvKgo+ID4gKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGVuY29kZSB1cCB0byA0MDk2IHBh Z2VzIHVzaW5nIHRoZSBsb3dlciAxMiBiaXRzCj4gPiArICogaW4gYW4gZWxlbWVudCBvZiBndmFf bGlzdAo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgSFZfVExCX0ZMVVNIX1VOSVQgKDQwOTYgKiBQQUdF X1NJWkUpCj4gPiArI2RlZmluZSBPUkRFUl9UT19CWVRFUyhvcmRlcikgKCgxdWwgPDwgKG9yZGVy KSkgKiBQQUdFX1NJWkUpCj4gCj4gVGhlcmUgYXJlIGFscmVhZHkgc29tZSBjb252ZXJzaW9uIGZ1 bmN0aW9ucyBpbiB4ZW4vbW0uaAo+IChnZXRfb3JkZXJfZnJvbV97Ynl0ZXMvcGFnZXN9KSwgbWF5 YmUgeW91IGNvdWxkIGFkZCBhCj4gZ2V0X2J5dGVzX2Zyb21fb3JkZXIgaGVscGVyIHRoZXJlPwo+ IAo+ID4gKwo+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgZmlsbF9ndmFfbGlzdCh1aW50NjRfdCAq Z3ZhX2xpc3QsIGNvbnN0IHZvaWQgKnZhLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCj4gPiArewo+ID4gKyAgICB1bnNpZ25lZCBsb25n IHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpdmE7Cj4gPiArICAgIHVuc2lnbmVkIGxvbmcgZW5kID0g c3RhcnQgKyBPUkRFUl9UT19CWVRFUyhvcmRlcikgLSAxOwo+ID4gKyAgICB1bnNpZ25lZCBpbnQg biA9IDA7Cj4gPiArCj4gPiArICAgIGRvIHsKPiA+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgcmVt YWluID0gZW5kID4gc3RhcnQgPyBlbmQgLSBzdGFydCA6IDA7Cj4gCj4gSSBkb24ndCB0aGluayB5 b3UgY2FuIGdldCBoZXJlIHdpdGggZW5kID09IHN0YXJ0Pwo+IAo+IEFzIHRoYXQncyB0aGUgY29u ZGl0aW9uIG9mIHRoZSBsb29wLCBhbmQgb3JkZXIgMCBpcyBnb2luZyB0byBzZXQKPiBlbmQgPSBz dGFydCArIDQwOTYgLSAxLgoKQ29ycmVjdC4gVGhpcyBjYW4gYmUgc2ltcGxpZmllZCBhcyByZW1h aW4gPSBlbmQgLSBzdGFydCAuCgo+IAo+ID4gKwo+ID4gKyAgICAgICAgZ3ZhX2xpc3Rbbl0gPSBz dGFydCAmIFBBR0VfTUFTSzsKPiA+ICsKPiA+ICsgICAgICAgIC8qCj4gPiArICAgICAgICAgKiBV c2UgbG93ZXIgMTIgYml0cyB0byBlbmNvZGUgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhZ2Vz Cj4gPiArICAgICAgICAgKiB0byBmbHVzaAo+ID4gKyAgICAgICAgICovCj4gPiArICAgICAgICBp ZiAoIHJlbWFpbiA+PSBIVl9UTEJfRkxVU0hfVU5JVCApCj4gPiArICAgICAgICB7Cj4gPiArICAg ICAgICAgICAgZ3ZhX2xpc3Rbbl0gfD0gflBBR0VfTUFTSzsKPiA+ICsgICAgICAgICAgICBzdGFy dCArPSBIVl9UTEJfRkxVU0hfVU5JVDsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGVsc2Ug aWYgKCByZW1haW4gKQo+ID4gKyAgICAgICAgewo+ID4gKyAgICAgICAgICAgIGd2YV9saXN0W25d IHw9IChyZW1haW4gLSAxKSA+PiBQQUdFX1NISUZUOwo+ID4gKyAgICAgICAgICAgIHN0YXJ0ID0g ZW5kOwo+ID4gKyAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgbisrOwo+ID4gKyAgICB9IHdo aWxlICggc3RhcnQgPCBlbmQgKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIG47Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyB1aW50NjRfdCBmbHVzaF90bGJfZXgoY29uc3QgY3B1bWFza190ICptYXNr LCBjb25zdCB2b2lkICp2YSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBmbGFncykKPiA+ICt7Cj4gPiArICAgIHN0cnVjdCBodl90bGJfZmx1c2hfZXggKmZs dXNoID0gdGhpc19jcHUoaHZfaW5wdXRfcGFnZSk7Cj4gPiArICAgIGludCBucl9iYW5rczsKPiA+ ICsgICAgdW5zaWduZWQgaW50IG1heF9ndmFzOwo+ID4gKyAgICB1bnNpZ25lZCBpbnQgb3JkZXIg PSBmbGFncyAmIEZMVVNIX09SREVSX01BU0s7Cj4gPiArICAgIHVpbnQ2NF90IHJldDsKPiA+ICsK PiA+ICsgICAgQVNTRVJUKGZsdXNoKTsKPiA+ICsgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5h YmxlZCgpKTsKPiAKPiBDYW4geW91IHR1cm4gdGhpcyBpbnRvIGFuIGlmIGNvbmRpdGlvbiB3aXRo IEFTU0VSVF9VTlJFQUNIQUJMRSBhbmQKPiByZXR1cm4gfjBVTEw/IChhcyBJIHRoaW5rIHRoYXQg c2lnbmFscyBhbiBlcnJvcikuCj4gCgpUaGVyZSBpcyBubyBuZWVkIGZvciB0aGF0LiBUaGlzIGZ1 bmN0aW9uIHdpbGwgYWx3YXlzIGJlIGludGVybmFsIHRvCkh5cGVyLVYgaW4gdGhlIGZvcmVzZWVh YmxlIGZ1dHVyZS4gSWYgaXQgaXMgZXZlciBjYWxsZWQgd2l0aCBJUlEgZW5hYmxlZApzb21ldGhp bmcgaXMgd3Jvbmcgd2l0aCB0aGUgY29kZS4KCj4gPiArCj4gPiArICAgIGlmICggIShtc19oeXBl cnYuaGludHMgJiBIVl9YNjRfRVhfUFJPQ0VTU09SX01BU0tTX1JFQ09NTUVOREVEKSApCj4gPiAr ICAgICAgICByZXR1cm4gfjBVTEw7Cj4gPiArCj4gPiArICAgIGZsdXNoLT5hZGRyZXNzX3NwYWNl ID0gMDsKPiA+ICsgICAgZmx1c2gtPmZsYWdzID0gSFZfRkxVU0hfQUxMX1ZJUlRVQUxfQUREUkVT U19TUEFDRVM7Cj4gPiArICAgIGlmICggIShmbGFncyAmIEZMVVNIX1RMQl9HTE9CQUwpICkKPiA+ ICsgICAgICAgIGZsdXNoLT5mbGFncyB8PSBIVl9GTFVTSF9OT05fR0xPQkFMX01BUFBJTkdTX09O TFk7Cj4gPiArCj4gPiArICAgIGZsdXNoLT5odl92cF9zZXQudmFsaWRfYmFua19tYXNrID0gMDsK PiA+ICsgICAgZmx1c2gtPmh2X3ZwX3NldC5mb3JtYXQgPSBIVl9HRU5FUklDX1NFVF9TUEFSU0Vf NEs7Cj4gPiArCj4gPiArICAgIG5yX2JhbmtzID0gY3B1bWFza190b192cHNldCgmZmx1c2gtPmh2 X3ZwX3NldCwgbWFzayk7Cj4gPiArICAgIGlmICggbnJfYmFua3MgPCAwICkKPiA+ICsgICAgICAg IHJldHVybiB+MFVMTDsKPiA+ICsKPiA+ICsgICAgbWF4X2d2YXMgPQo+ID4gKyAgICAgICAgKFBB R0VfU0laRSAtIHNpemVvZigqZmx1c2gpIC0gbnJfYmFua3MgKgo+ID4gKyAgICAgICAgIHNpemVv ZihmbHVzaC0+aHZfdnBfc2V0LmJhbmtfY29udGVudHNbMF0pKSAvCj4gPiArICAgICAgICBzaXpl b2YodWludDY0X3QpOyAgICAgICAvKiBndmEgaXMgcmVwcmVzZW50ZWQgYXMgdWludDY0X3QgKi8K PiA+ICsKPiA+ICsgICAgLyoKPiA+ICsgICAgICogRmx1c2ggdGhlIGVudGlyZSBhZGRyZXNzIHNw YWNlIGlmIHZhIGlzIE5VTEwgb3IgaWYgdGhlcmUgaXMgbm90Cj4gPiArICAgICAqIGVub3VnaCBz cGFjZSBmb3IgZ3ZhX2xpc3QuCj4gPiArICAgICAqLwo+ID4gKyAgICBpZiAoICF2YSB8fCAoT1JE RVJfVE9fQllURVMob3JkZXIpIC8gSFZfVExCX0ZMVVNIX1VOSVQpID4gbWF4X2d2YXMgKQo+ID4g KyAgICAgICAgcmV0ID0gaHZfZG9fcmVwX2h5cGVyY2FsbChIVkNBTExfRkxVU0hfVklSVFVBTF9B RERSRVNTX1NQQUNFX0VYLCAwLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBucl9iYW5rcywgdmlydF90b19tYWRkcihmbHVzaCksIDApOwo+ID4gKyAgICBlbHNlCj4gPiAr ICAgIHsKPiA+ICsgICAgICAgIHVpbnQ2NF90ICpndmFfbGlzdCA9ICh1aW50NjRfdCAqKWZsdXNo ICsgc2l6ZW9mKCpmbHVzaCkgKyBucl9iYW5rczsKPiAKPiBEb24ndCB5b3UgbmVlZCBucl9iYW5r cyAqIHNpemVvZihmbHVzaC0+aHZfdnBfc2V0LmJhbmtfY29udGVudHMpIGluCj4gb3JkZXIgdG8g Y2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ3ZhX2xpc3Q/Cj4gCgpUaGUgcG9pbnRlciBh cml0aG1ldGljIGlzIGRvbmUgb24gdWludDY0X3QgcG9pbnRlcnMgc28gaXQgYWxyZWFkeSB0YWtl cwppbnRvIGFjY291bnQgc2l6ZW9mKGJhbmtfY29udGVudHNbMF0pLgoKPiA+ICsgICAgICAgIHVu c2lnbmVkIGludCBndmFzID0gZmlsbF9ndmFfbGlzdChndmFfbGlzdCwgdmEsIG9yZGVyKTsKPiA+ ICsKPiA+ICsgICAgICAgIHJldCA9IGh2X2RvX3JlcF9oeXBlcmNhbGwoSFZDQUxMX0ZMVVNIX1ZJ UlRVQUxfQUREUkVTU19MSVNUX0VYLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndmFzLCBucl9iYW5rcywgdmlydF90b19tYWRkcihmbHVzaCksIDApOwo+ID4gKyAgICB9 Cj4gPiArCj4gPiArICAgIHJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gIGludCBoeXBlcnZf Zmx1c2hfdGxiKGNvbnN0IGNwdW1hc2tfdCAqbWFzaywgY29uc3Qgdm9pZCAqdmEsCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQo+ID4gIHsKPiA+IC0gICAgcmV0 dXJuIC1FT1BOT1RTVVBQOwo+ID4gKyAgICB1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKPiA+ICsg ICAgc3RydWN0IGh2X3RsYl9mbHVzaCAqZmx1c2ggPSB0aGlzX2NwdShodl9pbnB1dF9wYWdlKTsK PiA+ICsgICAgdWludDY0X3QgcmV0Owo+ID4gKyAgICB1bnNpZ25lZCBpbnQgb3JkZXIgPSBmbGFn cyAmIEZMVVNIX09SREVSX01BU0s7Cj4gPiArICAgIHVuc2lnbmVkIGludCBtYXhfZ3ZhczsKPiA+ ICsKPiA+ICsgICAgQVNTRVJUKGZsdXNoKTsKPiA+ICsgICAgQVNTRVJUKCFjcHVtYXNrX2VtcHR5 KG1hc2spKTsKPiA+ICsKPiA+ICsgICAgbG9jYWxfaXJxX3NhdmUoaXJxX2ZsYWdzKTsKPiA+ICsK PiA+ICsgICAgZmx1c2gtPmFkZHJlc3Nfc3BhY2UgPSAwOwo+ID4gKyAgICBmbHVzaC0+ZmxhZ3Mg PSBIVl9GTFVTSF9BTExfVklSVFVBTF9BRERSRVNTX1NQQUNFUzsKPiA+ICsgICAgZmx1c2gtPnBy b2Nlc3Nvcl9tYXNrID0gMDsKPiA+ICsgICAgaWYgKCAhKGZsYWdzICYgRkxVU0hfVExCX0dMT0JB TCkgKQo+ID4gKyAgICAgICAgZmx1c2gtPmZsYWdzIHw9IEhWX0ZMVVNIX05PTl9HTE9CQUxfTUFQ UElOR1NfT05MWTsKPiA+ICsKPiA+ICsgICAgaWYgKCBjcHVtYXNrX2VxdWFsKG1hc2ssICZjcHVf b25saW5lX21hcCkgKQo+ID4gKyAgICAgICAgZmx1c2gtPmZsYWdzIHw9IEhWX0ZMVVNIX0FMTF9Q Uk9DRVNTT1JTOwo+ID4gKyAgICBlbHNlCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGludCBjcHU7 Cj4gCj4gdW5zaWduZWQgaW50Lgo+IAoKSSBwaWNrZWQgaW50IGhlcmUgYW5kIGFib3ZlIGJlY2F1 c2UgYWxsIHRoZSBjcHVtYXNrIGZ1bmN0aW9ucyByZXR1cm4KaW50LiBJIGRvbid0IG1pbmQgY2hh bmdpbmcgaXQgdG8gdW5zaWduZWQgaW50IC0tIGl0IG1ha2VzIG5vIHByYWN0aWNhbApkaWZmZXJl bmNlLgoKPiA+ICsKPiA+ICsgICAgICAgIC8qCj4gPiArICAgICAgICAgKiBOb3JtYWxseSBWUCBp bmRpY2VzIGFyZSBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIG1hdGNoIFhlbidzCj4gPiArICAgICAg ICAgKiBpZGVhIG9mIENQVSBpZHMuIENoZWNrIHRoZSBsYXN0IGluZGV4IHRvIHNlZSBpZiBWUCBp bmRleCBpcwo+ID4gKyAgICAgICAgICogPj0gNjQuIElmIHNvLCB3ZSBjYW4gc2tpcCBzZXR0aW5n IHVwIHBhcmFtZXRlcnMgZm9yCj4gPiArICAgICAgICAgKiBub24tYXBwbGljYWJsZSBoeXBlcmNh bGxzIHdpdGhvdXQgbG9va2luZyBmdXJ0aGVyLgo+ID4gKyAgICAgICAgICovCj4gPiArICAgICAg ICBpZiAoIGh2X3ZwX2luZGV4KGNwdW1hc2tfbGFzdChtYXNrKSkgPj0gNjQgKQo+ID4gKyAgICAg ICAgICAgIGdvdG8gZG9fZXhfaHlwZXJjYWxsOwo+ID4gKwo+ID4gKyAgICAgICAgZm9yX2VhY2hf Y3B1ICggY3B1LCBtYXNrICkKPiA+ICsgICAgICAgIHsKPiA+ICsgICAgICAgICAgICB1aW50MzJf dCB2cGlkID0gaHZfdnBfaW5kZXgoY3B1KTsKPiA+ICsKPiA+ICsgICAgICAgICAgICBpZiAoIHZw aWQgPiBtc19oeXBlcnYubWF4X3ZwX2luZGV4ICkKPiA+ICsgICAgICAgICAgICB7Cj4gPiArICAg ICAgICAgICAgICAgIGxvY2FsX2lycV9yZXN0b3JlKGlycV9mbGFncyk7Cj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiAtRU5YSU87Cj4gPiArICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAg ICAgICAgIGlmICggdnBpZCA+PSA2NCApCj4gPiArICAgICAgICAgICAgICAgIGdvdG8gZG9fZXhf aHlwZXJjYWxsOwo+ID4gKwo+ID4gKyAgICAgICAgICAgIF9fc2V0X2JpdCh2cGlkLCAmZmx1c2gt PnByb2Nlc3Nvcl9tYXNrKTsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAg ICBtYXhfZ3ZhcyA9IChQQUdFX1NJWkUgLSBzaXplb2YoKmZsdXNoKSkgLyBzaXplb2YoZmx1c2gt Pmd2YV9saXN0WzBdKTsKPiA+ICsKPiA+ICsgICAgLyoKPiA+ICsgICAgICogRmx1c2ggdGhlIGVu dGlyZSBhZGRyZXNzIHNwYWNlIGlmIHZhIGlzIE5VTEwgb3IgaWYgdGhlcmUgaXMgbm90Cj4gPiAr ICAgICAqIGVub3VnaCBzcGFjZSBmb3IgZ3ZhX2xpc3QuCj4gPiArICAgICAqLwo+ID4gKyAgICBp ZiAoICF2YSB8fCAoT1JERVJfVE9fQllURVMob3JkZXIpIC8gSFZfVExCX0ZMVVNIX1VOSVQpID4g bWF4X2d2YXMgKQo+ID4gKyAgICAgICAgcmV0ID0gaHZfZG9faHlwZXJjYWxsKEhWQ0FMTF9GTFVT SF9WSVJUVUFMX0FERFJFU1NfU1BBQ0UsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmlydF90b19tYWRkcihmbHVzaCksIDApOwo+ID4gKyAgICBlbHNlCj4gPiArICAgIHsKPiA+ ICsgICAgICAgIHVuc2lnbmVkIGludCBndmFzID0gZmlsbF9ndmFfbGlzdChmbHVzaC0+Z3ZhX2xp c3QsIHZhLCBvcmRlcik7Cj4gPiArCj4gPiArICAgICAgICByZXQgPSBodl9kb19yZXBfaHlwZXJj YWxsKEhWQ0FMTF9GTFVTSF9WSVJUVUFMX0FERFJFU1NfTElTVCwgZ3ZhcywgMCwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydF90b19tYWRkcihmbHVzaCksIDApOwo+ ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGdvdG8gZG9uZTsKPiA+ICsKPiA+ICsgZG9fZXhfaHlw ZXJjYWxsOgo+ID4gKyAgICByZXQgPSBmbHVzaF90bGJfZXgobWFzaywgdmEsIGZsYWdzKTsKPiA+ ICsKPiA+ICsgZG9uZToKPiA+ICsgICAgbG9jYWxfaXJxX3Jlc3RvcmUoaXJxX2ZsYWdzKTsKPiA+ ICsKPiA+ICsgICAgcmV0dXJuIHJldCAmIEhWX0hZUEVSQ0FMTF9SRVNVTFRfTUFTSzsKPiAKPiBX aWxsIHRoaXMgcmV0dXJuIGFuIGVycm9yIGNvZGUgdGhhdCB1c2VzIHRoZSBzYW1lIHNwYWNlIGFz IFhlbidzIGVycm5vCj4gdmFsdWVzPwo+IAoKTm8sIGl0IHdvbid0LiBJdCByZXR1cm5zIEh5cGVy LVYncyBzdGF0dXMgY29kZSAoMCBzdGlsbCBtZWFucyBzdWNjZXNzKS4KCkkgZGlkbid0IHRoaW5r IHRoYXQgd2FzIGEgYmlnIGRlYWwgYmVjYXVzZSBub24temVybyB2YWx1ZXMgbWVhbnQgZXJyb3Jz LgpBbmQgdGhlIHVwcGVyIGxheWVyIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBleGFjdCBlcnJvciB2 YWx1ZXMgKHlldCkuCgo+ID4gIH0KPiA+ICAKPiA+ICAvKgo+ID4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9ndWVzdC9oeXBlcnYvdXRpbC5jIGIveGVuL2FyY2gveDg2L2d1ZXN0L2h5cGVydi91 dGlsLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi45ZDBi NWY0YTQ2Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi94ZW4vYXJjaC94ODYvZ3Vlc3QvaHlw ZXJ2L3V0aWwuYwo+ID4gQEAgLTAsMCArMSw3MiBAQAo+ID4gKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPiA+ICsgKiBhcmNoL3g4Ni9ndWVzdC9oeXBlcnYvdXRpbC5jCj4gPiArICoKPiA+ICsgKiBI eXBlci1WIHV0aWxpdHkgZnVuY3Rpb25zCj4gPiArICoKPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ID4g KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Cj4gPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiA+ICsgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gPiArICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK PiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCj4gPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gPiArICogYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiA+ ICsgKgo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMCBNaWNyb3NvZnQuCj4gPiArICovCj4gPiAr Cj4gPiArI2luY2x1ZGUgPHhlbi9jcHUuaD4KPiA+ICsjaW5jbHVkZSA8eGVuL2NwdW1hc2suaD4K PiA+ICsjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgPGFzbS9ndWVz dC9oeXBlcnYuaD4KPiA+ICsjaW5jbHVkZSA8YXNtL2d1ZXN0L2h5cGVydi10bGZzLmg+Cj4gPiAr Cj4gPiArI2luY2x1ZGUgInByaXZhdGUuaCIKPiA+ICsKPiA+ICtpbnQgY3B1bWFza190b192cHNl dChzdHJ1Y3QgaHZfdnBzZXQgKnZwc2V0LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNwdW1hc2tfdCAqbWFzaykKPiA+ICt7Cj4gPiArICAgIGludCBuciA9IDEsIGNwdSwgdmNwdV9i YW5rLCB2Y3B1X29mZnNldDsKPiA+ICsgICAgaW50IG1heF9iYW5rcyA9IG1zX2h5cGVydi5tYXhf dnBfaW5kZXggLyA2NDsKPiAKPiBJIHRoaW5rIG5yIHdoYXRzIHRvIGJlIGludCAodG8gbWF0Y2gg dGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlKSwgYnV0Cj4gdGhlIHJlc3Qgc2hvdWxkIGJlIHVuc2ln bmVkIGludHMsIHNwZWNpYWxseSBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYXMKPiBhcnJheSBpbmRl eGVzLgo+IAoKT0suCgo+ID4gKwo+ID4gKyAgICAvKiBVcCB0byA2NCBiYW5rcyBjYW4gYmUgcmVw cmVzZW50ZWQgYnkgdmFsaWRfYmFua19tYXNrICovCj4gPiArICAgIGlmICggbWF4X2JhbmtzID49 IDY0ICkKPiA+ICsgICAgICAgIHJldHVybiAtMTsKPiAKPiBFMkJJRyBvciBzb21lIHN1Y2g/Cj4g CgpSaWdodC4gVGhhdCdzIGJldHRlciB0aGFuIC0xLgoKPiA+ICsKPiA+ICsgICAgLyogQ2xlYXIg YWxsIGJhbmtzIHRvIGF2b2lkIGZsdXNoaW5nIHVud2FudGVkIENQVXMgKi8KPiA+ICsgICAgZm9y ICggdmNwdV9iYW5rID0gMDsgdmNwdV9iYW5rIDw9IG1heF9iYW5rczsgdmNwdV9iYW5rKysgKQo+ ID4gKyAgICAgICAgdnBzZXQtPmJhbmtfY29udGVudHNbdmNwdV9iYW5rXSA9IDA7Cj4gPiArCj4g PiArICAgIHZwc2V0LT52YWxpZF9iYW5rX21hc2sgPSAwOwo+ID4gKwo+ID4gKyAgICBmb3JfZWFj aF9jcHUgKCBjcHUsIG1hc2sgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBpbnQgdmNwdSA9IGh2 X3ZwX2luZGV4KGNwdSk7Cj4gCj4gdW5zaWduZWQgaW50IG9yIHVpbnQzMl90ICh3aGljaCBpcyB0 aGUgdHl1cGUgdGhhdCBodl92cF9pbmRleAo+IHJldHVybnMpLgo+IAo+IFRoYW5rcywgUm9nZXIu CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs