We simply deschedule current, with no bother grabbing global lock, since IPI,
if triggered by preempt, could not change our result, like no schedule when
preempt enabled.
preempt_enable_no_resched();
if (unlikely(need_resched()))
goto need_resched;
--- a/kernel/sched/bfs.c Wed Jun 6 21:02:50 2012
+++ b/kernel/sched/bfs.c Fri Jun 8 21:17:24 2012
@@ -2784,11 +2784,13 @@ static void task_running_tick(struct rq
} else if (rq->rq_time_slice >= RESCHED_US)
return;
- /* p->time_slice < RESCHED_US. We only modify task_struct under grq lock */
+ /*
+ * With irq disabled, current is descheduled without global lock
+ * held and IPI cared.
+ */
p = rq->curr;
- grq_lock();
- set_tsk_need_resched(p);
- grq_unlock();
+ if (!test_tsk_need_resched(p))
+ set_tsk_need_resched(p);
}
--
Still, you haven't produced any usable patch. LOL
On Fri, Jun 8, 2012 at 9:37 PM, Hillf Danton <[email protected]> wrote:
> We simply deschedule current, with no bother grabbing global lock, since IPI,
> if triggered by preempt, could not change our result, like no schedule when
> preempt enabled.
>
> ? ? ? ?preempt_enable_no_resched();
> ? ? ? ?if (unlikely(need_resched()))
> ? ? ? ? ? ? ? ?goto need_resched;
>
>
> --- a/kernel/sched/bfs.c ? ? ? ?Wed Jun ?6 21:02:50 2012
> +++ b/kernel/sched/bfs.c ? ? ? ?Fri Jun ?8 21:17:24 2012
> @@ -2784,11 +2784,13 @@ static void task_running_tick(struct rq
> ? ? ? ?} else if (rq->rq_time_slice >= RESCHED_US)
> ? ? ? ? ? ? ? ? ? ? ? ?return;
>
> - ? ? ? /* p->time_slice < RESCHED_US. We only modify task_struct under grq lock */
> + ? ? ? /*
> + ? ? ? ?* With irq disabled, current is descheduled without global lock
> + ? ? ? ?* held and IPI cared.
> + ? ? ? ?*/
> ? ? ? ?p = rq->curr;
> - ? ? ? grq_lock();
> - ? ? ? set_tsk_need_resched(p);
> - ? ? ? grq_unlock();
> + ? ? ? if (!test_tsk_need_resched(p))
> + ? ? ? ? ? ? ? set_tsk_need_resched(p);
> ?}
>
>
> --
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at ?http://www.tux.org/lkml/
On 08.06.2012, Chen wrote:
> Still, you haven't produced any usable patch. LOL
...and Con Kolivas released BFS 4.22 some days ago..