Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754685AbbKLOhW (ORCPT ); Thu, 12 Nov 2015 09:37:22 -0500 Received: from smtp-out-229.synserver.de ([212.40.185.229]:1120 "EHLO smtp-out-188.synserver.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752437AbbKLOhT (ORCPT ); Thu, 12 Nov 2015 09:37:19 -0500 X-SynServer-TrustedSrc: 1 X-SynServer-AuthUser: lars@metafoo.de X-SynServer-PPID: 25940 Message-ID: <5644A418.2020906@metafoo.de> Date: Thu, 12 Nov 2015 15:37:12 +0100 From: Lars-Peter Clausen User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.8.0 MIME-Version: 1.0 To: Jon Hunter , Grygorii Strashko , Thomas Gleixner CC: Jason Cooper , Marc Zyngier , Stephen Warren , Thierry Reding , Kevin Hilman , Geert Uytterhoeven , LKML , linux-tegra@vger.kernel.org, Soren Brinkmann , Linus Walleij , Alexandre Courbot Subject: Re: [RFC PATCH 1/2] genirq: Add runtime resume/suspend support for IRQ chips References: <1447166377-19707-1-git-send-email-jonathanh@nvidia.com> <1447166377-19707-2-git-send-email-jonathanh@nvidia.com> <56421421.8070807@nvidia.com> <56421FA5.4020801@ti.com> <56423245.1040602@metafoo.de> <564314D9.9040502@nvidia.com> <564361AE.4070303@ti.com> <5644710D.7080108@nvidia.com> <5644920C.8080007@metafoo.de> <5644959D.2020207@nvidia.com> <5644986B.5030901@metafoo.de> <56449BF0.9090408@nvidia.com> In-Reply-To: <56449BF0.9090408@nvidia.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1642 Lines: 32 On 11/12/2015 03:02 PM, Jon Hunter wrote: [...] >>>> One easy way out might be to always call pm_get/pm_but from >>>> bus_lock,/bus_unlock. This way the chip is guaranteed to be powered up when >>>> accessed happens. In addition pm_get is called when the IRQ is request and >>>> pm_put is called when the IRQ is release, this is to ensure the chip stays >>>> powered when it is actively monitoring the IRQ lines. >>> >>> Yes I had thought about that, but it is not quite that easy, because in >>> the case of request_irq() you don't want to pm_put() after the >>> bus_unlock(). However, the bus_lock/unlock() are good indicators of >>> different paths. >> >> You'd call pm_get() twice in request_irq() once from bus_lock() and once >> independently, that way you still have a reference even after the bus_unlock(). > > Yes that is a possibility. However, there are places such as > show_interrupts() (kernel/irq/proc.c) and irq_gc_suspend() that do not > call bus_lock/unlock() which would need to be handled for PM. May be > these should also call bus_lock() as well? show_interrupts() only accesses software state, not hardware state, or does it? suspend/resume is a bit tricky. It's kind of driver specific if it needs to actually access the hardware or whether the state is already shadowed in software. Maybe we can make this an exception for now and let drivers handle this on their own. -- 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/