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=-5.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 D8E9DC2D0F7 for ; Tue, 12 May 2020 15:47:28 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 A936920674 for ; Tue, 12 May 2020 15:47:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="JPGoM9qc" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A936920674 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mcHakstNU+vQPCykh1hTZTrvXbzPeCBbXknB3jv4Us8=; b=JPGoM9qch0Bzwn iCpvWroVg0pvos57/ywGyvVoLmUr4i0vIWvDw4Klx9AIQ4DQ+wszRKEMiGhoe/oi1E+R6kqCmoWfz 1SmyM1Fhxqx0bBPsSkEnnCCbUNQqX7rIvjD3hLFTFo68Vnr/f4W2AdJrhufPQwrKehBvCAN8Q7Hhu tPz111MqaAMQ/QRSFOv0gSKCh7ZW4A7JXI3fXng6n9VugNUNbOpxcVCzoRrWvm0ipXVT8eai22NYW tG1qYD8OzP00yAvQg3rSY6reiBb+dkL1Xx4gZzhzJHIdnW6jKxcazjqwJZxKJnVAWLo+ePJKPPWa2 4tcxmmULYeRaFa7qzvPw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYX7w-00058x-AE; Tue, 12 May 2020 15:47:28 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYX7q-00057n-Q0 for linux-arm-kernel@lists.infradead.org; Tue, 12 May 2020 15:47:26 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B7BA71FB; Tue, 12 May 2020 08:47:20 -0700 (PDT) Received: from [192.168.0.110] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 80A763F305; Tue, 12 May 2020 08:47:18 -0700 (PDT) Subject: Re: [PATCH 03/26] KVM: arm64: Factor out stage 2 page table data from struct kvm To: James Morse , Marc Zyngier References: <20200422120050.3693593-1-maz@kernel.org> <20200422120050.3693593-4-maz@kernel.org> <76d811eb-b304-c49f-1f21-fe9d95112a28@arm.com> From: Alexandru Elisei Message-ID: <5134e123-18ec-9b69-2e0a-b83798e01507@arm.com> Date: Tue, 12 May 2020 16:47:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <76d811eb-b304-c49f-1f21-fe9d95112a28@arm.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200512_084724_490566_20F638CB X-CRM114-Status: GOOD ( 32.18 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , kvm@vger.kernel.org, Suzuki K Poulose , Jintack Lim , Andre Przywara , Christoffer Dall , kvmarm@lists.cs.columbia.edu, George Cherian , Julien Thierry , "Zengtao \(B\)" , Catalin Marinas , Will Deacon , Dave Martin , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpPbiA1LzEyLzIwIDEyOjE3IFBNLCBKYW1lcyBNb3JzZSB3cm90ZToKPiBIaSBBbGV4LCBN YXJjLAo+Cj4gKGp1c3Qgb24gdGhpcyBsYXN0X3ZjcHVfcmFuIHRoaW5nLi4uKQo+Cj4gT24gMTEv MDUvMjAyMCAxNzozOCwgQWxleGFuZHJ1IEVsaXNlaSB3cm90ZToKPj4gT24gNC8yMi8yMCAxOjAw IFBNLCBNYXJjIFp5bmdpZXIgd3JvdGU6Cj4+PiBGcm9tOiBDaHJpc3RvZmZlciBEYWxsIDxjaHJp c3RvZmZlci5kYWxsQGFybS5jb20+Cj4+Pgo+Pj4gQXMgd2UgYXJlIGFib3V0IHRvIHJldXNlIG91 ciBzdGFnZSAyIHBhZ2UgdGFibGUgbWFuaXB1bGF0aW9uIGNvZGUgZm9yCj4+PiBzaGFkb3cgc3Rh Z2UgMiBwYWdlIHRhYmxlcyBpbiB0aGUgY29udGV4dCBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24s IHdlCj4+PiBhcmUgZ29pbmcgdG8gbWFuYWdlIG11bHRpcGxlIHN0YWdlIDIgcGFnZSB0YWJsZXMg Zm9yIGEgc2luZ2xlIFZNLgo+Pj4KPj4+IFRoaXMgcmVxdWlyZXMgc29tZSBwcmV0dHkgaW52YXNp dmUgY2hhbmdlcyB0byBvdXIgZGF0YSBzdHJ1Y3R1cmVzLAo+Pj4gd2hpY2ggbW92ZXMgdGhlIHZt aWQgYW5kIHBnZCBwb2ludGVycyBpbnRvIGEgc2VwYXJhdGUgc3RydWN0dXJlIGFuZAo+Pj4gY2hh bmdlIHByZXR0eSBtdWNoIGFsbCBvZiBvdXIgbW11IGNvZGUgdG8gb3BlcmF0ZSBvbiB0aGlzIHN0 cnVjdHVyZQo+Pj4gaW5zdGVhZC4KPj4+Cj4+PiBUaGUgbmV3IHN0cnVjdHVyZSBpcyBjYWxsZWQg c3RydWN0IGt2bV9zMl9tbXUuCj4+Pgo+Pj4gVGhlcmUgaXMgbm8gaW50ZW5kZWQgZnVuY3Rpb25h bCBjaGFuZ2UgYnkgdGhpcyBwYXRjaCBhbG9uZS4KPj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0 LmgKPj4+IGluZGV4IDdkZDhmZWZhNmFlY2QuLjY2NGE1ZDkyYWU5YjggMTAwNjQ0Cj4+PiAtLS0g YS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKPj4+ICsrKyBiL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+Pj4gQEAgLTYzLDE5ICs2MywzMiBAQCBzdHJ1Y3Qga3Zt X3ZtaWQgewo+Pj4gIAl1MzIgICAgdm1pZDsKPj4+ICB9Owo+Pj4gIAo+Pj4gLXN0cnVjdCBrdm1f YXJjaCB7Cj4+PiArc3RydWN0IGt2bV9zMl9tbXUgewo+Pj4gIAlzdHJ1Y3Qga3ZtX3ZtaWQgdm1p ZDsKPj4+ICAKPj4+IC0JLyogc3RhZ2UyIGVudHJ5IGxldmVsIHRhYmxlICovCj4+PiAtCXBnZF90 ICpwZ2Q7Cj4+PiAtCXBoeXNfYWRkcl90IHBnZF9waHlzOwo+Pj4gLQo+Pj4gLQkvKiBWVENSX0VM MiB2YWx1ZSBmb3IgdGhpcyBWTSAqLwo+Pj4gLQl1NjQgICAgdnRjcjsKPj4+ICsJLyoKPj4+ICsJ ICogc3RhZ2UyIGVudHJ5IGxldmVsIHRhYmxlCj4+PiArCSAqCj4+PiArCSAqIFR3byBrdm1fczJf bW11IHN0cnVjdHVyZXMgaW4gdGhlIHNhbWUgVk0gY2FuIHBvaW50IHRvIHRoZSBzYW1lIHBnZAo+ Pj4gKwkgKiBoZXJlLiAgVGhpcyBoYXBwZW5zIHdoZW4gcnVubmluZyBhIG5vbi1WSEUgZ3Vlc3Qg aHlwZXJ2aXNvciB3aGljaAo+Pj4gKwkgKiB1c2VzIHRoZSBjYW5vbmljYWwgc3RhZ2UgMiBwYWdl IHRhYmxlIGZvciBib3RoIHZFTDIgYW5kIGZvciB2RUwxLzAKPj4+ICsJICogd2l0aCB2SENSX0VM Mi5WTSA9PSAwLgo+PiBJdCBtYWtlcyBtb3JlIHNlbnNlIHRvIG1lIHRvIHNheSB0aGF0IGEgbm9u LVZIRSBndWVzdCBoeXBlcnZpc29yIHdpbGwgdXNlIHRoZQo+PiBjYW5vbmljYWwgc3RhZ2UgKjEq IHBhZ2UgdGFibGUgd2hlbiBydW5uaW5nIGF0IEVMMgo+IENhbiBLVk0gc2F5IGFueXRoaW5nIGFi b3V0IHN0YWdlMT8gSXRzIHRvdGFsbHkgdW5kZXIgdGhlIHRoZSBndWVzdHMgY29udHJvbCBldmVu IGF0IHZFTDIuLi4KCkl0IGlzLiBNeSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgY29tbWVudCB3YXMg dGhhdCBpZiB0aGUgZ3Vlc3QgZG9lc24ndCBoYXZlIHZpcnR1YWwKc3RhZ2UgMiBlbmFibGVkICh3 ZSdyZSBub3QgcnVubmluZyBhIGd1ZXN0IG9mIHRoZSBMMSBoeXBlcnZpc29yKSwgdGhlbiB0aGUg TDAgaG9zdApjYW4gdXNlIHRoZSBzYW1lIEwwIHN0YWdlIDIgdGFibGVzIGJlY2F1c2Ugd2UncmUg cnVubmluZyB0aGUgc2FtZSBndWVzdCAodGhlIEwxClZNKSwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0 dWFsIGV4Y2VwdGlvbiBsZXZlbCBmb3IgdGhlIGd1ZXN0LiBJZiBJIHJlbWVtYmVyCmNvcnJlY3Rs eSwgS1ZNIGFzc2lnbnMgZGlmZmVyZW50IHZtaWRzIGZvciBndWVzdHMgcnVubmluZyBhdCB2RUwx LzAgYW5kIHZFTDIgd2l0aAp2SENSX0VMMi5WTSA9PSAwIGJlY2F1c2UgdGhlIHRyYW5zbGF0aW9u IHJlZ2ltZXMgYXJlIGRpZmZlcmVudCwgYnV0IGtlZXBzIHRoZSBzYW1lCnRyYW5zbGF0aW9uIHRh Ymxlcy4KCj4KPgo+PiAodGhlICJOb24tc2VjdXJlIEVMMiB0cmFuc2xhdGlvbiByZWdpbWUiIGFz IEFSTSBEREkgMDQ4N0YuYiBjYWxscyBpdCBvbiBwYWdlIEQ1LTI1NDMpLgo+PiBJIHRoaW5rIHRo YXQncwo+PiB0aGUgb25seSBzaXR1YXRpb24gd2hlcmUgdkVMMiBhbmQgdkVMMSYwIHdpbGwgdXNl IHRoZSBzYW1lIEwwIHN0YWdlIDIgdGFibGVzLiBJdCdzCj4+IGJlZW4gcXVpdGUgc29tZSB0aW1l IHNpbmNlIEkgcmV2aWV3ZWQgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgTlYgcGF0Y2hlcywg ZGlkIEkKPj4gZ2V0IHRoYXQgd3Jvbmc/Cj4KPj4+ICsJICovCj4+PiArCXBnZF90CQkqcGdkOwo+ Pj4gKwlwaHlzX2FkZHJfdAlwZ2RfcGh5czsKPj4+ICAKPj4+ICAJLyogVGhlIGxhc3QgdmNwdSBp ZCB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVSAqLwo+Pj4gIAlpbnQgX19wZXJjcHUgKmxh c3RfdmNwdV9yYW47Cj4+IEl0IG1ha2VzIHNlbnNlIGZvciB0aGUgb3RoZXIgZmllbGRzIHRvIGJl IHBhcnQgb2Yga3ZtX3MyX21tdSwgYnV0IEknbSBzdHJ1Z2dsaW5nCj4+IHRvIGZpZ3VyZSBvdXQg d2h5IGxhc3RfdmNwdV9yYW4gaXMgaGVyZS4gV291bGQgeW91IG1pbmQgc2hhcmluZyB0aGUgcmF0 aW9uYWxlPyBJCj4+IGRvbid0IHNlZSB0aGlzIGNoYW5nZSBpbiB2MSBvciB2MiBvZiB0aGUgTlYg c2VyaWVzLgo+IE1hcmMgbWF5IGhhdmUgYSBiZXR0ZXIgcmF0aW9uYWxlLiBNeSB0aGlua2luZyB3 YXMgYmVjYXVzZSBrdm1fdm1pZCBpcyBpbiBoZXJlIHRvby4KPgo+IGxhc3RfdmNwdV9yYW4gZXhp c3RzIHRvIHByZXZlbnQgS1ZNIGFjY2lkZW50YWxseSBlbXVsYXRpbmcgQ05QIHdpdGhvdXQgdGhl IG9wdC1pbi4gKHdlCj4gY2FsbCBpdCBkZWZhY3RvIENOUCkuCj4KPiBUaGUgZ3Vlc3QgbWF5IGV4 cGVjdCB0byBiZSBhYmxlIHRvIHVzZSBhc2lkLTQgd2l0aCBkaWZmZXJlbnQgcGFnZSB0YWJsZXMg b24gZGlmZmVyZW50CgpJJ20gYWZyYWlkIEkgZG9uJ3Qga25vdyB3aGF0IGFzaWQtNCBpcy4KCj4g dkNQVXMsIGFzc3VtaW5nIHRoZSBUTEIgaXNuJ3Qgc2hhcmVkLiBCdXQgaWYgS1ZNIGlzIHN3aXRj aGluZyBiZXR3ZWVuIHRob3NlIHZDUFUgb24gb25lCj4gcGh5c2ljYWwgQ1BVLCB0aGUgVExCIGlz IHNoYXJlZCwgLi4uIHRoZSBWTUlEIGFuZCBBU0lEIGFyZSB0aGUgc2FtZSwgYnV0IHRoZSBwYWdl IHRhYmxlcwo+IGFyZSBub3QuIE5vdCBmdW4gdG8gZGVidWchCj4KPgo+IE5WIG1ha2VzIHRoaXMg cHJvYmxlbSBwZXItc3RhZ2UyLCBiZWNhdXNlIGVhY2ggc3RhZ2UyIGhhcyBpdHMgb3duIFZNSUQs IHdlIG5lZWQgdG8gdHJhY2sKPiB0aGUgdmNwdV9pZCB0aGF0IGxhc3QgcmFuIHRoaXMgc3RhZ2Uy IG9uIHRoaXMgcGh5c2ljYWwgQ1BVLiBJZiBpdHMgbm90IHRoZSBzYW1lLCB3ZSBuZWVkCj4gdG8g YmxvdyBhd2F5IHRoaXMgVk1JRHMgVExCIGVudHJpZXMuCj4KPiBUaGUgd29ya2Fyb3VuZCBsaXZl cyBpbiB2aXJ0L2t2bS9hcm0vYXJtLmM6Omt2bV9hcmNoX3ZjcHVfbG9hZCgpCgpNYWtlcyBzZW5z ZSwgdGhhbmsgeW91IGZvciBleHBsYWluaW5nIHRoYXQuCgpUaGFua3MsCkFsZXgKPgo+Cj4+IE1v cmUgYmVsb3cuCj4gKGxpZ2h0bHkgdHJpbW1lZCEpCj4KPiBUaGFua3MsCj4KPiBKYW1lcwo+Cj4K Pj4+ICAKPj4+ICsJc3RydWN0IGt2bSAqa3ZtOwo+Pj4gK307Cj4gWy4uLl0KPgo+Pj4gZGlmZiAt LWdpdCBhL3ZpcnQva3ZtL2FybS9hcm0uYyBiL3ZpcnQva3ZtL2FybS9hcm0uYwo+Pj4gaW5kZXgg NTNiM2JhOTE3M2JhNy4uMDNmMDFmY2ZhMmJkNSAxMDA2NDQKPj4+IC0tLSBhL3ZpcnQva3ZtL2Fy bS9hcm0uYwo+Pj4gKysrIGIvdmlydC9rdm0vYXJtL2FybS5jCj4+IFRoZXJlJ3MgYSBjb21tZW50 IHRoYXQgc3RpbGwgbWVudGlvbnMgYXJjaC52bWlkIHRoYXQgeW91IG1pc3NlZCBpbiB0aGlzIGZp bGU6Cj4+Cj4+IHN0YXRpYyBib29sIG5lZWRfbmV3X3ZtaWRfZ2VuKHN0cnVjdCBrdm1fdm1pZCAq dm1pZCkKPj4gewo+PiDCoMKgwqAgdTY0IGN1cnJlbnRfdm1pZF9nZW4gPSBhdG9taWM2NF9yZWFk KCZrdm1fdm1pZF9nZW4pOwo+PiDCoMKgwqAgc21wX3JtYigpOyAvKiBPcmRlcnMgcmVhZCBvZiBr dm1fdm1pZF9nZW4gYW5kIGt2bS0+YXJjaC52bWlkICovCj4+Cj4gWy4uXQo+Cj4+PiBkaWZmIC0t Z2l0IGEvdmlydC9rdm0vYXJtL21tdS5jIGIvdmlydC9rdm0vYXJtL21tdS5jCj4+PiBpbmRleCBl M2I5ZWUyNjg4MjNiLi4yZjk5NzQ5MDQ4Mjg1IDEwMDY0NAo+Pj4gLS0tIGEvdmlydC9rdm0vYXJt L21tdS5jCj4+PiArKysgYi92aXJ0L2t2bS9hcm0vbW11LmMKPj4+IEBAIC04ODYsMjEgKzg5OCwy MyBAQCBpbnQgY3JlYXRlX2h5cF9leGVjX21hcHBpbmdzKHBoeXNfYWRkcl90IHBoeXNfYWRkciwg c2l6ZV90IHNpemUsCj4+PiAgfQo+Pj4gIAo+Pj4gIC8qKgo+Pj4gLSAqIGt2bV9hbGxvY19zdGFn ZTJfcGdkIC0gYWxsb2NhdGUgbGV2ZWwtMSB0YWJsZSBmb3Igc3RhZ2UtMiB0cmFuc2xhdGlvbi4K Pj4+IC0gKiBAa3ZtOglUaGUgS1ZNIHN0cnVjdCBwb2ludGVyIGZvciB0aGUgVk0uCj4+PiArICog a3ZtX2luaXRfc3RhZ2UyX21tdSAtIEluaXRpYWxpc2UgYSBTMiBNTVUgc3RydWNydXJlCj4+PiAr ICogQGt2bToJVGhlIHBvaW50ZXIgdG8gdGhlIEtWTSBzdHJ1Y3R1cmUKPj4+ICsgKiBAbW11OglU aGUgcG9pbnRlciB0byB0aGUgczIgTU1VIHN0cnVjdHVyZQo+Pj4gICAqCj4+PiAgICogQWxsb2Nh dGVzIG9ubHkgdGhlIHN0YWdlLTIgSFcgUEdEIGxldmVsIHRhYmxlKHMpIG9mIHNpemUgZGVmaW5l ZCBieQo+Pj4gLSAqIHN0YWdlMl9wZ2Rfc2l6ZShrdm0pLgo+Pj4gKyAqIHN0YWdlMl9wZ2Rfc2l6 ZShtbXUtPmt2bSkuCj4+PiAgICoKPj4+ICAgKiBOb3RlIHdlIGRvbid0IG5lZWQgbG9ja2luZyBo ZXJlIGFzIHRoaXMgaXMgb25seSBjYWxsZWQgd2hlbiB0aGUgVk0gaXMKPj4+ICAgKiBjcmVhdGVk LCB3aGljaCBjYW4gb25seSBiZSBkb25lIG9uY2UuCj4+PiAgICovCj4+PiAtaW50IGt2bV9hbGxv Y19zdGFnZTJfcGdkKHN0cnVjdCBrdm0gKmt2bSkKPj4+ICtpbnQga3ZtX2luaXRfc3RhZ2UyX21t dShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUpCj4+PiAgewo+Pj4gIAlw aHlzX2FkZHJfdCBwZ2RfcGh5czsKPj4+ICAJcGdkX3QgKnBnZDsKPj4+ICsJaW50IGNwdTsKPj4+ ICAKPj4+IC0JaWYgKGt2bS0+YXJjaC5wZ2QgIT0gTlVMTCkgewo+Pj4gKwlpZiAobW11LT5wZ2Qg IT0gTlVMTCkgewo+Pj4gIAkJa3ZtX2Vycigia3ZtX2FyY2ggYWxyZWFkeSBpbml0aWFsaXplZD9c biIpOwo+Pj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4+PiAgCX0KPj4+IEBAIC05MTQsOCArOTI4LDIw IEBAIGludCBrdm1fYWxsb2Nfc3RhZ2UyX3BnZChzdHJ1Y3Qga3ZtICprdm0pCj4+PiAgCWlmIChX QVJOX09OKHBnZF9waHlzICYgfmt2bV92dHRicl9iYWRkcl9tYXNrKGt2bSkpKQo+PiBXZSBkb24n dCBmcmVlIHRoZSBwZ2QgaGVyZSwgYnV0IHdlIGRvIGZyZWUgaXQgaWYgYWxsb2NfcGVyY3B1IGZh aWxzLiBJcyB0aGF0Cj4+IGludGVudGlvbmFsPwo+Cj4+PiAgCQlyZXR1cm4gLUVJTlZBTDsKPj4+ ICAKPj4+IC0Ja3ZtLT5hcmNoLnBnZCA9IHBnZDsKPj4+IC0Ja3ZtLT5hcmNoLnBnZF9waHlzID0g cGdkX3BoeXM7Cj4+PiArCW1tdS0+bGFzdF92Y3B1X3JhbiA9IGFsbG9jX3BlcmNwdSh0eXBlb2Yo Km1tdS0+bGFzdF92Y3B1X3JhbikpOwo+Pj4gKwlpZiAoIW1tdS0+bGFzdF92Y3B1X3Jhbikgewo+ Pj4gKwkJZnJlZV9wYWdlc19leGFjdChwZ2QsIHN0YWdlMl9wZ2Rfc2l6ZShrdm0pKTsKPj4+ICsJ CXJldHVybiAtRU5PTUVNOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWZvcl9lYWNoX3Bvc3NpYmxlX2Nw dShjcHUpCj4+PiArCQkqcGVyX2NwdV9wdHIobW11LT5sYXN0X3ZjcHVfcmFuLCBjcHUpID0gLTE7 Cj4+PiArCj4+PiArCW1tdS0+a3ZtID0ga3ZtOwo+Pj4gKwltbXUtPnBnZCA9IHBnZDsKPj4+ICsJ bW11LT5wZ2RfcGh5cyA9IHBnZF9waHlzOwo+Pj4gKwltbXUtPnZtaWQudm1pZF9nZW4gPSAwOwo+ Pj4gKwo+Pj4gIAlyZXR1cm4gMDsKPj4+ICB9Cj4+PiAgCj4+PiBAQCAtOTg2LDM5ICsxMDEyLDM0 IEBAIHZvaWQgc3RhZ2UyX3VubWFwX3ZtKHN0cnVjdCBrdm0gKmt2bSkKPj4+ICAJc3JjdV9yZWFk X3VubG9jaygma3ZtLT5zcmN1LCBpZHgpOwo+Pj4gIH0KPj4+ICAKPj4+IC0vKioKPj4+IC0gKiBr dm1fZnJlZV9zdGFnZTJfcGdkIC0gZnJlZSBhbGwgc3RhZ2UtMiB0YWJsZXMKPj4+IC0gKiBAa3Zt OglUaGUgS1ZNIHN0cnVjdCBwb2ludGVyIGZvciB0aGUgVk0uCj4+PiAtICoKPj4+IC0gKiBXYWxr cyB0aGUgbGV2ZWwtMSBwYWdlIHRhYmxlIHBvaW50ZWQgdG8gYnkga3ZtLT5hcmNoLnBnZCBhbmQg ZnJlZXMgYWxsCj4+PiAtICogdW5kZXJseWluZyBsZXZlbC0yIGFuZCBsZXZlbC0zIHRhYmxlcyBi ZWZvcmUgZnJlZWluZyB0aGUgYWN0dWFsIGxldmVsLTEgdGFibGUKPj4+IC0gKiBhbmQgc2V0dGlu ZyB0aGUgc3RydWN0IHBvaW50ZXIgdG8gTlVMTC4KPj4+IC0gKi8KPj4+IC12b2lkIGt2bV9mcmVl X3N0YWdlMl9wZ2Qoc3RydWN0IGt2bSAqa3ZtKQo+Pj4gK3ZvaWQga3ZtX2ZyZWVfc3RhZ2UyX3Bn ZChzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11KQo+Pj4gIHsKPj4+ICsJc3RydWN0IGt2bSAqa3ZtID0g bW11LT5rdm07Cj4+PiAgCXZvaWQgKnBnZCA9IE5VTEw7Cj4+PiAgCj4+PiAgCXNwaW5fbG9jaygm a3ZtLT5tbXVfbG9jayk7Cj4+PiAtCWlmIChrdm0tPmFyY2gucGdkKSB7Cj4+PiAtCQl1bm1hcF9z dGFnZTJfcmFuZ2Uoa3ZtLCAwLCBrdm1fcGh5c19zaXplKGt2bSkpOwo+Pj4gLQkJcGdkID0gUkVB RF9PTkNFKGt2bS0+YXJjaC5wZ2QpOwo+Pj4gLQkJa3ZtLT5hcmNoLnBnZCA9IE5VTEw7Cj4+PiAt CQlrdm0tPmFyY2gucGdkX3BoeXMgPSAwOwo+Pj4gKwlpZiAobW11LT5wZ2QpIHsKPj4+ICsJCXVu bWFwX3N0YWdlMl9yYW5nZShtbXUsIDAsIGt2bV9waHlzX3NpemUoa3ZtKSk7Cj4+PiArCQlwZ2Qg PSBSRUFEX09OQ0UobW11LT5wZ2QpOwo+Pj4gKwkJbW11LT5wZ2QgPSBOVUxMOwo+PiBUaGUga3Zt LT5hcmNoLnBnZF9waHlzID0gMCBpbnN0cnVjdGlvbiBzZWVtcyB0byBoYXZlIGJlZW4gZHJvcHBl ZCBoZXJlLiBJcyB0aGF0Cj4+IGludGVudGlvbmFsPwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=