Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753146AbaKJOLs (ORCPT ); Mon, 10 Nov 2014 09:11:48 -0500 Received: from mail-qa0-f43.google.com ([209.85.216.43]:45985 "EHLO mail-qa0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751928AbaKJOLr (ORCPT ); Mon, 10 Nov 2014 09:11:47 -0500 MIME-Version: 1.0 In-Reply-To: References: <1415347601.8532.7.camel@AMDC1943> Date: Mon, 10 Nov 2014 15:11:45 +0100 Message-ID: Subject: Re: [PATCH v10 1/5] PM / Runtime: Allow accessing irq_safe if no PM_RUNTIME From: Ulf Hansson To: Alan Stern Cc: Krzysztof Kozlowski , "Rafael J. Wysocki" , Len Brown , Pavel Machek , Russell King , Dan Williams , Vinod Koul , "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , dmaengine@vger.kernel.org, Lars-Peter Clausen , Michal Simek , Kevin Hilman , Laurent Pinchart , Kyungmin Park , Marek Szyprowski , Bartlomiej Zolnierkiewicz Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 7 November 2014 15:50, Alan Stern wrote: > On Fri, 7 Nov 2014, Krzysztof Kozlowski wrote: > >> > Well, that is a good reason to introduce a wrapper around power.irq_safe in my >> > view. >> > >> > And define the wrapper so that it always returns false for CONFIG_PM_RUNTIME >> > unset. >> > >> > This way not only you wouldn't need to move the flag from under the #ifdef, >> > but also you would make the compiler skip the relevant pieces of code >> > entiretly for CONFIG_PM_RUNTIME unset. >> >> Few days ago I would be happy with your opinion :), but know I think >> this is better solution than wrapper. Consider case: >> 1. PM_RUNTIME unset. >> 2. System suspends. >> 3. The pl330 in its suspend callback calls force_runtime_suspend which >> leads us to amba/bus. >> 4. The amba/bus.c in runtime suspend checks for irq_safe (it is FALSE), >> so it disables and unprepares the clock. >> 5. The pl330 in probe requested irq_safe so it assumes amba/bus will >> only disable the clock. So the pl330 unprepares the clock. Again. > > To me, this sounds like a good reason to avoid using > force_runtime_suspend(). In fact, it sounds like a good reason to > avoid relying on the runtime PM mechanism to handle non-runtime-PM > things (like a system suspend callback). If CONFIG_PM_RUNTIME isn't > enabled then the runtime PM stack simply should not be used. There are an important advantage of using the pm_runtime_force_suspend() here. For the driver to handle clock gating at system PM suspend, it first needs to bring the device into full power, through pm_runtime_get_sync(). Otherwise it's not safe to gate the clock, since it may already be gated. Kind regards Uffe -- 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/