All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Benjamin Sanda <ben.sanda@dornerworks.com>,
	xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>
Cc: sstabellini@kernel.org, Wei Liu <wei.liu2@citrix.com>,
	George Dunlap <george.dunlap@eu.citrix.com>,
	Tim Deegan <tim@xen.org>, Ian Jackson <ian.jackson@eu.citrix.com>,
	Keir Fraser <keir@xen.org>
Subject: Re: [PATCH v3 2/5] xentrace: Memory/Page Mapping support for DOMID_XEN on ARM
Date: Fri, 8 Apr 2016 11:42:21 +0100	[thread overview]
Message-ID: <57078B0D.4080707@arm.com> (raw)
In-Reply-To: <1459795727-3116-3-git-send-email-ben.sanda@dornerworks.com>

(CC Stefano's new e-mail address)

Hello Benjamin,

On 04/04/16 19:48, Benjamin Sanda wrote:
>   xen/arch/arm/mm.c  |  3 ++-
>   xen/arch/arm/p2m.c | 35 +++++++++++++++++++++++++++++++----
>   2 files changed, 33 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> index 81f9e2e..19d6c2c 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -1099,7 +1099,8 @@ int xenmem_add_to_physmap_one(
>       {
>           struct domain *od;
>           p2m_type_t p2mt;
> -        od = rcu_lock_domain_by_any_id(foreign_domid);
> +        od = get_pg_owner(foreign_domid);
> +

Please also replace the call to rcu_unlock_domain by put_pg_owner to 
stay consistent.

>           if ( od == NULL )
>               return -ESRCH;
>
> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> index a2a9c4b..a99b670 100644
> --- a/xen/arch/arm/p2m.c
> +++ b/xen/arch/arm/p2m.c
> @@ -227,11 +227,38 @@ paddr_t p2m_lookup(struct domain *d, paddr_t paddr, p2m_type_t *t)
>   {
>       paddr_t ret;
>       struct p2m_domain *p2m = &d->arch.p2m;
> +    struct page_info *page;
> +    unsigned long mfn;
>
> -    spin_lock(&p2m->lock);
> -    ret = __p2m_lookup(d, paddr, t);
> -    spin_unlock(&p2m->lock);
> -
> +    /*
> +    * DOMID_XEN is considered a PV guest on x86 (i.e MFN == GFN), but
> +    * on ARM there is no such concept. Thus requests to DOMID_XEN
> +    * on ARM use a MFN address directly and do not need translation
> +    * from PFN.
> +    */

The coding style for the comment should be:

/*
  * FOo
  * Bar
  */

> +    if(DOMID_XEN != d->domain_id)

if ( ... )

> +    {
> +        spin_lock(&p2m->lock);
> +        ret = __p2m_lookup(d, paddr, t);
> +        spin_unlock(&p2m->lock);
> +    }
> +    else
> +    {
> +        /* retrieve the page to determine read/write or read only mapping */
> +        mfn = paddr >> PAGE_SHIFT;
> +        if (mfn_valid(mfn))
> +        {
> +            page = mfn_to_page(mfn);
> +            *t = (page->u.inuse.type_info == PGT_writable_page ?
> +                                p2m_ram_rw : p2m_ram_ro);

Unfortunately, xenmem_add_to_physmap_one will ignore the return type and 
will always map using the type p2m_map_foreign. I would introduce
a new type p2m_map_foreign_ro to allow read-only foreign mapping.

I've looked at the x86 code (p2m_add_foreign) and I haven't been able to 
find how the page will be mapped read-only in the guest P2M. 
get_page_from_gfn will always return p2m_raw_rw for DOMID_XEN as it's a 
non translated domain.

Andrew and Jan, do you know how this is supposed to work when xentrace 
is used in a HVM domain? Does x86 Xen always mapped Read-Write the page?

> +        }
> +        else
> +        {
> +            *t = p2m_invalid;
> +        }

The brackets are not necessary for a single statement.

> +        ret = paddr;
> +    }
> +
>       return ret;
>   }
>
>

Regards,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2016-04-08 10:42 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-04 18:48 [PATCH v3 0/5] xentrace/xenalyze Support on ARM Benjamin Sanda
2016-04-04 18:48 ` [PATCH v3 1/5] xentrace: Common Support for get_pg_owner/put_pg_owner on ARM and x86 Benjamin Sanda
2016-04-04 23:05   ` Andrew Cooper
2016-04-05  8:12   ` Jan Beulich
2016-04-14 19:59     ` Ben Sanda
2016-04-17  7:58       ` Jan Beulich
2016-04-04 18:48 ` [PATCH v3 2/5] xentrace: Memory/Page Mapping support for DOMID_XEN on ARM Benjamin Sanda
2016-04-08 10:42   ` Julien Grall [this message]
2016-04-08 15:49     ` Jan Beulich
2016-04-08 17:58       ` Andrew Cooper
2016-04-11  9:52         ` George Dunlap
2016-04-12 15:53           ` Julien Grall
2016-04-14 19:52             ` Ben Sanda
2016-04-20 12:48               ` Julien Grall
2016-04-22  9:42             ` Stefano Stabellini
2016-04-22 17:01               ` Julien Grall
2016-04-04 18:48 ` [PATCH v3 3/5] xentrace: Timestamp support for ARM platform Benjamin Sanda
2016-04-08 10:50   ` Julien Grall
2016-04-11 14:56   ` Konrad Rzeszutek Wilk
2016-04-04 18:48 ` [PATCH v3 4/5] xentrace: Trace Buffer Initialization on ARM Benjamin Sanda
2016-04-08 10:53   ` Julien Grall
2016-04-04 18:48 ` [PATCH v3 5/5] xenalyze: Build for Both ARM and x86 Platforms Benjamin Sanda
2016-04-05  8:09 ` [PATCH v3 0/5] xentrace/xenalyze Support on ARM Jan Beulich
2016-04-06 16:51   ` Ben Sanda
2016-04-06 16:59     ` Andrew Cooper
2016-04-06 17:03       ` Ben Sanda
2016-04-08 14:44   ` George Dunlap

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=57078B0D.4080707@arm.com \
    --to=julien.grall@arm.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ben.sanda@dornerworks.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --cc=sstabellini@kernel.org \
    --cc=tim@xen.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.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.