summaryrefslogtreecommitdiffstats
path: root/tests/libqos
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2015-07-04 02:06:04 -0400
committerJohn Snow <jsnow@redhat.com>2015-07-04 02:06:04 -0400
commita8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5 (patch)
tree26820de1548610a661f893ad329561c12f85ca73 /tests/libqos
parent359790c2542a8c4da3d4c8fb626ca2675a417d51 (diff)
downloadhqemu-a8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5.zip
hqemu-a8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5.tar.gz
libqos/ahci: set the NCQ tag on command_commit
NCQ commands have the concept of a "TAG" that they need to set, but in the AHCI world, it is mandated that the TAG always match the command slot that you executed the NCQ from. See AHCI 9.3.1.1.5.2 "Native Queued Commands". Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1435016308-6150-14-git-send-email-jsnow@redhat.com
Diffstat (limited to 'tests/libqos')
-rw-r--r--tests/libqos/ahci.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/tests/libqos/ahci.c b/tests/libqos/ahci.c
index 953a320..7cf667a 100644
--- a/tests/libqos/ahci.c
+++ b/tests/libqos/ahci.c
@@ -857,6 +857,11 @@ void ahci_command_commit(AHCIQState *ahci, AHCICommand *cmd, uint8_t port)
cmd->port = port;
cmd->slot = ahci_pick_cmd(ahci, port);
+ if (cmd->props->ncq) {
+ NCQFIS *nfis = (NCQFIS *)&cmd->fis;
+ nfis->tag = (cmd->slot << 3) & 0xFC;
+ }
+
/* Create a buffer for the command table */
prdtl = size_to_prdtl(cmd->xbytes, cmd->prd_size);
table_size = CMD_TBL_SIZ(prdtl);
OpenPOWER on IntegriCloud