On Tue, Aug 09, 2005 at 05:14:14PM +0100, Keir Fraser wrote:
>
> On 9 Aug 2005, at 16:44, Gerd Knorr wrote:
>
> >Hmm, that happens when xen is build with debug=y only, without
> >that it crashes much earlier ...
>
> Weird. The calls to create_pae_xen_mappings were definitely on the
> error paths in mod_l3_entry(), which is obviously wrong. I'm surprised
> that fixing it would make things worse, unless some other patch in the
> meantime has screwed pae...
No, it's actually the changeset
6056:a1f7e01b0990a378584e718e6d48eac38824fdb9 which broke it.
The create_pae_xen_mappings() call in the error path is broken
indead. That must have sneaked in somewhen, I'm pretty sure I
wrote that initially as something like
if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e)) ||
!create_pae_xen_mappings(pl3e) )
{
put_page_from_l3e(nl3e, pfn);
return 0;
}
so create_pae_xen_mappings() failure (due to the guest OS trying
illegal things) will *trigger* the error path. Strange it never
showed up, maybe linux never ever updates l3 entries after
creating them.
BUG_ON(!create_pae_xen_mappings()) is a bad idea, it _can_ fail,
the failure should just be propagated up (so in the end the
hypercall running into this returns some errror) or the domain
should simply be killed ...
Gerd
--
panic("it works"); /* avoid being flooded with debug messages */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|