Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp4055178pxm; Tue, 1 Mar 2022 10:17:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJwhIBvR2b/En8SLQkAKrhOny/FqJrEJr1x3V3tjxdmY78zBZ1VpPAQQjcSkDc2wupZSMpsx X-Received: by 2002:a17:902:7086:b0:14f:ee29:5ef0 with SMTP id z6-20020a170902708600b0014fee295ef0mr26458440plk.142.1646158672739; Tue, 01 Mar 2022 10:17:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646158672; cv=none; d=google.com; s=arc-20160816; b=FZBHmBimMbgkalgYVlvnCNCHtAcmTt/TDtvSDb2Z8kHxxyGjmlPiyROZaUgBVbMQWm RL0Dtv65W4YnQrH6T5iJ742+aB1LIy0+HJzdj3JzbXqhfPuvQzOXgWch2qTYPJL8DPoJ FBihCheNB4QuRccgcD+76Blal9VnK9EmK5hD6RywCWBELiPuCAbjUhjQCkMSQAa0DsQK D692+CDcVfvFCNVsFk1qHNmyMFPoNRmbyTM6Y6M+dnxNZZfyRMZHl+Hguw7a6nyPVZ+S hI6OQMEeFOnaI/+88htUMBnspkrrBYDHMCop5PqVVNqu6jHy2j0ZfVhZzx7Fp9RZzTKM EPqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=IrlX1EuXuhvZFO5dyfwsKkbcsiZCA12sMewuJW1ZcQg=; b=sjkM6dZdOKE3PmfnMECJ/Dr5fSrXGh2PVeXAkYTbjA8C6tHqy9LwzIEvusGrWSEYER VokDqP7/9ZZKoU1AnMsZmQ6Lgut70ICY1K5tnKtDKndaI5HlCe1kcfZL7fELsGNNMcjM x1FsYnXV30SjcJX7Y3ody7vUlk6P68krako2DhcdGdAq8eNuAib08XidzokjKwwXOlgp 18sPa69LnHwHRrPmwPnbQwnAmCGRJ4S0sXozCGtL79r/8Z7lNwC8Ggt7CZTeMcBAX0wQ GGqsO5I4kcsnC+bp7i6P82DWQ/eeRfG67McWftO7P9+cNQxI6dV2y1ZH0eGS3MImseq/ vOrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="VaCU/amE"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d34-20020a631d62000000b0037306863f64si13449681pgm.701.2022.03.01.10.17.35; Tue, 01 Mar 2022 10:17:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="VaCU/amE"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236507AbiCARzk (ORCPT + 99 others); Tue, 1 Mar 2022 12:55:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233509AbiCARzj (ORCPT ); Tue, 1 Mar 2022 12:55:39 -0500 Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4EB33F33B for ; Tue, 1 Mar 2022 09:54:58 -0800 (PST) Received: by mail-pf1-x436.google.com with SMTP id x18so14940031pfh.5 for ; Tue, 01 Mar 2022 09:54:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=IrlX1EuXuhvZFO5dyfwsKkbcsiZCA12sMewuJW1ZcQg=; b=VaCU/amEuSGHsWyLjWVzhe4lT4UoHiib+D1qJwuxcT0I0vyV/0YaAhz5h0ndF6eg8c Cit87v2fsFLtpZ965a6BJbXSLH1dL2gZsxv9ZYp5SlLL3Yf4b52bk00PMi4SLUgddVDD E1Nf01htX0Ejx69EUqV/ZWhuP16S1Ub8joiSbL2DtYbay7LGYmo9oigmnDhNWytR56xr zHGG9Rla0TY0wMTspHpdcNjFUB/t2V6l7vXKjXlTXp65Ae+G7S5hSszJU6TAe7uhOrIW x8vicH6kLZUq0hqfNFxXd9egOibFCmoFZDhWw+BijO+9X8sid1SgUKaXvwj/SULQRGLe wIcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=IrlX1EuXuhvZFO5dyfwsKkbcsiZCA12sMewuJW1ZcQg=; b=eeAP3ZOI8a8nl0mOJOg1+Ufye3UoIiLDcUmuyeGyzKV/+QCWjTKVt9L7rFInwPlP0A pAfGdvUEscboj66t2ekulXru9seGS/VbcCZuQv7W0vVkn3pM9PwP3nUw0pbJZmM3ZJVV N3OAeQxNHORe51IAkbKqeIf9OXEiwhADd4IQvulRFagjZdx5ipcSnvriLdB6HEeFaMQq BARGW7DEddfaLI91B79p+i8jtt5cNQPBwVbbak7hKo8lRxr/QxfO81KbKV9VKk0CMVQj 3bf9VC42rxUmHcgqYcCGvaHPUmyRhh+7S2TgQC1ORvnjl4Z36CwflH/6WfTzxv3l8uwK PC1A== X-Gm-Message-State: AOAM531udrMf939PkC5ZH/fNjMGvs+Bfh8KNoGaqjgvdUFjBT9HkD+ub 046Zro336sOYVvEgjRazTEojkQ== X-Received: by 2002:a63:e60:0:b0:374:6620:f372 with SMTP id 32-20020a630e60000000b003746620f372mr22253197pgo.557.1646157298000; Tue, 01 Mar 2022 09:54:58 -0800 (PST) Received: from google.com (157.214.185.35.bc.googleusercontent.com. [35.185.214.157]) by smtp.gmail.com with ESMTPSA id k130-20020a633d88000000b00378c359ea29sm4384360pga.12.2022.03.01.09.54.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Mar 2022 09:54:57 -0800 (PST) Date: Tue, 1 Mar 2022 17:54:53 +0000 From: Sean Christopherson To: Peng Hao Cc: pbonzini@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] kvm: x86: Improve virtual machine startup performance Message-ID: References: <20220301063756.16817-1-flyingpeng@tencent.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220301063756.16817-1-flyingpeng@tencent.com> X-Spam-Status: No, score=-18.1 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 01, 2022, Peng Hao wrote: > From: Peng Hao > > vcpu 0 will repeatedly enter/exit the smm state during the startup > phase, and kvm_init_mmu will be called repeatedly during this process. > There are parts of the mmu initialization code that do not need to be > modified after the first initialization. > > Statistics on my server, vcpu0 when starting the virtual machine > Calling kvm_init_mmu more than 600 times (due to smm state switching). > The patch can save about 36 microseconds in total. > > Signed-off-by: Peng Hao > --- > @@ -5054,7 +5059,7 @@ void kvm_mmu_after_set_cpuid(struct kvm_vcpu *vcpu) > void kvm_mmu_reset_context(struct kvm_vcpu *vcpu) > { > kvm_mmu_unload(vcpu); > - kvm_init_mmu(vcpu); > + kvm_init_mmu(vcpu, false); This is wrong, kvm_mmu_reset_context() is the "big hammer" and is expected to unconditionally get the MMU to a known good state. E.g. failure to initialize means this code: context->shadow_root_level = kvm_mmu_get_tdp_level(vcpu); will not update the shadow_root_level as expected in response to userspace changing guest.MAXPHYADDR in such a way that KVM enables/disables 5-level paging. The SMM transitions definitely need to be fixed, and we're slowly getting there, but sadly there's no quick fix.