Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932800AbdHYUp0 (ORCPT ); Fri, 25 Aug 2017 16:45:26 -0400 Received: from smtprelay.synopsys.com ([198.182.60.111]:38471 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755255AbdHYUpZ (ORCPT ); Fri, 25 Aug 2017 16:45:25 -0400 Subject: Re: [PATCH v3 03/11] ARC: Allow irq threading To: Noam Camus , CC: , , Peter Zijlstra , Thomas Gleixner , Steven Rostedt References: <1497516241-16446-1-git-send-email-noamca@mellanox.com> <1497516241-16446-4-git-send-email-noamca@mellanox.com> From: Vineet Gupta Message-ID: <12582c31-9ff0-708c-5c85-1e31efd2a170@synopsys.com> Date: Fri, 25 Aug 2017 13:45:06 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <1497516241-16446-4-git-send-email-noamca@mellanox.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.10.161.108] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1723 Lines: 47 +CC Peter, Tglx, Steven On 06/15/2017 01:43 AM, Noam Camus wrote: > From: Noam Camus > > Working with NPS400 we noticed that there is a possibility of L1 > interrupt nesting that may run out kernel stack. > The scenario include serving invoke_softirqs() from irq_exit() > and once local_irq_enable() called can hit another one before we > managed to restore last one and pop some place from kernel stack. > > Serving softirqs at dedicated kernel thread may mitigate this. > We see that many architectures, including x86, behave like this. > > Note 1: All interrupts which must be non threaded > should be marked IRQF_NO_THREAD. > Note 2: using kernel param "threadirqs" is needed to actually > turn this on. This configuration is only a preperation. > > Signed-off-by: Noam Camus > --- > arch/arc/Kconfig | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig > index a545969..f464f97 100644 > --- a/arch/arc/Kconfig > +++ b/arch/arc/Kconfig > @@ -33,6 +33,7 @@ config ARC > select HAVE_OPROFILE > select HAVE_PERF_EVENTS > select HANDLE_DOMAIN_IRQ > + select IRQ_FORCED_THREADING > select IRQ_DOMAIN > select MODULES_USE_ELF_RELA > select NO_BOOTMEM> As Noam notes above and looking at work needed in other arches prior to switching to this: we need mark the low level ints as NO_THREAD. ARC ipi, timer, perf interrupts happen to use request_percpu_irq() which doesn't take flags and doesn't seem to force NO_THREAD internally either. Does that mean we first need to convert all of these sites to __request_percpu_irq(.. NO_THREAD ...) or is there a better way of doing this ! Thx, -Vineet