[PATCH] ACPI: restore CONFIG_ACPI_SLEEP

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Linus Torvalds <torvalds@...>
Cc: Rafael J. Wysocki <rjw@...>, <david@...>, Andrew Morton <akpm@...>, <linux-acpi@...>, <linux-kernel@...>, Pavel Machek <pavel@...>
Date: Saturday, July 28, 2007 - 3:33 am

From: Len Brown <len.brown@intel.com>

Restore the 2.6.22 CONFIG_ACPI_SLEEP build option,
with a few differences:
1. selects HOTPLUG_CPU rather than depends on HOTPLUG_CPU.
2. ACPI_SLEEP can be enabled on IA64

Disabling this option shrinks the kernel by 16KB.

Disabling this option on SMP allows the user to
deselect HOTPLUG_CPU and save an addition 18KB.

Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/i386/kernel/acpi/Makefile   |    2 +-
 arch/i386/kernel/setup.c         |    2 +-
 arch/x86_64/kernel/acpi/Makefile |    2 +-
 arch/x86_64/kernel/head.S        |    2 +-
 arch/x86_64/kernel/setup.c       |    2 +-
 drivers/acpi/Kconfig             |   17 +++++++++++++++++
 drivers/acpi/sleep/Makefile      |    4 ++--
 drivers/acpi/sleep/poweroff.c    |    2 ++
 drivers/acpi/sleep/proc.c        |    2 +-
 drivers/pci/pci-acpi.c           |    4 ++++
 drivers/pnp/pnpacpi/core.c       |    4 ++++
 include/acpi/acpi_drivers.h      |    4 ++++
 kernel/sysctl.c                  |    2 +-
 13 files changed, 40 insertions(+), 9 deletions(-)


diff --git a/arch/i386/kernel/acpi/Makefile b/arch/i386/kernel/acpi/Makefile
index 223f58f..7f7be01 100644
--- a/arch/i386/kernel/acpi/Makefile
+++ b/arch/i386/kernel/acpi/Makefile
@@ -2,7 +2,7 @@ obj-$(CONFIG_ACPI)		+= boot.o
 ifneq ($(CONFIG_PCI),)
 obj-$(CONFIG_X86_IO_APIC)	+= earlyquirk.o
 endif
-obj-$(CONFIG_ACPI)		+= sleep.o wakeup.o
+obj-$(CONFIG_ACPI_SLEEP)	+= sleep.o wakeup.o
 
 ifneq ($(CONFIG_ACPI_PROCESSOR),)
 obj-y				+= cstate.o processor.o
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 7fe5da3..d474cd6 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -422,7 +422,7 @@ void __init setup_bootmem_allocator(void)
 	 */
 	reserve_bootmem(PAGE_SIZE, PAGE_SIZE);
 #endif
-#ifdef CONFIG_ACPI
+#ifdef CONFIG_ACPI_SLEEP
 	/*
 	 * Reserve low memory region for sleep support.
 	 */
diff --git a/arch/x86_64/kernel/acpi/Makefile b/arch/x86_64/kernel/acpi/Makefile
index 17595d2..080b996 100644
--- a/arch/x86_64/kernel/acpi/Makefile
+++ b/arch/x86_64/kernel/acpi/Makefile
@@ -1,6 +1,6 @@
 obj-y			:= boot.o
 boot-y			:= ../../../i386/kernel/acpi/boot.o
-obj-y			+= sleep.o wakeup.o
+obj-$(CONFIG_ACPI_SLEEP)	+= sleep.o wakeup.o
 
 ifneq ($(CONFIG_ACPI_PROCESSOR),)
 obj-y			+= processor.o
diff --git a/arch/x86_64/kernel/head.S b/arch/x86_64/kernel/head.S
index 3a16e41..e89abcd 100644
--- a/arch/x86_64/kernel/head.S
+++ b/arch/x86_64/kernel/head.S
@@ -120,7 +120,7 @@ ident_complete:
 	addq	%rbp, trampoline_level4_pgt + 0(%rip)
 	addq	%rbp, trampoline_level4_pgt + (511*8)(%rip)
 #endif
-#ifdef CONFIG_ACPI
+#ifdef CONFIG_ACPI_SLEEP
 	addq	%rbp, wakeup_level4_pgt + 0(%rip)
 	addq	%rbp, wakeup_level4_pgt + (511*8)(%rip)
 #endif
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index 0f400f3..af838f6 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -333,7 +333,7 @@ void __init setup_arch(char **cmdline_p)
 	reserve_bootmem_generic(SMP_TRAMPOLINE_BASE, 2*PAGE_SIZE);
 #endif
 
-#ifdef CONFIG_ACPI
+#ifdef CONFIG_ACPI_SLEEP
        /*
         * Reserve low memory region for sleep support.
         */
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 22b401b..f38db44 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -42,6 +42,23 @@ menuconfig ACPI
 
 if ACPI
 
+config ACPI_SLEEP
+	bool "ACPI hooks for system sleep and wakeup"
+	select HOTPLUG_CPU if X86 && SMP
+	select SUSPEND_SMP if X86 && SMP
+	default X86
+	---help---
+	  Say Y to include ACPI hooks for system sleep and wakeup.
+	  This options is needed for suspend to RAM on ACPI-enabled
+	  machines, for it includes the wakup vector support,
+	  as well as wakeup-device support.
+
+	  System Hibernate to disk can function without this option,
+	  but wakeup devices may work better with it.
+
+	  Disabling ACPI_SLEEP saves about 16 KB, and allows
+	  disabling HOTPLUG_CPU, which saves an additional 18 KB.
+
 config ACPI_PROCFS
 	bool "Deprecated /proc/acpi files"
 	depends on PROC_FS
diff --git a/drivers/acpi/sleep/Makefile b/drivers/acpi/sleep/Makefile
index 01a993a..195a4f6 100644
--- a/drivers/acpi/sleep/Makefile
+++ b/drivers/acpi/sleep/Makefile
@@ -1,5 +1,5 @@
 obj-y					:= poweroff.o wakeup.o
-obj-y					+= main.o
-obj-$(CONFIG_X86)			+= proc.o
+obj-$(CONFIG_ACPI_SLEEP)		+= main.o
+obj-$(CONFIG_ACPI_SLEEP)		+= proc.o
 
 EXTRA_CFLAGS += $(ACPI_CFLAGS)
diff --git a/drivers/acpi/sleep/poweroff.c b/drivers/acpi/sleep/poweroff.c
index b3f68ef..39e40d5 100644
--- a/drivers/acpi/sleep/poweroff.c
+++ b/drivers/acpi/sleep/poweroff.c
@@ -18,6 +18,7 @@
 
 int acpi_sleep_prepare(u32 acpi_state)
 {
+#ifdef CONFIG_ACPI_SLEEP
 	/* do we have a wakeup address for S2 and S3? */
 	if (acpi_state == ACPI_STATE_S3) {
 		if (!acpi_wakeup_address) {
@@ -30,6 +31,7 @@ int acpi_sleep_prepare(u32 acpi_state)
 	}
 	ACPI_FLUSH_CPU_CACHE();
 	acpi_enable_wakeup_device_prep(acpi_state);
+#endif
 	acpi_gpe_sleep_prepare(acpi_state);
 	acpi_enter_sleep_state_prep(acpi_state);
 	return 0;
diff --git a/drivers/acpi/sleep/proc.c b/drivers/acpi/sleep/proc.c
index ed58e11..25b87ad 100644
--- a/drivers/acpi/sleep/proc.c
+++ b/drivers/acpi/sleep/proc.c
@@ -78,7 +78,7 @@ acpi_system_write_sleep(struct file *file,
 }
 #endif				/* CONFIG_ACPI_PROCFS */
 
-#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE)
+#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || !defined(CONFIG_X86)
 /* use /sys/class/rtc/rtcX/wakealarm instead; it's not ACPI-specific */
 #else
 #define	HAVE_ACPI_LEGACY_ALARM
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index 67c63d1..5c6a5d0 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -220,6 +220,7 @@ acpi_status pci_osc_control_set(acpi_handle handle, u32 flags)
 }
 EXPORT_SYMBOL(pci_osc_control_set);
 
+#ifdef CONFIG_ACPI_SLEEP
 /*
  * _SxD returns the D-state with the highest power
  * (lowest D-state number) supported in the S-state "x".
@@ -267,6 +268,7 @@ static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev,
 	}
 	return PCI_POWER_ERROR;
 }
+#endif
 
 static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state)
 {
@@ -340,7 +342,9 @@ static int __init acpi_pci_init(void)
 	ret = register_acpi_bus_type(&acpi_pci_bus);
 	if (ret)
 		return 0;
+#ifdef	CONFIG_ACPI_SLEEP
 	platform_pci_choose_state = acpi_pci_choose_state;
+#endif
 	platform_pci_set_power_state = acpi_pci_set_power_state;
 	return 0;
 }
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
index 6a2a3c2..616fc72 100644
--- a/drivers/pnp/pnpacpi/core.c
+++ b/drivers/pnp/pnpacpi/core.c
@@ -127,6 +127,7 @@ static int pnpacpi_disable_resources(struct pnp_dev *dev)
 	return ACPI_FAILURE(status) ? -ENODEV : 0;
 }
 
+#ifdef CONFIG_ACPI_SLEEP
 static int pnpacpi_suspend(struct pnp_dev *dev, pm_message_t state)
 {
 	return acpi_bus_set_power((acpi_handle) dev->data,
@@ -140,14 +141,17 @@ static int pnpacpi_resume(struct pnp_dev *dev)
 {
 	return acpi_bus_set_power((acpi_handle) dev->data, ACPI_STATE_D0);
 }
+#endif
 
 static struct pnp_protocol pnpacpi_protocol = {
 	.name	 = "Plug and Play ACPI",
 	.get	 = pnpacpi_get_resources,
 	.set	 = pnpacpi_set_resources,
 	.disable = pnpacpi_disable_resources,
+#ifdef CONFIG_ACPI_SLEEP
 	.suspend = pnpacpi_suspend,
 	.resume = pnpacpi_resume,
+#endif
 };
 
 static int __init pnpacpi_add_device(struct acpi_device *device)
diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h
index f85f77a..202acb9 100644
--- a/include/acpi/acpi_drivers.h
+++ b/include/acpi/acpi_drivers.h
@@ -147,6 +147,10 @@ static inline void unregister_hotplug_dock_device(acpi_handle handle)
 /*--------------------------------------------------------------------------
                                   Suspend/Resume
   -------------------------------------------------------------------------- */
+#ifdef CONFIG_ACPI_SLEEP
 extern int acpi_sleep_init(void);
+#else
+static inline int acpi_sleep_init(void) { return 0; }
+#endif
 
 #endif /*__ACPI_DRIVERS_H__*/
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index eb26f2b..79c891e 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -689,7 +689,7 @@ static ctl_table kern_table[] = {
 		.proc_handler	= &proc_dointvec,
 	},
 #endif
-#if defined(CONFIG_ACPI) && defined(CONFIG_X86)
+#if	defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
 	{
 		.ctl_name	= KERN_ACPI_VIDEO_FLAGS,
 		.procname	= "acpi_video_flags",
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[GIT PATCH] ACPI patches for 2.6.23-rc1, Len Brown, (Wed Jul 25, 12:38 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Linus Torvalds, (Wed Jul 25, 2:48 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Len Brown, (Wed Jul 25, 6:51 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Len Brown, (Thu Jul 26, 12:26 am)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Linus Torvalds, (Thu Jul 26, 2:55 am)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Len Brown, (Thu Jul 26, 1:45 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Linus Torvalds, (Thu Jul 26, 2:16 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Jeff Garzik, (Thu Jul 26, 2:27 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Len Brown, (Thu Jul 26, 2:18 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Linus Torvalds, (Thu Jul 26, 2:01 pm)
CONFIG_SUSPEND? (was: Re: [GIT PATCH] ACPI patches for 2.6.2..., Rafael J. Wysocki, (Thu Jul 26, 3:17 pm)
Re: CONFIG_SUSPEND? (was: Re: [GIT PATCH] ACPI patches for 2..., Rafael J. Wysocki, (Thu Jul 26, 4:48 pm)
Re: CONFIG_SUSPEND? (was: Re: [GIT PATCH] ACPI patches for 2..., Rafael J. Wysocki, (Sat Jul 28, 2:29 pm)
[PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSPEND ..., Rafael J. Wysocki, (Sun Jul 29, 6:20 am)
[PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSPEND ..., Rafael J. Wysocki, (Sun Jul 29, 5:23 pm)
Re: [PATCH] ACPI: delete CONFIG_ACPI_PROCFS_SLEEP (again), Rafael J. Wysocki, (Wed Aug 1, 6:24 am)
[PATCH] create CONFIG_SUSPEND_UP_POSSIBLE, Len Brown, (Mon Jul 30, 11:54 pm)
Re: [PATCH] create CONFIG_SUSPEND_UP_POSSIBLE, Pavel Machek, (Tue Jul 31, 2:38 am)
Re: [PATCH] create CONFIG_SUSPEND_UP_POSSIBLE, Len Brown, (Fri Aug 3, 3:23 pm)
Re: [PATCH] create CONFIG_SUSPEND_UP_POSSIBLE, Pavel Machek, (Sun Aug 5, 2:36 pm)
Re: [PATCH] create CONFIG_SUSPEND_UP_POSSIBLE, Rafael J. Wysocki, (Tue Jul 31, 5:33 am)
Re: [PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSP..., Rafael J. Wysocki, (Mon Jul 30, 3:25 am)
[PATCH 2/2] Introduce CONFIG_SUSPEND (updated), Rafael J. Wysocki, (Sun Jul 29, 5:27 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND (updated), Len Brown, (Tue Jul 31, 12:59 am)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND (updated), Rafael J. Wysocki, (Tue Jul 31, 5:15 am)
Re: [linux-pm] Re: [PATCH 2/2] Introduce CONFIG_SUSPEND (upd..., Rafael J. Wysocki, (Tue Jul 31, 6:01 am)
[PATCH 1/2] Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBE..., Rafael J. Wysocki, (Sun Jul 29, 5:24 pm)
[PATCH 2/2] Introduce CONFIG_SUSPEND, Rafael J. Wysocki, (Sun Jul 29, 8:38 am)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Adrian Bunk, (Sun Jul 29, 4:40 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Rafael J. Wysocki, (Sun Jul 29, 5:17 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Adrian Bunk, (Sun Jul 29, 5:18 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Rafael J. Wysocki, (Sun Jul 29, 5:36 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Richard Hughes, (Sun Jul 29, 5:30 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Kyle Moffett, (Sun Jul 29, 10:47 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Rafael J. Wysocki, (Sun Jul 29, 6:22 pm)
Re: [PATCH 2/2] Introduce CONFIG_SUSPEND, Pavel Machek, (Mon Jul 30, 5:26 pm)
[PATCH 1/2] Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBE..., Rafael J. Wysocki, (Sun Jul 29, 6:21 am)
[PATCH] ACPI: restore CONFIG_ACPI_SLEEP, Len Brown, (Sat Jul 28, 3:33 am)
[2.6 patch] let SUSPEND select HOTPLUG_CPU, Adrian Bunk, (Fri Jul 27, 6:25 pm)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Linus Torvalds, (Fri Jul 27, 6:57 pm)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Stefan Richter, (Fri Jul 27, 6:47 pm)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Adrian Bunk, (Fri Jul 27, 7:03 pm)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Pavel Machek, (Mon Jul 30, 5:18 pm)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Stefan Richter, (Sat Jul 28, 4:42 am)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Sergio Monteiro Basto, (Sat Jul 28, 10:44 am)
Re: [2.6 patch] let SUSPEND select HOTPLUG_CPU, Rafael J. Wysocki, (Sat Jul 28, 2:30 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Gabriel C, (Thu Jul 26, 6:07 am)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Len Brown, (Thu Jul 26, 2:05 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Linus Torvalds, (Thu Jul 26, 2:18 pm)
Re: defconfig , ACPI=n compile error, Gabriel C, (Thu Jul 26, 2:53 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Gabriel C, (Thu Jul 26, 2:38 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Linus Torvalds, (Thu Jul 26, 3:02 am)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Jan Dittmer, (Fri Jul 27, 2:26 am)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Andreas Schwab, (Fri Jul 27, 7:50 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Jan Dittmer, (Sat Jul 28, 3:58 am)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Yasha Okshtein, (Tue Jul 31, 9:34 pm)
Re: [GIT PATCH] ACPI patches for 2.6.23-rc1, Thomas Renninger, (Fri Jul 27, 12:25 pm)