|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 02/20] PVH xen: add XENMEM_add_to_physmap_range
On Thu, 16 May 2013, Jan Beulich wrote:
> >>> On 16.05.13 at 01:05, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
> > On Wed, 15 May 2013 10:58:43 +0100
> > "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
> >
> >> >>> On 15.05.13 at 02:52, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx>
> >> >>> wrote:
> >> > --- a/xen/arch/x86/mm.c
> >> > +++ b/xen/arch/x86/mm.c
> >> > @@ -4519,7 +4519,8 @@ static int handle_iomem_range(unsigned long
> >> > s, unsigned long e, void *p)
> >> > static int xenmem_add_to_physmap_once(
> >> > struct domain *d,
> >> > - const struct xen_add_to_physmap *xatp)
> >> > + const struct xen_add_to_physmap *xatp,
> >> > + domid_t foreign_domid)
> >> > {
> >> > struct page_info *page = NULL;
> >> > unsigned long gfn = 0; /* gcc ... */
> >> > @@ -4646,7 +4647,7 @@ static int xenmem_add_to_physmap(struct
> >> > domain *d,
> >>
> >> I know I said this before: This patch can't be complete, or else the
> >> new function parameter would actually get used. With the way
> >> things are, if this patch gets applied, a user of the new XENMEM_
> >> sub-op would not get the expected behavior.
> >>
> >
> > No, the new foreign_domid parameter is meaningful for only the
> > XENMAPSPACE_gmfn_foreign OP which is defined in patch 0018. So we
> > should be OK here.
>
> Mukesh, please. Go look at your own patch again: It adds handling
> of XENMEM_add_to_physmap_range to arch_memory_op(), calling
> xenmem_add_to_physmap_range(), which in turn calls
> xenmem_add_to_physmap_once() passing xatpr->foreign_domid
> as the last argument. I don't see anywhere in the patch prevention
> of that execution flow for an arbitrary guest. If I'm overlooking
> something, please point me to it.
>
> Furthermore, now that you forced me to look at that code yet
> another time,
>
> >+ xen_ulong_t idx;
> >+ xen_pfn_t gpfn;
>
> Pointless variables, ...
>
> >+ 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) )
>
> ... you can read directly into the respective xatp fields here.
>
> >+ {
> >+ return -EFAULT;
> >+ }
>
> Pointless (and inconsistent with code further down in this same
> function) braces.
>
> >+
> >+ xatp.space = xatpr->space;
> >+ xatp.idx = idx;
> >+ xatp.gpfn = gpfn;
> >+ rc = xenmem_add_to_physmap_once(d, &xatp, xatpr->foreign_domid);
>
> xatp has a domid field - why don't you use that instead of adding a
> new function parameter? I'm unclear anyway why two domain IDs
> are useful here at all - Ian, Stefano, for one I still can't spot any use
> of xen_add_to_physmap_range in tools and qemu (and hence can't
> see a clear use case), and then I doubt there's real use for one
> domain mapping GFNs from a second domain into a third one. If it's
> really dead code that got added here, shouldn't we drop it now
> rather than releasing 4.3 with it baked into the interface?
We use XENMEM_add_to_physmap_range to map foreign mfns in dom0 during
domain creation.
> Jan
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |