浏览代码

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.
Luke 4 年之前
父节点
当前提交
3507397fed
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      Kernel/Storage/AHCIPort.cpp

+ 1 - 1
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();