On Sat, Apr 30, 2005 at 09:01:17AM +0000, Scott Parish wrote:
> On Wed, Apr 27, 2005 at 02:03:17PM +0200, Gerd Knorr wrote:
>
> > Well, now it does, boots up to a login prompt ;)
>
> pl1e would straddle a page boundary
I swear there is a muse associated with the send button on email
clients.
In this case the epiphany was the obvious--the problem was that we're
missing alignment. But why?
On the linux side of things we have the following in pgtable-3level.h:
#if 1 /* writable pagetables */
static inline void set_pte(pte_t *ptep, pte_t pte)
{
ptep->pte_high = pte.pte_high;
smp_wmb();
ptep->pte_low = pte.pte_low;
}
...
Here's what (i'm thinking) is going on. We go to set the high bits
(first for atomicy: we don't set the active bit till last), but take
a page fault, on the high bits--a 4 byte offset.
Switch to xen, which is going to emulate some instructions and fake
the writing. We eventually end up in ptwr_emulated_update(), who among
other things, tries to copy the full l1_pgentry_t (64bits), but from
the 4 byte offset, that is the 4 high bytes and then 4 bytes of
undefined memory that may even be in another page.
sRp
--
Scott Parish
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|