Commit dc8ed71e authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-fixes-for-linus' of...

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 initialize MCEs on unknown CPUs
  x86, mce: don't log boot MCEs on Pentium M (model == 13) CPUs
  x86: Annotate section mismatch warnings in kernel/apic/x2apic_uv_x.c
  x86, mce: therm_throt: Don't log redundant normality
  x86: Fix UV BAU destination subnode id
parents 7f9cfb31 e412cd25
...@@ -133,7 +133,7 @@ struct bau_msg_payload { ...@@ -133,7 +133,7 @@ struct bau_msg_payload {
* see table 4.2.3.0.1 in broacast_assist spec. * see table 4.2.3.0.1 in broacast_assist spec.
*/ */
struct bau_msg_header { struct bau_msg_header {
unsigned int dest_subnodeid:6; /* must be zero */ unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */
/* bits 5:0 */ /* bits 5:0 */
unsigned int base_dest_nodeid:15; /* nasid>>1 (pnode) of */ unsigned int base_dest_nodeid:15; /* nasid>>1 (pnode) of */
/* bits 20:6 */ /* first bit in node_map */ /* bits 20:6 */ /* first bit in node_map */
......
...@@ -46,7 +46,7 @@ static int early_get_nodeid(void) ...@@ -46,7 +46,7 @@ static int early_get_nodeid(void)
return node_id.s.node_id; return node_id.s.node_id;
} }
static int uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{ {
if (!strcmp(oem_id, "SGI")) { if (!strcmp(oem_id, "SGI")) {
if (!strcmp(oem_table_id, "UVL")) if (!strcmp(oem_table_id, "UVL"))
...@@ -253,7 +253,7 @@ static void uv_send_IPI_self(int vector) ...@@ -253,7 +253,7 @@ static void uv_send_IPI_self(int vector)
apic_write(APIC_SELF_IPI, vector); apic_write(APIC_SELF_IPI, vector);
} }
struct apic apic_x2apic_uv_x = { struct apic __refdata apic_x2apic_uv_x = {
.name = "UV large system", .name = "UV large system",
.probe = NULL, .probe = NULL,
......
...@@ -1226,8 +1226,13 @@ static void mce_init(void) ...@@ -1226,8 +1226,13 @@ static void mce_init(void)
} }
/* Add per CPU specific workarounds here */ /* Add per CPU specific workarounds here */
static void mce_cpu_quirks(struct cpuinfo_x86 *c) static int mce_cpu_quirks(struct cpuinfo_x86 *c)
{ {
if (c->x86_vendor == X86_VENDOR_UNKNOWN) {
pr_info("MCE: unknown CPU type - not enabling MCE support.\n");
return -EOPNOTSUPP;
}
/* This should be disabled by the BIOS, but isn't always */ /* This should be disabled by the BIOS, but isn't always */
if (c->x86_vendor == X86_VENDOR_AMD) { if (c->x86_vendor == X86_VENDOR_AMD) {
if (c->x86 == 15 && banks > 4) { if (c->x86 == 15 && banks > 4) {
...@@ -1273,11 +1278,20 @@ static void mce_cpu_quirks(struct cpuinfo_x86 *c) ...@@ -1273,11 +1278,20 @@ static void mce_cpu_quirks(struct cpuinfo_x86 *c)
if ((c->x86 > 6 || (c->x86 == 6 && c->x86_model >= 0xe)) && if ((c->x86 > 6 || (c->x86 == 6 && c->x86_model >= 0xe)) &&
monarch_timeout < 0) monarch_timeout < 0)
monarch_timeout = USEC_PER_SEC; monarch_timeout = USEC_PER_SEC;
/*
* There are also broken BIOSes on some Pentium M and
* earlier systems:
*/
if (c->x86 == 6 && c->x86_model <= 13 && mce_bootlog < 0)
mce_bootlog = 0;
} }
if (monarch_timeout < 0) if (monarch_timeout < 0)
monarch_timeout = 0; monarch_timeout = 0;
if (mce_bootlog != 0) if (mce_bootlog != 0)
mce_panic_timeout = 30; mce_panic_timeout = 30;
return 0;
} }
static void __cpuinit mce_ancient_init(struct cpuinfo_x86 *c) static void __cpuinit mce_ancient_init(struct cpuinfo_x86 *c)
...@@ -1338,11 +1352,10 @@ void __cpuinit mcheck_init(struct cpuinfo_x86 *c) ...@@ -1338,11 +1352,10 @@ void __cpuinit mcheck_init(struct cpuinfo_x86 *c)
if (!mce_available(c)) if (!mce_available(c))
return; return;
if (mce_cap_init() < 0) { if (mce_cap_init() < 0 || mce_cpu_quirks(c) < 0) {
mce_disabled = 1; mce_disabled = 1;
return; return;
} }
mce_cpu_quirks(c);
machine_check_vector = do_machine_check; machine_check_vector = do_machine_check;
......
...@@ -116,11 +116,14 @@ static int therm_throt_process(int curr) ...@@ -116,11 +116,14 @@ static int therm_throt_process(int curr)
cpu, __get_cpu_var(thermal_throttle_count)); cpu, __get_cpu_var(thermal_throttle_count));
add_taint(TAINT_MACHINE_CHECK); add_taint(TAINT_MACHINE_CHECK);
} else if (was_throttled) { return 1;
}
if (was_throttled) {
printk(KERN_INFO "CPU%d: Temperature/speed normal\n", cpu); printk(KERN_INFO "CPU%d: Temperature/speed normal\n", cpu);
return 1;
} }
return 1; return 0;
} }
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
......
...@@ -744,6 +744,7 @@ uv_activation_descriptor_init(int node, int pnode) ...@@ -744,6 +744,7 @@ uv_activation_descriptor_init(int node, int pnode)
* note that base_dest_nodeid is actually a nasid. * note that base_dest_nodeid is actually a nasid.
*/ */
ad2->header.base_dest_nodeid = uv_partition_base_pnode << 1; ad2->header.base_dest_nodeid = uv_partition_base_pnode << 1;
ad2->header.dest_subnodeid = 0x10; /* the LB */
ad2->header.command = UV_NET_ENDPOINT_INTD; ad2->header.command = UV_NET_ENDPOINT_INTD;
ad2->header.int_both = 1; ad2->header.int_both = 1;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment