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=-4.0 required=3.0 tests=BAYES_00,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no 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 06E0EC07E9B for ; Tue, 6 Jul 2021 14:52:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E5B6F613B2 for ; Tue, 6 Jul 2021 14:52:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232666AbhGFOzb convert rfc822-to-8bit (ORCPT ); Tue, 6 Jul 2021 10:55:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:42312 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232655AbhGFOz2 (ORCPT ); Tue, 6 Jul 2021 10:55:28 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 90D40613B2; Tue, 6 Jul 2021 14:52:48 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1m0mRK-00BkmS-Ha; Tue, 06 Jul 2021 15:52:46 +0100 Date: Tue, 06 Jul 2021 15:52:46 +0100 Message-ID: <87y2aj7av5.wl-maz@kernel.org> From: Marc Zyngier To: Alexandre Chartre Cc: will@kernel.org, catalin.marinas@arm.com, alexandru.elisei@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, konrad.wilk@oracle.com Subject: Re: [PATCH] KVM: arm64: Disabling disabled PMU counters wastes a lot of time In-Reply-To: References: <20210628161925.401343-1-alexandre.chartre@oracle.com> <878s2tavks.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/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: alexandre.chartre@oracle.com, will@kernel.org, catalin.marinas@arm.com, alexandru.elisei@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, konrad.wilk@oracle.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On Tue, 06 Jul 2021 14:50:35 +0100, Alexandre Chartre wrote: > > > Hi Marc, > > On 6/29/21 3:16 PM, Alexandre Chartre wrote: > > On 6/29/21 11:06 AM, Marc Zyngier wrote > > [...] > >> So the sysreg is the only thing we should consider, and I think we > >> should drop the useless masking. There is at least another instance of > >> this in the PMU code (kvm_pmu_overflow_status()), and apart from > >> kvm_pmu_vcpu_reset(), only the sysreg accessors should care about the > >> masking to sanitise accesses. > >> > >> What do you think? > >> > > > > I think you are right. PMCNTENSET_EL0 is already masked with kvm_pmu_valid_counter_mask() > > so there's effectively no need to mask it again when we use it. I will send an additional > > patch (on top of this one) to remove useless masking. Basically, changes would be: > > I had a closer look and we can't remove the mask. The access > functions (for pmcnten, pminten, pmovs), clear or set only the > specified valid counter bits. This means that bits other than the > valid counter bits never change in __vcpu_sys_reg(), and those bits > are not necessarily zero because the initial value is > 0x1de7ec7edbadc0deULL (set by reset_unknown()). That's a bug that should be fixed on its own. Bits that are RAZ/WI in the architecture shouldn't be kept in the shadow registers the first place. I'll have a look. > So I will resubmit initial patch, with just the commit message > changes. Please don't. I'm not papering over this kind of bug. Thanks, M. -- Without deviation from the norm, progress is not possible. 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=-4.0 required=3.0 tests=BAYES_00,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 E144EC07E9C for ; Tue, 6 Jul 2021 14:52:54 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id 5D61C6197F for ; Tue, 6 Jul 2021 14:52:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5D61C6197F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id F1C444A32E; Tue, 6 Jul 2021 10:52:53 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GmIgyQhFG-gg; Tue, 6 Jul 2021 10:52:52 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 3A5CA4086D; Tue, 6 Jul 2021 10:52:52 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id B60144086D for ; Tue, 6 Jul 2021 10:52:50 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q-P01f6xtFXY for ; Tue, 6 Jul 2021 10:52:49 -0400 (EDT) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 9A45B406E7 for ; Tue, 6 Jul 2021 10:52:49 -0400 (EDT) Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 90D40613B2; Tue, 6 Jul 2021 14:52:48 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1m0mRK-00BkmS-Ha; Tue, 06 Jul 2021 15:52:46 +0100 Date: Tue, 06 Jul 2021 15:52:46 +0100 Message-ID: <87y2aj7av5.wl-maz@kernel.org> From: Marc Zyngier To: Alexandre Chartre Subject: Re: [PATCH] KVM: arm64: Disabling disabled PMU counters wastes a lot of time In-Reply-To: References: <20210628161925.401343-1-alexandre.chartre@oracle.com> <878s2tavks.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/27.1 (x86_64-pc-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: alexandre.chartre@oracle.com, will@kernel.org, catalin.marinas@arm.com, alexandru.elisei@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, konrad.wilk@oracle.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Cc: kvm@vger.kernel.org, catalin.marinas@arm.com, konrad.wilk@oracle.com, will@kernel.org, kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu T24gVHVlLCAwNiBKdWwgMjAyMSAxNDo1MDozNSArMDEwMCwKQWxleGFuZHJlIENoYXJ0cmUgPGFs ZXhhbmRyZS5jaGFydHJlQG9yYWNsZS5jb20+IHdyb3RlOgo+IAo+IAo+IEhpIE1hcmMsCj4gCj4g T24gNi8yOS8yMSAzOjE2IFBNLCBBbGV4YW5kcmUgQ2hhcnRyZSB3cm90ZToKPiA+IE9uIDYvMjkv MjEgMTE6MDYgQU0sIE1hcmMgWnluZ2llciB3cm90ZQo+ID4gWy4uLl0KPiA+PiBTb8KgdGhlwqBz eXNyZWfCoGlzwqB0aGXCoG9ubHnCoHRoaW5nwqB3ZcKgc2hvdWxkwqBjb25zaWRlcizCoGFuZMKg ScKgdGhpbmvCoHdlCj4gPj4gc2hvdWxkwqBkcm9wwqB0aGXCoHVzZWxlc3PCoG1hc2tpbmcuwqBU aGVyZcKgaXPCoGF0wqBsZWFzdMKgYW5vdGhlcsKgaW5zdGFuY2XCoG9mCj4gPj4gdGhpc8KgaW7C oHRoZcKgUE1VwqBjb2RlwqAoa3ZtX3BtdV9vdmVyZmxvd19zdGF0dXMoKSkswqBhbmTCoGFwYXJ0 wqBmcm9tCj4gPj4ga3ZtX3BtdV92Y3B1X3Jlc2V0KCkswqBvbmx5wqB0aGXCoHN5c3JlZ8KgYWNj ZXNzb3JzwqBzaG91bGTCoGNhcmXCoGFib3V0wqB0aGUKPiA+PiBtYXNraW5nwqB0b8Kgc2FuaXRp c2XCoGFjY2Vzc2VzLgo+ID4+IAo+ID4+IFdoYXTCoGRvwqB5b3XCoHRoaW5rPwo+ID4+IAo+ID4g Cj4gPiBJwqB0aGlua8KgeW91wqBhcmXCoHJpZ2h0LsKgUE1DTlRFTlNFVF9FTDDCoGlzwqBhbHJl YWR5wqBtYXNrZWTCoHdpdGjCoGt2bV9wbXVfdmFsaWRfY291bnRlcl9tYXNrKCkKPiA+IHNvwqB0 aGVyZSdzwqBlZmZlY3RpdmVsecKgbm/CoG5lZWTCoHRvwqBtYXNrwqBpdMKgYWdhaW7CoHdoZW7C oHdlwqB1c2XCoGl0LsKgScKgd2lsbMKgc2VuZMKgYW7CoGFkZGl0aW9uYWwKPiA+IHBhdGNowqAo b27CoHRvcMKgb2bCoHRoaXPCoG9uZSnCoHRvwqByZW1vdmXCoHVzZWxlc3PCoG1hc2tpbmcuwqBC YXNpY2FsbHkswqBjaGFuZ2VzwqB3b3VsZMKgYmU6Cj4gCj4gSSBoYWQgYSBjbG9zZXIgbG9vayBh bmQgd2UgY2FuJ3QgcmVtb3ZlIHRoZSBtYXNrLiBUaGUgYWNjZXNzCj4gZnVuY3Rpb25zIChmb3Ig cG1jbnRlbiwgcG1pbnRlbiwgcG1vdnMpLCBjbGVhciBvciBzZXQgb25seSB0aGUKPiBzcGVjaWZp ZWQgdmFsaWQgY291bnRlciBiaXRzLiBUaGlzIG1lYW5zIHRoYXQgYml0cyBvdGhlciB0aGFuIHRo ZQo+IHZhbGlkIGNvdW50ZXIgYml0cyBuZXZlciBjaGFuZ2UgaW4gX192Y3B1X3N5c19yZWcoKSwg YW5kIHRob3NlIGJpdHMKPiBhcmUgbm90IG5lY2Vzc2FyaWx5IHplcm8gYmVjYXVzZSB0aGUgaW5p dGlhbCB2YWx1ZSBpcwo+IDB4MWRlN2VjN2VkYmFkYzBkZVVMTCAoc2V0IGJ5IHJlc2V0X3Vua25v d24oKSkuCgpUaGF0J3MgYSBidWcgdGhhdCBzaG91bGQgYmUgZml4ZWQgb24gaXRzIG93bi4gQml0 cyB0aGF0IGFyZSBSQVovV0kgaW4KdGhlIGFyY2hpdGVjdHVyZSBzaG91bGRuJ3QgYmUga2VwdCBp biB0aGUgc2hhZG93IHJlZ2lzdGVycyB0aGUgZmlyc3QKcGxhY2UuIEknbGwgaGF2ZSBhIGxvb2su Cgo+IFNvIEkgd2lsbCByZXN1Ym1pdCBpbml0aWFsIHBhdGNoLCB3aXRoIGp1c3QgdGhlIGNvbW1p dCBtZXNzYWdlCj4gY2hhbmdlcy4KClBsZWFzZSBkb24ndC4gSSdtIG5vdCBwYXBlcmluZyBvdmVy IHRoaXMga2luZCBvZiBidWcuCgpUaGFua3MsCgoJTS4KCi0tIApXaXRob3V0IGRldmlhdGlvbiBm cm9tIHRoZSBub3JtLCBwcm9ncmVzcyBpcyBub3QgcG9zc2libGUuCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJt QGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWls bWFuL2xpc3RpbmZvL2t2bWFybQo= 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=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 85669C07E9B for ; Tue, 6 Jul 2021 14:55:41 +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 520FC61107 for ; Tue, 6 Jul 2021 14:55:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 520FC61107 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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.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=U964neMZhxoxuuFBznxEHxWQ6+P2GQESGgaXXBJMY2s=; b=Zkib9vzqfKsR7N 774p+WJJ9IXH3F4OsR6O+r20U0oxzR3vXHxzBu+GY7QjY+9FCr+iy/IipOTpkwu9qrvMJ3TymCuhW DPN1K+FHHRqmJzNRdZMNSZQAL8L2K2X8son8BnyqjapBVrvQZ/ecmUvc6S+6QQhBj1eEw+rk7g5KU z26WtP7MwcelucHMrkhfuAmOEz5PL1O6aEjwwhjPgYSMNQjUBuKWVzqfKwK+Qtkp/YdTholDyW8Z9 YjEagWBpt62mM4CstSiYVHYXws73WALeKYKLr6l0VRjzii5nPU7/KM+nIcuNawuGMzoL0mDWFHpZN 3pEdCo+L6oIdQ6HZftyg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m0mRP-00C5Ch-J7; Tue, 06 Jul 2021 14:52:51 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m0mRM-00C5CI-Pr for linux-arm-kernel@lists.infradead.org; Tue, 06 Jul 2021 14:52:50 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 90D40613B2; Tue, 6 Jul 2021 14:52:48 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1m0mRK-00BkmS-Ha; Tue, 06 Jul 2021 15:52:46 +0100 Date: Tue, 06 Jul 2021 15:52:46 +0100 Message-ID: <87y2aj7av5.wl-maz@kernel.org> From: Marc Zyngier To: Alexandre Chartre Cc: will@kernel.org, catalin.marinas@arm.com, alexandru.elisei@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, konrad.wilk@oracle.com Subject: Re: [PATCH] KVM: arm64: Disabling disabled PMU counters wastes a lot of time In-Reply-To: References: <20210628161925.401343-1-alexandre.chartre@oracle.com> <878s2tavks.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/27.1 (x86_64-pc-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: alexandre.chartre@oracle.com, will@kernel.org, catalin.marinas@arm.com, alexandru.elisei@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, konrad.wilk@oracle.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-20210706_075248_909187_5F68BC7F X-CRM114-Status: GOOD ( 20.35 ) 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 T24gVHVlLCAwNiBKdWwgMjAyMSAxNDo1MDozNSArMDEwMCwKQWxleGFuZHJlIENoYXJ0cmUgPGFs ZXhhbmRyZS5jaGFydHJlQG9yYWNsZS5jb20+IHdyb3RlOgo+IAo+IAo+IEhpIE1hcmMsCj4gCj4g T24gNi8yOS8yMSAzOjE2IFBNLCBBbGV4YW5kcmUgQ2hhcnRyZSB3cm90ZToKPiA+IE9uIDYvMjkv MjEgMTE6MDYgQU0sIE1hcmMgWnluZ2llciB3cm90ZQo+ID4gWy4uLl0KPiA+PiBTb8KgdGhlwqBz eXNyZWfCoGlzwqB0aGXCoG9ubHnCoHRoaW5nwqB3ZcKgc2hvdWxkwqBjb25zaWRlcizCoGFuZMKg ScKgdGhpbmvCoHdlCj4gPj4gc2hvdWxkwqBkcm9wwqB0aGXCoHVzZWxlc3PCoG1hc2tpbmcuwqBU aGVyZcKgaXPCoGF0wqBsZWFzdMKgYW5vdGhlcsKgaW5zdGFuY2XCoG9mCj4gPj4gdGhpc8KgaW7C oHRoZcKgUE1VwqBjb2RlwqAoa3ZtX3BtdV9vdmVyZmxvd19zdGF0dXMoKSkswqBhbmTCoGFwYXJ0 wqBmcm9tCj4gPj4ga3ZtX3BtdV92Y3B1X3Jlc2V0KCkswqBvbmx5wqB0aGXCoHN5c3JlZ8KgYWNj ZXNzb3JzwqBzaG91bGTCoGNhcmXCoGFib3V0wqB0aGUKPiA+PiBtYXNraW5nwqB0b8Kgc2FuaXRp c2XCoGFjY2Vzc2VzLgo+ID4+IAo+ID4+IFdoYXTCoGRvwqB5b3XCoHRoaW5rPwo+ID4+IAo+ID4g Cj4gPiBJwqB0aGlua8KgeW91wqBhcmXCoHJpZ2h0LsKgUE1DTlRFTlNFVF9FTDDCoGlzwqBhbHJl YWR5wqBtYXNrZWTCoHdpdGjCoGt2bV9wbXVfdmFsaWRfY291bnRlcl9tYXNrKCkKPiA+IHNvwqB0 aGVyZSdzwqBlZmZlY3RpdmVsecKgbm/CoG5lZWTCoHRvwqBtYXNrwqBpdMKgYWdhaW7CoHdoZW7C oHdlwqB1c2XCoGl0LsKgScKgd2lsbMKgc2VuZMKgYW7CoGFkZGl0aW9uYWwKPiA+IHBhdGNowqAo b27CoHRvcMKgb2bCoHRoaXPCoG9uZSnCoHRvwqByZW1vdmXCoHVzZWxlc3PCoG1hc2tpbmcuwqBC YXNpY2FsbHkswqBjaGFuZ2VzwqB3b3VsZMKgYmU6Cj4gCj4gSSBoYWQgYSBjbG9zZXIgbG9vayBh bmQgd2UgY2FuJ3QgcmVtb3ZlIHRoZSBtYXNrLiBUaGUgYWNjZXNzCj4gZnVuY3Rpb25zIChmb3Ig cG1jbnRlbiwgcG1pbnRlbiwgcG1vdnMpLCBjbGVhciBvciBzZXQgb25seSB0aGUKPiBzcGVjaWZp ZWQgdmFsaWQgY291bnRlciBiaXRzLiBUaGlzIG1lYW5zIHRoYXQgYml0cyBvdGhlciB0aGFuIHRo ZQo+IHZhbGlkIGNvdW50ZXIgYml0cyBuZXZlciBjaGFuZ2UgaW4gX192Y3B1X3N5c19yZWcoKSwg YW5kIHRob3NlIGJpdHMKPiBhcmUgbm90IG5lY2Vzc2FyaWx5IHplcm8gYmVjYXVzZSB0aGUgaW5p dGlhbCB2YWx1ZSBpcwo+IDB4MWRlN2VjN2VkYmFkYzBkZVVMTCAoc2V0IGJ5IHJlc2V0X3Vua25v d24oKSkuCgpUaGF0J3MgYSBidWcgdGhhdCBzaG91bGQgYmUgZml4ZWQgb24gaXRzIG93bi4gQml0 cyB0aGF0IGFyZSBSQVovV0kgaW4KdGhlIGFyY2hpdGVjdHVyZSBzaG91bGRuJ3QgYmUga2VwdCBp biB0aGUgc2hhZG93IHJlZ2lzdGVycyB0aGUgZmlyc3QKcGxhY2UuIEknbGwgaGF2ZSBhIGxvb2su Cgo+IFNvIEkgd2lsbCByZXN1Ym1pdCBpbml0aWFsIHBhdGNoLCB3aXRoIGp1c3QgdGhlIGNvbW1p dCBtZXNzYWdlCj4gY2hhbmdlcy4KClBsZWFzZSBkb24ndC4gSSdtIG5vdCBwYXBlcmluZyBvdmVy IHRoaXMga2luZCBvZiBidWcuCgpUaGFua3MsCgoJTS4KCi0tIApXaXRob3V0IGRldmlhdGlvbiBm cm9tIHRoZSBub3JtLCBwcm9ncmVzcyBpcyBub3QgcG9zc2libGUuCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==