lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ