All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Linux PM <linux-pm@vger.kernel.org>,
	"Raju P . L . S . S . S . N" <rplsssn@codeaurora.org>,
	Stephen Boyd <sboyd@kernel.org>, Tony Lindgren <tony@atomide.com>,
	Kevin Hilman <khilman@kernel.org>,
	Lina Iyer <ilina@codeaurora.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v10 00/27] PM / Domains: Support hierarchical CPU arrangement (PSCI/ARM)
Date: Fri, 11 Jan 2019 12:08:32 +0100	[thread overview]
Message-ID: <2260944.bWjCqvLuxn@aspire.rjw.lan> (raw)
In-Reply-To: <CAPDyKFpV0uQhZnJhSg79RxmCq+0PFUeaXCgmBgRU5aNF8WNoDw@mail.gmail.com>

On Monday, December 17, 2018 5:12:54 PM CET Ulf Hansson wrote:
> Rafael, Sudeep, Lorenzo, Mark,
> 
> On Thu, 29 Nov 2018 at 18:47, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> >
> > Over the years this series have been iterated and discussed at various Linux
> > conferences and LKML. In this new v10, a quite significant amount of changes
> > have been made to address comments from v8 and v9. A summary is available
> > below, although let's start with a brand new clarification of the motivation
> > behind this series.
> >
> > For ARM64/ARM based platforms CPUs are often arranged in a hierarchical manner.
> > From a CPU idle state perspective, this means some states may be shared among a
> > group of CPUs (aka CPU cluster).
> >
> > To deal with idle management of a group of CPUs, sometimes the kernel needs to
> > be involved to manage the last-man standing algorithm, simply because it can't
> > rely solely on power management FWs to deal with this. Depending on the
> > platform, of course.
> >
> > There are a couple of typical scenarios for when the kernel needs to be in
> > control, dealing with synchronization of when the last CPU in a cluster is about
> > to enter a deep idle state.
> >
> > 1)
> > The kernel needs to carry out so called last-man activities before the
> > CPU cluster can enter a deep idle state. This may for example involve to
> > configure external logics for wakeups, as the GIC may no longer be functional
> > once a deep cluster idle state have been entered. Likewise, these operations
> > may need to be restored, when the first CPU wakes up.
> >
> > 2)
> > Other more generic I/O devices, such as an MMC controller for example, may be a
> > part of the same power domain as the CPU cluster, due to a shared power-rail.
> > For these scenarios, when the MMC controller is in use dealing with an MMC
> > request, a deeper idle state of the CPU cluster may needs to be temporarily
> > disabled. This is needed to retain the MMC controller in a functional state,
> > else it may loose its register-context in the middle of serving a request.
> >
> > In this series, we are extending the generic PM domain (aka genpd) to be used
> > for also CPU devices. Hence the goal is to re-use much of its current code to
> > help us manage the last-man standing synchronization. Moreover, as we already
> > use genpd to model power domains for generic I/O devices, both 1) and 2) can be
> > address with its help.
> >
> > Moreover, to address these problems for ARM64 DT based platforms, we are
> > deploying support for genpd and runtime PM to the PSCI FW driver - and finally
> > we make some updates to two ARM64 DTBs, as to deploy the new PSCI CPU topology
> > layout.
> >
> > The series has been tested on the QCOM 410c dragonboard and the Hisilicon Hikey
> > board. You may also find the code at:
> >
> > git.linaro.org/people/ulf.hansson/linux-pm.git next
> 
> It's soon been three weeks since I posted this and I would really
> appreciate some feedback.
> 
> Rafael, I need your feedback on patch 1->4.

Sorry for the delay, I've replied to the patches.

The bottom line is that the mechanism introduced in patch 3 and used
in patch 4 doesn't look particularly clean to me.

Cheers,
Rafael

WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Linux PM <linux-pm@vger.kernel.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Kevin Hilman <khilman@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Lina Iyer <ilina@codeaurora.org>,
	Tony Lindgren <tony@atomide.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	"Raju P . L . S . S . S . N" <rplsssn@codeaurora.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v10 00/27] PM / Domains: Support hierarchical CPU arrangement (PSCI/ARM)
Date: Fri, 11 Jan 2019 12:08:32 +0100	[thread overview]
Message-ID: <2260944.bWjCqvLuxn@aspire.rjw.lan> (raw)
In-Reply-To: <CAPDyKFpV0uQhZnJhSg79RxmCq+0PFUeaXCgmBgRU5aNF8WNoDw@mail.gmail.com>

On Monday, December 17, 2018 5:12:54 PM CET Ulf Hansson wrote:
> Rafael, Sudeep, Lorenzo, Mark,
> 
> On Thu, 29 Nov 2018 at 18:47, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> >
> > Over the years this series have been iterated and discussed at various Linux
> > conferences and LKML. In this new v10, a quite significant amount of changes
> > have been made to address comments from v8 and v9. A summary is available
> > below, although let's start with a brand new clarification of the motivation
> > behind this series.
> >
> > For ARM64/ARM based platforms CPUs are often arranged in a hierarchical manner.
> > From a CPU idle state perspective, this means some states may be shared among a
> > group of CPUs (aka CPU cluster).
> >
> > To deal with idle management of a group of CPUs, sometimes the kernel needs to
> > be involved to manage the last-man standing algorithm, simply because it can't
> > rely solely on power management FWs to deal with this. Depending on the
> > platform, of course.
> >
> > There are a couple of typical scenarios for when the kernel needs to be in
> > control, dealing with synchronization of when the last CPU in a cluster is about
> > to enter a deep idle state.
> >
> > 1)
> > The kernel needs to carry out so called last-man activities before the
> > CPU cluster can enter a deep idle state. This may for example involve to
> > configure external logics for wakeups, as the GIC may no longer be functional
> > once a deep cluster idle state have been entered. Likewise, these operations
> > may need to be restored, when the first CPU wakes up.
> >
> > 2)
> > Other more generic I/O devices, such as an MMC controller for example, may be a
> > part of the same power domain as the CPU cluster, due to a shared power-rail.
> > For these scenarios, when the MMC controller is in use dealing with an MMC
> > request, a deeper idle state of the CPU cluster may needs to be temporarily
> > disabled. This is needed to retain the MMC controller in a functional state,
> > else it may loose its register-context in the middle of serving a request.
> >
> > In this series, we are extending the generic PM domain (aka genpd) to be used
> > for also CPU devices. Hence the goal is to re-use much of its current code to
> > help us manage the last-man standing synchronization. Moreover, as we already
> > use genpd to model power domains for generic I/O devices, both 1) and 2) can be
> > address with its help.
> >
> > Moreover, to address these problems for ARM64 DT based platforms, we are
> > deploying support for genpd and runtime PM to the PSCI FW driver - and finally
> > we make some updates to two ARM64 DTBs, as to deploy the new PSCI CPU topology
> > layout.
> >
> > The series has been tested on the QCOM 410c dragonboard and the Hisilicon Hikey
> > board. You may also find the code at:
> >
> > git.linaro.org/people/ulf.hansson/linux-pm.git next
> 
> It's soon been three weeks since I posted this and I would really
> appreciate some feedback.
> 
> Rafael, I need your feedback on patch 1->4.

Sorry for the delay, I've replied to the patches.

The bottom line is that the mechanism introduced in patch 3 and used
in patch 4 doesn't look particularly clean to me.

Cheers,
Rafael


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-01-11 11:08 UTC|newest]

Thread overview: 157+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-29 17:46 [PATCH v10 00/27] PM / Domains: Support hierarchical CPU arrangement (PSCI/ARM) Ulf Hansson
2018-11-29 17:46 ` Ulf Hansson
2018-11-29 17:46 ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 01/27] PM / Domains: Add generic data pointer to genpd_power_state struct Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-18 10:39   ` Daniel Lezcano
2018-12-18 10:39     ` Daniel Lezcano
2018-12-18 11:53     ` Ulf Hansson
2018-12-18 11:53       ` Ulf Hansson
2019-01-11 10:52       ` Rafael J. Wysocki
2019-01-11 10:52         ` Rafael J. Wysocki
2018-11-29 17:46 ` [PATCH v10 02/27] PM / Domains: Add support for CPU devices to genpd Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-19  9:53   ` Daniel Lezcano
2018-12-19  9:53     ` Daniel Lezcano
2018-12-19 10:02     ` Ulf Hansson
2018-12-19 10:02       ` Ulf Hansson
2019-01-11 10:54       ` Rafael J. Wysocki
2019-01-11 10:54         ` Rafael J. Wysocki
2018-11-29 17:46 ` [PATCH v10 03/27] timer: Export next wakeup time of a CPU Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2019-01-11 11:06   ` Rafael J. Wysocki
2019-01-11 11:06     ` Rafael J. Wysocki
2019-01-11 11:06     ` Rafael J. Wysocki
2019-01-16  7:57     ` Ulf Hansson
2019-01-16  7:57       ` Ulf Hansson
2019-01-16  7:57       ` Ulf Hansson
2019-01-16 10:59       ` Rafael J. Wysocki
2019-01-16 10:59         ` Rafael J. Wysocki
2019-01-16 10:59         ` Rafael J. Wysocki
2019-01-16 12:00         ` Ulf Hansson
2019-01-16 12:00           ` Ulf Hansson
2019-01-16 12:00           ` Ulf Hansson
2019-01-25 10:04           ` Ulf Hansson
2019-01-25 10:04             ` Ulf Hansson
2019-01-25 10:04             ` Ulf Hansson
2019-01-25 10:18             ` Rafael J. Wysocki
2019-01-25 10:18               ` Rafael J. Wysocki
2019-01-25 10:18               ` Rafael J. Wysocki
2018-11-29 17:46 ` [PATCH v10 04/27] PM / Domains: Add genpd governor for CPUs Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-19  9:54   ` Daniel Lezcano
2018-12-19  9:54     ` Daniel Lezcano
2018-12-19 10:09     ` Ulf Hansson
2018-12-19 10:09       ` Ulf Hansson
2018-12-19 10:09       ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 05/27] dt: psci: Update DT bindings to support hierarchical PSCI states Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 06/27] of: base: Add of_get_cpu_state_node() to get idle states for a CPU node Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-19 11:05   ` Daniel Lezcano
2018-12-19 11:05     ` Daniel Lezcano
2018-11-29 17:46 ` [PATCH v10 07/27] cpuidle: dt: Support hierarchical CPU idle states Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-19 11:20   ` Daniel Lezcano
2018-12-19 11:20     ` Daniel Lezcano
2018-11-29 17:46 ` [PATCH v10 08/27] ARM/ARM64: cpuidle: Let back-end init ops take the driver as input Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 09/27] drivers: firmware: psci: Move psci to separate directory Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 10/27] MAINTAINERS: Update files for PSCI Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 11/27] drivers: firmware: psci: Split psci_dt_cpu_init_idle() Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 12/27] drivers: firmware: psci: Simplify state node parsing Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 13/27] drivers: firmware: psci: Support hierarchical CPU idle states Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-19 12:11   ` Daniel Lezcano
2018-12-19 12:11     ` Daniel Lezcano
2018-12-19 12:53     ` Ulf Hansson
2018-12-19 12:53       ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 14/27] drivers: firmware: psci: Simplify error path of psci_dt_init() Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-19 12:08   ` Daniel Lezcano
2018-12-19 12:08     ` Daniel Lezcano
2018-11-29 17:46 ` [PATCH v10 15/27] drivers: firmware: psci: Announce support for OS initiated suspend mode Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-20 13:11   ` Daniel Lezcano
2018-12-20 13:11     ` Daniel Lezcano
2018-11-29 17:46 ` [PATCH v10 16/27] drivers: firmware: psci: Prepare to use " Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-20 14:08   ` Daniel Lezcano
2018-12-20 14:08     ` Daniel Lezcano
2018-12-20 15:41     ` Ulf Hansson
2018-12-20 15:41       ` Ulf Hansson
2018-12-20 17:16       ` Daniel Lezcano
2018-12-20 17:16         ` Daniel Lezcano
2018-11-29 17:46 ` [PATCH v10 17/27] drivers: firmware: psci: Prepare to support PM domains Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-20 14:19   ` Daniel Lezcano
2018-12-20 14:19     ` Daniel Lezcano
2018-12-20 15:49     ` Ulf Hansson
2018-12-20 15:49       ` Ulf Hansson
2018-12-20 18:06       ` Daniel Lezcano
2018-12-20 18:06         ` Daniel Lezcano
2018-12-20 21:37         ` Ulf Hansson
2018-12-20 21:37           ` Ulf Hansson
2018-12-21  7:15           ` Daniel Lezcano
2018-12-21  7:15             ` Daniel Lezcano
2018-11-29 17:46 ` [PATCH v10 18/27] drivers: firmware: psci: Add support for PM domains using genpd Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-03 16:37   ` Lina Iyer
2018-12-03 16:37     ` Lina Iyer
2018-12-03 20:03     ` Ulf Hansson
2018-12-03 20:03       ` Ulf Hansson
2018-12-20 14:35   ` Daniel Lezcano
2018-12-20 14:35     ` Daniel Lezcano
2018-12-20 21:09     ` Ulf Hansson
2018-12-20 21:09       ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 19/27] drivers: firmware: psci: Add hierarchical domain idle states converter Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 20/27] drivers: firmware: psci: Introduce psci_dt_topology_init() Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 21/27] drivers: firmware: psci: Add a helper to attach a CPU to its PM domain Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-12-04 18:45   ` Lina Iyer
2018-12-04 18:45     ` Lina Iyer
2018-12-06  9:15     ` Ulf Hansson
2018-12-06  9:15       ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 22/27] drivers: firmware: psci: Attach the CPU's device " Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 23/27] drivers: firmware: psci: Manage runtime PM in the idle path for CPUs Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 24/27] drivers: firmware: psci: Support CPU hotplug for the hierarchical model Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 22:31   ` Lina Iyer
2018-11-29 22:31     ` Lina Iyer
2018-11-30  8:25     ` Ulf Hansson
2018-11-30  8:25       ` Ulf Hansson
2018-11-30 20:57       ` Lina Iyer
2018-11-30 20:57         ` Lina Iyer
2018-12-19 11:17   ` Lorenzo Pieralisi
2018-12-19 11:17     ` Lorenzo Pieralisi
2018-12-19 11:47     ` Ulf Hansson
2018-12-19 11:47       ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 25/27] arm64: kernel: Respect the hierarchical CPU topology in DT for PSCI Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:46 ` [PATCH v10 26/27] arm64: dts: Convert to the hierarchical CPU topology layout for MSM8916 Ulf Hansson
2018-11-29 17:46   ` Ulf Hansson
2018-11-29 17:47 ` [PATCH v10 27/27] arm64: dts: hikey: Convert to the hierarchical CPU topology layout Ulf Hansson
2018-11-29 17:47   ` Ulf Hansson
2018-12-17 16:12 ` [PATCH v10 00/27] PM / Domains: Support hierarchical CPU arrangement (PSCI/ARM) Ulf Hansson
2018-12-17 16:12   ` Ulf Hansson
2019-01-11 11:08   ` Rafael J. Wysocki [this message]
2019-01-11 11:08     ` Rafael J. Wysocki
2019-01-03 12:06 ` Sudeep Holla
2019-01-03 12:06   ` Sudeep Holla
2019-01-03 12:06   ` Sudeep Holla
2019-01-16  9:10   ` Ulf Hansson
2019-01-16  9:10     ` Ulf Hansson
2019-01-17 17:44     ` Sudeep Holla
2019-01-17 17:44       ` Sudeep Holla
2019-01-17 17:44       ` Sudeep Holla
2019-01-18 11:56       ` Ulf Hansson
2019-01-18 11:56         ` Ulf Hansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2260944.bWjCqvLuxn@aspire.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=geert+renesas@glider.be \
    --cc=ilina@codeaurora.org \
    --cc=khilman@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rplsssn@codeaurora.org \
    --cc=sboyd@kernel.org \
    --cc=sudeep.holla@arm.com \
    --cc=tony@atomide.com \
    --cc=ulf.hansson@linaro.org \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.