Anthony Liguori wrote:
> Howdy,
>
> Attached patch implements lazy-fpu save/restore for VT.  VMEXIT time 
> improves by about 10% (~550 cycles).  I had to do a couple more things 
> to get it working than I had to do with SVM.  I changed the CR0 host 
> mask to be all 1's so that any attempt to write to CR0 causes a 
> VMEXIT.  I don't think there are any remaining bits now that we want 
> to trap TS that are safe for the guest to access and are in the 
> fast-paths.

Great!  With a couple more msrs we'll get to 50% off what we had two 
weeks ago.

>
> Since we're trapping TS, I had to implement CLTS exit handling.  
> vcpu->cr0 also had a rather bizarre life cycle.  After a set_cr0, it 
> was a proper shadow of the guest's CR0.  However, after a decache_cr0, 
> it would contain the host's version of the bits covered by the CR0 
> host mask so it was no longer a proper shadow.
>
> I got rid of the CR0 caching and made vcpu->cr0 always be equivalent 
> to CR0_READ_SHADOW.  Once these changes were made, the rest of the 
> patch was much like the SVM one.
>
>  
> -     if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == 0x200) { /* nmi */
> +     switch (intr_info & INTR_INFO_VECTOR_MASK) {
> +     case NMI_VECTOR:
>               asm ("int $2");
>               return 1;
> +     case NM_VECTOR:
> +             vcpu->fpu_active = 1;
> +             vmcs_clear_bits(EXCEPTION_BITMAP, 1 << NM_VECTOR);
> +             if (!(vcpu->cr0 & CR0_TS_MASK))
> +                     vmcs_clear_bits(GUEST_CR0, CR0_TS_MASK);
> +             return 1;
>       }
>   

I'd like to be conservative here and not depend just on the vector: 
check type == 2 for nmi, and type == 6, vector == NM for #NM.  In fact, 
I see that is_page_fault() and is_external_interrupt() implement 
something like that already.

Also, can you split the patch into the cr0 cache fix and the lazy fpu?

-- 
error compiling committee.c: too many arguments to function


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