提交 1e1f3f24 编写于 作者: L Len Brown

Pull kconfig into release branch

...@@ -2,7 +2,7 @@ obj-$(CONFIG_ACPI) += boot.o ...@@ -2,7 +2,7 @@ obj-$(CONFIG_ACPI) += boot.o
ifneq ($(CONFIG_PCI),) ifneq ($(CONFIG_PCI),)
obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o
endif endif
obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o obj-$(CONFIG_ACPI) += sleep.o wakeup.o
ifneq ($(CONFIG_ACPI_PROCESSOR),) ifneq ($(CONFIG_ACPI_PROCESSOR),)
obj-y += cstate.o processor.o obj-y += cstate.o processor.o
......
...@@ -422,7 +422,7 @@ void __init setup_bootmem_allocator(void) ...@@ -422,7 +422,7 @@ void __init setup_bootmem_allocator(void)
*/ */
reserve_bootmem(PAGE_SIZE, PAGE_SIZE); reserve_bootmem(PAGE_SIZE, PAGE_SIZE);
#endif #endif
#ifdef CONFIG_ACPI_SLEEP #ifdef CONFIG_ACPI
/* /*
* Reserve low memory region for sleep support. * Reserve low memory region for sleep support.
*/ */
......
...@@ -432,7 +432,7 @@ static void __init pagetable_init (void) ...@@ -432,7 +432,7 @@ static void __init pagetable_init (void)
paravirt_pagetable_setup_done(pgd_base); paravirt_pagetable_setup_done(pgd_base);
} }
#if defined(CONFIG_SOFTWARE_SUSPEND) || defined(CONFIG_ACPI_SLEEP) #if defined(CONFIG_SOFTWARE_SUSPEND) || defined(CONFIG_ACPI)
/* /*
* Swap suspend & friends need this for resume because things like the intel-agp * Swap suspend & friends need this for resume because things like the intel-agp
* driver might have split up a kernel 4MB mapping. * driver might have split up a kernel 4MB mapping.
......
...@@ -67,6 +67,8 @@ EXPORT_SYMBOL(pm_power_off); ...@@ -67,6 +67,8 @@ EXPORT_SYMBOL(pm_power_off);
unsigned int acpi_cpei_override; unsigned int acpi_cpei_override;
unsigned int acpi_cpei_phys_cpuid; unsigned int acpi_cpei_phys_cpuid;
unsigned long acpi_wakeup_address = 0;
const char __init * const char __init *
acpi_get_sysname(void) acpi_get_sysname(void)
{ {
...@@ -986,4 +988,21 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base) ...@@ -986,4 +988,21 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base)
EXPORT_SYMBOL(acpi_unregister_ioapic); EXPORT_SYMBOL(acpi_unregister_ioapic);
/*
* acpi_save_state_mem() - save kernel state
*
* TBD when when IA64 starts to support suspend...
*/
int acpi_save_state_mem(void) { return 0; }
/*
* acpi_restore_state()
*/
void acpi_restore_state_mem(void) {}
/*
* do_suspend_lowlevel()
*/
void do_suspend_lowlevel(void) {}
#endif /* CONFIG_ACPI */ #endif /* CONFIG_ACPI */
obj-y := boot.o obj-y := boot.o
boot-y := ../../../i386/kernel/acpi/boot.o boot-y := ../../../i386/kernel/acpi/boot.o
obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o obj-y += sleep.o wakeup.o
ifneq ($(CONFIG_ACPI_PROCESSOR),) ifneq ($(CONFIG_ACPI_PROCESSOR),)
obj-y += processor.o obj-y += processor.o
......
...@@ -51,8 +51,6 @@ ...@@ -51,8 +51,6 @@
Low-Level Sleep Support Low-Level Sleep Support
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
#ifdef CONFIG_ACPI_SLEEP
/* address in low memory of the wakeup routine. */ /* address in low memory of the wakeup routine. */
unsigned long acpi_wakeup_address = 0; unsigned long acpi_wakeup_address = 0;
unsigned long acpi_realmode_flags; unsigned long acpi_realmode_flags;
...@@ -117,8 +115,6 @@ static int __init acpi_sleep_setup(char *str) ...@@ -117,8 +115,6 @@ static int __init acpi_sleep_setup(char *str)
__setup("acpi_sleep=", acpi_sleep_setup); __setup("acpi_sleep=", acpi_sleep_setup);
#endif /*CONFIG_ACPI_SLEEP */
void acpi_pci_link_exit(void) void acpi_pci_link_exit(void)
{ {
} }
...@@ -120,7 +120,7 @@ ident_complete: ...@@ -120,7 +120,7 @@ ident_complete:
addq %rbp, trampoline_level4_pgt + 0(%rip) addq %rbp, trampoline_level4_pgt + 0(%rip)
addq %rbp, trampoline_level4_pgt + (511*8)(%rip) addq %rbp, trampoline_level4_pgt + (511*8)(%rip)
#endif #endif
#ifdef CONFIG_ACPI_SLEEP #ifdef CONFIG_ACPI
addq %rbp, wakeup_level4_pgt + 0(%rip) addq %rbp, wakeup_level4_pgt + 0(%rip)
addq %rbp, wakeup_level4_pgt + (511*8)(%rip) addq %rbp, wakeup_level4_pgt + (511*8)(%rip)
#endif #endif
......
...@@ -333,7 +333,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -333,7 +333,7 @@ void __init setup_arch(char **cmdline_p)
reserve_bootmem_generic(SMP_TRAMPOLINE_BASE, 2*PAGE_SIZE); reserve_bootmem_generic(SMP_TRAMPOLINE_BASE, 2*PAGE_SIZE);
#endif #endif
#ifdef CONFIG_ACPI_SLEEP #ifdef CONFIG_ACPI
/* /*
* Reserve low memory region for sleep support. * Reserve low memory region for sleep support.
*/ */
......
...@@ -11,6 +11,9 @@ menuconfig ACPI ...@@ -11,6 +11,9 @@ menuconfig ACPI
depends on PCI depends on PCI
depends on PM depends on PM
select PNP select PNP
# for sleep
select HOTPLUG_CPU if X86 && SMP
select SUSPEND_SMP if X86 && SMP
default y default y
---help--- ---help---
Advanced Configuration and Power Interface (ACPI) support for Advanced Configuration and Power Interface (ACPI) support for
...@@ -42,51 +45,26 @@ menuconfig ACPI ...@@ -42,51 +45,26 @@ menuconfig ACPI
if ACPI if ACPI
config ACPI_SLEEP
bool "Sleep States"
depends on X86 && (!SMP || SUSPEND_SMP)
default y
---help---
This option adds support for ACPI suspend states.
With this option, you will be able to put the system "to sleep".
Sleep states are low power states for the system and devices. All
of the system operating state is saved to either memory or disk
(depending on the state), to allow the system to resume operation
quickly at your request.
Although this option sounds really nifty, barely any of the device
drivers have been converted to the new driver model and hence few
have proper power management support.
This option is not recommended for anyone except those doing driver
power management development.
config ACPI_SLEEP_PROC_FS
bool
depends on ACPI_SLEEP && PROC_FS
default y
config ACPI_SLEEP_PROC_SLEEP
bool "/proc/acpi/sleep (deprecated)"
depends on ACPI_SLEEP_PROC_FS
default n
---help---
Create /proc/acpi/sleep
Deprecated by /sys/power/state
config ACPI_PROCFS config ACPI_PROCFS
bool "Procfs interface (deprecated)" bool "Deprecated /proc/acpi files"
default y depends on PROC_FS
---help--- ---help---
The Procfs interface for ACPI is made optional for backward compatibility. For backwards compatibility, this option allows
As the same functions are duplicated in the sysfs interface depricated /proc/acpi/ files to exist, even when
and this proc interface will be removed some time later, they have been replaced by functions in /sys.
it's marked as deprecated. The deprecated files (and their replacements) include:
( /proc/acpi/debug_layer && debug_level are deprecated by
/sys/module/acpi/parameters/debug_layer && debug_level. /proc/acpi/sleep (/sys/power/state)
/proc/acpi/info is deprecated by /proc/acpi/info (/sys/modules/acpi/parameters/acpica_version)
/sys/module/acpi/parameters/acpica_version ) /proc/acpi/dsdt (/sys/firmware/acpi/tables/DSDT)
/proc/acpi/fadt (/sys/firmware/acpi/tables/FACP)
/proc/acpi/debug_layer (/sys/module/acpi/parameters/debug_layer)
/proc/acpi/debug_level (/sys/module/acpi/parameters/debug_level)
This option has no effect on /proc/acpi/ files
and functions which do not yet exist in /sys.
Say N to delete /proc/acpi/ files that have moved to /sys/
config ACPI_AC config ACPI_AC
tristate "AC Adapter" tristate "AC Adapter"
......
obj-y := poweroff.o wakeup.o obj-y := poweroff.o wakeup.o
obj-$(CONFIG_ACPI_SLEEP) += main.o obj-y += main.o
obj-$(CONFIG_ACPI_SLEEP_PROC_FS) += proc.o obj-$(CONFIG_X86) += proc.o
EXTRA_CFLAGS += $(ACPI_CFLAGS) EXTRA_CFLAGS += $(ACPI_CFLAGS)
...@@ -136,10 +136,12 @@ static int acpi_pm_finish(suspend_state_t pm_state) ...@@ -136,10 +136,12 @@ static int acpi_pm_finish(suspend_state_t pm_state)
/* reset firmware waking vector */ /* reset firmware waking vector */
acpi_set_firmware_waking_vector((acpi_physical_address) 0); acpi_set_firmware_waking_vector((acpi_physical_address) 0);
#ifdef CONFIG_X86
if (init_8259A_after_S1) { if (init_8259A_after_S1) {
printk("Broken toshiba laptop -> kicking interrupts\n"); printk("Broken toshiba laptop -> kicking interrupts\n");
init_8259A(0); init_8259A(0);
} }
#endif
return 0; return 0;
} }
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
int acpi_sleep_prepare(u32 acpi_state) int acpi_sleep_prepare(u32 acpi_state)
{ {
#ifdef CONFIG_ACPI_SLEEP
/* do we have a wakeup address for S2 and S3? */ /* do we have a wakeup address for S2 and S3? */
if (acpi_state == ACPI_STATE_S3) { if (acpi_state == ACPI_STATE_S3) {
if (!acpi_wakeup_address) { if (!acpi_wakeup_address) {
...@@ -31,7 +30,6 @@ int acpi_sleep_prepare(u32 acpi_state) ...@@ -31,7 +30,6 @@ int acpi_sleep_prepare(u32 acpi_state)
} }
ACPI_FLUSH_CPU_CACHE(); ACPI_FLUSH_CPU_CACHE();
acpi_enable_wakeup_device_prep(acpi_state); acpi_enable_wakeup_device_prep(acpi_state);
#endif
acpi_gpe_sleep_prepare(acpi_state); acpi_gpe_sleep_prepare(acpi_state);
acpi_enter_sleep_state_prep(acpi_state); acpi_enter_sleep_state_prep(acpi_state);
return 0; return 0;
......
...@@ -14,8 +14,16 @@ ...@@ -14,8 +14,16 @@
#include "sleep.h" #include "sleep.h"
#define _COMPONENT ACPI_SYSTEM_COMPONENT #define _COMPONENT ACPI_SYSTEM_COMPONENT
/*
* this file provides support for:
* /proc/acpi/sleep
* /proc/acpi/alarm
* /proc/acpi/wakeup
*/
ACPI_MODULE_NAME("sleep") ACPI_MODULE_NAME("sleep")
#ifdef CONFIG_ACPI_SLEEP_PROC_SLEEP #ifdef CONFIG_ACPI_PROCFS
static int acpi_system_sleep_seq_show(struct seq_file *seq, void *offset) static int acpi_system_sleep_seq_show(struct seq_file *seq, void *offset)
{ {
int i; int i;
...@@ -68,7 +76,7 @@ acpi_system_write_sleep(struct file *file, ...@@ -68,7 +76,7 @@ acpi_system_write_sleep(struct file *file,
Done: Done:
return error ? error : count; return error ? error : count;
} }
#endif /* CONFIG_ACPI_SLEEP_PROC_SLEEP */ #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)
/* use /sys/class/rtc/rtcX/wakealarm instead; it's not ACPI-specific */ /* use /sys/class/rtc/rtcX/wakealarm instead; it's not ACPI-specific */
...@@ -463,7 +471,7 @@ static const struct file_operations acpi_system_wakeup_device_fops = { ...@@ -463,7 +471,7 @@ static const struct file_operations acpi_system_wakeup_device_fops = {
.release = single_release, .release = single_release,
}; };
#ifdef CONFIG_ACPI_SLEEP_PROC_SLEEP #ifdef CONFIG_ACPI_PROCFS
static const struct file_operations acpi_system_sleep_fops = { static const struct file_operations acpi_system_sleep_fops = {
.open = acpi_system_sleep_open_fs, .open = acpi_system_sleep_open_fs,
.read = seq_read, .read = seq_read,
...@@ -471,7 +479,7 @@ static const struct file_operations acpi_system_sleep_fops = { ...@@ -471,7 +479,7 @@ static const struct file_operations acpi_system_sleep_fops = {
.llseek = seq_lseek, .llseek = seq_lseek,
.release = single_release, .release = single_release,
}; };
#endif /* CONFIG_ACPI_SLEEP_PROC_SLEEP */ #endif /* CONFIG_ACPI_PROCFS */
#ifdef HAVE_ACPI_LEGACY_ALARM #ifdef HAVE_ACPI_LEGACY_ALARM
static const struct file_operations acpi_system_alarm_fops = { static const struct file_operations acpi_system_alarm_fops = {
...@@ -498,14 +506,14 @@ static int __init acpi_sleep_proc_init(void) ...@@ -498,14 +506,14 @@ static int __init acpi_sleep_proc_init(void)
if (acpi_disabled) if (acpi_disabled)
return 0; return 0;
#ifdef CONFIG_ACPI_SLEEP_PROC_SLEEP #ifdef CONFIG_ACPI_PROCFS
/* 'sleep' [R/W] */ /* 'sleep' [R/W] */
entry = entry =
create_proc_entry("sleep", S_IFREG | S_IRUGO | S_IWUSR, create_proc_entry("sleep", S_IFREG | S_IRUGO | S_IWUSR,
acpi_root_dir); acpi_root_dir);
if (entry) if (entry)
entry->proc_fops = &acpi_system_sleep_fops; entry->proc_fops = &acpi_system_sleep_fops;
#endif #endif /* CONFIG_ACPI_PROCFS */
#ifdef HAVE_ACPI_LEGACY_ALARM #ifdef HAVE_ACPI_LEGACY_ALARM
/* 'alarm' [R/W] */ /* 'alarm' [R/W] */
......
...@@ -17,7 +17,6 @@ ACPI_MODULE_NAME("wakeup_devices") ...@@ -17,7 +17,6 @@ ACPI_MODULE_NAME("wakeup_devices")
extern struct list_head acpi_wakeup_device_list; extern struct list_head acpi_wakeup_device_list;
extern spinlock_t acpi_device_lock; extern spinlock_t acpi_device_lock;
#ifdef CONFIG_ACPI_SLEEP
/** /**
* acpi_enable_wakeup_device_prep - prepare wakeup devices * acpi_enable_wakeup_device_prep - prepare wakeup devices
* @sleep_state: ACPI state * @sleep_state: ACPI state
...@@ -180,7 +179,6 @@ static int __init acpi_wakeup_device_init(void) ...@@ -180,7 +179,6 @@ static int __init acpi_wakeup_device_init(void)
} }
late_initcall(acpi_wakeup_device_init); late_initcall(acpi_wakeup_device_init);
#endif
/* /*
* Disable all wakeup GPEs before entering requested sleep state. * Disable all wakeup GPEs before entering requested sleep state.
......
...@@ -142,10 +142,6 @@ static inline void unregister_hotplug_dock_device(acpi_handle handle) ...@@ -142,10 +142,6 @@ static inline void unregister_hotplug_dock_device(acpi_handle handle)
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------
Suspend/Resume Suspend/Resume
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
#ifdef CONFIG_ACPI_SLEEP
extern int acpi_sleep_init(void); extern int acpi_sleep_init(void);
#else
#define acpi_sleep_init() do {} while (0)
#endif
#endif /*__ACPI_DRIVERS_H__*/ #endif /*__ACPI_DRIVERS_H__*/
...@@ -121,19 +121,6 @@ static inline void acpi_disable_pci(void) ...@@ -121,19 +121,6 @@ static inline void acpi_disable_pci(void)
} }
extern int acpi_irq_balance_set(char *str); extern int acpi_irq_balance_set(char *str);
#else /* !CONFIG_ACPI */
#define acpi_lapic 0
#define acpi_ioapic 0
static inline void acpi_noirq_set(void) { }
static inline void acpi_disable_pci(void) { }
static inline void disable_acpi(void) { }
#endif /* !CONFIG_ACPI */
#ifdef CONFIG_ACPI_SLEEP
/* routines for saving/restoring kernel state */ /* routines for saving/restoring kernel state */
extern int acpi_save_state_mem(void); extern int acpi_save_state_mem(void);
extern void acpi_restore_state_mem(void); extern void acpi_restore_state_mem(void);
...@@ -143,7 +130,15 @@ extern unsigned long acpi_wakeup_address; ...@@ -143,7 +130,15 @@ extern unsigned long acpi_wakeup_address;
/* early initialization routine */ /* early initialization routine */
extern void acpi_reserve_bootmem(void); extern void acpi_reserve_bootmem(void);
#endif /*CONFIG_ACPI_SLEEP*/ #else /* !CONFIG_ACPI */
#define acpi_lapic 0
#define acpi_ioapic 0
static inline void acpi_noirq_set(void) { }
static inline void acpi_disable_pci(void) { }
static inline void disable_acpi(void) { }
#endif /* !CONFIG_ACPI */
#define ARCH_HAS_POWER_INIT 1 #define ARCH_HAS_POWER_INIT 1
......
...@@ -21,7 +21,7 @@ struct saved_context { ...@@ -21,7 +21,7 @@ struct saved_context {
unsigned long return_address; unsigned long return_address;
} __attribute__((packed)); } __attribute__((packed));
#ifdef CONFIG_ACPI_SLEEP #ifdef CONFIG_ACPI
extern unsigned long saved_eip; extern unsigned long saved_eip;
extern unsigned long saved_esp; extern unsigned long saved_esp;
extern unsigned long saved_ebp; extern unsigned long saved_ebp;
......
...@@ -100,6 +100,11 @@ const char *acpi_get_sysname (void); ...@@ -100,6 +100,11 @@ const char *acpi_get_sysname (void);
int acpi_request_vector (u32 int_type); int acpi_request_vector (u32 int_type);
int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
/* routines for saving/restoring kernel state */
extern int acpi_save_state_mem(void);
extern void acpi_restore_state_mem(void);
extern unsigned long acpi_wakeup_address;
/* /*
* Record the cpei override flag and current logical cpu. This is * Record the cpei override flag and current logical cpu. This is
* useful for CPU removal. * useful for CPU removal.
......
...@@ -108,6 +108,15 @@ static inline void acpi_disable_pci(void) ...@@ -108,6 +108,15 @@ static inline void acpi_disable_pci(void)
} }
extern int acpi_irq_balance_set(char *str); extern int acpi_irq_balance_set(char *str);
/* routines for saving/restoring kernel state */
extern int acpi_save_state_mem(void);
extern void acpi_restore_state_mem(void);
extern unsigned long acpi_wakeup_address;
/* early initialization routine */
extern void acpi_reserve_bootmem(void);
#else /* !CONFIG_ACPI */ #else /* !CONFIG_ACPI */
#define acpi_lapic 0 #define acpi_lapic 0
...@@ -121,19 +130,6 @@ extern int acpi_numa; ...@@ -121,19 +130,6 @@ extern int acpi_numa;
extern int acpi_scan_nodes(unsigned long start, unsigned long end); extern int acpi_scan_nodes(unsigned long start, unsigned long end);
#define NR_NODE_MEMBLKS (MAX_NUMNODES*2) #define NR_NODE_MEMBLKS (MAX_NUMNODES*2)
#ifdef CONFIG_ACPI_SLEEP
/* routines for saving/restoring kernel state */
extern int acpi_save_state_mem(void);
extern void acpi_restore_state_mem(void);
extern unsigned long acpi_wakeup_address;
/* early initialization routine */
extern void acpi_reserve_bootmem(void);
#endif /*CONFIG_ACPI_SLEEP*/
extern int acpi_disabled; extern int acpi_disabled;
extern int acpi_pci_disabled; extern int acpi_pci_disabled;
......
...@@ -44,7 +44,6 @@ extern unsigned long saved_context_eflags; ...@@ -44,7 +44,6 @@ extern unsigned long saved_context_eflags;
extern void fix_processor_context(void); extern void fix_processor_context(void);
#ifdef CONFIG_ACPI_SLEEP
extern unsigned long saved_rip; extern unsigned long saved_rip;
extern unsigned long saved_rsp; extern unsigned long saved_rsp;
extern unsigned long saved_rbp; extern unsigned long saved_rbp;
...@@ -54,4 +53,3 @@ extern unsigned long saved_rdi; ...@@ -54,4 +53,3 @@ extern unsigned long saved_rdi;
/* routines for saving/restoring kernel state */ /* routines for saving/restoring kernel state */
extern int acpi_save_state_mem(void); extern int acpi_save_state_mem(void);
#endif
...@@ -689,7 +689,7 @@ static ctl_table kern_table[] = { ...@@ -689,7 +689,7 @@ static ctl_table kern_table[] = {
.proc_handler = &proc_dointvec, .proc_handler = &proc_dointvec,
}, },
#endif #endif
#ifdef CONFIG_ACPI_SLEEP #if defined(CONFIG_ACPI) && defined(CONFIG_X86)
{ {
.ctl_name = KERN_ACPI_VIDEO_FLAGS, .ctl_name = KERN_ACPI_VIDEO_FLAGS,
.procname = "acpi_video_flags", .procname = "acpi_video_flags",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册