]> Git Repo - qemu.git/commitdiff
libqos/ahci: set the NCQ tag on command_commit
authorJohn Snow <[email protected]>
Sat, 4 Jul 2015 06:06:04 +0000 (02:06 -0400)
committerJohn Snow <[email protected]>
Sat, 4 Jul 2015 06:06:04 +0000 (02:06 -0400)
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 <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Message-id: 1435016308[email protected]

tests/libqos/ahci.c

index 953a32097be19edb88a63e3dae0b5924fe5f348f..7cf667affd1442f622c1489b95e2e8b9c4500174 100644 (file)
@@ -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);
This page took 0.029059 seconds and 4 git commands to generate.