summaryrefslogtreecommitdiff
path: root/Kernel/Storage
diff options
context:
space:
mode:
authorLuke <luke.wilde@live.co.uk>2021-03-18 05:36:13 +0000
committerAndreas Kling <kling@serenityos.org>2021-03-18 07:52:15 +0100
commit3507397fed91a7539c9fc553665a7cbbb3617430 (patch)
tree97ca0585bf05c38107023f334a6bac373270a458 /Kernel/Storage
parentcf9ce0d8578083fcbecf88b05008a6b27ba0d0dc (diff)
downloadserenity-3507397fed91a7539c9fc553665a7cbbb3617430.zip
Kernel/Storage: Recover from fatal AHCI error on TFES, HBDS and HBFS
These errors are classed as fatal, so we need to recover from them. Found while trying to debug AHCI boot on VMware Player, where I got TFES. From the spec: "Fatal errors (signified by the setting of PxIS.HBFS, PxIS.HBDS, PxIS.IFS, or PxIS.TFES) will cause the HBA to enter the ERR:Fatal state" We were already recovering from IFS.
Diffstat (limited to 'Kernel/Storage')
-rw-r--r--Kernel/Storage/AHCIPort.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Kernel/Storage/AHCIPort.cpp b/Kernel/Storage/AHCIPort.cpp
index 9431c25a11..3dd8dcbbe0 100644
--- a/Kernel/Storage/AHCIPort.cpp
+++ b/Kernel/Storage/AHCIPort.cpp
@@ -104,7 +104,7 @@ void AHCIPort::handle_interrupt()
reset();
return;
}
- if (m_interrupt_status.is_set(AHCI::PortInterruptFlag::IF)) {
+ if (m_interrupt_status.is_set(AHCI::PortInterruptFlag::IF) || m_interrupt_status.is_set(AHCI::PortInterruptFlag::TFE) || m_interrupt_status.is_set(AHCI::PortInterruptFlag::HBD) || m_interrupt_status.is_set(AHCI::PortInterruptFlag::HBF)) {
recover_from_fatal_error();
}
m_interrupt_status.clear();