diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 31e65ea3e1ce027feb876166166a5be1de71d28d..51984cc6cf8fa2f0b6f88d2c467200f013fca427 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -1830,16 +1830,19 @@ static int __init acpi_init (void)
 
 	result = acpi_bus_init();
 
-#ifdef CONFIG_PM
 	if (!result) {
+#ifdef CONFIG_PM
 		if (!PM_IS_ACTIVE())
 			pm_active = 1;
 		else {
 			printk(KERN_INFO PREFIX "APM is already active, exiting\n");
+			acpi_disabled = 1;
 			result = -ENODEV;
 		}
-	}
 #endif
+	} else
+		acpi_disabled = 1;
+
 	return_VALUE(result);
 }
 
diff --git a/drivers/acpi/debug.c b/drivers/acpi/debug.c
index d114b54307eecccbaa0b95025e932c7190469c0b..425068e488301ea930a26a8ba5e04be09d5690c6 100644
--- a/drivers/acpi/debug.c
+++ b/drivers/acpi/debug.c
@@ -90,6 +90,9 @@ static int __init acpi_debug_init(void)
 
 	ACPI_FUNCTION_TRACE("acpi_debug_init");
 
+	if (acpi_disabled)
+		return_VALUE(0);
+
 	/* 'debug_layer' [R/W] */
 	name = ACPI_SYSTEM_FILE_DEBUG_LAYER;
 	entry = create_proc_read_entry(name, S_IFREG|S_IRUGO|S_IWUSR, acpi_root_dir,
diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c
index c0562a0f545af5e4ba808682d5a60e692649fd4b..619e61f18d7b30b6d99e5de4385434a17649f421 100644
--- a/drivers/acpi/event.c
+++ b/drivers/acpi/event.c
@@ -122,6 +122,9 @@ static int __init acpi_event_init(void)
 
 	ACPI_FUNCTION_TRACE("acpi_event_init");
 
+	if (acpi_disabled)
+		return_VALUE(0);
+
 	/* 'event' [R] */
 	entry = create_proc_entry("event", S_IRUSR, acpi_root_dir);
 	if (entry)
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 00ded80ac5bc83f35b4ba30441448e75089c5f3d..3b8b15bad3708d8d4e3792256f2cc20370ee73e1 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -658,6 +658,9 @@ static int __init acpi_sleep_init(void)
 
 	ACPI_FUNCTION_TRACE("acpi_system_add_fs");
 
+	if (acpi_disabled)
+		return_VALUE(0);
+
 	printk(KERN_INFO PREFIX "(supports");
 	for (i=0; i<ACPI_S_STATE_COUNT; i++) {
 		u8 type_a, type_b;
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c
index d417a4d71190dcf0753b7e7370484ef1d55f7996..b95d5d1bbdc7780b496be3115be9b0ccb387f985 100644
--- a/drivers/acpi/system.c
+++ b/drivers/acpi/system.c
@@ -163,6 +163,9 @@ static int __init acpi_system_init (void)
 
 	ACPI_FUNCTION_TRACE("acpi_system_init");
 
+	if (acpi_disabled)
+		return_VALUE(0);
+
 	/* 'info' [R] */
 	name = ACPI_SYSTEM_FILE_INFO;
 	entry = create_proc_read_entry(name,