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] Merge wyvis.research.intel-research.net:/home/irchomes/r

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Merge wyvis.research.intel-research.net:/home/irchomes/rneugeba/src/xeno/xeno.bk
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Fri, 25 Feb 2005 17:27:55 +0000
Delivery-date: Tue, 05 Apr 2005 16:05:44 +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 Development List <xen-devel@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1239, 2005/02/25 17:27:55+00:00, 
rneugeba@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

        Merge 
wyvis.research.intel-research.net:/home/irchomes/rneugeba/src/xeno/xeno.bk
        into 
wyvis.research.intel-research.net:/home/irchomes/rneugeba/src/xeno/xen.bench
        
        Signed-off-by: michael.fetterman@xxxxxxxxxxxx



 arch/x86/mm.c            |   52 ++++++++++++++++++++++++++++++++++++++++++++++-
 arch/x86/x86_32/entry.S  |    1 
 common/perfc.c           |   12 +++++++++-
 include/xen/perfc_defn.h |    1 
 4 files changed, 63 insertions(+), 3 deletions(-)


diff -Nru a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c 2005-04-05 12:05:49 -04:00
+++ b/xen/arch/x86/mm.c 2005-04-05 12:05:49 -04:00
@@ -1685,8 +1685,30 @@
         }
     }
 
+#ifdef PERF_COUNTERS
     perfc_incrc(calls_to_mmu_update); 
     perfc_addc(num_page_updates, count);
+    /*
+     * do a histogram for count. 
+     * first bucket is for count=0,
+     * second bucket is for count=1
+     * last bucket is for count >= 63 *  PERFC_PT_UPDATES_BUCKET_SIZE
+     */
+    if ( count == 0 )
+    {
+        perfc_incra(bpt_updates, 0);
+    } else if ( count == 1 )
+    {
+        perfc_incra(bpt_updates, 1);
+    } else if ( (count / PERFC_PT_UPDATES_BUCKET_SIZE)
+                < (PERFC_MAX_PT_UPDATES - 3) )
+    {
+        perfc_incra(bpt_updates, (count / PERFC_PT_UPDATES_BUCKET_SIZE) + 2);
+    } else
+    {
+        perfc_incra(bpt_updates, PERFC_MAX_PT_UPDATES - 1);
+    }
+#endif
 
     if ( unlikely(!array_access_ok(VERIFY_READ, ureqs, count, sizeof(req))) )
     {
@@ -2234,6 +2256,7 @@
     int            i, cpu = smp_processor_id();
     struct exec_domain *ed = current;
     struct domain *d = ed->domain;
+    unsigned int   count;
 
     l1va = ptwr_info[cpu].ptinfo[which].l1va;
     ptep = (unsigned long *)&linear_pg_table[l1_linear_offset(l1va)];
@@ -2292,7 +2315,7 @@
     /*
      * STEP 2. Validate any modified PTEs.
      */
-
+    count = 0;
     pl1e = ptwr_info[cpu].ptinfo[which].pl1e;
     for ( i = 0; i < L1_PAGETABLE_ENTRIES; i++ )
     {
@@ -2302,6 +2325,9 @@
         if ( likely(l1_pgentry_val(ol1e) == l1_pgentry_val(nl1e)) )
             continue;
 
+        /* update number of entries modified */
+        count++;
+
         /*
          * Fast path for PTEs that have merely been write-protected
          * (e.g., during a Unix fork()). A strict reduction in privilege.
@@ -2342,6 +2368,30 @@
             put_page_from_l1e(ol1e, d);
     }
     unmap_domain_mem(pl1e);
+
+#ifdef PERF_COUNTERS
+    /*
+     * do a histogram for count. 
+     * first bucket is for count=0,
+     * second bucket is for count=1
+     * last bucket is for count >= 63 *  PERFC_PT_UPDATES_BUCKET_SIZE
+     */
+    if ( count == 0 )
+    {
+        perfc_incra(wpt_updates, 0);
+    } else if ( count == 1 ) 
+    {
+        perfc_incra(wpt_updates, 1);
+    } else if ( (count / PERFC_PT_UPDATES_BUCKET_SIZE)
+                < (PERFC_MAX_PT_UPDATES - 3) )
+    {
+        perfc_incra(wpt_updates, (count / PERFC_PT_UPDATES_BUCKET_SIZE) + 2);
+    } else
+    {
+        perfc_incra(wpt_updates, PERFC_MAX_PT_UPDATES - 1);
+    }
+#endif
+    
 
     /*
      * STEP 3. Reattach the L1 p.t. page into the current address space.
diff -Nru a/xen/arch/x86/x86_32/entry.S b/xen/arch/x86/x86_32/entry.S
--- a/xen/arch/x86/x86_32/entry.S       2005-04-05 12:05:49 -04:00
+++ b/xen/arch/x86/x86_32/entry.S       2005-04-05 12:05:49 -04:00
@@ -99,6 +99,7 @@
         pushl $VMX_MONITOR_EFLAGS; \
         popf; \
         subl $(NR_SKIPPED_REGS*4), %esp; \
+        movl $0, 0xc(%esp); /* eflags==0 identifies xen_regs as VMX guest */ \
         pushl %eax; \
         pushl %ebp; \
         pushl %edi; \
diff -Nru a/xen/common/perfc.c b/xen/common/perfc.c
--- a/xen/common/perfc.c        2005-04-05 12:05:49 -04:00
+++ b/xen/common/perfc.c        2005-04-05 12:05:49 -04:00
@@ -1,4 +1,3 @@
-/* -*-  Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */
 
 #include <xen/lib.h>
 #include <xen/smp.h>
@@ -32,7 +31,7 @@
 
 #define NR_PERFCTRS (sizeof(perfc_info) / sizeof(perfc_info[0]))
 
-struct perfcounter_t perfcounters;
+struct perfcounter perfcounters;
 
 void perfc_printall(unsigned char key)
 {
@@ -221,3 +220,12 @@
 
     return rc;
 }
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ */
diff -Nru a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
--- a/xen/include/xen/perfc_defn.h      2005-04-05 12:05:49 -04:00
+++ b/xen/include/xen/perfc_defn.h      2005-04-05 12:05:49 -04:00
@@ -31,6 +31,7 @@
 /* STATUS counters do not reset when 'P' is hit */
 PERFSTATUS( shadow_l2_pages, "current # shadow L2 pages" )
 PERFSTATUS( shadow_l1_pages, "current # shadow L1 pages" )
+PERFSTATUS( hl2_table_pages, "current # hl2 pages" )
 
 PERFCOUNTER_CPU( check_pagetable, "calls to check_pagetable" )
 PERFCOUNTER_CPU( check_all_pagetables, "calls to check_all_pagetables" )

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

<Prev in Thread] Current Thread [Next in Thread>