qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH] Fix IDE DIAGNOSE for packet devices


From: Vincent Sanders
Subject: [Qemu-devel] [PATCH] Fix IDE DIAGNOSE for packet devices
Date: Thu, 9 Oct 2008 13:03:24 +0100
User-agent: Mutt/1.5.17+20080114 (2008-01-14)

The DIAGNOSE command in the qemu IDE implementation has an error when
use dfor packet devices. 

The status register value is dependant on the drive being a packet
device or not, this patch corrects the returned status.

>From the ATA/PI specification (V6 draft):

"If the device implements the PACKET command feature set, the device
SHALL clear bits 6,5,4,3,2 and 0 in the Status register to zero."

A selection of physical devices have been checked and do conform to
the specifications behaviour.

Signed-off-by: Vincent Sanders <address@hidden>


=== modified file 'hw/ide.c'
--- hw/ide.c    2008-10-01 01:43:16 +0000
+++ hw/ide.c    2008-10-04 10:56:58 +0000
@@ -2308,8 +2308,15 @@
             break;
         case WIN_DIAGNOSE:
             ide_set_signature(s);
-            s->status = READY_STAT | SEEK_STAT;
-            s->error = 0x01;
+            if (s->is_cdrom)
+                s->status = 0; /* ATAPI spec (v6) section 9.10 defines packet
+                                * devices to return a clear status register
+                                * with READY_STAT *not* set. */
+            else
+                s->status = READY_STAT | SEEK_STAT;
+            s->error = 0x01; /* Device 0 passed, Device 1 passed or not
+                              * present. 
+                              */
             ide_set_irq(s);
             break;
         case WIN_SRST:




reply via email to

[Prev in Thread] Current Thread [Next in Thread]