diff options
author | Keir Fraser <keir@xensource.com> | 2007-11-01 09:48:14 +0000 |
---|---|---|
committer | Keir Fraser <keir@xensource.com> | 2007-11-01 09:48:14 +0000 |
commit | b1884a7244b249cd61e8df0fe3b63630d93ef2b9 (patch) | |
tree | d1e3d4452c2556104aa9c35fe1d34ce408df624a /xen/arch/x86/hvm/stdvga.c | |
parent | 1d405b7498321558dd3d8fbac1e3c8c4283be87f (diff) | |
download | xen-b1884a7244b249cd61e8df0fe3b63630d93ef2b9.tar.gz xen-b1884a7244b249cd61e8df0fe3b63630d93ef2b9.tar.bz2 xen-b1884a7244b249cd61e8df0fe3b63630d93ef2b9.zip |
x86, hvm: Fix stdvga and buffered-io code.
Corrected a bug in the stdvga code where it did not properly handle 32
bit operations. The buf_ioreq_t can now store 32 bits of data.
Signed-off-by: Robert Phillips <rphillips@virtualiron.com>
Signed-off-by: Ben Guthro <bguthro@virtualiron.com>
Diffstat (limited to 'xen/arch/x86/hvm/stdvga.c')
-rw-r--r-- | xen/arch/x86/hvm/stdvga.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/stdvga.c b/xen/arch/x86/hvm/stdvga.c index 79bcc5b074..7d2599ca69 100644 --- a/xen/arch/x86/hvm/stdvga.c +++ b/xen/arch/x86/hvm/stdvga.c @@ -296,6 +296,8 @@ int stdvga_intercept_pio(ioreq_t *p) { if ( p->size != 1 ) gdprintk(XENLOG_WARNING, "unexpected io size:%d\n", (int)p->size); + if ( p->data_is_ptr ) + gdprintk(XENLOG_WARNING, "unexpected data_is_ptr\n"); if ( !((p->addr == 0x3c5) && (s->sr_index >= sizeof(sr_mask))) && !((p->addr == 0x3cf) && (s->gr_index >= sizeof(gr_mask))) ) { @@ -643,6 +645,10 @@ int stdvga_intercept_mmio(ioreq_t *p) s->cache = 0; } } + else + { + buf = (p->dir == IOREQ_WRITE); + } rc = (buf && hvm_buffered_io_send(p)); |