Thread (39 messages) 39 messages, 7 authors, 2017-04-06

[PATCH v5 6/9] coresight: add support for CPU debug module

From: Leo Yan <hidden>
Date: 2017-03-30 01:18:57
Also in: linux-arm-msm, linux-clk, linux-devicetree, lkml

On Wed, Mar 29, 2017 at 04:17:19PM +0100, Mike Leach wrote:

[...]
quoted
quoted
quoted
+out_powered_up:
+    debug_os_unlock(drvdata);
Question: Do we need a matching debug_os_lock() once we are done ?
I have checked ARM ARMv8, but there have no detailed description for
this. I refered coresight-etmv4 code and Mike's pseudo code, ther have
no debug_os_lock() related operations.

Mike, Mathieu, could you also help confirm this?
Debug OS lock / unlock allows the power management code running on the
core to lock out the external debugger while the debug registers are
saved/restored during a core power event.

e.g. A sequence such as this might occur in a correctly programmed system....

debug_os_lock()
save_debug_regs() // visible from core power domain - incl breakpoints etc
save_etm_regs()
... // other stuff prior to core power down,
<power_down_core>

Followed by...

<power_up_core>
restore_etm_regs()
restore_debug_regs() // visible from core power domain - incl breakpoints etc
debug_os_unlock()

The value is 1 (locked) if cold resetting into AArch64 - it is
expected that some system software will set this to 0 as part of the
boot process.
The lock prevents write access to the external debug registers so we
need to clear it to set up the external debug registers we are using.
This description is conflict with upper restoring flows. During
restore_debug_regs(), the os lock is locked so how it can write
external debug register to restore context?
This suggests that it should be restored as we found it when done.
Thanks,
Leo Yan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help