Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752317AbbKPKsq (ORCPT ); Mon, 16 Nov 2015 05:48:46 -0500 Received: from mail-ob0-f180.google.com ([209.85.214.180]:35076 "EHLO mail-ob0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750911AbbKPKsn (ORCPT ); Mon, 16 Nov 2015 05:48:43 -0500 MIME-Version: 1.0 In-Reply-To: <5649B135.8050800@nvidia.com> References: <1447166377-19707-1-git-send-email-jonathanh@nvidia.com> <1447166377-19707-2-git-send-email-jonathanh@nvidia.com> <7hio56dctz.fsf@deeprootsystems.com> <5645A6F6.6020202@nvidia.com> <5649A603.6020308@nvidia.com> <5649B135.8050800@nvidia.com> Date: Mon, 16 Nov 2015 11:48:42 +0100 X-Google-Sender-Auth: On1wSJqnrwgjkufp8bcnAZMQ7jQ Message-ID: Subject: Re: [RFC PATCH 1/2] genirq: Add runtime resume/suspend support for IRQ chips From: Geert Uytterhoeven To: Jon Hunter Cc: Thomas Gleixner , Kevin Hilman , Jason Cooper , Marc Zyngier , Stephen Warren , Thierry Reding , "linux-kernel@vger.kernel.org" , linux-tegra@vger.kernel.org, Linux PM list , "Rafael J. Wysocki" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2892 Lines: 69 Hi Jon, On Mon, Nov 16, 2015 at 11:34 AM, Jon Hunter wrote: > On 16/11/15 09:49, Geert Uytterhoeven wrote: >> On Mon, Nov 16, 2015 at 10:46 AM, Jon Hunter wrote: >>> On 13/11/15 20:01, Thomas Gleixner wrote: >>>> On Fri, 13 Nov 2015, Jon Hunter wrote: >>>>> On 12/11/15 23:20, Kevin Hilman wrote: >>>>>> If all the RPM devices in the domain go idle, it will be powered off >>>>>> independently of the status of the irqchip because the irqchip isn't >>>>>> using RPM. >>>>> >>>>> That's dependent on how the irqchip uses these helpers. If these helpers >>>>> invoke RPM then that will not be the case. >>>> >>>> You need a very proper description of how that domain is working. If >>>> all devices are idle, it's not necessary correct to power down the >>>> irqchip as is might serve other devices as well. >>> >>> Agreed. The irqchip should only be powered down if there are no >>> interrupts in-use/requested. Runtime-pm will keep a reference count for >>> all requested IRQs. >> >> That means the irqchip won't be powered down automatically when the >> last user is powered down, unless all users release their irqs during >> suspend. > > Right. > >> Handling it automatically needs more bookkeeping than a simple reference >> count. > > So what would you suggest? Adding a pm_runtime_register_irq() API that > would register an IRQ with the device that you want RPM to handle? Not > sure if there is a better/easier way to handle this. The irqchip needs to keep track how many times request_irq() has been called, cfr. your suggestion above. On the other side, the system needs to keep track how many times request_irq() has been called for each irqchip, so it can subtract those numbers from the irqchip's counters during suspend of the device, and re-add them during resume. So we need at least a "struct device *" parameter for request_irq(). devm_request_irq() already has that, but not all drivers use that. However, I think this should be looked at into the context of "[RFD] Functional dependencies between devices". https://lwn.net/Articles/662205/ https://lkml.org/lkml/2015/10/27/388 There can be other dependencies than interrupts between devices. All functions using dependencies need a "struct device *" parameter to record information. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/