|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] paging_enabled and non-HVM guests
At Tue, 09 May 2006 14:53:46 -0500,
Hollis Blanchard wrote:
>
> On Tue, 2006-05-09 at 13:31 +0200, Simon Kagstrom wrote:
> > I had a problem with the GDB-server crashing on connections in
> > xen_ptrace.c:map_domain_va(). paging_enabled() should only be checked
> > for HVM guests, and the patch adds a check for that.
> >
> > Signed-off-by: Simon Kagstrom <ska@xxxxxx>
> >
> > diff -r 4501d60d6add tools/libxc/xc_ptrace.c
> > --- a/tools/libxc/xc_ptrace.c Tue May 9 09:57:05 2006
> > +++ b/tools/libxc/xc_ptrace.c Tue May 9 13:26:14 2006
> > @@ -374,7 +374,7 @@
> > if (fetch_regs(xc_handle, cpu, NULL))
> > return NULL;
> >
> > - if (!paging_enabled(&ctxt[cpu])) {
> > + if ( (ctxt[cpu].flags & VGCF_HVM_GUEST) &&
> > !paging_enabled(&ctxt[cpu])) {
> > static void * v;
> > unsigned long page;
>
> I looked at this a couple weeks ago, and I think the real problem is
> that the CR registers are never updated in Xen's vcpu structure, and so
> xc_vcpu_getcontext() doesn't get them either. So Xen should be fixed; we
> shouldn't add workarounds to userland.
OK, I guess that sounds reasonable. Checks for HVM guests are done on
a number of other places as well in libxc, however. Is the support
meant to be transparent between HVM and PV guests?
I won't argue for an incorrect fix, but as the code is right now it
segmentation faults because the virtual address passed to
page = page_array[va >> PAGE_SHIFT] << PAGE_SHIFT;
(with libxc incorrectly believing paging is disabled) accesses outside
of page_array. I'll keep the patch privately for now since gdbserver
breaks without it.
// Simon
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|