vserver 1.9.5.x5
[linux-2.6.git] / arch / x86_64 / kernel / acpi / sleep.c
index 20e9266..eb4c730 100644 (file)
@@ -61,9 +61,13 @@ extern char wakeup_start, wakeup_end;
 
 extern unsigned long FASTCALL(acpi_copy_wakeup_routine(unsigned long));
 
+static pgd_t low_ptr;
+
 static void init_low_mapping(void)
 {
-       cpu_pda[0].level4_pgt[0] = cpu_pda[0].level4_pgt[pml4_index(PAGE_OFFSET)];
+       pgd_t *slot0 = pgd_offset(current->mm, 0UL);
+       low_ptr = *slot0;
+       set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET));
        flush_tlb_all();
 }
 
@@ -97,7 +101,7 @@ int acpi_save_state_disk (void)
  */
 void acpi_restore_state_mem (void)
 {
-       cpu_pda[0].level4_pgt[0] = 0;
+       set_pgd(pgd_offset(current->mm, 0UL), low_ptr);
        flush_tlb_all();
 }
 
@@ -114,7 +118,6 @@ void __init acpi_reserve_bootmem(void)
        acpi_wakeup_address = (unsigned long)alloc_bootmem_low(PAGE_SIZE);
        if ((&wakeup_end - &wakeup_start) > PAGE_SIZE)
                printk(KERN_CRIT "ACPI: Wakeup code way too big, will crash on attempt to suspend\n");
-       printk(KERN_DEBUG "ACPI: have wakeup address 0x%8.8lx\n", acpi_wakeup_address);
 }
 
 static int __init acpi_sleep_setup(char *str)