All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep Holla <sudeep.holla@arm.com>
To: Leo Yan <leo.yan@linaro.org>, Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Wei Xu <xuwei5@hisilicon.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	John Stultz <john.stultz@linaro.org>,
	Guodong Xu <guodong.xu@linaro.org>,
	Haojian Zhuang <haojian.zhuang@linaro.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
	mike.leach@linaro.org
Cc: Sudeep Holla <sudeep.holla@arm.com>
Subject: Re: [PATCH v3 3/5] coresight: add support for debug module
Date: Tue, 21 Mar 2017 15:39:23 +0000	[thread overview]
Message-ID: <671a0b39-b635-6e0e-d3fa-967651f2e29c@arm.com> (raw)
In-Reply-To: <1488520809-31670-4-git-send-email-leo.yan@linaro.org>



On 03/03/17 06:00, Leo Yan wrote:
> Coresight includes debug module and usually the module connects with CPU
> debug logic. ARMv8 architecture reference manual (ARM DDI 0487A.k) has
> description for related info in "Part H: External Debug".
> 
> Chapter H7 "The Sample-based Profiling Extension" introduces several
> sampling registers, e.g. we can check program counter value with
> combined CPU exception level, secure state, etc. So this is helpful for
> analysis CPU lockup scenarios, e.g. if one CPU has run into infinite
> loop with IRQ disabled. In this case the CPU cannot switch context and
> handle any interrupt (including IPIs), as the result it cannot handle
> SMP call for stack dump.
> 
> This patch is to enable coresight debug module, so firstly this driver
> is to bind apb clock for debug module and this is to ensure the debug
> module can be accessed from program or external debugger. And the driver
> uses sample-based registers for debug purpose, e.g. when system detects
> the CPU lockup and trigger panic, the driver will dump program counter
> and combined context registers (EDCIDSR, EDVIDSR); by parsing context
> registers so can quickly get to know CPU secure state, exception level,
> etc.
> 
> Some of the debug module registers are located in CPU power domain, so
> in the driver it has checked the power state for CPU before accessing
> registers within CPU power domain. For most safe way to use this driver,
> it's suggested to disable CPU low power states, this can simply set
> "nohlt" in kernel command line.
> 

I disagree with this approach. One of the main usefulness of such self
hosted debug feature is to debug issues around features like cpuidle.
Adding constraints like "cpuidle needs to be disabled" is not good IMO.
There are ways to make it work with cpuidle enabled. Please explore
them. In particular refer H9.2.39 EDPRCR, External Debug Power/Reset
Control Register.

So, "nohlt" option is not an option. I prefer some sysfs option like
Suzuki suggested to enable this feature on demand if power saving in
normal usecase is the concern. Using "nohlt" just disables idle and
doesn't ensure the debug power domain is ON. Using the flag directly in
this driver to enable debug power domain also sounds misuse of that flag
for me.

-- 
Regards,
Sudeep

WARNING: multiple messages have this Message-ID (diff)
From: sudeep.holla@arm.com (Sudeep Holla)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/5] coresight: add support for debug module
Date: Tue, 21 Mar 2017 15:39:23 +0000	[thread overview]
Message-ID: <671a0b39-b635-6e0e-d3fa-967651f2e29c@arm.com> (raw)
In-Reply-To: <1488520809-31670-4-git-send-email-leo.yan@linaro.org>



On 03/03/17 06:00, Leo Yan wrote:
> Coresight includes debug module and usually the module connects with CPU
> debug logic. ARMv8 architecture reference manual (ARM DDI 0487A.k) has
> description for related info in "Part H: External Debug".
> 
> Chapter H7 "The Sample-based Profiling Extension" introduces several
> sampling registers, e.g. we can check program counter value with
> combined CPU exception level, secure state, etc. So this is helpful for
> analysis CPU lockup scenarios, e.g. if one CPU has run into infinite
> loop with IRQ disabled. In this case the CPU cannot switch context and
> handle any interrupt (including IPIs), as the result it cannot handle
> SMP call for stack dump.
> 
> This patch is to enable coresight debug module, so firstly this driver
> is to bind apb clock for debug module and this is to ensure the debug
> module can be accessed from program or external debugger. And the driver
> uses sample-based registers for debug purpose, e.g. when system detects
> the CPU lockup and trigger panic, the driver will dump program counter
> and combined context registers (EDCIDSR, EDVIDSR); by parsing context
> registers so can quickly get to know CPU secure state, exception level,
> etc.
> 
> Some of the debug module registers are located in CPU power domain, so
> in the driver it has checked the power state for CPU before accessing
> registers within CPU power domain. For most safe way to use this driver,
> it's suggested to disable CPU low power states, this can simply set
> "nohlt" in kernel command line.
> 

I disagree with this approach. One of the main usefulness of such self
hosted debug feature is to debug issues around features like cpuidle.
Adding constraints like "cpuidle needs to be disabled" is not good IMO.
There are ways to make it work with cpuidle enabled. Please explore
them. In particular refer H9.2.39 EDPRCR, External Debug Power/Reset
Control Register.

So, "nohlt" option is not an option. I prefer some sysfs option like
Suzuki suggested to enable this feature on demand if power saving in
normal usecase is the concern. Using "nohlt" just disables idle and
doesn't ensure the debug power domain is ON. Using the flag directly in
this driver to enable debug power domain also sounds misuse of that flag
for me.

-- 
Regards,
Sudeep

  parent reply	other threads:[~2017-03-21 15:39 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-03  6:00 [PATCH v3 0/5] coresight: enable debug module Leo Yan
2017-03-03  6:00 ` Leo Yan
2017-03-03  6:00 ` [PATCH v3 1/5] coresight: bindings for " Leo Yan
2017-03-03  6:00   ` Leo Yan
2017-03-09 13:27   ` [v3 " Suzuki K Poulose
2017-03-09 13:27     ` Suzuki K Poulose
2017-03-09 13:27     ` Suzuki K Poulose
2017-03-03  6:00 ` [PATCH v3 2/5] coresight: refactor with function of_coresight_get_cpu Leo Yan
2017-03-03  6:00   ` Leo Yan
2017-03-03  6:00 ` [PATCH v3 3/5] coresight: add support for debug module Leo Yan
2017-03-03  6:00   ` Leo Yan
2017-03-09 16:53   ` [v3 " Suzuki K Poulose
2017-03-09 16:53     ` Suzuki K Poulose
2017-03-09 16:53     ` Suzuki K Poulose
2017-03-09 17:59     ` Leo Yan
2017-03-09 17:59       ` Leo Yan
2017-03-09 17:59       ` Leo Yan
2017-03-10 14:29       ` Suzuki K Poulose
2017-03-10 14:29         ` Suzuki K Poulose
2017-03-13  8:12         ` Leo Yan
2017-03-13  8:12           ` Leo Yan
2017-03-13  8:12           ` Leo Yan
2017-03-13 16:56         ` Mathieu Poirier
2017-03-13 16:56           ` Mathieu Poirier
2017-03-13 16:56           ` Mathieu Poirier
2017-03-15 16:44           ` Suzuki K Poulose
2017-03-15 16:44             ` Suzuki K Poulose
2017-03-15 16:44             ` Suzuki K Poulose
2017-03-15 20:41             ` Mathieu Poirier
2017-03-15 20:41               ` Mathieu Poirier
2017-03-15 20:41               ` Mathieu Poirier
2017-03-15 20:41               ` Mathieu Poirier
2017-03-17 10:13               ` Leo Yan
2017-03-17 10:13                 ` Leo Yan
2017-03-17 10:13                 ` Leo Yan
2017-03-17 10:13                 ` Leo Yan
2017-03-17 15:50                 ` Mathieu Poirier
2017-03-17 15:50                   ` Mathieu Poirier
2017-03-17 15:50                   ` Mathieu Poirier
2017-03-17 15:50                   ` Mathieu Poirier
2017-03-17 16:28                   ` Leo Yan
2017-03-17 16:28                     ` Leo Yan
2017-03-17 16:28                     ` Leo Yan
2017-03-17 16:28                     ` Leo Yan
2017-03-17 16:47                     ` Suzuki K Poulose
2017-03-17 16:47                       ` Suzuki K Poulose
2017-03-17 16:47                       ` Suzuki K Poulose
2017-03-17 16:47                       ` Suzuki K Poulose
2017-03-20 12:30                       ` Leo Yan
2017-03-20 12:30                         ` Leo Yan
2017-03-20 12:30                         ` Leo Yan
2017-03-20 12:30                         ` Leo Yan
2017-03-20 16:40                       ` Mathieu Poirier
2017-03-20 16:40                         ` Mathieu Poirier
2017-03-20 16:40                         ` Mathieu Poirier
2017-03-20 16:40                         ` Mathieu Poirier
2017-03-21  2:59                         ` Leo Yan
2017-03-21  2:59                           ` Leo Yan
2017-03-21  2:59                           ` Leo Yan
2017-03-21  2:59                           ` Leo Yan
2017-03-21 10:16                           ` Suzuki K Poulose
2017-03-21 10:16                             ` Suzuki K Poulose
2017-03-21 10:16                             ` Suzuki K Poulose
2017-03-21 11:47                             ` Leo Yan
2017-03-21 11:47                               ` Leo Yan
2017-03-21 11:47                               ` Leo Yan
2017-03-21 11:47                               ` Leo Yan
2017-03-21 15:15                               ` Mathieu Poirier
2017-03-21 15:15                                 ` Mathieu Poirier
2017-03-21 15:15                                 ` Mathieu Poirier
2017-03-21 15:15                                 ` Mathieu Poirier
2017-03-13 16:29       ` Mathieu Poirier
2017-03-13 16:29         ` Mathieu Poirier
2017-03-13 16:29         ` Mathieu Poirier
2017-03-21 15:39   ` Sudeep Holla [this message]
2017-03-21 15:39     ` [PATCH v3 " Sudeep Holla
2017-03-22 12:54     ` Mike Leach
2017-03-22 14:07       ` Sudeep Holla
2017-03-22 14:07         ` Sudeep Holla
2017-03-22 14:07         ` Sudeep Holla
2017-03-22 15:45         ` Mike Leach
2017-03-22 15:45           ` Mike Leach
2017-03-22 15:45           ` Mike Leach
2017-03-22 16:17           ` Sudeep Holla
2017-03-22 16:17             ` Sudeep Holla
2017-03-22 17:09             ` Suzuki K Poulose
2017-03-22 17:09               ` Suzuki K Poulose
2017-03-22 17:09               ` Suzuki K Poulose
2017-03-22 17:25               ` Sudeep Holla
2017-03-22 17:25                 ` Sudeep Holla
2017-03-22 17:25                 ` Sudeep Holla
2017-03-23  5:43                 ` Leo Yan
2017-03-23  5:43                   ` Leo Yan
2017-03-23  5:43                   ` Leo Yan
2017-03-23 12:27                   ` Mike Leach
2017-03-23 12:27                     ` Mike Leach
2017-03-22 16:01         ` Leo Yan
2017-03-22 16:01           ` Leo Yan
2017-03-22 16:53           ` Sudeep Holla
2017-03-22 16:53             ` Sudeep Holla
2017-03-22 16:53             ` Sudeep Holla
2017-03-03  6:00 ` [PATCH v3 4/5] clk: hi6220: add debug APB clock Leo Yan
2017-03-03  6:00   ` Leo Yan
2017-03-03 23:58   ` Stephen Boyd
2017-03-03 23:58     ` Stephen Boyd
2017-03-03 23:58     ` Stephen Boyd
2017-03-17 15:22     ` Leo Yan
2017-03-17 15:22       ` Leo Yan
2017-03-17 15:22       ` Leo Yan
2017-03-03  6:00 ` [PATCH v3 5/5] arm64: dts: hi6220: register debug module Leo Yan
2017-03-03  6:00   ` Leo Yan

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=671a0b39-b635-6e0e-d3fa-967651f2e29c@arm.com \
    --to=sudeep.holla@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=guodong.xu@linaro.org \
    --cc=haojian.zhuang@linaro.org \
    --cc=john.stultz@linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=mike.leach@linaro.org \
    --cc=mturquette@baylibre.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@codeaurora.org \
    --cc=will.deacon@arm.com \
    --cc=xuwei5@hisilicon.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 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.