aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2011-02-08 17:42:22 -0500
committerRafael J. Wysocki <rjw@sisk.pl>2011-02-24 13:58:54 -0500
commitf1a2003e22f6b50ea21f7f4b38b38c5ebc9c8017 (patch)
tree5317a7133739f2f352d2cde56213caeab5cf12ac
parent979f11b060c0b35b03b86ae854d6f21a710305d0 (diff)
ACPI / PM: Merge do_suspend_lowlevel() into acpi_save_state_mem()
The function do_suspend_lowlevel() is specific to x86 and defined in assembly code, so it should be called from the x86 low-level suspend code rather than from acpi_suspend_enter(). Merge do_suspend_lowlevel() into the x86's acpi_save_state_mem() and change the name of the latter to acpi_suspend_lowlevel(), so that the function's purpose is better reflected by its name. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
-rw-r--r--arch/ia64/include/asm/acpi.h4
-rw-r--r--arch/ia64/kernel/acpi.c9
-rw-r--r--arch/x86/include/asm/acpi.h4
-rw-r--r--arch/x86/kernel/acpi/sleep.c5
-rw-r--r--arch/x86/kernel/acpi/sleep.h2
-rw-r--r--drivers/acpi/sleep.c5
6 files changed, 12 insertions, 17 deletions
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index db3986a71af8..a06dfb13d518 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -128,8 +128,8 @@ static inline const char *acpi_get_sysname (void)
128int acpi_request_vector (u32 int_type); 128int acpi_request_vector (u32 int_type);
129int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); 129int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
130 130
131/* Routine for saving kernel state during suspend. */ 131/* Low-level suspend routine. */
132extern int acpi_save_state_mem(void); 132extern int acpi_suspend_lowlevel(void);
133 133
134extern unsigned long acpi_wakeup_address; 134extern unsigned long acpi_wakeup_address;
135 135
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 7cf2d10c0677..a54d054ed4b0 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -1034,13 +1034,8 @@ int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base)
1034EXPORT_SYMBOL(acpi_unregister_ioapic); 1034EXPORT_SYMBOL(acpi_unregister_ioapic);
1035 1035
1036/* 1036/*
1037 * acpi_save_state_mem() - save kernel state 1037 * acpi_suspend_lowlevel() - save kernel state and suspend.
1038 * 1038 *
1039 * TBD when when IA64 starts to support suspend... 1039 * TBD when when IA64 starts to support suspend...
1040 */ 1040 */
1041int acpi_save_state_mem(void) { return 0; } 1041int acpi_suspend_lowlevel(void) { return 0; }
1042
1043/*
1044 * do_suspend_lowlevel()
1045 */
1046void do_suspend_lowlevel(void) {}
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 47981f0d121b..aa92684aa674 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -112,8 +112,8 @@ static inline void acpi_disable_pci(void)
112 acpi_noirq_set(); 112 acpi_noirq_set();
113} 113}
114 114
115/* Routine for saving kernel state during suspend. */ 115/* Low-level suspend routine. */
116extern int acpi_save_state_mem(void); 116extern int acpi_suspend_lowlevel(void);
117 117
118extern unsigned long acpi_wakeup_address; 118extern unsigned long acpi_wakeup_address;
119 119
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
index c27a483094b1..5f1b747f6ef1 100644
--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -29,14 +29,14 @@ static char temp_stack[4096];
29#endif 29#endif
30 30
31/** 31/**
32 * acpi_save_state_mem - save kernel state 32 * acpi_suspend_lowlevel - save kernel state
33 * 33 *
34 * Create an identity mapped page table and copy the wakeup routine to 34 * Create an identity mapped page table and copy the wakeup routine to
35 * low memory. 35 * low memory.
36 * 36 *
37 * Note that this is too late to change acpi_wakeup_address. 37 * Note that this is too late to change acpi_wakeup_address.
38 */ 38 */
39int acpi_save_state_mem(void) 39int acpi_suspend_lowlevel(void)
40{ 40{
41 struct wakeup_header *header; 41 struct wakeup_header *header;
42 42
@@ -107,6 +107,7 @@ int acpi_save_state_mem(void)
107 saved_magic = 0x123456789abcdef0L; 107 saved_magic = 0x123456789abcdef0L;
108#endif /* CONFIG_64BIT */ 108#endif /* CONFIG_64BIT */
109 109
110 do_suspend_lowlevel();
110 return 0; 111 return 0;
111} 112}
112 113
diff --git a/arch/x86/kernel/acpi/sleep.h b/arch/x86/kernel/acpi/sleep.h
index adbcbaa6f1df..31ce13f20297 100644
--- a/arch/x86/kernel/acpi/sleep.h
+++ b/arch/x86/kernel/acpi/sleep.h
@@ -14,3 +14,5 @@ extern char swsusp_pg_dir[PAGE_SIZE];
14 14
15extern unsigned long acpi_copy_wakeup_routine(unsigned long); 15extern unsigned long acpi_copy_wakeup_routine(unsigned long);
16extern void wakeup_long64(void); 16extern void wakeup_long64(void);
17
18extern void do_suspend_lowlevel(void);
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 2307604064b3..0a81bf11f473 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -199,8 +199,6 @@ static void acpi_pm_end(void)
199#endif /* CONFIG_ACPI_SLEEP */ 199#endif /* CONFIG_ACPI_SLEEP */
200 200
201#ifdef CONFIG_SUSPEND 201#ifdef CONFIG_SUSPEND
202extern void do_suspend_lowlevel(void);
203
204static u32 acpi_suspend_states[] = { 202static u32 acpi_suspend_states[] = {
205 [PM_SUSPEND_ON] = ACPI_STATE_S0, 203 [PM_SUSPEND_ON] = ACPI_STATE_S0,
206 [PM_SUSPEND_STANDBY] = ACPI_STATE_S1, 204 [PM_SUSPEND_STANDBY] = ACPI_STATE_S1,
@@ -255,10 +253,9 @@ static int acpi_suspend_enter(suspend_state_t pm_state)
255 break; 253 break;
256 254
257 case ACPI_STATE_S3: 255 case ACPI_STATE_S3:
258 error = acpi_save_state_mem(); 256 error = acpi_suspend_lowlevel();
259 if (error) 257 if (error)
260 return error; 258 return error;
261 do_suspend_lowlevel();
262 pr_info(PREFIX "Low-level resume complete\n"); 259 pr_info(PREFIX "Low-level resume complete\n");
263 break; 260 break;
264 } 261 }