WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] x86/mm: partially revert 21093:4a3e131f74

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86/mm: partially revert 21093:4a3e131f7498
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Thu, 17 Feb 2011 01:05:22 -0800
Delivery-date: Thu, 17 Feb 2011 01:06:00 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Tim Deegan <Tim.Deegan@xxxxxxxxxx>
# Date 1297849657 0
# Node ID 86000076dcee7abc6b300ceb28efeee9696d74f6
# Parent  e2fb56dfebdaebf4fe979ba0cf240ee3e315bc48
x86/mm: partially revert 21093:4a3e131f7498

p2m internals should always gate on whether HAP is enabled for the
domain, not whether a HAP paging mode is currently advertised.
This lets us revert the change to hap_enable() that advertises the
new mode before it's safe to use it.

Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
---
 xen/arch/x86/mm/hap/hap.c |    9 +++------
 xen/arch/x86/mm/p2m.c     |    9 ++++-----
 2 files changed, 7 insertions(+), 11 deletions(-)

diff -r e2fb56dfebda -r 86000076dcee xen/arch/x86/mm/hap/hap.c
--- a/xen/arch/x86/mm/hap/hap.c Tue Feb 15 20:02:44 2011 +0000
+++ b/xen/arch/x86/mm/hap/hap.c Wed Feb 16 09:47:37 2011 +0000
@@ -583,12 +583,8 @@ int hap_enable(struct domain *d, u32 mod
 {
     unsigned int old_pages;
     int rv = 0;
-    uint32_t oldmode;
 
     domain_pause(d);
-
-    oldmode = d->arch.paging.mode;
-    d->arch.paging.mode = mode | PG_HAP_enable;
 
     /* error check */
     if ( (d == current->domain) )
@@ -624,9 +620,10 @@ int hap_enable(struct domain *d, u32 mod
             goto out;
     }
 
+    /* Now let other users see the new mode */
+    d->arch.paging.mode = mode | PG_HAP_enable;
+
  out:
-    if (rv)
-        d->arch.paging.mode = oldmode;
     domain_unpause(d);
     return rv;
 }
diff -r e2fb56dfebda -r 86000076dcee xen/arch/x86/mm/p2m.c
--- a/xen/arch/x86/mm/p2m.c     Tue Feb 15 20:02:44 2011 +0000
+++ b/xen/arch/x86/mm/p2m.c     Wed Feb 16 09:47:37 2011 +0000
@@ -1387,7 +1387,7 @@ p2m_set_entry(struct p2m_domain *p2m, un
     else if ( !p2m_next_level(p2m, &table_mfn, &table, &gfn_remainder, gfn,
                               L3_PAGETABLE_SHIFT - PAGE_SHIFT,
                               ((CONFIG_PAGING_LEVELS == 3)
-                               ? (paging_mode_hap(p2m->domain) ? 4 : 8)
+                               ? (hap_enabled(p2m->domain) ? 4 : 8)
                                : L3_PAGETABLE_ENTRIES),
                               PGT_l2_page_table) )
         goto out;
@@ -1848,7 +1848,7 @@ int set_p2m_entry(struct p2m_domain *p2m
 
     while ( todo )
     {
-        if ( is_hvm_domain(d) && paging_mode_hap(d) )
+        if ( hap_enabled(d) )
             order = ( (((gfn | mfn_x(mfn) | todo) & ((1ul << 18) - 1)) == 0) &&
                       hvm_hap_has_1gb(d) && opt_hap_1gb ) ? 18 :
                       ((((gfn | mfn_x(mfn) | todo) & ((1ul << 9) - 1)) == 0) &&
@@ -1909,8 +1909,7 @@ int p2m_alloc_table(struct p2m_domain *p
 
     p2m->phys_table = pagetable_from_mfn(page_to_mfn(p2m_top));
 
-    if ( is_hvm_domain(d) && d->arch.hvm_domain.hap_enabled &&
-         (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) )
+    if ( hap_enabled(d) && (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) )
         iommu_set_pgd(d);
 
     P2M_PRINTK("populating p2m table\n");
@@ -2314,7 +2313,7 @@ static int gfn_check_limit(
      * hardware translation limit. This limitation is checked by comparing
      * gfn with 0xfffffUL.
      */
-    if ( !paging_mode_hap(d) || ((gfn + (1ul << order)) <= 0x100000UL) ||
+    if ( !hap_enabled(d) || ((gfn + (1ul << order)) <= 0x100000UL)
          (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) )
         return 0;
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86/mm: partially revert 21093:4a3e131f7498, Xen patchbot-unstable <=