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 3C904C31E44 for ; Wed, 12 Jun 2019 00:10:46 +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 0CA5A21721 for ; Wed, 12 Jun 2019 00:10:46 +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="TTfyDjLn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0CA5A21721 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 1haqqR-0001DQ-M9; Wed, 12 Jun 2019 00:10:27 +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 1haqqQ-0001DL-FO for xen-devel@lists.xenproject.org; Wed, 12 Jun 2019 00:10:26 +0000 X-Inumbo-ID: 79b05c1a-8ca6-11e9-a53e-e7ecf19bab9b Received: from mail.kernel.org (unknown [198.145.29.99]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 79b05c1a-8ca6-11e9-a53e-e7ecf19bab9b; Wed, 12 Jun 2019 00:10:24 +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 E7F6321734; Wed, 12 Jun 2019 00:10:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560298224; bh=MQ3Q3gLKmGprdtClpA3u7oUBFMEpjmQsRQdNOkGoe7o=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=TTfyDjLnuoxe5Auk/29mlCr3VVdTi1DGWNuP+CCwTX6AQlzw76nhelmMFwCMyb7F2 xdCh5JsVjJjFx+4nmBcdq57wffOzn4KHRS9/3mDz1gymOwCxKYAgAzjDy/U3ZjcRmg 8yWU0hj4rmvw4gNCqu+KstThlMOZiSQz42ejSKZQ= Date: Tue, 11 Jun 2019 17:10:21 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-T480s To: Julien Grall In-Reply-To: <20190514123125.29086-7-julien.grall@arm.com> Message-ID: References: <20190514123125.29086-1-julien.grall@arm.com> <20190514123125.29086-7-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 06/12] xen/arm: mm: Sanity check any update of Xen page tables 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+IFRoZSBjb2RlIGhhbmRs aW5nIFhlbiBQVCB1cGRhdGUgaGFzIHF1aXRlIGEgZmV3IHJlc3RyaWN0aW9ucyBvbiB3aGF0IGl0 Cj4gY2FuIGRvLiBUaGlzIGlzIG5vdCBhIGJhZCB0aGluZyBhcyBpdCBrZWVwcyB0aGUgY29kZSBz aW1wbGUuCj4gCj4gVGhlcmUgYXJlIGFscmVhZHkgYSBmZXcgY2hlY2tzIHNjYXR0ZXJlZCBpbiBj dXJyZW50IHBhZ2UgdGFibGUgaGFuZGxpbmcuCj4gSG93ZXZlciB0aGV5IGFyZSBub3Qgc3VmZmlj aWVudCBhcyB0aGV5IGNvdWxkIHN0aWxsIGFsbG93IHRvCj4gbW9kaWZ5L3JlbW92ZSBlbnRyeSB3 aXRoIGNvbnRpZ3VvdXMgYml0IHNldC4KPiAKPiBUaGUgY2hlY2tzIGFyZSBkaXZpZGVkIGluIHR3 byBzZXRzOgo+ICAgICAtIHBlciBlbnRyeSBjaGVjazogVGhleSBhcmUgZ2F0aGVyZWQgaW4gYSBu ZXcgZnVuY3Rpb24gdGhhdCB3aWxsCj4gICAgIGNoZWNrIHdoZXRoZXIgYW4gdXBkYXRlIGlzIHZh bGlkIGJhc2VkIG9uIHRoZSBmbGFncyBwYXNzZWQgYW5kIHRoZQo+ICAgICBjdXJyZW50IHZhbHVl IG9mIGFuIGVudHJ5Lgo+ICAgICAtIGdsb2JhbCBjaGVjazogVGhleSBhcmUgc2FuaXR5IGNoZWNr IG9uIHhlbl9wdF91cGRhdGUoKSBwYXJhbWV0ZXJzLgo+IAo+IEFkZGl0aW9uYWxseSB0byBjb250 aWd1b3VzIGNoZWNrLCB3ZSBhbHNvIG5vdyBjaGVjayB0aGF0IHRoZSBjYWxsZXIgaXMKPiBub3Qg dHJ5aW5nIHRvIG1vZGlmeSB0aGUgbWVtb3J5IGF0dHJpYnV0ZXMgb2YgYW4gZW50cnkuCj4gCj4g TGFzdGx5LCBpdCB3YXMgcHJvYmFibHkgYSBiaXQgb3ZlciB0aGUgdG9wIHRvIGZvcmJpZCByZW1v dmluZyBhbgo+IGludmFsaWQgbWFwcGluZy4gVGhpcyBjb3VsZCBqdXN0IGJlIGlnbm9yZWQuIFRo ZSBuZXcgYmVoYXZpb3Igd2lsbCBiZQo+IGhlbHBmdWwgaW4gZnV0dXJlIGNoYW5nZXMuCj4gCj4g U2lnbmVkLW9mZi1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBSZXZp ZXdlZC1ieTogQW5kcmlpIEFuaXNvdiA8YW5kcmlpX2FuaXNvdkBlcGFtLmNvbT4KPiAKPiAtLS0K PiAgICAgQ2hhbmdlcyBpbiB2MjoKPiAgICAgICAgIC0gQ29ycmVjdGx5IGRldGVjdCB0aGUgcmVt b3ZhbCBvZiBhIHBhZ2UKPiAgICAgICAgIC0gRml4IEFTU0VSVCBvbiBmbGFncyBpbiB0aGUgZWxz ZSBjYXNlCj4gICAgICAgICAtIEFkZCBBbmRyaWkncyByZXZpZXdlZC1ieQo+IC0tLQo+ICB4ZW4v YXJjaC9hcm0vbW0uYyB8IDExNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDE4 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbW0uYyBiL3hlbi9h cmNoL2FybS9tbS5jCj4gaW5kZXggMjE5MmRlZGU1NS4uNDVhNmY5Mjg3ZiAxMDA2NDQKPiAtLS0g YS94ZW4vYXJjaC9hcm0vbW0uYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9tbS5jCj4gQEAgLTUwLDYg KzUwLDE5IEBAIHN0cnVjdCBkb21haW4gKmRvbV94ZW4sICpkb21faW8sICpkb21fY293Owo+ICAj dW5kZWYgbWZuX3RvX3ZpcnQKPiAgI2RlZmluZSBtZm5fdG9fdmlydChtZm4pIF9fbWZuX3RvX3Zp cnQobWZuX3gobWZuKSkKPiAgCj4gKyNpZmRlZiBOREVCVUcKPiArc3RhdGljIGlubGluZSB2b2lk Cj4gK19fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpCj4gK21t X3ByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLikge30KPiArI2Vsc2UKPiArI2RlZmluZSBtbV9w cmludGsoZm10LCBhcmdzLi4uKSAgICAgICAgICAgICBcCj4gKyAgICBkbyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIGZtdCwgIyMg YXJncyk7ICBcCj4gKyAgICAgICAgV0FSTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ICsgICAgfSB3aGlsZSAoMCk7Cj4gKyNlbmRpZgo+ICsKPiAgI2RlZmluZSBERUZJTkVfUEFH RV9UQUJMRVMobmFtZSwgbnIpICAgICAgICAgICAgICAgICAgICBcCj4gIGxwYWVfdCBfX2FsaWdu ZWQoUEFHRV9TSVpFKSBuYW1lW0xQQUVfRU5UUklFUyAqIChucildCj4gIAo+IEBAIC05NjgsMTIg Kzk4MSw3NCBAQCBlbnVtIHhlbm1hcF9vcGVyYXRpb24gewo+ICAgICAgUkVTRVJWRQo+ICB9Owo+ ICAKPiArLyogU2FuaXR5IGNoZWNrIG9mIHRoZSBlbnRyeSAqLwo+ICtzdGF0aWMgYm9vbCB4ZW5f cHRfY2hlY2tfZW50cnkobHBhZV90IGVudHJ5LCBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFn cykKPiArewo+ICsgICAgLyogU2FuaXR5IGNoZWNrIHdoZW4gbW9kaWZ5aW5nIGEgcGFnZS4gKi8K PiArICAgIGlmICggKGZsYWdzICYgX1BBR0VfUFJFU0VOVCkgJiYgbWZuX2VxKG1mbiwgSU5WQUxJ RF9NRk4pICkKPiArICAgIHsKCkkgdW5kZXJzdGFuZCB3ZSBjb3VsZCBza2lwIHRoZSB2YWxpZCBj aGVjayBvbiBSRU1PVkUsIGJ1dCBzaG91bGQgd2Ugc2tpcAppdCBvbiBNT0RJRlkgdG9vPyBJcyB0 aGF0IGFsc28gZ29pbmcgdG8gYmUgaGVscGZ1bCBpbiBmdXR1cmUgY2hhbmdlcz8KCgo+ICsgICAg ICAgIC8qIFdlIGRvbid0IGFsbG93IGNoYW5naW5nIG1lbW9yeSBhdHRyaWJ1dGVzLiAqLwo+ICsg ICAgICAgIGlmICggZW50cnkucHQuYWkgIT0gUEFHRV9BSV9NQVNLKGZsYWdzKSApCj4gKyAgICAg ICAgewo+ICsgICAgICAgICAgICBtbV9wcmludGsoIk1vZGlmeWluZyBtZW1vcnkgYXR0cmlidXRl cyBpcyBub3QgYWxsb3dlZCAoMHgleCAtPiAweCV4KS5cbiIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICBlbnRyeS5wdC5haSwgUEFHRV9BSV9NQVNLKGZsYWdzKSk7Cj4gKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIC8qIFdlIGRvbid0IGFsbG93 IG1vZGlmeWluZyBlbnRyeSB3aXRoIGNvbnRpZ3VvdXMgYml0IHNldC4gKi8KPiArICAgICAgICBp ZiAoIGVudHJ5LnB0LmNvbnRpZyApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBtbV9wcmlu dGsoIk1vZGlmeWluZyBlbnRyeSB3aXRoIGNvbnRpZ3VvdXMgYml0IHNldCBpcyBub3QgYWxsb3dl ZC5cbiIpOwo+ICsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKyAgICAgICAgfQo+ICsgICAg fQo+ICsgICAgLyogU2FuaXR5IGNoZWNrIHdoZW4gaW5zZXJ0aW5nIGEgcGFnZSAqLwo+ICsgICAg ZWxzZSBpZiAoIGZsYWdzICYgX1BBR0VfUFJFU0VOVCApCj4gKyAgICB7Cj4gKyAgICAgICAgLyog V2Ugc2hvdWxkIGJlIGhlcmUgd2l0aCBhIHZhbGlkIE1GTi4gKi8KPiArICAgICAgICBBU1NFUlQo IW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSk7Cj4gKwo+ICsgICAgICAgIC8qIFdlIGRvbid0IGFs bG93IHJlcGxhY2luZyBhbnkgdmFsaWQgZW50cnkuICovCj4gKyAgICAgICAgaWYgKCBscGFlX2lz X3ZhbGlkKGVudHJ5KSApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBtbV9wcmludGsoIkNo YW5naW5nIE1GTiBmb3IgYSB2YWxpZCBlbnRyeSBpcyBub3QgYWxsb3dlZCAoJSMiUFJJX21mbiIg LT4gJSMiUFJJX21mbiIpLlxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgIG1mbl94KGxwYWVf Z2V0X21mbihlbnRyeSkpLCBtZm5feChtZm4pKTsKPiArICAgICAgICAgICAgcmV0dXJuIGZhbHNl Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIC8qIFNhbml0eSBjaGVjayB3aGVuIHJlbW92 aW5nIGEgcGFnZS4gKi8KPiArICAgIGVsc2UgaWYgKCAoZmxhZ3MgJiAoX1BBR0VfUFJFU0VOVHxf UEFHRV9QT1BVTEFURSkpID09IDAgKQo+ICsgICAgewo+ICsgICAgICAgIC8qIFdlIHNob3VsZCBi ZSBoZXJlIHdpdGggYW4gaW52YWxpZCBNRk4uICovCj4gKyAgICAgICAgQVNTRVJUKG1mbl9lcSht Zm4sIElOVkFMSURfTUZOKSk7Cj4gKwo+ICsgICAgICAgIC8qIFdlIGRvbid0IGFsbG93IHJlbW92 aW5nIHBhZ2Ugd2l0aCBjb250aWd1b3VzIGJpdCBzZXQuICovCj4gKyAgICAgICAgaWYgKCBlbnRy eS5wdC5jb250aWcgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgbW1fcHJpbnRrKCJSZW1v dmluZyBlbnRyeSB3aXRoIGNvbnRpZ3VvdXMgYml0IHNldCBpcyBub3QgYWxsb3dlZC5cbiIpOwo+ ICsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAg LyogU2FuaXR5IGNoZWNrIHdoZW4gcG9wdWxhdGluZyB0aGUgcGFnZS10YWJsZS4gTm8gY2hlY2sg c28gZmFyLiAqLwo+ICsgICAgZWxzZQo+ICsgICAgewo+ICsgICAgICAgIEFTU0VSVChmbGFncyAm IF9QQUdFX1BPUFVMQVRFKTsKPiArICAgICAgICAvKiBXZSBzaG91bGQgYmUgaGVyZSB3aXRoIGFu IGludmFsaWQgTUZOICovCj4gKyAgICAgICAgQVNTRVJUKG1mbl9lcShtZm4sIElOVkFMSURfTUZO KSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIHN0YXRpYyBp bnQgeGVuX3B0X3VwZGF0ZV9lbnRyeShlbnVtIHhlbm1hcF9vcGVyYXRpb24gb3AsIHVuc2lnbmVk IGxvbmcgYWRkciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1mbiwg dW5zaWduZWQgaW50IGZsYWdzKQo+ICB7Cj4gICAgICBscGFlX3QgcHRlLCAqZW50cnk7Cj4gICAg ICBscGFlX3QgKnRoaXJkID0gTlVMTDsKPiAgCj4gKyAgICAvKiBfUEFHRV9QT1BVTEFURSBhbmQg X1BBR0VfUFJFU0VOVCBzaG91bGQgbmV2ZXIgYmUgc2V0IHRvZ2V0aGVyLiAqLwo+ICsgICAgQVNT RVJUKChmbGFncyAmIChfUEFHRV9QT1BVTEFURXxfUEFHRV9QUkVTRU5UKSkgIT0gKF9QQUdFX1BP UFVMQVRFfF9QQUdFX1BSRVNFTlQpKTsKCm92ZXIgODAgY2hhcnM/CgoKPiAgICAgIGVudHJ5ID0g Jnhlbl9zZWNvbmRbc2Vjb25kX2xpbmVhcl9vZmZzZXQoYWRkcildOwo+ICAgICAgaWYgKCAhbHBh ZV9pc192YWxpZCgqZW50cnkpIHx8ICFscGFlX2lzX3RhYmxlKCplbnRyeSwgMikgKQo+ICAgICAg ewo+IEBAIC05ODksMTUgKzEwNjQsMTIgQEAgc3RhdGljIGludCB4ZW5fcHRfdXBkYXRlX2VudHJ5 KGVudW0geGVubWFwX29wZXJhdGlvbiBvcCwgdW5zaWduZWQgbG9uZyBhZGRyLAo+ICAgICAgdGhp cmQgPSBtZm5fdG9fdmlydChscGFlX2dldF9tZm4oKmVudHJ5KSk7Cj4gICAgICBlbnRyeSA9ICZ0 aGlyZFt0aGlyZF90YWJsZV9vZmZzZXQoYWRkcildOwo+ICAKPiArICAgIGlmICggIXhlbl9wdF9j aGVja19lbnRyeSgqZW50cnksIG1mbiwgZmxhZ3MpICkKPiArICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiArCj4gICAgICBzd2l0Y2ggKCBvcCApIHsKPiAgICAgICAgICBjYXNlIElOU0VSVDoKPiAg ICAgICAgICBjYXNlIFJFU0VSVkU6Cj4gLSAgICAgICAgICAgIGlmICggbHBhZV9pc192YWxpZCgq ZW50cnkpICkKPiAtICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgcHJpbnRrKCIlczog dHJ5aW5nIHRvIHJlcGxhY2UgYW4gZXhpc3RpbmcgbWFwcGluZyBhZGRyPSVseCBtZm49JSJQUklf bWZuIlxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYWRkciwgbWZuX3go bWZuKSk7Cj4gLSAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgICAgICAg fQo+ICAgICAgICAgICAgICBpZiAoIG9wID09IFJFU0VSVkUgKQo+ICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4gICAgICAgICAgICAgIHB0ZSA9IG1mbl90b194ZW5fZW50cnkobWZuLCBQQUdFX0FJ X01BU0soZmxhZ3MpKTsKPiBAQCAtMTAwOSwxMiArMTA4MSw2IEBAIHN0YXRpYyBpbnQgeGVuX3B0 X3VwZGF0ZV9lbnRyeShlbnVtIHhlbm1hcF9vcGVyYXRpb24gb3AsIHVuc2lnbmVkIGxvbmcgYWRk ciwKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgY2FzZSBNT0RJRlk6Cj4gICAgICAg ICAgY2FzZSBSRU1PVkU6Cj4gLSAgICAgICAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5 KSApCj4gLSAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgIHByaW50aygiJXM6IHRyeWlu ZyB0byAlcyBhIG5vbi1leGlzdGluZyBtYXBwaW5nIGFkZHI9JWx4XG4iLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgIF9fZnVuY19fLCBvcCA9PSBSRU1PVkUgPyAicmVtb3ZlIiA6ICJtb2RpZnki LCBhZGRyKTsKPiAtICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgICAg ICB9Cj4gICAgICAgICAgICAgIGlmICggb3AgPT0gUkVNT1ZFICkKPiAgICAgICAgICAgICAgICAg IHB0ZS5iaXRzID0gMDsKPiAgICAgICAgICAgICAgZWxzZQo+IEBAIC0xMDIyLDEyICsxMDg4LDYg QEAgc3RhdGljIGludCB4ZW5fcHRfdXBkYXRlX2VudHJ5KGVudW0geGVubWFwX29wZXJhdGlvbiBv cCwgdW5zaWduZWQgbG9uZyBhZGRyLAo+ICAgICAgICAgICAgICAgICAgcHRlID0gKmVudHJ5Owo+ ICAgICAgICAgICAgICAgICAgcHRlLnB0LnJvID0gUEFHRV9ST19NQVNLKGZsYWdzKTsKPiAgICAg ICAgICAgICAgICAgIHB0ZS5wdC54biA9IFBBR0VfWE5fTUFTSyhmbGFncyk7Cj4gLSAgICAgICAg ICAgICAgICBpZiAoICFwdGUucHQucm8gJiYgIXB0ZS5wdC54biApCj4gLSAgICAgICAgICAgICAg ICB7Cj4gLSAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCIlczogSW5jb3JyZWN0IGNvbWJpbmF0 aW9uIGZvciBhZGRyPSVseFxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5j X18sIGFkZHIpOwo+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAg ICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgIHdyaXRlX3B0ZShl bnRyeSwgcHRlKTsKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gQEAgLTEwNDksNiArMTEwOSwyNSBA QCBzdGF0aWMgaW50IHhlbl9wdF91cGRhdGUoZW51bSB4ZW5tYXBfb3BlcmF0aW9uIG9wLAo+ICAg ICAgaW50IHJjID0gMDsKPiAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9IHZpcnQsIGFkZHJfZW5k ID0gYWRkciArIG5yX21mbnMgKiBQQUdFX1NJWkU7Cj4gIAo+ICsgICAgLyoKPiArICAgICAqIFRo ZSBoYXJkd2FyZSB3YXMgY29uZmlndXJlZCB0byBmb3JiaWQgbWFwcGluZyBib3RoIHdyaXRlYWJs ZSBhbmQKPiArICAgICAqIGV4ZWN1dGFibGUuCj4gKyAgICAgKiBXaGVuIG1vZGlmeWluZy9jcmVh dGluZyBtYXBwaW5nIChpLmUgX1BBR0VfUFJFU0VOVCBpcyBzZXQpLAo+ICsgICAgICogcHJldmVu dCBhbnkgdXBkYXRlIGlmIHRoaXMgaGFwcGVuLgo+ICsgICAgICovCj4gKyAgICBpZiAoIChmbGFn cyAmIF9QQUdFX1BSRVNFTlQpICYmICFQQUdFX1JPX01BU0soZmxhZ3MpICYmCj4gKyAgICAgICAg ICFQQUdFX1hOX01BU0soZmxhZ3MpICkKPiArICAgIHsKPiArICAgICAgICBtbV9wcmludGsoIk1h cHBpbmdzIHNob3VsZCBub3QgYmUgYm90aCBXcml0ZWFibGUgYW5kIEV4ZWN1dGFibGUuXG4iKTsK PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgIH0KCkkgYW0gdGhpbmtpbmcgdGhpcyBp cyBzZXJpb3VzIGVub3VnaCB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gYWx3YXlzIHByaW50CnRoaXMg d2FybmluZyB3aGVuIHRoaXMgZXJyb3IgaGFwcGVucy4gQXQgdGhlIHNhbWUgdGltZSBpdCBpcyBh d2t3YXJkIHRvCmhhdmUgYWxsIHRoZSBvdGhlciBtZXNzYWdlcyB1c2luZyBtbV9wcmludGsgYW5k IG9ubHkgdGhpcyBvbmUgYmVpbmcKZGlmZmVyZW50LiBTbyBJJ2xsIGxpdmUgaXQgdG8geW91LCBp dCBpcyBhbHNvIE9LIGF0IHRoaXMuCgoKPiArICAgIGlmICggIUlTX0FMSUdORUQodmlydCwgUEFH RV9TSVpFKSApCj4gKyAgICB7Cj4gKyAgICAgICAgbW1fcHJpbnRrKCJUaGUgdmlydHVhbCBhZGRy ZXNzIGlzIG5vdCBhbGlnbmVkIHRvIHRoZSBwYWdlLXNpemUuXG4iKTsKPiArICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPiArICAgIH0KPiArCj4gICAgICBzcGluX2xvY2soJnhlbl9wdF9sb2NrKTsK PiAgCj4gICAgICBmb3IoIDsgYWRkciA8IGFkZHJfZW5kOyBhZGRyICs9IFBBR0VfU0laRSApCj4g LS0gCj4gMi4xMS4wCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs