aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Elek <elek.roland@gmail.com>2010-12-14 01:34:37 +0100
committerKevin Wolf <kwolf@redhat.com>2010-12-17 16:11:02 +0100
commitccf0fd8b056dec1fa610842dc3eb2f560ca65753 (patch)
treeadebcdb25d1339a9bd23914da77d355927011bf9
parent2ff61ff1955cb5268a2604aba8f6aa0c4c658505 (diff)
ide: add ncq identify data for ahci sata drives
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> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--hw/ide/core.c7
-rw-r--r--hw/ide/internal.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 228911dc8..9e1d4e671 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 aadb505a1..697c3b4dc 100644
--- a/hw/ide/internal.h
+++ b/hw/ide/internal.h
@@ -447,6 +447,8 @@ struct IDEState {
int smart_errors;
uint8_t smart_selftest_count;
uint8_t *smart_selftest_data;
+ /* AHCI */
+ int ncq_queues;
};
struct IDEDMAOps {