From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH 1/3] xen/arm: p2m: extend create_p2m_entries to support read-only mapping Date: Thu, 24 Oct 2013 10:02:43 +0100 Message-ID: <1382605365-19244-2-git-send-email-julien.grall@linaro.org> References: <1382605365-19244-1-git-send-email-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1VZGop-0000tr-Hc for xen-devel@lists.xenproject.org; Thu, 24 Oct 2013 09:03:03 +0000 Received: by mail-we0-f181.google.com with SMTP id t60so2019012wes.12 for ; Thu, 24 Oct 2013 02:03:00 -0700 (PDT) In-Reply-To: <1382605365-19244-1-git-send-email-julien.grall@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: stefano.stabellini@eu.citrix.com, tim@xen.org, ian.campbell@citrix.com, Julien Grall , patches@linaro.org List-Id: xen-devel@lists.xenproject.org Signed-off-by: Julien Grall --- xen/arch/arm/p2m.c | 19 +++++++++++-------- xen/include/asm-arm/page.h | 5 +++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index 2d09fef..fdbb07b 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -111,7 +111,7 @@ static int p2m_create_table(struct domain *d, clear_page(p); unmap_domain_page(p); - pte = mfn_to_p2m_entry(page_to_mfn(page), MATTR_MEM); + pte = mfn_to_p2m_entry(page_to_mfn(page), MATTR_MEM, 1); write_pte(entry, pte); @@ -129,7 +129,8 @@ static int create_p2m_entries(struct domain *d, paddr_t start_gpaddr, paddr_t end_gpaddr, paddr_t maddr, - int mattr) + int mattr, + bool_t rw) { int rc, flush; struct p2m_domain *p2m = &d->arch.p2m; @@ -201,14 +202,15 @@ static int create_p2m_entries(struct domain *d, goto out; } - pte = mfn_to_p2m_entry(page_to_mfn(page), mattr); + pte = mfn_to_p2m_entry(page_to_mfn(page), mattr, rw); write_pte(&third[third_table_offset(addr)], pte); } break; case INSERT: { - lpae_t pte = mfn_to_p2m_entry(maddr >> PAGE_SHIFT, mattr); + lpae_t pte = mfn_to_p2m_entry(maddr >> PAGE_SHIFT, + mattr, rw); write_pte(&third[third_table_offset(addr)], pte); maddr += PAGE_SIZE; } @@ -243,7 +245,7 @@ int p2m_populate_ram(struct domain *d, paddr_t start, paddr_t end) { - return create_p2m_entries(d, ALLOCATE, start, end, 0, MATTR_MEM); + return create_p2m_entries(d, ALLOCATE, start, end, 0, MATTR_MEM, 1); } int map_mmio_regions(struct domain *d, @@ -251,7 +253,8 @@ int map_mmio_regions(struct domain *d, paddr_t end_gaddr, paddr_t maddr) { - return create_p2m_entries(d, INSERT, start_gaddr, end_gaddr, maddr, MATTR_DEV); + return create_p2m_entries(d, INSERT, start_gaddr, end_gaddr, + maddr, MATTR_DEV, 1); } int guest_physmap_add_page(struct domain *d, @@ -261,7 +264,7 @@ int guest_physmap_add_page(struct domain *d, { return create_p2m_entries(d, INSERT, gpfn << PAGE_SHIFT, (gpfn + (1<