ring-buffer: Have 32 bit time stamps use all 64 bits
authorSteven Rostedt (Google) <rostedt@goodmis.org>
Wed, 27 Apr 2022 21:08:12 +0000 (17:08 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Wed, 27 Apr 2022 21:19:30 +0000 (17:19 -0400)
commitf03f2abce4f3944b9576bc4ad28b75890e907d7c
treedf1ca03a469862d425a0aa49b49db5c9a1711fe9
parent6695da58f9445f386516ed53a3e870f534d2645d
ring-buffer: Have 32 bit time stamps use all 64 bits

When the new logic was made to handle deltas of events from interrupts
that interrupted other events, it required 64 bit local atomics.
Unfortunately, 64 bit local atomics are expensive on 32 bit architectures.
Thus, commit 10464b4aa605e ("ring-buffer: Add rb_time_t 64 bit operations
for speeding up 32 bit") created a type of seq lock timer for 32 bits.
It used two 32 bit local atomics, but required 2 bits from them each for
synchronization, making it only 60 bits.

Add a new "msb" field to hold the extra 4 bits that are cut off.

Link: https://lore.kernel.org/all/20220426175338.3807ca4f@gandalf.local.home/
Link: https://lkml.kernel.org/r/20220427170812.53cc7139@gandalf.local.home
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/ring_buffer.c