mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Saravana Kannan <skannan@codeaurora.org>
Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com>,
	will.deacon@arm.com, robh@kernel.org, sudeep.holla@arm.com,
	mathieu.poirier@linaro.org, peterz@infradead.org,
	jonathan.cameron@huawei.com, linux-kernel@vger.kernel.org,
	marc.zyngier@arm.com, leo.yan@linaro.org, frowand.list@gmail.com,
	linux-arm-kernel@lists.infradead.org, rananta@codeaurora.org,
	avilaj@codeaurora.org,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Charles Garcia-Tobin <Charles.Garcia-Tobin@arm.com>
Subject: Re: [PATCH v11 8/8] perf: ARM DynamIQ Shared Unit PMU support
Date: Sat, 10 Mar 2018 15:45:36 +0000	[thread overview]
Message-ID: <20180310154527.f6j2fgqimbtn4eme@salmiak> (raw)
In-Reply-To: <5AA30F5C.2010402@codeaurora.org>

On Fri, Mar 09, 2018 at 02:49:00PM -0800, Saravana Kannan wrote:
> > > > Looking at the code, I didn't see any specific handling of cluster
> > > > power collapse. AFAIK, the HW counters do not retain config (what event
> > > > they are counting) or value (the current count) across power collapse.
> > > > Wouldn't you need to register for some kind of PM_ENTER/EXIT notifiers
> > > > to handle that?
> > > 
> > > Good point, yes *somebody* needs to save-restore the registers. But who ? As far
> > > as the kernel is concerned, it doesn't control the DSU states. Also, as of now
> > > there is no reliable way to get the "ENTER/EXIT" notifications for the DSU power
> > > domain state changes. All we do is use the PMU, assuming it is available. AFAIT,
> > > it should really be done at EL3, which manages the DSU, but may be I am wrong.
> > 
> > Given this can happen behind the back of the kernel, if FW doesn't
> > save/restore this state, we'll have to inhibit cpuidle on a CPU
> > associated with the DSU PMU whenever it has active events, which would
> > keep the cluster online.
> 
> Using PMUs should be designed to have the least impact on power/performance.
> Otherwise, using them to profile and debug issues becomes impossible.
> Disabling cpuidle would significantly affect power and performance.
> 
> Why not use CPU_CLUSTER_PM_ENTER similar to how arm-pmu.c uses CPU_PM_ENTER
> for saving and restoring the counters?

The CPU_CLUSTER_PM_{ENTER,EXIT} notifications only exist on particular 32-bit
platforms where the kernel directly manages CPU power states. These do not
exist on systems where FW manages the cluster power state (e.g. on any arm64
platform with PSCI). So we cannot rely on CPU_CLUSTER_PM_{ENTER,EXIT} in the
DSU PMU driver.

The arm-pmu code manages state which is strictly CPU affine, so we can rely on
the CPU_PM_{ENTER,EXIT} notifications there.

We cannot rely on CPU_PM_{ENTER,EXIT} notifications to manage per-cluster
state, as CPUs can race to enter/exit idle, and we cannot track the cluster
state accurately in the kernel without serializing idle entry/exit across CPUs,
which will affect power/performance.

Thanks,
Mark.

      reply	other threads:[~2018-03-10 15:45 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-02 11:25 [PATCH v11 0/8] perf: Support for ARM DynamIQ Shared Unit Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 1/8] perf: Export perf_event_update_userpage Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 2/8] of: Add helper for mapping device node to logical CPU number Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 3/8] coresight: of: Use of_cpu_node_to_id helper Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 4/8] irqchip: gic-v3: " Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 5/8] arm64: Use of_cpu_node_to_id helper for CPU topology parsing Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 6/8] arm_pmu: Use of_cpu_node_to_id helper Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 7/8] dt-bindings: Document devicetree binding for ARM DSU PMU Suzuki K Poulose
2018-01-02 11:25 ` [PATCH v11 8/8] perf: ARM DynamIQ Shared Unit PMU support Suzuki K Poulose
2018-02-22  2:32   ` Saravana Kannan
2018-02-22 11:33     ` Mark Rutland
2018-02-22 20:38       ` Saravana Kannan
2018-02-23 11:35         ` Mark Rutland
2018-02-23 21:46           ` Saravana Kannan
2018-02-24  0:53   ` Saravana Kannan
2018-02-25 14:36     ` Mark Rutland
2018-02-28 22:17       ` Saravana Kannan
2018-03-01 11:49         ` Mark Rutland
2018-03-01 20:35           ` Saravana Kannan
2018-03-02 10:42             ` Mark Rutland
2018-03-02 19:19               ` Saravana Kannan
2018-03-05 10:59                 ` Mark Rutland
2018-03-05 22:10                   ` Saravana Kannan
2018-03-07 14:59                     ` Suzuki K Poulose
2018-03-07 21:36                       ` Saravana Kannan
2018-03-19  9:50                         ` Suzuki K Poulose
2018-03-08 11:42                     ` Mark Rutland
2018-03-08 23:59   ` Saravana Kannan
2018-03-09 10:53     ` Suzuki K Poulose
2018-03-09 13:35       ` Mark Rutland
2018-03-09 22:49         ` Saravana Kannan
2018-03-10 15:45           ` Mark Rutland [this message]

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=20180310154527.f6j2fgqimbtn4eme@salmiak \
    --to=mark.rutland@arm.com \
    --cc=Charles.Garcia-Tobin@arm.com \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=Suzuki.Poulose@arm.com \
    --cc=avilaj@codeaurora.org \
    --cc=frowand.list@gmail.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=peterz@infradead.org \
    --cc=rananta@codeaurora.org \
    --cc=robh@kernel.org \
    --cc=skannan@codeaurora.org \
    --cc=sudeep.holla@arm.com \
    --cc=will.deacon@arm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®