Re: [Xen-devel] Shadow Code Reorganization

Gerd Knorr
Tue, 26 Jul 2005 12:44:29 -0000

"Ian Pratt" <m+Ian.Pratt@cl.cam.ac.uk> writes:

> The shadow32.c file (formerly shadow.c) still exists because it''s
had
> more testing than the new file, and we want both in the tree until
we''re
> convinced there''s been no regression between the two.
We''ll then delete
> shadow32 and compile shadow.c in 32 bit mode. Base any new development
> on the new shadow.c

While we are at it and I''ll go work on shadow mode as well soon some
followup questions ;)

 * "normal" shadow mode is almost identical to shadow mode off,
   i.e. the guest does machine<=>phys translations.  The guest
hasn''t
   to mark pages containing page tables r/o because xen can do that in
   the shadow tables.

 * In "translated" shadow mode the guest kernel handles a linear
   physical address space starting at addr zero and xen does the
   machine<=>phys translations when copying guest tables into the
   shadow page tables.

 * "external" is translated shadow mode + separated address space,
   i.e. no hypervisor window in the address space, used for vt.

Correct so far?

Enabling/switching shadow modes works by dropping all shadow tables,
start with a zero-ed toplevel page directory (almost, except
hypervisor window) and update the shadow pagetable tree as faults are
coming in.  Correct?

But it''s not clear to me how the transition between "normal"
and
"translated" shadow mode works.  Does that need support by the guest
os?

  Gerd

--
panic("it works"); /* avoid being flooded with debug messages */