From 3507397fed91a7539c9fc553665a7cbbb3617430 Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 18 Mar 2021 05:36:13 +0000 Subject: [PATCH] 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. --- Kernel/Storage/AHCIPort.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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();