Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp556861pxj; Fri, 28 May 2021 09:52:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJypg6JjA/VsD2iYVdTr9uhevoCB2a2Kjjw2tFiKYq01Gs2abjG15s+DCSrqVAchekfxtFMI X-Received: by 2002:a17:906:abcc:: with SMTP id kq12mr10269740ejb.97.1622220756057; Fri, 28 May 2021 09:52:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622220756; cv=none; d=google.com; s=arc-20160816; b=HUjRmKhf+/o0QCSNeEkPWuV7YquoupwCeoWNs+ugrxp3ju0tvzwAEikjjy2NzJAk1L Ih+dpbIv3CIqQVitl0Z4sOSaaM93aZ7RDeLCbu5g0n2fdUf8/FjgH+MmKPYd5x2MnzAF wW+kICfHKpLmDAvZXdJLMk8T4NMhp5Hlo64FkC2Dwd6Ar5avopjs5k2ed06kZAwoDrXF Zjs1OEZQCXnJp6iuXDMJHOFrtSsxzYuFlT0lDO8r+DY+CHnLmZjd4R09MY7jI9LnXzEm 1C+TJNagwn2MuBCeCLt1JAa7BAFT13Ts8laAKm+qDAk7RaK18yICRxotnGx2RN5NZ+6X P/Fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=6HNLdWfTOg5Qa7P4KdSeaJ7pceBefeYby9e+HB08lmU=; b=Q1QxP2ji58UoJ+O/qDgQh6fmoapVtrcLj1gT2QG+y7KAOEe37TQHZI7y0SstOinQdU mHlpu2T+yKkIKq6BjmfJVfignbPAtERAaS9ih/A84NLfZMUMY8psS58x+kQpdaB3gJ+c NsTpSVGNdLVKXKGzHq7tqh7tRxqBZ18GKfZqpqroXhSI8luZdLA+Tp9bXMhvpsvLhLBz FlYUWgBSuCNyW+eVETZJFyinEdc6AHmz511cuuPQjhERCcm51WmuCWS03wCRwQ+/9XBi 0dHoNAsjvuV2uGcxFXUF0H+zHfcOZ3mTbIuNOoVrLr/Dsj16XAaRHMvj9Kk12qmqrurA 9JFA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t18si5027908edr.386.2021.05.28.09.52.08; Fri, 28 May 2021 09:52:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236502AbhE1P24 (ORCPT + 99 others); Fri, 28 May 2021 11:28:56 -0400 Received: from netrider.rowland.org ([192.131.102.5]:58275 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S236305AbhE1P2z (ORCPT ); Fri, 28 May 2021 11:28:55 -0400 Received: (qmail 1475088 invoked by uid 1000); 28 May 2021 11:27:19 -0400 Date: Fri, 28 May 2021 11:27:19 -0400 From: Alan Stern To: Ulf Hansson Cc: "Rafael J . Wysocki" , linux-pm@vger.kernel.org, Saravana Kannan , Adrian Hunter , Tony Lindgren , Kevin Hilman , Geert Uytterhoeven , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/2] PM: runtime: Allow unassigned ->runtime_suspend|resume callbacks Message-ID: <20210528152719.GA1473569@rowland.harvard.edu> References: <20210528091202.11603-1-ulf.hansson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210528091202.11603-1-ulf.hansson@linaro.org> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 28, 2021 at 11:12:02AM +0200, Ulf Hansson wrote: > We are currently allowing ->rpm_idle() callbacks to be unassigned without > returning an error code from rpm_idle(). This has been useful to avoid > boilerplate code in drivers. Let's take this approach a step further, by > allowing unassigned ->runtime_suspend|resume() callbacks as well. > > In this way, a consumer/supplier device link can be used to let a consumer > device be power managed through its supplier device, without requiring > assigned ->runtime_suspend|resume() callbacks for the consumer device, for > example. > > Signed-off-by: Ulf Hansson > --- > drivers/base/power/runtime.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c > index 68bebbf81347..8a66eaf731e4 100644 > --- a/drivers/base/power/runtime.c > +++ b/drivers/base/power/runtime.c > @@ -345,7 +345,7 @@ static void rpm_suspend_suppliers(struct device *dev) > static int __rpm_callback(int (*cb)(struct device *), struct device *dev) > __releases(&dev->power.lock) __acquires(&dev->power.lock) > { > - int retval, idx; > + int retval = 0, idx; > bool use_links = dev->power.links_count > 0; > > if (dev->power.irq_safe) { > @@ -373,7 +373,8 @@ static int __rpm_callback(int (*cb)(struct device *), struct device *dev) > } > } > > - retval = cb(dev); > + if (cb) > + retval = cb(dev); > > if (dev->power.irq_safe) { > spin_lock(&dev->power.lock); > @@ -484,9 +485,6 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev) > { > int retval; > > - if (!cb) > - return -ENOSYS; This is a change in behavior, right? What about drivers or subsystems that don't support runtime PM and consequently don't have any RPM callbacks assigned? Also, assuming Rafael accepts this change, don't you also need to update the runtime-PM documentation? Alan Stern > - > if (dev->power.memalloc_noio) { > unsigned int noio_flag; > > -- > 2.25.1