Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: Don't use the EFI reboot method by default
x86, suspend: Restore MISC_ENABLE MSR in realmode wakeup
x86, reboot: Acer Aspire One A110 reboot quirk
x86-32, NUMA: Fix boot regression caused by NUMA init unification on highmem machines

+36 -3
+2
arch/x86/include/asm/mmzone_32.h
··· 57 57 return 0; 58 58 } 59 59 60 + #define early_pfn_valid(pfn) pfn_valid((pfn)) 61 + 60 62 #endif /* CONFIG_DISCONTIGMEM */ 61 63 62 64 #ifdef CONFIG_NEED_MULTIPLE_NODES
+14
arch/x86/kernel/acpi/realmode/wakeup.S
··· 28 28 pmode_cr4: .long 0 /* Saved %cr4 */ 29 29 pmode_efer: .quad 0 /* Saved EFER */ 30 30 pmode_gdt: .quad 0 31 + pmode_misc_en: .quad 0 /* Saved MISC_ENABLE MSR */ 32 + pmode_behavior: .long 0 /* Wakeup behavior flags */ 31 33 realmode_flags: .long 0 32 34 real_magic: .long 0 33 35 trampoline_segment: .word 0 ··· 92 90 93 91 /* Call the C code */ 94 92 calll main 93 + 94 + /* Restore MISC_ENABLE before entering protected mode, in case 95 + BIOS decided to clear XD_DISABLE during S3. */ 96 + movl pmode_behavior, %eax 97 + btl $WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE, %eax 98 + jnc 1f 99 + 100 + movl pmode_misc_en, %eax 101 + movl pmode_misc_en + 4, %edx 102 + movl $MSR_IA32_MISC_ENABLE, %ecx 103 + wrmsr 104 + 1: 95 105 96 106 /* Do any other stuff... */ 97 107
+6
arch/x86/kernel/acpi/realmode/wakeup.h
··· 21 21 u32 pmode_efer_low; /* Protected mode EFER */ 22 22 u32 pmode_efer_high; 23 23 u64 pmode_gdt; 24 + u32 pmode_misc_en_low; /* Protected mode MISC_ENABLE */ 25 + u32 pmode_misc_en_high; 26 + u32 pmode_behavior; /* Wakeup routine behavior flags */ 24 27 u32 realmode_flags; 25 28 u32 real_magic; 26 29 u16 trampoline_segment; /* segment with trampoline code, 64-bit only */ ··· 41 38 #define WAKEUP_HEADER_OFFSET 8 42 39 #define WAKEUP_HEADER_SIGNATURE 0x51ee1111 43 40 #define WAKEUP_END_SIGNATURE 0x65a22c82 41 + 42 + /* Wakeup behavior bits */ 43 + #define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0 44 44 45 45 #endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */
+6
arch/x86/kernel/acpi/sleep.c
··· 77 77 78 78 header->pmode_cr0 = read_cr0(); 79 79 header->pmode_cr4 = read_cr4_safe(); 80 + header->pmode_behavior = 0; 81 + if (!rdmsr_safe(MSR_IA32_MISC_ENABLE, 82 + &header->pmode_misc_en_low, 83 + &header->pmode_misc_en_high)) 84 + header->pmode_behavior |= 85 + (1 << WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE); 80 86 header->realmode_flags = acpi_realmode_flags; 81 87 header->real_magic = 0x12345678; 82 88
+8
arch/x86/kernel/reboot.c
··· 294 294 DMI_MATCH(DMI_BOARD_NAME, "VersaLogic Menlow board"), 295 295 }, 296 296 }, 297 + { /* Handle reboot issue on Acer Aspire one */ 298 + .callback = set_bios_reboot, 299 + .ident = "Acer Aspire One A110", 300 + .matches = { 301 + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 302 + DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"), 303 + }, 304 + }, 297 305 { } 298 306 }; 299 307
-3
arch/x86/platform/efi/efi.c
··· 504 504 x86_platform.set_wallclock = efi_set_rtc_mmss; 505 505 #endif 506 506 507 - /* Setup for EFI runtime service */ 508 - reboot_type = BOOT_EFI; 509 - 510 507 #if EFI_DEBUG 511 508 print_efi_memmap(); 512 509 #endif