diff options
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/include/asm/socket.h | 3 | ||||
-rw-r--r-- | arch/sparc/include/asm/tlb_64.h | 4 | ||||
-rw-r--r-- | arch/sparc/kernel/irq_64.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/smp_64.c | 4 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_64.S | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/time_64.c | 6 |
6 files changed, 13 insertions, 8 deletions
diff --git a/arch/sparc/include/asm/socket.h b/arch/sparc/include/asm/socket.h index bf50d0c2d583..982a12f959f4 100644 --- a/arch/sparc/include/asm/socket.h +++ b/arch/sparc/include/asm/socket.h | |||
@@ -50,6 +50,9 @@ | |||
50 | 50 | ||
51 | #define SO_MARK 0x0022 | 51 | #define SO_MARK 0x0022 |
52 | 52 | ||
53 | #define SO_TIMESTAMPING 0x0023 | ||
54 | #define SCM_TIMESTAMPING SO_TIMESTAMPING | ||
55 | |||
53 | /* Security levels - as per NRL IPv6 - don't actually do anything */ | 56 | /* Security levels - as per NRL IPv6 - don't actually do anything */ |
54 | #define SO_SECURITY_AUTHENTICATION 0x5001 | 57 | #define SO_SECURITY_AUTHENTICATION 0x5001 |
55 | #define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002 | 58 | #define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002 |
diff --git a/arch/sparc/include/asm/tlb_64.h b/arch/sparc/include/asm/tlb_64.h index ec81cdedef2c..ee38e731bfa6 100644 --- a/arch/sparc/include/asm/tlb_64.h +++ b/arch/sparc/include/asm/tlb_64.h | |||
@@ -57,6 +57,8 @@ static inline struct mmu_gather *tlb_gather_mmu(struct mm_struct *mm, unsigned i | |||
57 | 57 | ||
58 | static inline void tlb_flush_mmu(struct mmu_gather *mp) | 58 | static inline void tlb_flush_mmu(struct mmu_gather *mp) |
59 | { | 59 | { |
60 | if (!mp->fullmm) | ||
61 | flush_tlb_pending(); | ||
60 | if (mp->need_flush) { | 62 | if (mp->need_flush) { |
61 | free_pages_and_swap_cache(mp->pages, mp->pages_nr); | 63 | free_pages_and_swap_cache(mp->pages, mp->pages_nr); |
62 | mp->pages_nr = 0; | 64 | mp->pages_nr = 0; |
@@ -78,8 +80,6 @@ static inline void tlb_finish_mmu(struct mmu_gather *mp, unsigned long start, un | |||
78 | 80 | ||
79 | if (mp->fullmm) | 81 | if (mp->fullmm) |
80 | mp->fullmm = 0; | 82 | mp->fullmm = 0; |
81 | else | ||
82 | flush_tlb_pending(); | ||
83 | 83 | ||
84 | /* keep the page table cache within bounds */ | 84 | /* keep the page table cache within bounds */ |
85 | check_pgt_cache(); | 85 | check_pgt_cache(); |
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c index 1c378d8e90c5..8ba064f08a6f 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c | |||
@@ -185,7 +185,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
185 | seq_printf(p, "%10u ", kstat_irqs(i)); | 185 | seq_printf(p, "%10u ", kstat_irqs(i)); |
186 | #else | 186 | #else |
187 | for_each_online_cpu(j) | 187 | for_each_online_cpu(j) |
188 | seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); | 188 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); |
189 | #endif | 189 | #endif |
190 | seq_printf(p, " %9s", irq_desc[i].chip->typename); | 190 | seq_printf(p, " %9s", irq_desc[i].chip->typename); |
191 | seq_printf(p, " %s", action->name); | 191 | seq_printf(p, " %s", action->name); |
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 6cd1a5b65067..79457f682b5a 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c | |||
@@ -1031,7 +1031,7 @@ void smp_fetch_global_regs(void) | |||
1031 | * If the address space is non-shared (ie. mm->count == 1) we avoid | 1031 | * If the address space is non-shared (ie. mm->count == 1) we avoid |
1032 | * cross calls when we want to flush the currently running process's | 1032 | * cross calls when we want to flush the currently running process's |
1033 | * tlb state. This is done by clearing all cpu bits except the current | 1033 | * tlb state. This is done by clearing all cpu bits except the current |
1034 | * processor's in current->active_mm->cpu_vm_mask and performing the | 1034 | * processor's in current->mm->cpu_vm_mask and performing the |
1035 | * flush locally only. This will force any subsequent cpus which run | 1035 | * flush locally only. This will force any subsequent cpus which run |
1036 | * this task to flush the context from the local tlb if the process | 1036 | * this task to flush the context from the local tlb if the process |
1037 | * migrates to another cpu (again). | 1037 | * migrates to another cpu (again). |
@@ -1074,7 +1074,7 @@ void smp_flush_tlb_pending(struct mm_struct *mm, unsigned long nr, unsigned long | |||
1074 | u32 ctx = CTX_HWBITS(mm->context); | 1074 | u32 ctx = CTX_HWBITS(mm->context); |
1075 | int cpu = get_cpu(); | 1075 | int cpu = get_cpu(); |
1076 | 1076 | ||
1077 | if (mm == current->active_mm && atomic_read(&mm->mm_users) == 1) | 1077 | if (mm == current->mm && atomic_read(&mm->mm_users) == 1) |
1078 | mm->cpu_vm_mask = cpumask_of_cpu(cpu); | 1078 | mm->cpu_vm_mask = cpumask_of_cpu(cpu); |
1079 | else | 1079 | else |
1080 | smp_cross_call_masked(&xcall_flush_tlb_pending, | 1080 | smp_cross_call_masked(&xcall_flush_tlb_pending, |
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index f93c42a2b522..a8000b1cda74 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
@@ -51,7 +51,7 @@ sys_call_table32: | |||
51 | /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 | 51 | /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 |
52 | .word compat_sys_fcntl64, sys_inotify_rm_watch, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount | 52 | .word compat_sys_fcntl64, sys_inotify_rm_watch, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount |
53 | /*160*/ .word compat_sys_sched_setaffinity, compat_sys_sched_getaffinity, sys32_getdomainname, sys32_setdomainname, sys_nis_syscall | 53 | /*160*/ .word compat_sys_sched_setaffinity, compat_sys_sched_getaffinity, sys32_getdomainname, sys32_setdomainname, sys_nis_syscall |
54 | .word sys_quotactl, sys_set_tid_address, compat_sys_mount, sys_ustat, sys32_setxattr | 54 | .word sys_quotactl, sys_set_tid_address, compat_sys_mount, compat_sys_ustat, sys32_setxattr |
55 | /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents | 55 | /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents |
56 | .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr | 56 | .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr |
57 | /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall | 57 | /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall |
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c index 2db3c2229b95..4ee2e48c4b39 100644 --- a/arch/sparc/kernel/time_64.c +++ b/arch/sparc/kernel/time_64.c | |||
@@ -36,10 +36,10 @@ | |||
36 | #include <linux/clocksource.h> | 36 | #include <linux/clocksource.h> |
37 | #include <linux/of_device.h> | 37 | #include <linux/of_device.h> |
38 | #include <linux/platform_device.h> | 38 | #include <linux/platform_device.h> |
39 | #include <linux/irq.h> | ||
39 | 40 | ||
40 | #include <asm/oplib.h> | 41 | #include <asm/oplib.h> |
41 | #include <asm/timer.h> | 42 | #include <asm/timer.h> |
42 | #include <asm/irq.h> | ||
43 | #include <asm/io.h> | 43 | #include <asm/io.h> |
44 | #include <asm/prom.h> | 44 | #include <asm/prom.h> |
45 | #include <asm/starfire.h> | 45 | #include <asm/starfire.h> |
@@ -724,12 +724,14 @@ void timer_interrupt(int irq, struct pt_regs *regs) | |||
724 | unsigned long tick_mask = tick_ops->softint_mask; | 724 | unsigned long tick_mask = tick_ops->softint_mask; |
725 | int cpu = smp_processor_id(); | 725 | int cpu = smp_processor_id(); |
726 | struct clock_event_device *evt = &per_cpu(sparc64_events, cpu); | 726 | struct clock_event_device *evt = &per_cpu(sparc64_events, cpu); |
727 | struct irq_desc *desc; | ||
727 | 728 | ||
728 | clear_softint(tick_mask); | 729 | clear_softint(tick_mask); |
729 | 730 | ||
730 | irq_enter(); | 731 | irq_enter(); |
731 | 732 | ||
732 | kstat_this_cpu.irqs[0]++; | 733 | desc = irq_to_desc(0); |
734 | kstat_incr_irqs_this_cpu(0, desc); | ||
733 | 735 | ||
734 | if (unlikely(!evt->event_handler)) { | 736 | if (unlikely(!evt->event_handler)) { |
735 | printk(KERN_WARNING | 737 | printk(KERN_WARNING |