History

Merge tag 'for-linus-5.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml

Pull UML fix from Richard Weinberger: "Fix time travel mode" * tag 'for-linus-5.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml: um: fix time travel mode

Linus Torvalds committed 7 years ago

Commit 32ae83f2 parents 94a76d9 e0917f83 files · +20 −12Browse files

Unified · Split

3 files
  1. arch/um/include/shared/timer-internal.h +10 −4
  2. arch/um/kernel/process.c +1 −1
  3. arch/um/kernel/time.c +9 −7
arch/um/include/shared/timer-internal.h+10−4
@@ -34,10 +34,13 @@ static inline void time_travel_set_time(unsigned long long ns) · 33 unmodified lines
34 time_travel_time = ns;34 time_travel_time = ns;
35}35}
36 36
37static inline void time_travel_set_timer(enum time_travel_timer_mode mode,37static inline void time_travel_set_timer_mode(enum time_travel_timer_mode mode)
38 unsigned long long expiry)
39{38{
40 time_travel_timer_mode = mode;39 time_travel_timer_mode = mode;
40}
41
42static inline void time_travel_set_timer_expiry(unsigned long long expiry)
43{
41 time_travel_timer_expiry = expiry;44 time_travel_timer_expiry = expiry;
42}45}
43#else46#else
@@ -50,8 +53,11 @@ static inline void time_travel_set_time(unsigned long long ns) · 6 unmodified lines
50{53{
51}54}
52 55
53static inline void time_travel_set_timer(enum time_travel_timer_mode mode,56static inline void time_travel_set_timer_mode(enum time_travel_timer_mode mode)
54 unsigned long long expiry)57{
58}
59
60static inline void time_travel_set_timer_expiry(unsigned long long expiry)
55{61{
56}62}
57 63
arch/um/kernel/process.c+1−1
@@ -213,7 +213,7 @@ static void time_travel_sleep(unsigned long long duration) · 212 unmodified lines
213 if (time_travel_timer_mode != TT_TMR_DISABLED ||213 if (time_travel_timer_mode != TT_TMR_DISABLED ||
214 time_travel_timer_expiry < next) {214 time_travel_timer_expiry < next) {
215 if (time_travel_timer_mode == TT_TMR_ONESHOT)215 if (time_travel_timer_mode == TT_TMR_ONESHOT)
216 time_travel_set_timer(TT_TMR_DISABLED, 0);216 time_travel_set_timer_mode(TT_TMR_DISABLED);
217 /*217 /*
218 * time_travel_time will be adjusted in the timer218 * time_travel_time will be adjusted in the timer
219 * IRQ handler so it works even when the signal219 * IRQ handler so it works even when the signal
arch/um/kernel/time.c+9−7
@@ -50,7 +50,7 @@ void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs) · 49 unmodified lines
50static int itimer_shutdown(struct clock_event_device *evt)50static int itimer_shutdown(struct clock_event_device *evt)
51{51{
52 if (time_travel_mode != TT_MODE_OFF)52 if (time_travel_mode != TT_MODE_OFF)
53 time_travel_set_timer(TT_TMR_DISABLED, 0);53 time_travel_set_timer_mode(TT_TMR_DISABLED);
54 54
55 if (time_travel_mode != TT_MODE_INFCPU)55 if (time_travel_mode != TT_MODE_INFCPU)
56 os_timer_disable();56 os_timer_disable();
@@ -62,9 +62,10 @@ static int itimer_set_periodic(struct clock_event_device *evt) · 5 unmodified lines
62{62{
63 unsigned long long interval = NSEC_PER_SEC / HZ;63 unsigned long long interval = NSEC_PER_SEC / HZ;
64 64
65 if (time_travel_mode != TT_MODE_OFF)65 if (time_travel_mode != TT_MODE_OFF) {
66 time_travel_set_timer(TT_TMR_PERIODIC,66 time_travel_set_timer_mode(TT_TMR_PERIODIC);
67 time_travel_time + interval);67 time_travel_set_timer_expiry(time_travel_time + interval);
68 }
68 69
69 if (time_travel_mode != TT_MODE_INFCPU)70 if (time_travel_mode != TT_MODE_INFCPU)
70 os_timer_set_interval(interval);71 os_timer_set_interval(interval);
@@ -77,9 +78,10 @@ static int itimer_next_event(unsigned long delta, · 6 unmodified lines
77{78{
78 delta += 1;79 delta += 1;
79 80
80 if (time_travel_mode != TT_MODE_OFF)81 if (time_travel_mode != TT_MODE_OFF) {
81 time_travel_set_timer(TT_TMR_ONESHOT,82 time_travel_set_timer_mode(TT_TMR_ONESHOT);
82 time_travel_time + delta);83 time_travel_set_timer_expiry(time_travel_time + delta);
84 }
83 85
84 if (time_travel_mode != TT_MODE_INFCPU)86 if (time_travel_mode != TT_MODE_INFCPU)
85 return os_timer_one_shot(delta);87 return os_timer_one_shot(delta);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t