Add comments describing r271604 change.
MFC after: 3 days
This commit is contained in:
parent
56538e4af9
commit
7965496958
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=271616
@ -1037,7 +1037,14 @@ tdq_notify(struct tdq *tdq, struct thread *td)
|
||||
ctd = pcpu_find(cpu)->pc_curthread;
|
||||
if (!sched_shouldpreempt(pri, ctd->td_priority, 1))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Make sure that tdq_load updated before calling this function
|
||||
* is globally visible before we read tdq_cpu_idle. Idle thread
|
||||
* accesses both of them without locks, and the order is important.
|
||||
*/
|
||||
mb();
|
||||
|
||||
if (TD_IS_IDLETHREAD(ctd)) {
|
||||
/*
|
||||
* If the MD code has an idle wakeup routine try that before
|
||||
@ -2641,6 +2648,11 @@ sched_idletd(void *dummy)
|
||||
|
||||
/* Run main MD idle handler. */
|
||||
tdq->tdq_cpu_idle = 1;
|
||||
/*
|
||||
* Make sure that tdq_cpu_idle update is globally visible
|
||||
* before cpu_idle() read tdq_load. The order is important
|
||||
* to avoid race with tdq_notify.
|
||||
*/
|
||||
mb();
|
||||
cpu_idle(switchcnt * 4 > sched_idlespinthresh);
|
||||
tdq->tdq_cpu_idle = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user