>>> On Thu, May 24, 2007 at  4:29 AM, in message <[EMAIL PROTECTED]>,
Avi Kivity <[EMAIL PROTECTED]> wrote: 
> Gregory Haskins wrote:
>> Halting in userspace requires a relatively cumbersome mechanism to signal 
> the
>> halted VCPU.  Implementing halt in kernel should be relatively straight
>> forward and it eliminates the need for the signaling
>>
>>  /*
>> + * The vCPU has executed a HLT instruction with in- kernel mode enabled.
>> + */
>> +static int kvm_vcpu_kern_halt(struct kvm_vcpu *vcpu, struct kvm_run 
> *kvm_run)
>> +{
>> +    DECLARE_WAITQUEUE(wait, current);
>> +    sigset_t sigblocked, sigsaved;
>> +    int r = 1;
>> +
>> +    /*
>> +     * Unmask all signals while we wait
>> +     */
>> +    memset(&sigblocked, 0, sizeof(sigblocked));
>> +    sigprocmask(SIG_SETMASK, &sigblocked, &sigsved);
>>   
> 
> We have a specialized signal mask for the kernel, and it is already in 
> effect here.  See KVM_SET_SIGNAL_MASK.
> 

KVM_SET_SIGNAL_MASK is precisely what I was trying to counteract ;).  Basically 
I was thinking that userspace could have set some arbitrary mask that would be 
in effect at this time.  My justification for unmasking everything is two fold: 
 

1) I think I really want *any* signal to kick the HLT, so I temporarily unmask 
everything while halted.

2) Old userspace halting would not have the SET_SIGNAL_MASK set at the time 
either, since we would have restored the original mask before returning to 
userspace.

That being said, I am not an expert here so I may have got it wrong.  Please 
advise.

-Greg

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to