|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
Re: Bug#544145: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel
 
On Mon, 2009-11-23 at 16:31 +0000, Bastian Blank wrote:
> On Mon, Nov 23, 2009 at 03:25:35PM +0000, Ian Campbell wrote:
> > We are attempting to return to the Linux defined __USER_CS32 (0x23)
> > which does not match the test for the Xen defined FLAT_USER_CS32
> > (0xe023) and therefore we hit the sysretq instead of the sysretl which
> > causes us to return with CS 0xe033 (FLAT_USER_CS64) instead of CS
> > 0xe023.
> 
> Well, the problem is that this code ignores what the AMD spec stats:
> 
> | Because a SYSCALLed operating system can be entered from either 64-bit
> | mode or compatibility mode, the corresponding SYSRET must know the mode
> | to which it must return. [...] In the service-routine entry point
> | code, a flag can be set indicating which type of SYSRET is needed upon
> | exiting the called routine.
> 
> The code actually have to know if it was called from 64 or compatibility
> mode, not assume it.
Sounds correct. This is tricky for a hypervisor since we don't know the
mode of the guest user-mode processes which made the syscall. The guest
kernel does know this which is why I proposed an additional
VGCF_compat_mode flag.
> And it also say that you have to use sysret, and not iret.
I don't believe that is the case (the processor would have to carry some
state for the entire duration of a syscall for it to make any
difference). I think the spec simply assumes that an OS author would
want to use sysret if they used syscall.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, (continued)
 
- Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Jan Beulich
 - Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Jeremy Fitzhardinge
 - Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Jan Beulich
 
- Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Ian Campbell
 
- Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Jeremy Fitzhardinge
 - Re: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Ian Campbell
 
- Re: Bug#544145: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Bastian Blank
 - Re: Bug#544145: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel,
Ian Campbell <=
 - Re: Bug#544145: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Bastian Blank
 - Re: Bug#544145: [Xen-devel] Crash with paravirt-ops 2.6.31.6 kernel, Jeremy Fitzhardinge
 
 
 |  
  
 | 
    | 
  
  
    |   | 
    |