diff mbox

[12/55] ide: Fix ATA command READ to set ATAPI signature for CD-ROM

Message ID 1311179069-27882-13-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster July 20, 2011, 4:23 p.m. UTC
Must set the ATAPI device signature, see ACS-2 7.36.6 Outputs for
PACKET feature set devices.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 hw/ide/core.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

Comments

Christoph Hellwig July 26, 2011, 11:57 a.m. UTC | #1
On Wed, Jul 20, 2011 at 06:23:46PM +0200, Markus Armbruster wrote:
> Must set the ATAPI device signature, see ACS-2 7.36.6 Outputs for
> PACKET feature set devices.

Odd but true, even if it's 7.38.2 in my local copy of the ACS spec.

It defintively should be documented in a comment next to the code,
given how odd the behaviour is.
Markus Armbruster July 26, 2011, 1:33 p.m. UTC | #2
Christoph Hellwig <hch@lst.de> writes:

> On Wed, Jul 20, 2011 at 06:23:46PM +0200, Markus Armbruster wrote:
>> Must set the ATAPI device signature, see ACS-2 7.36.6 Outputs for
>> PACKET feature set devices.
>
> Odd but true, even if it's 7.38.2 in my local copy of the ACS spec.
>
> It defintively should be documented in a comment next to the code,
> given how odd the behaviour is.

I can stick in a suitable comment when I respin.
diff mbox

Patch

diff --git a/hw/ide/core.c b/hw/ide/core.c
index fa50692..f96ebf2 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -958,8 +958,10 @@  void ide_exec_cmd(IDEBus *bus, uint32_t val)
 	lba48 = 1;
     case WIN_READ:
     case WIN_READ_ONCE:
-        if (!s->bs)
+        if (s->drive_kind == IDE_CD) {
+            ide_set_signature(s);
             goto abort_cmd;
+        }
 	ide_cmd_lba48_transform(s, lba48);
         s->req_nb_sectors = 1;
         ide_sector_read(s);