Re: [PATCH 2/2 v2] KVM: PPC: booke: Add watchdog emulation

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

 



On 07/17/2012 06:31 AM, Bhushan Bharat-R65777 wrote:
>>>>  int kvm_arch_vcpu_runnable(struct kvm_vcpu *v)  {
>>>> -    return !(v->arch.shared->msr & MSR_WE) ||
>>>> -           !!(v->arch.pending_exceptions) ||
>>>> -           v->requests;
>>>> +    bool ret = !(v->arch.shared->msr & MSR_WE) ||
>>>> +           !!(v->arch.pending_exceptions) ||
>>>> +           v->requests;
>>>> +
>>>> +    ret = ret || kvmppc_get_tsr_wrc(v);
>>>
>>> Why do you need to declare the cpu as non-runnable when a watchdog
>>> event occured?
>>
>> It's the other way around -- it's always runnable when a watchdog exit is
>> pending.  It's like a pending exception.
> 
> With the above check, Are we trying to handle the case where watchdog
> interrupt bit in pending_exception is cleared by guest after final
> expiry but before the qemu exit?

No, we're just trying to test the actual condition we want to exit on.
The watchdog interrupt might be masked (either with WIE or CE).

> And we want that if TSR.WRS update
> wins the race with clearing of watchdog interrupt condition from
> guest then anyways let QEMU exit with reason KVM_EXIT_WDT?

What race?  If ENW and WIS are both set when the watchdog timer fires,
it's a final expiration.  It's irrelevant what happens to WIS after that
point, before enforcement kicks in.

> What if we do not allow guest clear watchdog interrupt condition if
> final expiry already happened?

What would that solve?

-Scott

--
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