From patchwork Tue Mar 3 20:35:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 184150 Delivered-To: patches@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp4079638ile; Tue, 3 Mar 2020 12:36:19 -0800 (PST) X-Received: by 2002:ac2:42d9:: with SMTP id n25mr3762750lfl.97.1583267779420; Tue, 03 Mar 2020 12:36:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583267779; cv=none; d=google.com; s=arc-20160816; b=zw7L3T+i03/OPFXV+3ahqWg3ERSWd3TwHyonRPMtj5jpuDBgv1BT8vDKeE/YoDFTNs kFNjkA7I9plpQcFlBCFsVsVPmJdEnXryeGYwsc5sTUbRd61ri2OtwJG0Z7kV+Nw/nNeI S3A/dAwUQmSsleOHvhJfAhwo1KlevOHUvZfMVVNKOD2TMrCWRntryvSLepPvDThE3qcZ M91TPmpIUbBu0l6lC38u9gr8L8al0SgnBtL+Lbe/g53NYfrmG1SQNF9D7CSXTrpIQBB2 dUh8j76OGcDMluO/96jRHgG6iIR3YrNTuDfEiy5wd9QKWBA4JdO+9xvcp4r5STaMMsjW NbTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=3+0UYj3qVJZMwBRFalwhwumi1SLOyZkXHX2X4PQigTk=; b=F8z5cL0Twxt+e94tdjDpPgRKhh67KE/KfT7fNG7VtIz3h/9uAkHC7+tVeYWsRst6mC qYYDPUjM8aUJ4OwTSP/2r2oab0ruFMFVyEkAauNnSMIea9olRHFGbCgPIlNsfzNdnd9M Age8+YHxLCiEArvWLWcSr0pNusgZi1XhW73F4pA5wbwnOK+02iawX+N7NcNz0UPOJqlp cqycyVd+W/LHlyDKmgO+S/pWnsGeKIhFIqlIDkms40hVKzpoe6WTyGOwWMCx70jJj6Kt HoS0NMixtOwcWtmMgm4qcO7HTuJuBSnsJ+csvnCbtc/OOqLTSwKZBZN2OV3IELoaRz7r nVUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=M6nT4o+P; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id y2sor9946181ljc.10.2020.03.03.12.36.19 for (Google Transport Security); Tue, 03 Mar 2020 12:36:19 -0800 (PST) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=M6nT4o+P; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3+0UYj3qVJZMwBRFalwhwumi1SLOyZkXHX2X4PQigTk=; b=M6nT4o+PaOt0lluB6TctZ125cHNRlgBI/C3zswdbS6bE4Vor6LpM3xul+GzDk3LYMc qw+N/dL5nSOCxpgekkdUlti+upKi21MCbPGU/bH9dA31iwdJrjuUmx50lvX4KtVd47p/ lGSRoDHKlev29S/7Vs+Z/wjbkDTdKZJ3qP6cAKGHBQ4J3m5MJ3pL5+jtoffHYIz8rb/D LyJGPV8uyzka1C/i7OsLZ1YfXnjmIl1B6XuEbzK8VLlbznNOGVRIOhySviyL9ZP5yMhT CFX4hcgpE/r3MtTYFG9uc6R3sKXfs0gMaoa5+35Hr17dAW1rceC8NKY5fQ9zkfbSVx2u Md3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3+0UYj3qVJZMwBRFalwhwumi1SLOyZkXHX2X4PQigTk=; b=EF0zux5QZuIIHNvBKSN//CD/7t6UVkoOMDHT0x66jO+/OTBSmH7v2pJc8wytYepQ6R /ivC19TEqAXfXJHiGsNvbEVXW6KAxYNoNBA4F5KC7egjpVpsGErHuR+yPN1sySKMDOmO ijFE5lOZEQHY5z53mm0rDiLdzVSCCsQjt6RN7qJAs2IPd1grij9ewmOeFooctzq1uHS9 S+Mutq23q3bi/y0BZtRGA5k4xuF/chNmuKemMR8MvC6IxZi0QrrZzt8vyLimbEzZ+FAu lyebPjP1zACglx0SikPGbt/qjs65ZEE4yjk2JnBwTM1DaLREjpzt6uYNWK51mX9Uolbh I9fA== X-Gm-Message-State: ANhLgQ1+4LTzQsR24ffcRygSPXFCugaueO/hyUhiELXB1j3iiQSLeIlY +BvKMOeJxBT0Ur3upfWfdpz561IE X-Google-Smtp-Source: ADFU+vtxH5Gk3A2TqaasCf1CsCDxKPfx3AYiuDLFIZjyb++K4u0hf79plZcWKxwzcA4xfdBGagw2Yg== X-Received: by 2002:a2e:b442:: with SMTP id o2mr3427232ljm.261.1583267779037; Tue, 03 Mar 2020 12:36:19 -0800 (PST) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id t195sm1339532lff.0.2020.03.03.12.36.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 12:36:18 -0800 (PST) From: Ulf Hansson To: Sudeep Holla , Lorenzo Pieralisi , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Daniel Lezcano , Lina Iyer , Vincent Guittot , Stephen Boyd , Bjorn Andersson , Benjamin Gaignard , Ulf Hansson , linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org Subject: [PATCH v2 1/4] PM / Domains: Allow no domain-idle-states DT property in genpd when parsing Date: Tue, 3 Mar 2020 21:35:56 +0100 Message-Id: <20200303203559.23995-2-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303203559.23995-1-ulf.hansson@linaro.org> References: <20200303203559.23995-1-ulf.hansson@linaro.org> MIME-Version: 1.0 Commit 2c361684803e ("PM / Domains: Don't treat zero found compatible idle states as an error"), moved of_genpd_parse_idle_states() towards allowing none compatible idle state to be found for the device node, rather than returning an error code. However, it didn't consider that the "domain-idle-states" DT property may be missing as it's optional, which makes of_count_phandle_with_args() to return -ENOENT. Let's fix this to make the behaviour consistent. Reported-by: Benjamin Gaignard Fixes: 2c361684803e ("PM / Domains: Don't treat zero found compatible idle states as an error") Cc: Signed-off-by: Ulf Hansson --- drivers/base/power/domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.20.1 diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 959d6d5eb000..0a01df608849 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -2653,7 +2653,7 @@ static int genpd_iterate_idle_states(struct device_node *dn, ret = of_count_phandle_with_args(dn, "domain-idle-states", NULL); if (ret <= 0) - return ret; + return ret == -ENOENT ? 0 : ret; /* Loop over the phandles until all the requested entry is found */ of_for_each_phandle(&it, ret, dn, "domain-idle-states", NULL, 0) { From patchwork Tue Mar 3 20:35:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 184151 Delivered-To: patches@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp4079656ile; Tue, 3 Mar 2020 12:36:21 -0800 (PST) X-Received: by 2002:a19:840d:: with SMTP id g13mr3912242lfd.162.1583267781008; Tue, 03 Mar 2020 12:36:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583267781; cv=none; d=google.com; s=arc-20160816; b=y0J5etQEerU6i4lKxoHdUWlLJGxqoPrXf+NuSKmJ5gU/FUDeBAanzSRcsszFYvhgye PcGNIffefsW0yrBnerhY/S6ARtOFKubabe9pdR8sn/ae4LjxfZSOh8gGEkd+sRV+LBuO Uk2/Mlk6t6OGDYSS7JVgkD0p6+XWSc699d7b9sBeemneDcT6FQOiydBj0QOHK2uFLVKr w2CqirV/h8/3yDJtuza+ix2laJOjaoDVPn8WP45Kj1VpMjBovwqlPPTWvYK9OjSRROjr gG86MJv/F9viPHfgA+fN1KDaxbHxf6drH1mIpYfLLj7yLO5rorqqRV4xE+rhZVuaXvnA xBMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=NROpLkqIKQsmOxVfnI3TCB5D/se19mcdjX7Jsvn77Ws=; b=kXq0H+SE8meyd9rXwnjsBynfvX74CCM4KIEk8xamThs9dBXSlz6cHziqvJEg496HnK Nj8+kdRlPxUAy5v5luYVO1K58ZqTOzaYr3z+BCzYdMEVHiPRZ3B6PbWw0WR197Hgtq1J Tr1QjjzSirCNZyNJNXujn2Xrcgxudzu7gP9UYDK8KyBk8lZ9jAkQjDetki0dxVjBB+Kj TT0ExMNYaI1m/b4f9/+mJmx8FoNE0XwVTCisc9NmWwenDgSMOPB/7UgGTphAq99clB3a Owxlk+KEJ1/CkBaxSqzTCLNKkuuQsEqxRLuDd1aTpApkdNbIQZu83g7w+qhMl6+T+hSm SUTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=z4JKkqN1; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id t14sor4955403lfk.6.2020.03.03.12.36.20 for (Google Transport Security); Tue, 03 Mar 2020 12:36:20 -0800 (PST) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=z4JKkqN1; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NROpLkqIKQsmOxVfnI3TCB5D/se19mcdjX7Jsvn77Ws=; b=z4JKkqN1r6xRG/KIVxn8rmsB5O65VLA31nuxkGSm+tnCsAynoEP9joIT0dW5u+frjr JOlrQLtXbkN8siv27mSjBLOMMLUXSCLVlzDVAhvV8sGDQp/BHBd92V79Sh+/wZ5MRY8+ PoSDLHf23NLIt7YzoSkdsbz/WPP1+DRFdvsaU4/KD2Af/0+Pb54gQUARhQmJpGvYIK9n n+eBd8csqq57uOxodmQ5EKSE/Kh3WENqdrUou1a8C2F8Pqd0Zs4b3YORqcuRhHKXVNa0 vaq3aMWT/6JGXo92PgRuKP+rMc9mhcJBgnaMT2OZ+b3mZywsnprdDXo3sqAXZj5zM++Y 9Xrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NROpLkqIKQsmOxVfnI3TCB5D/se19mcdjX7Jsvn77Ws=; b=rZlQSsqTj/g8C02ACXUCpnOoIfbaMHd3++WPv2/QAcUjZ8Ywb5tdIepToJsV6bIf4F BRoaO6d5kNoKUmM7+XYTTWlfd6QjAeaHvFlFOAgFTREF+QfKKropt6yDp8/HaARYwpBB FRp4UmROVH6b48bQ1d41ZHmso1zNN5DaDkxRddBSMvPIg5nfMlPj7IIuABrbDX950Vai 9XAOWPFQKTgjGYfqSMEO/PIwKOGVrGWUyCGbncNFGPjet4dc7jWRVGsV33YZtQPJ2WSs fjuh3czrQfISLnimY04XmDHBM0rIp177j/mi7uo8k3eV4eeEQ3ZdVWirb6LI6+ymjiWv eU+g== X-Gm-Message-State: ANhLgQ08C2CTasdRk94FrY1uSuk4wI8swzD/Hc5ZjviiN0klSL9ty4mW /DWCd/vA6+H6febTUalN8v96GM92 X-Google-Smtp-Source: ADFU+vvzLeYQbIe0vTeTmA7QTfjZa5SPu8+43nq3kqPmgzCEuIsW2a14EHXf+icCB4h+M6eJ1zgXPg== X-Received: by 2002:ac2:5a05:: with SMTP id q5mr3792740lfn.143.1583267780603; Tue, 03 Mar 2020 12:36:20 -0800 (PST) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id t195sm1339532lff.0.2020.03.03.12.36.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 12:36:19 -0800 (PST) From: Ulf Hansson To: Sudeep Holla , Lorenzo Pieralisi , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Daniel Lezcano , Lina Iyer , Vincent Guittot , Stephen Boyd , Bjorn Andersson , Benjamin Gaignard , Ulf Hansson , linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 2/4] cpuidle: psci: Fixup support for domain idle states being zero Date: Tue, 3 Mar 2020 21:35:57 +0100 Message-Id: <20200303203559.23995-3-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303203559.23995-1-ulf.hansson@linaro.org> References: <20200303203559.23995-1-ulf.hansson@linaro.org> MIME-Version: 1.0 The current code intends to allow a PSCI PM domain to have none domain idle states defined in DT. However, a few minor things needs to be fixed to make this correctly supported, so let's do that. Reported-by: Benjamin Gaignard Fixes: a65a397f2451 ("cpuidle: psci: Add support for PM domains by using genpd") Signed-off-by: Ulf Hansson --- drivers/cpuidle/cpuidle-psci-domain.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.20.1 diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidle-psci-domain.c index 423f03bbeb74..c34b12c4069a 100644 --- a/drivers/cpuidle/cpuidle-psci-domain.c +++ b/drivers/cpuidle/cpuidle-psci-domain.c @@ -49,6 +49,9 @@ static int __init psci_pd_parse_state_nodes(struct genpd_power_state *states, int i, ret; u32 psci_state, *psci_state_buf; + if (!states) + return 0; + for (i = 0; i < state_count; i++) { ret = psci_dt_parse_state_node(to_of_node(states[i].fwnode), &psci_state); @@ -96,6 +99,9 @@ static void psci_pd_free_states(struct genpd_power_state *states, { int i; + if (!states) + return; + for (i = 0; i < state_count; i++) kfree(states[i].data); kfree(states); From patchwork Tue Mar 3 20:35:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 184152 Delivered-To: patches@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp4079675ile; Tue, 3 Mar 2020 12:36:22 -0800 (PST) X-Received: by 2002:a2e:7816:: with SMTP id t22mr3512089ljc.160.1583267782597; Tue, 03 Mar 2020 12:36:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583267782; cv=none; d=google.com; s=arc-20160816; b=DDrnKFg5VBJaNSCyeAHw6GpPemNMzmlc7m4x33mfYSG8LOGaFjKCt14obvU2MRk6OP ddO0TEwYhqQ5CFgMw6N+hNvX2NWzVe2PvloTsKAipAY9GBnil7zDsIIyDw1SC+g0gDVR zIC1HkjiFnUfFpTseC/4s4dL0NzVS34nTKVk5tw4cnthzrNMgMNWGK9vmRa8vwsPbfFD /PHngrxHzmnYsBpEdF7MrIkdKpvjImnLzffKcve/KKhdzCwxuiymJ/E2z9aofR7tnzXg 7IWQfMNdnog2TL1WSK2eWoqoByUA9n0XnEJpQbyBFLSerQ9r7WaaUj5zMNC/JUPVsQBo 8Umg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=p6OxZjqO84dNl99kuVPctKqSI5SbottYVoqCuAlbKlY=; b=ohHpQutQQpvrC4fy0wgFKPAJsvaz6GjJIIdJq/MG++8mmG5RZzWKZnusS8Dy91VXDF tVfNXCDSZsUsTNwcUFXCG2wg4Y/H/7XmV4GqQ8NIckt2nlxC5nwFYfqRlPQft9hQL8Ik BCEoP7iXZJ5bBNe9XlU9+svxvZh8QDUH1Rb7lPqLmDT6u4y6KUr5zLd1NwSgv9jfV1ij IE/aERlJQaEJUYNFQQZHx2D04sNA5GsNl4b70dhqeFY/V+nCcCe4T+yTbTipS53+DIMV rIyHRCzBkurwcVGg0Qt6MhTrEQn0OlDt9V9ZGNTb2uu3lXcQZujYDQZQqKnhdszAb+sq 4/9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="xL/TeD7x"; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id y19sor2380702ljh.7.2020.03.03.12.36.22 for (Google Transport Security); Tue, 03 Mar 2020 12:36:22 -0800 (PST) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="xL/TeD7x"; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=p6OxZjqO84dNl99kuVPctKqSI5SbottYVoqCuAlbKlY=; b=xL/TeD7xGicYVnZjuz5GIxiYOxPH4BTrkcynvaLMauv1NyLuQtHbfACxUi7y3w5VfQ qBbXxi4obb7qT3QVorg9XjxXG+W3XJDgFKvEyveWOQocNLnkXALY3aR32yqG94pKZUcl jvMUa1LO/S2GhGsGYyNUD7RNYW0GsGmvPnh8kgxFn3DJtqGTbL/8DIO7DmaU6bUOjp1F fTQqat4KxMdVagRi9hGOUlLG1rfyN7y91LriVd0D7hbvBNI8ld0LNRkEVNm4gCaDCH4a zqhfX0P+cUgzYVj/+MXpoRIcT9EC9DS1X9VkqHvJsWqk/Rh/DkmZ5Twp6fCLT3AIL8jA iJKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=p6OxZjqO84dNl99kuVPctKqSI5SbottYVoqCuAlbKlY=; b=peD5qCej6544GYxmJSBFSdLyEPE6RjYBPimIZGLGHW0L0iLPArKA6xmRBe3xxpHBvF xs61MLBWD8tlucDzSAudyBUYislqHw9bp29DwsNnLiwUljFEoS3hvtLlWVCp2G5PGP/I jJuuDjL3uTdU7pNOPwAfoZB1e25VPvrO0WMjEa4KMiSle7xG9osfadUtwLodcwxpttzT tPn0b0JciMqPVJlnX7/OUeKvC89SmAgThiwCWgyO6JmhgUjrOzkyDB4BwKEMvhgNyIGG 6GnvPLwVSf9dIA+d0xbEIMC95L3Roy8nydLHx5vA7Pe8O7lWNZG0V3MHhl3OwizNjM95 4DVQ== X-Gm-Message-State: ANhLgQ2RugkXT4tdukHdz3zoEPd180iiOG9xW8X0Kju8b+su1vBAgqQe cReWPPMWi7gEOmhoR/ZnQWtW3fep X-Google-Smtp-Source: ADFU+vu6WzpHn5qg+aeDQWydbv05vDibX4pkN4lVrelM0STP1h+Lc44f+lGs0T4jy2FAanBW1AKICA== X-Received: by 2002:a2e:3a13:: with SMTP id h19mr1138741lja.16.1583267782135; Tue, 03 Mar 2020 12:36:22 -0800 (PST) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id t195sm1339532lff.0.2020.03.03.12.36.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 12:36:21 -0800 (PST) From: Ulf Hansson To: Sudeep Holla , Lorenzo Pieralisi , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Daniel Lezcano , Lina Iyer , Vincent Guittot , Stephen Boyd , Bjorn Andersson , Benjamin Gaignard , Ulf Hansson , linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 3/4] cpuidle: psci: Split psci_dt_cpu_init_idle() Date: Tue, 3 Mar 2020 21:35:58 +0100 Message-Id: <20200303203559.23995-4-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303203559.23995-1-ulf.hansson@linaro.org> References: <20200303203559.23995-1-ulf.hansson@linaro.org> MIME-Version: 1.0 To make the code a bit more readable, but also to prepare some code to be re-used, let's move the OSI specific initialization out of the psci_dt_cpu_init_idle() and into a separate function. Fixes: a65a397f2451 ("cpuidle: psci: Add support for PM domains by using genpd") Signed-off-by: Ulf Hansson --- Changes in v2: - Adopted suggestions from Stephen to use IS_ERR_OR_NULL and PTR_ERR_OR_ZERO, which further clarified the code. --- drivers/cpuidle/cpuidle-psci.c | 46 ++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 19 deletions(-) -- 2.20.1 diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c index edd7a54ef0d3..bae9140a65a5 100644 --- a/drivers/cpuidle/cpuidle-psci.c +++ b/drivers/cpuidle/cpuidle-psci.c @@ -160,6 +160,29 @@ int __init psci_dt_parse_state_node(struct device_node *np, u32 *state) return 0; } +static int __init psci_dt_cpu_init_topology(struct cpuidle_driver *drv, + struct psci_cpuidle_data *data, + unsigned int state_count, int cpu) +{ + /* Currently limit the hierarchical topology to be used in OSI mode. */ + if (!psci_has_osi_support()) + return 0; + + data->dev = psci_dt_attach_cpu(cpu); + if (IS_ERR_OR_NULL(data->dev)) + return PTR_ERR_OR_ZERO(data->dev); + + /* + * Using the deepest state for the CPU to trigger a potential selection + * of a shared state for the domain, assumes the domain states are all + * deeper states. + */ + drv->states[state_count - 1].enter = psci_enter_domain_idle_state; + psci_cpuidle_use_cpuhp = true; + + return 0; +} + static int __init psci_dt_cpu_init_idle(struct cpuidle_driver *drv, struct device_node *cpu_node, unsigned int state_count, int cpu) @@ -193,25 +216,10 @@ static int __init psci_dt_cpu_init_idle(struct cpuidle_driver *drv, goto free_mem; } - /* Currently limit the hierarchical topology to be used in OSI mode. */ - if (psci_has_osi_support()) { - data->dev = psci_dt_attach_cpu(cpu); - if (IS_ERR(data->dev)) { - ret = PTR_ERR(data->dev); - goto free_mem; - } - - /* - * Using the deepest state for the CPU to trigger a potential - * selection of a shared state for the domain, assumes the - * domain states are all deeper states. - */ - if (data->dev) { - drv->states[state_count - 1].enter = - psci_enter_domain_idle_state; - psci_cpuidle_use_cpuhp = true; - } - } + /* Initialize optional data, used for the hierarchical topology. */ + ret = psci_dt_cpu_init_topology(drv, data, state_count, cpu); + if (ret < 0) + goto free_mem; /* Idle states parsed correctly, store them in the per-cpu struct. */ data->psci_states = psci_states; From patchwork Tue Mar 3 20:35:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 184153 Delivered-To: patches@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp4079699ile; Tue, 3 Mar 2020 12:36:24 -0800 (PST) X-Received: by 2002:a05:651c:8f:: with SMTP id 15mr3401095ljq.109.1583267784009; Tue, 03 Mar 2020 12:36:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583267784; cv=none; d=google.com; s=arc-20160816; b=kxqEjdQx9bI4yGdGJ9GAR/aTP6fe95fJWGmrUQfNRQG2aRvFT0c8dyt1mWZJJAn+Y4 +wSqJxXFCEK0d1Pz8JcQz517lxrmAwmjzlYeALs3lLz4ptMPTMhsdn3grLL7dIya6CAH 4EbBD6PQzLUdySkL5/B1ytz38MpIC2GEbEG7YCgkGUsn76hKrT43LzI1OK9xccRD1Wmg LrHE6YIjmbdG0eUQthOw/fY7IxttUwdTbXLFS0/2yBip/lKaKwQOuMML5iCrhf6qhxVG +dKkxqvOXSv7uyZNx4JkPLBtde/ImrtiT4l4EMkhHDW3H27THiNSDIegMwHoARUXzedn gXJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=7PinDvT3vaZ+q6CFmJPa7CF8xALNvmK8t7KJc3O4ca4=; b=UPS/26Uy6L1ju+wFHB9LL9RuLSaaqtfcW0YNmQtibf8p1kuIXDMKSQQScgd0M99FCu uEZjSl8SD+N+bb+FI82HLGHkzASzKZcUPksMcy6f1WOeNQMFXm1b20LWIFok0s7RnKgG 9dRLr0h/2828ipuah0HtEch1gSHTPqF9iOLpZFQXAZ9MsZEV5mzFwzcjmnRSlX6klBtn 27hshlGTleQz2HAOj0oCN1fs746js7J2EXPVl8YoOrDy7SOQEEBX0qVi37Bac8k83xDk m3+6GZjHbE3NQZmMXG8VlJg5Y/+RHe6nv2Hfzyctjqyzl5XqWlDa8Rm+zeq9Sexd3wlH uH8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="Fq/sp9HG"; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id v16sor8929277ljc.29.2020.03.03.12.36.23 for (Google Transport Security); Tue, 03 Mar 2020 12:36:23 -0800 (PST) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="Fq/sp9HG"; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7PinDvT3vaZ+q6CFmJPa7CF8xALNvmK8t7KJc3O4ca4=; b=Fq/sp9HG47oR3mlEYYx860yS6y7Je9qVstoba2QSh8hz5l2dwmaB6g1W8Zk+yDHKzo 1qmVSw2rUW2hmBPDL+w2zNpuAAZ8uwSywAn3K6o3SPEznX1iHxralqz2M+rB5FnYlN7/ +OIDlP1SWny1pE5E8KQrWDkImEI/q7miYGDO0zz2JYVBbjJkoruHX5FRHM8RdYu5jFY7 nsX1gCXhQewE0swh1cr5Sk+B4srQFVwSeBgahNvVvvVxuda36+DCxOVHHc0cCgdwVr8c 0C3XZJEUdNwCWDAbp1hj6NVeL4kjQ62RTtg0zmYRmxAOucjwocHHMxEkQOT0Th0CTJgy XkHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7PinDvT3vaZ+q6CFmJPa7CF8xALNvmK8t7KJc3O4ca4=; b=EmXmwFORVhbSi+UkjZmrjW5AsgZB0ftKDPgC5xMWsViXEbCG4cFEdJeHZ5hzAqzMpq Ol5uvEW0fi8voCV/2NakrK4KylzNWMYgoTDdtcT54MY5y9lsF3KvVUdqtnMNs8gDMqHU rDz0g/WPIdRjfaPtDLJFAla+Sjd14M22J3Co7GhDmsqQ8u25qBOD8yHy7EUojFN4xUxe PQ1jgjxVntxHbVB33vTeTC8Y3/qCwQvtuVNsGAFn6FVMZfw5BqcduMjFboSM+MOLsfTO Kd56JKekY8+MH/Xkl/mM1iE0dj5K9N8L8Mg8gRrzz3hvPCgZykHe9H8G0Pposhu0xWAN RfLA== X-Gm-Message-State: ANhLgQ2M8TTNdhR06GBBKeGbYn39NVNFKIb0yH1tZc0SLwmkfLpDFKF9 N2FnZucuzuQ6Ud3YoOMOOTx35l3+ X-Google-Smtp-Source: ADFU+vt6uuUl+iUGLAMABwb54VVP9bXXM8EH32uRgtLikEC1RAhEd/mfOswBvrjjq1aT9X1OAg20ig== X-Received: by 2002:a2e:9e4c:: with SMTP id g12mr3324423ljk.15.1583267783555; Tue, 03 Mar 2020 12:36:23 -0800 (PST) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id t195sm1339532lff.0.2020.03.03.12.36.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 12:36:23 -0800 (PST) From: Ulf Hansson To: Sudeep Holla , Lorenzo Pieralisi , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Daniel Lezcano , Lina Iyer , Vincent Guittot , Stephen Boyd , Bjorn Andersson , Benjamin Gaignard , Ulf Hansson , linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 4/4] cpuidle: psci: Allow WFI to be the only state for the hierarchical topology Date: Tue, 3 Mar 2020 21:35:59 +0100 Message-Id: <20200303203559.23995-5-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303203559.23995-1-ulf.hansson@linaro.org> References: <20200303203559.23995-1-ulf.hansson@linaro.org> MIME-Version: 1.0 It's possible that only the WFI state is supported for the CPU, while also a shared idle state exists for a group of CPUs. When the hierarchical topology is used, the shared idle state may not be compatible with arm,idle-state, rather with "domain-idle-state", which makes dt_init_idle_driver() to return zero. This leads to that the cpuidle-psci driver bails out during initialization, avoiding to register a cpuidle driver and instead relies on the default architectural back-end (called via cpu_do_idle()). In other words, the shared idle state becomes unused. Let's fix this behaviour, by allowing the dt_init_idle_driver() to return 0 and then continue with the initialization. If it turns out that the hierarchical topology is used and we have some additional states to manage, then continue with the cpuidle driver registration, otherwise bail out as before. Reported-by: Benjamin Gaignard Fixes: a65a397f2451 ("cpuidle: psci: Add support for PM domains by using genpd") Signed-off-by: Ulf Hansson --- Changes in v2: - Convert the error code returned from psci_cpu_suspend_enter() into an expected error code by cpuidle core. --- drivers/cpuidle/cpuidle-psci.c | 48 +++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 18 deletions(-) -- 2.20.1 diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c index bae9140a65a5..ae0fabec2742 100644 --- a/drivers/cpuidle/cpuidle-psci.c +++ b/drivers/cpuidle/cpuidle-psci.c @@ -56,16 +56,19 @@ static int psci_enter_domain_idle_state(struct cpuidle_device *dev, u32 *states = data->psci_states; struct device *pd_dev = data->dev; u32 state; - int ret; + int ret = 0; /* Do runtime PM to manage a hierarchical CPU toplogy. */ pm_runtime_put_sync_suspend(pd_dev); state = psci_get_domain_state(); - if (!state) + if (!state && states) state = states[idx]; - ret = psci_enter_state(idx, state); + if (state) + ret = psci_cpu_suspend_enter(state) ? -1 : idx; + else + cpu_do_idle(); pm_runtime_get_sync(pd_dev); @@ -180,7 +183,7 @@ static int __init psci_dt_cpu_init_topology(struct cpuidle_driver *drv, drv->states[state_count - 1].enter = psci_enter_domain_idle_state; psci_cpuidle_use_cpuhp = true; - return 0; + return 1; } static int __init psci_dt_cpu_init_idle(struct cpuidle_driver *drv, @@ -192,6 +195,13 @@ static int __init psci_dt_cpu_init_idle(struct cpuidle_driver *drv, struct device_node *state_node; struct psci_cpuidle_data *data = per_cpu_ptr(&psci_cpuidle_data, cpu); + /* + * Special case when WFI is the only state, as we may still need to + * initialize data, if the hierarchical topology is used. + */ + if (!state_count) + return psci_dt_cpu_init_topology(drv, data, 1, cpu); + state_count++; /* Add WFI state too */ psci_states = kcalloc(state_count, sizeof(*psci_states), GFP_KERNEL); if (!psci_states) @@ -223,7 +233,7 @@ static int __init psci_dt_cpu_init_idle(struct cpuidle_driver *drv, /* Idle states parsed correctly, store them in the per-cpu struct. */ data->psci_states = psci_states; - return 0; + return state_count; free_mem: kfree(psci_states); @@ -282,33 +292,35 @@ static int __init psci_idle_init_cpu(int cpu) return -ENOMEM; drv->cpumask = (struct cpumask *)cpumask_of(cpu); + drv->state_count = 1; /* - * Initialize idle states data, starting at index 1, since - * by default idle state 0 is the quiescent state reached - * by the cpu by executing the wfi instruction. - * - * If no DT idle states are detected (ret == 0) let the driver - * initialization fail accordingly since there is no reason to - * initialize the idle driver if only wfi is supported, the - * default archictectural back-end already executes wfi - * on idle entry. + * Initialize idle states data, starting at index 1, since by default + * idle state 0 is the quiescent state reached by the cpu by executing + * the wfi instruction. If no DT idle states are detected (ret == 0), + * we may still use the hierarchical topology. */ ret = dt_init_idle_driver(drv, psci_idle_state_match, 1); - if (ret <= 0) { - ret = ret ? : -ENODEV; + if (ret < 0) goto out_kfree_drv; - } /* * Initialize PSCI idle states. */ ret = psci_cpu_init_idle(drv, cpu, ret); - if (ret) { + if (ret < 0) { pr_err("CPU %d failed to PSCI idle\n", cpu); goto out_kfree_drv; } + /* If there are no idle states to manage, but the wfi state and we also + * don't use the hierarchical topology, let the driver initialization + * fail. Instead, let's rely on the default architectural back-end to + * execute wfi on idle entry. + */ + if (!ret) + goto out_kfree_drv; + ret = cpuidle_register(drv, NULL); if (ret) goto out_kfree_drv;