diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-05 20:46:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-05 20:46:42 -0400 |
commit | e7fda6c4c3c1a7d6996dd75fd84670fa0b5d448f (patch) | |
tree | daa51c16462c318b890acf7f01fba5827275dd74 /tools | |
parent | 08d69a25714429850cf9ef71f22d8cdc9189d93f (diff) | |
parent | 953dec21aed4038464fec02f96a2f1b8701a5bce (diff) |
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer and time updates from Thomas Gleixner:
"A rather large update of timers, timekeeping & co
- Core timekeeping code is year-2038 safe now for 32bit machines.
Now we just need to fix all in kernel users and the gazillion of
user space interfaces which rely on timespec/timeval :)
- Better cache layout for the timekeeping internal data structures.
- Proper nanosecond based interfaces for in kernel users.
- Tree wide cleanup of code which wants nanoseconds but does hoops
and loops to convert back and forth from timespecs. Some of it
definitely belongs into the ugly code museum.
- Consolidation of the timekeeping interface zoo.
- A fast NMI safe accessor to clock monotonic for tracing. This is a
long standing request to support correlated user/kernel space
traces. With proper NTP frequency correction it's also suitable
for correlation of traces accross separate machines.
- Checkpoint/restart support for timerfd.
- A few NOHZ[_FULL] improvements in the [hr]timer code.
- Code move from kernel to kernel/time of all time* related code.
- New clocksource/event drivers from the ARM universe. I'm really
impressed that despite an architected timer in the newer chips SoC
manufacturers insist on inventing new and differently broken SoC
specific timers.
[ Ed. "Impressed"? I don't think that word means what you think it means ]
- Another round of code move from arch to drivers. Looks like most
of the legacy mess in ARM regarding timers is sorted out except for
a few obnoxious strongholds.
- The usual updates and fixlets all over the place"
* 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (114 commits)
timekeeping: Fixup typo in update_vsyscall_old definition
clocksource: document some basic timekeeping concepts
timekeeping: Use cached ntp_tick_length when accumulating error
timekeeping: Rework frequency adjustments to work better w/ nohz
timekeeping: Minor fixup for timespec64->timespec assignment
ftrace: Provide trace clocks monotonic
timekeeping: Provide fast and NMI safe access to CLOCK_MONOTONIC
seqcount: Add raw_write_seqcount_latch()
seqcount: Provide raw_read_seqcount()
timekeeping: Use tk_read_base as argument for timekeeping_get_ns()
timekeeping: Create struct tk_read_base and use it in struct timekeeper
timekeeping: Restructure the timekeeper some more
clocksource: Get rid of cycle_last
clocksource: Move cycle_last validation to core code
clocksource: Make delta calculation a function
wireless: ath9k: Get rid of timespec conversions
drm: vmwgfx: Use nsec based interfaces
drm: i915: Use nsec based interfaces
timekeeping: Provide ktime_get_raw()
hangcheck-timer: Use ktime_get_ns()
...
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/time/udelay_test.sh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tools/time/udelay_test.sh b/tools/time/udelay_test.sh new file mode 100755 index 000000000000..12d46b926917 --- /dev/null +++ b/tools/time/udelay_test.sh | |||
@@ -0,0 +1,66 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | # udelay() test script | ||
4 | # | ||
5 | # Test is executed by writing and reading to /sys/kernel/debug/udelay_test | ||
6 | # and exercises a variety of delays to ensure that udelay() is delaying | ||
7 | # at least as long as requested (as compared to ktime). | ||
8 | # | ||
9 | # Copyright (C) 2014 Google, Inc. | ||
10 | # | ||
11 | # This software is licensed under the terms of the GNU General Public | ||
12 | # License version 2, as published by the Free Software Foundation, and | ||
13 | # may be copied, distributed, and modified under those terms. | ||
14 | # | ||
15 | # This program is distributed in the hope that it will be useful, | ||
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | # GNU General Public License for more details. | ||
19 | |||
20 | MODULE_NAME=udelay_test | ||
21 | UDELAY_PATH=/sys/kernel/debug/udelay_test | ||
22 | |||
23 | setup() | ||
24 | { | ||
25 | /sbin/modprobe -q $MODULE_NAME | ||
26 | tmp_file=`mktemp` | ||
27 | } | ||
28 | |||
29 | test_one() | ||
30 | { | ||
31 | delay=$1 | ||
32 | echo $delay > $UDELAY_PATH | ||
33 | tee -a $tmp_file < $UDELAY_PATH | ||
34 | } | ||
35 | |||
36 | cleanup() | ||
37 | { | ||
38 | if [ -f $tmp_file ]; then | ||
39 | rm $tmp_file | ||
40 | fi | ||
41 | /sbin/modprobe -q -r $MODULE_NAME | ||
42 | } | ||
43 | |||
44 | trap cleanup EXIT | ||
45 | setup | ||
46 | |||
47 | # Delay for a variety of times. | ||
48 | # 1..200, 200..500 (by 10), 500..2000 (by 100) | ||
49 | for (( delay = 1; delay < 200; delay += 1 )); do | ||
50 | test_one $delay | ||
51 | done | ||
52 | for (( delay = 200; delay < 500; delay += 10 )); do | ||
53 | test_one $delay | ||
54 | done | ||
55 | for (( delay = 500; delay <= 2000; delay += 100 )); do | ||
56 | test_one $delay | ||
57 | done | ||
58 | |||
59 | # Search for failures | ||
60 | count=`grep -c FAIL $tmp_file` | ||
61 | if [ $? -eq "0" ]; then | ||
62 | echo "ERROR: $count delays failed to delay long enough" | ||
63 | retcode=1 | ||
64 | fi | ||
65 | |||
66 | exit $retcode | ||