[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V5 03/12] xen/mem_paging: Convert mem_event_op to mem_paging_op
On Fri, Feb 13, 2015 at 7:17 PM, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote: > On 13/02/15 16:33, Tamas K Lengyel wrote: >> The only use-case of the mem_event_op structure had been in mem_paging, >> thus renaming the structure mem_paging_op and relocating its associated >> functions clarifies its actual usage. >> >> Signed-off-by: Tamas K Lengyel <tamas.lengyel@xxxxxxxxxxxx> >> Acked-by: Tim Deegan <tim@xxxxxxx> >> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> >> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> >> --- >> v5: Style fixes >> v4: Style fixes >> v3: Style fixes >> --- >> tools/libxc/xc_mem_event.c | 16 ---------------- >> tools/libxc/xc_mem_paging.c | 26 ++++++++++++++++++-------- >> tools/libxc/xc_private.h | 3 --- >> xen/arch/x86/mm/mem_paging.c | 32 +++++++++++++------------------- >> xen/arch/x86/x86_64/compat/mm.c | 10 ++++++---- >> xen/arch/x86/x86_64/mm.c | 8 ++++---- >> xen/common/mem_event.c | 4 ++-- >> xen/include/asm-x86/mem_paging.h | 2 +- >> xen/include/public/memory.h | 9 ++++----- >> 9 files changed, 48 insertions(+), 62 deletions(-) >> >> diff --git a/tools/libxc/xc_mem_event.c b/tools/libxc/xc_mem_event.c >> index ee25cdd..487fcee 100644 >> --- a/tools/libxc/xc_mem_event.c >> +++ b/tools/libxc/xc_mem_event.c >> @@ -40,22 +40,6 @@ int xc_mem_event_control(xc_interface *xch, domid_t >> domain_id, unsigned int op, >> return rc; >> } >> >> -int xc_mem_event_memop(xc_interface *xch, domid_t domain_id, >> - unsigned int op, unsigned int mode, >> - uint32_t gfn, void *buffer) >> -{ >> - xen_mem_event_op_t meo; >> - >> - memset(&meo, 0, sizeof(meo)); >> - >> - meo.op = op; >> - meo.domain = domain_id; >> - meo.gfn = gfn; >> - meo.buffer = (unsigned long) buffer; >> - >> - return do_memory_op(xch, mode, &meo, sizeof(meo)); >> -} >> - >> void *xc_mem_event_enable(xc_interface *xch, domid_t domain_id, int param, >> uint32_t *port, int enable_introspection) >> { >> diff --git a/tools/libxc/xc_mem_paging.c b/tools/libxc/xc_mem_paging.c >> index 5194423..049aff4 100644 >> --- a/tools/libxc/xc_mem_paging.c >> +++ b/tools/libxc/xc_mem_paging.c >> @@ -23,6 +23,20 @@ >> >> #include "xc_private.h" >> >> +static int xc_mem_paging_memop(xc_interface *xch, domid_t domain_id, >> + unsigned int op, uint32_t gfn, void *buffer) > > As said in patch 1, this gfn must be a uint64_t > >> +{ >> + xen_mem_paging_op_t mpo; >> + >> + memset(&mpo, 0, sizeof(mpo)); >> + >> + mpo.op = op; >> + mpo.domain = domain_id; >> + mpo.gfn = gfn; >> + mpo.buffer = (unsigned long) buffer; >> + >> + return do_memory_op(xch, XENMEM_paging_op, &mpo, sizeof(mpo)); >> +} >> >> int xc_mem_paging_enable(xc_interface *xch, domid_t domain_id, >> uint32_t *port) >> @@ -49,25 +63,22 @@ int xc_mem_paging_disable(xc_interface *xch, domid_t >> domain_id) >> >> int xc_mem_paging_nominate(xc_interface *xch, domid_t domain_id, unsigned >> long gfn) >> { > > And these 'unsigned long gfn' should be promoted to a uint64_t gfn to > avoid truncation in 32bit toolstacks. > > Whether you wish to fix this in the same patch, or fix it in a separate > "make mem_event interface 64/32bit safe" patch is up to you. This is > straying somewhat form a simple refactoring of mem_event_op to > mem_paging_op. I'll just do it here for the sake of juggling fewer patches. > >> - return xc_mem_event_memop(xch, domain_id, >> + return xc_mem_paging_memop(xch, domain_id, >> XENMEM_paging_op_nominate, >> - XENMEM_paging_op, >> gfn, NULL); >> } >> >> int xc_mem_paging_evict(xc_interface *xch, domid_t domain_id, unsigned long >> gfn) >> { >> - return xc_mem_event_memop(xch, domain_id, >> + return xc_mem_paging_memop(xch, domain_id, >> XENMEM_paging_op_evict, >> - XENMEM_paging_op, >> gfn, NULL); >> } >> >> int xc_mem_paging_prep(xc_interface *xch, domid_t domain_id, unsigned long >> gfn) >> { >> - return xc_mem_event_memop(xch, domain_id, >> + return xc_mem_paging_memop(xch, domain_id, >> XENMEM_paging_op_prep, >> - XENMEM_paging_op, >> gfn, NULL); >> } >> >> @@ -87,9 +98,8 @@ int xc_mem_paging_load(xc_interface *xch, domid_t >> domain_id, >> if ( mlock(buffer, XC_PAGE_SIZE) ) >> return -1; >> >> - rc = xc_mem_event_memop(xch, domain_id, >> + rc = xc_mem_paging_memop(xch, domain_id, >> XENMEM_paging_op_prep, >> - XENMEM_paging_op, >> gfn, buffer); >> >> old_errno = errno; >> diff --git a/xen/include/asm-x86/mem_paging.h >> b/xen/include/asm-x86/mem_paging.h >> index 6b7a1fe..92ed2fa 100644 >> --- a/xen/include/asm-x86/mem_paging.h >> +++ b/xen/include/asm-x86/mem_paging.h >> @@ -21,7 +21,7 @@ >> */ >> >> >> -int mem_paging_memop(struct domain *d, xen_mem_event_op_t *meo); >> +int mem_paging_memop(struct domain *d, xen_mem_paging_op_t *meo); > > s/meo/mpo/ like the implementation. Ack. This header also seems to have been missing an #ifdef wrapper so I'm going to add that here as well. Tamas > > Once fixed, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |