diff options
| -rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
| -rw-r--r-- | arch/x86/Kconfig | 22 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/sleep.c | 30 | ||||
| -rw-r--r-- | include/asm-x86/dwarf2.h | 30 |
4 files changed, 50 insertions, 34 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index b3a5aad7e629..681d6152e003 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -571,6 +571,8 @@ and is between 256 and 4096 characters. It is defined in the file | |||
| 571 | 571 | ||
| 572 | debug_objects [KNL] Enable object debugging | 572 | debug_objects [KNL] Enable object debugging |
| 573 | 573 | ||
| 574 | debugpat [X86] Enable PAT debugging | ||
| 575 | |||
| 574 | decnet.addr= [HW,NET] | 576 | decnet.addr= [HW,NET] |
| 575 | Format: <area>[,<node>] | 577 | Format: <area>[,<node>] |
| 576 | See also Documentation/networking/decnet.txt. | 578 | See also Documentation/networking/decnet.txt. |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 6958d6bcaf70..2642b4bf41b9 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -447,7 +447,6 @@ config PARAVIRT_DEBUG | |||
| 447 | config MEMTEST | 447 | config MEMTEST |
| 448 | bool "Memtest" | 448 | bool "Memtest" |
| 449 | depends on X86_64 | 449 | depends on X86_64 |
| 450 | default y | ||
| 451 | help | 450 | help |
| 452 | This option adds a kernel parameter 'memtest', which allows memtest | 451 | This option adds a kernel parameter 'memtest', which allows memtest |
| 453 | to be set. | 452 | to be set. |
| @@ -455,7 +454,7 @@ config MEMTEST | |||
| 455 | memtest=1, mean do 1 test pattern; | 454 | memtest=1, mean do 1 test pattern; |
| 456 | ... | 455 | ... |
| 457 | memtest=4, mean do 4 test patterns. | 456 | memtest=4, mean do 4 test patterns. |
| 458 | If you are unsure how to answer this question, answer Y. | 457 | If you are unsure how to answer this question, answer N. |
| 459 | 458 | ||
| 460 | config X86_SUMMIT_NUMA | 459 | config X86_SUMMIT_NUMA |
| 461 | def_bool y | 460 | def_bool y |
| @@ -1135,21 +1134,18 @@ config MTRR | |||
| 1135 | See <file:Documentation/mtrr.txt> for more information. | 1134 | See <file:Documentation/mtrr.txt> for more information. |
| 1136 | 1135 | ||
| 1137 | config MTRR_SANITIZER | 1136 | config MTRR_SANITIZER |
| 1138 | def_bool y | 1137 | bool |
| 1139 | prompt "MTRR cleanup support" | 1138 | prompt "MTRR cleanup support" |
| 1140 | depends on MTRR | 1139 | depends on MTRR |
| 1141 | help | 1140 | help |
| 1142 | Convert MTRR layout from continuous to discrete, so some X driver | 1141 | Convert MTRR layout from continuous to discrete, so X drivers can |
| 1143 | could add WB entries. | 1142 | add writeback entries. |
| 1144 | 1143 | ||
| 1145 | Say N here if you see bootup problems (boot crash, boot hang, | 1144 | Can be disabled with disable_mtrr_cleanup on the kernel command line. |
| 1146 | spontaneous reboots). | 1145 | The largest mtrr entry size for a continous block can be set with |
| 1146 | mtrr_chunk_size. | ||
| 1147 | 1147 | ||
| 1148 | Could be disabled with disable_mtrr_cleanup. Also mtrr_chunk_size | 1148 | If unsure, say N. |
| 1149 | could be used to send largest mtrr entry size for continuous block | ||
| 1150 | to hold holes (aka. UC entries) | ||
| 1151 | |||
| 1152 | If unsure, say Y. | ||
| 1153 | 1149 | ||
| 1154 | config MTRR_SANITIZER_ENABLE_DEFAULT | 1150 | config MTRR_SANITIZER_ENABLE_DEFAULT |
| 1155 | int "MTRR cleanup enable value (0-1)" | 1151 | int "MTRR cleanup enable value (0-1)" |
| @@ -1166,7 +1162,7 @@ config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT | |||
| 1166 | depends on MTRR_SANITIZER | 1162 | depends on MTRR_SANITIZER |
| 1167 | help | 1163 | help |
| 1168 | mtrr cleanup spare entries default, it can be changed via | 1164 | mtrr cleanup spare entries default, it can be changed via |
| 1169 | mtrr_spare_reg_nr= | 1165 | mtrr_spare_reg_nr=N on the kernel command line. |
| 1170 | 1166 | ||
| 1171 | config X86_PAT | 1167 | config X86_PAT |
| 1172 | bool | 1168 | bool |
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index e6a4b564ccaa..793ad2045f58 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
| @@ -23,6 +23,15 @@ static unsigned long acpi_realmode; | |||
| 23 | static char temp_stack[10240]; | 23 | static char temp_stack[10240]; |
| 24 | #endif | 24 | #endif |
| 25 | 25 | ||
| 26 | /* XXX: this macro should move to asm-x86/segment.h and be shared with the | ||
| 27 | boot code... */ | ||
| 28 | #define GDT_ENTRY(flags, base, limit) \ | ||
| 29 | (((u64)(base & 0xff000000) << 32) | \ | ||
| 30 | ((u64)flags << 40) | \ | ||
| 31 | ((u64)(limit & 0x00ff0000) << 32) | \ | ||
| 32 | ((u64)(base & 0x00ffffff) << 16) | \ | ||
| 33 | ((u64)(limit & 0x0000ffff))) | ||
| 34 | |||
| 26 | /** | 35 | /** |
| 27 | * acpi_save_state_mem - save kernel state | 36 | * acpi_save_state_mem - save kernel state |
| 28 | * | 37 | * |
| @@ -51,18 +60,27 @@ int acpi_save_state_mem(void) | |||
| 51 | header->video_mode = saved_video_mode; | 60 | header->video_mode = saved_video_mode; |
| 52 | 61 | ||
| 53 | header->wakeup_jmp_seg = acpi_wakeup_address >> 4; | 62 | header->wakeup_jmp_seg = acpi_wakeup_address >> 4; |
| 63 | |||
| 64 | /* | ||
| 65 | * Set up the wakeup GDT. We set these up as Big Real Mode, | ||
| 66 | * that is, with limits set to 4 GB. At least the Lenovo | ||
| 67 | * Thinkpad X61 is known to need this for the video BIOS | ||
| 68 | * initialization quirk to work; this is likely to also | ||
| 69 | * be the case for other laptops or integrated video devices. | ||
| 70 | */ | ||
| 71 | |||
| 54 | /* GDT[0]: GDT self-pointer */ | 72 | /* GDT[0]: GDT self-pointer */ |
| 55 | header->wakeup_gdt[0] = | 73 | header->wakeup_gdt[0] = |
| 56 | (u64)(sizeof(header->wakeup_gdt) - 1) + | 74 | (u64)(sizeof(header->wakeup_gdt) - 1) + |
| 57 | ((u64)(acpi_wakeup_address + | 75 | ((u64)(acpi_wakeup_address + |
| 58 | ((char *)&header->wakeup_gdt - (char *)acpi_realmode)) | 76 | ((char *)&header->wakeup_gdt - (char *)acpi_realmode)) |
| 59 | << 16); | 77 | << 16); |
| 60 | /* GDT[1]: real-mode-like code segment */ | 78 | /* GDT[1]: big real mode-like code segment */ |
| 61 | header->wakeup_gdt[1] = (0x009bULL << 40) + | 79 | header->wakeup_gdt[1] = |
| 62 | ((u64)acpi_wakeup_address << 16) + 0xffff; | 80 | GDT_ENTRY(0x809b, acpi_wakeup_address, 0xfffff); |
| 63 | /* GDT[2]: real-mode-like data segment */ | 81 | /* GDT[2]: big real mode-like data segment */ |
| 64 | header->wakeup_gdt[2] = (0x0093ULL << 40) + | 82 | header->wakeup_gdt[2] = |
| 65 | ((u64)acpi_wakeup_address << 16) + 0xffff; | 83 | GDT_ENTRY(0x8093, acpi_wakeup_address, 0xfffff); |
| 66 | 84 | ||
| 67 | #ifndef CONFIG_64BIT | 85 | #ifndef CONFIG_64BIT |
| 68 | store_gdt((struct desc_ptr *)&header->pmode_gdt); | 86 | store_gdt((struct desc_ptr *)&header->pmode_gdt); |
diff --git a/include/asm-x86/dwarf2.h b/include/asm-x86/dwarf2.h index fd4a6a0393ac..738bb9fb3e53 100644 --- a/include/asm-x86/dwarf2.h +++ b/include/asm-x86/dwarf2.h | |||
| @@ -38,23 +38,23 @@ | |||
| 38 | 38 | ||
| 39 | /* Due to the structure of pre-exisiting code, don't use assembler line | 39 | /* Due to the structure of pre-exisiting code, don't use assembler line |
| 40 | comment character # to ignore the arguments. Instead, use a dummy macro. */ | 40 | comment character # to ignore the arguments. Instead, use a dummy macro. */ |
| 41 | .macro __cfi_ignore a=0, b=0, c=0, d=0 | 41 | .macro cfi_ignore a=0, b=0, c=0, d=0 |
| 42 | .endm | 42 | .endm |
| 43 | 43 | ||
| 44 | #define CFI_STARTPROC __cfi_ignore | 44 | #define CFI_STARTPROC cfi_ignore |
| 45 | #define CFI_ENDPROC __cfi_ignore | 45 | #define CFI_ENDPROC cfi_ignore |
| 46 | #define CFI_DEF_CFA __cfi_ignore | 46 | #define CFI_DEF_CFA cfi_ignore |
| 47 | #define CFI_DEF_CFA_REGISTER __cfi_ignore | 47 | #define CFI_DEF_CFA_REGISTER cfi_ignore |
| 48 | #define CFI_DEF_CFA_OFFSET __cfi_ignore | 48 | #define CFI_DEF_CFA_OFFSET cfi_ignore |
| 49 | #define CFI_ADJUST_CFA_OFFSET __cfi_ignore | 49 | #define CFI_ADJUST_CFA_OFFSET cfi_ignore |
| 50 | #define CFI_OFFSET __cfi_ignore | 50 | #define CFI_OFFSET cfi_ignore |
| 51 | #define CFI_REL_OFFSET __cfi_ignore | 51 | #define CFI_REL_OFFSET cfi_ignore |
| 52 | #define CFI_REGISTER __cfi_ignore | 52 | #define CFI_REGISTER cfi_ignore |
| 53 | #define CFI_RESTORE __cfi_ignore | 53 | #define CFI_RESTORE cfi_ignore |
| 54 | #define CFI_REMEMBER_STATE __cfi_ignore | 54 | #define CFI_REMEMBER_STATE cfi_ignore |
| 55 | #define CFI_RESTORE_STATE __cfi_ignore | 55 | #define CFI_RESTORE_STATE cfi_ignore |
| 56 | #define CFI_UNDEFINED __cfi_ignore | 56 | #define CFI_UNDEFINED cfi_ignore |
| 57 | #define CFI_SIGNAL_FRAME __cfi_ignore | 57 | #define CFI_SIGNAL_FRAME cfi_ignore |
| 58 | 58 | ||
| 59 | #endif | 59 | #endif |
| 60 | 60 | ||
