diff options
author | Len Brown <len.brown@intel.com> | 2011-01-12 18:06:06 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2011-01-12 18:06:06 -0500 |
commit | 56dbed129df3fdd4caf9018b6e7599ee258a5420 (patch) | |
tree | b902491aef3a99efe0d9d49edd0f6e414dba654f /arch/ia64/kernel | |
parent | 2a2d31c8dc6f1ebcf5eab1d93a0cb0fb4ed57c7c (diff) | |
parent | f878133bf022717b880d0e0995b8f91436fd605c (diff) |
Merge branch 'linus' into idle-test
Diffstat (limited to 'arch/ia64/kernel')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 6 | ||||
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/perfmon.c | 9 | ||||
-rw-r--r-- | arch/ia64/kernel/smp.c | 13 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 2 |
5 files changed, 22 insertions, 10 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index c6c90f39f4d9..7b897b7b0ae6 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -477,6 +477,12 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) | |||
477 | if (!(pa->flags & ACPI_SRAT_CPU_ENABLED)) | 477 | if (!(pa->flags & ACPI_SRAT_CPU_ENABLED)) |
478 | return; | 478 | return; |
479 | 479 | ||
480 | if (srat_num_cpus >= ARRAY_SIZE(node_cpuid)) { | ||
481 | printk_once(KERN_WARNING | ||
482 | "node_cpuid[%d] is too small, may not be able to use all cpus\n", | ||
483 | ARRAY_SIZE(node_cpuid)); | ||
484 | return; | ||
485 | } | ||
480 | pxm = get_processor_proximity_domain(pa); | 486 | pxm = get_processor_proximity_domain(pa); |
481 | 487 | ||
482 | /* record this node in proximity bitmap */ | 488 | /* record this node in proximity bitmap */ |
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 9a26015c3e50..38c07b866901 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -633,7 +633,7 @@ ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action) | |||
633 | BUG_ON(bind_irq_vector(irq, vec, CPU_MASK_ALL)); | 633 | BUG_ON(bind_irq_vector(irq, vec, CPU_MASK_ALL)); |
634 | desc = irq_desc + irq; | 634 | desc = irq_desc + irq; |
635 | desc->status |= IRQ_PER_CPU; | 635 | desc->status |= IRQ_PER_CPU; |
636 | desc->chip = &irq_type_ia64_lsapic; | 636 | set_irq_chip(irq, &irq_type_ia64_lsapic); |
637 | if (action) | 637 | if (action) |
638 | setup_irq(irq, action); | 638 | setup_irq(irq, action); |
639 | set_irq_handler(irq, handle_percpu_irq); | 639 | set_irq_handler(irq, handle_percpu_irq); |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index 39e534f5a3b0..d92d5b5161fc 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
@@ -829,10 +829,9 @@ pfm_rvmalloc(unsigned long size) | |||
829 | unsigned long addr; | 829 | unsigned long addr; |
830 | 830 | ||
831 | size = PAGE_ALIGN(size); | 831 | size = PAGE_ALIGN(size); |
832 | mem = vmalloc(size); | 832 | mem = vzalloc(size); |
833 | if (mem) { | 833 | if (mem) { |
834 | //printk("perfmon: CPU%d pfm_rvmalloc(%ld)=%p\n", smp_processor_id(), size, mem); | 834 | //printk("perfmon: CPU%d pfm_rvmalloc(%ld)=%p\n", smp_processor_id(), size, mem); |
835 | memset(mem, 0, size); | ||
836 | addr = (unsigned long)mem; | 835 | addr = (unsigned long)mem; |
837 | while (size > 0) { | 836 | while (size > 0) { |
838 | pfm_reserve_page(addr); | 837 | pfm_reserve_page(addr); |
@@ -1542,7 +1541,7 @@ pfm_exit_smpl_buffer(pfm_buffer_fmt_t *fmt) | |||
1542 | * any operations on the root directory. However, we need a non-trivial | 1541 | * any operations on the root directory. However, we need a non-trivial |
1543 | * d_name - pfm: will go nicely and kill the special-casing in procfs. | 1542 | * d_name - pfm: will go nicely and kill the special-casing in procfs. |
1544 | */ | 1543 | */ |
1545 | static struct vfsmount *pfmfs_mnt; | 1544 | static struct vfsmount *pfmfs_mnt __read_mostly; |
1546 | 1545 | ||
1547 | static int __init | 1546 | static int __init |
1548 | init_pfm_fs(void) | 1547 | init_pfm_fs(void) |
@@ -2185,7 +2184,7 @@ static const struct file_operations pfm_file_ops = { | |||
2185 | }; | 2184 | }; |
2186 | 2185 | ||
2187 | static int | 2186 | static int |
2188 | pfmfs_delete_dentry(struct dentry *dentry) | 2187 | pfmfs_delete_dentry(const struct dentry *dentry) |
2189 | { | 2188 | { |
2190 | return 1; | 2189 | return 1; |
2191 | } | 2190 | } |
@@ -2233,7 +2232,7 @@ pfm_alloc_file(pfm_context_t *ctx) | |||
2233 | } | 2232 | } |
2234 | path.mnt = mntget(pfmfs_mnt); | 2233 | path.mnt = mntget(pfmfs_mnt); |
2235 | 2234 | ||
2236 | path.dentry->d_op = &pfmfs_dentry_operations; | 2235 | d_set_d_op(path.dentry, &pfmfs_dentry_operations); |
2237 | d_add(path.dentry, inode); | 2236 | d_add(path.dentry, inode); |
2238 | 2237 | ||
2239 | file = alloc_file(&path, FMODE_READ, &pfm_file_ops); | 2238 | file = alloc_file(&path, FMODE_READ, &pfm_file_ops); |
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index dabeefe21134..be450a3e9871 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -293,6 +293,7 @@ smp_flush_tlb_all (void) | |||
293 | void | 293 | void |
294 | smp_flush_tlb_mm (struct mm_struct *mm) | 294 | smp_flush_tlb_mm (struct mm_struct *mm) |
295 | { | 295 | { |
296 | cpumask_var_t cpus; | ||
296 | preempt_disable(); | 297 | preempt_disable(); |
297 | /* this happens for the common case of a single-threaded fork(): */ | 298 | /* this happens for the common case of a single-threaded fork(): */ |
298 | if (likely(mm == current->active_mm && atomic_read(&mm->mm_users) == 1)) | 299 | if (likely(mm == current->active_mm && atomic_read(&mm->mm_users) == 1)) |
@@ -301,9 +302,15 @@ smp_flush_tlb_mm (struct mm_struct *mm) | |||
301 | preempt_enable(); | 302 | preempt_enable(); |
302 | return; | 303 | return; |
303 | } | 304 | } |
304 | 305 | if (!alloc_cpumask_var(&cpus, GFP_ATOMIC)) { | |
305 | smp_call_function_many(mm_cpumask(mm), | 306 | smp_call_function((void (*)(void *))local_finish_flush_tlb_mm, |
306 | (void (*)(void *))local_finish_flush_tlb_mm, mm, 1); | 307 | mm, 1); |
308 | } else { | ||
309 | cpumask_copy(cpus, mm_cpumask(mm)); | ||
310 | smp_call_function_many(cpus, | ||
311 | (void (*)(void *))local_finish_flush_tlb_mm, mm, 1); | ||
312 | free_cpumask_var(cpus); | ||
313 | } | ||
307 | local_irq_disable(); | 314 | local_irq_disable(); |
308 | local_finish_flush_tlb_mm(mm); | 315 | local_finish_flush_tlb_mm(mm); |
309 | local_irq_enable(); | 316 | local_irq_enable(); |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index ed6f22eb5b12..9702fa92489e 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -168,7 +168,7 @@ timer_interrupt (int irq, void *dev_id) | |||
168 | { | 168 | { |
169 | unsigned long new_itm; | 169 | unsigned long new_itm; |
170 | 170 | ||
171 | if (unlikely(cpu_is_offline(smp_processor_id()))) { | 171 | if (cpu_is_offline(smp_processor_id())) { |
172 | return IRQ_HANDLED; | 172 | return IRQ_HANDLED; |
173 | } | 173 | } |
174 | 174 | ||