diff --git a/src/kernel/dri/ata_pio/ata_pio.c b/src/kernel/dri/ata_pio/ata_pio.c
index cd45998..db1b7cb 100644
--- a/src/kernel/dri/ata_pio/ata_pio.c
+++ b/src/kernel/dri/ata_pio/ata_pio.c
@@ -3,18 +3,23 @@
 #include <io.h>
 #include <log.h>
 
+/* TODO: Rewrite all of this to work with dri_ide in the case of multiple
+ * devices */
+
 static ushort test_buffer[256];
 
 void ata_pio_wait_bsy()
 {
 	while (inb(ATA_PORT_CMD) & ATA_BSY)
-	{}
+	{
+	}
 }
 
 void ata_pio_wait_drq()
 {
 	while (!(inb(ATA_PORT_CMD) & ATA_RDY))
-	{}
+	{
+	}
 }
 
 uint ata_pio_get_error()
@@ -40,9 +45,7 @@
 
 	ata_pio_wait_bsy();
 
-	asm volatile("rep insw" ::
-				 "c"(num_sectors * 256),
-				 "d"(ATA_PORT_DATA),
+	asm volatile("rep insw" ::"c"(num_sectors * 256), "d"(ATA_PORT_DATA),
 				 "D"(buffer));
 
 	ata_pio_wait_bsy();
@@ -57,9 +60,7 @@
 
 	ata_pio_wait_bsy();
 
-	asm volatile("rep outsw" ::
-				 "c"(num_sectors * 256),
-				 "d"(ATA_PORT_DATA),
+	asm volatile("rep outsw" :: "c"(num_sectors * 256), "d"(ATA_PORT_DATA),
 				 "S"(buffer));
 }
 
@@ -83,8 +84,8 @@
 	for (int i = 0; i < 256; i++)
 		test_buffer[i] = i;
 
-	ata_pio_write_sectors(0, 1, test_buffer);
+	// ata_pio_write_sectors(0, 1, test_buffer);
 
-	ata_pio_read_sectors(test_buffer, 0, 1);
-	print_buffer();
+	// ata_pio_read_sectors(test_buffer, 0, 1);
+	// print_buffer();
 }
diff --git a/src/kernel/dri/fs/ext2/Jmk b/src/kernel/dri/fs/ext2/Jmk
new file mode 100644
index 0000000..b0da0c3
--- /dev/null
+++ b/src/kernel/dri/fs/ext2/Jmk
@@ -0,0 +1,17 @@
+init(ext2, ext2.a)
+
+preset(freestanding)
+preset(optimize)
+preset(debug)
+preset(32)
+preset(warn)
+
+archetype(c)
+
+CFLAGS += -I/include/kernel
+
+OBJECTS = ext2.o
+
+type(static_lib)
+
+finish
diff --git a/src/kernel/dri/fs/ext2/ext2.c b/src/kernel/dri/fs/ext2/ext2.c
new file mode 100644
index 0000000..eb6842b
--- /dev/null
+++ b/src/kernel/dri/fs/ext2/ext2.c
@@ -0,0 +1,7 @@
+#include <dri/fs/ext2/ext2.h>
+#include <kint.h>
+
+void ext2_mount(struct fs_node *where)
+{
+	// TODO
+}
diff --git a/src/kernel/dri/ide/ide.c b/src/kernel/dri/ide/ide.c
index b42873d..21f2651 100644
--- a/src/kernel/dri/ide/ide.c
+++ b/src/kernel/dri/ide/ide.c
@@ -14,9 +14,25 @@
     return dev->class == 1 && dev->subclass == 1;
 }
 
+void ide_print_device(struct ide_device *dev)
+{
+    kprintf("<ide-device dma=%b>", dev->supports_dma);
+}
+
 void ide_thread(struct ide_thread_data *data)
 {
     kprintf("IDE driver thread starting: device=0x%x\n", data->dev.device_id);
+
+    struct ide_device dev;
+
+    uchar p = data->dev.prog_if;
+    dev.channel_mode[0] = p & 1;
+    dev.channel_mode_modifiable[0] = p & (1 << 1);
+    dev.channel_mode[1] = p & (1 << 2);
+    dev.channel_mode_modifiable[1] = p & (1 << 3);
+    dev.supports_dma = p & (1 << 7);
+
+    ide_print_device(&dev);
 }
 
 void ide_init(struct pci_device dev, uchar bus, uchar slot, uchar func)
