struct rq *rq = dl_se->rq;
dl_se->dl_defer_idle = 0;
- if (!dl_server(dl_se) || dl_se->dl_server_active)
+ if (!dl_server(dl_se) || dl_se->dl_server_active || !dl_se->dl_runtime)
return;
/*
int cpu = cpu_of(rq);
struct dl_bw *dl_b;
unsigned long cap;
- int retval = 0;
int cpus;
dl_b = dl_bw_of(cpu);
dl_se->dl_bw = to_ratio(dl_se->dl_period, dl_se->dl_runtime);
dl_se->dl_density = to_ratio(dl_se->dl_deadline, dl_se->dl_runtime);
- return retval;
+ return 0;
}
/*
void *server)
{
long cpu = (long) ((struct seq_file *) filp->private_data)->private;
- struct rq *rq = cpu_rq(cpu);
struct sched_dl_entity *dl_se = (struct sched_dl_entity *)server;
- u64 runtime, period;
+ u64 old_runtime, runtime, period;
+ struct rq *rq = cpu_rq(cpu);
int retval = 0;
size_t err;
u64 value;
return err;
scoped_guard (rq_lock_irqsave, rq) {
- bool is_active;
-
- runtime = dl_se->dl_runtime;
+ old_runtime = runtime = dl_se->dl_runtime;
period = dl_se->dl_period;
switch (param) {
return -EINVAL;
}
- is_active = dl_server_active(dl_se);
- if (is_active) {
- update_rq_clock(rq);
- dl_server_stop(dl_se);
- }
-
+ update_rq_clock(rq);
+ dl_server_stop(dl_se);
retval = dl_server_apply_params(dl_se, runtime, period, 0);
-
- if (!runtime)
- printk_deferred("%s server disabled in CPU %d, system may crash due to starvation.\n",
- server == &rq->fair_server ? "Fair" : "Ext", cpu_of(rq));
-
- if (is_active && runtime)
- dl_server_start(dl_se);
+ dl_server_start(dl_se);
if (retval < 0)
return retval;
}
+ if (!!old_runtime ^ !!runtime) {
+ pr_info("%s server %sabled on CPU %d%s.\n",
+ server == &rq->fair_server ? "Fair" : "Ext",
+ runtime ? "en" : "dis",
+ cpu_of(rq),
+ runtime ? "" : ", system may malfunction due to starvation");
+ }
+
*ppos += cnt;
return cnt;
}