From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757844AbcIVWGE (ORCPT ); Thu, 22 Sep 2016 18:06:04 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:39526 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757806AbcIVWGD (ORCPT ); Thu, 22 Sep 2016 18:06:03 -0400 Date: Fri, 23 Sep 2016 00:03:36 +0200 (CEST) From: Thomas Gleixner To: Leo Li cc: Marc Zyngier , Marc Zyngier , lkml Subject: Re: recommended use of request_any_context_irq() In-Reply-To: Message-ID: References: <57E391E0.6020202@arm.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Leo, On Thu, 22 Sep 2016, Leo Li wrote: > core code. And my concerns is that there are other drivers can hit > the same problem if connected to the threaded interrupt controller. > What can we do prevent similar problem in the future? The simplest way is to be more informative in the failure case. See patch below. Converting drivers is surely something which can be done, but I wouldn't try to do a wholesale conversion blindly. Thanks, tglx 8<---------------- diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 73a2b786b5e9..605915f689b4 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1146,6 +1146,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) nested = irq_settings_is_nested_thread(desc); if (nested) { if (!new->thread_fn) { + pr_warn("IRQ%u is nested, but thread_fn is NULL\n", irq); ret = -EINVAL; goto out_mput; } @@ -1158,8 +1159,10 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) } else { if (irq_settings_can_thread(desc)) { ret = irq_setup_forced_threading(new); - if (ret) + if (ret) { + pr_warn("IRQ%u failed to setup thread\n", irq); goto out_mput; + } } }