aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-09 18:28:11 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-09 18:28:11 -0500
commit8fc543c8f004fc9dfe0a262dc452dfe2eca4589b (patch)
treeb14a215ffe0f8c594ac517257855a681ba6b7b79
parenta70a93229943c177f0062490b4f8e44be4cef685 (diff)
parent7f6ff62a8f3a4e68258958196098c6f71563ae61 (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.c2
-rw-r--r--arch/ia64/ia32/ia32priv.h1
-rw-r--r--arch/ia64/kernel/.gitignore1
-rw-r--r--arch/ia64/kernel/acpi.c8
-rw-r--r--arch/ia64/kernel/efi.c5
-rw-r--r--arch/ia64/kernel/iosapic.c18
-rw-r--r--arch/ia64/kernel/irq.c6
-rw-r--r--arch/ia64/kernel/mca.c2
-rw-r--r--arch/ia64/kernel/palinfo.c91
-rw-r--r--arch/ia64/kernel/patch.c3
-rw-r--r--arch/ia64/kernel/perfmon.c4
-rw-r--r--arch/ia64/mm/contig.c74
-rw-r--r--arch/ia64/sn/kernel/irq.c8
-rw-r--r--arch/ia64/sn/kernel/xpc_main.c12
-rw-r--r--include/asm-ia64/pal.h5
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
751static 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 */
574static void __init 574void
575ia64_mca_register_cpev (int cpev) 575ia64_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
473static const char *proc_features[]={ 473static 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
505static 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",