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] Add keyhandler 'g' to print all active gr

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Add keyhandler 'g' to print all active grant table entries.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 03 Dec 2009 23:20:21 -0800
Delivery-date: Thu, 03 Dec 2009 23:20:34 -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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1259909888 0
# Node ID 0930d17589a6309933cbf8a5848f45dd393e617d
# Parent  fc43518b59f9d36ef4d1138e56645412c4b48531
Add keyhandler 'g' to print all active grant table entries.

Authored-By: Robert Phillips
Signed-off-By: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
 xen/common/grant_table.c |   83 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+)

diff -r fc43518b59f9 -r 0930d17589a6 xen/common/grant_table.c
--- a/xen/common/grant_table.c  Fri Dec 04 06:51:53 2009 +0000
+++ b/xen/common/grant_table.c  Fri Dec 04 06:58:08 2009 +0000
@@ -35,6 +35,7 @@
 #include <xen/domain_page.h>
 #include <xen/iommu.h>
 #include <xen/paging.h>
+#include <xen/keyhandler.h>
 #include <xsm/xsm.h>
 
 #ifndef max_nr_grant_frames
@@ -2502,6 +2503,88 @@ grant_table_destroy(
     d->grant_table = NULL;
 }
 
+void gnttab_usage_print(struct domain *rd)
+{
+    int first = 1;
+    grant_ref_t ref;
+
+    printk("      -------- active --------       -------- shared --------\n");
+    printk("[ref] localdom mfn      pin          localdom gmfn     flags\n");
+
+    spin_lock(&rd->grant_table->lock);
+
+    for ( ref = 0; ref != nr_grant_entries(rd->grant_table); ref++ )
+    {
+        struct active_grant_entry *act;
+        struct grant_entry_header *sha;
+        grant_entry_v1_t *sha1;
+        grant_entry_v2_t *sha2;
+        uint16_t status;
+        uint64_t frame;
+
+        act = &active_entry(rd->grant_table, ref);
+        if ( !act->pin )
+            continue;
+
+        sha = shared_entry_header(rd->grant_table, ref);
+
+        if ( rd->grant_table->gt_version == 1 )
+        {
+            sha1 = &shared_entry_v1(rd->grant_table, ref);
+            sha2 = NULL;
+            status = sha->flags;
+            frame = sha1->frame;
+        }
+        else
+        {
+            sha2 = &shared_entry_v2(rd->grant_table, ref);
+            sha1 = NULL;
+            frame = sha2->full_page.frame;
+            status = status_entry(rd->grant_table, ref);
+        }
+
+        if ( first )
+        {
+            printk("grant-table for remote domain:%5d (v%d)\n",
+                   rd->domain_id, rd->grant_table->gt_version);
+            first = 0;
+        }
+
+        /*      [ddd]    ddddd 0xXXXXXX 0xXXXXXXXX      ddddd 0xXXXXXX 0xXX */
+        printk("[%3d]    %5d 0x%06lx 0x%08x      %5d 0x%06lx 0x%02x\n",
+               ref, act->domid, act->frame, act->pin,
+               sha->domid, frame, status);
+    }
+
+    spin_unlock(&rd->grant_table->lock);
+
+    if ( first )
+        printk("grant-table for remote domain:%5d ... "
+               "no active grant table entries\n", rd->domain_id);
+}
+
+static void gnttab_usage_print_all(unsigned char key)
+{
+    struct domain *d;
+    printk("%s [ key '%c' pressed\n", __FUNCTION__, key);
+    for_each_domain ( d )
+        gnttab_usage_print(d);
+    printk("%s ] done\n", __FUNCTION__);
+}
+
+static struct keyhandler gnttab_usage_print_all_keyhandler = {
+    .diagnostic = 1,
+    .u.fn = gnttab_usage_print_all,
+    .desc = "print grant table usage"
+};
+
+static int __init gnttab_usage_init(void)
+{
+    register_keyhandler('g', &gnttab_usage_print_all_keyhandler);
+    return 0;
+}
+__initcall(gnttab_usage_init);
+
 /*
  * Local variables:
  * mode: C

_______________________________________________
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] Add keyhandler 'g' to print all active grant table entries., Xen patchbot-unstable <=