Merge branch 'linus' into release
authorLen Brown <len.brown@intel.com>
Wed, 23 Mar 2011 06:34:54 +0000 (02:34 -0400)
committerLen Brown <len.brown@intel.com>
Wed, 23 Mar 2011 06:34:54 +0000 (02:34 -0400)
Conflicts:
arch/x86/kernel/acpi/sleep.c

Signed-off-by: Len Brown <len.brown@intel.com>
1  2 
Documentation/feature-removal-schedule.txt
arch/x86/include/asm/acpi.h
arch/x86/kernel/acpi/sleep.c
arch/x86/kernel/acpi/sleep.h
drivers/acpi/apei/Kconfig
drivers/acpi/apei/erst.c
drivers/acpi/osl.c
drivers/acpi/sleep.c
include/acpi/acpi_bus.h

@@@ -113,10 -114,12 +114,11 @@@ static inline void acpi_disable_pci(voi
        acpi_noirq_set();
  }
  
 -/* routines for saving/restoring kernel state */
 -extern int acpi_save_state_mem(void);
 -extern void acpi_restore_state_mem(void);
 +/* Low-level suspend routine. */
 +extern int acpi_suspend_lowlevel(void);
  
- extern unsigned long acpi_wakeup_address;
+ extern const unsigned char acpi_wakeup_code[];
+ #define acpi_wakeup_address (__pa(TRAMPOLINE_SYM(acpi_wakeup_code)))
  
  /* early initialization routine */
  extern void acpi_reserve_wakeup_memory(void);
@@@ -33,22 -29,17 +29,17 @@@ static char temp_stack[4096]
   *
   * Create an identity mapped page table and copy the wakeup routine to
   * low memory.
-  *
-  * Note that this is too late to change acpi_wakeup_address.
   */
 -int acpi_save_state_mem(void)
 +int acpi_suspend_lowlevel(void)
  {
        struct wakeup_header *header;
+       /* address in low memory of the wakeup routine. */
+       char *acpi_realmode;
  
-       if (!acpi_realmode) {
-               printk(KERN_ERR "Could not allocate memory during boot, "
-                      "S3 disabled\n");
-               return -ENOMEM;
-       }
-       memcpy((void *)acpi_realmode, &wakeup_code_start, WAKEUP_SIZE);
+       acpi_realmode = TRAMPOLINE_SYM(acpi_wakeup_code);
  
-       header = (struct wakeup_header *)(acpi_realmode + HEADER_OFFSET);
-       if (header->signature != 0x51ee1111) {
+       header = (struct wakeup_header *)(acpi_realmode + WAKEUP_HEADER_OFFSET);
+       if (header->signature != WAKEUP_HEADER_SIGNATURE) {
                printk(KERN_ERR "wakeup header does not match\n");
                return -EINVAL;
        }
        return 0;
  }
  
- /**
-  * acpi_reserve_wakeup_memory - do _very_ early ACPI initialisation
-  *
-  * We allocate a page from the first 1MB of memory for the wakeup
-  * routine for when we come back from a sleep state. The
-  * runtime allocator allows specification of <16MB pages, but not
-  * <1MB pages.
 -/*
 - * acpi_restore_state - undo effects of acpi_save_state_mem
-- */
- void __init acpi_reserve_wakeup_memory(void)
- {
-       phys_addr_t mem;
-       if ((&wakeup_code_end - &wakeup_code_start) > WAKEUP_SIZE) {
-               printk(KERN_ERR
-                      "ACPI: Wakeup code way too big, S3 disabled.\n");
-               return;
-       }
-       mem = memblock_find_in_range(0, 1<<20, WAKEUP_SIZE, PAGE_SIZE);
-       if (mem == MEMBLOCK_ERROR) {
-               printk(KERN_ERR "ACPI: Cannot allocate lowmem, S3 disabled.\n");
-               return;
-       }
-       acpi_realmode = (unsigned long) phys_to_virt(mem);
-       acpi_wakeup_address = mem;
-       memblock_x86_reserve_range(mem, mem + WAKEUP_SIZE, "ACPI WAKEUP");
- }
- int __init acpi_configure_wakeup_memory(void)
 -void acpi_restore_state_mem(void)
--{
-       if (acpi_realmode)
-               set_memory_x(acpi_realmode, WAKEUP_SIZE >> PAGE_SHIFT);
-       return 0;
--}
- arch_initcall(acpi_configure_wakeup_memory);
--
  static int __init acpi_sleep_setup(char *str)
  {
        while ((str != NULL) && (*str != '\0')) {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge