Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967371AbcCQPEV (ORCPT ); Thu, 17 Mar 2016 11:04:21 -0400 Received: from www.linutronix.de ([62.245.132.108]:60606 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752941AbcCQPER (ORCPT ); Thu, 17 Mar 2016 11:04:17 -0400 Date: Thu, 17 Mar 2016 16:02:38 +0100 (CET) From: Thomas Gleixner To: Jon Hunter cc: Jason Cooper , Marc Zyngier , =?ISO-8859-15?Q?Beno=EEt_Cousson?= , Tony Lindgren , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Stephen Warren , Thierry Reding , Kevin Hilman , Geert Uytterhoeven , Grygorii Strashko , Lars-Peter Clausen , Linus Walleij , linux-tegra@vger.kernel.org, linux-omap@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 08/15] genirq: Add runtime power management support for IRQ chips In-Reply-To: <1458224359-32665-9-git-send-email-jonathanh@nvidia.com> Message-ID: References: <1458224359-32665-1-git-send-email-jonathanh@nvidia.com> <1458224359-32665-9-git-send-email-jonathanh@nvidia.com> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 983 Lines: 32 On Thu, 17 Mar 2016, Jon Hunter wrote: > /** > * struct irq_chip - hardware interrupt chip descriptor > * > + * @parent: pointer to associated device That's really a bad name. parent suggests that this is a parent interrupt chip and your explanation sucks as well. What's an associated device? Network card? > #include > #include > +#include > > #ifdef CONFIG_SPARSE_IRQ > # define IRQ_BITMAP_BITS (NR_IRQS + 8196) > diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c > index b2a93a37f772..65878e7c7c82 100644 > --- a/kernel/irq/manage.c > +++ b/kernel/irq/manage.c > @@ -1114,6 +1114,10 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) > if (!try_module_get(desc->owner)) > return -ENODEV; > > + ret = irq_chip_pm_get(&desc->irq_data); > + if (ret < 0) > + goto out_mput; So this call nests inside the chip_bus_lock() region. Is that intentional? Thanks, tglx