Patchwork [06/13] ide: add ncq identify data for ahci sata drives

login
register
mail settings
Submitter Alexander Graf
Date Dec. 8, 2010, 12:13 p.m.
Message ID <1291810400-11309-7-git-send-email-agraf@suse.de>
Download mbox | patch
Permalink /patch/74692/
State New
Headers show

Comments

Alexander Graf - Dec. 8, 2010, 12:13 p.m.
From: Roland Elek <elek.roland@gmail.com>

I modified ide_identify() to include the zero-based queue length
value in word 75, and set bit 8 in word 76 to signal NCQ support
in the identify data for AHCI SATA drives.

Signed-off-by: Roland Elek <elek.roland@gmail.com>
---
 hw/ide/core.c     |    7 +++++++
 hw/ide/internal.h |    2 ++
 2 files changed, 9 insertions(+), 0 deletions(-)

Patch

diff --git a/hw/ide/core.c b/hw/ide/core.c
index 6284539..a3f8104 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -140,6 +140,13 @@  static void ide_identify(IDEState *s)
     put_le16(p + 66, 120);
     put_le16(p + 67, 120);
     put_le16(p + 68, 120);
+
+    if (s->ncq_queues) {
+        put_le16(p + 75, s->ncq_queues - 1);
+        /* NCQ supported */
+        put_le16(p + 76, (1 << 8));
+    }
+
     put_le16(p + 80, 0xf0); /* ata3 -> ata6 supported */
     put_le16(p + 81, 0x16); /* conforms to ata5 */
     /* 14=NOP supported, 5=WCACHE supported, 0=SMART supported */
diff --git a/hw/ide/internal.h b/hw/ide/internal.h
index 7e2ba1a..414adf5 100644
--- a/hw/ide/internal.h
+++ b/hw/ide/internal.h
@@ -453,6 +453,8 @@  struct IDEState {
     int smart_errors;
     uint8_t smart_selftest_count;
     uint8_t *smart_selftest_data;
+    /* AHCI */
+    int ncq_queues;
 };
 
 struct IDEDMAOps {