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
3434 time_travel_time = ns;
3535 }
3636
37−static inline void time_travel_set_timer(enum time_travel_timer_mode mode,
38− unsigned long long expiry)
37+static inline void time_travel_set_timer_mode(enum time_travel_timer_mode mode)
3938 {
4039 time_travel_timer_mode = mode;
40+}
41+
42+static inline void time_travel_set_timer_expiry(unsigned long long expiry)
43+{
4144 time_travel_timer_expiry = expiry;
4245 }
4346 #else
@@ -50,8 +53,11 @@ static inline void time_travel_set_time(unsigned long long ns) · 6 unmodified lines
5053 {
5154 }
5255
53−static inline void time_travel_set_timer(enum time_travel_timer_mode mode,
54− unsigned long long expiry)
56+static inline void time_travel_set_timer_mode(enum time_travel_timer_mode mode)
57+{
58+}
59+
60+static inline void time_travel_set_timer_expiry(unsigned long long expiry)
5561 {
5662 }
5763
arch/um/kernel/process.c+1−1
@@ -213,7 +213,7 @@ static void time_travel_sleep(unsigned long long duration) · 212 unmodified lines
213213 if (time_travel_timer_mode != TT_TMR_DISABLED ||
214214 time_travel_timer_expiry < next) {
215215 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);
217217 /*
218218 * time_travel_time will be adjusted in the timer
219219 * 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
5050 static int itimer_shutdown(struct clock_event_device *evt)
5151 {
5252 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);
5454
5555 if (time_travel_mode != TT_MODE_INFCPU)
5656 os_timer_disable();
@@ -62,9 +62,10 @@ static int itimer_set_periodic(struct clock_event_device *evt) · 5 unmodified lines
6262 {
6363 unsigned long long interval = NSEC_PER_SEC / HZ;
6464
65− if (time_travel_mode != TT_MODE_OFF)
66− time_travel_set_timer(TT_TMR_PERIODIC,
67− time_travel_time + interval);
65+ if (time_travel_mode != TT_MODE_OFF) {
66+ time_travel_set_timer_mode(TT_TMR_PERIODIC);
67+ time_travel_set_timer_expiry(time_travel_time + interval);
68+ }
6869
6970 if (time_travel_mode != TT_MODE_INFCPU)
7071 os_timer_set_interval(interval);
@@ -77,9 +78,10 @@ static int itimer_next_event(unsigned long delta, · 6 unmodified lines
7778 {
7879 delta += 1;
7980
80− if (time_travel_mode != TT_MODE_OFF)
81− time_travel_set_timer(TT_TMR_ONESHOT,
82− time_travel_time + delta);
81+ if (time_travel_mode != TT_MODE_OFF) {
82+ time_travel_set_timer_mode(TT_TMR_ONESHOT);
83+ time_travel_set_timer_expiry(time_travel_time + delta);
84+ }
8385
8486 if (time_travel_mode != TT_MODE_INFCPU)
8587 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