At 15:16 02/08/2007, Peter Teoh wrote:>I saw the following in xen\arch\x86\domain.c:
>
> /*
> * Map Xen segments into every VCPU''s GDT, irrespective of
whether every
> * VCPU will actually be used. This avoids an NMI race during context
> * switch: if we take an interrupt after switching CR3 but
> before switching
> * GDT, and the old VCPU# is invalid in the new domain, we
> would otherwise
> * try to load CS from an invalid table.
> */
>Can someone please elaborate on this "NMI race"? Ie, Between
which
>functions called, for example?
Not sure if there is a "function call" as such - it''s more a
case of
"if someone changes CR3, followed by an NMI", then if not all GDT are
in visible on all VCPU''s, the NMI will fail because it''s
trying to
read the GDT, and the GDT is unavailable in the memory map pointed to by CR3.
So the race is between setting CR3 and setting GDT and NMI''s.
--
Mats
>
>(X-Ref:
><http://osdir.com/ml/emulators.xen.cvs/2005-10/msg00300.html>http://osdir.com/ml/emulators.xen.cvs/2005-10/msg00300.html
>for more details).
>
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@lists.xensource.com
>http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel