From patchwork Mon Dec 30 14:43:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 182614 Delivered-To: patches@linaro.org Received: by 2002:a92:815a:0:0:0:0:0 with SMTP id e87csp6422062ild; Mon, 30 Dec 2019 06:44:09 -0800 (PST) X-Received: by 2002:a2e:96da:: with SMTP id d26mr38127660ljj.6.1577717048918; Mon, 30 Dec 2019 06:44:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577717048; cv=none; d=google.com; s=arc-20160816; b=mBoosj59B82CCaKsHVTZOrAZlrYexiklYi99MnRLJuZMhw0ZgKYKhVBn0N0iOpSErd 1PXwQAG7gdIEKd3omCIMWcu7G+NGxkfMo7jJNEEriVAKxtfPxHb2LVQG8fE5QxHeLLRq x/4bDP/pdSdl/y+fEjrEtQCwHJ/uLWGocjLDZCU4UPIqpBXt2f8t7TULITzRKmBjoZF8 T9lTgO8lGqDLpLn/5h/fvGORY7GxgjzsL7xaeUt3LtB2z0oUaharARBZ9cWqaULcSuU9 F7ZAumIQcBN/SoVIeARHOW2btec6/6wXW/OikZa86geOF2Jc9fz0xx8AMK/fPgMU0/wq cmRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature; bh=sFfjg/yNHvgMOq/dY0SQeqxIZJHWCbLuEKyo3araOLs=; b=FamJhpmjSlVEEgy7TioaxFZHsib1/rI30SidxXd0w5JFapfRMy4lpMndRiII/yQyIJ uETYOC90R163U/k9cA6OA6Dz4z14IdUVznakcJWzMHNEgfDeVsl+UFFBbB8xCyRTCwYX bPMbzpKciPIkozw9leJ9Q9nPS/EPndmaymTeC35GPRZOmfwHESIj0pKn9j+0Q6r72a50 zpVIL/a5ShzuDem/WRLxW5Mnjj9wDTJ/oMu/lpZPkBJ+9IR/n5iTe9YSxgWW/3ajhbKh Yyc+PN5CvKhRXIwfwjVpRtSvw8ePdI7+oXp9SqC6VDjzYjYcD6wxjE8L1XeMNIg40BWY uWpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="NP/bXJFL"; 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 y26sor9824155lfl.67.2019.12.30.06.44.08 for (Google Transport Security); Mon, 30 Dec 2019 06:44:08 -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="NP/bXJFL"; 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; bh=sFfjg/yNHvgMOq/dY0SQeqxIZJHWCbLuEKyo3araOLs=; b=NP/bXJFLt86IBRjeVMel3EBAEvK8F7rBxQbMHOohl4CF2QNfY9trFGs+OHOfSomsVD tLeLIs8K3KwGEDz9U/J51c6YOE4ZzyNB2l72m/Lr/Jh3NQx591Q2w+1yXvAsRlLdZjnl 5QXW17WOv65zyS/p8YBEVHpjlPuvKRrHn7p3KfGlgGVBth9MPppuf35rsX4oZcwU5UKP Mi1MImgE0NmiNE3eBREBzc+u9lB1OrsjhTDw0RGHMDK3BqGMZlW8dkg1HcygZxDr+o7V Nr9PFC4MivKEkhX6ZlcQwQSykROcCnzGVRAgj7mguDzbuk9pLT2GSMWjQ3HvDPzEE/3Y YPWQ== 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; bh=sFfjg/yNHvgMOq/dY0SQeqxIZJHWCbLuEKyo3araOLs=; b=GKvd6ZyJoD3vSbULRz15wfL4/teuej0nNBggoljGz9Pgf6iaT+GUBDAVjXOlAfAEl/ WLGZlWBCE64Iiq0jVkzKv/X3WXtPH6ySZLD9HmRRV7a5Lnj4v2BUDjXp4sSPMp91om5Q a39KNh3hE5+U0nEdZxmcrc6xnq9r3NVIrFPDiuXp9J2Dx8Zm7EL74Q5KYZrg/y8nXOin Vn38PSNRHMzBTDLutXfPKte8J1rHzCZTgOC8WAbd5JRn7vjwRU1WlB9Q7nafdPUlqtD/ d/7p5IccyFz8d6Qkysh22FATdj5ngHRKG3TljqCql6neaQg81j/eucPdlekBvm1z4BC8 V8kg== X-Gm-Message-State: APjAAAVDmLkHMmtILLZkQmTKZmtYWHtG85Fgf8bVOW2tartHYtnBnWcF jeIK266qbrxNNNmgwCe6v51djxdu X-Google-Smtp-Source: APXvYqy4XidAIjxpwoiaO8eMYG36haXaoFRqDnDjYaeZWAaq8806N3mNSYv74D0HNG8dhm1F6TD5NQ== X-Received: by 2002:a19:48c5:: with SMTP id v188mr38314593lfa.100.1577717048501; Mon, 30 Dec 2019 06:44:08 -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 a21sm18744931lfg.44.2019.12.30.06.44.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Dec 2019 06:44:07 -0800 (PST) From: Ulf Hansson To: Sudeep Holla , Lorenzo Pieralisi , Rob Herring , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Daniel Lezcano , Mark Rutland , Lina Iyer , Vincent Guittot , Stephen Boyd , Andy Gross , Bjorn Andersson , Kevin Hilman , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org Subject: [PATCH v5 00/15] cpuidle: psci: Support hierarchical CPU arrangement Date: Mon, 30 Dec 2019 15:43:47 +0100 Message-Id: <20191230144402.30195-1-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.17.1 Changes in v5: - Remove PM domains in the error path, when failing to enable OSI. - Folded in a patch that adds a genpd OF helper to remove subdomains. - Added reviewed-by tags. Changes in v4: - Move the check for OSI support from psci_dt_attach_cpu() to the caller's side of it. - Add comment in the code about using the deepest idle state as the triggering point for the domain state selection. - Folded in a patch to enable support for CPU hotplug. Changes in v3: - Take one step further to completely avoid executing any OSI specific code from the ->enter() callback, while operating in the default PSCI Platform Coordinated mode. - Update example for the PSCI DT bindings to make it compile with "make dt_binding_check" Changes in v2: - Avoid to affect the non-OSI path with specific changes for OSI. This forced me to re-order the series and a caused more or less minor changes to most of the patches. - Updated the DT bindings for PSCI to clarify and to include the "psci" name of the PM domain to attach to. - Replaced patch1 with another patch from Sudeep, solving the same problem, but in a different way. This series enables initial support for hierarchical CPU arrangement, managed by PSCI and its corresponding cpuidle driver. It's based on using the generic PM domain (genpd), which nowadays also supports devices belonging to CPUs. The last DTS patch enables the hierarchical topology to be used for the Qcom 410c Dragonboard, which supports the PSCI OS-initiated mode. More detailed background can be found from previous submissions [1]. The series is also available at: git.linaro.org/people/ulf.hansson/linux-pm.git next Kind regards Ulf Hansson [1] https://lwn.net/Articles/788306/ Lina Iyer (1): cpuidle: dt: Support hierarchical CPU idle states Sudeep Holla (1): cpuidle: psci: Align psci_power_state count with idle state count Ulf Hansson (13): dt: psci: Update DT bindings to support hierarchical PSCI states firmware: psci: Export functions to manage the OSI mode of: base: Add of_get_cpu_state_node() to get idle states for a CPU node cpuidle: psci: Simplify OF parsing of CPU idle state nodes cpuidle: psci: Support hierarchical CPU idle states cpuidle: psci: Add a helper to attach a CPU to its PM domain cpuidle: psci: Attach CPU devices to their PM domains cpuidle: psci: Prepare to use OS initiated suspend mode via PM domains cpuidle: psci: Manage runtime PM in the idle path cpuidle: psci: Support CPU hotplug for the hierarchical model PM / Domains: Introduce a genpd OF helper that removes a subdomain cpuidle: psci: Add support for PM domains by using genpd arm64: dts: Convert to the hierarchical CPU topology layout for MSM8916 .../devicetree/bindings/arm/cpus.yaml | 15 + .../devicetree/bindings/arm/psci.yaml | 104 ++++++ arch/arm64/boot/dts/qcom/msm8916.dtsi | 57 +++- drivers/base/power/domain.c | 38 +++ drivers/cpuidle/Makefile | 4 +- drivers/cpuidle/cpuidle-psci-domain.c | 308 ++++++++++++++++++ drivers/cpuidle/cpuidle-psci.c | 161 +++++++-- drivers/cpuidle/cpuidle-psci.h | 17 + drivers/cpuidle/dt_idle_states.c | 5 +- drivers/firmware/psci/psci.c | 18 +- drivers/of/base.c | 36 ++ include/linux/cpuhotplug.h | 1 + include/linux/of.h | 8 + include/linux/pm_domain.h | 8 + include/linux/psci.h | 2 + 15 files changed, 747 insertions(+), 35 deletions(-) create mode 100644 drivers/cpuidle/cpuidle-psci-domain.c create mode 100644 drivers/cpuidle/cpuidle-psci.h -- 2.17.1