diff options
Diffstat (limited to 'arch/ia64/kernel/acpi.c')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index c7467f863c7a..43687cc60dfb 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -117,7 +117,10 @@ acpi_get_sysname(void) | |||
117 | if (!strcmp(hdr->oem_id, "HP")) { | 117 | if (!strcmp(hdr->oem_id, "HP")) { |
118 | return "hpzx1"; | 118 | return "hpzx1"; |
119 | } else if (!strcmp(hdr->oem_id, "SGI")) { | 119 | } else if (!strcmp(hdr->oem_id, "SGI")) { |
120 | return "sn2"; | 120 | if (!strcmp(hdr->oem_table_id + 4, "UV")) |
121 | return "uv"; | ||
122 | else | ||
123 | return "sn2"; | ||
121 | } | 124 | } |
122 | 125 | ||
123 | return "dig"; | 126 | return "dig"; |
@@ -130,6 +133,8 @@ acpi_get_sysname(void) | |||
130 | return "hpzx1_swiotlb"; | 133 | return "hpzx1_swiotlb"; |
131 | # elif defined (CONFIG_IA64_SGI_SN2) | 134 | # elif defined (CONFIG_IA64_SGI_SN2) |
132 | return "sn2"; | 135 | return "sn2"; |
136 | # elif defined (CONFIG_IA64_SGI_UV) | ||
137 | return "uv"; | ||
133 | # elif defined (CONFIG_IA64_DIG) | 138 | # elif defined (CONFIG_IA64_DIG) |
134 | return "dig"; | 139 | return "dig"; |
135 | # else | 140 | # else |
@@ -460,7 +465,6 @@ void __init acpi_numa_slit_init(struct acpi_table_slit *slit) | |||
460 | printk(KERN_ERR | 465 | printk(KERN_ERR |
461 | "ACPI 2.0 SLIT: size mismatch: %d expected, %d actual\n", | 466 | "ACPI 2.0 SLIT: size mismatch: %d expected, %d actual\n", |
462 | len, slit->header.length); | 467 | len, slit->header.length); |
463 | memset(numa_slit, 10, sizeof(numa_slit)); | ||
464 | return; | 468 | return; |
465 | } | 469 | } |
466 | slit_table = slit; | 470 | slit_table = slit; |
@@ -569,8 +573,14 @@ void __init acpi_numa_arch_fixup(void) | |||
569 | printk(KERN_INFO "Number of memory chunks in system = %d\n", | 573 | printk(KERN_INFO "Number of memory chunks in system = %d\n", |
570 | num_node_memblks); | 574 | num_node_memblks); |
571 | 575 | ||
572 | if (!slit_table) | 576 | if (!slit_table) { |
577 | for (i = 0; i < MAX_NUMNODES; i++) | ||
578 | for (j = 0; j < MAX_NUMNODES; j++) | ||
579 | node_distance(i, j) = i == j ? LOCAL_DISTANCE : | ||
580 | REMOTE_DISTANCE; | ||
573 | return; | 581 | return; |
582 | } | ||
583 | |||
574 | memset(numa_slit, -1, sizeof(numa_slit)); | 584 | memset(numa_slit, -1, sizeof(numa_slit)); |
575 | for (i = 0; i < slit_table->locality_count; i++) { | 585 | for (i = 0; i < slit_table->locality_count; i++) { |
576 | if (!pxm_bit_test(i)) | 586 | if (!pxm_bit_test(i)) |
@@ -622,6 +632,9 @@ void acpi_unregister_gsi(u32 gsi) | |||
622 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) | 632 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) |
623 | return; | 633 | return; |
624 | 634 | ||
635 | if (has_8259 && gsi < 16) | ||
636 | return; | ||
637 | |||
625 | iosapic_unregister_intr(gsi); | 638 | iosapic_unregister_intr(gsi); |
626 | } | 639 | } |
627 | 640 | ||
@@ -966,7 +979,7 @@ acpi_map_iosapics (void) | |||
966 | fs_initcall(acpi_map_iosapics); | 979 | fs_initcall(acpi_map_iosapics); |
967 | #endif /* CONFIG_ACPI_NUMA */ | 980 | #endif /* CONFIG_ACPI_NUMA */ |
968 | 981 | ||
969 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) | 982 | int __ref acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) |
970 | { | 983 | { |
971 | int err; | 984 | int err; |
972 | 985 | ||