Browse Source

Kernel: Allow disabling of IDE controllers with disable_ide

The kernel doesn't like the IDE controllers on an Asus A7N8X-E Deluxe
motherboard, so add an option to disable them.
Jean-Baptiste Boric 4 years ago
parent
commit
4d755725bf
1 changed files with 8 additions and 5 deletions
  1. 8 5
      Kernel/Storage/StorageManagement.cpp

+ 8 - 5
Kernel/Storage/StorageManagement.cpp

@@ -25,6 +25,7 @@
  */
 
 #include <AK/UUID.h>
+#include <Kernel/CommandLine.h>
 #include <Kernel/Devices/BlockDevice.h>
 #include <Kernel/FileSystem/Ext2FileSystem.h>
 #include <Kernel/PCI/Access.h>
@@ -60,11 +61,13 @@ bool StorageManagement::boot_argument_contains_partition_uuid()
 NonnullRefPtrVector<StorageController> StorageManagement::enumerate_controllers(bool force_pio) const
 {
     NonnullRefPtrVector<StorageController> controllers;
-    PCI::enumerate([&](const PCI::Address& address, PCI::ID) {
-        if (PCI::get_class(address) == 0x1 && PCI::get_subclass(address) == 0x1) {
-            controllers.append(IDEController::initialize(address, force_pio));
-        }
-    });
+    if (!kernel_command_line().contains("disable_ide")) {
+        PCI::enumerate([&](const PCI::Address& address, PCI::ID) {
+            if (PCI::get_class(address) == 0x1 && PCI::get_subclass(address) == 0x1) {
+                controllers.append(IDEController::initialize(address, force_pio));
+            }
+        });
+    }
     controllers.append(RamdiskController::initialize());
     return controllers;
 }