From: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
To: Maxim Levitsky <mlevitsk@redhat.com>,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
seanjc@google.com
Cc: pbonzini@redhat.com, joro@8bytes.org, jon.grimm@amd.com,
wei.huang2@amd.com, terry.bowman@amd.com
Subject: Re: [RFC PATCH 04/13] KVM: SVM: Only call vcpu_(un)blocking when AVIC is enabled.
Date: Tue, 1 Mar 2022 16:59:23 +0700 [thread overview]
Message-ID: <214b5d5e-f936-f50c-b26c-334ecbbdface@amd.com> (raw)
In-Reply-To: <dc820a37ef302ed7c11315c01c6f434d5506c543.camel@redhat.com>
Hi Maxim,
On 2/24/22 11:54 PM, Maxim Levitsky wrote:
> On Sun, 2022-02-20 at 20:19 -0600, Suravee Suthikulpanit wrote:
>> The kvm_x86_ops.vcpu_(un)blocking are needed by AVIC only.
>> Therefore, set the ops only when AVIC is enabled.
>>
>> Suggested-by: Sean Christopherson<seanjc@google.com>
>> Signed-off-by: Suravee Suthikulpanit<suravee.suthikulpanit@amd.com>
>> ---
>> arch/x86/kvm/svm/avic.c | 12 ++++++++++--
>> arch/x86/kvm/svm/svm.c | 7 -------
>> arch/x86/kvm/svm/svm.h | 2 --
>> 3 files changed, 10 insertions(+), 11 deletions(-)
>>
>> diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c
>> index abde08ca23ab..0040824e4376 100644
>> --- a/arch/x86/kvm/svm/avic.c
>> +++ b/arch/x86/kvm/svm/avic.c
>> @@ -996,7 +996,7 @@ void avic_vcpu_put(struct kvm_vcpu *vcpu)
>> WRITE_ONCE(*(svm->avic_physical_id_cache), entry);
>> }
>>
>> -void avic_vcpu_blocking(struct kvm_vcpu *vcpu)
>> +static void avic_vcpu_blocking(struct kvm_vcpu *vcpu)
>> {
>> if (!kvm_vcpu_apicv_active(vcpu))
>> return;
>> @@ -1021,7 +1021,7 @@ void avic_vcpu_blocking(struct kvm_vcpu *vcpu)
>> preempt_enable();
>> }
>>
>> -void avic_vcpu_unblocking(struct kvm_vcpu *vcpu)
>> +static void avic_vcpu_unblocking(struct kvm_vcpu *vcpu)
>> {
>> int cpu;
>>
>> @@ -1057,6 +1057,14 @@ bool avic_hardware_setup(struct kvm_x86_ops *x86_ops)
>> pr_info("x2AVIC enabled\n");
>> }
>>
>> + if (avic_mode) {
>> + x86_ops->vcpu_blocking = avic_vcpu_blocking;
>> + x86_ops->vcpu_unblocking = avic_vcpu_unblocking;
>> + } else {
>> + x86_ops->vcpu_blocking = NULL;
>> + x86_ops->vcpu_unblocking = NULL;
>> + }
>> +
>> amd_iommu_register_ga_log_notifier(&avic_ga_log_notifier);
>> return !!avic_mode;
>> }
>> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
>> index 3048f4b758d6..3687026f2859 100644
>> --- a/arch/x86/kvm/svm/svm.c
>> +++ b/arch/x86/kvm/svm/svm.c
>> @@ -4531,8 +4531,6 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {
>> .prepare_guest_switch = svm_prepare_guest_switch,
>> .vcpu_load = svm_vcpu_load,
>> .vcpu_put = svm_vcpu_put,
>> - .vcpu_blocking = avic_vcpu_blocking,
>> - .vcpu_unblocking = avic_vcpu_unblocking,
>>
>> .update_exception_bitmap = svm_update_exception_bitmap,
>> .get_msr_feature = svm_get_msr_feature,
>> @@ -4819,11 +4817,6 @@ static __init int svm_hardware_setup(void)
>>
>> enable_apicv = avic = avic && avic_hardware_setup(&svm_x86_ops);
>>
>> - if (!enable_apicv) {
>> - svm_x86_ops.vcpu_blocking = NULL;
>> - svm_x86_ops.vcpu_unblocking = NULL;
>> - }
> Isn't this code already zeros these callbacks when avic is not enabled?
Ah, right. I'll remove the setting to NULL.
> I am not sure why this patch is needed to be honest.
It's not related to x2AVIC. It was recommended by Sean earlier
in another patch series:
https://lore.kernel.org/lkml/Yc3r1U6WFVDtJCZn@google.com/
Since this series introduces the helper function avic_hardware_setup(),
and re-factor the AVIC setup code into the function. So, I am including
his recommendation in this series instead..
Regards,
Suravee
next prev parent reply other threads:[~2022-03-01 9:59 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-21 2:19 [RFC PATCH 00/13] Introducing AMD x2APIC Virtualization (x2AVIC) support Suravee Suthikulpanit
2022-02-21 2:19 ` [RFC PATCH 01/13] KVM: SVM: Add warning when encounter invalid APIC ID Suravee Suthikulpanit
2022-02-24 16:30 ` Maxim Levitsky
2022-02-21 2:19 ` [RFC PATCH 02/13] x86/cpufeatures: Introduce x2AVIC CPUID bit Suravee Suthikulpanit
2022-02-24 16:32 ` Maxim Levitsky
2022-02-21 2:19 ` [RFC PATCH 03/13] KVM: SVM: Detect X2APIC virtualization (x2AVIC) support Suravee Suthikulpanit
2022-02-24 16:52 ` Maxim Levitsky
2022-03-01 9:45 ` Suravee Suthikulpanit
2022-02-21 2:19 ` [RFC PATCH 04/13] KVM: SVM: Only call vcpu_(un)blocking when AVIC is enabled Suravee Suthikulpanit
2022-02-24 16:54 ` Maxim Levitsky
2022-03-01 9:59 ` Suravee Suthikulpanit [this message]
2022-02-21 2:19 ` [RFC PATCH 05/13] KVM: SVM: Update max number of vCPUs supported for x2AVIC mode Suravee Suthikulpanit
2022-02-24 17:18 ` Maxim Levitsky
2022-03-01 10:47 ` Suravee Suthikulpanit
2022-03-01 11:31 ` Maxim Levitsky
2022-02-21 2:19 ` [RFC PATCH 06/13] KVM: SVM: Add logic to determine x2APIC mode Suravee Suthikulpanit
2022-02-24 17:29 ` Maxim Levitsky
2022-03-03 2:12 ` Suthikulpanit, Suravee
2022-03-03 13:12 ` Suravee Suthikulpanit
2022-02-21 2:19 ` [RFC PATCH 07/13] KVM: SVM: Update avic_kick_target_vcpus to support 32-bit APIC ID Suravee Suthikulpanit
2022-02-24 17:35 ` Maxim Levitsky
2022-03-03 14:41 ` Suravee Suthikulpanit
2022-02-21 2:19 ` [RFC PATCH 08/13] KVM: SVM: Do not update logical APIC ID table when in x2APIC mode Suravee Suthikulpanit
2022-02-24 17:41 ` Maxim Levitsky
2022-03-08 5:24 ` Suthikulpanit, Suravee
2022-02-21 2:19 ` [RFC PATCH 09/13] KVM: SVM: Introduce helper function avic_get_apic_id Suravee Suthikulpanit
2022-02-24 19:46 ` Maxim Levitsky
2022-02-21 2:19 ` [RFC PATCH 10/13] KVM: SVM: Adding support for configuring x2APIC MSRs interception Suravee Suthikulpanit
2022-02-24 19:51 ` Maxim Levitsky
2022-03-07 10:14 ` Suthikulpanit, Suravee
2022-02-21 2:19 ` [RFC PATCH 11/13] KVM: SVM: Add logic to switch between APIC and x2APIC virtualization mode Suravee Suthikulpanit
2022-02-22 5:39 ` Suthikulpanit, Suravee
2022-02-24 20:03 ` Maxim Levitsky
2022-03-04 11:22 ` Suravee Suthikulpanit
2022-03-04 11:51 ` Maxim Levitsky
2022-02-21 2:19 ` [RFC PATCH 12/13] KVM: SVM: Remove APICv inhibit reasone due to x2APIC Suravee Suthikulpanit
2022-02-24 20:06 ` Maxim Levitsky
2022-03-01 14:02 ` Suravee Suthikulpanit
2022-02-21 2:19 ` [RFC PATCH 13/13] KVM: SVM: Use fastpath x2apic IPI emulation when #vmexit with x2AVIC Suravee Suthikulpanit
2022-02-24 20:12 ` Maxim Levitsky
2022-03-07 6:24 ` Suthikulpanit, Suravee
2022-02-22 5:37 ` [RFC PATCH 00/13] Introducing AMD x2APIC Virtualization (x2AVIC) support Suthikulpanit, Suravee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=214b5d5e-f936-f50c-b26c-334ecbbdface@amd.com \
--to=suravee.suthikulpanit@amd.com \
--cc=jon.grimm@amd.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mlevitsk@redhat.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=terry.bowman@amd.com \
--cc=wei.huang2@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®