diff options
Diffstat (limited to 'arch/ia64')
| -rw-r--r-- | arch/ia64/include/asm/fpu.h | 2 | ||||
| -rw-r--r-- | arch/ia64/include/asm/gcc_intrin.h | 1 | ||||
| -rw-r--r-- | arch/ia64/include/asm/intrinsics.h | 1 | ||||
| -rw-r--r-- | arch/ia64/include/asm/kvm.h | 3 | ||||
| -rw-r--r-- | arch/ia64/include/asm/percpu.h | 4 | ||||
| -rw-r--r-- | arch/ia64/include/asm/swab.h | 2 | ||||
| -rw-r--r-- | arch/ia64/include/asm/topology.h | 2 | ||||
| -rw-r--r-- | arch/ia64/include/asm/uv/uv.h | 13 | ||||
| -rw-r--r-- | arch/ia64/kernel/acpi.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/iosapic.c | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/irq.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 12 | ||||
| -rw-r--r-- | arch/ia64/kernel/msi_ia64.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/vmlinux.lds.S | 1 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/msi_sn.c | 2 |
15 files changed, 39 insertions, 18 deletions
diff --git a/arch/ia64/include/asm/fpu.h b/arch/ia64/include/asm/fpu.h index 3859558ff0a..0c26157cffa 100644 --- a/arch/ia64/include/asm/fpu.h +++ b/arch/ia64/include/asm/fpu.h | |||
| @@ -6,8 +6,6 @@ | |||
| 6 | * David Mosberger-Tang <davidm@hpl.hp.com> | 6 | * David Mosberger-Tang <davidm@hpl.hp.com> |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | #include <asm/types.h> | ||
| 10 | |||
| 11 | /* floating point status register: */ | 9 | /* floating point status register: */ |
| 12 | #define FPSR_TRAP_VD (1 << 0) /* invalid op trap disabled */ | 10 | #define FPSR_TRAP_VD (1 << 0) /* invalid op trap disabled */ |
| 13 | #define FPSR_TRAP_DD (1 << 1) /* denormal trap disabled */ | 11 | #define FPSR_TRAP_DD (1 << 1) /* denormal trap disabled */ |
diff --git a/arch/ia64/include/asm/gcc_intrin.h b/arch/ia64/include/asm/gcc_intrin.h index 0f5b5592175..c2c5fd8fcac 100644 --- a/arch/ia64/include/asm/gcc_intrin.h +++ b/arch/ia64/include/asm/gcc_intrin.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | * Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> | 6 | * Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | #include <linux/types.h> | ||
| 9 | #include <linux/compiler.h> | 10 | #include <linux/compiler.h> |
| 10 | 11 | ||
| 11 | /* define this macro to get some asm stmts included in 'c' files */ | 12 | /* define this macro to get some asm stmts included in 'c' files */ |
diff --git a/arch/ia64/include/asm/intrinsics.h b/arch/ia64/include/asm/intrinsics.h index a3e44a5ed49..c47830e26cb 100644 --- a/arch/ia64/include/asm/intrinsics.h +++ b/arch/ia64/include/asm/intrinsics.h | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | #ifndef __ASSEMBLY__ | 11 | #ifndef __ASSEMBLY__ |
| 12 | 12 | ||
| 13 | #include <linux/types.h> | ||
| 13 | /* include compiler specific intrinsics */ | 14 | /* include compiler specific intrinsics */ |
| 14 | #include <asm/ia64regs.h> | 15 | #include <asm/ia64regs.h> |
| 15 | #ifdef __INTEL_COMPILER | 16 | #ifdef __INTEL_COMPILER |
diff --git a/arch/ia64/include/asm/kvm.h b/arch/ia64/include/asm/kvm.h index bfa86b6af7c..2b0a38e8470 100644 --- a/arch/ia64/include/asm/kvm.h +++ b/arch/ia64/include/asm/kvm.h | |||
| @@ -21,8 +21,7 @@ | |||
| 21 | * | 21 | * |
| 22 | */ | 22 | */ |
| 23 | 23 | ||
| 24 | #include <asm/types.h> | 24 | #include <linux/types.h> |
| 25 | |||
| 26 | #include <linux/ioctl.h> | 25 | #include <linux/ioctl.h> |
| 27 | 26 | ||
| 28 | /* Select x86 specific features in <linux/kvm.h> */ | 27 | /* Select x86 specific features in <linux/kvm.h> */ |
diff --git a/arch/ia64/include/asm/percpu.h b/arch/ia64/include/asm/percpu.h index 77f30b664b4..30cf46534dd 100644 --- a/arch/ia64/include/asm/percpu.h +++ b/arch/ia64/include/asm/percpu.h | |||
| @@ -27,12 +27,12 @@ extern void *per_cpu_init(void); | |||
| 27 | 27 | ||
| 28 | #else /* ! SMP */ | 28 | #else /* ! SMP */ |
| 29 | 29 | ||
| 30 | #define PER_CPU_ATTRIBUTES __attribute__((__section__(".data.percpu"))) | ||
| 31 | |||
| 32 | #define per_cpu_init() (__phys_per_cpu_start) | 30 | #define per_cpu_init() (__phys_per_cpu_start) |
| 33 | 31 | ||
| 34 | #endif /* SMP */ | 32 | #endif /* SMP */ |
| 35 | 33 | ||
| 34 | #define PER_CPU_BASE_SECTION ".data.percpu" | ||
| 35 | |||
| 36 | /* | 36 | /* |
| 37 | * Be extremely careful when taking the address of this variable! Due to virtual | 37 | * Be extremely careful when taking the address of this variable! Due to virtual |
| 38 | * remapping, it is different from the canonical address returned by __get_cpu_var(var)! | 38 | * remapping, it is different from the canonical address returned by __get_cpu_var(var)! |
diff --git a/arch/ia64/include/asm/swab.h b/arch/ia64/include/asm/swab.h index 6aa58b699ee..c89a8cb5d8a 100644 --- a/arch/ia64/include/asm/swab.h +++ b/arch/ia64/include/asm/swab.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co. | 6 | * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co. |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | #include <asm/types.h> | 9 | #include <linux/types.h> |
| 10 | #include <asm/intrinsics.h> | 10 | #include <asm/intrinsics.h> |
| 11 | #include <linux/compiler.h> | 11 | #include <linux/compiler.h> |
| 12 | 12 | ||
diff --git a/arch/ia64/include/asm/topology.h b/arch/ia64/include/asm/topology.h index 32f3af1641c..3193f4417e1 100644 --- a/arch/ia64/include/asm/topology.h +++ b/arch/ia64/include/asm/topology.h | |||
| @@ -84,7 +84,7 @@ void build_cpu_to_node_map(void); | |||
| 84 | .child = NULL, \ | 84 | .child = NULL, \ |
| 85 | .groups = NULL, \ | 85 | .groups = NULL, \ |
| 86 | .min_interval = 8, \ | 86 | .min_interval = 8, \ |
| 87 | .max_interval = 8*(min(num_online_cpus(), 32)), \ | 87 | .max_interval = 8*(min(num_online_cpus(), 32U)), \ |
| 88 | .busy_factor = 64, \ | 88 | .busy_factor = 64, \ |
| 89 | .imbalance_pct = 125, \ | 89 | .imbalance_pct = 125, \ |
| 90 | .cache_nice_tries = 2, \ | 90 | .cache_nice_tries = 2, \ |
diff --git a/arch/ia64/include/asm/uv/uv.h b/arch/ia64/include/asm/uv/uv.h new file mode 100644 index 00000000000..61b5bdfd980 --- /dev/null +++ b/arch/ia64/include/asm/uv/uv.h | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | #ifndef _ASM_IA64_UV_UV_H | ||
| 2 | #define _ASM_IA64_UV_UV_H | ||
| 3 | |||
| 4 | #include <asm/system.h> | ||
| 5 | #include <asm/sn/simulator.h> | ||
| 6 | |||
| 7 | static inline int is_uv_system(void) | ||
| 8 | { | ||
| 9 | /* temporary support for running on hardware simulator */ | ||
| 10 | return IS_MEDUSA() || ia64_platform_is("uv"); | ||
| 11 | } | ||
| 12 | |||
| 13 | #endif /* _ASM_IA64_UV_UV_H */ | ||
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index d541671caf4..bdef2ce38c8 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
| @@ -199,6 +199,10 @@ char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size) | |||
| 199 | return __va(phys_addr); | 199 | return __va(phys_addr); |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | void __init __acpi_unmap_table(char *map, unsigned long size) | ||
| 203 | { | ||
| 204 | } | ||
| 205 | |||
| 202 | /* -------------------------------------------------------------------------- | 206 | /* -------------------------------------------------------------------------- |
| 203 | Boot-time Table Parsing | 207 | Boot-time Table Parsing |
| 204 | -------------------------------------------------------------------------- */ | 208 | -------------------------------------------------------------------------- */ |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index e13125058be..166e0d839fa 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
| @@ -880,7 +880,7 @@ iosapic_unregister_intr (unsigned int gsi) | |||
| 880 | if (iosapic_intr_info[irq].count == 0) { | 880 | if (iosapic_intr_info[irq].count == 0) { |
| 881 | #ifdef CONFIG_SMP | 881 | #ifdef CONFIG_SMP |
| 882 | /* Clear affinity */ | 882 | /* Clear affinity */ |
| 883 | cpus_setall(idesc->affinity); | 883 | cpumask_setall(idesc->affinity); |
| 884 | #endif | 884 | #endif |
| 885 | /* Clear the interrupt information */ | 885 | /* Clear the interrupt information */ |
| 886 | iosapic_intr_info[irq].dest = 0; | 886 | iosapic_intr_info[irq].dest = 0; |
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index 4f596613bff..7429752ef5a 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
| @@ -103,7 +103,7 @@ static char irq_redir [NR_IRQS]; // = { [0 ... NR_IRQS-1] = 1 }; | |||
| 103 | void set_irq_affinity_info (unsigned int irq, int hwid, int redir) | 103 | void set_irq_affinity_info (unsigned int irq, int hwid, int redir) |
| 104 | { | 104 | { |
| 105 | if (irq < NR_IRQS) { | 105 | if (irq < NR_IRQS) { |
| 106 | cpumask_copy(&irq_desc[irq].affinity, | 106 | cpumask_copy(irq_desc[irq].affinity, |
| 107 | cpumask_of(cpu_logical_id(hwid))); | 107 | cpumask_of(cpu_logical_id(hwid))); |
| 108 | irq_redir[irq] = (char) (redir & 0xff); | 108 | irq_redir[irq] = (char) (redir & 0xff); |
| 109 | } | 109 | } |
| @@ -148,7 +148,7 @@ static void migrate_irqs(void) | |||
| 148 | if (desc->status == IRQ_PER_CPU) | 148 | if (desc->status == IRQ_PER_CPU) |
| 149 | continue; | 149 | continue; |
| 150 | 150 | ||
| 151 | if (cpumask_any_and(&irq_desc[irq].affinity, cpu_online_mask) | 151 | if (cpumask_any_and(irq_desc[irq].affinity, cpu_online_mask) |
| 152 | >= nr_cpu_ids) { | 152 | >= nr_cpu_ids) { |
| 153 | /* | 153 | /* |
| 154 | * Save it for phase 2 processing | 154 | * Save it for phase 2 processing |
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 28d3d483db9..927ad027820 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
| @@ -493,11 +493,13 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
| 493 | saved_tpr = ia64_getreg(_IA64_REG_CR_TPR); | 493 | saved_tpr = ia64_getreg(_IA64_REG_CR_TPR); |
| 494 | ia64_srlz_d(); | 494 | ia64_srlz_d(); |
| 495 | while (vector != IA64_SPURIOUS_INT_VECTOR) { | 495 | while (vector != IA64_SPURIOUS_INT_VECTOR) { |
| 496 | struct irq_desc *desc = irq_to_desc(vector); | ||
| 497 | |||
| 496 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { | 498 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { |
| 497 | smp_local_flush_tlb(); | 499 | smp_local_flush_tlb(); |
| 498 | kstat_this_cpu.irqs[vector]++; | 500 | kstat_incr_irqs_this_cpu(vector, desc); |
| 499 | } else if (unlikely(IS_RESCHEDULE(vector))) | 501 | } else if (unlikely(IS_RESCHEDULE(vector))) |
| 500 | kstat_this_cpu.irqs[vector]++; | 502 | kstat_incr_irqs_this_cpu(vector, desc); |
| 501 | else { | 503 | else { |
| 502 | int irq = local_vector_to_irq(vector); | 504 | int irq = local_vector_to_irq(vector); |
| 503 | 505 | ||
| @@ -551,11 +553,13 @@ void ia64_process_pending_intr(void) | |||
| 551 | * Perform normal interrupt style processing | 553 | * Perform normal interrupt style processing |
| 552 | */ | 554 | */ |
| 553 | while (vector != IA64_SPURIOUS_INT_VECTOR) { | 555 | while (vector != IA64_SPURIOUS_INT_VECTOR) { |
| 556 | struct irq_desc *desc = irq_to_desc(vector); | ||
| 557 | |||
| 554 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { | 558 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { |
| 555 | smp_local_flush_tlb(); | 559 | smp_local_flush_tlb(); |
| 556 | kstat_this_cpu.irqs[vector]++; | 560 | kstat_incr_irqs_this_cpu(vector, desc); |
| 557 | } else if (unlikely(IS_RESCHEDULE(vector))) | 561 | } else if (unlikely(IS_RESCHEDULE(vector))) |
| 558 | kstat_this_cpu.irqs[vector]++; | 562 | kstat_incr_irqs_this_cpu(vector, desc); |
| 559 | else { | 563 | else { |
| 560 | struct pt_regs *old_regs = set_irq_regs(NULL); | 564 | struct pt_regs *old_regs = set_irq_regs(NULL); |
| 561 | int irq = local_vector_to_irq(vector); | 565 | int irq = local_vector_to_irq(vector); |
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c index 89033933903..dcb6b7c51ea 100644 --- a/arch/ia64/kernel/msi_ia64.c +++ b/arch/ia64/kernel/msi_ia64.c | |||
| @@ -75,7 +75,7 @@ static void ia64_set_msi_irq_affinity(unsigned int irq, | |||
| 75 | msg.data = data; | 75 | msg.data = data; |
| 76 | 76 | ||
| 77 | write_msi_msg(irq, &msg); | 77 | write_msi_msg(irq, &msg); |
| 78 | irq_desc[irq].affinity = cpumask_of_cpu(cpu); | 78 | cpumask_copy(irq_desc[irq].affinity, cpumask_of(cpu)); |
| 79 | } | 79 | } |
| 80 | #endif /* CONFIG_SMP */ | 80 | #endif /* CONFIG_SMP */ |
| 81 | 81 | ||
| @@ -187,7 +187,7 @@ static void dmar_msi_set_affinity(unsigned int irq, const struct cpumask *mask) | |||
| 187 | msg.address_lo |= MSI_ADDR_DESTID_CPU(cpu_physical_id(cpu)); | 187 | msg.address_lo |= MSI_ADDR_DESTID_CPU(cpu_physical_id(cpu)); |
| 188 | 188 | ||
| 189 | dmar_msi_write(irq, &msg); | 189 | dmar_msi_write(irq, &msg); |
| 190 | irq_desc[irq].affinity = *mask; | 190 | cpumask_copy(irq_desc[irq].affinity, mask); |
| 191 | } | 191 | } |
| 192 | #endif /* CONFIG_SMP */ | 192 | #endif /* CONFIG_SMP */ |
| 193 | 193 | ||
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 10a7d47e851..f45e4e508ec 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
| @@ -219,6 +219,7 @@ SECTIONS | |||
| 219 | .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET) | 219 | .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET) |
| 220 | { | 220 | { |
| 221 | __per_cpu_start = .; | 221 | __per_cpu_start = .; |
| 222 | *(.data.percpu.page_aligned) | ||
| 222 | *(.data.percpu) | 223 | *(.data.percpu) |
| 223 | *(.data.percpu.shared_aligned) | 224 | *(.data.percpu.shared_aligned) |
| 224 | __per_cpu_end = .; | 225 | __per_cpu_end = .; |
diff --git a/arch/ia64/sn/kernel/msi_sn.c b/arch/ia64/sn/kernel/msi_sn.c index ca553b0429c..81e428943d7 100644 --- a/arch/ia64/sn/kernel/msi_sn.c +++ b/arch/ia64/sn/kernel/msi_sn.c | |||
| @@ -205,7 +205,7 @@ static void sn_set_msi_irq_affinity(unsigned int irq, | |||
| 205 | msg.address_lo = (u32)(bus_addr & 0x00000000ffffffff); | 205 | msg.address_lo = (u32)(bus_addr & 0x00000000ffffffff); |
| 206 | 206 | ||
| 207 | write_msi_msg(irq, &msg); | 207 | write_msi_msg(irq, &msg); |
| 208 | irq_desc[irq].affinity = *cpu_mask; | 208 | cpumask_copy(irq_desc[irq].affinity, cpu_mask); |
| 209 | } | 209 | } |
| 210 | #endif /* CONFIG_SMP */ | 210 | #endif /* CONFIG_SMP */ |
| 211 | 211 | ||
