Skip to content

Commit 32ae83f

Browse files
committed
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
2 parents 94a76d9 + e0917f8 commit 32ae83f

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

arch/um/include/shared/timer-internal.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@ static inline void time_travel_set_time(unsigned long long ns)
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)
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ static void time_travel_sleep(unsigned long long duration)
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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
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)
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,
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);

0 commit comments

Comments
 (0)