These commit stop scanning no-idle tasks which in dyntick-idle state and
remove idle-tasks check from warnings.
v1->v2:
fix build error when CONFIG_TASKS_RCU=n
v2->v3:
remove idle-tasks check from task_is_on_dyntick_idle()
Zqiang (2):
rcu-tasks: Stop RCU Tasks scanning no-idle tasks which record on
dyntick-idle entry
rcu-tasks: Remove is_idle_task() from warnings in check_holdout_task()
kernel/rcu/tasks.h | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
--
2.25.1
Due to the rcu_tasks_pertask() already exclude idle tasks, the idle tasks
not appear in holdout list. so It is not necessary to judge whether the
tasks in the holdout list are idle tasks.
Signed-off-by: Zqiang <[email protected]>
---
kernel/rcu/tasks.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
index a28337f280e4..6a2598efd0cc 100644
--- a/kernel/rcu/tasks.h
+++ b/kernel/rcu/tasks.h
@@ -862,9 +862,8 @@ static void check_holdout_task(struct task_struct *t,
*firstreport = false;
}
cpu = task_cpu(t);
- pr_alert("%p: %c%c nvcsw: %lu/%lu holdout: %d idle_cpu: %d/%d\n",
- t, ".I"[is_idle_task(t)],
- "N."[cpu < 0 || !tick_nohz_full_cpu(cpu)],
+ pr_alert("%p: %c nvcsw: %lu/%lu holdout: %d idle_cpu: %d/%d\n",
+ t, "N."[cpu < 0 || !tick_nohz_full_cpu(cpu)],
t->rcu_tasks_nvcsw, t->nvcsw, t->rcu_tasks_holdout,
t->rcu_tasks_idle_cpu, cpu);
sched_show_task(t);
--
2.25.1
On Tue, May 24, 2022 at 08:34:52AM +0800, Zqiang wrote:
> These commit stop scanning no-idle tasks which in dyntick-idle state and
> remove idle-tasks check from warnings.
This patch might well be correct, but there are supposed to be upcoming
changes in the idle loop that would make it possible for RCU Tasks to
take idle tasks into account:
https://lore.kernel.org/all/[email protected]/
There are currently issues in amd_e400_idle() and mwait_idle() preventing
this, and there might well also be similar issues in non-x86 idle loops:
https://lore.kernel.org/all/20220519135439.GX1790663@paulmck-ThinkPad-P17-Gen-1/
So I must hold off on this patch series for the time being. Nevertheless,
thank you very much for your effort and interest in RCU.
Thanx, Paul
> v1->v2:
> fix build error when CONFIG_TASKS_RCU=n
> v2->v3:
> remove idle-tasks check from task_is_on_dyntick_idle()
>
> Zqiang (2):
> rcu-tasks: Stop RCU Tasks scanning no-idle tasks which record on
> dyntick-idle entry
> rcu-tasks: Remove is_idle_task() from warnings in check_holdout_task()
>
> kernel/rcu/tasks.h | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> --
> 2.25.1
>
On Tue, May 24, 2022 at 08:34:52AM +0800, Zqiang wrote:
> These commit stop scanning no-idle tasks which in dyntick-idle state
> and remove idle-tasks check from warnings.
>This patch might well be correct, but there are supposed to be upcoming changes in the idle loop that would make it possible for RCU Tasks to take idle tasks into account:
>
>https://lore.kernel.org/all/[email protected]/
>
>There are currently issues in amd_e400_idle() and mwait_idle() preventing this, and there might well also be similar issues in non-x86 idle loops:
>
>https://lore.kernel.org/all/20220519135439.GX1790663@paulmck-ThinkPad-P17-Gen-1/
>
>So I must hold off on this patch series for the time being. Nevertheless, thank you very much for your effort and interest in RCU.
Thanks for explain, I will keep an eye.
>
> Thanx, Paul
> v1->v2:
> fix build error when CONFIG_TASKS_RCU=n
> v2->v3:
> remove idle-tasks check from task_is_on_dyntick_idle()
>
> Zqiang (2):
> rcu-tasks: Stop RCU Tasks scanning no-idle tasks which record on
> dyntick-idle entry
> rcu-tasks: Remove is_idle_task() from warnings in
> check_holdout_task()
>
> kernel/rcu/tasks.h | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> --
> 2.25.1
>