All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	david@lang.hm, Andrew Morton <akpm@linux-foundation.org>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	Pavel Machek <pavel@ucw.cz>
Subject: [PATCH] ACPI: restore CONFIG_ACPI_SLEEP
Date: Sat, 28 Jul 2007 03:33:16 -0400	[thread overview]
Message-ID: <200707280333.16264.lenb@kernel.org> (raw)
In-Reply-To: <200707280330.26991.lenb@kernel.org>

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",

  reply	other threads:[~2007-07-28  7:33 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-25 16:38 [GIT PATCH] ACPI patches for 2.6.23-rc1 Len Brown
2007-07-25 16:49 ` Tino Keitel
2007-07-25 19:44   ` Len Brown
2007-07-25 18:48 ` Linus Torvalds
2007-07-25 22:51   ` Len Brown
2007-07-26  2:20     ` david
2007-07-26  4:26       ` Len Brown
2007-07-26  5:00         ` david
2007-07-26  6:55         ` Linus Torvalds
2007-07-26 17:45           ` Len Brown
2007-07-26 18:01             ` Linus Torvalds
2007-07-26 18:02             ` david
2007-07-26 18:16               ` Linus Torvalds
2007-07-26 18:27                 ` Jeff Garzik
2007-07-26 18:18               ` Len Brown
2007-07-26 19:17             ` CONFIG_SUSPEND? (was: Re: [GIT PATCH] ACPI patches for 2.6.23-rc1) Rafael J. Wysocki
2007-07-26 19:57               ` Linus Torvalds
2007-07-26 20:48                 ` Rafael J. Wysocki
2007-07-26 20:55                   ` Linus Torvalds
2007-07-27 22:25                     ` [2.6 patch] let SUSPEND select HOTPLUG_CPU Adrian Bunk
2007-07-27 22:47                       ` Stefan Richter
2007-07-27 23:03                         ` Adrian Bunk
2007-07-28  8:42                           ` Stefan Richter
2007-07-30 21:18                           ` Pavel Machek
2007-07-28 14:44                         ` Sergio Monteiro Basto
2007-07-27 22:57                       ` Linus Torvalds
2007-07-28  4:52                         ` [2.6 patch] SOFTWARE_SUSPEND: handle HOTPLUG_CPU automatically Adrian Bunk
2007-07-28  9:07                           ` Stefan Richter
2007-07-28 18:30                       ` [2.6 patch] let SUSPEND select HOTPLUG_CPU Rafael J. Wysocki
2007-07-28  7:30                     ` CONFIG_SUSPEND? (was: Re: [GIT PATCH] ACPI patches for 2.6.23-rc1) Len Brown
2007-07-28  7:33                       ` Len Brown [this message]
2007-07-28 16:25                       ` Linus Torvalds
2007-07-28 16:55                         ` Linus Torvalds
2007-07-28 18:29                           ` Rafael J. Wysocki
2007-07-28 18:31                             ` Linus Torvalds
2007-07-29 10:20                               ` [PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSPEND (was: CONFIG_SUSPEND?) Rafael J. Wysocki
2007-07-29 10:21                                 ` [PATCH 1/2] Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION Rafael J. Wysocki
2007-07-29 10:21                                 ` Rafael J. Wysocki
2007-07-29 12:38                                 ` [PATCH 2/2] Introduce CONFIG_SUSPEND Rafael J. Wysocki
2007-07-29 12:38                                 ` Rafael J. Wysocki
2007-07-29 20:40                                   ` Adrian Bunk
2007-07-29 20:40                                     ` Adrian Bunk
2007-07-29 21:17                                     ` Rafael J. Wysocki
2007-07-29 21:17                                       ` Rafael J. Wysocki
2007-07-29 21:18                                       ` Adrian Bunk
2007-07-29 21:18                                       ` Adrian Bunk
2007-07-29 21:18                                         ` Adrian Bunk
2007-07-29 21:36                                         ` Rafael J. Wysocki
2007-07-29 21:36                                         ` Rafael J. Wysocki
2007-07-29 21:36                                           ` Rafael J. Wysocki
2007-07-29 21:30                                           ` Richard Hughes
2007-07-29 21:30                                           ` Richard Hughes
2007-07-29 22:22                                             ` Rafael J. Wysocki
2007-07-29 22:22                                             ` Rafael J. Wysocki
2007-07-30 21:26                                               ` Pavel Machek
2007-07-30 21:26                                               ` Pavel Machek
2007-07-30  2:47                                             ` Kyle Moffett
2007-07-30  2:47                                             ` Kyle Moffett
2007-07-29 21:17                                     ` Rafael J. Wysocki
2007-07-29 20:40                                   ` Adrian Bunk
2007-07-29 21:23                                 ` [PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSPEND (updated) Rafael J. Wysocki
2007-07-29 21:24                                   ` [PATCH 1/2] Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION (updated) Rafael J. Wysocki
2007-07-29 21:24                                   ` Rafael J. Wysocki
2007-07-29 21:27                                   ` [PATCH 2/2] Introduce CONFIG_SUSPEND (updated) Rafael J. Wysocki
2007-07-29 21:27                                   ` Rafael J. Wysocki
2007-07-31  4:59                                     ` Len Brown
2007-07-31  4:59                                       ` Len Brown
2007-07-31  9:15                                       ` Rafael J. Wysocki
2007-07-31  9:16                                         ` Oliver Neukum
2007-07-31  9:16                                         ` [linux-pm] " Oliver Neukum
2007-07-31 10:01                                           ` Rafael J. Wysocki
2007-07-31 10:01                                           ` Rafael J. Wysocki
2007-07-31  9:15                                       ` Rafael J. Wysocki
2007-07-30  0:21                                   ` [PATCH 0/2] Introduce CONFIG_HIBERNATION and " Linus Torvalds
2007-07-30  0:21                                     ` Linus Torvalds
2007-07-30  7:25                                     ` Rafael J. Wysocki
2007-07-30  7:25                                     ` Rafael J. Wysocki
2007-07-31  3:54                                     ` Len Brown
2007-07-31  3:54                                     ` Len Brown
2007-07-31  3:54                                     ` [PATCH] create CONFIG_SUSPEND_UP_POSSIBLE Len Brown
2007-07-31  6:38                                       ` Pavel Machek
2007-07-31  9:33                                         ` Rafael J. Wysocki
2007-07-31  9:33                                         ` Rafael J. Wysocki
2007-08-03 19:23                                         ` Len Brown
2007-08-05 18:36                                           ` Pavel Machek
2007-08-05 18:36                                           ` Pavel Machek
2007-08-03 19:23                                         ` Len Brown
2007-07-31  6:38                                       ` Pavel Machek
2007-07-31  3:54                                     ` Len Brown
2007-08-01  3:27                                     ` [PATCH] ACPI: delete CONFIG_ACPI_PROCFS_SLEEP (again) Len Brown
2007-08-01  3:27                                       ` Len Brown
2007-08-01 10:24                                       ` Rafael J. Wysocki
2007-08-01 10:24                                       ` Rafael J. Wysocki
2007-07-29 21:23                                 ` [PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSPEND (updated) Rafael J. Wysocki
2007-07-29 10:20                               ` [PATCH 0/2] Introduce CONFIG_HIBERNATION and CONFIG_SUSPEND (was: CONFIG_SUSPEND?) Rafael J. Wysocki
2007-07-31  3:53                           ` CONFIG_SUSPEND? (was: Re: [GIT PATCH] ACPI patches for 2.6.23-rc1) Len Brown
2007-07-31  4:09                             ` david
2007-07-31  6:33                               ` Pavel Machek
2007-07-26 10:07         ` [GIT PATCH] ACPI patches for 2.6.23-rc1 Gabriel C
2007-07-26 18:05           ` Len Brown
2007-07-26 18:18             ` Linus Torvalds
2007-07-26 18:38             ` Gabriel C
2007-07-26 18:53             ` defconfig , ACPI=n compile error Gabriel C
2007-07-26  7:02     ` [GIT PATCH] ACPI patches for 2.6.23-rc1 Linus Torvalds
2007-07-27  6:26 ` Jan Dittmer
2007-07-27 16:25   ` Thomas Renninger
2007-07-27 23:07     ` Adrian Bunk
2007-07-27 23:07       ` Adrian Bunk
2007-07-27 23:41       ` Andreas Schwab
2007-07-27 23:41         ` Andreas Schwab
     [not found]       ` <617E1C2C70743745A92448908E030B2A0209BB9D@scsmsx411.amr.corp.intel.com>
2007-07-28  1:39         ` scripts/mod/file2alias.c cross compile problem Adrian Bunk
2007-07-28  1:39           ` Adrian Bunk
2007-08-02 15:09           ` Thomas Renninger
2007-08-02 15:09             ` Thomas Renninger
2007-08-02 16:25             ` Luck, Tony
2007-08-02 16:25               ` Luck, Tony
2007-08-02 16:25               ` Luck, Tony
2007-08-02 16:36               ` Andreas Schwab
2007-08-02 16:36                 ` Andreas Schwab
2007-08-02 16:36                 ` Andreas Schwab
2007-08-02 17:40                 ` Luck, Tony
2007-08-02 17:40                   ` Luck, Tony
2007-08-02 17:40                   ` Luck, Tony
2007-08-02 18:09                   ` Sam Ravnborg
2007-08-02 18:09                     ` Sam Ravnborg
2007-08-02 19:15                     ` Adrian Bunk
2007-08-02 19:15                       ` Adrian Bunk
2007-08-02 19:24                       ` Sam Ravnborg
2007-08-02 19:24                         ` Sam Ravnborg
2007-08-02 19:39                         ` Al Viro
2007-08-02 19:39                           ` Al Viro
2007-08-02 22:08               ` Rusty Russell
2007-08-02 22:08                 ` Rusty Russell
2007-08-02 23:03                 ` Adrian Bunk
2007-08-02 23:03                   ` Adrian Bunk
2007-08-16 14:27                 ` Thomas Renninger
2007-08-16 14:27                   ` Thomas Renninger
2007-08-16 16:26                   ` Luck, Tony
2007-08-16 16:26                     ` Luck, Tony
2007-08-16 16:26                     ` Luck, Tony
2007-08-16 17:03                     ` Thomas Renninger
2007-08-16 17:03                       ` Thomas Renninger
2007-07-27 23:50   ` [GIT PATCH] ACPI patches for 2.6.23-rc1 Andreas Schwab
2007-07-27 23:50     ` Andreas Schwab
2007-07-28  7:58     ` Jan Dittmer
2007-08-01  1:34       ` Yasha Okshtein

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200707280333.16264.lenb@kernel.org \
    --to=lenb@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=david@lang.hm \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rjw@sisk.pl \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.