summary refs log tree commit diff stats
path: root/hw/ide
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2010-07-30 21:12:24 +0200
committerAurelien Jarno <aurelien@aurel32.net>2010-07-30 21:12:24 +0200
commitcdc6f542007a6aee0b18a5d616d031c750691e7a (patch)
treec14a02f6cdb227350b9f173fb36b78358cca5421 /hw/ide
parent18e9ea8a3f36b0a3845e1ac6d8acd180063bed8f (diff)
parent199630b62ec7cc5efd6f860ff545b449c7b5cdb8 (diff)
downloadfocaccia-qemu-cdc6f542007a6aee0b18a5d616d031c750691e7a.tar.gz
focaccia-qemu-cdc6f542007a6aee0b18a5d616d031c750691e7a.zip
Merge branch 'for-anthony' of git://repo.or.cz/qemu/kevin
* 'for-anthony' of git://repo.or.cz/qemu/kevin:
  Fix -snapshot deleting images on disk change
  block: Use error codes from lower levels for error message
  block: default to 0 minimal / optiomal I/O size
  move 'unsafe' to end of caching modes in help
  virtio-blk: Create exit function to unregister savevm
  block migration: propagate return value when bdrv_write() returns < 0
  ide/atapi: add support for GET EVENT STATUS NOTIFICATION
Diffstat (limited to 'hw/ide')
-rw-r--r--hw/ide/core.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 56aed935c9..631673fc0f 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1643,6 +1643,21 @@ static void ide_atapi_cmd(IDEState *s)
             ide_atapi_cmd_reply(s, len, max_len);
             break;
         }
+    case GPCMD_GET_EVENT_STATUS_NOTIFICATION:
+        max_len = ube16_to_cpu(packet + 7);
+
+        if (packet[1] & 0x01) { /* polling */
+            /* We don't support any event class (yet). */
+            cpu_to_ube16(buf, 0x00); /* No event descriptor returned */
+            buf[2] = 0x80;           /* No Event Available (NEA) */
+            buf[3] = 0x00;           /* Empty supported event classes */
+            ide_atapi_cmd_reply(s, 4, max_len);
+        } else { /* asynchronous mode */
+            /* Only polling is supported, asynchronous mode is not. */
+            ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST,
+                                ASC_INV_FIELD_IN_CMD_PACKET);
+        }
+        break;
     default:
         ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST,
                             ASC_ILLEGAL_OPCODE);