Thread (49 messages) 49 messages, 7 authors, 2021-01-22

Re: [EXT] Re: [PATCH v4 10/13] task_isolation: don't interrupt CPUs with tick_nohz_full_kick_cpu()

From: Frederic Weisbecker <frederic@kernel.org>
Date: 2020-10-06 21:41:19
Also in: linux-api, linux-arch, lkml, netdev

On Sun, Oct 04, 2020 at 03:22:09PM +0000, Alex Belits wrote:
On Thu, 2020-10-01 at 16:44 +0200, Frederic Weisbecker wrote:
quoted
quoted
@@ -268,7 +269,8 @@ static void tick_nohz_full_kick(void)
  */
 void tick_nohz_full_kick_cpu(int cpu)
 {
-	if (!tick_nohz_full_cpu(cpu))
+	smp_rmb();
What is it ordering?
ll_isol_flags will be read in task_isolation_on_cpu(), that accrss
should be ordered against writing in
task_isolation_kernel_enter(), fast_task_isolation_cpu_cleanup()
and task_isolation_start().

Since task_isolation_on_cpu() is often called for multiple CPUs in a
sequence, it would be wasteful to include a barrier inside it.
Then I think you meant a full barrier: smp_mb()
quoted
quoted
+	if (!tick_nohz_full_cpu(cpu) || task_isolation_on_cpu(cpu))
 		return;
You can't simply ignore an IPI. There is always a reason for a
nohz_full CPU
to be kicked. Something triggered a tick dependency. It can be posix
cpu timers
for example, or anything.
I realize that this is unusual, however the idea is that while the task
is running in isolated mode in userspace, we assume that from this CPUs
point of view whatever is happening in kernel, can wait until CPU is
back in kernel and when it first enters kernel from this mode, it
should "catch up" with everything that happened in its absence.
task_isolation_kernel_enter() is supposed to do that, so by the time
anything should be done involving the rest of the kernel, CPU is back
to normal.
You can't assume that. If something needs the tick, this can't wait.
If the user did something wrong, such as setting a posix cpu timer
to an isolated task, that's his fault and the kernel has to stick with
correctness and kick that task out of isolation mode.
It is application's responsibility to avoid triggering things that
break its isolation
Precisely.
so the application assumes that everything that
involves entering kernel will not be available while it is isolated.
We can't do things that way and just ignore IPIs. You need to solve the
source of the noise, not the symptoms.

Thanks.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help