[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 7/9] hw/ide/ahci: trigger either error IRQ or regular IRQ, not bo
From: |
Niklas Cassel |
Subject: |
[PATCH 7/9] hw/ide/ahci: trigger either error IRQ or regular IRQ, not both |
Date: |
Fri, 28 Apr 2023 15:21:22 +0200 |
From: Niklas Cassel <niklas.cassel@wdc.com>
According to AHCI 1.3.1, 5.3.8.1 RegFIS:Entry, if ERR_STAT is set,
we jump to state ERR:FatalTaskfile, which will raise a TFES IRQ
unconditionally, regardless if the I bit is set in the FIS or not.
Thus, we should never raise a normal IRQ after having sent an error
IRQ.
Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
---
hw/ide/ahci.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 2a59d0e0f5..d88961b4c0 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -891,11 +891,10 @@ static bool ahci_write_fis_d2h(AHCIDevice *ad, bool
d2h_fis_i)
pr->tfdata = (ad->port.ifs[0].error << 8) |
ad->port.ifs[0].status;
+ /* TFES IRQ is always raised if ERR_STAT is set, regardless of I bit. */
if (d2h_fis[2] & ERR_STAT) {
ahci_trigger_irq(ad->hba, ad, AHCI_PORT_IRQ_BIT_TFES);
- }
-
- if (d2h_fis_i) {
+ } else if (d2h_fis_i) {
ahci_trigger_irq(ad->hba, ad, AHCI_PORT_IRQ_BIT_DHRS);
}
--
2.40.0
- [PATCH 0/9] misc AHCI cleanups, Niklas Cassel, 2023/04/28
- [PATCH 4/9] hw/ide/ahci: simplify and document PxCI handling, Niklas Cassel, 2023/04/28
- [PATCH 7/9] hw/ide/ahci: trigger either error IRQ or regular IRQ, not both,
Niklas Cassel <=
- [PATCH 3/9] hw/ide/ahci: write D2H FIS on when processing NCQ command, Niklas Cassel, 2023/04/28
- [PATCH 9/9] hw/ide/ahci: fix broken SError handling, Niklas Cassel, 2023/04/28
- [PATCH 5/9] hw/ide/ahci: PxCI should not get cleared when ERR_STAT is set, Niklas Cassel, 2023/04/28
- [PATCH 1/9] hw/ide/ahci: remove stray backslash, Niklas Cassel, 2023/04/28
- [PATCH 2/9] hw/ide/core: set ERR_STAT in unsupported command completion, Niklas Cassel, 2023/04/28
- [PATCH 6/9] hw/ide/ahci: PxSACT and PxCI is cleared when PxCMD.ST is cleared, Niklas Cassel, 2023/04/28
- [PATCH 8/9] hw/ide/ahci: fix ahci_write_fis_sdb(), Niklas Cassel, 2023/04/28