diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-09 18:28:11 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-09 18:28:11 -0500 |
| commit | 8fc543c8f004fc9dfe0a262dc452dfe2eca4589b (patch) | |
| tree | b14a215ffe0f8c594ac517257855a681ba6b7b79 | |
| parent | a70a93229943c177f0062490b4f8e44be4cef685 (diff) | |
| parent | 7f6ff62a8f3a4e68258958196098c6f71563ae61 (diff) | |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] IOSAPIC bogus error cleanup
[IA64] Update printing of feature set bits
[IA64] Fix IOSAPIC delivery mode setting
[IA64] XPC heartbeat timer function must run on CPU 0
[IA64] Clean up /proc/interrupts output
[IA64] Disable/re-enable CPE interrupts on Altix
[IA64] Clean-up McKinley Errata message
[IA64] Add gate.lds to list of files ignored by Git
[IA64] Fix section mismatch in contig.c version of per_cpu_init()
[IA64] Wrong args to memset in efi_gettimeofday()
[IA64] Remove duplicate includes from ia32priv.h
[IA64] fix number of bytes zeroed by sys_fw_init() in arch/ia64/hp/sim/boot/fw-emu.c
[IA64] Fix perfmon sysctl directory modes
| -rw-r--r-- | arch/ia64/hp/sim/boot/fw-emu.c | 2 | ||||
| -rw-r--r-- | arch/ia64/ia32/ia32priv.h | 1 | ||||
| -rw-r--r-- | arch/ia64/kernel/.gitignore | 1 | ||||
| -rw-r--r-- | arch/ia64/kernel/acpi.c | 8 | ||||
| -rw-r--r-- | arch/ia64/kernel/efi.c | 5 | ||||
| -rw-r--r-- | arch/ia64/kernel/iosapic.c | 18 | ||||
| -rw-r--r-- | arch/ia64/kernel/irq.c | 6 | ||||
| -rw-r--r-- | arch/ia64/kernel/mca.c | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/palinfo.c | 91 | ||||
| -rw-r--r-- | arch/ia64/kernel/patch.c | 3 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 4 | ||||
| -rw-r--r-- | arch/ia64/mm/contig.c | 74 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/irq.c | 8 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/xpc_main.c | 12 | ||||
| -rw-r--r-- | include/asm-ia64/pal.h | 5 |
15 files changed, 165 insertions, 75 deletions
diff --git a/arch/ia64/hp/sim/boot/fw-emu.c b/arch/ia64/hp/sim/boot/fw-emu.c index 1189d035d3..bf6d9d8c80 100644 --- a/arch/ia64/hp/sim/boot/fw-emu.c +++ b/arch/ia64/hp/sim/boot/fw-emu.c | |||
| @@ -285,7 +285,7 @@ sys_fw_init (const char *args, int arglen) | |||
| 285 | } | 285 | } |
| 286 | cmd_line[arglen] = '\0'; | 286 | cmd_line[arglen] = '\0'; |
| 287 | 287 | ||
| 288 | memset(efi_systab, 0, sizeof(efi_systab)); | 288 | memset(efi_systab, 0, sizeof(*efi_systab)); |
| 289 | efi_systab->hdr.signature = EFI_SYSTEM_TABLE_SIGNATURE; | 289 | efi_systab->hdr.signature = EFI_SYSTEM_TABLE_SIGNATURE; |
| 290 | efi_systab->hdr.revision = ((1 << 16) | 00); | 290 | efi_systab->hdr.revision = ((1 << 16) | 00); |
| 291 | efi_systab->hdr.headersize = sizeof(efi_systab->hdr); | 291 | efi_systab->hdr.headersize = sizeof(efi_systab->hdr); |
diff --git a/arch/ia64/ia32/ia32priv.h b/arch/ia64/ia32/ia32priv.h index 466bbcb138..c5c872b250 100644 --- a/arch/ia64/ia32/ia32priv.h +++ b/arch/ia64/ia32/ia32priv.h | |||
| @@ -290,7 +290,6 @@ struct old_linux32_dirent { | |||
| 290 | #define _ASM_IA64_ELF_H /* Don't include elf.h */ | 290 | #define _ASM_IA64_ELF_H /* Don't include elf.h */ |
| 291 | 291 | ||
| 292 | #include <linux/sched.h> | 292 | #include <linux/sched.h> |
| 293 | #include <asm/processor.h> | ||
| 294 | 293 | ||
| 295 | /* | 294 | /* |
| 296 | * This is used to ensure we don't load something for the wrong architecture. | 295 | * This is used to ensure we don't load something for the wrong architecture. |
diff --git a/arch/ia64/kernel/.gitignore b/arch/ia64/kernel/.gitignore new file mode 100644 index 0000000000..98307759a3 --- /dev/null +++ b/arch/ia64/kernel/.gitignore | |||
| @@ -0,0 +1 @@ | |||
| gate.lds | |||
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 3d45d24a9d..897e2083a3 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
| @@ -678,9 +678,11 @@ int __init acpi_boot_init(void) | |||
| 678 | /* I/O APIC */ | 678 | /* I/O APIC */ |
| 679 | 679 | ||
| 680 | if (acpi_table_parse_madt | 680 | if (acpi_table_parse_madt |
| 681 | (ACPI_MADT_TYPE_IO_SAPIC, acpi_parse_iosapic, NR_IOSAPICS) < 1) | 681 | (ACPI_MADT_TYPE_IO_SAPIC, acpi_parse_iosapic, NR_IOSAPICS) < 1) { |
| 682 | printk(KERN_ERR PREFIX | 682 | if (!ia64_platform_is("sn2")) |
| 683 | "Error parsing MADT - no IOSAPIC entries\n"); | 683 | printk(KERN_ERR PREFIX |
| 684 | "Error parsing MADT - no IOSAPIC entries\n"); | ||
| 685 | } | ||
| 684 | 686 | ||
| 685 | /* System-Level Interrupt Routing */ | 687 | /* System-Level Interrupt Routing */ |
| 686 | 688 | ||
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index 6216eba2e3..5181bf551f 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
| @@ -218,9 +218,10 @@ efi_gettimeofday (struct timespec *ts) | |||
| 218 | { | 218 | { |
| 219 | efi_time_t tm; | 219 | efi_time_t tm; |
| 220 | 220 | ||
| 221 | memset(ts, 0, sizeof(ts)); | 221 | if ((*efi.get_time)(&tm, NULL) != EFI_SUCCESS) { |
| 222 | if ((*efi.get_time)(&tm, NULL) != EFI_SUCCESS) | 222 | memset(ts, 0, sizeof(*ts)); |
| 223 | return; | 223 | return; |
| 224 | } | ||
| 224 | 225 | ||
| 225 | ts->tv_sec = mktime(tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second); | 226 | ts->tv_sec = mktime(tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second); |
| 226 | ts->tv_nsec = tm.nanosecond; | 227 | ts->tv_nsec = tm.nanosecond; |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index cfe4654838..274a593830 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
| @@ -748,6 +748,15 @@ skip_numa_setup: | |||
| 748 | #endif | 748 | #endif |
| 749 | } | 749 | } |
| 750 | 750 | ||
| 751 | static inline unsigned char choose_dmode(void) | ||
| 752 | { | ||
| 753 | #ifdef CONFIG_SMP | ||
| 754 | if (smp_int_redirect & SMP_IRQ_REDIRECTION) | ||
| 755 | return IOSAPIC_LOWEST_PRIORITY; | ||
| 756 | #endif | ||
| 757 | return IOSAPIC_FIXED; | ||
| 758 | } | ||
| 759 | |||
| 751 | /* | 760 | /* |
| 752 | * ACPI can describe IOSAPIC interrupts via static tables and namespace | 761 | * ACPI can describe IOSAPIC interrupts via static tables and namespace |
| 753 | * methods. This provides an interface to register those interrupts and | 762 | * methods. This provides an interface to register those interrupts and |
| @@ -762,6 +771,7 @@ iosapic_register_intr (unsigned int gsi, | |||
| 762 | unsigned long flags; | 771 | unsigned long flags; |
| 763 | struct iosapic_rte_info *rte; | 772 | struct iosapic_rte_info *rte; |
| 764 | u32 low32; | 773 | u32 low32; |
| 774 | unsigned char dmode; | ||
| 765 | 775 | ||
| 766 | /* | 776 | /* |
| 767 | * If this GSI has already been registered (i.e., it's a | 777 | * If this GSI has already been registered (i.e., it's a |
| @@ -791,8 +801,8 @@ iosapic_register_intr (unsigned int gsi, | |||
| 791 | 801 | ||
| 792 | spin_lock(&irq_desc[irq].lock); | 802 | spin_lock(&irq_desc[irq].lock); |
| 793 | dest = get_target_cpu(gsi, irq); | 803 | dest = get_target_cpu(gsi, irq); |
| 794 | err = register_intr(gsi, irq, IOSAPIC_LOWEST_PRIORITY, | 804 | dmode = choose_dmode(); |
| 795 | polarity, trigger); | 805 | err = register_intr(gsi, irq, dmode, polarity, trigger); |
| 796 | if (err < 0) { | 806 | if (err < 0) { |
| 797 | spin_unlock(&irq_desc[irq].lock); | 807 | spin_unlock(&irq_desc[irq].lock); |
| 798 | irq = err; | 808 | irq = err; |
| @@ -961,10 +971,12 @@ iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi, | |||
| 961 | { | 971 | { |
| 962 | int vector, irq; | 972 | int vector, irq; |
| 963 | unsigned int dest = cpu_physical_id(smp_processor_id()); | 973 | unsigned int dest = cpu_physical_id(smp_processor_id()); |
| 974 | unsigned char dmode; | ||
| 964 | 975 | ||
| 965 | irq = vector = isa_irq_to_vector(isa_irq); | 976 | irq = vector = isa_irq_to_vector(isa_irq); |
| 966 | BUG_ON(bind_irq_vector(irq, vector, CPU_MASK_ALL)); | 977 | BUG_ON(bind_irq_vector(irq, vector, CPU_MASK_ALL)); |
| 967 | register_intr(gsi, irq, IOSAPIC_LOWEST_PRIORITY, polarity, trigger); | 978 | dmode = choose_dmode(); |
| 979 | register_intr(gsi, irq, dmode, polarity, trigger); | ||
| 968 | 980 | ||
| 969 | DBG("ISA: IRQ %u -> GSI %u (%s,%s) -> CPU %d (0x%04x) vector %d\n", | 981 | DBG("ISA: IRQ %u -> GSI %u (%s,%s) -> CPU %d (0x%04x) vector %d\n", |
| 970 | isa_irq, gsi, trigger == IOSAPIC_EDGE ? "edge" : "level", | 982 | isa_irq, gsi, trigger == IOSAPIC_EDGE ? "edge" : "level", |
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index 44be1c952b..6dee579f20 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
| @@ -61,9 +61,11 @@ int show_interrupts(struct seq_file *p, void *v) | |||
| 61 | unsigned long flags; | 61 | unsigned long flags; |
| 62 | 62 | ||
| 63 | if (i == 0) { | 63 | if (i == 0) { |
| 64 | seq_printf(p, " "); | 64 | char cpuname[16]; |
| 65 | seq_printf(p, " "); | ||
| 65 | for_each_online_cpu(j) { | 66 | for_each_online_cpu(j) { |
| 66 | seq_printf(p, "CPU%d ",j); | 67 | snprintf(cpuname, 10, "CPU%d", j); |
| 68 | seq_printf(p, "%10s ", cpuname); | ||
| 67 | } | 69 | } |
| 68 | seq_putc(p, '\n'); | 70 | seq_putc(p, '\n'); |
| 69 | } | 71 | } |
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index cc87025e8f..10b48cd15a 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
| @@ -571,7 +571,7 @@ out: | |||
| 571 | * Outputs | 571 | * Outputs |
| 572 | * None | 572 | * None |
| 573 | */ | 573 | */ |
| 574 | static void __init | 574 | void |
| 575 | ia64_mca_register_cpev (int cpev) | 575 | ia64_mca_register_cpev (int cpev) |
| 576 | { | 576 | { |
| 577 | /* Register the CPE interrupt vector with SAL */ | 577 | /* Register the CPE interrupt vector with SAL */ |
diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c index 6ef6ffb943..396004e8cd 100644 --- a/arch/ia64/kernel/palinfo.c +++ b/arch/ia64/kernel/palinfo.c | |||
| @@ -470,7 +470,7 @@ register_info(char *page) | |||
| 470 | return p - page; | 470 | return p - page; |
| 471 | } | 471 | } |
| 472 | 472 | ||
| 473 | static const char *proc_features[]={ | 473 | static char *proc_features_0[]={ /* Feature set 0 */ |
| 474 | NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, | 474 | NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, |
| 475 | NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL, | 475 | NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL, |
| 476 | NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, | 476 | NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, |
| @@ -502,25 +502,92 @@ static const char *proc_features[]={ | |||
| 502 | "Enable BERR promotion" | 502 | "Enable BERR promotion" |
| 503 | }; | 503 | }; |
| 504 | 504 | ||
| 505 | static char *proc_features_16[]={ /* Feature set 16 */ | ||
| 506 | "Disable ETM", | ||
| 507 | "Enable ETM", | ||
| 508 | "Enable MCA on half-way timer", | ||
| 509 | "Enable snoop WC", | ||
| 510 | NULL, | ||
| 511 | "Enable Fast Deferral", | ||
| 512 | "Disable MCA on memory aliasing", | ||
| 513 | "Enable RSB", | ||
| 514 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 515 | "DP system processor", | ||
| 516 | "Low Voltage", | ||
