[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 thisimplies some problems with GDT switching. Is there any race you think ofwhere 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |