From 5efe9479fe2d64624e32112d1a246865952d8a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 13 Jan 2007 19:55:14 +0000 Subject: [PATCH] ACPI boot menu item is for bios_ia32 added a kernel settings option to disable ACPI git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19791 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- data/settings/kernel/drivers/kernel | 2 ++ headers/private/kernel/safemode.h | 2 +- .../kernel/bus_managers/acpi/acpi_busman.c | 19 +++++++++++++++++++ src/system/boot/loader/menu.cpp | 4 ---- src/system/boot/platform/bios_ia32/menu.cpp | 5 +++++ 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/data/settings/kernel/drivers/kernel b/data/settings/kernel/drivers/kernel index 011245b83b..0849242f34 100644 --- a/data/settings/kernel/drivers/kernel +++ b/data/settings/kernel/drivers/kernel @@ -32,3 +32,5 @@ # APM (advanced power management) support # (system shutdown, battery info, ...) +#acpi true + # ACPI support diff --git a/headers/private/kernel/safemode.h b/headers/private/kernel/safemode.h index 9b6edb459a..7a7203a4c1 100644 --- a/headers/private/kernel/safemode.h +++ b/headers/private/kernel/safemode.h @@ -14,7 +14,7 @@ #define B_SAFEMODE_DISABLE_USER_ADD_ONS "disableuseraddons" #define B_SAFEMODE_DISABLE_IDE_DMA "disableidedma" -#define B_SAFEMODE_DISABLE_ACPI "disableacpi" +#define B_SAFEMODE_DISABLE_ACPI "disable_acpi" #define B_SAFEMODE_DISABLE_SMP "disable_smp" #define B_SAFEMODE_DISABLE_HYPER_THREADING "disable_hyperthreading" diff --git a/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c b/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c index 4494ac571d..9349cf7d1e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpi_busman.c @@ -63,6 +63,25 @@ acpi_std_ops(int32 op,...) switch(op) { case B_MODULE_INIT: + // check if safemode settings disable DMA + + settings = load_driver_settings("kernel"); + if (settings != NULL) { + acpiDisabled = !get_driver_boolean_parameter(settings, "acpi", true, true); + unload_driver_settings(settings); + } + + settings = load_driver_settings(B_SAFEMODE_DRIVER_SETTINGS); + if (settings != NULL) { + acpiDisabled = get_driver_boolean_parameter(settings, B_SAFEMODE_DISABLE_ACPI, + acpiDisabled, acpiDisabled); + unload_driver_settings(settings); + } + + if (acpiDisabled) { + ERROR("ACPI disabled"); + return ENOSYS; + } #ifdef ACPI_DEBUG_OUTPUT AcpiDbgLevel = ACPI_DEBUG_ALL | ACPI_LV_VERBOSE; diff --git a/src/system/boot/loader/menu.cpp b/src/system/boot/loader/menu.cpp index bcc6085f6f..0854037f95 100644 --- a/src/system/boot/loader/menu.cpp +++ b/src/system/boot/loader/menu.cpp @@ -444,10 +444,6 @@ add_safe_mode_menu() item->SetData(B_SAFEMODE_DISABLE_IDE_DMA); item->SetType(MENU_ITEM_MARKABLE); - safeMenu->AddItem(item = new(nothrow) MenuItem("Disable ACPI")); - item->SetData(B_SAFEMODE_DISABLE_ACPI); - item->SetType(MENU_ITEM_MARKABLE); - platform_add_menus(safeMenu); safeMenu->AddItem(item = new(nothrow) MenuItem("Enable on screen debug output")); diff --git a/src/system/boot/platform/bios_ia32/menu.cpp b/src/system/boot/platform/bios_ia32/menu.cpp index 69a2ee2f4a..aab74e3a3f 100644 --- a/src/system/boot/platform/bios_ia32/menu.cpp +++ b/src/system/boot/platform/bios_ia32/menu.cpp @@ -32,6 +32,11 @@ platform_add_menus(Menu *menu) item->SetType(MENU_ITEM_MARKABLE); item->SetData("disable_apm"); item->SetHelpText("This overrides the APM setting in the kernel settings file"); + + menu->AddItem(item = new(nothrow) MenuItem("Disable ACPI")); + item->SetType(MENU_ITEM_MARKABLE); + item->SetData(B_SAFEMODE_DISABLE_ACPI); + item->SetHelpText("This overrides the ACPI setting in the kernel settings file"); break; default: break;