diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-08 16:38:11 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-08 16:38:11 -0500 |
| commit | 86ed4aa457f9c832856156a2ee6477d108825855 (patch) | |
| tree | 5a7250b526079a9fe2656eac58fbacf5f7d07da4 | |
| parent | 830cd2ac6ecce6b027d947fcdc724dd27a33813a (diff) | |
| parent | fe5ed91ddce85a0ed0e4f92c10b099873ef62167 (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, mce: don't restart timer if disabled
x86: Use -maccumulate-outgoing-args for sane mcount prologues
x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage
x86: AMD Northbridge: Verify NB's node is online
x86 VSDO: Fix Kconfig help
x86: Fix typo in Intel CPU cache size descriptor
x86: Add new Intel CPU cache size descriptors
| -rw-r--r-- | arch/x86/Kconfig | 2 | ||||
| -rw-r--r-- | arch/x86/Makefile_32.cpu | 7 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/intel_cacheinfo.c | 5 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/quirks.c | 9 |
5 files changed, 24 insertions, 5 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index a6cb3c32a1d3..32a1918e1b88 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -1607,7 +1607,7 @@ config COMPAT_VDSO | |||
| 1607 | depends on X86_32 || IA32_EMULATION | 1607 | depends on X86_32 || IA32_EMULATION |
| 1608 | ---help--- | 1608 | ---help--- |
| 1609 | Map the 32-bit VDSO to the predictable old-style address too. | 1609 | Map the 32-bit VDSO to the predictable old-style address too. |
| 1610 | ---help--- | 1610 | |
| 1611 | Say N here if you are running a sufficiently recent glibc | 1611 | Say N here if you are running a sufficiently recent glibc |
| 1612 | version (2.3.3 or later), to remove the high-mapped | 1612 | version (2.3.3 or later), to remove the high-mapped |
| 1613 | VDSO mapping and to exclusively use the randomized VDSO. | 1613 | VDSO mapping and to exclusively use the randomized VDSO. |
diff --git a/arch/x86/Makefile_32.cpu b/arch/x86/Makefile_32.cpu index cbf0776dbec1..1255d953c65d 100644 --- a/arch/x86/Makefile_32.cpu +++ b/arch/x86/Makefile_32.cpu | |||
| @@ -46,6 +46,13 @@ cflags-$(CONFIG_MGEODE_LX) += $(call cc-option,-march=geode,-march=pentium-mmx) | |||
| 46 | # cpu entries | 46 | # cpu entries |
| 47 | cflags-$(CONFIG_X86_GENERIC) += $(call tune,generic,$(call tune,i686)) | 47 | cflags-$(CONFIG_X86_GENERIC) += $(call tune,generic,$(call tune,i686)) |
| 48 | 48 | ||
| 49 | # Work around the pentium-mmx code generator madness of gcc4.4.x which | ||
| 50 | # does stack alignment by generating horrible code _before_ the mcount | ||
| 51 | # prologue (push %ebp, mov %esp, %ebp) which breaks the function graph | ||
| 52 | # tracer assumptions. For i686, generic, core2 this is set by the | ||
| 53 | # compiler anyway | ||
| 54 | cflags-$(CONFIG_FUNCTION_GRAPH_TRACER) += $(call cc-option,-maccumulate-outgoing-args) | ||
| 55 | |||
| 49 | # Bug fix for binutils: this option is required in order to keep | 56 | # Bug fix for binutils: this option is required in order to keep |
| 50 | # binutils from generating NOPL instructions against our will. | 57 | # binutils from generating NOPL instructions against our will. |
| 51 | ifneq ($(CONFIG_X86_P6_NOP),y) | 58 | ifneq ($(CONFIG_X86_P6_NOP),y) |
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c index 0df4c2b7107f..6c40f6b5b340 100644 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c | |||
| @@ -94,7 +94,7 @@ static const struct _cache_table __cpuinitconst cache_table[] = | |||
| 94 | { 0xd1, LVL_3, 1024 }, /* 4-way set assoc, 64 byte line size */ | 94 | { 0xd1, LVL_3, 1024 }, /* 4-way set assoc, 64 byte line size */ |
| 95 | { 0xd2, LVL_3, 2048 }, /* 4-way set assoc, 64 byte line size */ | 95 | { 0xd2, LVL_3, 2048 }, /* 4-way set assoc, 64 byte line size */ |
| 96 | { 0xd6, LVL_3, 1024 }, /* 8-way set assoc, 64 byte line size */ | 96 | { 0xd6, LVL_3, 1024 }, /* 8-way set assoc, 64 byte line size */ |
| 97 | { 0xd7, LVL_3, 2038 }, /* 8-way set assoc, 64 byte line size */ | 97 | { 0xd7, LVL_3, 2048 }, /* 8-way set assoc, 64 byte line size */ |
| 98 | { 0xd8, LVL_3, 4096 }, /* 12-way set assoc, 64 byte line size */ | 98 | { 0xd8, LVL_3, 4096 }, /* 12-way set assoc, 64 byte line size */ |
| 99 | { 0xdc, LVL_3, 2048 }, /* 12-way set assoc, 64 byte line size */ | 99 | { 0xdc, LVL_3, 2048 }, /* 12-way set assoc, 64 byte line size */ |
| 100 | { 0xdd, LVL_3, 4096 }, /* 12-way set assoc, 64 byte line size */ | 100 | { 0xdd, LVL_3, 4096 }, /* 12-way set assoc, 64 byte line size */ |
| @@ -102,6 +102,9 @@ static const struct _cache_table __cpuinitconst cache_table[] = | |||
| 102 | { 0xe2, LVL_3, 2048 }, /* 16-way set assoc, 64 byte line size */ | 102 | { 0xe2, LVL_3, 2048 }, /* 16-way set assoc, 64 byte line size */ |
| 103 | { 0xe3, LVL_3, 4096 }, /* 16-way set assoc, 64 byte line size */ | 103 | { 0xe3, LVL_3, 4096 }, /* 16-way set assoc, 64 byte line size */ |
| 104 | { 0xe4, LVL_3, 8192 }, /* 16-way set assoc, 64 byte line size */ | 104 | { 0xe4, LVL_3, 8192 }, /* 16-way set assoc, 64 byte line size */ |
| 105 | { 0xea, LVL_3, 12288 }, /* 24-way set assoc, 64 byte line size */ | ||
| 106 | { 0xeb, LVL_3, 18432 }, /* 24-way set assoc, 64 byte line size */ | ||
| 107 | { 0xec, LVL_3, 24576 }, /* 24-way set assoc, 64 byte line size */ | ||
| 105 | { 0x00, 0, 0} | 108 | { 0x00, 0, 0} |
| 106 | }; | 109 | }; |
| 107 | 110 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 0bcaa3875863..d7ebf25d10ed 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
| @@ -2016,9 +2016,11 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) | |||
| 2016 | break; | 2016 | break; |
| 2017 | case CPU_DOWN_FAILED: | 2017 | case CPU_DOWN_FAILED: |
| 2018 | case CPU_DOWN_FAILED_FROZEN: | 2018 | case CPU_DOWN_FAILED_FROZEN: |
| 2019 | t->expires = round_jiffies(jiffies + | 2019 | if (!mce_ignore_ce && check_interval) { |
| 2020 | t->expires = round_jiffies(jiffies + | ||
| 2020 | __get_cpu_var(mce_next_interval)); | 2021 | __get_cpu_var(mce_next_interval)); |
| 2021 | add_timer_on(t, cpu); | 2022 | add_timer_on(t, cpu); |
| 2023 | } | ||
| 2022 | smp_call_function_single(cpu, mce_reenable_cpu, &action, 1); | 2024 | smp_call_function_single(cpu, mce_reenable_cpu, &action, 1); |
| 2023 | break; | 2025 | break; |
| 2024 | case CPU_POST_DEAD: | 2026 | case CPU_POST_DEAD: |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c index 6c3b2c6fd772..18093d7498f0 100644 --- a/arch/x86/kernel/quirks.c +++ b/arch/x86/kernel/quirks.c | |||
| @@ -499,6 +499,7 @@ static void __init quirk_amd_nb_node(struct pci_dev *dev) | |||
| 499 | { | 499 | { |
| 500 | struct pci_dev *nb_ht; | 500 | struct pci_dev *nb_ht; |
| 501 | unsigned int devfn; | 501 | unsigned int devfn; |
| 502 | u32 node; | ||
| 502 | u32 val; | 503 | u32 val; |
| 503 | 504 | ||
| 504 | devfn = PCI_DEVFN(PCI_SLOT(dev->devfn), 0); | 505 | devfn = PCI_DEVFN(PCI_SLOT(dev->devfn), 0); |
| @@ -507,7 +508,13 @@ static void __init quirk_amd_nb_node(struct pci_dev *dev) | |||
| 507 | return; | 508 | return; |
| 508 | 509 | ||
| 509 | pci_read_config_dword(nb_ht, 0x60, &val); | 510 | pci_read_config_dword(nb_ht, 0x60, &val); |
| 510 | set_dev_node(&dev->dev, val & 7); | 511 | node = val & 7; |
| 512 | /* | ||
| 513 | * Some hardware may return an invalid node ID, | ||
| 514 | * so check it first: | ||
| 515 | */ | ||
| 516 | if (node_online(node)) | ||
| 517 | set_dev_node(&dev->dev, node); | ||
| 511 | pci_dev_put(nb_ht); | 518 | pci_dev_put(nb_ht); |
| 512 | } | 519 | } |
| 513 | 520 | ||
