[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] tools/libxc, xen/x86: Added xc_set_mem_access_sparse()
On 08/26/16 23:33, Tamas K Lengyel wrote: > On Fri, Aug 26, 2016 at 12:11 AM, Razvan Cojocaru > <rcojocaru@xxxxxxxxxxxxxxx> wrote: >> Currently it is only possible to set mem_access restrictions only for >> a contiguous range of GFNs (or, as a particular case, for a single GFN). >> This patch introduces a new libxc function taking an array of GFNs. >> The alternative would be to set each page in turn, using a userspace-HV >> roundtrip for each call, and triggering a TLB flush per page set. > > I think this is a useful addition. Thanks! >> Signed-off-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx> >> --- >> tools/libxc/include/xenctrl.h | 4 +++ >> tools/libxc/xc_mem_access.c | 32 +++++++++++++++++++++++ >> xen/arch/x86/hvm/hvm.c | 2 +- >> xen/arch/x86/mm/p2m.c | 59 >> ++++++++++++++++++++++++++++++------------- >> xen/common/compat/memory.c | 1 - >> xen/common/mem_access.c | 13 +++++++++- >> xen/include/public/memory.h | 6 +++++ >> xen/include/xen/p2m-common.h | 6 ++--- >> 8 files changed, 100 insertions(+), 23 deletions(-) >> >> diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h >> index 560ce7b..ac84908 100644 >> --- a/tools/libxc/include/xenctrl.h >> +++ b/tools/libxc/include/xenctrl.h >> @@ -2125,6 +2125,10 @@ int xc_set_mem_access(xc_interface *xch, domid_t >> domain_id, >> xenmem_access_t access, uint64_t first_pfn, >> uint32_t nr); >> >> +int xc_set_mem_access_sparse(xc_interface *xch, domid_t domain_id, >> + xenmem_access_t access, xen_pfn_t *pages, >> + uint32_t nr); >> + > > I guess adding a comment here would be nice for people just looking at > the header to be able to tell that pages = array, nr = array size. > Also, wouldn't it make sense to make "access" an array as well, so you > could one-set multiple pages to different permissions? Sure, I'll add a comment (actually even rename that parameter to size). Yes, making access an array as well does make sense, I'll look into that. I could then just iterate over both arrays and basically use p2m_set_mem_access() for each single element (with p2m_lock() / p2m_unlock() around the loop to prevent TLB flushes on each iteration). Thanks, Razvan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |