[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Re: x86_64 SMP support (status update)




On 27 Jun 2005, at 23:15, Nakajima, Jun wrote:

The nptl01 runs fine on dom0 as long as it
runs _alone_. It starts failing with presence of domUs. I feel this
implies some problems with GDT switching. Is there any race you think of
where modifications to GDT (done by do_update_descriptor) are not be
visible or deferred?

Actually, the bug is in XenLinux. You need to save DS-GS (and possibly also clear each one, if it is not already zero) before switching CR3 in switch_mm. We use prepare_arch_switch() hook in include/asm-xen/asm-i386/mmu_context.h for this purpose (although on i386 we only need to save/clear FS-GS at that point).

What is currently happening is that a domain ctxt switch is happening after switch_mm but before __switch_to. So when Xen switches back to your test domain, it tries to load old process's FS value and fails -- traps up to XenLinux which sets FS to zero. So you end up saving FS==0 for the nptl process and next time XenLinux switches to it you are toast. :-)

Solution:
Move segment save/clear to prepare_arch_switch. Remove segment save from __switch_to. If you choose to clear segment registers in prepare_arch_switch, remove the test of prev->{ds,es,fs,gs} from segment reload tests.

 -- Keir


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.