From ed8b21063965bf13fd0a85cc699207b2eb0715d3 Mon Sep 17 00:00:00 2001 From: apio Date: Tue, 8 Aug 2023 18:23:13 +0200 Subject: [PATCH] kernel: Detect some other cases of non-DMA support --- kernel/src/arch/x86_64/disk/ATA.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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) {