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=-9.9 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 C2A5EC433E1 for ; Mon, 24 Aug 2020 11:12:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9A73E206BE for ; Mon, 24 Aug 2020 11:12:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="R1EqGgYF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726457AbgHXLMX (ORCPT ); Mon, 24 Aug 2020 07:12:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725973AbgHXLMD (ORCPT ); Mon, 24 Aug 2020 07:12:03 -0400 Received: from mail-vs1-xe44.google.com (mail-vs1-xe44.google.com [IPv6:2607:f8b0:4864:20::e44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5F823C061575 for ; Mon, 24 Aug 2020 04:12:03 -0700 (PDT) Received: by mail-vs1-xe44.google.com with SMTP id e14so4202041vsa.9 for ; Mon, 24 Aug 2020 04:12:03 -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=Z5//TYxZEOCDa9uWvHD+L7cx/6ym8bakqnq3Q8GLwSg=; b=R1EqGgYF8Wxxa2OwrltVEoRoT3rNWtuEFWR6lyfr5X9wcp3Im26/m7Scaz4YYlu8ud IrOmpZb4PpTZT6UqYQB23SgX9z4JcO0NqTrpu/0kFNLiCuNZXJ9pjlRRKqDHlQfvsfMW c2j1qiSCOBPmi51xjgk/CRV4JtxIX79CGluGEvJnPPBoQIieM8LxAe8kBONTLfT8/X3S 8sOVtXqvkgN8x2A15SYhcoE/C0Br1LyjHtTE8/paLLhLI2Vr7mvzg20doVSltIlYq/3F gCC4j7vCcVqPU72PvEypC18575bEpDXhKnyzclOH4LN8kdUrYzBSEU5/n3CQgzntABON 4UbQ== 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=Z5//TYxZEOCDa9uWvHD+L7cx/6ym8bakqnq3Q8GLwSg=; b=D7mhGs4NUWferq+GSK4gGRIWs20XfVCFfpZVFy9TUfzpbOYusW6eg/DkWspU87kpva tvdpxyuHwLFPW4faFpyAk1pm7qRRc33Pen6M447rV44GJxxoMhuW4JL/NUf8pd2WOFLH bkXeVa5p+PUI9+vjwJGUXGJeInqWyecdWTMunl8TdtB5oJiPrJ/LcEP9txCJaAdZiUKu 89YdMPS2tHjYY6+hOSUMV5tgr3C2nw4eyhKiRszu8u1KXlLG+TF7WHuSy0onnWJ7ctst i7sv0HoXZUGn6Ch2iWSfPFlMyqQCGguLyRmEO3at1cVroFOwy8FOzk1cgAcEZDj0MwID jyVw== X-Gm-Message-State: AOAM5317h0Kg66QMPqJN8Zb0G53zpdeUCTUpQ4ZBA305egFHvQ2FYb2j QItfZcOcaP+CSjYG0oHBFXyrNxVU2X1Vo4x8mm8MIA== X-Google-Smtp-Source: ABdhPJze/D9HVcYXvdcyq/7lNrWTczFdsDI21S3RCgmJznLBy+cBgBLCFL3jGBjQHDoxy6kyph7U84dFDrb0p3LTFE0= X-Received: by 2002:a67:fd0a:: with SMTP id f10mr1836903vsr.35.1598267522158; Mon, 24 Aug 2020 04:12:02 -0700 (PDT) MIME-Version: 1.0 References: <20200821204921.32536-1-sibis@codeaurora.org> In-Reply-To: <20200821204921.32536-1-sibis@codeaurora.org> From: Ulf Hansson Date: Mon, 24 Aug 2020 13:11:26 +0200 Message-ID: Subject: Re: [PATCH v2 1/2] PM / Domains: Add GENPD_FLAG_NO_SUSPEND/RESUME flags To: Sibi Sankar Cc: Bjorn Andersson , Kevin Hilman , Stephen Boyd , "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 , Matthias Kaehlcke 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 Fri, 21 Aug 2020 at 22:49, Sibi Sankar wrote: > > Add GENPD_FLAG_NO_SUSPEND/RESUME flags to instruct genpd to keep the > status of the PM domain unaltered during suspend/resume respectively. > The flags are aimed at power domains coupled to co-processors which > enter low-power modes independent to that of the application processor. > > Specifically the flags are to be used by the power domains exposed > by the AOSS QMP driver linked to modem, adsp, cdsp remoteprocs. These > power domains are used to notify the Always on Subsystem (AOSS) that > a particular co-processor is up. AOSS uses this information to wait > for the co-processors to suspend before starting its sleep sequence. > The application processor powers off these power domains only if the > co-processor has crashed or powered off and remains unaltered during > system suspend/resume. > > Signed-off-by: Sibi Sankar Reviewed-by: Ulf Hansson Although, I would like Stephen's question to get an answer in the other thread, before this gets applied. Kind regards Uffe > --- > > V2: > * Add more info in commit msg and description [Uffe/Kevin/Stephen] > * Rename and split functionality into two flags [Uffe] > * Drop R-b/T-b > > drivers/base/power/domain.c | 6 ++++-- > include/linux/pm_domain.h | 10 ++++++++++ > 2 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c > index 2cb5e04cf86cd..a5df5916f30f8 100644 > --- a/drivers/base/power/domain.c > +++ b/drivers/base/power/domain.c > @@ -129,6 +129,8 @@ 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_no_suspend(genpd) (genpd->flags & GENPD_FLAG_NO_SUSPEND) > +#define genpd_is_no_resume(genpd) (genpd->flags & GENPD_FLAG_NO_RESUME) > > static inline bool irq_safe_dev_in_no_sleep_domain(struct device *dev, > const struct generic_pm_domain *genpd) > @@ -949,7 +951,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_no_suspend(genpd)) > return; > > if (genpd->suspended_count != genpd->device_count > @@ -991,7 +993,7 @@ static void genpd_sync_power_on(struct generic_pm_domain *genpd, bool use_lock, > { > struct gpd_link *link; > > - if (genpd_status_on(genpd)) > + if (genpd_status_on(genpd) || genpd_is_no_resume(genpd)) > return; > > list_for_each_entry(link, &genpd->child_links, child_node) { > diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h > index ee11502a575b0..568abdf2e89cf 100644 > --- a/include/linux/pm_domain.h > +++ b/include/linux/pm_domain.h > @@ -55,6 +55,14 @@ > * > * GENPD_FLAG_RPM_ALWAYS_ON: Instructs genpd to always keep the PM domain > * powered on except for system suspend. > + * > + * GENPD_FLAG_NO_SUSPEND: Instructs genpd to keep the PM domain powered > + * on during suspend (if it's already powered on) > + * and runtime PM controlled otherwise. > + * > + * GENPD_FLAG_NO_RESUME: Instructs genpd to keep the PM domain powered > + * off during resume (if it's already powered off) > + * and runtime PM controlled otherwise. > */ > #define GENPD_FLAG_PM_CLK (1U << 0) > #define GENPD_FLAG_IRQ_SAFE (1U << 1) > @@ -62,6 +70,8 @@ > #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_NO_SUSPEND (1U << 6) > +#define GENPD_FLAG_NO_RESUME (1U << 7) > > 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 >