Add a perf counter for write emulation caused by CR0.wp=0 emulation Signed-off-by Kevin Tian diff -r d55e9ed3e5e2 xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Fri Jan 04 13:42:13 2008 +0800 +++ b/xen/arch/x86/mm/shadow/multi.c Tue Jan 08 10:26:38 2008 +0800 @@ -2935,7 +2935,10 @@ static int sh_page_fault(struct vcpu *v, if ( is_hvm_domain(d) && unlikely(!hvm_wp_enabled(v)) && regs->error_code == (PFEC_write_access|PFEC_page_present) ) + { + perfc_incr(shadow_fault_emulate_wp); goto emulate; + } perfc_incr(shadow_fault_fixed); d->arch.paging.log_dirty.fault_count++; diff -r d55e9ed3e5e2 xen/include/asm-x86/perfc_defn.h --- a/xen/include/asm-x86/perfc_defn.h Fri Jan 04 13:42:13 2008 +0800 +++ b/xen/include/asm-x86/perfc_defn.h Tue Jan 08 10:21:22 2008 +0800 @@ -56,6 +56,7 @@ PERFCOUNTER(shadow_fault_emulate_write, PERFCOUNTER(shadow_fault_emulate_write, "shadow_fault emulates a write") PERFCOUNTER(shadow_fault_emulate_failed, "shadow_fault emulator fails") PERFCOUNTER(shadow_fault_emulate_stack, "shadow_fault emulate stack write") +PERFCOUNTER(shadow_fault_emulate_wp, "shadow_fault emulate for CR0.WP=0") PERFCOUNTER(shadow_fault_early_jmp_emul, "jmp to shadow emulate early") PERFCOUNTER(shadow_fault_early_emul_fail, "jmp to shadow emulate early failed") PERFCOUNTER(shadow_fault_mmio, "shadow_fault handled as mmio")