On Fri, Sep 04, 2009 at 09:07:39AM -0700, Jeremy Fitzhardinge wrote: > On 09/03/09 15:36, Bastian Blank wrote: > > This function looks weird. It tries to restores the user code segment. > > But the documentation from AMD explicitely stat that the CS and SS are > > restored from the STAR register. > > And STAR is always set with: > wrmsrl(MSR_STAR, ((u64)__USER32_CS)<<48 | ((u64)__KERNEL_CS)<<32);
No. This is the normal kernel setup. But the Xen setup (the relevant one) looks different: | #define FLAT_RING3_CS32 0xe023 | wrmsr(MSR_STAR, 0, (FLAT_RING3_CS32<<16) | __HYPERVISOR_CS); But this does not match my observation either. And even the native Linux kernel uses "iret" to jump out of a compat (32bit) syscall. No, I don't want to understand this, but it looks highly broken. Bastian -- Captain's Log, star date 21:34.5... -- To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org