aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/intercept.c
diff options
context:
space:
mode:
authorSteven Hand <steven@xensource.com>2007-04-17 15:41:44 +0100
committerSteven Hand <steven@xensource.com>2007-04-17 15:41:44 +0100
commit78c5a8881b3ad51b01fc32b290a49c111962f76f (patch)
tree258727cc810c5db6b6e2f9b176757fc30abb439b /xen/arch/x86/hvm/intercept.c
parent2fe0ea05b4c22d6d1e735ee0f1d040c43dab0235 (diff)
downloadxen-78c5a8881b3ad51b01fc32b290a49c111962f76f.tar.gz
xen-78c5a8881b3ad51b01fc32b290a49c111962f76f.tar.bz2
xen-78c5a8881b3ad51b01fc32b290a49c111962f76f.zip
Fix for bug introduced by cset 14859:a9aa7c29eda8 - implement IOREQ_TYPE_SUB
for intercepted mmio access too. Signed-off-by: Steven Hand <steven@xensource.com>
Diffstat (limited to 'xen/arch/x86/hvm/intercept.c')
-rw-r--r--xen/arch/x86/hvm/intercept.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c
index 91749b676b..e9712ce791 100644
--- a/xen/arch/x86/hvm/intercept.c
+++ b/xen/arch/x86/hvm/intercept.c
@@ -148,6 +148,15 @@ static inline void hvm_mmio_access(struct vcpu *v,
p->data = tmp1;
break;
+ case IOREQ_TYPE_SUB:
+ tmp1 = read_handler(v, p->addr, p->size);
+ if ( p->dir == IOREQ_WRITE ) {
+ tmp2 = tmp1 - (unsigned long) p->data;
+ write_handler(v, p->addr, p->size, tmp2);
+ }
+ p->data = tmp1;
+ break;
+
default:
printk("hvm_mmio_access: error ioreq type %x\n", p->type);
domain_crash_synchronous();