diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-01-03 13:50:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-01-03 13:50:05 -0500 |
commit | 0f64df30124018de92c7f22a044b975da8dd52cc (patch) | |
tree | 752226295c4683a7a32209a9a9f84a9955752863 | |
parent | c8b4ec8351d21da3299b045b37920e5cf5590793 (diff) | |
parent | b4a9eb4cd5966c8aad3d007d206a2cbda97d6928 (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.h | 1 | ||||
-rw-r--r-- | arch/parisc/kernel/time.c | 23 | ||||
-rw-r--r-- | arch/parisc/mm/fault.c | 2 |
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 | |||
242 | static 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 | |||
260 | device_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) |