xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Ian Campbell <ian.campbell@citrix.com>
To: xen-devel@lists.xen.org
Cc: Ian Campbell <ian.campbell@citrix.com>
Subject: [PATCH 17/38] arm: allow p2m to be created with specific MATTR.
Date: Fri, 1 Jun 2012 15:39:46 +0000	[thread overview]
Message-ID: <1338565207-2888-17-git-send-email-ian.campbell@citrix.com> (raw)
In-Reply-To: <1338565207-2888-1-git-send-email-ian.campbell@citrix.com>

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
 xen/arch/arm/p2m.c         |   15 ++++++++-------
 xen/include/asm-arm/page.h |    6 ++++--
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 9b40e93..46c6f17 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -148,7 +148,7 @@ static int p2m_create_entry(struct domain *d,
     clear_page(p);
     unmap_domain_page(p);
 
-    pte = mfn_to_p2m_entry(page_to_mfn(page));
+    pte = mfn_to_p2m_entry(page_to_mfn(page), MATTR_MEM);
 
     write_pte(entry, pte);
 
@@ -159,7 +159,8 @@ static int create_p2m_entries(struct domain *d,
                      int alloc,
                      paddr_t start_gpaddr,
                      paddr_t end_gpaddr,
-                     paddr_t maddr)
+                     paddr_t maddr,
+                     int mattr)
 {
     int rc;
     struct p2m_domain *p2m = &d->arch.p2m;
@@ -235,11 +236,11 @@ static int create_p2m_entries(struct domain *d,
                 goto out;
             }
 
-            pte = mfn_to_p2m_entry(page_to_mfn(page));
+            pte = mfn_to_p2m_entry(page_to_mfn(page), mattr);
 
             write_pte(&third[third_table_offset(addr)], pte);
         } else {
-            lpae_t pte = mfn_to_p2m_entry(maddr >> PAGE_SHIFT);
+            lpae_t pte = mfn_to_p2m_entry(maddr >> PAGE_SHIFT, mattr);
             write_pte(&third[third_table_offset(addr)], pte);
             maddr += PAGE_SIZE;
         }
@@ -263,7 +264,7 @@ int p2m_populate_ram(struct domain *d,
                      paddr_t start,
                      paddr_t end)
 {
-    return create_p2m_entries(d, 1, start, end, 0);
+    return create_p2m_entries(d, 1, start, end, 0, MATTR_MEM);
 }
 
 int map_mmio_regions(struct domain *d,
@@ -271,7 +272,7 @@ int map_mmio_regions(struct domain *d,
                      paddr_t end_gaddr,
                      paddr_t maddr)
 {
-    return create_p2m_entries(d, 0, start_gaddr, end_gaddr, maddr);
+    return create_p2m_entries(d, 0, start_gaddr, end_gaddr, maddr, MATTR_DEV);
 }
 
 int guest_physmap_add_page(struct domain *d,
@@ -281,7 +282,7 @@ int guest_physmap_add_page(struct domain *d,
 {
     return create_p2m_entries(d, 0, gpfn << PAGE_SHIFT,
                               (gpfn + (1<<page_order)) << PAGE_SHIFT,
-                              mfn << PAGE_SHIFT);
+                              mfn << PAGE_SHIFT, MATTR_MEM);
 }
 
 void guest_physmap_remove_page(struct domain *d,
diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h
index c7b6530..bb1729a 100644
--- a/xen/include/asm-arm/page.h
+++ b/xen/include/asm-arm/page.h
@@ -46,6 +46,8 @@
 #define DEV_WC        BUFFERABLE
 #define DEV_CACHED    WRITEBACK
 
+#define MATTR_DEV     0x1
+#define MATTR_MEM     0xf
 
 #ifndef __ASSEMBLY__
 
@@ -169,7 +171,7 @@ static inline lpae_t mfn_to_xen_entry(unsigned long mfn)
     return e;
 }
 
-static inline lpae_t mfn_to_p2m_entry(unsigned long mfn)
+static inline lpae_t mfn_to_p2m_entry(unsigned long mfn, unsigned int mattr)
 {
     paddr_t pa = ((paddr_t) mfn) << PAGE_SHIFT;
     lpae_t e = (lpae_t) {
@@ -178,7 +180,7 @@ static inline lpae_t mfn_to_p2m_entry(unsigned long mfn)
         .p2m.sh = LPAE_SH_OUTER,
         .p2m.write = 1,
         .p2m.read = 1,
-        .p2m.mattr = 0xf,
+        .p2m.mattr = mattr,
         .p2m.table = 1,
         .p2m.valid = 1,
     };
-- 
1.7.9.1

  parent reply	other threads:[~2012-06-01 15:39 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-01 15:38 [PATCH 0/38] arm: boot a dom1 to "Calibrating delay loop" then hang Ian Campbell
2012-06-01 15:39 ` [PATCH 01/38] arm: allocate top level p2m page for all non-idle domains Ian Campbell
2012-06-01 15:39   ` [PATCH 02/38] arm: handy function to print a walk of the hypervisor page tables Ian Campbell
2012-06-07  8:45     ` Tim Deegan
2012-06-07 11:57       ` Ian Campbell
2012-06-07 12:39         ` Tim Deegan
2012-06-01 15:39   ` [PATCH 03/38] arm: handy function to print a walk of a domain's p2m Ian Campbell
2012-06-07  8:49     ` Tim Deegan
2012-06-07 12:26       ` Ian Campbell
2012-06-07 12:40         ` Tim Deegan
2012-06-07 13:54           ` Ian Campbell
2012-06-07 16:34             ` Ian Campbell
2012-06-07 16:39               ` Ian Campbell
2012-06-07 19:10               ` Tim Deegan
2012-06-01 15:39   ` [PATCH 04/38] arm: correct and expand TLB flush CP15 registers Ian Campbell
2012-06-06 12:45     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 05/38] arm: restore stack on return from trap Ian Campbell
2012-06-06 13:03     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 06/38] arm: enable interrupts while handling traps Ian Campbell
2012-06-06 13:38     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 07/38] arm: hook up domctl and memory_op Ian Campbell
2012-06-06 13:39     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 08/38] arm: allocate and setup a guest vcpu Ian Campbell
2012-06-06 13:46     ` Stefano Stabellini
2012-06-06 13:55       ` Ian Campbell
2012-06-07  9:40         ` Ian Campbell
2012-06-07 17:02           ` Ian Campbell
2012-06-08 10:00             ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 09/38] arm: print domid as part of debug trap Ian Campbell
2012-06-06 13:47     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 10/38] arm: remove unnecessarily verbose print from p2m_load_VTTBR Ian Campbell
2012-06-06 13:47     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 11/38] arm: implement p2m lookup Ian Campbell
2012-06-06 14:01     ` Stefano Stabellini
2012-06-06 14:30       ` Ian Campbell
2012-06-13 13:40         ` Ian Campbell
2012-06-07  9:03     ` Tim Deegan
2012-06-13 15:13       ` Ian Campbell
2012-06-14  8:47         ` Tim Deegan
2012-06-19  9:43           ` Ian Campbell
2012-06-01 15:39   ` [PATCH 12/38] arm: remove hard tabs from init_idle_domain Ian Campbell
2012-06-06 15:13     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 13/38] arm: stub out sync_vcpu_execstate Ian Campbell
2012-06-06 15:15     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 14/38] arm: do not set max_vcpus = 8 in arch_domain_create Ian Campbell
2012-06-06 15:26     ` Stefano Stabellini
2012-06-06 15:29       ` Ian Campbell
2012-06-07 16:57       ` Ian Campbell
2012-06-07 16:59         ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 15/38] arm: implement stub version of flush_tlb_mask Ian Campbell
2012-06-06 15:27     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 16/38] arm: Add simple cpu_{sibling,core}_mask Ian Campbell
2012-06-06 16:13     ` [PATCH 16/38] arm: Add simple cpu_{sibling, core}_mask Stefano Stabellini
2012-06-07  9:08     ` Tim Deegan
2012-06-07 11:35       ` Ian Campbell
2012-06-07 11:42         ` Tim Deegan
2012-06-13 15:18         ` Ian Campbell
2012-06-01 15:39   ` Ian Campbell [this message]
2012-06-06 16:27     ` [PATCH 17/38] arm: allow p2m to be created with specific MATTR Stefano Stabellini
2012-06-13 15:33       ` Ian Campbell
2012-06-01 15:39   ` [PATCH 18/38] arm: implement vpl011 (UART) emulator Ian Campbell
2012-06-06 16:57     ` Stefano Stabellini
2012-06-07  9:29     ` Tim Deegan
2012-06-07  9:34       ` Ian Campbell
2012-06-07 10:18         ` Tim Deegan
2012-06-20 13:37           ` Ian Campbell
2012-06-01 15:39   ` [PATCH 19/38] arm: context switch a bunch of guest state Ian Campbell
2012-06-05 17:11     ` Stefano Stabellini
2012-06-06 15:19       ` Ian Campbell
2012-06-06 15:20         ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 20/38] arm: dump a page table walk when va_to_par fails Ian Campbell
2012-06-07  9:32     ` Tim Deegan
2012-06-01 15:39   ` [PATCH 21/38] arm: dump guest s1 walk on data abort which is not a stage 2 issue Ian Campbell
2012-06-07  9:41     ` Tim Deegan
2012-06-20 13:48       ` Ian Campbell
2012-06-01 15:39   ` [PATCH 22/38] arm: implement vcpu_show_execution_state Ian Campbell
2012-06-06 17:26     ` Stefano Stabellini
2012-06-20 13:53       ` Ian Campbell
2012-06-20 13:56         ` Ian Campbell
2012-06-01 15:39   ` [PATCH 23/38] arm: use correct attributes for mappings in copy_from_paddr() Ian Campbell
2012-06-01 16:20     ` David Vrabel
2012-06-06 17:38     ` Stefano Stabellini
2012-06-20 15:38       ` Ian Campbell
2012-06-01 15:39   ` [PATCH 24/38] arm: map fixmaps non-executable Ian Campbell
2012-06-06 17:40     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 25/38] arm: remove old identity map of boot paddr when we are done with it Ian Campbell
2012-06-06 18:04     ` Stefano Stabellini
2012-06-06 18:18       ` Tim Deegan
2012-06-21  8:15         ` Ian Campbell
2012-06-21  9:26           ` Ian Campbell
2012-06-01 15:39   ` [PATCH 26/38] arm: fix locking in create_p2m_entries Ian Campbell
2012-06-07  9:48     ` Tim Deegan
2012-06-07 10:26     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 27/38] arm: split pending SPIs (global) out from pending PPIs and SGIs (per CPU) Ian Campbell
2012-06-07 10:35     ` Stefano Stabellini
2012-06-26  9:03       ` Ian Campbell
2012-06-01 15:39   ` [PATCH 28/38] arm: map GICV in all domains, not just dom0 Ian Campbell
2012-06-07  9:51     ` Tim Deegan
2012-06-26  9:25       ` Ian Campbell
2012-06-07 10:39     ` Stefano Stabellini
2012-06-26 10:18     ` Ian Campbell
2012-06-01 15:39   ` [PATCH 29/38] arm: delay enabling data-cache until paging enabled Ian Campbell
2012-06-01 17:05     ` Tim Deegan
2012-06-01 19:04       ` Ian Campbell
2012-06-07 13:59         ` Tim Deegan
2012-06-26  9:30           ` Ian Campbell
2012-06-07 10:41     ` Stefano Stabellini
2012-06-01 15:39   ` [PATCH 30/38] arm: Upgrade guest barriers to Outer-Shareable. Enable Protected Table Walk Ian Campbell
2012-06-07 10:20     ` Tim Deegan
2012-06-01 15:40   ` [PATCH 31/38] arm: gic.lock can be taken in interrupt context, so lock appropriately Ian Campbell
2012-06-07 10:20     ` Tim Deegan
2012-06-07 10:49     ` Stefano Stabellini
2012-06-26  9:35       ` Ian Campbell
2012-06-26 11:41         ` Stefano Stabellini
2012-06-26 12:25           ` Ian Campbell
2012-06-26 13:45             ` Ian Campbell
2012-06-01 15:40   ` [PATCH 32/38] arm: context switch virtual timer registers Ian Campbell
2012-06-07 10:21     ` Tim Deegan
2012-06-01 15:40   ` [PATCH 33/38] arm: the hyp timer seems to work now, default to using it Ian Campbell
2012-06-07 10:22     ` Tim Deegan
2012-06-01 15:40   ` [PATCH 34/38] HACK: arm: initial XENMAPSPACE_gmfn_foreign Ian Campbell
2012-06-07 10:56     ` Stefano Stabellini
2012-06-01 15:40   ` [PATCH 35/38] arm: move PSR flag definitions into interface, for tools use Ian Campbell
2012-06-07 10:23     ` Tim Deegan
2012-06-01 15:40   ` [PATCH 36/38] libxc: add ARM support to xc_dom (PV domain building) Ian Campbell
2012-06-07 11:38     ` Stefano Stabellini
2012-07-23 13:57       ` Ian Campbell
2012-07-23 14:11         ` Ian Campbell
2012-07-23 14:37           ` David Vrabel
2012-07-23 14:47             ` Ian Campbell
2012-06-01 15:40   ` [PATCH 37/38] HACK: add simple xcbuild Ian Campbell
2012-06-07 11:42     ` Stefano Stabellini
2012-06-07 12:06       ` Ian Campbell
2012-06-01 15:40   ` [PATCH 38/38] HACK: arm: disable hypercall continuations Ian Campbell
2012-06-07 11:00     ` Stefano Stabellini
2012-06-01 16:46 ` [PATCH 0/38] arm: boot a dom1 to "Calibrating delay loop" then hang Ian Campbell

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=1338565207-2888-17-git-send-email-ian.campbell@citrix.com \
    --to=ian.campbell@citrix.com \
    --cc=xen-devel@lists.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).