qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 12/19] libqos/ahci: add ahci command verify


From: John Snow
Subject: [Qemu-devel] [PATCH 12/19] libqos/ahci: add ahci command verify
Date: Fri, 30 Jan 2015 13:42:06 -0500

Helps to verify that a command completed successfully.

Signed-off-by: John Snow <address@hidden>
---
 tests/ahci-test.c   | 16 ++--------------
 tests/libqos/ahci.c | 12 ++++++++++++
 tests/libqos/ahci.h |  1 +
 3 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/tests/ahci-test.c b/tests/ahci-test.c
index 0834020..6e7b765 100644
--- a/tests/ahci-test.c
+++ b/tests/ahci-test.c
@@ -662,7 +662,6 @@ static void ahci_test_identify(AHCIQState *ahci)
     unsigned i;
     int rc;
     AHCICommand *cmd;
-    uint8_t cx;
 
     g_assert(ahci != NULL);
 
@@ -702,20 +701,9 @@ static void ahci_test_identify(AHCIQState *ahci)
      * so we should find that there are no pending interrupts yet. */
     g_assert_cmphex(ahci_px_rreg(ahci, i, AHCI_PX_IS), ==, 0);
 
-    /* Issue Command #cx via PxCI */
+    /* Issue command and sanity check response. */
     ahci_command_issue(ahci, cmd);
-    cx = ahci_command_slot(cmd);
-
-    /* Check registers for post-command consistency */
-    ahci_port_check_error(ahci, i);
-    /* BUG: we expect AHCI_PX_IS_DPS to be set. */
-    ahci_port_check_interrupts(ahci, i, AHCI_PX_IS_DHRS | AHCI_PX_IS_PSS);
-    ahci_port_check_nonbusy(ahci, i, cx);
-    /* Investigate the CMD, assert that we read 512 bytes */
-    ahci_port_check_cmd_sanity(ahci, i, cx, 512);
-    /* Investigate FIS responses */
-    ahci_port_check_d2h_sanity(ahci, i, cx);
-    ahci_port_check_pio_sanity(ahci, i, cx, 512);
+    ahci_command_verify(ahci, cmd);
 
     /* Last, but not least: Investigate the IDENTIFY response data. */
     memread(data_ptr, &buff, 512);
diff --git a/tests/libqos/ahci.c b/tests/libqos/ahci.c
index 87cc9dc..594c821 100644
--- a/tests/libqos/ahci.c
+++ b/tests/libqos/ahci.c
@@ -725,6 +725,18 @@ void ahci_command_issue(AHCIQState *ahci, AHCICommand *cmd)
     ahci_command_wait(ahci, cmd);
 }
 
+void ahci_command_verify(AHCIQState *ahci, AHCICommand *cmd)
+{
+    ahci_port_check_error(ahci, cmd->px);
+    ahci_port_check_interrupts(ahci, cmd->px, cmd->interrupts);
+    ahci_port_check_nonbusy(ahci, cmd->px, cmd->cx);
+    ahci_port_check_cmd_sanity(ahci, cmd->px, cmd->cx, cmd->xbytes);
+    ahci_port_check_d2h_sanity(ahci, cmd->px, cmd->cx);
+    if (cmd->props->pio) {
+        ahci_port_check_pio_sanity(ahci, cmd->px, cmd->cx, cmd->xbytes);
+    }
+}
+
 uint8_t ahci_command_slot(AHCICommand *cmd)
 {
     return cmd->cx;
diff --git a/tests/libqos/ahci.h b/tests/libqos/ahci.h
index 99ac820..46b7bf3 100644
--- a/tests/libqos/ahci.h
+++ b/tests/libqos/ahci.h
@@ -527,6 +527,7 @@ void ahci_command_commit(AHCIQState *ahci, AHCICommand 
*cmd, uint8_t px);
 void ahci_command_issue(AHCIQState *ahci, AHCICommand *cmd);
 void ahci_command_issue_async(AHCIQState *ahci, AHCICommand *cmd);
 void ahci_command_wait(AHCIQState *ahci, AHCICommand *cmd);
+void ahci_command_verify(AHCIQState *ahci, AHCICommand *cmd);
 void ahci_command_free(AHCICommand *cmd);
 /* Command adjustments */
 void ahci_command_set_buffer(AHCICommand *cmd, uint64_t buffer);
-- 
1.9.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]