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 v2 04/10] xen/arm: Store p2m type in each page of the guest
Date: Mon, 09 Dec 2013 16:37:06 +0000 [thread overview]
Message-ID: <52A5F1B2.4070604@linaro.org> (raw)
In-Reply-To: <1386605026.7812.37.camel@kazak.uk.xensource.com>
On 12/09/2013 04:03 PM, Ian Campbell wrote:
> On Mon, 2013-12-09 at 03:34 +0000, Julien Grall wrote:
>> Use the field 'avail' to store the type of the page. Rename it to 'p2mt' for
>> convenience.
>
> The p2m is redundant in most uses, and the t isn't very descriptive. I
> think "type" would be fine.
>
>> The information stored in this field will be retrieved in a future patch to
>> hange the behaviour when the page is removed.
>
> "change"
>
>> Also introduce guest_physmap_add_entry to map and set a specific p2m type for
>> a page.
>>
>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
>>
>> ---
>> Changes in v2:
>> - Rename 'avail' field to 'p2mt' in the p2m structure
>> - Add BUILD_BUG_ON to check if the enum value will fit in the field
>> - Implement grant mapping type
>> ---
>> xen/arch/arm/p2m.c | 58 ++++++++++++++++++++++++++++++++------------
>> xen/include/asm-arm/p2m.h | 18 +++++++++++---
>> xen/include/asm-arm/page.h | 2 +-
>> 3 files changed, 58 insertions(+), 20 deletions(-)
>>
>> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
>> index 8f8b47e..e43804c 100644
>> --- a/xen/arch/arm/p2m.c
>> +++ b/xen/arch/arm/p2m.c
>> @@ -124,7 +124,8 @@ int p2m_pod_decrease_reservation(struct domain *d,
>> return -ENOSYS;
>> }
>>
>> -static lpae_t mfn_to_p2m_entry(unsigned long mfn, unsigned int mattr)
>> +static lpae_t mfn_to_p2m_entry(unsigned long mfn, unsigned int mattr,
>> + p2m_type_t t)
>> {
>> paddr_t pa = ((paddr_t) mfn) << PAGE_SHIFT;
>> lpae_t e = (lpae_t) {
>> @@ -132,12 +133,34 @@ static lpae_t mfn_to_p2m_entry(unsigned long mfn, unsigned int mattr)
>> .p2m.af = 1,
>> .p2m.sh = LPAE_SH_OUTER,
>> .p2m.read = 1,
>> - .p2m.write = 1,
>> .p2m.mattr = mattr,
>> .p2m.table = 1,
>> .p2m.valid = 1,
>> + .p2m.p2mt = t,
>> };
>>
>> + BUILD_BUG_ON(p2m_max_real_type > (2 << 4));
>> +
>> + switch (t)
>> + {
>> + case p2m_grant_map_rw:
>> + e.p2m.xn = 1;
>> + /* Fallthrough */
>> + case p2m_ram_rw:
>> + case p2m_mmio_direct:
>> + case p2m_map_foreign:
>> + e.p2m.write = 1;
>> + break;
>> +
>> + case p2m_grant_map_ro:
>> + e.p2m.xn = 1;
>> + /* Fallthrough */
>> + case p2m_invalid:
>> + case p2m_ram_ro:
>> + default:
>
> I think you've enumerated all the options, so it is better to leave out
> the default -- then at least some compilers will complain if we add a
> new type and forget to add it here.
>
Ok. I will remove it.
--
Julien Grall
next prev parent reply other threads:[~2013-12-09 16:37 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-09 3:33 [PATCH v2 00/10] xen/arm: Handle correctly foreign mapping Julien Grall
2013-12-09 3:33 ` [PATCH v2 01/10] xen/arm: Introduce steps in domain_relinquish_resource Julien Grall
2013-12-09 15:42 ` Ian Campbell
2013-12-09 3:33 ` [PATCH v2 02/10] xen/arm: move mfn_to_p2m_entry in arch/arm/p2m.c Julien Grall
2013-12-09 3:34 ` [PATCH v2 03/10] xen/arm: Implement p2m_type_t as an enum Julien Grall
2013-12-09 15:59 ` Ian Campbell
2013-12-09 16:34 ` Julien Grall
2013-12-09 16:54 ` Ian Campbell
2013-12-10 2:02 ` Julien Grall
2013-12-09 3:34 ` [PATCH v2 04/10] xen/arm: Store p2m type in each page of the guest Julien Grall
2013-12-09 16:03 ` Ian Campbell
2013-12-09 16:37 ` Julien Grall [this message]
2013-12-09 16:53 ` Ian Campbell
2013-12-10 1:55 ` Julien Grall
2013-12-10 9:37 ` Ian Campbell
2013-12-10 13:50 ` Julien Grall
2013-12-10 13:58 ` Ian Campbell
2013-12-09 3:34 ` [PATCH v2 05/10] xen/arm: p2m: Extend p2m_lookup parameters to retrieve the p2m type Julien Grall
2013-12-09 16:04 ` Ian Campbell
2013-12-09 3:34 ` [PATCH v2 06/10] xen/arm: Retrieve p2m type in get_page_from_gfn Julien Grall
2013-12-09 16:06 ` Ian Campbell
2013-12-09 16:50 ` Julien Grall
2013-12-09 16:58 ` Ian Campbell
2013-12-10 2:04 ` Julien Grall
2013-12-09 3:34 ` [PATCH v2 07/10] xen/arm: Introduce relinquish_p2m_mapping to remove refcount every mapped page Julien Grall
2013-12-09 16:28 ` Ian Campbell
2013-12-10 1:31 ` Julien Grall
2013-12-10 2:36 ` Julien Grall
2013-12-10 9:34 ` Ian Campbell
2013-12-09 3:34 ` [PATCH v2 08/10] xen/arm: Implement xen_rem_foreign_from_p2m Julien Grall
2013-12-09 16:31 ` Ian Campbell
2013-12-09 17:08 ` Julien Grall
2013-12-09 17:18 ` Ian Campbell
2013-12-10 1:33 ` Julien Grall
2013-12-09 3:34 ` [PATCH v2 09/10] xen/arm: Set foreign page type to p2m_map_foreign Julien Grall
2013-12-09 16:40 ` Ian Campbell
2013-12-10 1:46 ` Julien Grall
2013-12-10 1:51 ` Julien Grall
2013-12-10 9:37 ` Ian Campbell
2013-12-10 14:44 ` Julien Grall
2013-12-10 15:13 ` Ian Campbell
2013-12-09 3:34 ` [PATCH v2 10/10] xen/arm: grant-table: Support read-only mapping Julien Grall
2013-12-09 16:41 ` Ian Campbell
2013-12-09 11:32 ` [PATCH v2 00/10] xen/arm: Handle correctly foreign mapping 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=52A5F1B2.4070604@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.