Ingo Molnar wrote:
> hm, i just noticed that in vmx_vcpu_run() KVM restores %fs quite late. 
>
> This is a bit awkward under v2.6.21 x86 because there we use %fs for the 
> KERNEL_PDA area. Things like 'current' rely on it. So maybe we should 
> just do this unconditionally in assembly:
>
>         movl $(__KERNEL_PDA), %edx;
>         movl %edx, %fs
>   

Sure, but with %dx instead of %edx, please.

> it's also a problem with -rt too, which has that whole codepath up to 
> the load_fs() call preemptible.
>
> i'm also wondering about this bit:
>
>         kvm_run->exit_type = 0;
>         if (fail) {
>                 kvm_run->exit_type = KVM_EXIT_TYPE_FAIL_ENTRY;
>                 kvm_run->exit_reason = vmcs_read32(VM_INSTRUCTION_ERROR);
>                 kvm_cr3_cache_sync(vcpu);
>                 r = 0;
>         } else {
>                 if (fs_gs_ldt_reload_needed) {
>                         load_ldt(ldt_sel);
>                         load_fs(fs_sel);
>
> are you sure we dont need an FS reload in the 'fail' case?
>   

The manual is not explicit about it, but I think that an entry failure 
during loading of guest state _can_ cause fs to be loaded, so yes, that 
path is missing the segment reloads.

Non -rt kvm cannot preempt there even with CONFIG_PREEMPT=y.  Can 
interrupts reference current?  If so, that fix is needed badly for .21.


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


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to