diff options
Diffstat (limited to 'arch/ia64/kernel')
| -rw-r--r-- | arch/ia64/kernel/entry.S | 25 | ||||
| -rw-r--r-- | arch/ia64/kernel/fsys.S | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/gate.S | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/head.S | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/ivt.S | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/mca.c | 11 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 9 |
7 files changed, 35 insertions, 18 deletions
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index 3c8821024509..ba0b6a1f429f 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | #include <asm/cache.h> | 37 | #include <asm/cache.h> |
| 38 | #include <asm/errno.h> | 38 | #include <asm/errno.h> |
| 39 | #include <asm/kregs.h> | 39 | #include <asm/kregs.h> |
| 40 | #include <asm/offsets.h> | 40 | #include <asm/asm-offsets.h> |
| 41 | #include <asm/pgtable.h> | 41 | #include <asm/pgtable.h> |
| 42 | #include <asm/percpu.h> | 42 | #include <asm/percpu.h> |
| 43 | #include <asm/processor.h> | 43 | #include <asm/processor.h> |
| @@ -470,6 +470,29 @@ ENTRY(load_switch_stack) | |||
| 470 | br.cond.sptk.many b7 | 470 | br.cond.sptk.many b7 |
| 471 | END(load_switch_stack) | 471 | END(load_switch_stack) |
| 472 | 472 | ||
| 473 | GLOBAL_ENTRY(prefetch_stack) | ||
| 474 | add r14 = -IA64_SWITCH_STACK_SIZE, sp | ||
| 475 | add r15 = IA64_TASK_THREAD_KSP_OFFSET, in0 | ||
| 476 | ;; | ||
| 477 | ld8 r16 = [r15] // load next's stack pointer | ||
| 478 | lfetch.fault.excl [r14], 128 | ||
| 479 | ;; | ||
| 480 | lfetch.fault.excl [r14], 128 | ||
| 481 | lfetch.fault [r16], 128 | ||
| 482 | ;; | ||
| 483 | lfetch.fault.excl [r14], 128 | ||
| 484 | lfetch.fault [r16], 128 | ||
| 485 | ;; | ||
| 486 | lfetch.fault.excl [r14], 128 | ||
| 487 | lfetch.fault [r16], 128 | ||
| 488 | ;; | ||
| 489 | lfetch.fault.excl [r14], 128 | ||
| 490 | lfetch.fault [r16], 128 | ||
| 491 | ;; | ||
| 492 | lfetch.fault [r16], 128 | ||
| 493 | br.ret.sptk.many rp | ||
| 494 | END(prefetch_switch_stack) | ||
| 495 | |||
| 473 | GLOBAL_ENTRY(execve) | 496 | GLOBAL_ENTRY(execve) |
| 474 | mov r15=__NR_execve // put syscall number in place | 497 | mov r15=__NR_execve // put syscall number in place |
| 475 | break __BREAK_SYSCALL | 498 | break __BREAK_SYSCALL |
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S index 7d7684a369d3..2ddbac6f4999 100644 --- a/arch/ia64/kernel/fsys.S +++ b/arch/ia64/kernel/fsys.S | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <asm/asmmacro.h> | 15 | #include <asm/asmmacro.h> |
| 16 | #include <asm/errno.h> | 16 | #include <asm/errno.h> |
| 17 | #include <asm/offsets.h> | 17 | #include <asm/asm-offsets.h> |
| 18 | #include <asm/percpu.h> | 18 | #include <asm/percpu.h> |
| 19 | #include <asm/thread_info.h> | 19 | #include <asm/thread_info.h> |
| 20 | #include <asm/sal.h> | 20 | #include <asm/sal.h> |
diff --git a/arch/ia64/kernel/gate.S b/arch/ia64/kernel/gate.S index 86948ce63e43..86064ca98952 100644 --- a/arch/ia64/kernel/gate.S +++ b/arch/ia64/kernel/gate.S | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | #include <asm/asmmacro.h> | 11 | #include <asm/asmmacro.h> |
| 12 | #include <asm/errno.h> | 12 | #include <asm/errno.h> |
| 13 | #include <asm/offsets.h> | 13 | #include <asm/asm-offsets.h> |
| 14 | #include <asm/sigcontext.h> | 14 | #include <asm/sigcontext.h> |
| 15 | #include <asm/system.h> | 15 | #include <asm/system.h> |
| 16 | #include <asm/unistd.h> | 16 | #include <asm/unistd.h> |
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S index 8d3a9291b47f..bfe65b2e8621 100644 --- a/arch/ia64/kernel/head.S +++ b/arch/ia64/kernel/head.S | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <asm/fpu.h> | 25 | #include <asm/fpu.h> |
| 26 | #include <asm/kregs.h> | 26 | #include <asm/kregs.h> |
| 27 | #include <asm/mmu_context.h> | 27 | #include <asm/mmu_context.h> |
| 28 | #include <asm/offsets.h> | 28 | #include <asm/asm-offsets.h> |
| 29 | #include <asm/pal.h> | 29 | #include <asm/pal.h> |
| 30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
| 31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S index 3bb3a13c4047..3ba8384cb43d 100644 --- a/arch/ia64/kernel/ivt.S +++ b/arch/ia64/kernel/ivt.S | |||
| @@ -44,7 +44,7 @@ | |||
| 44 | #include <asm/break.h> | 44 | #include <asm/break.h> |
| 45 | #include <asm/ia32.h> | 45 | #include <asm/ia32.h> |
| 46 | #include <asm/kregs.h> | 46 | #include <asm/kregs.h> |
| 47 | #include <asm/offsets.h> | 47 | #include <asm/asm-offsets.h> |
| 48 | #include <asm/pgtable.h> | 48 | #include <asm/pgtable.h> |
| 49 | #include <asm/processor.h> | 49 | #include <asm/processor.h> |
| 50 | #include <asm/ptrace.h> | 50 | #include <asm/ptrace.h> |
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index 4ebbf3974381..8d484204a3ff 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
| @@ -491,12 +491,7 @@ init_handler_platform (pal_min_state_area_t *ms, | |||
| 491 | unw_init_from_interruption(&info, current, pt, sw); | 491 | unw_init_from_interruption(&info, current, pt, sw); |
| 492 | ia64_do_show_stack(&info, NULL); | 492 | ia64_do_show_stack(&info, NULL); |
| 493 | 493 | ||
| 494 | #ifdef CONFIG_SMP | 494 | if (read_trylock(&tasklist_lock)) { |
| 495 | /* read_trylock() would be handy... */ | ||
| 496 | if (!tasklist_lock.write_lock) | ||
| 497 | read_lock(&tasklist_lock); | ||
| 498 | #endif | ||
| 499 | { | ||
| 500 | struct task_struct *g, *t; | 495 | struct task_struct *g, *t; |
| 501 | do_each_thread (g, t) { | 496 | do_each_thread (g, t) { |
| 502 | if (t == current) | 497 | if (t == current) |
| @@ -506,10 +501,6 @@ init_handler_platform (pal_min_state_area_t *ms, | |||
| 506 | show_stack(t, NULL); | 501 | show_stack(t, NULL); |
| 507 | } while_each_thread (g, t); | 502 | } while_each_thread (g, t); |
| 508 | } | 503 | } |
| 509 | #ifdef CONFIG_SMP | ||
| 510 | if (!tasklist_lock.write_lock) | ||
| 511 | read_unlock(&tasklist_lock); | ||
| 512 | #endif | ||
| 513 | 504 | ||
| 514 | printk("\nINIT dump complete. Please reboot now.\n"); | 505 | printk("\nINIT dump complete. Please reboot now.\n"); |
| 515 | while (1); /* hang city if no debugger */ | 506 | while (1); /* hang city if no debugger */ |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index f1201ac8a116..1650353e3f77 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <linux/pagemap.h> | 38 | #include <linux/pagemap.h> |
| 39 | #include <linux/mount.h> | 39 | #include <linux/mount.h> |
| 40 | #include <linux/bitops.h> | 40 | #include <linux/bitops.h> |
| 41 | #include <linux/rcupdate.h> | ||
| 41 | 42 | ||
| 42 | #include <asm/errno.h> | 43 | #include <asm/errno.h> |
| 43 | #include <asm/intrinsics.h> | 44 | #include <asm/intrinsics.h> |
| @@ -496,7 +497,7 @@ typedef struct { | |||
| 496 | static pfm_stats_t pfm_stats[NR_CPUS]; | 497 | static pfm_stats_t pfm_stats[NR_CPUS]; |
| 497 | static pfm_session_t pfm_sessions; /* global sessions information */ | 498 | static pfm_session_t pfm_sessions; /* global sessions information */ |
| 498 | 499 | ||
| 499 | static spinlock_t pfm_alt_install_check = SPIN_LOCK_UNLOCKED; | 500 | static DEFINE_SPINLOCK(pfm_alt_install_check); |
| 500 | static pfm_intr_handler_desc_t *pfm_alt_intr_handler; | 501 | static pfm_intr_handler_desc_t *pfm_alt_intr_handler; |
| 501 | 502 | ||
| 502 | static struct proc_dir_entry *perfmon_dir; | 503 | static struct proc_dir_entry *perfmon_dir; |
| @@ -2217,15 +2218,17 @@ static void | |||
| 2217 | pfm_free_fd(int fd, struct file *file) | 2218 | pfm_free_fd(int fd, struct file *file) |
| 2218 | { | 2219 | { |
| 2219 | struct files_struct *files = current->files; | 2220 | struct files_struct *files = current->files; |
| 2221 | struct fdtable *fdt = files_fdtable(files); | ||
| 2220 | 2222 | ||
| 2221 | /* | 2223 | /* |
| 2222 | * there ie no fd_uninstall(), so we do it here | 2224 | * there ie no fd_uninstall(), so we do it here |
| 2223 | */ | 2225 | */ |
| 2224 | spin_lock(&files->file_lock); | 2226 | spin_lock(&files->file_lock); |
| 2225 | files->fd[fd] = NULL; | 2227 | rcu_assign_pointer(fdt->fd[fd], NULL); |
| 2226 | spin_unlock(&files->file_lock); | 2228 | spin_unlock(&files->file_lock); |
| 2227 | 2229 | ||
| 2228 | if (file) put_filp(file); | 2230 | if (file) |
| 2231 | put_filp(file); | ||
| 2229 | put_unused_fd(fd); | 2232 | put_unused_fd(fd); |
| 2230 | } | 2233 | } |
| 2231 | 2234 | ||
