]> Git Repo - qemu.git/commitdiff
libqos/ahci: edit wait to be ncq aware
authorJohn Snow <[email protected]>
Sat, 4 Jul 2015 06:06:03 +0000 (02:06 -0400)
committerJohn Snow <[email protected]>
Sat, 4 Jul 2015 06:06:03 +0000 (02:06 -0400)
The wait command should check to make sure SACT is clear as well
as the Command Issue register.

Signed-off-by: John Snow <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Message-id: 1435016308[email protected]

tests/libqos/ahci.c

index 9a4d510fec3f9b5381f5c00984de927e0a5bbceb..da02e2e4c72b99a40f0184d4c7be321cbf09b8f9 100644 (file)
@@ -908,11 +908,15 @@ void ahci_command_wait(AHCIQState *ahci, AHCICommand *cmd)
     /* We can't rely on STS_BSY until the command has started processing.
      * Therefore, we also use the Command Issue bit as indication of
      * a command in-flight. */
-    while (BITSET(ahci_px_rreg(ahci, cmd->port, AHCI_PX_TFD),
-                  AHCI_PX_TFD_STS_BSY) ||
-           BITSET(ahci_px_rreg(ahci, cmd->port, AHCI_PX_CI), (1 << cmd->slot))) {
+
+#define RSET(REG, MASK) (BITSET(ahci_px_rreg(ahci, cmd->port, (REG)), (MASK)))
+
+    while (RSET(AHCI_PX_TFD, AHCI_PX_TFD_STS_BSY) ||
+           RSET(AHCI_PX_CI, 1 << cmd->slot) ||
+           (cmd->props->ncq && RSET(AHCI_PX_SACT, 1 << cmd->slot))) {
         usleep(50);
     }
+
 }
 
 void ahci_command_issue(AHCIQState *ahci, AHCICommand *cmd)
This page took 0.029061 seconds and 4 git commands to generate.