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=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 7969CC31E46 for ; Wed, 12 Jun 2019 22:52:34 +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 4485020866 for ; Wed, 12 Jun 2019 22:52:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="RUt1Ipb3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4485020866 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.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 1hbC6K-0007ZP-KT; Wed, 12 Jun 2019 22:52:16 +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 1hbC6J-0007ZG-4U for xen-devel@lists.xenproject.org; Wed, 12 Jun 2019 22:52:15 +0000 X-Inumbo-ID: b81e879c-8d64-11e9-88ca-23a81edc81dd Received: from mail.kernel.org (unknown [198.145.29.99]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id b81e879c-8d64-11e9-88ca-23a81edc81dd; Wed, 12 Jun 2019 22:52:14 +0000 (UTC) Received: from localhost (c-67-164-102-47.hsd1.ca.comcast.net [67.164.102.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1844420B7C; Wed, 12 Jun 2019 22:52:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560379933; bh=PdZdUSPy0F/oS7kxcWglKMZo/c+BR4OSGeZYDnS9yFM=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=RUt1Ipb3vicE+rAC5BTJKqv8nSNbjN4nDHCxCkrcOBnJyc3B8W/yoV4heZTrY6ZTO PGvlB+5IH99A6LZx2XpRL4bAWClYmjn89tu/8fnmZYsGZyxV9+EqA1RQu3/x3iOfjP HdRqtZqKXeRzDo6MAsDPEqHBB934ho0rsm8edhOk= Date: Wed, 12 Jun 2019 15:52:12 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-T480s To: Julien Grall In-Reply-To: <20190514123125.29086-11-julien.grall@arm.com> Message-ID: References: <20190514123125.29086-1-julien.grall@arm.com> <20190514123125.29086-11-julien.grall@arm.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Subject: Re: [Xen-devel] [PATCH MM-PART3 v2 10/12] xen/arm: mm: Rework Xen page-tables walk during update 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: xen-devel@lists.xenproject.org, Stefano Stabellini , Andrii Anisov , Oleksandr_Tyshchenko@epam.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gVHVlLCAxNCBNYXkgMjAxOSwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEN1cnJlbnRseSwgeGVu X3B0X3VwZGF0ZV9lbnRyeSgpIGlzIG9ubHkgYWJsZSB0byB1cGRhdGUgdGhlIHJlZ2lvbiBjb3Zl cmVkCj4gYnkgeGVuX3NlY29uZCAoaS5lIDAgdG8gMHg3ZmZmZmZmZikuCj4gCj4gQmVjYXVzZSBv ZiB0aGUgcmVzdHJpY3Rpb24gd2UgZW5kIHRvIGhhdmUgbXVsdGlwbGUgZnVuY3Rpb25zIGluIG1t LmMKPiBtb2RpZnlpbmcgdGhlIHBhZ2UtdGFibGVzIGRpZmZlcmVudGx5Lgo+IAo+IEZ1cnRoZXJt b3JlLCB3ZSBuZXZlciB3YWxrZWQgdGhlIHBhZ2UtdGFibGVzIGZ1bGx5LiBUaGlzIG1lYW5zIHRo YXQgYW55Cj4gY2hhbmdlIGluIHRoZSBsYXlvdXQgbWF5IHJlcXVpcmVzIG1ham9yIHJld3JpdGUg b2YgdGhlIHBhZ2UtdGFibGVzIGNvZGUuCj4gCj4gTGFzdGx5LCB3ZSBoYXZlIGJlZW4gcXVpdGUg bHVja3kgdGhhdCBubyBvbmUgZXZlciB0cmllZCB0byBwYXNzIGFuIGFkZHJlc3MKPiBvdXRzaWRl IHRoaXMgcmFuZ2UgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIGJsb3duLXVwLgo+IAo+IHhlbl9wdF91 cGRhdGVfZW50cnkoKSBpcyByZXdvcmtlZCB0byB3YWxrIG92ZXIgdGhlIHBhZ2UtdGFibGVzIGV2 ZXJ5Cj4gdGltZS4gVGhlIGxvZ2ljIGhhcyBiZWVuIGJvcnJvd2VkIGZyb20gYXJjaC9hcm0vcDJt LmMgYW5kIGNvbnRhaW4gc29tZQo+IGxpbWl0YXRpb25zIGZvciB0aGUgdGltZSBiZWluZzoKPiAg ICAgLSBTdXBlcnBhZ2UgY2Fubm90IGJlIHNoYXR0ZXJlZAo+ICAgICAtIE9ubHkgbGV2ZWwgMyAo aS5lIDRLQikgY2FuIGJlIGRvbmUKPiAKPiBOb3RlIHRoYXQgdGhlIHBhcmFtZXRlciAnYWRkcicg aGFzIGJlZW4gcmVuYW1lZCB0byAndmlydCcgdG8gbWFrZSBjbGVhcgo+IHdlIGFyZSBkZWFsaW5n IHdpdGggYSB2aXJ0dWFsIGFkZHJlc3MuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnVsaWVuIEdyYWxs IDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBSZXZpZXdlZC1ieTogQW5kcmlpIEFuaXNvdiA8YW5k cmlpX2FuaXNvdkBlcGFtLmNvbT4KPiAKPiAtLS0KPiAgICAgQ2hhbmdlcyBpbiB2MjoKPiAgICAg ICAgIC0gQWRkIEFuZHJpaSdzIHJldmlld2VkLWJ5Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9tbS5j IHwgMTIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbW0uYyBiL3hlbi9hcmNoL2FybS9tbS5j Cj4gaW5kZXggZjU5NzlmNTQ5Yi4uOWE0MDc1NGY0NCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9h cm0vbW0uYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9tbS5jCj4gQEAgLTk4NCw2ICs5ODQsNTMgQEAg c3RhdGljIHZvaWQgeGVuX3VubWFwX3RhYmxlKGNvbnN0IGxwYWVfdCAqdGFibGUpCj4gICAgICB1 bm1hcF9kb21haW5fcGFnZSh0YWJsZSk7Cj4gIH0KPiAgCj4gKyNkZWZpbmUgWEVOX1RBQkxFX01B UF9GQUlMRUQgMAo+ICsjZGVmaW5lIFhFTl9UQUJMRV9TVVBFUl9QQUdFIDEKPiArI2RlZmluZSBY RU5fVEFCTEVfTk9STUFMX1BBR0UgMgoKTWlub3IgTklUOiBkbyB3ZSB3YW50IHRvIGhhdmUgWEVO X1RBQkxFX01BUF9GQUlMRUQgYmUgLTEgdG8gZm9sbG93IHRoZQpwYXR0ZXJuIHRoYXQgZXJyb3Jz IGFyZSA8IDAgPyBOb3QgaW1wb3J0YW50IHRob3VnaC4KCgo+ICsvKgo+ICsgKiBUYWtlIHRoZSBj dXJyZW50bHkgbWFwcGVkIHRhYmxlLCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5LAo+ICsg KiBhbmQgbWFwIHRoZSBuZXh0IHRhYmxlLCBpZiBhdmFpbGFibGUuCj4gKyAqCj4gKyAqIFRoZSBy ZWFkX29ubHkgcGFyYW1ldGVycyBpbmRpY2F0ZXMgd2hldGhlciBpbnRlcm1lZGlhdGUgdGFibGVz IHNob3VsZAo+ICsgKiBiZSBhbGxvY2F0ZWQgd2hlbiBub3QgcHJlc2VudC4KCkkgd29uZGVyIGlm IGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIHJlbmFtZSByZWFkX29ubHkgdG8gc29tZXRoaW5n Cm1vcmUgb2J2aW91c2x5IGNvbm5lY3RlZCB0byB0aGUgaWRlYSB0aGF0IHRhYmxlcyBnZXQgY3Jl YXRlZC4gTWF5YmUKY3JlYXRlX21pc3Npbmc/IEl0IHdvdWxkIGhhdmUgdG8gbWF0Y2ggdGhlIHZh cmlhYmxlIGFuZCBjb21tZW50IGFkZGVkCmJlbG93IGluIHhlbl9wdF91cGRhdGVfZW50cnkuIEkg ZG9uJ3QgaGF2ZSBhIHN0cm9uZyBvcGluaW9uIG9uIHRoaXMuCgoKPiArICogUmV0dXJuIHZhbHVl czoKPiArICogIFhFTl9UQUJMRV9NQVBfRkFJTEVEOiBFaXRoZXIgcmVhZF9vbmx5IHdhcyBzZXQg YW5kIHRoZSBlbnRyeQo+ICsgKiAgd2FzIGVtcHR5LCBvciBhbGxvY2F0aW5nIGEgbmV3IHBhZ2Ug ZmFpbGVkLgo+ICsgKiAgWEVOX1RBQkxFX05PUk1BTF9QQUdFOiBuZXh0IGxldmVsIG1hcHBlZCBu b3JtYWxseQo+ICsgKiAgWEVOX1RBQkxFX1NVUEVSX1BBR0U6IFRoZSBuZXh0IGVudHJ5IHBvaW50 cyB0byBhIHN1cGVycGFnZS4KPiArICovCj4gK3N0YXRpYyBpbnQgeGVuX3B0X25leHRfbGV2ZWwo Ym9vbCByZWFkX29ubHksIHVuc2lnbmVkIGludCBsZXZlbCwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBscGFlX3QgKip0YWJsZSwgdW5zaWduZWQgaW50IG9mZnNldCkKPiArewo+ICsg ICAgbHBhZV90ICplbnRyeTsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgZW50cnkgPSAqdGFi bGUgKyBvZmZzZXQ7Cj4gKwo+ICsgICAgaWYgKCAhbHBhZV9pc192YWxpZCgqZW50cnkpICkKPiAr ICAgIHsKPiArICAgICAgICBpZiAoIHJlYWRfb25seSApCj4gKyAgICAgICAgICAgIHJldHVybiBY RU5fVEFCTEVfTUFQX0ZBSUxFRDsKPiArCj4gKyAgICAgICAgcmV0ID0gY3JlYXRlX3hlbl90YWJs ZShlbnRyeSk7Cj4gKyAgICAgICAgaWYgKCByZXQgKQo+ICsgICAgICAgICAgICByZXR1cm4gWEVO X1RBQkxFX01BUF9GQUlMRUQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgQVNTRVJUKGxwYWVfaXNfdmFs aWQoKmVudHJ5KSk7CgpXaHkgdGhlIEFTU0VSVCBqdXN0IGFmdGVyIHRoZSBscGFlX2lzX3ZhbGlk IGNoZWNrIGFib3ZlPwoKCj4gKyAgICAvKiBUaGUgZnVuY3Rpb24geGVuX3B0X25leHRfbGV2ZWwg aXMgbmV2ZXIgY2FsbGVkIGF0IHRoZSAzcmQgbGV2ZWwgKi8KPiArICAgIGlmICggbHBhZV9pc19t YXBwaW5nKCplbnRyeSwgbGV2ZWwpICkKPiArICAgICAgICByZXR1cm4gWEVOX1RBQkxFX1NVUEVS X1BBR0U7Cj4gKwo+ICsgICAgeGVuX3VubWFwX3RhYmxlKCp0YWJsZSk7Cj4gKyAgICAqdGFibGUg PSB4ZW5fbWFwX3RhYmxlKGxwYWVfZ2V0X21mbigqZW50cnkpKTsKPiArCj4gKyAgICByZXR1cm4g WEVOX1RBQkxFX05PUk1BTF9QQUdFOwo+ICt9Cj4gKwo+ICAvKiBTYW5pdHkgY2hlY2sgb2YgdGhl IGVudHJ5ICovCj4gIHN0YXRpYyBib29sIHhlbl9wdF9jaGVja19lbnRyeShscGFlX3QgZW50cnks IG1mbl90IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICB7Cj4gQEAgLTEwNDMsMzAgKzEwOTAs NjUgQEAgc3RhdGljIGJvb2wgeGVuX3B0X2NoZWNrX2VudHJ5KGxwYWVfdCBlbnRyeSwgbWZuX3Qg bWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICAgICByZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAt c3RhdGljIGludCB4ZW5fcHRfdXBkYXRlX2VudHJ5KHVuc2lnbmVkIGxvbmcgYWRkciwgbWZuX3Qg bWZuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdz KQo+ICtzdGF0aWMgaW50IHhlbl9wdF91cGRhdGVfZW50cnkobWZuX3Qgcm9vdCwgdW5zaWduZWQg bG9uZyB2aXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCj4gIHsKPiAgICAgIGludCByYzsKPiArICAgIHVuc2lnbmVkIGlu dCBsZXZlbDsKPiArICAgIC8qIFdlIG9ubHkgc3VwcG9ydCA0S0IgbWFwcGluZyAoaS5lIGxldmVs IDMpIGZvciBub3cgKi8KPiArICAgIHVuc2lnbmVkIGludCB0YXJnZXQgPSAzOwo+ICsgICAgbHBh ZV90ICp0YWJsZTsKPiArICAgIC8qCj4gKyAgICAgKiBUaGUgaW50ZXJtZWRpYXRlIHBhZ2UgdGFi bGVzIGFyZSByZWFkLW9ubHkgd2hlbiB0aGUgTUZOIGlzIG5vdCB2YWxpZAo+ICsgICAgICogYW5k IHdlIGFyZSBub3QgcG9wdWxhdGluZyBwYWdlIHRhYmxlLgo+ICsgICAgICogVGhpcyBtZWFucyB3 ZSBlaXRoZXIgbW9kaWZ5IHBlcm1pc3Npb25zIG9yIHJlbW92ZSBhbiBlbnRyeS4KPiArICAgICAq Lwo+ICsgICAgYm9vbCByZWFkX29ubHkgPSBtZm5fZXEobWZuLCBJTlZBTElEX01GTikgJiYgIShm bGFncyAmIF9QQUdFX1BPUFVMQVRFKTsKPiAgICAgIGxwYWVfdCBwdGUsICplbnRyeTsKPiAtICAg IGxwYWVfdCAqdGhpcmQgPSBOVUxMOwo+ICsKPiArICAgIC8qIGNvbnZlbmllbmNlIGFsaWFzZXMg Ki8KPiArICAgIERFQ0xBUkVfT0ZGU0VUUyhvZmZzZXRzLCAocGFkZHJfdCl2aXJ0KTsKPiAgCj4g ICAgICAvKiBfUEFHRV9QT1BVTEFURSBhbmQgX1BBR0VfUFJFU0VOVCBzaG91bGQgbmV2ZXIgYmUg c2V0IHRvZ2V0aGVyLiAqLwo+ICAgICAgQVNTRVJUKChmbGFncyAmIChfUEFHRV9QT1BVTEFURXxf UEFHRV9QUkVTRU5UKSkgIT0gKF9QQUdFX1BPUFVMQVRFfF9QQUdFX1BSRVNFTlQpKTsKPiAgCj4g LSAgICBlbnRyeSA9ICZ4ZW5fc2Vjb25kW3NlY29uZF9saW5lYXJfb2Zmc2V0KGFkZHIpXTsKPiAt ICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSB8fCAhbHBhZV9pc190YWJsZSgqZW50cnks IDIpICkKPiArICAgIHRhYmxlID0geGVuX21hcF90YWJsZShyb290KTsKPiArICAgIGZvciAoIGxl dmVsID0gSFlQX1BUX1JPT1RfTEVWRUw7IGxldmVsIDwgdGFyZ2V0OyBsZXZlbCsrICkKPiAgICAg IHsKPiAtICAgICAgICBpbnQgcmMgPSBjcmVhdGVfeGVuX3RhYmxlKGVudHJ5KTsKPiAtICAgICAg ICBpZiAoIHJjIDwgMCApIHsKPiAtICAgICAgICAgICAgcHJpbnRrKCIlczogTDIgZmFpbGVkXG4i LCBfX2Z1bmNfXyk7Cj4gLSAgICAgICAgICAgIHJldHVybiByYzsKPiArICAgICAgICByYyA9IHhl bl9wdF9uZXh0X2xldmVsKHJlYWRfb25seSwgbGV2ZWwsICZ0YWJsZSwgb2Zmc2V0c1tsZXZlbF0p Owo+ICsgICAgICAgIGlmICggcmMgPT0gWEVOX1RBQkxFX01BUF9GQUlMRUQgKQo+ICsgICAgICAg IHsKPiArICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICogV2UgYXJlIGhlcmUgYmVjYXVz ZSB4ZW5fcHRfbmV4dF9sZXZlbCBoYXMgZmFpbGVkIHRvIG1hcAo+ICsgICAgICAgICAgICAgKiB0 aGUgaW50ZXJtZWRpYXRlIHBhZ2UgdGFibGUgKGUuZyB0aGUgdGFibGUgZG9lcyBub3QgZXhpc3QK PiArICAgICAgICAgICAgICogYW5kIHRoZSBwdCBpcyByZWFkLW9ubHkpLiBJdCBpcyBhIHZhbGlk IGNhc2Ugd2hlbgo+ICsgICAgICAgICAgICAgKiByZW1vdmluZyBhIG1hcHBpbmcgYXMgaXQgbWF5 IG5vdCBleGlzdCBpbiB0aGUgcGFnZSB0YWJsZS4KPiArICAgICAgICAgICAgICogSW4gdGhpcyBj YXNlLCBqdXN0IGlnbm9yZSBpdC4KPiArICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgIGlm ICggZmxhZ3MgJiAoX1BBR0VfUFJFU0VOVHxfUEFHRV9QT1BVTEFURSkgKQo+ICsgICAgICAgICAg ICB7Cj4gKyAgICAgICAgICAgICAgICBtbV9wcmludGsoIiVzOiBVbmFibGUgdG8gbWFwIGxldmVs ICV1XG4iLCBfX2Z1bmNfXywgbGV2ZWwpOwo+ICsgICAgICAgICAgICAgICAgcmMgPSAtRU5PRU5U Owo+ICsgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAg ICAgICAgZWxzZQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICByYyA9IDA7Cj4g KyAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgICAgICAgfQo+ICAgICAgICAgIH0K PiArICAgICAgICBlbHNlIGlmICggcmMgIT0gWEVOX1RBQkxFX05PUk1BTF9QQUdFICkKPiArICAg ICAgICAgICAgYnJlYWs7Cj4gICAgICB9Cj4gIAo+IC0gICAgQlVHX09OKCFscGFlX2lzX3ZhbGlk KCplbnRyeSkpOwo+ICsgICAgaWYgKCBsZXZlbCAhPSB0YXJnZXQgKQo+ICsgICAgewo+ICsgICAg ICAgIG1tX3ByaW50aygiJXM6IFNoYXR0ZXJpbmcgc3VwZXJwYWdlIGlzIG5vdCBzdXBwb3J0ZWRc biIsIF9fZnVuY19fKTsKPiArICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+ICsgICAgICAgIGdv dG8gb3V0Owo+ICsgICAgfQo+ICAKPiAtICAgIHRoaXJkID0geGVuX21hcF90YWJsZShscGFlX2dl dF9tZm4oKmVudHJ5KSk7Cj4gLSAgICBlbnRyeSA9ICZ0aGlyZFt0aGlyZF90YWJsZV9vZmZzZXQo YWRkcildOwo+ICsgICAgZW50cnkgPSB0YWJsZSArIG9mZnNldHNbbGV2ZWxdOwo+ICAKPiAgICAg IHJjID0gLUVJTlZBTDsKPiAgICAgIGlmICggIXhlbl9wdF9jaGVja19lbnRyeSgqZW50cnksIG1m biwgZmxhZ3MpICkKPiBAQCAtMTEwMyw3ICsxMTg1LDcgQEAgc3RhdGljIGludCB4ZW5fcHRfdXBk YXRlX2VudHJ5KHVuc2lnbmVkIGxvbmcgYWRkciwgbWZuX3QgbWZuLAo+ICAgICAgcmMgPSAwOwo+ ICAKPiAgb3V0Ogo+IC0gICAgeGVuX3VubWFwX3RhYmxlKHRoaXJkKTsKPiArICAgIHhlbl91bm1h cF90YWJsZSh0YWJsZSk7Cj4gIAo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gQEAgLTExMTksNiAr MTIwMSwxNSBAQCBzdGF0aWMgaW50IHhlbl9wdF91cGRhdGUodW5zaWduZWQgbG9uZyB2aXJ0LAo+ ICAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gdmlydCwgYWRkcl9lbmQgPSBhZGRyICsgbnJfbWZu cyAqIFBBR0VfU0laRTsKPiAgCj4gICAgICAvKgo+ICsgICAgICogRm9yIGFybTMyLCBwYWdlLXRh YmxlcyBhcmUgZGlmZmVyZW50IG9uIGVhY2ggQ1BVcy4gWWV0LCB0aGV5IHNoYXJlCj4gKyAgICAg KiBzb21lIGNvbW1vbiBtYXBwaW5ncy4gSXQgaXMgYXNzdW1lZCB0aGF0IG9ubHkgY29tbW9uIG1h cHBpbmdzCj4gKyAgICAgKiB3aWxsIGJlIG1vZGlmaWVkIHdpdGggdGhpcyBmdW5jdGlvbi4KPiAr ICAgICAqCj4gKyAgICAgKiBYWFg6IEFkZCBhIGNoZWNrLgo+ICsgICAgICovCj4gKyAgICBjb25z dCBtZm5fdCByb290ID0gdmlydF90b19tZm4oVEhJU19DUFVfUEdUQUJMRSk7Cj4gKwo+ICsgICAg LyoKPiAgICAgICAqIFRoZSBoYXJkd2FyZSB3YXMgY29uZmlndXJlZCB0byBmb3JiaWQgbWFwcGlu ZyBib3RoIHdyaXRlYWJsZSBhbmQKPiAgICAgICAqIGV4ZWN1dGFibGUuCj4gICAgICAgKiBXaGVu IG1vZGlmeWluZy9jcmVhdGluZyBtYXBwaW5nIChpLmUgX1BBR0VfUFJFU0VOVCBpcyBzZXQpLAo+ IEBAIC0xMTM5LDkgKzEyMzAsOSBAQCBzdGF0aWMgaW50IHhlbl9wdF91cGRhdGUodW5zaWduZWQg bG9uZyB2aXJ0LAo+ICAKPiAgICAgIHNwaW5fbG9jaygmeGVuX3B0X2xvY2spOwo+ICAKPiAtICAg IGZvciggOyBhZGRyIDwgYWRkcl9lbmQ7IGFkZHIgKz0gUEFHRV9TSVpFICkKPiArICAgIGZvciAo IDsgYWRkciA8IGFkZHJfZW5kOyBhZGRyICs9IFBBR0VfU0laRSApCj4gICAgICB7Cj4gLSAgICAg ICAgcmMgPSB4ZW5fcHRfdXBkYXRlX2VudHJ5KGFkZHIsIG1mbiwgZmxhZ3MpOwo+ICsgICAgICAg IHJjID0geGVuX3B0X3VwZGF0ZV9lbnRyeShyb290LCBhZGRyLCBtZm4sIGZsYWdzKTsKPiAgICAg ICAgICBpZiAoIHJjICkKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gIAo+IC0tIAo+IDIuMTEuMAo+ IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==