From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f72.google.com (mail-oi0-f72.google.com [209.85.218.72]) by kanga.kvack.org (Postfix) with ESMTP id C0C6C6B007E for ; Wed, 18 May 2016 13:10:03 -0400 (EDT) Received: by mail-oi0-f72.google.com with SMTP id t140so91758782oie.0 for ; Wed, 18 May 2016 10:10:03 -0700 (PDT) Received: from merlin.infradead.org (merlin.infradead.org. [2001:4978:20e::2]) by mx.google.com with ESMTPS id 85si8493317iou.59.2016.05.18.10.10.02 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 May 2016 10:10:02 -0700 (PDT) Date: Wed, 18 May 2016 19:09:51 +0200 From: Peter Zijlstra Subject: Re: [PATCH v12 04/13] task_isolation: add initial support Message-ID: <20160518170951.GM3193@twins.programming.kicks-ass.net> References: <1459877922-15512-1-git-send-email-cmetcalf@mellanox.com> <1459877922-15512-5-git-send-email-cmetcalf@mellanox.com> <20160518133420.GG3193@twins.programming.kicks-ass.net> <8e8b24ec-abc6-e599-ad50-218e350213ce@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8e8b24ec-abc6-e599-ad50-218e350213ce@mellanox.com> Sender: owner-linux-mm@kvack.org List-ID: To: Chris Metcalf Cc: Gilad Ben Yossef , Steven Rostedt , Ingo Molnar , Andrew Morton , Rik van Riel , Tejun Heo , Frederic Weisbecker , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , Michal Hocko , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-api@vger.kernel.org, linux-kernel@vger.kernel.org On Wed, May 18, 2016 at 12:34:22PM -0400, Chris Metcalf wrote: > On 5/18/2016 9:34 AM, Peter Zijlstra wrote: > >On Tue, Apr 05, 2016 at 01:38:33PM -0400, Chris Metcalf wrote: > >>diff --git a/kernel/signal.c b/kernel/signal.c > >>index aa9bf00749c1..53e4e62f2778 100644 > >>--- a/kernel/signal.c > >>+++ b/kernel/signal.c > >>@@ -34,6 +34,7 @@ > >> #include > >> #include > >> #include > >>+#include > >> #define CREATE_TRACE_POINTS > >> #include > >>@@ -2213,6 +2214,9 @@ relock: > >> /* Trace actually delivered signals. */ > >> trace_signal_deliver(signr, &ksig->info, ka); > >>+ /* Disable task isolation when delivering a signal. */ > >Why !? Changelog is quiet on this. > > There are really two reasons. > > 1. If the task is receiving a signal, it will know it's not isolated > any more, so we don't need to worry about notifying it explicitly. > This behavior is easy to document and allows the application to decide > if the signal is unexpected and it should go straight to its error > handling path (likely outcome, and in that case you want task isolation > off anyway) or if it thinks it can plausibly re-enable isolation and > return to where the signal interrupted you at (hard to imagine how this > would ever make sense, but you could if you wanted to). > > 2. When we are delivering a signal we may already be holding the lock > for the signal subsystem, and it gets hard to figure out whether it's > safe to send another signal to the application as a "task isolation > broken" notification. For example, sending a signal to a task on > another core involves doing an IPI to that core to kick it; the IPI > normally is a generic point for notifying the remote core of broken > task isolation and sending a signal - except that at the point where > we would do that on the signal path we are already holding the lock, > so we end up deadlocked. We could no doubt work around that, but it > seemed cleaner to decouple the existing signal mechanism from the > signal delivery for task isolation. > > I will add more discussion of the rationale to the commit message. Please also expand the in-code comment, as that is what we'll see first when reading the code. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org