From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCE37C433E3 for ; Wed, 12 Aug 2020 09:45:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A903C20838 for ; Wed, 12 Aug 2020 09:45:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="O4fnuMvW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727025AbgHLJpp (ORCPT ); Wed, 12 Aug 2020 05:45:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726572AbgHLJpp (ORCPT ); Wed, 12 Aug 2020 05:45:45 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6661C061787 for ; Wed, 12 Aug 2020 02:45:44 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id z18so1377756wrm.12 for ; Wed, 12 Aug 2020 02:45:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=uTy4yxB/Sy2GGkpTfgcW5WshNn/nrvlwrV1YyVelTU4=; b=O4fnuMvWm+m/y/xQ0sZI/HIuQwooizkMH82l/TS46A58WPBrGQ2fg1RcF7FPXOc/uN wGvqCpbqCqZ94aojOfgfjR8gSTqFgSaPWYpwCLTXoskRKo+nASOq98bW4AGubTGej9xz 8KKXSAtg3QNIgTKlvF/fHwA7OyVUVO5PumRwCtfguGmzxiLLoqDWSQA4ueyXzTj0lPZR uJyVkhOx+/09BOmXvnZCyHW1BLepSasJY6gnEXnqJ8hePPtH0KAFLS24Erk1233a6h6N tRMZItKx6uepKGjsGt6n2V1ast7orB2wzRS6HFa0euRuxOgUAcqU91Bk0CY+m8Gmgqze 6uGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=uTy4yxB/Sy2GGkpTfgcW5WshNn/nrvlwrV1YyVelTU4=; b=ek1SgGB5XAeRf8VgzZNE5fr7EephpiRtMEzgEyDXY1I3pi3hsIzr6acpjBvtCj1Qhr TP/TtR2MxPS/tbeBcTp5MfnEXJiidGLXzyrCACvzRbi7AjBHHwWpoN6snCDnayakUf2o ijpmxtkC3b+Lt5MrqKkNgoAhJEYUXPVNOpRMzfw9XmNunBJWdhIF7NiUNk53UtS3x7Ob 4sZ2k8fxZLZvM7JkzLqK8ThRtkp224sZK2zphbhqXublpLehebVweZncJAROtn/Dw3XA ceFun1Bsn8ZCnk0v1Ehp0nVUHUEAHZ4cqZHoHcjaxl3nn4b7RKvgLGwCRgUjFIDVoVUg Ko0w== X-Gm-Message-State: AOAM532N2oDZ+/UXDI/03E4Q+wsUgLpXZhiw2t8/AEf7pX/hRfWVik/D jzlnvR6sSpUefjnM+qH15h9vW+zv8mPB22GXnIxfrA== X-Google-Smtp-Source: ABdhPJweHtfwdTZ/38ShtwHpwcAIIJYfGimC5tyUNMlQ+k4jS8cib5W994DhMFiRcslMHtBRQJDioz2En/eBT/O5qWQ= X-Received: by 2002:a05:6000:1203:: with SMTP id e3mr33739356wrx.324.1597225543416; Wed, 12 Aug 2020 02:45:43 -0700 (PDT) MIME-Version: 1.0 References: <20200811190252.10559-1-sibis@codeaurora.org> In-Reply-To: <20200811190252.10559-1-sibis@codeaurora.org> From: Ulf Hansson Date: Wed, 12 Aug 2020 11:45:06 +0200 Message-ID: Subject: Re: [PATCH 1/2] PM / Domains: Add GENPD_FLAG_SUSPEND_ON flag To: Sibi Sankar Cc: Bjorn Andersson , "Rafael J. Wysocki" , Andy Gross , Linux Kernel Mailing List , linux-arm-msm , Linux PM , Greg Kroah-Hartman , Pavel Machek , Len Brown , Rajendra Nayak , Doug Anderson , Kevin Hilman Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 11 Aug 2020 at 21:03, Sibi Sankar wrote: > > This is for power domains which needs to stay powered on for suspend > but can be powered on/off as part of runtime PM. This flag is aimed at > power domains coupled to remote processors which enter suspend states > independent to that of the application processor. Such power domains > are turned off only on remote processor crash/shutdown. As Kevin also requested, please elaborate more on the use case. Why exactly must the PM domain stay powered on during system suspend? Is there a wakeup configured that needs to be managed - or is there a co-processor/FW behaviour that needs to be obeyed to? Kind regards Uffe > > Signed-off-by: Sibi Sankar > --- > drivers/base/power/domain.c | 3 ++- > include/linux/pm_domain.h | 5 +++++ > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c > index 2cb5e04cf86cd..ba78ac4a450d4 100644 > --- a/drivers/base/power/domain.c > +++ b/drivers/base/power/domain.c > @@ -129,6 +129,7 @@ static const struct genpd_lock_ops genpd_spin_ops = { > #define genpd_is_active_wakeup(genpd) (genpd->flags & GENPD_FLAG_ACTIVE_WAKEUP) > #define genpd_is_cpu_domain(genpd) (genpd->flags & GENPD_FLAG_CPU_DOMAIN) > #define genpd_is_rpm_always_on(genpd) (genpd->flags & GENPD_FLAG_RPM_ALWAYS_ON) > +#define genpd_is_suspend_on(genpd) (genpd->flags & GENPD_FLAG_SUSPEND_ON) > > static inline bool irq_safe_dev_in_no_sleep_domain(struct device *dev, > const struct generic_pm_domain *genpd) > @@ -949,7 +950,7 @@ static void genpd_sync_power_off(struct generic_pm_domain *genpd, bool use_lock, > { > struct gpd_link *link; > > - if (!genpd_status_on(genpd) || genpd_is_always_on(genpd)) > + if (!genpd_status_on(genpd) || genpd_is_always_on(genpd) || genpd_is_suspend_on(genpd)) > return; > > if (genpd->suspended_count != genpd->device_count > diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h > index ee11502a575b0..3002a2d68936a 100644 > --- a/include/linux/pm_domain.h > +++ b/include/linux/pm_domain.h > @@ -55,6 +55,10 @@ > * > * GENPD_FLAG_RPM_ALWAYS_ON: Instructs genpd to always keep the PM domain > * powered on except for system suspend. > + * > + * GENPD_FLAG_SUSPEND_ON: Instructs genpd to keep the PM domain powered > + * on during suspend and runtime PM controlled > + * otherwise. > */ > #define GENPD_FLAG_PM_CLK (1U << 0) > #define GENPD_FLAG_IRQ_SAFE (1U << 1) > @@ -62,6 +66,7 @@ > #define GENPD_FLAG_ACTIVE_WAKEUP (1U << 3) > #define GENPD_FLAG_CPU_DOMAIN (1U << 4) > #define GENPD_FLAG_RPM_ALWAYS_ON (1U << 5) > +#define GENPD_FLAG_SUSPEND_ON (1U << 6) > > enum gpd_status { > GPD_STATE_ACTIVE = 0, /* PM domain is active */ > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project >