diff options
author | Mark Brown <broonie@kernel.org> | 2015-01-16 22:06:57 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-01-16 22:06:57 +0000 |
commit | a47897538c3e1f71c35691a1f73e73dd9149977c (patch) | |
tree | 462c858397564058dbc996c6ab71613b6d1e35c8 /kernel | |
parent | 7368857a8eed5144e56e65713970764ef0f2f0b8 (diff) | |
parent | a2ab9187600ddca13da9e5c20e3abb92ea885ddd (diff) |
Merge tag 'v3.14.29' into linux-linaro-lsk-v3.14
This is the 3.14.29 stable release
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/events/core.c | 4 | ||||
-rw-r--r-- | kernel/sched/deadline.c | 25 |
2 files changed, 6 insertions, 23 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 4bbb27adf23d..69cffb46db17 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7240,11 +7240,11 @@ SYSCALL_DEFINE5(perf_event_open, if (move_group) { synchronize_rcu(); - perf_install_in_context(ctx, group_leader, event->cpu); + perf_install_in_context(ctx, group_leader, group_leader->cpu); get_ctx(ctx); list_for_each_entry(sibling, &group_leader->sibling_list, group_entry) { - perf_install_in_context(ctx, sibling, event->cpu); + perf_install_in_context(ctx, sibling, sibling->cpu); get_ctx(ctx); } } diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 37dac98c0749..8d3c5ddfdfdd 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -550,24 +550,7 @@ void init_dl_task_timer(struct sched_dl_entity *dl_se) static int dl_runtime_exceeded(struct rq *rq, struct sched_dl_entity *dl_se) { - int dmiss = dl_time_before(dl_se->deadline, rq_clock(rq)); - int rorun = dl_se->runtime <= 0; - - if (!rorun && !dmiss) - return 0; - - /* - * If we are beyond our current deadline and we are still - * executing, then we have already used some of the runtime of - * the next instance. Thus, if we do not account that, we are - * stealing bandwidth from the system at each deadline miss! - */ - if (dmiss) { - dl_se->runtime = rorun ? dl_se->runtime : 0; - dl_se->runtime -= rq_clock(rq) - dl_se->deadline; - } - - return 1; + return (dl_se->runtime <= 0); } extern bool sched_rt_bandwidth_account(struct rt_rq *rt_rq); @@ -806,10 +789,10 @@ enqueue_dl_entity(struct sched_dl_entity *dl_se, * parameters of the task might need updating. Otherwise, * we want a replenishment of its runtime. */ - if (!dl_se->dl_new && flags & ENQUEUE_REPLENISH) - replenish_dl_entity(dl_se, pi_se); - else + if (dl_se->dl_new || flags & ENQUEUE_WAKEUP) update_dl_entity(dl_se, pi_se); + else if (flags & ENQUEUE_REPLENISH) + replenish_dl_entity(dl_se, pi_se); __enqueue_dl_entity(dl_se); } |