From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753648AbcERRKO (ORCPT ); Wed, 18 May 2016 13:10:14 -0400 Received: from merlin.infradead.org ([205.233.59.134]:38345 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753145AbcERRKM (ORCPT ); Wed, 18 May 2016 13:10:12 -0400 Date: Wed, 18 May 2016 19:09:51 +0200 From: Peter Zijlstra 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 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> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: 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.