Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2423437iob; Fri, 6 May 2022 02:29:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJySr+PQFSCduR7rV/z0J4F+XiWScOvu1Th3+fS26SeS92dT3EX9z9XQ4oJASiRmti41lP+9 X-Received: by 2002:a05:6402:3326:b0:426:4883:60a with SMTP id e38-20020a056402332600b004264883060amr2422895eda.310.1651829374019; Fri, 06 May 2022 02:29:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651829374; cv=none; d=google.com; s=arc-20160816; b=uz3wfJHxw4kagdHi6zMuG+bLsWuJw1IjXKizD+N8goLzvGC64wMpWSgGgbjb/b5DH9 0zKl3c/THYLagPk3mZSGCCHpPNUwQpd0janVmf9RlXajE4e/syTnwRcZAPX4C7vUxZ9t krzvJmh8VwLdhKwxyqEakZSm1sMUTUW2vztRSy4W/1WiYDEK1j16uIX4Wn70kw5GsyrI wbAqewTM1j3z4J55Evdq16NrdozbYh5Do9Nky0aJLleloFi2NuwLHgIige5IS/B9+lOF gIVaKMTNMc3OnZaiRbAAVusstthRpEGbowTjrV4Ye2gTftcwzBSiDOHTbxX/gV8Htqkt Rz3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=VLRlNqVxUT2J8rpKP9C1tMXllHlMCc2mtFE3UdmkF1o=; b=Jr0FOWfeZFEcRKqJCKrPMZI0oThtVSPGhKKVb8PTj69l3+PJR110P8E5OL0r0cniNI 4l8duaHhGzdoso9BOO4XvfdrM5M/tX7ytLK7cr/bceYfZb3pGSvdk1ZoGzLB9egLoBiu Fazy9wasRZXaFpKexUUI5Vqt5XJ6kZUKGwZIbd5fhoFkAsR5YdSvpZdzPHiBlh3ZCFAi dHW6DqMw17mT1hyRjRXRmNDk7v6KcP3ApprE6n180/QH+BpbA+jWNrtlZIKCN1gSZozs Z3nTiBUJA4nzqtuo2gEabtfL8Cu4mv2LSOF6I/QWaWeLxf5P1GeRHpwpwOmhRFAcOhFJ Fstg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="ANme/2kU"; 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=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c9-20020a1709060fc900b006f392b2aac4si4053309ejk.190.2022.05.06.02.29.10; Fri, 06 May 2022 02:29:34 -0700 (PDT) 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=@redhat.com header.s=mimecast20190719 header.b="ANme/2kU"; 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=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345675AbiEEHpo (ORCPT + 99 others); Thu, 5 May 2022 03:45:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52434 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345513AbiEEHpn (ORCPT ); Thu, 5 May 2022 03:45:43 -0400 X-Greylist: delayed 302 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Thu, 05 May 2022 00:42:04 PDT Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [170.10.133.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7356A488A0 for ; Thu, 5 May 2022 00:42:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651736523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VLRlNqVxUT2J8rpKP9C1tMXllHlMCc2mtFE3UdmkF1o=; b=ANme/2kUU5M7JshotflJC6kkKiABEn9g1Q4ANKtIRkIKCjtK9Pcf8rWzmXYKUj+rInedLF /DCD5Jx6wdXRMDOzh6PK9KD6XgBUeHCVESZRytqcjaq4snGm5s08PAz3eo7L4J/QOH7XJ/ tl0mEFmF5ad4HK0xG6mBhjioAikVuWw= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-533-H4NCAMwpMLKptHmppoGcfw-1; Thu, 05 May 2022 03:35:01 -0400 X-MC-Unique: H4NCAMwpMLKptHmppoGcfw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 73A0C86B8AB; Thu, 5 May 2022 07:35:00 +0000 (UTC) Received: from starship (unknown [10.40.192.26]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5141640D2820; Thu, 5 May 2022 07:34:58 +0000 (UTC) Message-ID: Subject: Re: [PATCH v3 08/14] KVM: SVM: Update AVIC settings when changing APIC mode From: Maxim Levitsky To: Suravee Suthikulpanit , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: pbonzini@redhat.com, seanjc@google.com, joro@8bytes.org, jon.grimm@amd.com, wei.huang2@amd.com, terry.bowman@amd.com Date: Thu, 05 May 2022 10:34:57 +0300 In-Reply-To: References: <20220504073128.12031-1-suravee.suthikulpanit@amd.com> <20220504073128.12031-9-suravee.suthikulpanit@amd.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.36.5 (3.36.5-2.fc32) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE 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 Thu, 2022-05-05 at 08:38 +0700, Suravee Suthikulpanit wrote: > Maxim, > > On 5/4/22 7:19 PM, Maxim Levitsky wrote: > > On Wed, 2022-05-04 at 02:31 -0500, Suravee Suthikulpanit wrote: > > > Update and refresh AVIC settings when guest APIC mode is updated > > > (e.g. changing between disabled, xAPIC, or x2APIC). > > > > > > Signed-off-by: Suravee Suthikulpanit > > > --- > > > arch/x86/kvm/svm/avic.c | 16 ++++++++++++++++ > > > arch/x86/kvm/svm/svm.c | 1 + > > > 2 files changed, 17 insertions(+) > > > > > > diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c > > > index 3ebeea19b487..d185dd8ddf17 100644 > > > --- a/arch/x86/kvm/svm/avic.c > > > +++ b/arch/x86/kvm/svm/avic.c > > > @@ -691,6 +691,22 @@ void avic_apicv_post_state_restore(struct kvm_vcpu *vcpu) > > > avic_handle_ldr_update(vcpu); > > > } > > > > > > +void avic_set_virtual_apic_mode(struct kvm_vcpu *vcpu) > > > +{ > > > + struct vcpu_svm *svm = to_svm(vcpu); > > > + > > > + if (!lapic_in_kernel(vcpu) || (avic_mode == AVIC_MODE_NONE)) > > > + return; > > > + > > > + if (kvm_get_apic_mode(vcpu) == LAPIC_MODE_INVALID) { > > > + WARN_ONCE(true, "Invalid local APIC state (vcpu_id=%d)", vcpu->vcpu_id); > > > + return; > > > + } > > > + > > > + kvm_vcpu_update_apicv(&svm->vcpu); > > Why to have this call? I think that all that is needed is only to call the > > avic_refresh_apicv_exec_ctrl. > > When APIC mode is updated on each vCPU, we need to check and update > vcpu->arch.apicv_active accordingly, which happens in the kvm_vcpu_update_apicv() This makes sense, but IMHO it would be better then to call kvm_vcpu_update_apicv from the common code when apic mode changes then, because this logic should apply to APICv as well. In fact that logic of not activating AVIC was added in patch 12 (and on second thought I think it should be split to a separate patch), was added to common code, thus calling kvm_vcpu_update_apicv when the condition of 'apic is disabled on this vCPU' should also be done by the common code. Best regards, Maxim Levitsky > > One test case that would fail w/o the kvm_vcpu_update_apicv() is when > we boot a Linux guest w/ guest kernel option _nox2apic_, which Linux forces APIC > mode of vCPUs with APIC ID 255 and higher to disable. W/o this line of code, the VM > would not boot w/ more than 255 vCPUs. > > Regards, > Suravee >