[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-3.2-testing] hvm, ioemu: Fix the ide/cdrom emulation error on FC7 guest.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1201001100 0
# Node ID 062c0bfa17f6b7dbd354cea40fa94c80ca8f5c66
# Parent  6de1c481bc7fb280038a13f15dbfba2c2ca38cee
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>
xen-unstable changeset:   16776:2af5fb3e34e54e96d0c58e0e4557ee1240df9ce8
xen-unstable date:        Tue Jan 22 09:50:06 2008 +0000
---
 tools/ioemu/hw/ide.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletion(-)

diff -r 6de1c481bc7f -r 062c0bfa17f6 tools/ioemu/hw/ide.c
--- a/tools/ioemu/hw/ide.c      Tue Jan 22 11:24:28 2008 +0000
+++ b/tools/ioemu/hw/ide.c      Tue Jan 22 11:25:00 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.