Commit d326f44e5f2204c7a24db69bfc6dd3fe5f86182b

Authored by Len Brown

Merge branch 'tboot' into release

Conflicts:
	drivers/acpi/acpica/hwsleep.c

Text conflict between:

2feec47d4c5f80b05f1650f5a24865718978eea4
(ACPICA: ACPI 5: Support for new FADT SleepStatus, SleepControl registers)

which removed #include "actables.h"

and

09f98a825a821f7a3f1b162f9ed023f37213a63b
(x86, acpi, tboot: Have a ACPI os prepare sleep instead of calling tboot_sleep.)

which removed #include <linux/tboot.h>

The resolution is to remove them both.

Signed-off-by: Len Brown <len.brown@intel.com>

Showing 6 changed files Side-by-side Diff

arch/x86/kernel/tboot.c
... ... @@ -272,7 +272,7 @@
272 272 offsetof(struct acpi_table_facs, firmware_waking_vector);
273 273 }
274 274  
275   -void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control)
  275 +static int tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control)
276 276 {
277 277 static u32 acpi_shutdown_map[ACPI_S_STATE_COUNT] = {
278 278 /* S0,1,2: */ -1, -1, -1,
... ... @@ -281,7 +281,7 @@
281 281 /* S5: */ TB_SHUTDOWN_S5 };
282 282  
283 283 if (!tboot_enabled())
284   - return;
  284 + return 0;
285 285  
286 286 tboot_copy_fadt(&acpi_gbl_FADT);
287 287 tboot->acpi_sinfo.pm1a_cnt_val = pm1a_control;
288 288  
... ... @@ -292,10 +292,11 @@
292 292 if (sleep_state >= ACPI_S_STATE_COUNT ||
293 293 acpi_shutdown_map[sleep_state] == -1) {
294 294 pr_warning("unsupported sleep state 0x%x\n", sleep_state);
295   - return;
  295 + return -1;
296 296 }
297 297  
298 298 tboot_shutdown(acpi_shutdown_map[sleep_state]);
  299 + return 0;
299 300 }
300 301  
301 302 static atomic_t ap_wfs_count;
... ... @@ -345,6 +346,8 @@
345 346  
346 347 atomic_set(&ap_wfs_count, 0);
347 348 register_hotcpu_notifier(&tboot_cpu_notifier);
  349 +
  350 + acpi_os_set_prepare_sleep(&tboot_sleep);
348 351 return 0;
349 352 }
350 353  
drivers/acpi/acpica/hwsleep.c
... ... @@ -43,8 +43,8 @@
43 43 */
44 44  
45 45 #include <acpi/acpi.h>
  46 +#include <linux/acpi.h>
46 47 #include "accommon.h"
47   -#include <linux/tboot.h>
48 48 #include <linux/module.h>
49 49  
50 50 #define _COMPONENT ACPI_HARDWARE
... ... @@ -172,8 +172,12 @@
172 172  
173 173 ACPI_FLUSH_CPU_CACHE();
174 174  
175   - tboot_sleep(sleep_state, pm1a_control, pm1b_control);
176   -
  175 + status = acpi_os_prepare_sleep(sleep_state, pm1a_control,
  176 + pm1b_control);
  177 + if (ACPI_SKIP(status))
  178 + return_ACPI_STATUS(AE_OK);
  179 + if (ACPI_FAILURE(status))
  180 + return_ACPI_STATUS(status);
177 181 /* Write #2: Write both SLP_TYP + SLP_EN */
178 182  
179 183 status = acpi_hw_write_pm1_control(pm1a_control, pm1b_control);
... ... @@ -77,6 +77,9 @@
77 77 extern char line_buf[80];
78 78 #endif /*ENABLE_DEBUGGER */
79 79  
  80 +static int (*__acpi_os_prepare_sleep)(u8 sleep_state, u32 pm1a_ctrl,
  81 + u32 pm1b_ctrl);
  82 +
80 83 static acpi_osd_handler acpi_irq_handler;
81 84 static void *acpi_irq_context;
82 85 static struct workqueue_struct *kacpid_wq;
... ... @@ -1568,5 +1571,26 @@
1568 1571 destroy_workqueue(kacpi_hotplug_wq);
1569 1572  
1570 1573 return AE_OK;
  1574 +}
  1575 +
  1576 +acpi_status acpi_os_prepare_sleep(u8 sleep_state, u32 pm1a_control,
  1577 + u32 pm1b_control)
  1578 +{
  1579 + int rc = 0;
  1580 + if (__acpi_os_prepare_sleep)
  1581 + rc = __acpi_os_prepare_sleep(sleep_state,
  1582 + pm1a_control, pm1b_control);
  1583 + if (rc < 0)
  1584 + return AE_ERROR;
  1585 + else if (rc > 0)
  1586 + return AE_CTRL_SKIP;
  1587 +
  1588 + return AE_OK;
  1589 +}
  1590 +
  1591 +void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state,
  1592 + u32 pm1a_ctrl, u32 pm1b_ctrl))
  1593 +{
  1594 + __acpi_os_prepare_sleep = func;
1571 1595 }
include/acpi/acexcep.h
... ... @@ -57,6 +57,7 @@
57 57 #define ACPI_SUCCESS(a) (!(a))
58 58 #define ACPI_FAILURE(a) (a)
59 59  
  60 +#define ACPI_SKIP(a) (a == AE_CTRL_SKIP)
60 61 #define AE_OK (acpi_status) 0x0000
61 62  
62 63 /*
include/linux/acpi.h
... ... @@ -371,5 +371,15 @@
371 371  
372 372 #endif /* !CONFIG_ACPI */
373 373  
  374 +#ifdef CONFIG_ACPI
  375 +void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state,
  376 + u32 pm1a_ctrl, u32 pm1b_ctrl));
  377 +
  378 +acpi_status acpi_os_prepare_sleep(u8 sleep_state,
  379 + u32 pm1a_control, u32 pm1b_control);
  380 +#else
  381 +#define acpi_os_set_prepare_sleep(func, pm1a_ctrl, pm1b_ctrl) do { } while (0)
  382 +#endif
  383 +
374 384 #endif /*_LINUX_ACPI_H*/
include/linux/tboot.h
... ... @@ -143,7 +143,6 @@
143 143  
144 144 extern void tboot_probe(void);
145 145 extern void tboot_shutdown(u32 shutdown_type);
146   -extern void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control);
147 146 extern struct acpi_table_header *tboot_get_dmar_table(
148 147 struct acpi_table_header *dmar_tbl);
149 148 extern int tboot_force_iommu(void);