qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Optimized clocksource with AMD AVIC enabled for Windows guest


From: Kechen Lu
Subject: RE: Optimized clocksource with AMD AVIC enabled for Windows guest
Date: Fri, 5 Feb 2021 05:38:33 +0000

Cool! Thanks for correction, yeah, APICV_INHIBIT_REASON_HYPERV setting is 
per-VM while synic is per-vCPU. Since the machine with AVIC is not in my hands 
today, I will test it hopefully by end of this week:)

BR,
Kechen

>-----Original Message-----
>From: Vitaly Kuznetsov <vkuznets@redhat.com>
>Sent: Thursday, February 4, 2021 7:19 AM
>To: Paolo Bonzini <pbonzini@redhat.com>; Kechen Lu <kechenl@nvidia.com>
>Cc: suravee.suthikulpanit@amd.com; Somdutta Roy <somduttar@nvidia.com>;
>kvm@vger.kernel.org; qemu-discuss@nongnu.org
>Subject: Re: Optimized clocksource with AMD AVIC enabled for Windows guest
>
>External email: Use caution opening links or attachments
>
>
>Vitaly Kuznetsov <vkuznets@redhat.com> writes:
>
>> +
>> +     auto_eoi_new = bitmap_weight(synic->auto_eoi_bitmap, 256);
>> +
>> +     /* Hyper-V SynIC auto EOI SINT's are not compatible with APICV */
>> +     if (!auto_eoi_old && auto_eoi_new) {
>> +             if (atomic_inc_return(&hv->synic_auto_eoi_used) == 1)
>> +                     kvm_request_apicv_update(vcpu->kvm, false,
>> +                                              APICV_INHIBIT_REASON_HYPERV);
>> +     } else if (!auto_eoi_old && auto_eoi_new) {
>
>Sigh, this 'else' should be
>
>} else if (!auto_eoi_new && auto_eoi_old) {
>
>...
>
>> +             if (atomic_dec_return(&hv->synic_auto_eoi_used) == 0)
>> +                     kvm_request_apicv_update(vcpu->kvm, true,
>> +                                              APICV_INHIBIT_REASON_HYPERV);
>> +     }
>>  }
>>
>>  static int synic_set_sint(struct kvm_vcpu_hv_synic *synic, int sint,
>> @@ -903,12 +923,6 @@ int kvm_hv_activate_synic(struct kvm_vcpu *vcpu,
>> bool dont_zero_synic_pages)  {
>>       struct kvm_vcpu_hv_synic *synic = vcpu_to_synic(vcpu);
>>
>> -     /*
>> -      * Hyper-V SynIC auto EOI SINT's are
>> -      * not compatible with APICV, so request
>> -      * to deactivate APICV permanently.
>> -      */
>> -     kvm_request_apicv_update(vcpu->kvm, false,
>APICV_INHIBIT_REASON_HYPERV);
>>       synic->active = true;
>>       synic->dont_zero_synic_pages = dont_zero_synic_pages;
>>       synic->control = HV_SYNIC_CONTROL_ENABLE;
>
>--
>Vitaly




reply via email to

[Prev in Thread] Current Thread [Next in Thread]