diff options
author | Steven Hand <steven@xensource.com> | 2007-04-17 15:41:44 +0100 |
---|---|---|
committer | Steven Hand <steven@xensource.com> | 2007-04-17 15:41:44 +0100 |
commit | 78c5a8881b3ad51b01fc32b290a49c111962f76f (patch) | |
tree | 258727cc810c5db6b6e2f9b176757fc30abb439b /xen/arch/x86/hvm/intercept.c | |
parent | 2fe0ea05b4c22d6d1e735ee0f1d040c43dab0235 (diff) | |
download | xen-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.c | 9 |
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(); |