diff options
author | David Vrabel <david.vrabel@citrix.com> | 2012-05-14 16:54:52 +0100 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2012-05-14 16:54:52 +0100 |
commit | 633979eeb74ecf9200a2f86eff9ed3f09c12bea9 (patch) | |
tree | fefc53b8c994d9d816b9f2ed1e1af90a48032647 /xen/arch/x86/hvm/emulate.c | |
parent | 8a54dd6247fc86bef027851063c00c361f6627eb (diff) | |
download | xen-633979eeb74ecf9200a2f86eff9ed3f09c12bea9.tar.gz xen-633979eeb74ecf9200a2f86eff9ed3f09c12bea9.tar.bz2 xen-633979eeb74ecf9200a2f86eff9ed3f09c12bea9.zip |
x86/hvm: put value of emulated register reads into trace records
The tracepoint for emulated MMIO and I/O port reads was always before
the emulated read or write was done. This means that for reads the
register value in the trace record was always 0.
So for reads, move the tracepoint until the register value is
available.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/hvm/emulate.c')
-rw-r--r-- | xen/arch/x86/hvm/emulate.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index 82efd1aa45..3a7fe95293 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -191,7 +191,8 @@ static int hvmemul_do_io( p->df = df; p->data = value; - hvmtrace_io_assist(is_mmio, p); + if ( dir == IOREQ_WRITE ) + hvmtrace_io_assist(is_mmio, p); if ( is_mmio ) { @@ -232,6 +233,9 @@ static int hvmemul_do_io( } finish_access: + if ( dir == IOREQ_READ ) + hvmtrace_io_assist(is_mmio, p); + if ( p_data != NULL ) memcpy(p_data, &vio->io_data, size); |