On Mon, Jul 22, 2024 at 05:17:42PM +0800, Kuan-Ying Lee wrote: Sorry for the bothering. I mistakenly sent to the wrong mailing list. Please ignore this patchset. > Commit 7988e5ae2be7 ("tick: Split nohz and highres features from > nohz_mode") and commit 7988e5ae2be7 ("tick: Split nohz and > highres features from nohz_mode") move 'tick_stopped' and 'nohz_mode' > to flags field which will break the gdb lx-mounts command: > > (gdb) lx-timerlist > Python Exception <class 'gdb.error'>: There is no member named nohz_mode. > Error occurred in Python: There is no member named nohz_mode. > > (gdb) lx-timerlist > Python Exception <class 'gdb.error'>: There is no member named tick_stopped. > Error occurred in Python: There is no member named tick_stopped. > > We move 'tick_stopped' and 'nohz_mode' to flags field instead. > > Fixes: a478ffb2ae23 ("tick: Move individual bit features to debuggable mask accesses") > Fixes: 7988e5ae2be7 ("tick: Split nohz and highres features from nohz_mode") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Kuan-Ying Lee <kuan-ying.lee@xxxxxxxxxxxxx> > --- > scripts/gdb/linux/timerlist.py | 31 ++++++++++++++++--------------- > 1 file changed, 16 insertions(+), 15 deletions(-) > > diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py > index 64bc87191003..98445671fe83 100644 > --- a/scripts/gdb/linux/timerlist.py > +++ b/scripts/gdb/linux/timerlist.py > @@ -87,21 +87,22 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases): > text += "\n" > > if constants.LX_CONFIG_TICK_ONESHOT: > - fmts = [(" .{} : {}", 'nohz_mode'), > - (" .{} : {} nsecs", 'last_tick'), > - (" .{} : {}", 'tick_stopped'), > - (" .{} : {}", 'idle_jiffies'), > - (" .{} : {}", 'idle_calls'), > - (" .{} : {}", 'idle_sleeps'), > - (" .{} : {} nsecs", 'idle_entrytime'), > - (" .{} : {} nsecs", 'idle_waketime'), > - (" .{} : {} nsecs", 'idle_exittime'), > - (" .{} : {} nsecs", 'idle_sleeptime'), > - (" .{}: {} nsecs", 'iowait_sleeptime'), > - (" .{} : {}", 'last_jiffies'), > - (" .{} : {}", 'next_timer'), > - (" .{} : {} nsecs", 'idle_expires')] > - text += "\n".join([s.format(f, ts[f]) for s, f in fmts]) > + TS_FLAG_STOPPED = 1 << 1 > + TS_FLAG_NOHZ = 1 << 4 > + text += f" .{'nohz':15s}: {int(bool(ts['flags'] & TS_FLAG_NOHZ))}\n" > + text += f" .{'last_tick':15s}: {ts['last_tick']}\n" > + text += f" .{'tick_stopped':15s}: {int(bool(ts['flags'] & TS_FLAG_STOPPED))}\n" > + text += f" .{'idle_jiffies':15s}: {ts['idle_jiffies']}\n" > + text += f" .{'idle_calls':15s}: {ts['idle_calls']}\n" > + text += f" .{'idle_sleeps':15s}: {ts['idle_sleeps']}\n" > + text += f" .{'idle_entrytime':15s}: {ts['idle_entrytime']} nsecs\n" > + text += f" .{'idle_waketime':15s}: {ts['idle_waketime']} nsecs\n" > + text += f" .{'idle_exittime':15s}: {ts['idle_exittime']} nsecs\n" > + text += f" .{'idle_sleeptime':15s}: {ts['idle_sleeptime']} nsecs\n" > + text += f" .{'iowait_sleeptime':15s}: {ts['iowait_sleeptime']} nsecs\n" > + text += f" .{'last_jiffies':15s}: {ts['last_jiffies']}\n" > + text += f" .{'next_timer':15s}: {ts['next_timer']}\n" > + text += f" .{'idle_expires':15s}: {ts['idle_expires']} nsecs\n" > text += "\njiffies: {}\n".format(jiffies) > > text += "\n" > -- > 2.34.1 >