George Dunlap
2010-Nov-22 12:15 UTC
[Xen-devel] [PATCH] xenalyze: Enumerate APIC_ACCESS vmexits as MMIO, so they show up in --with-mmio-enumeration
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 ) { _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel