From b13b7c8e7c5409cca70cefe89b3e80d09c38f2be Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 12 Jun 2024 07:57:54 -0600 Subject: [PATCH] ided: detect when controller is DMA capable --- storage/ided/src/main.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/storage/ided/src/main.rs b/storage/ided/src/main.rs index 2778a68324..decfacd9bc 100644 --- a/storage/ided/src/main.rs +++ b/storage/ided/src/main.rs @@ -88,6 +88,9 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { info!("IDE PCI CONFIG: {:?}", pci_config); + // Get controller DMA capable + let dma = pci_config.func.full_device_id.interface & 0x80 != 0; + let busmaster_base = pci_config.func.bars[4].expect_port(); let (primary, primary_irq) = if pci_config.func.full_device_id.interface & 1 != 0 { panic!("TODO: IDE primary channel is PCI native"); @@ -216,15 +219,16 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { println!(" Serial: {}", serial.trim()); println!(" Firmware: {}", firmware.trim()); println!(" Model: {}", model.trim()); - println!(" {}-bit LBA", lba_bits); println!(" Size: {} MB", sectors / 2048); + println!(" DMA: {}", dma); + println!(" {}-bit LBA", lba_bits); disks.push(Box::new(AtaDisk { chan: chan_lock.clone(), chan_i, dev, size: sectors * 512, - dma: true, //TODO: detect! + dma, lba_48: lba_bits == 48, })); }