All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <Ian.Campbell@citrix.com>
To: Mukesh Rathor <mukesh.rathor@oracle.com>
Cc: "Xen-devel@lists.xensource.com" <Xen-devel@lists.xensource.com>,
	"Tim (Xen.org)" <tim@xen.org>, Keir Fraser <keir.xen@gmail.com>,
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Subject: Re: [hybrid]: code review for function mapping pfn to foreign mfn
Date: Thu, 19 Apr 2012 08:22:12 +0100	[thread overview]
Message-ID: <1334820132.11493.51.camel@dagon.hellion.org.uk> (raw)
In-Reply-To: <20120418162908.2b790fae@mantra.us.oracle.com>

On Thu, 2012-04-19 at 00:29 +0100, Mukesh Rathor wrote:
> On Tue, 17 Apr 2012 10:05:28 +0100
> Ian Campbell <Ian.Campbell@citrix.com> wrote:
> 
> > On Tue, 2012-04-17 at 02:53 +0100, Mukesh Rathor wrote:
> > > On Mon, 16 Apr 2012 14:53:22 +0100
> > > Ian Campbell <Ian.Campbell@citrix.com> wrote:
> > 
> > Sorry, I meant why a whole new subcall instead of a new
> > XENMAPSPACE ;-)
> > 
> > e.g. On ARM I did:
> > 
> > diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
> > index 86d02c8..b2adfbe 100644
> > --- a/xen/include/public/memory.h
> > +++ b/xen/include/public/memory.h
> > @@ -212,11 +212,13 @@ struct xen_add_to_physmap {
> >      uint16_t    size;
> >  
> >      /* Source mapping space. */
> > -#define XENMAPSPACE_shared_info 0 /* shared info page */
> > -#define XENMAPSPACE_grant_table 1 /* grant table page */
> > -#define XENMAPSPACE_gmfn        2 /* GMFN */
> > -#define XENMAPSPACE_gmfn_range  3 /* GMFN range */
> > -    unsigned int space;
> > +#define XENMAPSPACE_shared_info  0 /* shared info page */
> > +#define XENMAPSPACE_grant_table  1 /* grant table page */
> > +#define XENMAPSPACE_gmfn         2 /* GMFN */
> > +#define XENMAPSPACE_gmfn_range   3 /* GMFN range */
> > +#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another guest */
> > +    uint16_t space;
> > +    domid_t foreign_domid; /* IFF gmfn_foreign */
> 
> 
> Well, for several reasons, I didn't use it, mainly, it doesn't allow
> for count. So requests have to come in one frame at a time.

I've got it that way on ARM too at the moment but I was planning to make
it behave like gmfn_range and use the size parameter to map multiple at
a time (unless I've misunderstood what the gmfn_range variant does).

>  Second, none of the common code can be used by my new request,

I don't think that's an impediment to the API, XENMAPSPACE_gmfn_foreign
is in pretty much the same position.

>  because:
>    - frame is not removed from foreign domain in my case
>    - i don't want to update the m2p with new info.
> 
> Anyways, I put it there for now. With ballooning change in dom0, I'm
> now doing the hcall one frame at a time anyways. We can always enhance
> in the future.
> 
>         case XENMAPSPACE_gmfn_foreign:
>         {
>             rc = _add_foreign_to_pmap_batch(&xatp);
>             rcu_unlock_domain(d);
>             return rc;
>         }
> 
> 
> >> static long noinline _rem_foreign_pmap_batch(XEN_GUEST_HANDLE(void)
> >> arg)  
> 
> >Can't XENMEM_remove_from_physmap be used here?
> 
> Well, that calls guest_physmap_remove_page() which calls
> p2m_remove_page which updates the M2P with INVALID_M2P_ENTRY. Whereas,
> i just need to remove from the dom0 p2m and leave M2P as is (mfn to
> domU gmfn). I could add a flag to the struct causing it to just call
> set_p2m_entry() directly?

Would it be useful to track the fact that a p2m entry is foreign
somewhere? That would let you do the appropriate type of teardown etc
without relying on the tools to get it right.

Are there s/w bits available in the p2m entry itself on x86 or do we use
them all already?

Ian.

  reply	other threads:[~2012-04-19  7:22 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-14  1:29 [hybrid]: code review for function mapping pfn to foreign mfn Mukesh Rathor
2012-04-16 13:53 ` Ian Campbell
2012-04-16 14:02   ` Tim Deegan
2012-04-17  1:53   ` Mukesh Rathor
2012-04-17  9:05     ` Ian Campbell
2012-04-18 23:29       ` Mukesh Rathor
2012-04-19  7:22         ` Ian Campbell [this message]
2012-04-19 14:15 ` Tim Deegan
2012-04-24  1:37   ` Mukesh Rathor
2012-04-24  9:36     ` Tim Deegan
2012-04-24 23:06       ` Mukesh Rathor
2012-04-26  9:08         ` Tim Deegan
2012-04-26 18:18           ` Mukesh Rathor
2012-04-26 19:57             ` Tim Deegan
2012-04-27  1:56               ` Mukesh Rathor
2012-04-27  8:51                 ` Tim Deegan
     [not found] <mailman.2710.1334825330.1399.xen-devel@lists.xen.org>
2012-04-19 14:40 ` Andres Lagar-Cavilla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1334820132.11493.51.camel@dagon.hellion.org.uk \
    --to=ian.campbell@citrix.com \
    --cc=Stefano.Stabellini@eu.citrix.com \
    --cc=Xen-devel@lists.xensource.com \
    --cc=keir.xen@gmail.com \
    --cc=mukesh.rathor@oracle.com \
    --cc=tim@xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.