From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: xen-devel@lists.xenproject.org, tim@xen.org,
stefano.stabellini@citrix.com, patches@linaro.org
Subject: Re: [PATCH 3/8] xen/arm: Implement p2m_type_t as an enum
Date: Thu, 05 Dec 2013 16:28:37 +0000 [thread overview]
Message-ID: <52A0A9B5.5060705@linaro.org> (raw)
In-Reply-To: <1386260093.20047.101.camel@kazak.uk.xensource.com>
On 12/05/2013 04:14 PM, Ian Campbell wrote:
> On Thu, 2013-12-05 at 16:01 +0000, Julien Grall wrote:
>>
>> On 12/05/2013 03:52 PM, Ian Campbell wrote:
>>> On Thu, 2013-12-05 at 15:42 +0000, Julien Grall wrote:
>>>> Until now, Xen doesn't know the type of the page (ram, foreign page, mmio,...).
>>>> Introduce p2m_type_t with basic types:
>>>> - p2m_invalid: Nothing is mapped here
>>>
>>> Do we really need this? Is it not equivalent to not setting the present
>>> bit? I see x86 has the same type though -- Tim can you explain why.
>>
>> We need a default value when Xen retrieves the p2m type. I don't think
>> we can assume that p2m_ram_rw (or any other type) is used by default.
>>
>>> Since the avail bits in the p2m pte are in pretty short supply I think
>>> we can avoid unnecessary types.
>>
>> I plan to use directly the decimal value. So we can store up to 16 values.
>
> 16 is short supply in my book ;-)
>
> Having got a bit further through the series I see how p2m_invalid is
> being used now. It is a useful pseudo-type but it doesn't need to be
> represented in the avail bits I don't think. How about:
>
> typedef enum {
> p2m_ram_rw, /* Normal read/write guest RAM */
> p2m_ram_ro, /* Read-only; writes are silently dropped */
> p2m_mmio_direct, /* Read/write mapping of genuine MMIO area /
> p2m_map_foreign, /* Ram pages from foreign domain */
>
> p2m_max_real_type = 16, /* Types after this are pseudo-types. */
>
> p2m_invalid, /* Nothing mapped here */
>
> } p2m_type_t;
>
> BUILD_BUG_ON(p2m_max_real_type >= 2^4);
>
> Now you can return it etc but it never needs to get put in an actual
> pte?
This solution was easier to avoid extra code in the different function.
I will rework it for the next series.
>
> Maybe this is one for the future when we get a bit short on bits.
>
>>>> - p2m_ram_rw: Normal read/write guest RAM
>>>> - p2m_ram_ro: Read-only guest RAM
>>>> - p2m_mmio_direct: Read/write mapping of device memory
>>>> - p2m_map_foreign: RAM page from foreign guest
>>>
>>> Is there no need for an entry for a grant mapping (and a ro
>>> counterpart)?
>>
>> Hmmm .. actually grant table is mapped as RAM (so read/write and
>> execute). Do we want to allow code execution from grant-mapping page?
>> If not, then we will need to introduce specific p2m type from grant-mapping.
>
> If a guest is stupid enough to execute code from a page owned by another
> guest then it gets what it deserves ;-)
Actually X86, disable execution on grant and foreign mapping.
> My question wasn't about that though -- just whether it is useful for
> Xen to track whether the particular RAM mapping is normal or a grant
> mapping.
For now, I don't see a specific reason to track it.
--
Julien Grall
next prev parent reply other threads:[~2013-12-05 16:28 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-05 15:42 [PATCH 0/8] xen/arm: Handle correctly foreign mapping Julien Grall
2013-12-05 15:42 ` [PATCH 1/8] DO NOT APPLY: xen/arm: Correctly support foreign page removing on ARM Julien Grall
2013-12-05 15:42 ` [PATCH 2/8] xen/arm: move mfn_to_p2m_entry in arch/arm/p2m.c Julien Grall
2013-12-05 15:47 ` Ian Campbell
2013-12-05 15:50 ` Julien Grall
2013-12-05 15:42 ` [PATCH 3/8] xen/arm: Implement p2m_type_t as an enum Julien Grall
2013-12-05 15:51 ` Egger, Christoph
2013-12-05 15:56 ` Ian Campbell
2013-12-09 11:16 ` Egger, Christoph
2013-12-09 11:38 ` Ian Campbell
2013-12-05 15:52 ` Ian Campbell
2013-12-05 16:01 ` Julien Grall
2013-12-05 16:14 ` Ian Campbell
2013-12-05 16:28 ` Julien Grall [this message]
2013-12-05 16:38 ` Ian Campbell
2013-12-05 16:44 ` Julien Grall
2013-12-05 16:56 ` Ian Campbell
2013-12-05 21:26 ` Julien Grall
2013-12-05 16:07 ` Tim Deegan
2013-12-05 16:19 ` Ian Campbell
2013-12-05 16:31 ` Tim Deegan
2013-12-05 16:39 ` Ian Campbell
2013-12-05 17:24 ` Tim Deegan
2013-12-05 15:42 ` [PATCH 4/8] xen/arm: Store p2m type in each page of the guest Julien Grall
2013-12-05 15:55 ` Ian Campbell
2013-12-05 16:02 ` Ian Campbell
2013-12-05 16:07 ` Julien Grall
2013-12-05 15:42 ` [PATCH 5/8] xen/arm: p2m: Add p2m_get_entry Julien Grall
2013-12-05 16:07 ` Ian Campbell
2013-12-05 16:09 ` Tim Deegan
2013-12-05 15:42 ` [PATCH 6/8] xen/arm: Retrieve p2m type in get_page_from_gfn Julien Grall
2013-12-05 16:23 ` Ian Campbell
2013-12-05 16:45 ` Julien Grall
2013-12-09 2:36 ` Julien Grall
2013-12-09 9:57 ` Ian Campbell
2013-12-05 15:42 ` [PATCH 7/8] xen/arm: Set foreign page type to p2m_map_foreign Julien Grall
2013-12-05 16:34 ` Ian Campbell
2013-12-05 16:41 ` Julien Grall
2013-12-05 16:54 ` Ian Campbell
2013-12-05 17:39 ` Julien Grall
2013-12-05 17:49 ` Ian Campbell
2013-12-09 2:14 ` Julien Grall
2013-12-05 15:42 ` [PATCH 8/8] xen/arm: grant-table: Support read-only mapping Julien Grall
2013-12-05 16:36 ` Ian Campbell
2013-12-05 15:44 ` [PATCH 0/8] xen/arm: Handle correctly foreign mapping Julien Grall
2013-12-05 17:10 ` Julien Grall
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=52A0A9B5.5060705@linaro.org \
--to=julien.grall@linaro.org \
--cc=Ian.Campbell@citrix.com \
--cc=patches@linaro.org \
--cc=stefano.stabellini@citrix.com \
--cc=tim@xen.org \
--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.