From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36795) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z7BIb-0001Tm-TQ for qemu-devel@nongnu.org; Mon, 22 Jun 2015 19:38:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z7BIb-0005L1-1W for qemu-devel@nongnu.org; Mon, 22 Jun 2015 19:38:45 -0400 From: John Snow Date: Mon, 22 Jun 2015 19:38:25 -0400 Message-Id: <1435016308-6150-14-git-send-email-jsnow@redhat.com> In-Reply-To: <1435016308-6150-1-git-send-email-jsnow@redhat.com> References: <1435016308-6150-1-git-send-email-jsnow@redhat.com> Subject: [Qemu-devel] [PATCH v2 13/16] libqos/ahci: set the NCQ tag on command_commit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-block@nongnu.org Cc: kwolf@redhat.com, pbonzini@redhat.com, John Snow , qemu-devel@nongnu.org, stefanha@redhat.com 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 --- tests/libqos/ahci.c | 5 +++++ 1 file changed, 5 insertions(+) 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); -- 2.1.0