[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] hvm, ioemu: Fix the ide/cdrom emulation error on FC7 guest.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1200995406 0 # Node ID 2af5fb3e34e54e96d0c58e0e4557ee1240df9ce8 # Parent cc5bb500df5feda0755b865134c47f3fe9cec46d hvm, ioemu: Fix the ide/cdrom emulation error on FC7 guest. The new libata-eh in the Linux kernel is throwing a fit over the QEMU cdrom device for two reasons: 1) DRQ can be set with ERR_STAT set. This is a violation of the ATAPI state machine. 2) After a TEST_UNIT_READY ATAPI command is sent ERR_STAT is getting set which is correct. But, when the OS issues another ATAPI command ERR_STAT is still set. Which is bad since the next expected command from the OS is REQUEST_SENSE to find out why ERR_STAT is set. bug this fixes: https://bugzilla.novell.com/show_bug.cgi?id=3D291775 Signed-off-by: Brandon Philips <bphilips@xxxxxxx> Porting this qemu fix to xen. Signed-off-by: Xu Dongxiao <dongxiao.xu@xxxxxxxxx> --- tools/ioemu/hw/ide.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -r cc5bb500df5f -r 2af5fb3e34e5 tools/ioemu/hw/ide.c --- a/tools/ioemu/hw/ide.c Tue Jan 22 09:48:51 2008 +0000 +++ b/tools/ioemu/hw/ide.c Tue Jan 22 09:50:06 2008 +0000 @@ -756,7 +756,9 @@ static void ide_transfer_start(IDEState s->end_transfer_func = end_transfer_func; s->data_ptr = buf; s->data_end = buf + size; - s->status |= DRQ_STAT; + /* don't violate the HSM */ + if (!(s->status & ERR_STAT)) + s->status |= DRQ_STAT; buffered_pio_reset(s); } @@ -2011,6 +2013,7 @@ static void ide_ioport_write(void *opaqu /* overlapping commands not supported */ if (s->feature & 0x02) goto abort_cmd; + s->status = READY_STAT; s->atapi_dma = s->feature & 1; s->nsector = 1; ide_transfer_start(s, s->io_buffer, ATAPI_PACKET_SIZE, _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |