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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <GV1PR08MB1093237396B35459656FF82CA86DEA@GV1PR08MB10932.eurprd08.prod.outlook.com>
Date: Wed, 26 Nov 2025 15:36:58 +0000
From: Al Grant <Al.Grant@....com>
To: James Clark <james.clark@...aro.org>, Leo Yan <Leo.Yan@....com>, Mike
 Leach <mike.leach@...aro.org>
CC: Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jonathan Corbet
	<corbet@....net>, Randy Dunlap <rdunlap@...radead.org>,
	"coresight@...ts.linaro.org" <coresight@...ts.linaro.org>,
	"linux-arm-kernel@...ts.infradead.org"
	<linux-arm-kernel@...ts.infradead.org>, "linux-kernel@...r.kernel.org"
	<linux-kernel@...r.kernel.org>, "linux-doc@...r.kernel.org"
	<linux-doc@...r.kernel.org>
Subject: RE: [PATCH v7 13/13] coresight: docs: Document etm4x timestamp
 interval option

> On 26/11/2025 2:44 pm, Leo Yan wrote:
> > On Wed, Nov 26, 2025 at 02:20:14PM +0000, Mike Leach wrote:
> >
> > [...]
> >
> >>>>      * - timestamp
> >>>> -     - Session local version of the system wide setting:
> :ref:`ETMv4_MODE_TIMESTAMP
> >>>> -       <coresight-timestamp>`
> >>>> +     - Controls generation and interval of timestamps.
> >>>> +
> >>>> +       0 = off, 1 = minimum interval .. 15 = maximum interval.
> >>>> +
> >>>> +       Values 1 - 14 use a counter that decrements every cycle to generate a
> >>>> +       timestamp on underflow. The reload value for the counter is 2 ^
> (interval
> >>>> +       - 1). If the value is 1 then the reload value is 1, if the value is 11
> >>>> +       then the reload value is 1024 etc.
> >>>> +
> >>>> +       Setting the maximum interval (15) will disable the counter generated
> >>>> +       timestamps, freeing the counter resource, leaving only ones emitted
> when
> >>>> +       a SYNC packet is generated. The sync interval is controlled with
> >>>> +       TRCSYNCPR.PERIOD which is every 4096 bytes of trace by default.
> >>>> +
> >>
> >> What is the default value?
> >
> >  From driver's pespective, the default value is 0 (disabled).  We do
> > set default values in perf:
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tre
> > e/tools/perf/arch/arm/util/cs-etm.c#n444
> >
> > IIUC, the default value would be the same with or without this series.
> >
> >> As far as I recall when this command line parameter was a bool then:
> >> perf -e cs_etm/timestamp/ <program>
> >> is sufficient to turn on timestamping.
> >
> > Hmm... with the latest perf, we must assign value to `timestamp`,
> > otherwise perf will report error:
> >
> >    # /mnt/build/perf record -e cs_etm/timestamp/ -C 0 -- taskset -c 0 ls
> >    event syntax error: 'cs_etm/timestamp/'
> >                         \___ Bad event or PMU
> >
> >    Unable to find PMU or event on a PMU of 'cs_etm'
> >
> >    event syntax error: 'cs_etm/timestamp/'
> >                         \___ no value assigned for term
> >
> >    event syntax error: 'cs_etm/timestamp/'
> >                         \___ no value assigned for term
> >    Run 'perf list' for a list of valid events
> >
> >
> 
> That's unfortunate and not what I expected. And I don't think it makes sense to
> remove that validation from Perf. The test uses "timestamp=1"
> so I didn't notice.
> 
> Can we accept that people are most likely using the defaults so timestamps are
> already on and they wouldn't be using it? The only real use case of that at the
> moment is to do timestamp=0 and that doesn't fail.
> 
> Although it's not the default for per-thread mode and I did find the OpenCSD
> HOWTO.md uses it as an example. timestamps make less sense in per-thread
> mode as you don't need to correlate between CPUs or watch for context
> switches.

Timestamps have a more specialised use in per-thread mode, they are
as you say less essential for switching in the right context to decode
the trace, and less relevant to BOLT/AutoFDO style usage where the
trace is collapsed into a heat-map profile.

But trace can also be used to get a detailed timeline of CPU activity -
a non-invasive timeline that can trace even through interrupt-disabled
kernel code. And for that, having a global constant-frequency timebase
becomes more useful, both in its own right, and to line up traces
from each CPU with other CPUs and system-level traces.
It's also the only way we have to indirectly observe CPU frequency
adjustments. (Intel's Processor Trace, which is generally similar to
ETM/ETE, has specific packets that trace CPU frequency changes.)

Al


> I suppose we need to choose what's worse, breaking some subset of Perf
> commands in a slightly annoying way or having two separate options to control
> timestamps that you have to use together. I think it's 50/50, maybe with the
> breakage being the slightly better option.
> 
> 
> >> This is worth mentioning so users can correctly assess what happens
> >> for any existing scripts they might have.
> >>
> >> Based on this then the same command must set the timestamp to 1 -
> >> which will have the same effect as before as we do not want to break
> >> existing behaviour.
> >>
> >> Mike
> >>
> >>
> >>>>      * - cc_threshold
> >>>>        - Cycle count threshold value. If nothing is provided here or the provided
> value is 0, then the
> >>>>          default value i.e 0x100 will be used. If provided value is
> >>>> less than minimum cycles threshold
> >>>>
> >>>> --
> >>>> 2.34.1
> >>>>
> >>
> >>
> >>
> >> --
> >> Mike Leach
> >> Principal Engineer, ARM Ltd.
> >> Manchester Design Centre. UK
> 
> _______________________________________________
> CoreSight mailing list -- coresight@...ts.linaro.org To unsubscribe send an email to
> coresight-leave@...ts.linaro.org

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ