diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-15 11:41:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-15 11:41:43 -0400 |
commit | 1dc60c53d36b08f361e1a2767c41196acce96d08 (patch) | |
tree | 35966ad2c2465e6f722d199e4b1799fb4c6f2b46 | |
parent | 8d2567a620ae8c24968a2bdc1c906c724fac1f6a (diff) | |
parent | 3f1c38723eb467d34d704d0ee6e7b796ba4981ee (diff) |
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: Fix compile error with CONFIG_AS_CFI=n
Documentation: document debugpat commandline option
x86: sanitize Kconfig
x86, suspend, acpi: correct and add comments about Big Real Mode
x86, suspend, acpi: enter Big Real Mode
Fixed trivial conflict in include/asm-x86/dwarf2.h due to just using
different names for "cfi_ignore" (vs "__cfi_ignore") macro.
-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 | ||