aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/stdvga.c
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-11-01 09:48:14 +0000
committerKeir Fraser <keir@xensource.com>2007-11-01 09:48:14 +0000
commitb1884a7244b249cd61e8df0fe3b63630d93ef2b9 (patch)
treed1e3d4452c2556104aa9c35fe1d34ce408df624a /xen/arch/x86/hvm/stdvga.c
parent1d405b7498321558dd3d8fbac1e3c8c4283be87f (diff)
downloadxen-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.c6
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));