[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V7 PATCH 3/7] pvh dom0: implement XENMEM_add_to_physmap_range for x86
On Tue, 17 Dec 2013 13:07:22 +0000 "Jan Beulich" <JBeulich@xxxxxxxx> wrote: > >>> On 17.12.13 at 03:38, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> > >>> wrote: > > --- a/xen/arch/x86/mm.c > > +++ b/xen/arch/x86/mm.c > > @@ -4675,6 +4675,39 @@ static int xenmem_add_to_physmap(struct > > domain *d, return xenmem_add_to_physmap_once(d, xatp); > > } > > > > +static int xenmem_add_to_physmap_range(struct domain *d, > > + struct > > xen_add_to_physmap_range *xatpr) +{ > > + /* Process entries in reverse order to allow continuations */ > > + while ( xatpr->size > 0 ) > > + { > > + int rc; > > + xen_ulong_t idx; > > + xen_pfn_t gpfn; > > + struct xen_add_to_physmap xatp; > > + > > + if ( copy_from_guest_offset(&idx, xatpr->idxs, > > xatpr->size-1, 1) || > > + copy_from_guest_offset(&gpfn, xatpr->gpfns, > > xatpr->size-1, 1) ) > > + return -EFAULT; > > + > > + xatp.space = xatpr->space; > > + xatp.idx = idx; > > + xatp.gpfn = gpfn; > > + rc = xenmem_add_to_physmap_once(d, &xatp); > > + > > + if ( copy_to_guest_offset(xatpr->errs, xatpr->size-1, &rc, > > 1) ) > > + return -EFAULT; > > + > > + xatpr->size--; > > + > > + /* Check for continuation if it's not the last interation > > */ > > + if ( xatpr->size > 0 && hypercall_preempt_check() ) > > + return -EAGAIN; > > + } > > + > > + return 0; > > +} > > Now that I started looking into creating the compat wrapper for this, > I realize that processing this request backwards is wrong: The effect > of the entire hypercall can end up being different between forward > and reverse processing, if an index or gpfn happens to be twice in > the set. While that's perhaps not the usual thing to do, you never > know how a creative user of the interface may find it useful to do so. IIRC, I had gotten that from the arm guys.... it seems plausible to say the mappings are unpredictable in case of repeated idx/gpfn, but I'll see what they are doing to fix, or just change it myself here. thanks for noticing, Mukesh _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |