diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-27 15:18:09 -0400 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-27 15:18:09 -0400 | 
| commit | ca597a02cd9902338aad91b0ce792fd9ffcaaa04 (patch) | |
| tree | 7fd92bdee1e1196f512d0d43735af159a763d175 /arch/x86/kernel | |
| parent | b54c3835469c9548d470e7788cb22a2fd7e21133 (diff) | |
| parent | d6c585a4342a2ff627a29f9aea77c5ed4cd76023 (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: geode: Mark mfgpt irq IRQF_TIMER to prevent resume failure
  x86, amd: Don't probe for extended APIC ID if APICs are disabled
  x86, mce: Rename incorrect macro name "CONFIG_X86_THRESHOLD"
  x86-64: Fix bad_srat() to clear all state
  x86, mce: Fix set_trigger() accessor
  x86: Fix movq immediate operand constraints in uaccess.h
  x86: Fix movq immediate operand constraints in uaccess_64.h
  x86: Add reboot fixup for SBC-fitPC2
  x86: Include all of .data.* sections in _edata on 64-bit
  x86: Add quirk for Intel DG45ID board to avoid low memory corruption
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/cpu/amd.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/irqinit.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/mfgpt_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/reboot.c | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/setup.c | 13 | ||||
| -rw-r--r-- | arch/x86/kernel/vmlinux.lds.S | 7 | 
7 files changed, 26 insertions, 14 deletions
| diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 28e5f5956042..e2485b03f1cf 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
| @@ -356,7 +356,7 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c) | |||
| 356 | #endif | 356 | #endif | 
| 357 | #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI) | 357 | #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI) | 
| 358 | /* check CPU config space for extended APIC ID */ | 358 | /* check CPU config space for extended APIC ID */ | 
| 359 | if (c->x86 >= 0xf) { | 359 | if (cpu_has_apic && c->x86 >= 0xf) { | 
| 360 | unsigned int val; | 360 | unsigned int val; | 
| 361 | val = read_pci_config(0, 24, 0, 0x68); | 361 | val = read_pci_config(0, 24, 0, 0x68); | 
| 362 | if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18))) | 362 | if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18))) | 
| diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 484c1e5f658e..1cfb623ce11c 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
| @@ -1692,17 +1692,15 @@ static ssize_t set_trigger(struct sys_device *s, struct sysdev_attribute *attr, | |||
| 1692 | const char *buf, size_t siz) | 1692 | const char *buf, size_t siz) | 
| 1693 | { | 1693 | { | 
| 1694 | char *p; | 1694 | char *p; | 
| 1695 | int len; | ||
| 1696 | 1695 | ||
| 1697 | strncpy(mce_helper, buf, sizeof(mce_helper)); | 1696 | strncpy(mce_helper, buf, sizeof(mce_helper)); | 
| 1698 | mce_helper[sizeof(mce_helper)-1] = 0; | 1697 | mce_helper[sizeof(mce_helper)-1] = 0; | 
| 1699 | len = strlen(mce_helper); | ||
| 1700 | p = strchr(mce_helper, '\n'); | 1698 | p = strchr(mce_helper, '\n'); | 
| 1701 | 1699 | ||
| 1702 | if (*p) | 1700 | if (p) | 
| 1703 | *p = 0; | 1701 | *p = 0; | 
| 1704 | 1702 | ||
| 1705 | return len; | 1703 | return strlen(mce_helper) + !!p; | 
| 1706 | } | 1704 | } | 
| 1707 | 1705 | ||
| 1708 | static ssize_t set_ignore_ce(struct sys_device *s, | 1706 | static ssize_t set_ignore_ce(struct sys_device *s, | 
| diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index 696f0e475c2d..92b7703d3d58 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c | |||
| @@ -187,7 +187,7 @@ static void __init apic_intr_init(void) | |||
| 187 | #ifdef CONFIG_X86_THERMAL_VECTOR | 187 | #ifdef CONFIG_X86_THERMAL_VECTOR | 
| 188 | alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); | 188 | alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); | 
| 189 | #endif | 189 | #endif | 
| 190 | #ifdef CONFIG_X86_THRESHOLD | 190 | #ifdef CONFIG_X86_MCE_THRESHOLD | 
| 191 | alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); | 191 | alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); | 
| 192 | #endif | 192 | #endif | 
| 193 | #if defined(CONFIG_X86_NEW_MCE) && defined(CONFIG_X86_LOCAL_APIC) | 193 | #if defined(CONFIG_X86_NEW_MCE) && defined(CONFIG_X86_LOCAL_APIC) | 
| diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c index 846510b78a09..2a62d843f015 100644 --- a/arch/x86/kernel/mfgpt_32.c +++ b/arch/x86/kernel/mfgpt_32.c | |||
| @@ -347,7 +347,7 @@ static irqreturn_t mfgpt_tick(int irq, void *dev_id) | |||
| 347 | 347 | ||
| 348 | static struct irqaction mfgptirq = { | 348 | static struct irqaction mfgptirq = { | 
| 349 | .handler = mfgpt_tick, | 349 | .handler = mfgpt_tick, | 
| 350 | .flags = IRQF_DISABLED | IRQF_NOBALANCING, | 350 | .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER, | 
| 351 | .name = "mfgpt-timer" | 351 | .name = "mfgpt-timer" | 
| 352 | }; | 352 | }; | 
| 353 | 353 | ||
| diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index d2d1ce8170f0..508e982dd072 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
| @@ -249,6 +249,14 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { | |||
| 249 | DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"), | 249 | DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"), | 
| 250 | }, | 250 | }, | 
| 251 | }, | 251 | }, | 
| 252 | { /* Handle problems with rebooting on CompuLab SBC-FITPC2 */ | ||
| 253 | .callback = set_bios_reboot, | ||
| 254 | .ident = "CompuLab SBC-FITPC2", | ||
| 255 | .matches = { | ||
| 256 | DMI_MATCH(DMI_SYS_VENDOR, "CompuLab"), | ||
| 257 | DMI_MATCH(DMI_PRODUCT_NAME, "SBC-FITPC2"), | ||
| 258 | }, | ||
| 259 | }, | ||
| 252 | { } | 260 | { } | 
| 253 | }; | 261 | }; | 
| 254 | 262 | ||
| diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index de2cab132844..63f32d220ef2 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
| @@ -672,6 +672,19 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = { | |||
| 672 | DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies"), | 672 | DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies"), | 
| 673 | }, | 673 | }, | 
| 674 | }, | 674 | }, | 
| 675 | { | ||
| 676 | /* | ||
| 677 | * AMI BIOS with low memory corruption was found on Intel DG45ID board. | ||
| 678 | * It hase different DMI_BIOS_VENDOR = "Intel Corp.", for now we will | ||
| 679 | * match only DMI_BOARD_NAME and see if there is more bad products | ||
| 680 | * with this vendor. | ||
| 681 | */ | ||
| 682 | .callback = dmi_low_memory_corruption, | ||
| 683 | .ident = "AMI BIOS", | ||
| 684 | .matches = { | ||
| 685 | DMI_MATCH(DMI_BOARD_NAME, "DG45ID"), | ||
| 686 | }, | ||
| 687 | }, | ||
| 675 | #endif | 688 | #endif | 
| 676 | {} | 689 | {} | 
| 677 | }; | 690 | }; | 
| diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index 367e87882041..59f31d2dd435 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S | |||
| @@ -112,11 +112,6 @@ SECTIONS | |||
| 112 | _sdata = .; | 112 | _sdata = .; | 
| 113 | DATA_DATA | 113 | DATA_DATA | 
| 114 | CONSTRUCTORS | 114 | CONSTRUCTORS | 
| 115 | |||
| 116 | #ifdef CONFIG_X86_64 | ||
| 117 | /* End of data section */ | ||
| 118 | _edata = .; | ||
| 119 | #endif | ||
| 120 | } :data | 115 | } :data | 
| 121 | 116 | ||
| 122 | #ifdef CONFIG_X86_32 | 117 | #ifdef CONFIG_X86_32 | 
| @@ -156,10 +151,8 @@ SECTIONS | |||
| 156 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { | 151 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { | 
| 157 | *(.data.read_mostly) | 152 | *(.data.read_mostly) | 
| 158 | 153 | ||
| 159 | #ifdef CONFIG_X86_32 | ||
| 160 | /* End of data section */ | 154 | /* End of data section */ | 
| 161 | _edata = .; | 155 | _edata = .; | 
| 162 | #endif | ||
| 163 | } | 156 | } | 
| 164 | 157 | ||
| 165 | #ifdef CONFIG_X86_64 | 158 | #ifdef CONFIG_X86_64 | 
