aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorleochanj105 <43393724+leochanj105@users.noreply.github.com>2020-11-09 14:02:21 -0500
committerGitHub <noreply@github.com>2020-11-09 14:02:21 -0500
commit3713d99f4b6a1fe6ec3bdf75ee67bf378ab325b0 (patch)
tree51f5c332e75a5a2846344afccd2a8219b3dfde23
parente0ce4a455f9cdb311e27a08f8a59b4b613de5703 (diff)
Switch to HRTIMER_MODE_ABS_PINNED_HARD5.4-EXT-RES
Scheduling timers need to expire in a hard IRQ context which must be explicitly requested with Linux 5.4.
-rw-r--r--litmus/budget.c2
-rw-r--r--litmus/rt_domain.c4
-rw-r--r--litmus/sched_pfair.c2
-rw-r--r--litmus/sched_pres.c4
4 files changed, 6 insertions, 6 deletions
diff --git a/litmus/budget.c b/litmus/budget.c
index 00472f487560..fd2bdc2f24e5 100644
--- a/litmus/budget.c
+++ b/litmus/budget.c
@@ -81,7 +81,7 @@ static void arm_enforcement_timer(struct enforcement_timer* et,
81 if (likely(!is_np(t))) { 81 if (likely(!is_np(t))) {
82 when_to_fire = litmus_clock() + budget_remaining(t); 82 when_to_fire = litmus_clock() + budget_remaining(t);
83 hrtimer_start(&et->timer, ns_to_ktime(when_to_fire), 83 hrtimer_start(&et->timer, ns_to_ktime(when_to_fire),
84 HRTIMER_MODE_ABS_PINNED); 84 HRTIMER_MODE_ABS_PINNED_HARD);
85 et->armed = 1; 85 et->armed = 1;
86 } 86 }
87} 87}
diff --git a/litmus/rt_domain.c b/litmus/rt_domain.c
index 733a483e3084..12aac565e219 100644
--- a/litmus/rt_domain.c
+++ b/litmus/rt_domain.c
@@ -248,7 +248,7 @@ static void arm_release_timer(rt_domain_t *_rt)
248#endif 248#endif
249 hrtimer_start(&rh->timer, 249 hrtimer_start(&rh->timer,
250 ns_to_ktime(rh->release_time), 250 ns_to_ktime(rh->release_time),
251 HRTIMER_MODE_ABS_PINNED); 251 HRTIMER_MODE_ABS_PINNED_HARD);
252#ifdef CONFIG_RELEASE_MASTER 252#ifdef CONFIG_RELEASE_MASTER
253 else 253 else
254 hrtimer_start_on( 254 hrtimer_start_on(
@@ -257,7 +257,7 @@ static void arm_release_timer(rt_domain_t *_rt)
257 target_cpu : rt->release_master), 257 target_cpu : rt->release_master),
258 &rh->info, &rh->timer, 258 &rh->info, &rh->timer,
259 ns_to_ktime(rh->release_time), 259 ns_to_ktime(rh->release_time),
260 HRTIMER_MODE_ABS_PINNED); 260 HRTIMER_MODE_ABS_PINNED_HARD);
261#endif 261#endif
262 } else 262 } else
263 VTRACE_TASK(t, "0x%p is not my timer\n", &rh->timer); 263 VTRACE_TASK(t, "0x%p is not my timer\n", &rh->timer);
diff --git a/litmus/sched_pfair.c b/litmus/sched_pfair.c
index f70db914852a..74f7d2a5c4d8 100644
--- a/litmus/sched_pfair.c
+++ b/litmus/sched_pfair.c
@@ -1212,7 +1212,7 @@ static int __init init_pfair(void)
1212 /* initialize CPU state */ 1212 /* initialize CPU state */
1213 for (cpu = 0; cpu < num_online_cpus(); cpu++) { 1213 for (cpu = 0; cpu < num_online_cpus(); cpu++) {
1214 state = &per_cpu(pfair_state, cpu); 1214 state = &per_cpu(pfair_state, cpu);
1215 hrtimer_init(&state->quantum_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED); 1215 hrtimer_init(&state->quantum_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED_HARD);
1216 state->quantum_timer.function = on_quantum_boundary; 1216 state->quantum_timer.function = on_quantum_boundary;
1217 state->topology.id = cpu; 1217 state->topology.id = cpu;
1218 state->cur_tick = 0; 1218 state->cur_tick = 0;
diff --git a/litmus/sched_pres.c b/litmus/sched_pres.c
index dae65e376bd4..82644a18c147 100644
--- a/litmus/sched_pres.c
+++ b/litmus/sched_pres.c
@@ -98,7 +98,7 @@ static void pres_update_timer_and_unlock(struct pres_cpu_state *state)
98 TRACE("setting scheduler timer for %llu\n", update); 98 TRACE("setting scheduler timer for %llu\n", update);
99 hrtimer_start(&state->timer, 99 hrtimer_start(&state->timer,
100 ns_to_ktime(update), 100 ns_to_ktime(update),
101 HRTIMER_MODE_ABS_PINNED); 101 HRTIMER_MODE_ABS_PINNED_HARD);
102 if (update < litmus_clock()) { 102 if (update < litmus_clock()) {
103 /* uh oh, timer expired while trying to set it */ 103 /* uh oh, timer expired while trying to set it */
104 TRACE("timer expired during setting " 104 TRACE("timer expired during setting "
@@ -545,7 +545,7 @@ static long pres_activate_plugin(void)
545 545
546 sup_init(&state->sup_env); 546 sup_init(&state->sup_env);
547 547
548 hrtimer_init(&state->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED); 548 hrtimer_init(&state->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED_HARD);
549 state->timer.function = on_scheduling_timer; 549 state->timer.function = on_scheduling_timer;
550 } 550 }
551 551