diff options
author | John Snow <jsnow@redhat.com> | 2015-07-04 02:06:04 -0400 |
---|---|---|
committer | John Snow <jsnow@redhat.com> | 2015-07-04 02:06:04 -0400 |
commit | a8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5 (patch) | |
tree | 26820de1548610a661f893ad329561c12f85ca73 | |
parent | 359790c2542a8c4da3d4c8fb626ca2675a417d51 (diff) | |
download | qemu-a8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5.zip qemu-a8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5.tar.gz qemu-a8973ff50a04f96c3ce5c803c8fd3ec16ed8d6c5.tar.bz2 |
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
-rw-r--r-- | tests/libqos/ahci.c | 5 |
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); |