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

Re: [Xen-devel] PAE xen + linux kernel boots ...



> 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;
>    }
>    ...

Note there is also set_pte_atomic ...

> 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.

Having a close look at the emulation is on my todo list.

Note that ptwr_emulated_update takes "unsigned long", i.e. 32-bit
values (on x86_32) as parameters, so chances are pretty good that
there are issues with 64bit updates.  It works fine for me nevertheless,
for some reason, maybe just pure luck ;)

Turning off emulation works fine for me as well btw. (just delete
the tree lines which force the emulation path for PAE), so I obviously
got the PGT_va backref stuff right ;)

  Gerd

PS: there is revision #6 of the patches on the usual location,
    I hadn't announced those yet.

-- 
#define printk(args...) fprintf(stderr, ## args)

_______________________________________________
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®.