Ryan Stone 09ae7c4814 Check for preemption after lowering a thread's priority
When a high-priority thread is waiting for a mutex held by a
low-priority thread, it temporarily lends its priority to the
low-priority thread to prevent priority inversion.  When the mutex
is released, the lent priority is revoked and the low-priority
thread goes back to its original priority.

When the priority of that thread is lowered (through a call to
sched_priority()), the schedule was not checking whether
there is now a high-priority thread in the run queue.  This can
cause threads with real-time priority to be starved in the run
queue while the low-priority thread finishes its quantum.

Fix this by explicitly checking whether preemption is necessary
when a thread's priority is lowered.

Sponsored by: Dell EMC Isilon
Obtained from: Sandvine Inc
Differential Revision:	https://reviews.freebsd.org/D9518
Reviewed by: Jeff Roberson (ule)
MFC after: 1 month
2017-02-16 19:41:13 +00:00
..
2016-10-04 17:57:30 +00:00
2016-11-08 23:59:41 +00:00
2017-02-12 09:49:44 +00:00
2017-01-25 20:22:32 +00:00
2017-02-14 13:54:05 +00:00
2017-02-04 06:24:49 +00:00
2017-02-09 13:32:19 +00:00
2017-02-09 08:19:30 +00:00
2016-11-08 23:59:41 +00:00
2017-02-07 16:01:07 +00:00
2016-10-24 16:40:27 +00:00
2017-01-14 04:16:13 +00:00
2016-12-27 20:22:17 +00:00
2016-07-26 17:23:49 +00:00
2016-04-14 17:07:26 +00:00
2017-02-13 09:04:38 +00:00
2017-02-12 09:49:44 +00:00