On 08.03.2012, at 00:37, Scott Wood wrote:
> On 03/07/2012 05:27 PM, Alexander Graf wrote:
>> On 08.03.2012, at 00:12, Stuart Yoder wrote:
>>>
>>> if (vcpu->requests) {
>>> + /* kvm_vcpu_block() sets KVM_REQ_UNHALT, but it is
>>> + * not cleared elsewhere as on x86. Clear it here
>>> + * for now, otherwise we never go idle.
>>> + */
>>> + clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
>>
>> Shouldn't the same thing hit us on non-booke as well? Also, it sounds
>> unrelated to me and probably shouldn't be in this patch.
>
> Until recently we didn't check for requests in kvm_arch_vcpu_runnable().
>
> And yes, book3s will need this too.
>
>>> if (kvm_check_request(KVM_REQ_PENDING_TIMER, vcpu)) {
>>> smp_mb();
>>> update_timer_ints(vcpu);
>>> diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
>>> index ee489f4..2595916 100644
>>> --- a/arch/powerpc/kvm/powerpc.c
>>> +++ b/arch/powerpc/kvm/powerpc.c
>>> @@ -48,8 +48,7 @@ static unsigned int perfmon_refcount;
>>>
>>> int kvm_arch_vcpu_runnable(struct kvm_vcpu *v)
>>> {
>>> - bool ret = !(v->arch.shared->msr & MSR_WE) ||
>>> - !!(v->arch.pending_exceptions) ||
>>> + bool ret = !!(v->arch.pending_exceptions) ||
>>> v->requests;
>>
>> Huh?
>
> MSR_WE is not going to get set if the idle hcall is used, so this check
> was preventing us from blocking.
>
> The check isn't needed anyway, as nothing can actually change MSR_WE
> while we're in kvm_vcpu_block(), which is the only user of
> kvm_arch_vcpu_runnable(), and the MSR_WE path won't call
> kvm_vcpu_block() if MSR_WE isn't set.
Ah, this is only removing the MSR_WE check. Ok.
Alex
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html