[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210108040055.GA11529@codeaurora.org>
Date: Fri, 8 Jan 2021 12:00:55 +0800
From: Tingwei Zhang <tingweiz@...eaurora.org>
To: Mark Rutland <mark.rutland@....com>
Cc: tingwei@...eaurora.org, Will Deacon <will@...nel.org>,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: Set DBGCLAIM when self-host debug is enabled
On Wed, Jan 06, 2021 at 08:23:56PM +0800, Mark Rutland wrote:
> On Wed, Jan 06, 2021 at 06:29:53PM +0800, tingwei@...eaurora.org wrote:
> > Hi Will and Mark,
>
> Hi Tingwei,
>
> > In recent implementation of save/restore ARM debug registers in
> > EL2/EL3, we found it's necessary to know whether self-host debug is
> > enabled so EL2/EL3 can avoid saving/restoring debug registers but no
> > one is using debug.
>
> In what situation are you considering? I assume you mean idle sequences
> using CPU_SUSPEND?
>
> Generally our expectation for CPU_SUSPEND is:
>
> * Where StateType==0, the debug state is preserved with all other
> PE state.
>
> * Where StateType==1 and the PE returns "warm" without having entered a
> powerdown state, the debug state is preserved along with all other PE
> state.
>
> * Where StateType==1, and the PE returns "cold" after having entered a
> powerdown state (i.e. we return via the entry point address), the
> debug state is not preserved.
>
> ... and I'm missing where you could avoid saving the state. What
> situation(s) did you have in mind?
>
In StateType==1 case, EL2/EL3 can save debug registers before PE suspend
and restore them after PE resume. If EL2/EL3 doesn't know whether external
debugger or self-host debugger is using debug registers, it can save and
restore bindly everytime. However, if EL2/EL3 can get the information from
DBGCLAIM, it can only save/restore debug registers when debug is ongoing
which means DGBCLAIM[0] is set by external debugger or DGBCLAIM[1] is set
by self-host debugger.
> > In ARM PSCI, it has one option to set DBGCLAIM[1] to 1 to indicate
> > that debug is in use by a self-host debugger. Do you think it's
> > resonable to add this to Kernel?
> >
> > For example, can we set DBGCLAIM[1] to 1 in enable_debug_monitors()
> > and clear it in disable_debug_monitors().
>
> I was under the impression that this was solely for the benefit of an
> external debugger, and should have no functional impact on the PSCI
> implementation from the kernel's PoV, so as above I think we need a
> better description of the case you're trying to address.
If self-host debugger like gdb/kgdb is used for debug, Kernel can set
DBGCLAIM[1] to inform EL2/EL3.
Thanks,
Tingwei
>
> Thanks,
> Mark.
Powered by blists - more mailing lists