# HG changeset patch # User Paolo Bonzini <pbonzini@redhat.com> # Date 1299171180 -3600 # Node ID c639f0afaa74591d1053677b0a6348503a14fd78 # Parent c923816861a96328aaf3d5ba8939fd9b4c441cd0 fix xenctx with 32-on-64 domains When compiled on 64-bit, xenctx was using the 64-bit version of xen_cr3_to_pfn even for 32-bit PV domains. This is wrong, and this patch fixes it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c --- a/tools/libxc/xc_pagetab.c +++ b/tools/libxc/xc_pagetab.c @@ -64,8 +64,8 @@ unsigned long xc_translate_foreign_addre paddr = ctx.x64.ctrlreg[3] & ~0xfffull; } else { pt_levels = 3; - paddr = (((uint64_t) xen_cr3_to_pfn(ctx.x32.ctrlreg[3])) - << PAGE_SHIFT); + paddr = (((unsigned)ctx.x32.ctrlreg[3] >> 12) | + ((unsigned)ctx.x32.ctrlreg[3] << 20)) << PAGE_SHIFT; } } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2011-Mar-03 17:47 UTC
Re: [Xen-devel] [PATCH] fix xenctx with 32-on-64 domains
On 03/03/2011 17:08, "Paolo Bonzini" <pbonzini@redhat.com> wrote:> # HG changeset patch > # User Paolo Bonzini <pbonzini@redhat.com> > # Date 1299171180 -3600 > # Node ID c639f0afaa74591d1053677b0a6348503a14fd78 > # Parent c923816861a96328aaf3d5ba8939fd9b4c441cd0 > fix xenctx with 32-on-64 domains > > When compiled on 64-bit, xenctx was using the 64-bit version > of xen_cr3_to_pfn even for 32-bit PV domains. This is wrong, > and this patch fixes it.I applied a better version (clearer, and also fixes 64-bit PV domU / 32-bit PV dom0) as c/s 22966. -- Keir> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > > diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c > --- a/tools/libxc/xc_pagetab.c > +++ b/tools/libxc/xc_pagetab.c > @@ -64,8 +64,8 @@ unsigned long xc_translate_foreign_addre > paddr = ctx.x64.ctrlreg[3] & ~0xfffull; > } else { > pt_levels = 3; > - paddr = (((uint64_t) xen_cr3_to_pfn(ctx.x32.ctrlreg[3])) > - << PAGE_SHIFT); > + paddr = (((unsigned)ctx.x32.ctrlreg[3] >> 12) | > + ((unsigned)ctx.x32.ctrlreg[3] << 20)) << PAGE_SHIFT; > } > } > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel