xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xenalyze: Enumerate APIC_ACCESS vmexits as MMIO, so they show up in --with-mmio-enumeration
@ 2010-11-22 12:15 George Dunlap
  0 siblings, 0 replies; only message in thread
From: George Dunlap @ 2010-11-22 12:15 UTC (permalink / raw)
  To: xen-devel; +Cc: george.dunlap

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>

diff -r 9b3c5bb22b50 -r 61d71976769e xenalyze.c
--- a/xenalyze.c	Mon Nov 22 11:41:15 2010 +0000
+++ b/xenalyze.c	Mon Nov 22 12:15:00 2010 +0000
@@ -4520,6 +4520,21 @@
     }
 }
 
+/* Also called by shadow_mmio_postprocess */
+void enumerate_mmio(struct hvm_data *h)
+{
+    struct pf_xen_extra *e = &h->inflight.pf_xen;
+
+    if ( e->mmio_data_valid )
+        update_io_address(&h->summary.mmio, e->gpa, e->mmio_is_write, h->arc_cycles, e->va);
+}
+
+void hvm_apic_access_postprocess(struct hvm_data *h)
+{
+    if ( opt.with_mmio_enumeration )
+        enumerate_mmio(h);
+}
+
 void hvm_npf_process(struct record_info *ri, struct hvm_data *h)
 {
     struct {
@@ -5016,12 +5031,21 @@
     h->wrmap_bf = 0;
     h->short_summary_done = 0;
 
-    if(!opt.svm_mode && h->exit_reason == EXIT_REASON_EXCEPTION_NMI)
-    {
-        bzero(&h->inflight.pf_xen, sizeof(h->inflight.pf_xen));
-        h->post_process = hvm_exception_nmi_generic_postprocess;
-    } else {
-        h->post_process = NULL;
+    h->post_process = NULL;
+    if(!opt.svm_mode)
+    {
+        switch(h->exit_reason)
+        {
+        case EXIT_REASON_EXCEPTION_NMI:
+            bzero(&h->inflight.pf_xen, sizeof(h->inflight.pf_xen));
+            h->post_process = hvm_exception_nmi_generic_postprocess;
+            break;
+        case EXIT_REASON_APIC_ACCESS:
+            bzero(&h->inflight.pf_xen, sizeof(h->inflight.pf_xen));
+            h->post_process = hvm_apic_access_postprocess;
+        default:
+            ;
+        }
     }
   
     {
@@ -5826,7 +5850,7 @@
     }
 
     if(opt.with_mmio_enumeration)
-        update_io_address(&h->summary.mmio, e->gpa, e->mmio_is_write, h->arc_cycles, e->va);
+        enumerate_mmio(h);
 
     if ( opt.dump_cooked )
     {

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-11-22 12:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-22 12:15 [PATCH] xenalyze: Enumerate APIC_ACCESS vmexits as MMIO, so they show up in --with-mmio-enumeration George Dunlap

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).