On Wed, Aug 10, 2005 at 11:54:22AM +0100, Keir Fraser wrote:
>
> On 10 Aug 2005, at 11:28, Gerd Knorr wrote:
>
> >And it isn't the mod_l3 update which broke PAE, it's the
> >__not_mapped() removal. Applying the bits below reversed
> >makes PAE boot again.
>
> afaics the only change for pae is use of __get_user() rather than
> directly reading from the pl2e. Perhaps __get_user() on 8-byte
> quantities is broken, although I'm sure that must be used elsewhere and
> so is tested....
Sure? The patch below fixes it for me.
The tlbflush stuff is red herring btw, the real difference is
optimization. Build with "optimize=n" boot fine, others don't.
Gerd
Index: xen/arch/x86/mm.c
===================================================================
--- xen.orig/arch/x86/mm.c 2005-08-10 14:09:59.476430318 +0200
+++ xen/arch/x86/mm.c 2005-08-10 14:13:50.906986616 +0200
@@ -2940,7 +2940,7 @@ int ptwr_do_page_fault(struct domain *d,
pl2e = &__linear_l2_table[l2_idx];
which = PTWR_PT_INACTIVE;
- if ( (__get_user(l2e.l2, &pl2e->l2) == 0) && (l2e_get_pfn(l2e) == pfn) )
+ if ( (__copy_from_user(&l2e, pl2e, sizeof(l2e)) == 0) && (l2e_get_pfn(l2e)
== pfn) )
{
/*
* Check the PRESENT bit to set ACTIVE mode.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|