[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Respect memory attributes for EFI_RUNTIME memory



# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1167951656 25200
# Node ID 2d4807ed105677e6039abcd1877ec5fa2803f403
# Parent  5708307d0e3539227c6d1f17bfa2ed4c9c92a646
[IA64] Respect memory attributes for EFI_RUNTIME memory

Respect memory attributes when mapping EFI_RUNTIME and reserved pages.
Not all of these pages are writable and/or cachable!

Signed-off-by: Jes Sorensen <jes@xxxxxxx>
---
 xen/arch/ia64/xen/dom_fw.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff -r 5708307d0e35 -r 2d4807ed1056 xen/arch/ia64/xen/dom_fw.c
--- a/xen/arch/ia64/xen/dom_fw.c        Thu Jan 04 15:45:10 2007 -0700
+++ b/xen/arch/ia64/xen/dom_fw.c        Thu Jan 04 16:00:56 2007 -0700
@@ -533,6 +533,7 @@ complete_dom0_memmap(struct domain *d,
                u64 start = md->phys_addr;
                u64 size = md->num_pages << EFI_PAGE_SHIFT;
                u64 end = start + size;
+               unsigned long flags;
 
                switch (md->type) {
                case EFI_RUNTIME_SERVICES_CODE:
@@ -540,9 +541,19 @@ complete_dom0_memmap(struct domain *d,
                case EFI_ACPI_RECLAIM_MEMORY:
                case EFI_ACPI_MEMORY_NVS:
                case EFI_RESERVED_TYPE:
-                       /* Map into dom0 - All these are writable.  */
-                       assign_domain_mach_page(d, start, size,
-                                               ASSIGN_writable);
+                       /*
+                        * Map into dom0 - We must respect protection
+                        * and cache attributes.  Not all of these pages
+                        * are writable!!!
+                        */
+                       flags = ASSIGN_writable;        /* dummy - zero */
+                       if (md->attribute & EFI_MEMORY_WP)
+                               flags |= ASSIGN_readonly;
+                       if (md->attribute & EFI_MEMORY_UC)
+                               flags |= ASSIGN_nocache;
+
+                       assign_domain_mach_page(d, start, size, flags);
+
                        /* Fall-through.  */
                case EFI_MEMORY_MAPPED_IO:
                        /* Will be mapped with ioremap.  */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.