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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id F3BB8C25B78 for ; Tue, 28 May 2024 09:00:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Subject:Cc:To:From:Message-ID:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ochHPw61Wi6j0kIWhRZ+xdKn+J8CfcD01LLp0NohnQ0=; b=p3orN/3eBnOAHn jNw9yIbQ8qIm8kt8sgECTgcveovJsDfMr3YNlW5hFGk3bQvIJrbkb+OoI2vVm2LzNSCaTjHZw7F4J ym+4ZHNu2ZD8/z6fNvLWhqxCUJA2K0Ewx8tMK2uralu4sHzzusR886qZWOZso2+EahDz2j0V295aD WE5GDHQkBDGe/xAPYy47bKSUTvQMXJjJeYOJgYx9ZGIvZl4NMfhe66UJQ4rPtEWk/EhWbCJ7Zko/e JwNlwcUunex8S2yPK7AgOCsvitNREj+gHTF8zHNcxp9TWaSoMupY4vYFIqcZdm0XrekvfAUl5Lcpt IUVaL08y6Wl/UKcDh5HQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sBsh8-0000000HZyu-3cHv; Tue, 28 May 2024 09:00:34 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sBrii-0000000HNgR-0e3L for linux-arm-kernel@lists.infradead.org; Tue, 28 May 2024 07:58:09 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 6B3D061E46; Tue, 28 May 2024 07:58:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1C113C3277B; Tue, 28 May 2024 07:58:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1716883087; bh=rDiboxDdzeGhERGhVAFrCsaWNO2x/FdCE95ENbIFRCg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=TWfvRLPnx2KW+hJs9iigUvWAfGeHRMKNsaXkKPp/COJU6FlXfJ0WZusQlCd0cRIo/ qgHIi/ZI6vuYaezt/BeubrjZA67UA0JmTTWj69MR6W37dMt+KkoO9b++AkVD3vqatd Lm4r+QuMnHrMc/l/txrTJc4sYFMGD+frG+fiTVCAFUYwlsXLZneYp0ueZgBLJbLCSD vr8W83VsgcoHP9Oq90cj3XNbz0TuoCdLEyWkHa+jvAYqiHHhDCrS9R4MUbl7+pv2VS mIoqubGcaeLpyLM54f9MQo+zvHGO2gOkSqj027LElth6rBiqlpwIExnnGxicHsuwlf dfxw9/9JJpXNQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1sBrie-00GDQz-NJ; Tue, 28 May 2024 08:58:04 +0100 Date: Tue, 28 May 2024 08:58:04 +0100 Message-ID: <86ikyymkqb.wl-maz@kernel.org> From: Marc Zyngier To: Fuad Tabba Cc: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, will@kernel.org, qperret@google.com, seanjc@google.com, alexandru.elisei@arm.com, catalin.marinas@arm.com, philmd@linaro.org, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, mark.rutland@arm.com, broonie@kernel.org, joey.gouly@arm.com, rananta@google.com, yuzenghui@huawei.com Subject: Re: [PATCH v2 2/7] KVM: arm64: Abstract set/clear of CPTR_EL2 bits behind helper In-Reply-To: References: <20240521163720.3812851-1-tabba@google.com> <20240521163720.3812851-3-tabba@google.com> <86seyana8x.wl-maz@kernel.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.2 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: tabba@google.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, will@kernel.org, qperret@google.com, seanjc@google.com, alexandru.elisei@arm.com, catalin.marinas@arm.com, philmd@linaro.org, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, mark.rutland@arm.com, broonie@kernel.org, joey.gouly@arm.com, rananta@google.com, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240528_005808_422784_295DBD71 X-CRM114-Status: GOOD ( 46.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCAyMiBNYXkgMjAyNCAxNDo0ODoxOSArMDEwMCwKRnVhZCBUYWJiYSA8dGFiYmFAZ29v Z2xlLmNvbT4gd3JvdGU6Cj4gCj4gSGkgTWFyYywKPiAKPiBPbiBUdWUsIE1heSAyMSwgMjAyNCBh dCAxMDowOOKAr1BNIE1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4KPiA+ IE9uIFR1ZSwgMjEgTWF5IDIwMjQgMTc6Mzc6MTUgKzAxMDAsCj4gPiBGdWFkIFRhYmJhIDx0YWJi YUBnb29nbGUuY29tPiB3cm90ZToKPiA+ID4KPiA+ID4gVGhlIHNhbWUgdHJhcHMgY29udHJvbGxl ZCBieSBDUFRSX0VMMiBvciBDUEFDUl9FTDEgbmVlZCB0byBiZQo+ID4gPiB0b2dnbGVkIGluIGRp ZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZSwgYnV0IHRoZSBleGFjdCBiaXRzIGFuZAo+ID4gPiB0 aGVpciBwb2xhcml0eSBkaWZmZXIgYmV0d2VlbiB0aGVzZSB0d28gZm9ybWF0cyBhbmQgdGhlIG1v ZGUKPiA+ID4gKHZoZS9udmhlL2h2aGUpLgo+ID4gPgo+ID4gPiBUbyByZWR1Y2UgdGhlIGFtb3Vu dCBvZiBkdXBsaWNhdGVkIGNvZGUgYW5kIHRoZSBjaGFuY2Ugb2YgZ2V0dGluZwo+ID4gPiB0aGUg d3JvbmcgYml0L3BvbGFyaXR5IG9yIG1pc3NpbmcgYSBmaWVsZCwgYWJzdHJhY3QgdGhlIHNldC9j bGVhcgo+ID4gPiBvZiBDUFRSX0VMMiBiaXRzIGJlaGluZCBhIGhlbHBlci4KPiA+ID4KPiA+ID4g U2luY2UgKGgpVkhFIGlzIHRoZSB3YXkgb2YgdGhlIGZ1dHVyZSwgdXNlIHRoZSBDUEFDUl9FTDEg Zm9ybWF0LAo+ID4gPiB3aGljaCBpcyBhIHN1YnNldCBvZiB0aGUgVkhFIENQVFJfRUwyLCBhcyBh IHJlZmVyZW5jZS4KPiA+ID4KPiA+ID4gTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCj4g PiA+Cj4gPiA+IFN1Z2dlc3RlZC1ieTogT2xpdmVyIFVwdG9uIDxvbGl2ZXIudXB0b25AbGludXgu ZGV2Pgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBGdWFkIFRhYmJhIDx0YWJiYUBnb29nbGUuY29tPgo+ ID4gPiAtLS0KPiA+ID4gIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaCAgICB8 IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGFyY2gvYXJtNjQva3ZtL2h5cC9p bmNsdWRlL2h5cC9zd2l0Y2guaCB8IDE3ICsrKy0tLS0tLS0tLS0KPiA+ID4gIGFyY2gvYXJtNjQv a3ZtL2h5cC9udmhlL2h5cC1tYWluLmMgICAgICB8ICA2ICstLS0tCj4gPiA+ICAzIGZpbGVzIGNo YW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+ID4gPgo+ID4gPiBkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oIGIvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCj4gPiA+IGluZGV4IDUwMWUzZTAxOWM5My4uNzQ4 MzdkMTc2MmU1IDEwMDY0NAo+ID4gPiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9l bXVsYXRlLmgKPiA+ID4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5o Cj4gPiA+IEBAIC01NTcsNiArNTU3LDQwIEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBr dm1faW5jcl9wYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gPiA+ICAgICAgICAgICAgICAgdmNw dV9zZXRfZmxhZygodiksIGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g PiA+ICAgICAgIH0gd2hpbGUgKDApCj4gPiA+Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUg dm9pZCBfX2NwdHJfY2xlYXJfc2V0X252aGUodTY0IGNwYWNyX2NsciwgdTY0IGNwYWNyX3NldCkK PiA+ID4gK3sKPiA+ID4gKyAgICAgdTY0IGNsciA9IDAsIHNldCA9IDA7Cj4gPiA+ICsKPiA+ID4g KyAgICAgaWYgKGNwYWNyX2NsciAmIENQQUNSX0VMeF9GUEVOKQo+ID4gPiArICAgICAgICAgICAg IHNldCB8PSBDUFRSX0VMMl9URlA7Cj4gPiA+ICsgICAgIGlmIChjcGFjcl9jbHIgJiBDUEFDUl9F THhfWkVOKQo+ID4gPiArICAgICAgICAgICAgIHNldCB8PSBDUFRSX0VMMl9UWjsKPiA+ID4gKyAg ICAgaWYgKGNwYWNyX2NsciAmIENQQUNSX0VMeF9TTUVOKQo+ID4KPiA+IFRoZXNlIDMgZmllbGRz IGFyZSBhY3R1YWxseSBwYWlycyBvZiBiaXRzLiBDYW4gd2UgaGF2ZSBhIGNvbXBpbGUtdGltZQo+ ID4gY2hlY2sgdGhhdCBib3RoIGJpdHMgYXJlIHNldD8KPiAKPiBZZXMuCj4gCj4gPiA+ICsgICAg ICAgICAgICAgc2V0IHw9IENQVFJfRUwyX1RTTTsKPiA+ID4gKyAgICAgaWYgKGNwYWNyX2NsciAm IENQQUNSX0VMeF9UVEEpCj4gPiA+ICsgICAgICAgICAgICAgY2xyIHw9IENQVFJfRUwyX1RUQTsK PiA+Cj4gPiBIb3cgYWJvdXQgVENQQUMsIFRBTSwgYW5kIEUwUE9FPwo+IAo+IENQVFJfRUwyIChu dmhlKSBkb2Vzbid0IGhhdmUgYW4gZXF1aXZhbGVudCB0byBFMFBPRS4gU2hvdWxkIEkgaGF2ZSBh Cj4gY29tcGlsZSB0aW1lIGNoZWNrIHRoYXQgaXQncyBub3QgY2xlYXJlZCBhdCBhbGwgKHNpbmNl IGl0IGhhcyBuZWdhdGl2ZQo+IHBvbGFyaXR5KSwgb3IgYSBydW50aW1lIGNoZWNrIGZvciB0aGF0 IG9ubHkgZm9yIG52aGU/CgpZb3UncmUgcmlnaHQsIGFuZCBJIGVuZGVkIGZpZ3VyaW5nIHRoYXQg b3V0IHdoaWxlIHJld29ya2luZyB0aGUgTlYKc2lkZSBvZiBDUFRSX0VMMiBoYW5kbGluZy4KCj4g Cj4gQXMgZm9yIFRDUEFDLCBUQU0sIHRoZXkncmUgbm90IGRlZmluZWQgdW5kZXIgdGhlIENQQUNS IGJpdHMsIGJ1dCB0aGV5Cj4gYXJlIGluIENQVFJfRUwyLCB3aGljaCBpcyB3aGF0IENQQUNSIHJl ZmVycyB0byBpbiBWSEUuIEkgd2lsbCBoYW5kbGUKPiB0aGVtLCBidXQgc2hvdWxkIEkgcmVuYW1l IGNwYWNyX3RvX2NwdHIoKSB0byBjcHRyX3ZoZV90b19udmhlKCk/CgpJIHRoaW5rIHRoaXMgaXMg Y2xlYXIgZW5vdWdoIGluIGNvbnRleHQsIGJ1dCBJIGRvbid0IG1pbmQgZWl0aGVyIHdheS4KCj4g Cj4gPgo+ID4gPiArCj4gPiA+ICsgICAgIGlmIChjcGFjcl9zZXQgJiBDUEFDUl9FTHhfRlBFTikK PiA+ID4gKyAgICAgICAgICAgICBjbHIgfD0gQ1BUUl9FTDJfVEZQOwo+ID4gPiArICAgICBpZiAo Y3BhY3Jfc2V0ICYgQ1BBQ1JfRUx4X1pFTikKPiA+ID4gKyAgICAgICAgICAgICBjbHIgfD0gQ1BU Ul9FTDJfVFo7Cj4gPiA+ICsgICAgIGlmIChjcGFjcl9zZXQgJiBDUEFDUl9FTHhfU01FTikKPiA+ ID4gKyAgICAgICAgICAgICBjbHIgfD0gQ1BUUl9FTDJfVFNNOwo+ID4gPiArICAgICBpZiAoY3Bh Y3Jfc2V0ICYgQ1BBQ1JfRUx4X1RUQSkKPiA+ID4gKyAgICAgICAgICAgICBzZXQgfD0gQ1BUUl9F TDJfVFRBOwo+ID4KPiA+IFRoZSBkdXBsaWNhdGlvbiBpcyBwcmV0dHkgdW5mb3J0dW5hdGUuIEhh dmluZyBhIHNpbmdsZSBoZWxwZXIgdGhhdAo+ID4gdHJhbnNsYXRlIGEgcmVnaXN0ZXIgbGF5b3V0 IGludG8gYW5vdGhlciB3b3VsZCBiZSBiZXR0ZXIuCj4gPiA+ICsKPiA+ID4gKyAgICAgc3lzcmVn X2NsZWFyX3NldChjcHRyX2VsMiwgY2xyLCBzZXQpOwo+ID4KPiA+IEFuZCBvbWl0IHRoaXMuLi4K PiA+Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBjcGFjcl9jbGVh cl9zZXQodTY0IGNsciwgdTY0IHNldCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgICAgaWYgKGhhc192 aGUoKSB8fCBoYXNfaHZoZSgpKQo+ID4gPiArICAgICAgICAgICAgICAgIHN5c3JlZ19jbGVhcl9z ZXQoY3BhY3JfZWwxLCBjbHIsIHNldCk7Cj4gPiA+ICsgICAgICAgIGVsc2UKPiA+ID4gKyAgICAg ICAgICAgICAgICBfX2NwdHJfY2xlYXJfc2V0X252aGUoY2xyLCBzZXQpOwo+ID4KPiA+IFNvIHRo YXQgdGhpcyBjb3VsZCByZWFkIGFzOgo+ID4KPiA+ICAgICAgICAgc3lzcmVnX2NsZWFyX3NldChj cHRyX2VsMiwgY3BhY3JfdG9fY3B0cihjbHIpLCBjcGFjcl90b19jcHRyKHNldCkpOwo+IAo+IEkg ZG9uJ3Qga25vdyBob3cgdGhpcyBjb3VsZCB3b3JrIHdpdGggb25seSBvbmUgZnVuY3Rpb24vbWFj cm8sIHdoaWxlCj4gY292ZXJpbmcgYWxsIHRoZSBmaWVsZHMuIFRoZSBwcm9ibGVtIGlzIHRoYXQg dGhlIHBvbGFyaXR5IG9mIHRoZXNlCj4gYml0cyB2YXJ5OiBzb21lIGhhdmUgdGhlIHNhbWUgcG9s YXJpdHkgYmV0d2VlbiBDUEFDUi9DUFRSLiBhbmQgb3RoZXJzCj4gaGF2ZSB0aGUgb3Bwb3NpdGUg cG9sYXJpdHkuIFRoZXJlZm9yZSwgdGhlIGNvbnZlcnNpb24gdG8gYGNscmAgaXMKPiBkaWZmZXJl bnQgZnJvbSB0aGUgY29udmVyc2lvbiB0byBgc2V0YC4KCkFoLCB5b3UncmUgYWJzb2x1dGVseSBy aWdodC4gSSB0b3RhbGx5IGdsYW5jZWQgb3ZlciB0aGUgZmFjdCB0aGF0IHRoZQpwb2xhcml0aWVz IGFyZSBpbnZlcnRlZCwgdG90YWxseSBydWluaW5nIHRoZSBmdW4uCgo+IAo+IFNheSB3ZSBuZWVk IHRvIGNsZWFyIGJvdGggQ1BBQ1JfRUx4X0ZQRU4gYW5kIENQQUNSX0VMeF9UVEEuIFRoZQo+IHBy b2JsZW0gaXMgdGhhdCBDUEFDUl9FTHhfRlBFTiBoYXMgdGhlIG9wcG9zaXRlIHBvbGFyaXR5IGFz Cj4gQ1BUUl9FTDJfVEZQLCB3aGVyZWFzIENQQUNSX0VMeF9UVEEgaGFzIHRoZSBzYW1lIHBvbGFy aXR5IGFzCj4gQ1BUUl9FTDJfVFRBIChkaWZmZXJlbnQgcG9zaXRpb24gdGhvdWdoKS4KPiAKPiBX aGF0IHdvdWxkIGNwYWNyX3RvX2NwdHIoKSByZXR1cm4gdGhhdCB3b3VsZCB3b3JrIGluIHRoZSBj b2RlIHlvdSBwcm9wb3NlOgo+IHN5c3JlZ19jbGVhcl9zZXQoY3B0cl9lbDIsCj4gY3BhY3JfdG9f Y3B0cihDUEFDUl9FTHhfRlBFTnxDUEFDUl9FTHhfVFRBKSwgY3BhY3JfdG9fY3B0cigwKSk7Cj4g Cj4gRGVzaXJlZCByZXN1bHQ6Cj4gc3lzcmVnX2NsZWFyX3NldChjcHRyX2VsMiwgQ1BUUl9FTDJf VFRBLCBDUFRSX0VMMl9URlApOwo+IAo+IEkgY2FuIG1ha2UgaXQgd29yayB3aXRoIHR3byBmdW5j dGlvbnMvbWFjcm9zOgo+IF9fY3BhY3JfdG9fY3B0cl9jbGVhcihjbHIsIHNldCkgYW5kIF9fY3Bh Y3JfdG9fY3B0cl9zZXQoY2xyLCBzZXQpIC0tPgo+IHN5c3JlZ19jbGVhcl9zZXQoY3B0cl9lbDIs IF9fY3BhY3JfdG9fY3B0cl9jbGVhcihjbHIsIHNldCksCj4gX19jcGFjcl90b19jcHRyX3NldChj bHIsIHNldCkpOwo+IAo+IFVuZm9ydHVuYXRlbHkgdGhpcyBkb2Vzbid0IGdldCByaWQgb2YgdGhl IGR1cGxpY2F0aW9uLCBidXQgaXQgbWlnaHQgYmUKPiB0aWRpZXIgKEkgY29udmVydGVkIHRoZW0g dG8gbWFjcm9zIHRvIGFkZCBjb21waWxlLXRpbWUgY2hlY2tzIGxhdGVyKToKPiAKPiArI2RlZmlu ZSBfX2NwYWNyX3RvX2NwdHJfY2xyKGNsciwgc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB1NjQgY3B0ciA9 IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmICgoc2V0KSAmIENQQUNSX0VMeF9GUEVOKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNw dHIgfD0gQ1BUUl9FTDJfVEZQOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICAgICAgICAgaWYgKChzZXQpICYgQ1BBQ1JfRUx4X1pFTikgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY3B0ciB8PSBDUFRSX0VMMl9UWjsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBpZiAoKHNldCkg JiBDUEFDUl9FTHhfU01FTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICAgICAgICAgICAgICAgICBjcHRyIHw9IENQVFJfRUwyX1RTTTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmICgoY2xyKSAmIENQQUNSX0VMeF9UVEEpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNw dHIgfD0gQ1BUUl9FTDJfVFRBOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICAgICAgICAgaWYgKChjbHIpICYgQ1BUUl9FTDJfVEFNKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY3B0ciB8PSBDUFRSX0VMMl9UQU07 ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBpZiAoKGNscikg JiBDUFRSX0VMMl9UQ1BBQykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICAgICAgICAgICAgICAgICBjcHRyIHw9IENQVFJfRUwyX1RDUEFDOyAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBjcHRyOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg IH0pCj4gKwo+ICsjZGVmaW5lIF9fY3BhY3JfdG9fY3B0cl9zZXQoY2xyLCBzZXQpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICh7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICAgIHU2NCBjcHRyID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgaWYgKChjbHIpICYg Q1BBQ1JfRUx4X0ZQRU4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY3B0ciB8PSBDUFRSX0VMMl9URlA7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgICAgICAgICBpZiAoKGNscikgJiBDUEFDUl9FTHhfWkVOKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBjcHRy IHw9IENQVFJfRUwyX1RaOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICAgIGlmICgoY2xyKSAmIENQQUNSX0VMeF9TTUVOKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNwdHIgfD0gQ1BUUl9FTDJfVFNNOyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgaWYgKChzZXQpICYg Q1BBQ1JfRUx4X1RUQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY3B0ciB8PSBDUFRSX0VMMl9UVEE7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgICAgICAgICBpZiAoKHNldCkgJiBDUFRSX0VMMl9UQU0pICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBjcHRy IHw9IENQVFJfRUwyX1RBTTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICAgIGlmICgoc2V0KSAmIENQVFJfRUwyX1RDUEFDKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNwdHIgfD0gQ1BUUl9FTDJfVENQQUM7 ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICAgIGNwdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICsgICAgICAgfSkKPiArCj4gKyNkZWZpbmUgY3BhY3JfY2xlYXJfc2V0KGNsciwg c2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiArICAgICAgICAgICAgICAgaWYgKGhhc192aGUoKSB8fCBoYXNfaHZoZSgpKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3lzcmVn X2NsZWFyX3NldChjcGFjcl9lbDEsIGNsciwgc2V0KTsgICAgICAgICAgXAo+ICsgICAgICAgICAg ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBzeXNyZWdfY2xlYXJfc2V0KGNwdHJfZWwy LCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfX2NwYWNyX3RvX2NwdHJfY2xyKGNsciwgc2V0KSwgXAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jcGFjcl90b19jcHRyX3NldChjbHIsIHNl dCkpO1wKPiArICAgICAgIH0gd2hpbGUgKDApCj4gCj4gV2hhdCBkbyB5b3UgdGhpbms/CgpJIHF1 aXRlIGxpa2UgdGhpcy4gSXQgaXMgYSBsYXJnZSBib2R5IG9mIGNvZGUsIGJ1dCBpdCBpcyBlYXN5 IHRvIHJlYWQKYW5kIHN5bW1ldHJpYy4KClRoYW5rcywKCglNLgoKLS0gCldpdGhvdXQgZGV2aWF0 aW9uIGZyb20gdGhlIG5vcm0sIHByb2dyZXNzIGlzIG5vdCBwb3NzaWJsZS4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK