From nobody Sat Feb 7 16:27:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6CC8BCDB47E for ; Fri, 13 Oct 2023 08:48:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230189AbjJMIs5 (ORCPT ); Fri, 13 Oct 2023 04:48:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230159AbjJMIsz (ORCPT ); Fri, 13 Oct 2023 04:48:55 -0400 Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5F265C0 for ; Fri, 13 Oct 2023 01:48:53 -0700 (PDT) Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1ca052ec63bso2050075ad.1 for ; Fri, 13 Oct 2023 01:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697186933; x=1697791733; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9sgnTvvfVpiAPPJ8fiCTAGKK94xzxBt3csYQrYp95xs=; b=R2ylfw32owgpzXLev8WI4JbQpc3yML7eAnkdXT5dDeEAebPG0A/7OBW7J/dELPNu2w mJPUnQnN9+p6WFmju7Ewbaadn0kh1hsG+x9k/4dhf5zHJjQhJ+Qay8p8av5bpGpdM8Cx vM649EOJpmNOx3KT5sN1lBRqEFJSGLoLmBANaJfhJMjyg1CPMWB2U8Epyl4gzPJjRpNB PsTNY9980KC3u+d2e2ZSni/xHMJ1zJUrObOExCefmgzo38lj8R3CcK9OzW81CBRguljO dv5RQVWjKrKXc+DgATL9uDr0REFwOLN9GuRkI/RmNGaEgYZgv+rjTI06EtTj5Fxg62ta Ob8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697186933; x=1697791733; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9sgnTvvfVpiAPPJ8fiCTAGKK94xzxBt3csYQrYp95xs=; b=udAbTb1lC4LOITVQLRd4XSU92xMRfGbRpXshOmNBRdhOCBZqoN6Hy4Jhv9n9zSmP9i jGRVmjs8/wtMLgMRC7VKgmM9gkLxIfBAPrKEcTHu9AWIZAP0QJFAeoikOmczZVW3alpC +dnMWD49Qjx3nX2vrIcN9SdnVePlDuIRwVzdNY4gtxAUXO+BKJzprf0hKu1APSoa1X37 DgH+QZAWHd8mTztFBooidEpjPIKDHLUPpEBNrScDhpC4xLF8nAVQXXL4RBokRorbtIob dRV/RxpFk6kgUoMymslGjC6x2NqLClJXqELvy+TGW052Kwn9I5sUIZdoKtz7sptxdOps oKGg== X-Gm-Message-State: AOJu0YxKM6/wsA6AvLCl+HhDfxWR3usGENYHmt25IleykdRh8v2KGu5R zdcNA5V9KsXdWRc1RS5WQOkh3Q== X-Google-Smtp-Source: AGHT+IF2PPXyHg4vc+2knzO5ZIY73/rxsaTy2n8oV7cgwV6Vqk1cB/jpSupaaNzdiEAXhUNvDwonwQ== X-Received: by 2002:a17:902:e84d:b0:1c5:ec97:1718 with SMTP id t13-20020a170902e84d00b001c5ec971718mr30704438plg.6.1697186932843; Fri, 13 Oct 2023 01:48:52 -0700 (PDT) Received: from localhost ([122.172.80.14]) by smtp.gmail.com with ESMTPSA id u9-20020a170902a60900b001c06dcd453csm3323741plq.236.2023.10.13.01.48.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 01:48:51 -0700 (PDT) From: Viresh Kumar To: Viresh Kumar , Nishanth Menon , Stephen Boyd Cc: Viresh Kumar , linux-pm@vger.kernel.org, Vincent Guittot , "Rafael J. Wysocki" , Ulf Hansson , linux-kernel@vger.kernel.org Subject: [PATCH 1/5] OPP: Fix formatting of if/else block Date: Fri, 13 Oct 2023 14:18:37 +0530 Message-Id: <58b984a1144b0db1dd6bdbcbbfbac69326f02dd1.1697186772.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.31.1.272.g89b43f80a514 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add {} to both if else blocks or none. Signed-off-by: Viresh Kumar Reviewed-by: Ulf Hansson --- drivers/opp/of.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/opp/of.c b/drivers/opp/of.c index ae5c405bbf9a..85e2af3d6a49 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -208,9 +208,9 @@ static void _opp_table_alloc_required_tables(struct opp= _table *opp_table, mutex_lock(&opp_table_lock); list_add(&opp_table->lazy, &lazy_opp_tables); mutex_unlock(&opp_table_lock); - } - else + } else { _update_set_required_opps(opp_table); + } =20 goto put_np; =20 --=20 2.31.1.272.g89b43f80a514 From nobody Sat Feb 7 16:27:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5574CDB484 for ; Fri, 13 Oct 2023 08:49:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230262AbjJMItC (ORCPT ); Fri, 13 Oct 2023 04:49:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230229AbjJMIs6 (ORCPT ); Fri, 13 Oct 2023 04:48:58 -0400 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89B0CC2 for ; Fri, 13 Oct 2023 01:48:56 -0700 (PDT) Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-1c9b70b9656so13554885ad.1 for ; Fri, 13 Oct 2023 01:48:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697186936; x=1697791736; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Uz759/oMLk+eLy7Ws95dezNQB9MhOE7jwblbgespyKU=; b=Pa8z4K60xTrZrs0pbRSt+uXHAxirfvwJnFfS+fvBmaHIF+7vPYoSzmAsKZ006jtFSw kFYeO0strsUSwb6eFCORNqGQCyW7RbB1SojSxbL6YLJ2bItef++hyco5BkVeQ5TnrqGd 9XrSBDyuBaTuXvpjh/AW/6ncIgJ0/lbH+DWONglt0zFyULaGKaTxZHAYBlUQOy6Csea5 hLq1ygBxsRJGBdo9r5J2PIllI1NcvqffY/nSmOr53zhrbpQuEqh/fF2qeXnfthBR7M54 UuQS+tWCYorJ+yp47hLG3DayVBq1wu1wWJFAcOJUzsxNX05T/M5TbjOdpxJATbKMC1s+ gQ5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697186936; x=1697791736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Uz759/oMLk+eLy7Ws95dezNQB9MhOE7jwblbgespyKU=; b=WE8Lgroz01P9GgpdB3iJzgPk2/bPqjicx30aDm6+IWMZU9GvGynVnvPc+7uxA5+GrX uF8l1pxn5mkqPttgB9rhDh0MjHCmue4GpKhdzFK+QKptJxTmLRQMdwA0pvaKhFpfbA0t mK0yC0eOpFnDaPHHeUiBDO21tPPECReOR6tHRIx7P0f1781YD+xhwfxFVYAxuu7g9vDJ NpiottUqg2QjRejCLTc3HVWvk775diXFOTBkwLpnSSBcxt0tJy2NOL3YeYR37xr+9WZF l2owzUSxpDLgliKnYMynp2qTNR+sxJ+nsq9vidJnzB9whWNSXR0Q9/xn8KvsoYSFotD0 1d0Q== X-Gm-Message-State: AOJu0YyoGxekwr9w4E1hzkzRTMSuzUG6htssbDdJXym9TwrE3WNCghuu QYcvWVR8Vuo6FaQLH/mp0T6E9w== X-Google-Smtp-Source: AGHT+IEn4AbZLaJVaNmG1K6b3v0D9p4hLbiVeobmaJDFxcPbSUYBhHy5/sMFGyYpwHNr+iy8cE+XHQ== X-Received: by 2002:a17:902:b604:b0:1c9:ba6f:af04 with SMTP id b4-20020a170902b60400b001c9ba6faf04mr8135602pls.35.1697186935994; Fri, 13 Oct 2023 01:48:55 -0700 (PDT) Received: from localhost ([122.172.80.14]) by smtp.gmail.com with ESMTPSA id 6-20020a170902c14600b001b86492d724sm3321494plj.223.2023.10.13.01.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 01:48:55 -0700 (PDT) From: Viresh Kumar To: Viresh Kumar , Nishanth Menon , Stephen Boyd Cc: Viresh Kumar , linux-pm@vger.kernel.org, Vincent Guittot , "Rafael J. Wysocki" , Ulf Hansson , linux-kernel@vger.kernel.org Subject: [PATCH 2/5] OPP: Add _link_required_opps() to avoid code duplication Date: Fri, 13 Oct 2023 14:18:38 +0530 Message-Id: <0890df8ddfafba0d9d214e73e4bb0e243a2db9fa.1697186772.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.31.1.272.g89b43f80a514 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Factor out _link_required_opps() to remove duplicate code. No functional change. Signed-off-by: Viresh Kumar Reviewed-by: Ulf Hansson --- drivers/opp/of.c | 62 ++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/drivers/opp/of.c b/drivers/opp/of.c index 85e2af3d6a49..81fa27599d58 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -296,24 +296,41 @@ void _of_clear_opp(struct opp_table *opp_table, struc= t dev_pm_opp *opp) of_node_put(opp->np); } =20 +static int _link_required_opps(struct dev_pm_opp *opp, + struct opp_table *required_table, int index) +{ + struct device_node *np; + + np =3D of_parse_required_opp(opp->np, index); + if (unlikely(!np)) + return -ENODEV; + + opp->required_opps[index] =3D _find_opp_of_np(required_table, np); + of_node_put(np); + + if (!opp->required_opps[index]) { + pr_err("%s: Unable to find required OPP node: %pOF (%d)\n", + __func__, opp->np, index); + return -ENODEV; + } + + return 0; +} + /* Populate all required OPPs which are part of "required-opps" list */ static int _of_opp_alloc_required_opps(struct opp_table *opp_table, struct dev_pm_opp *opp) { - struct dev_pm_opp **required_opps; struct opp_table *required_table; - struct device_node *np; int i, ret, count =3D opp_table->required_opp_count; =20 if (!count) return 0; =20 - required_opps =3D kcalloc(count, sizeof(*required_opps), GFP_KERNEL); - if (!required_opps) + opp->required_opps =3D kcalloc(count, sizeof(*opp->required_opps), GFP_KE= RNEL); + if (!opp->required_opps) return -ENOMEM; =20 - opp->required_opps =3D required_opps; - for (i =3D 0; i < count; i++) { required_table =3D opp_table->required_opp_tables[i]; =20 @@ -321,21 +338,9 @@ static int _of_opp_alloc_required_opps(struct opp_tabl= e *opp_table, if (IS_ERR_OR_NULL(required_table)) continue; =20 - np =3D of_parse_required_opp(opp->np, i); - if (unlikely(!np)) { - ret =3D -ENODEV; - goto free_required_opps; - } - - required_opps[i] =3D _find_opp_of_np(required_table, np); - of_node_put(np); - - if (!required_opps[i]) { - pr_err("%s: Unable to find required OPP node: %pOF (%d)\n", - __func__, opp->np, i); - ret =3D -ENODEV; + ret =3D _link_required_opps(opp, required_table, i); + if (ret) goto free_required_opps; - } } =20 return 0; @@ -350,22 +355,13 @@ static int _of_opp_alloc_required_opps(struct opp_tab= le *opp_table, static int lazy_link_required_opps(struct opp_table *opp_table, struct opp_table *new_table, int index) { - struct device_node *required_np; struct dev_pm_opp *opp; + int ret; =20 list_for_each_entry(opp, &opp_table->opp_list, node) { - required_np =3D of_parse_required_opp(opp->np, index); - if (unlikely(!required_np)) - return -ENODEV; - - opp->required_opps[index] =3D _find_opp_of_np(new_table, required_np); - of_node_put(required_np); - - if (!opp->required_opps[index]) { - pr_err("%s: Unable to find required OPP node: %pOF (%d)\n", - __func__, opp->np, index); - return -ENODEV; - } + ret =3D _link_required_opps(opp, new_table, index); + if (ret) + return ret; } =20 return 0; --=20 2.31.1.272.g89b43f80a514 From nobody Sat Feb 7 16:27:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4448CCDB484 for ; Fri, 13 Oct 2023 08:49:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230267AbjJMItF (ORCPT ); Fri, 13 Oct 2023 04:49:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230266AbjJMItC (ORCPT ); Fri, 13 Oct 2023 04:49:02 -0400 Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A31ACDA for ; Fri, 13 Oct 2023 01:48:59 -0700 (PDT) Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-6969b391791so1468877b3a.3 for ; Fri, 13 Oct 2023 01:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697186939; x=1697791739; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Il8qfrUz/VvYSn9zWibaW2EcrYf9IhDD8qWnA/nDM/0=; b=zFvuZ+v6bcwUvKVEs+3fLEJhusLNtle5frH1gamu5LxaQSETaab5Aozpa6sGqw9qMT SeSmIxsc+ccqs/p+lveeerVxz4jHK1vGW2yXxcbFs9pbV72ge2///v4NJ6etsg5fnS/O jBl+qz7wLlkQxgSUN3yJuNZ6VLHqokTsEjBRD4yjJl9h5QP5cDpeYAbzU/sReQzli2p+ JgeJJvEgzZf/IDiR285Ev88BcpAfwZMlrxsJyplKi+s5EV/8oJzphjTXQe/shl5IGXSE B/rmGG4rVYoNPppTbjMidByz4p7KhBOpUe0PJnIbK9cZQ7TYd4Gje1CLVA/dp+s1VAOH WADg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697186939; x=1697791739; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Il8qfrUz/VvYSn9zWibaW2EcrYf9IhDD8qWnA/nDM/0=; b=CxZypTH7iP0mBRsxW/GP623ctC1HjOUiRZaFvHCV804B0+RPFhra72m5YAtH/dpAlt TIu9UarJZWEnSbsG+/r60osunokX4k7G5Hey5CgW7jnCnL6/ERP2gIxJPBSJ1J/ApkH7 7NqwHl9hQ1FKNMf0a4SnNwhR2b+HEeMM3ZKiDY3nAUv6OnoH+f5RKeWdx3IkWSCS6zsd VBcBhs4dtwGIK0AIcTMXWnem2dwskjNa4VazLiW9uZ0DUwVAEAmp6fuB9mn5oFdC56FS 1loLMqbOs3TL8r8FIP3kpthPVOYddj5Th2Ye6NOWc56ShDRpPseWTQn5ZT4ZEZ9CUIRM ikPA== X-Gm-Message-State: AOJu0YwmFUdQLz+vJpvuplOvLnHE5cO0Jcl1bIDirfwEC3bKQ+dgT/YE VJwVTfN9e7td/VwQJPhg3AXOPg== X-Google-Smtp-Source: AGHT+IFuX8OHWuQqLIHMu+hE/a9qLVdUVDAqw5Eo/AfAH/SMAqPwytZyqJGU2cHfT2sWeC/2xRVuaw== X-Received: by 2002:a05:6a00:b8f:b0:693:4202:b535 with SMTP id g15-20020a056a000b8f00b006934202b535mr29675823pfj.27.1697186939127; Fri, 13 Oct 2023 01:48:59 -0700 (PDT) Received: from localhost ([122.172.80.14]) by smtp.gmail.com with ESMTPSA id g24-20020a62e318000000b00696e8215d28sm13025120pfh.20.2023.10.13.01.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 01:48:58 -0700 (PDT) From: Viresh Kumar To: Viresh Kumar , Nishanth Menon , Stephen Boyd Cc: Viresh Kumar , linux-pm@vger.kernel.org, Vincent Guittot , "Rafael J. Wysocki" , Ulf Hansson , linux-kernel@vger.kernel.org Subject: [PATCH 3/5] OPP: Reorder code in _opp_set_required_opps_genpd() Date: Fri, 13 Oct 2023 14:18:39 +0530 Message-Id: X-Mailer: git-send-email 2.31.1.272.g89b43f80a514 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Reorder code in _opp_set_required_opps_genpd() to reduce duplicate code. Signed-off-by: Viresh Kumar Reviewed-by: Ulf Hansson --- drivers/opp/core.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/opp/core.c b/drivers/opp/core.c index f42b663a4d8b..3516e79cf743 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -1076,7 +1076,18 @@ static int _opp_set_required_opps_genpd(struct devic= e *dev, { struct device **genpd_virt_devs =3D opp_table->genpd_virt_devs ? opp_table->genpd_virt_devs : &dev; - int i, ret =3D 0; + int index, target, delta, ret; + + /* Scaling up? Set required OPPs in normal order, else reverse */ + if (!scaling_down) { + index =3D 0; + target =3D opp_table->required_opp_count; + delta =3D 1; + } else { + index =3D opp_table->required_opp_count - 1; + target =3D -1; + delta =3D -1; + } =20 /* * Acquire genpd_virt_dev_lock to make sure we don't use a genpd_dev @@ -1084,24 +1095,17 @@ static int _opp_set_required_opps_genpd(struct devi= ce *dev, */ mutex_lock(&opp_table->genpd_virt_dev_lock); =20 - /* Scaling up? Set required OPPs in normal order, else reverse */ - if (!scaling_down) { - for (i =3D 0; i < opp_table->required_opp_count; i++) { - ret =3D _set_performance_state(dev, genpd_virt_devs[i], opp, i); - if (ret) - break; - } - } else { - for (i =3D opp_table->required_opp_count - 1; i >=3D 0; i--) { - ret =3D _set_performance_state(dev, genpd_virt_devs[i], opp, i); - if (ret) - break; - } + while (index !=3D target) { + ret =3D _set_performance_state(dev, genpd_virt_devs[index], opp, index); + if (ret) + break; + + index +=3D delta; } =20 mutex_unlock(&opp_table->genpd_virt_dev_lock); =20 - return ret; + return 0; } =20 /* This is only called for PM domain for now */ --=20 2.31.1.272.g89b43f80a514 From nobody Sat Feb 7 16:27:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 248E7CDB483 for ; Fri, 13 Oct 2023 08:49:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230242AbjJMItQ (ORCPT ); Fri, 13 Oct 2023 04:49:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230238AbjJMItL (ORCPT ); Fri, 13 Oct 2023 04:49:11 -0400 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0208CCC for ; Fri, 13 Oct 2023 01:49:03 -0700 (PDT) Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-5aa481d53e5so390342a12.1 for ; Fri, 13 Oct 2023 01:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697186942; x=1697791742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mjra0WdYWK36KGusor5NGq8FRrUa/zXmRjm2tlyhEOI=; b=dVBG7CgmwOVdX0Q6tRMxDQHCe7vJKwugJ12eucHlErvu77dc9H9gbH41/UCtYo6lvO /57YJNjq95QSQfjp9hJHw+FTmzNpadKW9q6kJT+B61uJ5FzzTB1D4ehgImALPRuSrHnZ u9SezJZ4iG+3jPXaJHpXAeixqqK4kxwvFLUTKZAWBW+mbLO7U8kqh/if9sTdZepuBpqF pC9xgeQZpJMF7g4kbgMK7YHh/bdpeH/XYYCyQ+GGcCNBjZ2jTnJnsEU0UKawL7g5zmJQ N5zvrWB2d9FhnOyDwtREMwpgJPtn6LyNyOS+RrxE5zvclKo3MxThb1alp2nCVfzStpbJ yyDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697186942; x=1697791742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mjra0WdYWK36KGusor5NGq8FRrUa/zXmRjm2tlyhEOI=; b=I+hrKYIKvHoExolc76vxVfV1L7wxOVzGaL97h8ubX/7vvgR83KZq8Ig3ZrTUqaHsuh 2kmwujrdEyQiBnmqzLkZxpuPVaFaP1o/OjIvgmqbV1dgy0yjbNi9DA3V0sKuN+7sZRRW mLCMSgOY2l1K8ewFs4bqPwpzpMvlqpllMR8cexYy6gAC0jbaHMmMo/hQnSg42sZZ5EUj gsRd4DZd/UwufJXNiQyzq92aQfA81Son8oKagmHP72a/IwgysDQyV4Gi5HWFxaLIGn4U pwjLHNmbBQKFyPBbJ25FePgvplR/RlDSzt7nsTM4yd+NEZdweUUV0E223uzy5E4/lu7S jdQw== X-Gm-Message-State: AOJu0YxMbi4wewSKZdHxS51STe6zOZyGUd80d2rRNTct0z1I/qyy9hR+ F1Nu74y7+9pHh3vUAcc0RLVEFg== X-Google-Smtp-Source: AGHT+IG41+b3yJXum4xwBP/+ABHsqzUFb6HvYHzaanfXBpdfqmBBj6O4RsroSNMhxFSQ+EiCBLZ8jw== X-Received: by 2002:a05:6a20:3d89:b0:174:210c:34b0 with SMTP id s9-20020a056a203d8900b00174210c34b0mr6362313pzi.0.1697186942446; Fri, 13 Oct 2023 01:49:02 -0700 (PDT) Received: from localhost ([122.172.80.14]) by smtp.gmail.com with ESMTPSA id im16-20020a170902bb1000b001c5fed0b35esm3382039plb.300.2023.10.13.01.49.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 01:49:02 -0700 (PDT) From: Viresh Kumar To: Viresh Kumar , Nishanth Menon , Stephen Boyd Cc: Viresh Kumar , linux-pm@vger.kernel.org, Vincent Guittot , "Rafael J. Wysocki" , Ulf Hansson , linux-kernel@vger.kernel.org Subject: [PATCH 4/5] OPP: Remove genpd_virt_dev_lock Date: Fri, 13 Oct 2023 14:18:40 +0530 Message-Id: X-Mailer: git-send-email 2.31.1.272.g89b43f80a514 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" All the config operations for OPP tables share common code paths now and none of the other ones have such protection in place. Either all should have it or none. The understanding here is that user won't clear the OPP configs while still using them and so such a case won't happen. We can always come back and use a wider lock for all resource types if required. Also fix the error on failing to allocate memory. Signed-off-by: Viresh Kumar Reviewed-by: Ulf Hansson --- drivers/opp/core.c | 33 +++------------------------------ drivers/opp/opp.h | 2 -- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/drivers/opp/core.c b/drivers/opp/core.c index 3516e79cf743..befe46036ad5 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -1089,12 +1089,6 @@ static int _opp_set_required_opps_genpd(struct devic= e *dev, delta =3D -1; } =20 - /* - * Acquire genpd_virt_dev_lock to make sure we don't use a genpd_dev - * after it is freed from another thread. - */ - mutex_lock(&opp_table->genpd_virt_dev_lock); - while (index !=3D target) { ret =3D _set_performance_state(dev, genpd_virt_devs[index], opp, index); if (ret) @@ -1103,8 +1097,6 @@ static int _opp_set_required_opps_genpd(struct device= *dev, index +=3D delta; } =20 - mutex_unlock(&opp_table->genpd_virt_dev_lock); - return 0; } =20 @@ -1474,7 +1466,6 @@ static struct opp_table *_allocate_opp_table(struct d= evice *dev, int index) return ERR_PTR(-ENOMEM); =20 mutex_init(&opp_table->lock); - mutex_init(&opp_table->genpd_virt_dev_lock); INIT_LIST_HEAD(&opp_table->dev_list); INIT_LIST_HEAD(&opp_table->lazy); =20 @@ -1510,7 +1501,6 @@ static struct opp_table *_allocate_opp_table(struct d= evice *dev, int index) remove_opp_dev: _of_clear_opp_table(opp_table); _remove_opp_dev(opp_dev, opp_table); - mutex_destroy(&opp_table->genpd_virt_dev_lock); mutex_destroy(&opp_table->lock); err: kfree(opp_table); @@ -1678,7 +1668,6 @@ static void _opp_table_kref_release(struct kref *kref) list_for_each_entry_safe(opp_dev, temp, &opp_table->dev_list, node) _remove_opp_dev(opp_dev, opp_table); =20 - mutex_destroy(&opp_table->genpd_virt_dev_lock); mutex_destroy(&opp_table->lock); kfree(opp_table); } @@ -2395,7 +2384,7 @@ static void _opp_put_config_regulators_helper(struct = opp_table *opp_table) opp_table->config_regulators =3D NULL; } =20 -static void _detach_genpd(struct opp_table *opp_table) +static void _opp_detach_genpd(struct opp_table *opp_table) { int index; =20 @@ -2449,13 +2438,11 @@ static int _opp_attach_genpd(struct opp_table *opp_= table, struct device *dev, if (!opp_table->required_opp_count) return -EPROBE_DEFER; =20 - mutex_lock(&opp_table->genpd_virt_dev_lock); - opp_table->genpd_virt_devs =3D kcalloc(opp_table->required_opp_count, sizeof(*opp_table->genpd_virt_devs), GFP_KERNEL); if (!opp_table->genpd_virt_devs) - goto unlock; + return -ENOMEM; =20 while (*name) { if (index >=3D opp_table->required_opp_count) { @@ -2478,29 +2465,15 @@ static int _opp_attach_genpd(struct opp_table *opp_= table, struct device *dev, =20 if (virt_devs) *virt_devs =3D opp_table->genpd_virt_devs; - mutex_unlock(&opp_table->genpd_virt_dev_lock); =20 return 0; =20 err: - _detach_genpd(opp_table); -unlock: - mutex_unlock(&opp_table->genpd_virt_dev_lock); + _opp_detach_genpd(opp_table); return ret; =20 } =20 -static void _opp_detach_genpd(struct opp_table *opp_table) -{ - /* - * Acquire genpd_virt_dev_lock to make sure virt_dev isn't getting - * used in parallel. - */ - mutex_lock(&opp_table->genpd_virt_dev_lock); - _detach_genpd(opp_table); - mutex_unlock(&opp_table->genpd_virt_dev_lock); -} - static void _opp_clear_config(struct opp_config_data *data) { if (data->flags & OPP_CONFIG_GENPD) diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h index fefdf9845692..08366f90f16b 100644 --- a/drivers/opp/opp.h +++ b/drivers/opp/opp.h @@ -160,7 +160,6 @@ enum opp_table_access { * @rate_clk_single: Currently configured frequency for single clk. * @current_opp: Currently configured OPP for the table. * @suspend_opp: Pointer to OPP to be used during device suspend. - * @genpd_virt_dev_lock: Mutex protecting the genpd virtual device pointer= s. * @genpd_virt_devs: List of virtual devices for multiple genpd support. * @required_opp_tables: List of device OPP tables that are required by OP= Ps in * this table. @@ -212,7 +211,6 @@ struct opp_table { struct dev_pm_opp *current_opp; struct dev_pm_opp *suspend_opp; =20 - struct mutex genpd_virt_dev_lock; struct device **genpd_virt_devs; struct opp_table **required_opp_tables; unsigned int required_opp_count; --=20 2.31.1.272.g89b43f80a514 From nobody Sat Feb 7 16:27:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C3A92CDB47E for ; Fri, 13 Oct 2023 08:49:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230274AbjJMItS (ORCPT ); Fri, 13 Oct 2023 04:49:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230293AbjJMItM (ORCPT ); Fri, 13 Oct 2023 04:49:12 -0400 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FDF9FA for ; Fri, 13 Oct 2023 01:49:06 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-5859a7d6556so1390216a12.0 for ; Fri, 13 Oct 2023 01:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697186945; x=1697791745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x9got1lZdwQorf5bG+rweB7SynI8yY1C0vhKZAmzQ80=; b=ITqoL4tejHHpgZHgD17QhB1xcEKmaQd4HB2FolgB5dTOnahgzgpBEiTaupow0WEenR yM6myTuRSOCKYV4eWjCxdnGfPp0FnklpgFKVmKjIldbk8uPWeGh8Qq3ucE4Qn5KWej4D XSJsraA8bZmEFyMMGkAY+f0nC/1B/y7kkj9Nw8sK6TZCyYqoDenQmw9DWUyMvjbr97h5 dgsyB6A2VW1PW+2RGg/F/hkMIlg6AwOr/Ev8U6iPOdQclQzm/XL1Z7JUp6TcvoHEq7Nn rT2+jyxZFUxCUpvBXBjtalXnzrYIGUt0kGkUla8zdNPi4QjB70fLKojKedlnTmZFn/r3 USaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697186945; x=1697791745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x9got1lZdwQorf5bG+rweB7SynI8yY1C0vhKZAmzQ80=; b=dWA85QJmPjFTaGsyiK9K95H7tag8DV9w8QssSSfCS9tS+MhAhJDoKjpFROLy2JK2Tt hOzL8W7aoB1IQV/vrZzeVrK1rD/FVtAIOtXkF5go0/i7lB1qEW5Kq1W62fPe3M3numkr U1euTQQG/6eMD7M3o9cWOP4C/rvzMX05gufJd3incJ+Y2jXg889Cpx3rHfnlZ0a5Ua1B 6HbJfhWF8VZR6JIDrriu+JQJAE92BVW1qfl/aFUwR2bw0PcfoS0VU1xe/P+A5wGYmCM0 klCqii+a5KQ8OIkvItcosyvdTYA65lrZ4pAXD+sOKeh6jq4nZwLczjtLp2UFNhm5QuDn +DuA== X-Gm-Message-State: AOJu0YyzdP7JxpDvE+0zoh3lV6Hb4qPP4KET1bSyJLMmdnTXiuNngytJ +XdbIx6JdUK9B+5LYid1ZyYIHg== X-Google-Smtp-Source: AGHT+IHR1Di5iTPJd4PZUXhJsWb4CbLa2qxXMmaVLrmyC8aci7p8IM2IzqlTvIcoLKJ+eTLd5hjsqg== X-Received: by 2002:a17:90a:195e:b0:27d:1cf4:500e with SMTP id 30-20020a17090a195e00b0027d1cf4500emr4491505pjh.7.1697186945589; Fri, 13 Oct 2023 01:49:05 -0700 (PDT) Received: from localhost ([122.172.80.14]) by smtp.gmail.com with ESMTPSA id nr20-20020a17090b241400b0027d1366d113sm3127687pjb.43.2023.10.13.01.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 01:49:05 -0700 (PDT) From: Viresh Kumar To: Viresh Kumar , Nishanth Menon , Stephen Boyd Cc: Viresh Kumar , linux-pm@vger.kernel.org, Vincent Guittot , "Rafael J. Wysocki" , Ulf Hansson , linux-kernel@vger.kernel.org Subject: [PATCH 5/5] OPP: No need to defer probe from _opp_attach_genpd() Date: Fri, 13 Oct 2023 14:18:41 +0530 Message-Id: <4cd8fe2135128168c1cd80482359dc7a46550085.1697186772.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 2.31.1.272.g89b43f80a514 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" When the new interface for attaching genpd's via the OPP core was added, it was possible for required_opp_count to be zero, but not anymore. Remove the unused check. Signed-off-by: Viresh Kumar Reviewed-by: Ulf Hansson --- drivers/opp/core.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/opp/core.c b/drivers/opp/core.c index befe46036ad5..c069aabefa00 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -2430,14 +2430,6 @@ static int _opp_attach_genpd(struct opp_table *opp_t= able, struct device *dev, if (opp_table->genpd_virt_devs) return 0; =20 - /* - * If the genpd's OPP table isn't already initialized, parsing of the - * required-opps fail for dev. We should retry this after genpd's OPP - * table is added. - */ - if (!opp_table->required_opp_count) - return -EPROBE_DEFER; - opp_table->genpd_virt_devs =3D kcalloc(opp_table->required_opp_count, sizeof(*opp_table->genpd_virt_devs), GFP_KERNEL); --=20 2.31.1.272.g89b43f80a514