Re: [PATCH/RFC] KVM: halt_polling: provide a way to qualify wakeups during poll

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

 



On 05/03/2016 07:42 AM, Wanpeng Li wrote:
> 2016-05-02 18:42 GMT+08:00 Christian Borntraeger <borntraeger@xxxxxxxxxx>:
> [...]
>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
>> index 9102ae1..d63ea60 100644
>> --- a/virt/kvm/kvm_main.c
>> +++ b/virt/kvm/kvm_main.c
>> @@ -2008,7 +2008,8 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
>>                          * arrives.
>>                          */
>>                         if (kvm_vcpu_check_block(vcpu) < 0) {
>> -                               ++vcpu->stat.halt_successful_poll;
>> +                               if (vcpu_valid_wakeup(vcpu))
>> +                                       ++vcpu->stat.halt_successful_poll;
>>                                 goto out;
>>                         }
>>                         cur = ktime_get();
>> @@ -2038,14 +2039,16 @@ out:
>>                 if (block_ns <= vcpu->halt_poll_ns)
>>                         ;
>>                 /* we had a long block, shrink polling */
>> -               else if (vcpu->halt_poll_ns && block_ns > halt_poll_ns)
>> +               else if (!vcpu_valid_wakeup(vcpu) ||
>> +                       (vcpu->halt_poll_ns && block_ns > halt_poll_ns))
>>                         shrink_halt_poll_ns(vcpu);
>>                 /* we had a short halt and our poll time is too small */
>>                 else if (vcpu->halt_poll_ns < halt_poll_ns &&
>> -                       block_ns < halt_poll_ns)
>> +                       block_ns < halt_poll_ns && vcpu_valid_wakeup(vcpu))
>>                         grow_halt_poll_ns(vcpu);
>>         } else
>>                 vcpu->halt_poll_ns = 0;
>> +       vcpu_reset_wakeup(vcpu);
> 
> Why mark the next wakeup as a non-sucessful poll?

It is basically only used for s390 and used as a mean to implement the "default off,
only on for selected cases". But yes, if somebody else wants to use it this might 
need to be changed.
So what about changing this into
kvm_arch_vcpu_block_finish(vcpu)
which is a reset on s390 and a no for others?

Christian

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux