[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL for-6.2 4/7] hw/ide/ahci: PxSACT and PxCI is cleared when PxCMD.ST
From: |
John Snow |
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 |
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
- [PULL for-6.2 0/7] Ide patches, John Snow, 2023/09/06
- [PULL for-6.2 2/7] hw/ide/ahci: write D2H FIS when processing NCQ command, John Snow, 2023/09/06
- [PULL for-6.2 4/7] hw/ide/ahci: PxSACT and PxCI is cleared when PxCMD.ST is cleared,
John Snow <=
- [PULL for-6.2 6/7] hw/ide/ahci: fix ahci_write_fis_sdb(), John Snow, 2023/09/06
- [PULL for-6.2 1/7] hw/ide/core: set ERR_STAT in unsupported command completion, John Snow, 2023/09/06
- [PULL for-6.2 5/7] hw/ide/ahci: PxCI should not get cleared when ERR_STAT is set, John Snow, 2023/09/06
- [PULL for-6.2 7/7] hw/ide/ahci: fix broken SError handling, John Snow, 2023/09/06
- [PULL for-6.2 3/7] hw/ide/ahci: simplify and document PxCI handling, John Snow, 2023/09/06
- Re: [PULL for-6.2 0/7] Ide patches, John Snow, 2023/09/06
- Re: [PULL for-6.2 0/7] Ide patches, Stefan Hajnoczi, 2023/09/07
- Re: [PULL for-6.2 0/7] Ide patches, Michael Tokarev, 2023/09/07