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.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 A0A82C07E96 for ; Thu, 15 Jul 2021 09:28:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 88FD9613BF for ; Thu, 15 Jul 2021 09:28:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233487AbhGOJbs (ORCPT ); Thu, 15 Jul 2021 05:31:48 -0400 Received: from foss.arm.com ([217.140.110.172]:49796 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231395AbhGOJbs (ORCPT ); Thu, 15 Jul 2021 05:31:48 -0400 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 53A646D; Thu, 15 Jul 2021 02:28:55 -0700 (PDT) Received: from [10.57.36.240] (unknown [10.57.36.240]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9CB9D3F774; Thu, 15 Jul 2021 02:28:54 -0700 (PDT) Subject: Re: Any way to disable KVM VHE extension? To: Qu Wenruo , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Linux ARM References: <37f873cf-1b39-ea7f-a5e7-6feb0200dd4c@suse.com> From: Robin Murphy Message-ID: Date: Thu, 15 Jul 2021 10:28:49 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <37f873cf-1b39-ea7f-a5e7-6feb0200dd4c@suse.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On 2021-07-15 09:55, Qu Wenruo wrote: > Hi, > > Recently I'm playing around the Nvidia Xavier AGX board, which has VHE > extension support. > > In theory, considering the CPU and memory, it should be pretty powerful > compared to boards like RPI CM4. > > But to my surprise, KVM runs pretty poor on Xavier. > > Just booting the edk2 firmware could take over 10s, and 20s to fully > boot the kernel. > Even my VM on RPI CM4 has way faster boot time, even just running on > PCIE2.0 x1 lane NVME, and just 4 2.1Ghz A72 core. > > This is definitely out of my expectation, I double checked to be sure > that it's running in KVM mode. > > But further digging shows that, since Xavier AGX CPU supports VHE, kvm > is running in VHE mode other than HYP mode on CM4. > > Is there anyway to manually disable VHE mode to test the more common HYP > mode on Xavier? According to kernel-parameters.txt, "kvm-arm.mode=nvhe" (or its low-level equivalent "id_aa64mmfr1.vh=0") on the command line should do that. However I'd imagine the discrepancy is likely to be something more fundamental to the wildly different microarchitectures. There's certainly no harm in giving non-VHE a go for comparison, but I wouldn't be surprised if it turns out even slower... Robin. > BTW, this is the dmesg related to KVM on Xavier, running v5.13 upstream > kernel, with 64K page size: > [    0.852357] kvm [1]: IPA Size Limit: 40 bits > [    0.857378] kvm [1]: vgic interrupt IRQ9 > [    0.862122] kvm: pmu event creation failed -2 > [    0.866734] kvm [1]: VHE mode initialized successfully > > While on CM4, the host runs v5.12.10 upstream kernel (with downstream > dtb), with 4K page size: > [    1.276818] kvm [1]: IPA Size Limit: 44 bits > [    1.278425] kvm [1]: vgic interrupt IRQ9 > [    1.278620] kvm [1]: Hyp mode initialized successfully > > Could it be the PAGE size causing problem? > > Thanks, > Qu > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 66BCAC07E96 for ; Thu, 15 Jul 2021 09:29:01 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id D9962613BF for ; Thu, 15 Jul 2021 09:29:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D9962613BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com 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 57D644B0A5; Thu, 15 Jul 2021 05:29:00 -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 5tRZ0ZyNxhtz; Thu, 15 Jul 2021 05:28:59 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 2A0E04B0A1; Thu, 15 Jul 2021 05:28:59 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 0B3344B092 for ; Thu, 15 Jul 2021 05:28:58 -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 p7s+rXgan7Ci for ; Thu, 15 Jul 2021 05:28:56 -0400 (EDT) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 4BF644B0A0 for ; Thu, 15 Jul 2021 05:28:56 -0400 (EDT) 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 53A646D; Thu, 15 Jul 2021 02:28:55 -0700 (PDT) Received: from [10.57.36.240] (unknown [10.57.36.240]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9CB9D3F774; Thu, 15 Jul 2021 02:28:54 -0700 (PDT) Subject: Re: Any way to disable KVM VHE extension? To: Qu Wenruo , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Linux ARM References: <37f873cf-1b39-ea7f-a5e7-6feb0200dd4c@suse.com> From: Robin Murphy Message-ID: Date: Thu, 15 Jul 2021 10:28:49 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <37f873cf-1b39-ea7f-a5e7-6feb0200dd4c@suse.com> Content-Language: en-GB 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu T24gMjAyMS0wNy0xNSAwOTo1NSwgUXUgV2VucnVvIHdyb3RlOgo+IEhpLAo+IAo+IFJlY2VudGx5 IEknbSBwbGF5aW5nIGFyb3VuZCB0aGUgTnZpZGlhIFhhdmllciBBR1ggYm9hcmQsIHdoaWNoIGhh cyBWSEUgCj4gZXh0ZW5zaW9uIHN1cHBvcnQuCj4gCj4gSW4gdGhlb3J5LCBjb25zaWRlcmluZyB0 aGUgQ1BVIGFuZCBtZW1vcnksIGl0IHNob3VsZCBiZSBwcmV0dHkgcG93ZXJmdWwgCj4gY29tcGFy ZWQgdG8gYm9hcmRzIGxpa2UgUlBJIENNNC4KPiAKPiBCdXQgdG8gbXkgc3VycHJpc2UsIEtWTSBy dW5zIHByZXR0eSBwb29yIG9uIFhhdmllci4KPiAKPiBKdXN0IGJvb3RpbmcgdGhlIGVkazIgZmly bXdhcmUgY291bGQgdGFrZSBvdmVyIDEwcywgYW5kIDIwcyB0byBmdWxseSAKPiBib290IHRoZSBr ZXJuZWwuCj4gRXZlbiBteSBWTSBvbiBSUEkgQ000IGhhcyB3YXkgZmFzdGVyIGJvb3QgdGltZSwg ZXZlbiBqdXN0IHJ1bm5pbmcgb24gCj4gUENJRTIuMCB4MSBsYW5lIE5WTUUsIGFuZCBqdXN0IDQg Mi4xR2h6IEE3MiBjb3JlLgo+IAo+IFRoaXMgaXMgZGVmaW5pdGVseSBvdXQgb2YgbXkgZXhwZWN0 YXRpb24sIEkgZG91YmxlIGNoZWNrZWQgdG8gYmUgc3VyZSAKPiB0aGF0IGl0J3MgcnVubmluZyBp biBLVk0gbW9kZS4KPiAKPiBCdXQgZnVydGhlciBkaWdnaW5nIHNob3dzIHRoYXQsIHNpbmNlIFhh dmllciBBR1ggQ1BVIHN1cHBvcnRzIFZIRSwga3ZtIAo+IGlzIHJ1bm5pbmcgaW4gVkhFIG1vZGUg b3RoZXIgdGhhbiBIWVAgbW9kZSBvbiBDTTQuCj4gCj4gSXMgdGhlcmUgYW55d2F5IHRvIG1hbnVh bGx5IGRpc2FibGUgVkhFIG1vZGUgdG8gdGVzdCB0aGUgbW9yZSBjb21tb24gSFlQIAo+IG1vZGUg b24gWGF2aWVyPwoKQWNjb3JkaW5nIHRvIGtlcm5lbC1wYXJhbWV0ZXJzLnR4dCwgImt2bS1hcm0u bW9kZT1udmhlIiAob3IgaXRzIApsb3ctbGV2ZWwgZXF1aXZhbGVudCAiaWRfYWE2NG1tZnIxLnZo PTAiKSBvbiB0aGUgY29tbWFuZCBsaW5lIHNob3VsZCBkbyAKdGhhdC4KCkhvd2V2ZXIgSSdkIGlt YWdpbmUgdGhlIGRpc2NyZXBhbmN5IGlzIGxpa2VseSB0byBiZSBzb21ldGhpbmcgbW9yZSAKZnVu ZGFtZW50YWwgdG8gdGhlIHdpbGRseSBkaWZmZXJlbnQgbWljcm9hcmNoaXRlY3R1cmVzLiBUaGVy ZSdzIApjZXJ0YWlubHkgbm8gaGFybSBpbiBnaXZpbmcgbm9uLVZIRSBhIGdvIGZvciBjb21wYXJp c29uLCBidXQgSSB3b3VsZG4ndCAKYmUgc3VycHJpc2VkIGlmIGl0IHR1cm5zIG91dCBldmVuIHNs b3dlci4uLgoKUm9iaW4uCgo+IEJUVywgdGhpcyBpcyB0aGUgZG1lc2cgcmVsYXRlZCB0byBLVk0g b24gWGF2aWVyLCBydW5uaW5nIHY1LjEzIHVwc3RyZWFtIAo+IGtlcm5lbCwgd2l0aCA2NEsgcGFn ZSBzaXplOgo+IFvCoMKgwqAgMC44NTIzNTddIGt2bSBbMV06IElQQSBTaXplIExpbWl0OiA0MCBi aXRzCj4gW8KgwqDCoCAwLjg1NzM3OF0ga3ZtIFsxXTogdmdpYyBpbnRlcnJ1cHQgSVJROQo+IFvC oMKgwqAgMC44NjIxMjJdIGt2bTogcG11IGV2ZW50IGNyZWF0aW9uIGZhaWxlZCAtMgo+IFvCoMKg wqAgMC44NjY3MzRdIGt2bSBbMV06IFZIRSBtb2RlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseQo+ IAo+IFdoaWxlIG9uIENNNCwgdGhlIGhvc3QgcnVucyB2NS4xMi4xMCB1cHN0cmVhbSBrZXJuZWwg KHdpdGggZG93bnN0cmVhbSAKPiBkdGIpLCB3aXRoIDRLIHBhZ2Ugc2l6ZToKPiBbwqDCoMKgIDEu Mjc2ODE4XSBrdm0gWzFdOiBJUEEgU2l6ZSBMaW1pdDogNDQgYml0cwo+IFvCoMKgwqAgMS4yNzg0 MjVdIGt2bSBbMV06IHZnaWMgaW50ZXJydXB0IElSUTkKPiBbwqDCoMKgIDEuMjc4NjIwXSBrdm0g WzFdOiBIeXAgbW9kZSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkKPiAKPiBDb3VsZCBpdCBiZSB0 aGUgUEFHRSBzaXplIGNhdXNpbmcgcHJvYmxlbT8KPiAKPiBUaGFua3MsCj4gUXUKPiAKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0Cj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczov L2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo= 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.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 DCA96C07E96 for ; Thu, 15 Jul 2021 09:48:18 +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 AB831613BA for ; Thu, 15 Jul 2021 09:48:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AB831613BA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com 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-Type: Content-Transfer-Encoding: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:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tvJra9nv2mj/c8+oq7pZl8GXKdr9/4HmR4xbcT2Fh20=; b=3LK/foqWmE30bYqwqi+n7j060F 23K4C97qWBLD2GLoCrNvAUIDsWtSKUtWEVw24GV0N22i2LT0lQQwbqx2nEqZxYhmK2ZFVHfWSenRS LF/9/CQ7u0RUhZ24MckspkURLy5WQpl6A62ESOmgdWoEc/BikHuv8d0fvLwmgHshvPo87KWvERiZf gt+tPALnp0biEPbvN3RGl2pcGphJR+2RdQz7irro/CwIf0dOB//uL0lm9SghA8w+XhM7SUR/s899D mULtTYLV+TfmSMVhTVeYeGxbz5NvYQ0lBIjrxahurzqUrZmzu2y2qHM+2RVdsPYEP4NiptqOQnGZ8 dYM2X+ag==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m3xwN-000Iui-N0; Thu, 15 Jul 2021 09:46:00 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m3xft-000BVO-KJ for linux-arm-kernel@lists.infradead.org; Thu, 15 Jul 2021 09:28:59 +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 53A646D; Thu, 15 Jul 2021 02:28:55 -0700 (PDT) Received: from [10.57.36.240] (unknown [10.57.36.240]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9CB9D3F774; Thu, 15 Jul 2021 02:28:54 -0700 (PDT) Subject: Re: Any way to disable KVM VHE extension? To: Qu Wenruo , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Linux ARM References: <37f873cf-1b39-ea7f-a5e7-6feb0200dd4c@suse.com> From: Robin Murphy Message-ID: Date: Thu, 15 Jul 2021 10:28:49 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <37f873cf-1b39-ea7f-a5e7-6feb0200dd4c@suse.com> Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210715_022857_778342_780E7CF2 X-CRM114-Status: GOOD ( 21.65 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMS0wNy0xNSAwOTo1NSwgUXUgV2VucnVvIHdyb3RlOgo+IEhpLAo+IAo+IFJlY2VudGx5 IEknbSBwbGF5aW5nIGFyb3VuZCB0aGUgTnZpZGlhIFhhdmllciBBR1ggYm9hcmQsIHdoaWNoIGhh cyBWSEUgCj4gZXh0ZW5zaW9uIHN1cHBvcnQuCj4gCj4gSW4gdGhlb3J5LCBjb25zaWRlcmluZyB0 aGUgQ1BVIGFuZCBtZW1vcnksIGl0IHNob3VsZCBiZSBwcmV0dHkgcG93ZXJmdWwgCj4gY29tcGFy ZWQgdG8gYm9hcmRzIGxpa2UgUlBJIENNNC4KPiAKPiBCdXQgdG8gbXkgc3VycHJpc2UsIEtWTSBy dW5zIHByZXR0eSBwb29yIG9uIFhhdmllci4KPiAKPiBKdXN0IGJvb3RpbmcgdGhlIGVkazIgZmly bXdhcmUgY291bGQgdGFrZSBvdmVyIDEwcywgYW5kIDIwcyB0byBmdWxseSAKPiBib290IHRoZSBr ZXJuZWwuCj4gRXZlbiBteSBWTSBvbiBSUEkgQ000IGhhcyB3YXkgZmFzdGVyIGJvb3QgdGltZSwg ZXZlbiBqdXN0IHJ1bm5pbmcgb24gCj4gUENJRTIuMCB4MSBsYW5lIE5WTUUsIGFuZCBqdXN0IDQg Mi4xR2h6IEE3MiBjb3JlLgo+IAo+IFRoaXMgaXMgZGVmaW5pdGVseSBvdXQgb2YgbXkgZXhwZWN0 YXRpb24sIEkgZG91YmxlIGNoZWNrZWQgdG8gYmUgc3VyZSAKPiB0aGF0IGl0J3MgcnVubmluZyBp biBLVk0gbW9kZS4KPiAKPiBCdXQgZnVydGhlciBkaWdnaW5nIHNob3dzIHRoYXQsIHNpbmNlIFhh dmllciBBR1ggQ1BVIHN1cHBvcnRzIFZIRSwga3ZtIAo+IGlzIHJ1bm5pbmcgaW4gVkhFIG1vZGUg b3RoZXIgdGhhbiBIWVAgbW9kZSBvbiBDTTQuCj4gCj4gSXMgdGhlcmUgYW55d2F5IHRvIG1hbnVh bGx5IGRpc2FibGUgVkhFIG1vZGUgdG8gdGVzdCB0aGUgbW9yZSBjb21tb24gSFlQIAo+IG1vZGUg b24gWGF2aWVyPwoKQWNjb3JkaW5nIHRvIGtlcm5lbC1wYXJhbWV0ZXJzLnR4dCwgImt2bS1hcm0u bW9kZT1udmhlIiAob3IgaXRzIApsb3ctbGV2ZWwgZXF1aXZhbGVudCAiaWRfYWE2NG1tZnIxLnZo PTAiKSBvbiB0aGUgY29tbWFuZCBsaW5lIHNob3VsZCBkbyAKdGhhdC4KCkhvd2V2ZXIgSSdkIGlt YWdpbmUgdGhlIGRpc2NyZXBhbmN5IGlzIGxpa2VseSB0byBiZSBzb21ldGhpbmcgbW9yZSAKZnVu ZGFtZW50YWwgdG8gdGhlIHdpbGRseSBkaWZmZXJlbnQgbWljcm9hcmNoaXRlY3R1cmVzLiBUaGVy ZSdzIApjZXJ0YWlubHkgbm8gaGFybSBpbiBnaXZpbmcgbm9uLVZIRSBhIGdvIGZvciBjb21wYXJp c29uLCBidXQgSSB3b3VsZG4ndCAKYmUgc3VycHJpc2VkIGlmIGl0IHR1cm5zIG91dCBldmVuIHNs b3dlci4uLgoKUm9iaW4uCgo+IEJUVywgdGhpcyBpcyB0aGUgZG1lc2cgcmVsYXRlZCB0byBLVk0g b24gWGF2aWVyLCBydW5uaW5nIHY1LjEzIHVwc3RyZWFtIAo+IGtlcm5lbCwgd2l0aCA2NEsgcGFn ZSBzaXplOgo+IFvCoMKgwqAgMC44NTIzNTddIGt2bSBbMV06IElQQSBTaXplIExpbWl0OiA0MCBi aXRzCj4gW8KgwqDCoCAwLjg1NzM3OF0ga3ZtIFsxXTogdmdpYyBpbnRlcnJ1cHQgSVJROQo+IFvC oMKgwqAgMC44NjIxMjJdIGt2bTogcG11IGV2ZW50IGNyZWF0aW9uIGZhaWxlZCAtMgo+IFvCoMKg wqAgMC44NjY3MzRdIGt2bSBbMV06IFZIRSBtb2RlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseQo+ IAo+IFdoaWxlIG9uIENNNCwgdGhlIGhvc3QgcnVucyB2NS4xMi4xMCB1cHN0cmVhbSBrZXJuZWwg KHdpdGggZG93bnN0cmVhbSAKPiBkdGIpLCB3aXRoIDRLIHBhZ2Ugc2l6ZToKPiBbwqDCoMKgIDEu Mjc2ODE4XSBrdm0gWzFdOiBJUEEgU2l6ZSBMaW1pdDogNDQgYml0cwo+IFvCoMKgwqAgMS4yNzg0 MjVdIGt2bSBbMV06IHZnaWMgaW50ZXJydXB0IElSUTkKPiBbwqDCoMKgIDEuMjc4NjIwXSBrdm0g WzFdOiBIeXAgbW9kZSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkKPiAKPiBDb3VsZCBpdCBiZSB0 aGUgUEFHRSBzaXplIGNhdXNpbmcgcHJvYmxlbT8KPiAKPiBUaGFua3MsCj4gUXUKPiAKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0Cj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==