aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-12 11:26:04 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-12 11:26:04 +0000
commitcee6848f3b5571b29776cb03a417a72ba242c61e (patch)
tree57bc771b26ba45a00dcdf52928d753be2312f03e
parentbc6c5510dbaa5b3be862d28ee62e3acf6c35f0bb (diff)
downloadxen-cee6848f3b5571b29776cb03a417a72ba242c61e.tar.gz
xen-cee6848f3b5571b29776cb03a417a72ba242c61e.tar.bz2
xen-cee6848f3b5571b29776cb03a417a72ba242c61e.zip
x86: Fix PV PIT handler after previous changeset.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r--xen/arch/x86/hvm/i8254.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/xen/arch/x86/hvm/i8254.c b/xen/arch/x86/hvm/i8254.c
index c11d50e6d9..01c78f7799 100644
--- a/xen/arch/x86/hvm/i8254.c
+++ b/xen/arch/x86/hvm/i8254.c
@@ -601,14 +601,20 @@ int pv_pit_handler(int port, int data, int write)
.dir = write ? IOREQ_WRITE : IOREQ_READ,
.data = data
};
- uint32_t val = data;
if ( (current->domain->domain_id == 0) && dom0_pit_access(&ioreq) )
+ {
/* nothing to do */;
- else if ( port == 0x61 )
- handle_speaker_io(ioreq.dir, port, 1, &val);
+ }
else
- handle_pit_io(ioreq.dir, port, 1, &val);
+ {
+ uint32_t val = data;
+ if ( port == 0x61 )
+ handle_speaker_io(ioreq.dir, port, 1, &val);
+ else
+ handle_pit_io(ioreq.dir, port, 1, &val);
+ ioreq.data = val;
+ }
return !write ? ioreq.data : 0;
}