[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2] libxc: fix xc_translate_foreign_address()
On Wed, Apr 05, 2017 at 03:58:05PM +0100, Julien Grall wrote: > Hi Razvan, > > On 05/04/17 15:53, Razvan Cojocaru wrote: > > Currently xc_translate_foreign_address() only checks for the PSE bit on > > level 2 entries (that's 2 MB pages on x64 and 32-bit with PAE, and 4 MB > > pages on 32-bit). But the Linux kernel sometimes uses 1 GB pages. This > > patch fixes that, by checking the PSE bit on level 3 entries if the guest > > has 4 translation levels (that means 64-bit guests only). > > > > Signed-off-by: Cristian-Bogdan Sirb <csirb@xxxxxxxxxxxxxxx> > > He is the author of the patch, correct? If so, he should be the author as > well (e.g From: ...). > > Also, you may want to add your signed-off-by here. > Julien, if you agree to let this patch go in 4.9. I can fix those up. Razvan, please tell me what you want me to do. Code-wise: Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> > Cheers, > > > --- > > Changes since V1: > > - Added header comment. > > --- > > tools/libxc/include/xenctrl.h | 3 +++ > > tools/libxc/xc_pagetab.c | 2 +- > > 2 files changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h > > index 2d97d36..ca4bb6c 100644 > > --- a/tools/libxc/include/xenctrl.h > > +++ b/tools/libxc/include/xenctrl.h > > @@ -1460,6 +1460,9 @@ int xc_lockprof_query(xc_interface *xch, > > void *xc_memalign(xc_interface *xch, size_t alignment, size_t size); > > > > /** > > + * Avoid using this function, as it does not work for all cases (such > > + * as 4M superpages, or guests using PSE36). Only used for debugging. > > + * > > * Translates a virtual address in the context of a given domain and > > * vcpu returning the GFN containing the address (that is, an MFN for > > * PV guests, a PFN for HVM guests). Returns 0 for failure. > > diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c > > index 92eebd6..db25c20 100644 > > --- a/tools/libxc/xc_pagetab.c > > +++ b/tools/libxc/xc_pagetab.c > > @@ -93,7 +93,7 @@ unsigned long xc_translate_foreign_address(xc_interface > > *xch, uint32_t dom, > > return 0; > > } > > paddr = pte & 0x000ffffffffff000ull; > > - if (level == 2 && (pte & PTE_PSE)) { > > + if ((level == 2 || (level == 3 && pt_levels == 4)) && (pte & > > PTE_PSE)) { > > mask = ((mask ^ ~-mask) >> 1); /* All bits below first set bit > > */ > > return ((paddr & ~mask) | (virt & mask)) >> PAGE_SHIFT; > > } > > > > -- > Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |