qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <thuth@redhat.com>, "John Snow" <jsnow@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	qemu-block@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Niklas Cassel" <niklas.cassel@wdc.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PULL for-6.2 4/7] hw/ide/ahci: PxSACT and PxCI is cleared when PxCMD.ST is cleared
Date: Wed,  6 Sep 2023 23:42:25 -0400	[thread overview]
Message-ID: <20230907034228.4054839-5-jsnow@redhat.com> (raw)
In-Reply-To: <20230907034228.4054839-1-jsnow@redhat.com>

From: Niklas Cassel <niklas.cassel@wdc.com>

According to AHCI 1.3.1 definition of PxSACT:
This field is cleared when PxCMD.ST is written from a '1' to a '0' by
software. This field is not cleared by a COMRESET or a software reset.

According to AHCI 1.3.1 definition of PxCI:
This field is also cleared when PxCMD.ST is written from a '1' to a '0'
by software.

Clearing PxCMD.ST is part of the error recovery procedure, see
AHCI 1.3.1, section "6.2 Error Recovery".

If we don't clear PxCI on error recovery, the previous command will
incorrectly still be marked as pending after error recovery.

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20230609140844.202795-6-nks@flawful.org
Signed-off-by: John Snow <jsnow@redhat.com>
---
 hw/ide/ahci.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 3deaf01add..a31e6fa65e 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -329,6 +329,11 @@ static void ahci_port_write(AHCIState *s, int port, int offset, uint32_t val)
         ahci_check_irq(s);
         break;
     case AHCI_PORT_REG_CMD:
+        if ((pr->cmd & PORT_CMD_START) && !(val & PORT_CMD_START)) {
+            pr->scr_act = 0;
+            pr->cmd_issue = 0;
+        }
+
         /* Block any Read-only fields from being set;
          * including LIST_ON and FIS_ON.
          * The spec requires to set ICC bits to zero after the ICC change
-- 
2.41.0



  parent reply	other threads:[~2023-09-07  3:44 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-07  3:42 [PULL for-6.2 0/7] Ide patches John Snow
2023-09-07  3:42 ` [PULL for-6.2 1/7] hw/ide/core: set ERR_STAT in unsupported command completion John Snow
2023-09-07  3:42 ` [PULL for-6.2 2/7] hw/ide/ahci: write D2H FIS when processing NCQ command John Snow
2023-09-07  3:42 ` [PULL for-6.2 3/7] hw/ide/ahci: simplify and document PxCI handling John Snow
2023-09-07  3:42 ` John Snow [this message]
2023-09-07  3:42 ` [PULL for-6.2 5/7] hw/ide/ahci: PxCI should not get cleared when ERR_STAT is set John Snow
2023-09-07  3:42 ` [PULL for-6.2 6/7] hw/ide/ahci: fix ahci_write_fis_sdb() John Snow
2023-09-07  3:42 ` [PULL for-6.2 7/7] hw/ide/ahci: fix broken SError handling John Snow
2023-09-07  3:43 ` [PULL for-6.2 0/7] Ide patches John Snow
2023-09-07  6:08   ` Philippe Mathieu-Daudé
2023-09-07 15:43 ` Stefan Hajnoczi
2023-09-07 16:49 ` Michael Tokarev
2023-09-07 16:54   ` John Snow
2023-09-07 18:16     ` Michael Tokarev
2023-09-08  7:53       ` Philippe Mathieu-Daudé
2023-09-08  8:06         ` Michael Tokarev
2023-09-08  8:26           ` Michael Tokarev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230907034228.4054839-5-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=niklas.cassel@wdc.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).