diff --git a/kernel/src/arch/x86_64/disk/ATA.cpp b/kernel/src/arch/x86_64/disk/ATA.cpp index e324b00c..f9343190 100644 --- a/kernel/src/arch/x86_64/disk/ATA.cpp +++ b/kernel/src/arch/x86_64/disk/ATA.cpp @@ -431,6 +431,18 @@ namespace ATA m_uses_dma = false; } + if (m_drive_index == 0 && !(status & BMS_MasterInit)) + { + kwarnln("ata: Drive %d does not have DMA support", m_drive_index); + m_uses_dma = false; + } + + if (m_drive_index == 1 && !(status & BMS_SlaveInit)) + { + kwarnln("ata: Drive %d does not have DMA support", m_drive_index); + m_uses_dma = false; + } + auto frame = MemoryManager::alloc_frame(); if (frame.has_error() || frame.value() > 0xffffffff) {