Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1566163imm; Wed, 13 Jun 2018 23:36:58 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKvpJ2N0s7XlKY47SbvH1pNq906QQmmtNZN8og93BjbOLsW5dXD/OzwecQbAVX1GUqZQhWu X-Received: by 2002:a65:5546:: with SMTP id t6-v6mr1137167pgr.363.1528958218892; Wed, 13 Jun 2018 23:36:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528958218; cv=none; d=google.com; s=arc-20160816; b=Z/OnskB6VRcaZLt5xQunJrBiVNQbe/uVjQnXXSck5lXRc2ndCqWV8jIbL+hkEAlddB 5GmXdyfcYJT7x3SQGqPGwtd8DRsSCfnoCH2/JpecquPAiBwg/akJbUvUoCEMS+GCNbdt lL6ZruUxQi5GFtUD8i+JnWMHPbgwWW8YrBktrcZUwPDpMQj3Zs946utEjTUHTd//eTgs qc1zu9HoJ/buLQEImz9zR5Q3f7Jtoa0E2ztp7z/U2LinpNmGf/+rAUFM3xM9JPf+Yim5 s0F4UqgbW/bZK5mLZkZ0qp0NnOcm69L8Uu/F/5FeKg0YJspWl6jypvTea/D7bzqtKG8H XN4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dmarc-filter :dkim-signature:dkim-signature:arc-authentication-results; bh=gRyp3jQPPoKoRm3lIfhfO96RGUB2vK276qhHE1fX5KA=; b=uh6r0gWsIgU7C5yh2c+UYpwDOrOv5isNJ2roMtvjbYobvFWqJXPIoefcWiXv8ErOvc kee1MmVNU8zTBuux3AkzPO6SqloN1IPOrb7YA/WFJd5mLIdXfq0uGawVkvhfrTXvwdHC Tc76fWiVGoBZB2gS2vt8RxsC7zdr5RpJnydPD/b5wihzQsA8UqnO4gp/vbVt09pZ8CSe pZR+dSAuL17ScgDZVP5Tsbz5W/xL+UCI7tIy+eY35tXe4bkbX6wTzh5FRo4tKFy8nPO2 IIvJgpfk6rwgi8dMH3pySr/UPQ5AzQipOmwB/+Gvrh919PQRLdsnGdB3Du97kFMRC4sf qgFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=ZEjBuAMq; dkim=pass header.i=@codeaurora.org header.s=default header.b="EvUv+m/E"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b12-v6si3856792pge.684.2018.06.13.23.36.44; Wed, 13 Jun 2018 23:36:58 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=ZEjBuAMq; dkim=pass header.i=@codeaurora.org header.s=default header.b="EvUv+m/E"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754626AbeFNGgC (ORCPT + 99 others); Thu, 14 Jun 2018 02:36:02 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:56038 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752925AbeFNGgB (ORCPT ); Thu, 14 Jun 2018 02:36:01 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id A06E960792; Thu, 14 Jun 2018 06:36:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1528958160; bh=FfZ9Ycnt2ejE0fiGE+4iCLH3jVV0zg1LABJhuxxq1uI=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=ZEjBuAMqYe2viLvikw/GbXpY6VwywjsrqWoZNwHW1iq/CyxmbN12VPmQdBr91n6T9 HX1Zssk7Tpcy/yffdOGu7ICzCdnf0mpqmXzxmwBYuobY2VD2NXcbhH7r2dCR91T1iN BNrRZpGwGS+9RJyBTrazmQTr+CfgK1SibZo35Eoo= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from [10.79.40.88] (blr-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.18.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: rnayak@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 89C8D60116; Thu, 14 Jun 2018 06:35:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1528958159; bh=FfZ9Ycnt2ejE0fiGE+4iCLH3jVV0zg1LABJhuxxq1uI=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=EvUv+m/EVvjzZPtj5mrM9jWA/jFKZGDBBdl1wlDXtyXnmDOe05tH8a31kll8fBsl0 1+h5rgOscXrgFz7WMNhvcRv4CcsthqT9o+8tRu/cRhCdQ4fo3IMOZa67CoCskzHnz0 Co5UrIll7FXl5srW9FzrwYRZpEU25zHNpJ8OhGLc= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 89C8D60116 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=rnayak@codeaurora.org Subject: Re: [PATCH v3 7/7] soc: qcom: rpmpd/rpmhpd: Add a max vote on all corners at init To: David Collins , viresh.kumar@linaro.org, sboyd@kernel.org, andy.gross@linaro.org, ulf.hansson@linaro.org Cc: devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org References: <20180612044052.4402-1-rnayak@codeaurora.org> <20180612044052.4402-8-rnayak@codeaurora.org> <414598de-00a1-9ce7-3a7e-4a95fd1bd35d@codeaurora.org> From: Rajendra Nayak Message-ID: Date: Thu, 14 Jun 2018 12:05:55 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <414598de-00a1-9ce7-3a7e-4a95fd1bd35d@codeaurora.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/14/2018 03:58 AM, David Collins wrote: > Hello Rajendra, > > On 06/11/2018 09:40 PM, Rajendra Nayak wrote: >> As we move from no clients/consumers in kernel voting on corners, >> to *some* voting and some not voting, we might end up in a situation >> where the clients which remove votes can adversly impact others > > s/adversly/adversely/ > >> who still don't have a way to vote. >> >> To avoid this situation, have a max vote on all corners at init. >> This should/can be removed once we have all clients moved to >> be able to vote/unvote for themselves. > > This change seems like a hack. Do you intend for it to be merged and then > later reverted in Linus's tree? Could it instead be implemented in a way > that does not require reverting and instead is enabled by some DT > property? Alternatively, could this feature be added to the power domain > core since it is relatively generic? > > >> Signed-off-by: Rajendra Nayak >> Acked-by: Viresh Kumar >> --- >> drivers/soc/qcom/rpmhpd.c | 12 +++++++++++- >> drivers/soc/qcom/rpmpd.c | 9 +++++++++ >> 2 files changed, 20 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/soc/qcom/rpmhpd.c b/drivers/soc/qcom/rpmhpd.c >> index 7083ec1590ff..3c753d33aeee 100644 >> --- a/drivers/soc/qcom/rpmhpd.c >> +++ b/drivers/soc/qcom/rpmhpd.c >> @@ -329,7 +329,7 @@ static int rpmhpd_update_level_mapping(struct rpmhpd *rpmhpd) >> >> static int rpmhpd_probe(struct platform_device *pdev) >> { >> - int i, ret; >> + int i, ret, max_level; >> size_t num; >> struct genpd_onecell_data *data; >> struct rpmhpd **rpmhpds; >> @@ -390,6 +390,16 @@ static int rpmhpd_probe(struct platform_device *pdev) >> pm_genpd_init(&rpmhpds[i]->pd, NULL, true); >> >> data->domains[i] = &rpmhpds[i]->pd; >> + >> + /* >> + * Until we have all consumers voting on corners >> + * just vote the max corner on all PDs >> + * This should ideally be *removed* once we have >> + * all (most) consumers being able to vote >> + */ >> + max_level = rpmhpds[i]->level_count - 1; >> + rpmhpd_set_performance(&rpmhpds[i]->pd, rpmhpds[i]->level[max_level]); >> + rpmhpd_power_on(&rpmhpds[i]->pd); > > Clearly these calls will result in max level requests being sent for all > power domains at probe time. However, it isn't clear that this will > actually help at runtime in these two cases: > > 1. A consumer enables and then disables a power domain. > - It seems like the PD would just be disabled in this case. > > 2. A consumer sets a non-max performance state of a power domain. > - It seems like the PD would just be set to the new lower > performance state since the max vote isn't known to the > PD core for aggregation purposes. Yes, you are right. I certainly did not seem to have thought through this enough. A need for something like this came up at a point where genpd could not deal with devices with multiple power domains. So the concern at that point was that if some consumers (which only need to vote on one corner) move to using this driver, while some others (which need to vote on multiple corners) cannot, we would end up breaking them. That does not seem to be true anymore since we do have patches from Ulf which support having devices with multiple power domains attached which can be controlled individually. So if some consumer voting makes some others break, they should just be fixed and patched to vote as well. If all this gets handled centrally from within the clock drivers then we most likely won't even end up with a situation like this. I think I will just drop this one unless Stephen/Viresh still see an issue with some early voters breaking others. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation