Pull scheduler fixes from Ingo Molnar: "Misc fixes: a documentation fix, a Sparse warning fix and a debugging fix" * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched/debug: Fix task state recording/printout sched/deadline: Don't use dubious signed bitfields sched/deadline: Fix the description of runtime accounting in the documentation
Unified · Split
| @@ -204,10 +204,17 @@ CONTENTS · 203 unmodified lines | ||
| 204 | 204 | It does so by decrementing the runtime of the executing task Ti at a pace equal |
| 205 | 205 | to |
| 206 | 206 | |
| 207 | − dq = -max{ Ui, (1 - Uinact) } dt | |
| 207 | + dq = -max{ Ui / Umax, (1 - Uinact - Uextra) } dt | |
| 208 | 208 | |
| 209 | − where Uinact is the inactive utilization, computed as (this_bq - running_bw), | |
| 210 | − and Ui is the bandwidth of task Ti. | |
| 209 | + where: | |
| 210 | + | |
| 211 | + - Ui is the bandwidth of task Ti; | |
| 212 | + - Umax is the maximum reclaimable utilization (subjected to RT throttling | |
| 213 | + limits); | |
| 214 | + - Uinact is the (per runqueue) inactive utilization, computed as | |
| 215 | + (this_bq - running_bw); | |
| 216 | + - Uextra is the (per runqueue) extra reclaimable utilization | |
| 217 | + (subjected to RT throttling limits). | |
| 211 | 218 | |
| 212 | 219 | |
| 213 | 220 | Let's now see a trivial example of two deadline tasks with runtime equal |
| @@ -473,10 +473,10 @@ struct sched_dl_entity { · 472 unmodified lines | ||
| 473 | 473 | * conditions between the inactive timer handler and the wakeup |
| 474 | 474 | * code. |
| 475 | 475 | */ |
| 476 | − int dl_throttled : 1; | |
| 477 | − int dl_boosted : 1; | |
| 478 | − int dl_yielded : 1; | |
| 479 | − int dl_non_contending : 1; | |
| 476 | + unsigned int dl_throttled : 1; | |
| 477 | + unsigned int dl_boosted : 1; | |
| 478 | + unsigned int dl_yielded : 1; | |
| 479 | + unsigned int dl_non_contending : 1; | |
| 480 | 480 | |
| 481 | 481 | /* |
| 482 | 482 | * Bandwidth enforcement timer. Each -deadline task has its |
| @@ -116,9 +116,9 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct * · 115 unmodified lines | ||
| 116 | 116 | * RUNNING (we will not have dequeued if state != RUNNING). |
| 117 | 117 | */ |
| 118 | 118 | if (preempt) |
| 119 | − return TASK_STATE_MAX; | |
| 119 | + return TASK_REPORT_MAX; | |
| 120 | 120 | |
| 121 | − return task_state_index(p); | |
| 121 | + return 1 << task_state_index(p); | |
| 122 | 122 | } |
| 123 | 123 | #endif /* CREATE_TRACE_POINTS */ |
| 124 | 124 | |
| @@ -164,7 +164,7 @@ TRACE_EVENT(sched_switch, · 39 unmodified lines | ||
| 164 | 164 | { 0x40, "P" }, { 0x80, "I" }) : |
| 165 | 165 | "R", |
| 166 | 166 | |
| 167 | − __entry->prev_state & TASK_STATE_MAX ? "+" : "", | |
| 167 | + __entry->prev_state & TASK_REPORT_MAX ? "+" : "", | |
| 168 | 168 | __entry->next_comm, __entry->next_pid, __entry->next_prio) |
| 169 | 169 | ); |
| 170 | 170 | |