Lines Matching +full:cpu +full:- +full:offset
1 // SPDX-License-Identifier: GPL-2.0
18 #include "tick-internal.h"
21 int cpu; member
28 * to the console (on SysRq-Q):
62 print_name_offset(m, timer->function); in print_timer()
63 SEQ_printf(m, ", S:%02x", timer->state); in print_timer()
65 SEQ_printf(m, " # expires at %Lu-%Lu nsecs [in %Ld to %Ld nsecs]\n", in print_timer()
68 (long long)(ktime_to_ns(hrtimer_get_softexpires(timer)) - now), in print_timer()
69 (long long)(ktime_to_ns(hrtimer_get_expires(timer)) - now)); in print_timer()
86 raw_spin_lock_irqsave(&base->cpu_base->lock, flags); in print_active_timers()
88 curr = timerqueue_getnext(&base->active); in print_active_timers()
102 raw_spin_unlock_irqrestore(&base->cpu_base->lock, flags); in print_active_timers()
108 raw_spin_unlock_irqrestore(&base->cpu_base->lock, flags); in print_active_timers()
115 SEQ_printf(m, " .index: %d\n", base->index); in print_base()
120 print_name_offset(m, base->get_time); in print_base()
123 SEQ_printf(m, " .offset: %Lu nsecs\n", in print_base()
124 (unsigned long long) ktime_to_ns(base->offset)); in print_base()
127 print_active_timers(m, base, now + ktime_to_ns(base->offset)); in print_base()
130 static void print_cpu(struct seq_file *m, int cpu, u64 now) in print_cpu() argument
132 struct hrtimer_cpu_base *cpu_base = &per_cpu(hrtimer_bases, cpu); in print_cpu()
135 SEQ_printf(m, "cpu: %d\n", cpu); in print_cpu()
138 print_base(m, cpu_base->clock_base + i, now); in print_cpu()
141 SEQ_printf(m, " .%-15s: %Lu\n", #x, \ in print_cpu()
142 (unsigned long long)(cpu_base->x)) in print_cpu()
144 SEQ_printf(m, " .%-15s: %Lu nsecs\n", #x, \ in print_cpu()
145 (unsigned long long)(ktime_to_ns(cpu_base->x))) in print_cpu()
160 SEQ_printf(m, " .%-15s: %Lu\n", #x, \ in print_cpu()
161 (unsigned long long)(ts->x)) in print_cpu()
163 SEQ_printf(m, " .%-15s: %Lu nsecs\n", #x, \ in print_cpu()
164 (unsigned long long)(ktime_to_ns(ts->x))) in print_cpu()
166 struct tick_sched *ts = tick_get_tick_sched(cpu); in print_cpu()
193 print_tickdevice(struct seq_file *m, struct tick_device *td, int cpu) in print_tickdevice() argument
195 struct clock_event_device *dev = td->evtdev; in print_tickdevice()
199 SEQ_printf(m, "Tick Device: mode: %d\n", td->mode); in print_tickdevice()
200 if (cpu < 0) in print_tickdevice()
203 SEQ_printf(m, "Per CPU device: %d\n", cpu); in print_tickdevice()
210 SEQ_printf(m, "%s\n", dev->name); in print_tickdevice()
212 (unsigned long long) dev->max_delta_ns); in print_tickdevice()
214 (unsigned long long) dev->min_delta_ns); in print_tickdevice()
215 SEQ_printf(m, " mult: %u\n", dev->mult); in print_tickdevice()
216 SEQ_printf(m, " shift: %u\n", dev->shift); in print_tickdevice()
219 (unsigned long long) ktime_to_ns(dev->next_event)); in print_tickdevice()
222 print_name_offset(m, dev->set_next_event); in print_tickdevice()
225 if (dev->set_state_shutdown) { in print_tickdevice()
227 print_name_offset(m, dev->set_state_shutdown); in print_tickdevice()
231 if (dev->set_state_periodic) { in print_tickdevice()
233 print_name_offset(m, dev->set_state_periodic); in print_tickdevice()
237 if (dev->set_state_oneshot) { in print_tickdevice()
239 print_name_offset(m, dev->set_state_oneshot); in print_tickdevice()
243 if (dev->set_state_oneshot_stopped) { in print_tickdevice()
245 print_name_offset(m, dev->set_state_oneshot_stopped); in print_tickdevice()
249 if (dev->tick_resume) { in print_tickdevice()
251 print_name_offset(m, dev->tick_resume); in print_tickdevice()
256 print_name_offset(m, dev->event_handler); in print_tickdevice()
258 SEQ_printf(m, " retries: %lu\n", dev->retries); in print_tickdevice()
265 print_tickdevice(m, tick_get_broadcast_device(), -1); in timer_list_show_tickdevices_header()
288 int cpu; in sysrq_timer_list_show() local
292 for_each_online_cpu(cpu) in sysrq_timer_list_show()
293 print_cpu(NULL, cpu, now); in sysrq_timer_list_show()
297 for_each_online_cpu(cpu) in sysrq_timer_list_show()
298 print_tickdevice(NULL, tick_get_device(cpu), cpu); in sysrq_timer_list_show()
308 if (iter->cpu == -1 && !iter->second_pass) in timer_list_show()
309 timer_list_header(m, iter->now); in timer_list_show()
310 else if (!iter->second_pass) in timer_list_show()
311 print_cpu(m, iter->cpu, iter->now); in timer_list_show()
313 else if (iter->cpu == -1 && iter->second_pass) in timer_list_show()
316 print_tickdevice(m, tick_get_device(iter->cpu), iter->cpu); in timer_list_show()
321 static void *move_iter(struct timer_list_iter *iter, loff_t offset) in move_iter() argument
323 for (; offset; offset--) { in move_iter()
324 iter->cpu = cpumask_next(iter->cpu, cpu_online_mask); in move_iter()
325 if (iter->cpu >= nr_cpu_ids) { in move_iter()
327 if (!iter->second_pass) { in move_iter()
328 iter->cpu = -1; in move_iter()
329 iter->second_pass = true; in move_iter()
340 static void *timer_list_start(struct seq_file *file, loff_t *offset) in timer_list_start() argument
342 struct timer_list_iter *iter = file->private; in timer_list_start()
344 if (!*offset) in timer_list_start()
345 iter->now = ktime_to_ns(ktime_get()); in timer_list_start()
346 iter->cpu = -1; in timer_list_start()
347 iter->second_pass = false; in timer_list_start()
348 return move_iter(iter, *offset); in timer_list_start()
351 static void *timer_list_next(struct seq_file *file, void *v, loff_t *offset) in timer_list_next() argument
353 struct timer_list_iter *iter = file->private; in timer_list_next()
354 ++*offset; in timer_list_next()
376 return -ENOMEM; in init_timer_list_procfs()