[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC XEN v1 04/14] xen: arm: Implement XEN_DOMCTL_getpageframeinfo3.
On Wed, 9 Dec 2015, Ian Campbell wrote: > This is used by the save/restore code. > > On ARM we only have RAM (0) or not-RAM (XTAB) types. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > xen/arch/arm/domctl.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 49 insertions(+) > > diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c > index d42b2bf..d3459ee 100644 > --- a/xen/arch/arm/domctl.c > +++ b/xen/arch/arm/domctl.c > @@ -133,6 +133,55 @@ long arch_do_domctl(struct xen_domctl *domctl, struct > domain *d, > rc = 0; > break; > } > + > + case XEN_DOMCTL_getpageframeinfo3: > + { > + unsigned int i; > + unsigned int num = domctl->u.getpageframeinfo3.num; > + XEN_GUEST_HANDLE_64(xen_pfn_t) array = > domctl->u.getpageframeinfo3.array; > + > + if ( unlikely(num > 1024) || > + unlikely(num != domctl->u.getpageframeinfo3.num) ) I realize that this check is the same as x86, but where is the 1024 limitation coming from? If it is part of the interface it would be nice to add it to the comment in xen/include/public/domctl.h. The implementation below looks correct. > + { > + rc = -E2BIG; > + break; > + } > + > + for ( i = 0; i < num; ++i ) > + { > + xen_pfn_t gfn = 0, type = 0; > + struct page_info *page; > + p2m_type_t t; > + > + if ( copy_from_guest_offset(&gfn, array, i, 1) ) > + { > + rc = -EFAULT; > + break; > + } > + > + page = get_page_from_gfn(d, gfn, &t, P2M_ALLOC); > + > + if ( unlikely(!page) || > + unlikely(is_xen_heap_page(page)) ) > + type = XEN_DOMCTL_PFINFO_XTAB; > + else > + type = 0; /* Just regular RAM */ > + > + if ( page ) > + put_page(page); > + > + if ( copy_to_guest_offset(array, i, &type, 1) ) > + { > + rc = -EFAULT; > + break; > + } > + } > + > + rc = 0; > + > + break; > + } > + > default: > rc = subarch_do_domctl(domctl, d, u_domctl); > > -- > 2.6.1 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |