From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54785) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z67vx-00030H-Ee for qemu-devel@nongnu.org; Fri, 19 Jun 2015 21:51:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z67vw-0004Gj-BU for qemu-devel@nongnu.org; Fri, 19 Jun 2015 21:51:01 -0400 From: John Snow Date: Fri, 19 Jun 2015 21:50:39 -0400 Message-Id: <1434765047-29333-9-git-send-email-jsnow@redhat.com> In-Reply-To: <1434765047-29333-1-git-send-email-jsnow@redhat.com> References: <1434765047-29333-1-git-send-email-jsnow@redhat.com> Subject: [Qemu-devel] [PATCH 08/16] ahci: clear error register before NCQ cmd 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 The legacy ide command execution layer will clear any errors outstanding before execution, but the NCQ layer doesn't. Even on success, this register will remain clogged. Clear it out before each NCQ command so the guest can tell if the error code produced after completion is meaningful or not. Signed-off-by: John Snow --- hw/ide/ahci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 6bded67..e63ba9b 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1048,6 +1048,8 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis, ncq_tfs->lba, ncq_tfs->lba + ncq_tfs->sector_count - 1, ide_state->nb_sectors - 1); + ide_state->error = 0; + switch(ncq_fis->command) { case READ_FPDMA_QUEUED: DPRINTF(port, "NCQ reading %d sectors from LBA %"PRId64", " -- 2.1.0