AHCI - Add kenv "boot.hint.ahci_disabled", and add a boot menu option for it
authorMatthew Dillon <dillon@apollo.backplane.com>
Sun, 14 Jun 2009 22:30:53 +0000 (15:30 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 14 Jun 2009 22:30:53 +0000 (15:30 -0700)
* Setting the variable "boot.hint.ahci_disabled" in the boot loader will
  disable the AHCI driver's probe, causing AHCI devices to fall back to
  the NATA driver.

* The boot menu now has an option to boot with the AHCI driver disabled.

sys/boot/forth/beastie.4th
sys/dev/disk/ahci/ahci_dragonfly.c

index 5e72222..eb26674 100644 (file)
@@ -43,6 +43,7 @@ variable bootkey
 variable bootacpikey
 variable bootsafekey
 variable bootverbosekey
+variable bootahcikey
 variable bootsinglekey
 variable escapekey
 variable rebootkey
@@ -160,6 +161,7 @@ variable rebootkey
        printmenuitem ."  Boot DragonFly in Safe Mode" bootsafekey !
        printmenuitem ."  Boot DragonFly in single user mode" bootsinglekey !
        printmenuitem ."  Boot DragonFly with verbose logging" bootverbosekey !
+       printmenuitem ."  Boot DragonFly without AHCI driver " bootahcikey !
        printmenuitem ."  Escape to loader prompt" escapekey !
        printmenuitem ."  Reboot" rebootkey !
        menuX @ 20 at-xy
@@ -241,6 +243,10 @@ set-current
                        s" YES" s" boot_verbose" setenv
                        0 boot
                then
+               dup bootahcikey @ = if
+                       s" YES" s" hint.ahci.disabled" setenv
+                       0 boot
+               then
                dup bootsinglekey @ = if
                        s" YES" s" boot_single" setenv
                        0 boot
index 90a8b8c..28cddf4 100644 (file)
@@ -86,6 +86,9 @@ ahci_probe (device_t dev)
 {
        const struct ahci_device *ad;
 
+       if (kgetenv("hint.ahci.disabled"))
+               return(ENXIO);
+
        ad = ahci_lookup_device(dev);
        if (ad) {
                device_set_desc(dev, ad->name);