aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-03 13:50:05 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-03 13:50:05 -0500
commit0f64df30124018de92c7f22a044b975da8dd52cc (patch)
tree752226295c4683a7a32209a9a9f84a9955752863
parentc8b4ec8351d21da3299b045b37920e5cf5590793 (diff)
parentb4a9eb4cd5966c8aad3d007d206a2cbda97d6928 (diff)
Merge branch 'parisc-4.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc updates from Helge Deller: - limit usage of processor-internal cr16 clocksource to UP systems only - segfault info lines in syslog were too long, split those up - drop own TIF_RESTORE_SIGMASK flag and switch to generic code * 'parisc-4.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Add line-break when printing segfault info parisc: Drop TIF_RESTORE_SIGMASK and switch to generic code parisc: Mark cr16 clocksource unstable on SMP systems
-rw-r--r--arch/parisc/include/asm/thread_info.h1
-rw-r--r--arch/parisc/kernel/time.c23
-rw-r--r--arch/parisc/mm/fault.c2
3 files changed, 21 insertions, 5 deletions
diff --git a/arch/parisc/include/asm/thread_info.h b/arch/parisc/include/asm/thread_info.h
index 7581330ea35b..88fe0aad4390 100644
--- a/arch/parisc/include/asm/thread_info.h
+++ b/arch/parisc/include/asm/thread_info.h
@@ -49,7 +49,6 @@ struct thread_info {
49#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling TIF_NEED_RESCHED */ 49#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling TIF_NEED_RESCHED */
50#define TIF_32BIT 4 /* 32 bit binary */ 50#define TIF_32BIT 4 /* 32 bit binary */
51#define TIF_MEMDIE 5 /* is terminating due to OOM killer */ 51#define TIF_MEMDIE 5 /* is terminating due to OOM killer */
52#define TIF_RESTORE_SIGMASK 6 /* restore saved signal mask */
53#define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ 52#define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */
54#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */ 53#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */
55#define TIF_SINGLESTEP 9 /* single stepping? */ 54#define TIF_SINGLESTEP 9 /* single stepping? */
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index da0d9cb63403..1e22f981cd81 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -235,9 +235,26 @@ void __init time_init(void)
235 235
236 cr16_hz = 100 * PAGE0->mem_10msec; /* Hz */ 236 cr16_hz = 100 * PAGE0->mem_10msec; /* Hz */
237 237
238 /* register at clocksource framework */
239 clocksource_register_hz(&clocksource_cr16, cr16_hz);
240
241 /* register as sched_clock source */ 238 /* register as sched_clock source */
242 sched_clock_register(read_cr16_sched_clock, BITS_PER_LONG, cr16_hz); 239 sched_clock_register(read_cr16_sched_clock, BITS_PER_LONG, cr16_hz);
243} 240}
241
242static int __init init_cr16_clocksource(void)
243{
244 /*
245 * The cr16 interval timers are not syncronized across CPUs, so mark
246 * them unstable and lower rating on SMP systems.
247 */
248 if (num_online_cpus() > 1) {
249 clocksource_cr16.flags = CLOCK_SOURCE_UNSTABLE;
250 clocksource_cr16.rating = 0;
251 }
252
253 /* register at clocksource framework */
254 clocksource_register_hz(&clocksource_cr16,
255 100 * PAGE0->mem_10msec);
256
257 return 0;
258}
259
260device_initcall(init_cr16_clocksource);
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index 8ff9253930af..1a0b4f63f0e9 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -234,7 +234,7 @@ show_signal_msg(struct pt_regs *regs, unsigned long code,
234 tsk->comm, code, address); 234 tsk->comm, code, address);
235 print_vma_addr(KERN_CONT " in ", regs->iaoq[0]); 235 print_vma_addr(KERN_CONT " in ", regs->iaoq[0]);
236 236
237 pr_cont(" trap #%lu: %s%c", code, trap_name(code), 237 pr_cont("\ntrap #%lu: %s%c", code, trap_name(code),
238 vma ? ',':'\n'); 238 vma ? ',':'\n');
239 239
240 if (vma) 240 if (vma)