[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 02/18] PVH xen: add XENMEM_add_to_physmap_range
On Thu, Jun 06, 2013 at 07:43:09AM +0100, Jan Beulich wrote: > >>> On 05.06.13 at 22:41, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote: > > On Wed, 05 Jun 2013 08:32:52 +0100 > > "Jan Beulich" <JBeulich@xxxxxxxx> wrote: > > > >> >>> On 05.06.13 at 02:31, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> > >> >>> wrote: > >> >> I also vaguely recall having pointed out in a much earlier review > >> >> that this functionality is lacking a counterpart in > >> >> compat_arch_memory_op(). > >> > > >> > Hmm.. confused how/why a 64bit PVH go thru compat_arch_memory_op()? > >> > Can you pl explain? > >> > >> Iirc the new hypercall isn't restricted to PVH guests, and hence > >> needs a compat implementation regardless of 32-bit PVH not > >> existing yet. > > > > This patch does not introduce the hcall, it was introduced much earlier. > > It implements the portion needed for 64bit PVH. > > So how is this statement of yours in line with this hunk of the > patch? > > @@ -4716,6 +4751,39 @@ long arch_memory_op(int op, > XEN_GUEST_HANDLE_PARAM(void) arg) > return rc; > } > > + case XENMEM_add_to_physmap_range: > + { > + struct xen_add_to_physmap_range xatpr; > + struct domain *d; > + > + if ( copy_from_guest(&xatpr, arg, 1) ) > + return -EFAULT; > + > + /* This mapspace is redundant for this hypercall */ > + if ( xatpr.space == XENMAPSPACE_gmfn_range ) > + return -EINVAL; > + > + d = rcu_lock_domain_by_any_id(xatpr.domid); > + if ( d == NULL ) > + return -ESRCH; > + > + if ( xsm_add_to_physmap(XSM_TARGET, current->domain, d) ) > + { > + rcu_unlock_domain(d); > + return -EPERM; > + } > + > + rc = xenmem_add_to_physmap_range(d, &xatpr); > + > + rcu_unlock_domain(d); > + > + if ( rc == -EAGAIN ) > + rc = hypercall_create_continuation( > + __HYPERVISOR_memory_op, "ih", op, arg); > + > + return rc; > + } > + > case XENMEM_set_memory_map: > { > struct xen_foreign_memory_map fmap; > > If the hypercall were handled before, adding a new case statement > to arch_memory_op() would cause a compilation error. All that was Meaning if it was handled in do_memory_op, right? > there before this patch was the definition of the hypercall (for ARM), > but I'm quite strongly opposed to adding x86 support for this > hypercall only for one half of the possible set of PV (and HVM?) > guests; the fact that PVH is 64-bit only for the moment has nothing > to do with this. The only alternative would be to constrain the > specific sub-hypercall to PVH, but that would be rather contrived, > so I'm already trying to make clear that I wouldn't accept such a > solution to the original comment. Pardon my misunderstanding - what you are saying is that the location of this hypercall in arch_memory_op is correct - but only if it works with 32-bit guests as well? Which would imply at least doing something in compat_arch_memory_op (to copy the arguments properly), and in the arch_memory_op return -ENOSYS if the guest is 32-bit (at least for right now). In the future the return -ENOSYS would be removed so that 32-bit guests can use this hypercall. Or perhaps it make sense to squash the x86 and ARM version of this hypercall in the generic code? (later on) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |