diff options
| author | leochanj105 <43393724+leochanj105@users.noreply.github.com> | 2020-11-09 14:02:21 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-09 14:02:21 -0500 |
| commit | 3713d99f4b6a1fe6ec3bdf75ee67bf378ab325b0 (patch) | |
| tree | 51f5c332e75a5a2846344afccd2a8219b3dfde23 | |
| parent | e0ce4a455f9cdb311e27a08f8a59b4b613de5703 (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.c | 2 | ||||
| -rw-r--r-- | litmus/rt_domain.c | 4 | ||||
| -rw-r--r-- | litmus/sched_pfair.c | 2 | ||||
| -rw-r--r-- | litmus/sched_pres.c | 4 |
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 | ||
