From patchwork Mon Oct 26 12:56:37 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kurtz X-Patchwork-Id: 7487941 Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 28CEBBEEA4 for ; Mon, 26 Oct 2015 12:57:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2B8C220719 for ; Mon, 26 Oct 2015 12:57:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3F64520703 for ; Mon, 26 Oct 2015 12:56:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754013AbbJZM46 (ORCPT ); Mon, 26 Oct 2015 08:56:58 -0400 Received: from mail-yk0-f180.google.com ([209.85.160.180]:35367 "EHLO mail-yk0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753636AbbJZM45 (ORCPT ); Mon, 26 Oct 2015 08:56:57 -0400 Received: by ykaz22 with SMTP id z22so183144779yka.2 for ; Mon, 26 Oct 2015 05:56:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=dfJ7aAQAkSjtjM7lm7jwbxsoFPthCBYwdKh9SXB4Mks=; b=nOCYUeqoMg0rztsuVimYBjkqI/tBH1Gm0iScyAZmuXvDnTs98rQSJho4tSZ0u+u3aA PQUq9qLR/q3NhMzp3Afj/Ua1a5XGzFHcHDKV1F5K+oLqqOQq85mOdyAz16j8HFsK/K/y CllQ1U3eJIkz/2DMgal3O2nKB9boOzUOA6d2V0NNVuEzBVCacLQEgRorfN0DLK98uZWw wm2tix88merR18OAMxM3/3GmghEhoxwQ2GZe2o8/3PIGxmDPpUSZUtGrGjpQg7Aikdo5 OyGHtgM/byTWNg02KQrmF2X6i1IY62ch9RO/+Qiim2y0afcf93ED6G+y+KQXx97rPLf9 EKUQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=dfJ7aAQAkSjtjM7lm7jwbxsoFPthCBYwdKh9SXB4Mks=; b=i59VQKe/ldCYVzOnqo/PoW3fjCBkQVu+NWvR4nzEp3TaS625XFyyU7vNSFGRACHN9u jGYyW2m2ZstSLGAMRKcXpqr0/A/vL185VdnJrFxFLLdyYtqzxk0DT9bf1s30YXb+ubIC AsrMbDxcVnZ0pFqhr3nn7Jp0+CyYxZ9vZiV/g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-type; bh=dfJ7aAQAkSjtjM7lm7jwbxsoFPthCBYwdKh9SXB4Mks=; b=mCKRVSeK8VfKwF497PmNptPM2nBfB2M8S2gbOaGN15LnMfQXA8d6wk37EOs+yQ391N TEkgYhEMXF0y7kcC9l546BdmmdkOFEnTvLHYRtEKPbEJP40iaGoOr02JBWlBswOonEOQ 0RBYSI0h4U2oslDr0ee7oOrxRYOD9oVvlkjRRUGnLJaluk/0hJp3JYDZ7juvv5d4A7ar 7JdWQqFmGHbiGDXA0A16mF4ZSV8UqlkxXqRZKbp8U4Y+t8E2YVzHhj/lNUr8Rk5u1oQC 5gb03Sx+SVsdn52X/CaUBhRh8dMBZKcg+y6b6VPnf1uwKPy/KVKELKEdN+eUPbPkoZyc l13Q== X-Gm-Message-State: ALoCoQmDg+1J87ySV9wn9XYUV8oMD2zNaAX5yaaUw6TaoKuuhWKTA09FQsL9DSpZLmxX8BJQE0Y3 X-Received: by 10.129.73.143 with SMTP id w137mr28843699ywa.16.1445864216529; Mon, 26 Oct 2015 05:56:56 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.117.134 with HTTP; Mon, 26 Oct 2015 05:56:37 -0700 (PDT) In-Reply-To: <1445441654-31778-4-git-send-email-tomeu.vizoso@collabora.com> References: <1445441654-31778-1-git-send-email-tomeu.vizoso@collabora.com> <1445441654-31778-4-git-send-email-tomeu.vizoso@collabora.com> From: Daniel Kurtz Date: Mon, 26 Oct 2015 20:56:37 +0800 X-Google-Sender-Auth: fZx8f0zLsCf8xp29n8MIv5r3evE Message-ID: Subject: Re: [PATCH v10 3/4] PM / sleep: Go direct_complete if driver has no callbacks To: Tomeu Vizoso Cc: linux-pm@vger.kernel.org, Alan Stern , "Rafael J. Wysocki" , martyn.welch@collabora.co.uk, Ulf Hansson , "linux-kernel@vger.kernel.org" , Len Brown , Kevin Hilman , Greg Kroah-Hartman , Pavel Machek , Derek Basehore Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hi Tomeu, On Wed, Oct 21, 2015 at 11:34 PM, Tomeu Vizoso wrote: > If a suitable prepare callback cannot be found for a given device and > its driver has no PM callbacks at all, assume that it can go direct to > complete when the system goes to sleep. > > The reason for this is that there's lots of devices in a system that do > no PM at all and there's no reason for them to prevent their ancestors > to do direct_complete if they can support it. > > Signed-off-by: Tomeu Vizoso > Reviewed-by: Ulf Hansson > --- [snip...] > diff --git a/drivers/base/power/common.c b/drivers/base/power/common.c > index a70f8a5cdfd7..763eee24cb95 100644 > --- a/drivers/base/power/common.c > +++ b/drivers/base/power/common.c > @@ -14,6 +14,8 @@ > #include > #include > > +#include "power.h" > + > /** > * dev_pm_get_subsys_data - Create or refcount power.subsys_data for device. > * @dev: Device to handle. > @@ -147,5 +149,6 @@ void dev_pm_domain_set(struct device *dev, struct dev_pm_domain *pd) > WARN(device_is_bound(dev), > "PM domains can only be changed for unbound devices\n"); > dev->pm_domain = pd; > + device_pm_check_callbacks(dev); device_pm_check_callbacks(dev) grabs spin_lock_irq(&dev->power.lock); But, one of the callers of dev_pm_domain_set() that you just added in the previous patch "PM / Domains: add setter for dev.pm_domain" also grabs this same spinlock: -------------------- -------------------- At least on the board I am testing, this causes a deadlock on boot. -Dan --- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 16550c63d611..b75d02aa8d93 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -1240,7 +1240,7 @@ static struct generic_pm_domain_data *genpd_alloc_dev_data(struct device *dev, } dev->power.subsys_data->domain_data = &gpd_data->base; - dev->pm_domain = &genpd->domain; + dev_pm_domain_set(dev, &genpd->domain); spin_unlock_irq(&dev->power.lock);