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] Delete old 'shortcut' function __shadow_status() and

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Delete old 'shortcut' function __shadow_status() and
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 09 Feb 2006 19:22:13 +0000
Delivery-date: Thu, 09 Feb 2006 19:34:58 +0000
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/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 kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 1c69197d29b719cb42e73e0d26c024935fd18364
# Parent  ee9691e23dbe4c7a4e52acde3f7c207ae0659627
Delete old 'shortcut' function __shadow_status() and
rename the core function ___shadow_status() to take its
place.

The 'fast path quick test' was ridiculously bloated and
didn't work for PGT_fl1_shadow pages.

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>

diff -r ee9691e23dbe -r 1c69197d29b7 xen/arch/x86/shadow.c
--- a/xen/arch/x86/shadow.c     Thu Feb  9 16:42:51 2006
+++ b/xen/arch/x86/shadow.c     Thu Feb  9 17:35:15 2006
@@ -3256,7 +3256,7 @@
     if ( !__shadow_get_l2e(v, va, &sl2e) )
         sl2e = l2e_empty();
 
-    l1_mfn = ___shadow_status(d, start_gpfn | nx, PGT_fl1_shadow);
+    l1_mfn = __shadow_status(d, start_gpfn | nx, PGT_fl1_shadow);
 
     /* Check the corresponding l2e */
     if (l1_mfn) {
diff -r ee9691e23dbe -r 1c69197d29b7 xen/include/asm-x86/shadow.h
--- a/xen/include/asm-x86/shadow.h      Thu Feb  9 16:42:51 2006
+++ b/xen/include/asm-x86/shadow.h      Thu Feb  9 17:35:15 2006
@@ -1179,19 +1179,21 @@
  *      its mfn).
  *      It returns the shadow's mfn, or zero if it doesn't exist.
  */
-
-static inline unsigned long ___shadow_status(
+static inline unsigned long __shadow_status(
     struct domain *d, unsigned long gpfn, unsigned long stype)
 {
     struct shadow_status *p, *x, *head;
     unsigned long key = gpfn | stype;
 
+    ASSERT(shadow_lock_is_acquired(d));
+    ASSERT(gpfn == (gpfn & PGT_mfn_mask));
+    ASSERT(stype && !(stype & ~PGT_type_mask));
+
     perfc_incrc(shadow_status_calls);
 
     x = head = hash_bucket(d, gpfn);
     p = NULL;
 
-    //SH_VVLOG("lookup gpfn=%08x type=%08x bucket=%p", gpfn, stype, x);
     shadow_audit(d, 0);
 
     do
@@ -1221,7 +1223,6 @@
                 perfc_incrc(shadow_status_hit_head);
             }
 
-            //SH_VVLOG("lookup gpfn=%p => status=%p", key, head->smfn);
             return head->smfn;
         }
 
@@ -1230,51 +1231,8 @@
     }
     while ( x != NULL );
 
-    //SH_VVLOG("lookup gpfn=%p => status=0", key);
     perfc_incrc(shadow_status_miss);
     return 0;
-}
-
-static inline unsigned long __shadow_status(
-    struct domain *d, unsigned long gpfn, unsigned long stype)
-{
-    unsigned long mfn = ((current->domain == d)
-                          ? gmfn_to_mfn(d, gpfn)
-                          : INVALID_MFN);
-
-    ASSERT(shadow_lock_is_acquired(d));
-    ASSERT(gpfn == (gpfn & PGT_mfn_mask));
-    ASSERT(stype && !(stype & ~PGT_type_mask));
-
-    if ( VALID_MFN(mfn) && mfn_valid(mfn) &&
-         (stype != PGT_writable_pred) &&
-         ((stype == PGT_snapshot)
-          ? !mfn_out_of_sync(mfn)
-          : !mfn_is_page_table(mfn)) )
-    {
-        perfc_incrc(shadow_status_shortcut);
-#ifndef NDEBUG
-        if ( ___shadow_status(d, gpfn, stype) != 0 )
-        {
-            printk("d->id=%d gpfn=%lx mfn=%lx stype=%lx c=%x t=%" PRtype_info 
" "
-                   "mfn_out_of_sync(mfn)=%d mfn_is_page_table(mfn)=%d\n",
-                   d->domain_id, gpfn, mfn, stype,
-                   mfn_to_page(mfn)->count_info,
-                   mfn_to_page(mfn)->u.inuse.type_info,
-                   mfn_out_of_sync(mfn), mfn_is_page_table(mfn));
-            BUG();
-        }
-
-        // Undo the affects of the above call to ___shadow_status()'s perf
-        // counters, since that call is really just part of an assertion.
-        //
-        perfc_decrc(shadow_status_calls);
-        perfc_decrc(shadow_status_miss);
-#endif
-        return 0;
-    }
-
-    return ___shadow_status(d, gpfn, stype);
 }
 
 /*
diff -r ee9691e23dbe -r 1c69197d29b7 xen/include/xen/perfc_defn.h
--- a/xen/include/xen/perfc_defn.h      Thu Feb  9 16:42:51 2006
+++ b/xen/include/xen/perfc_defn.h      Thu Feb  9 17:35:15 2006
@@ -86,7 +86,7 @@
 PERFCOUNTER_CPU(unshadow_l2_count,      "unpinned L2 count")
 
 PERFCOUNTER_CPU(shadow_status_shortcut, "fastpath miss on shadow cache")
-PERFCOUNTER_CPU(shadow_status_calls,    "calls to ___shadow_status")
+PERFCOUNTER_CPU(shadow_status_calls,    "calls to shadow_status")
 PERFCOUNTER_CPU(shadow_status_miss,     "missed shadow cache")
 PERFCOUNTER_CPU(shadow_status_hit_head, "hits on head of bucket")
 PERFCOUNTER_CPU(shadow_max_type,        "calls to shadow_max_type")

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Delete old 'shortcut' function __shadow_status() and, Xen patchbot -unstable <=