Lines Matching defs:hyp_clock
42 } hyp_clock;
47 struct hyp_trace_clock *hyp_clock;
52 hyp_clock = container_of(dwork, struct hyp_trace_clock, work);
57 delta_boot = boot - hyp_clock->boot;
58 delta_cycles = snap.cycles - hyp_clock->cycles;
61 if (hyp_clock->mult) {
64 if (WARN_ON_ONCE(cur >= hyp_clock->cyc_overflow64)) {
65 __uint128_t tmp = (__uint128_t)cur * hyp_clock->mult;
67 cur = tmp >> hyp_clock->shift;
69 cur *= hyp_clock->mult;
70 cur >>= hyp_clock->shift;
72 cur += hyp_clock->boot;
77 if (delta_cycles >= (hyp_clock->cyc_overflow64 >> 1))
91 clocks_calc_mult_shift(&hyp_clock->mult, &hyp_clock->shift,
95 hyp_clock->cyc_overflow64 = (U64_MAX / hyp_clock->mult) >> 1;
98 hyp_clock->cycles = snap.cycles;
99 hyp_clock->boot = boot;
100 kvm_call_hyp_nvhe(__tracing_update_clock, hyp_clock->mult,
101 hyp_clock->shift, hyp_clock->boot, hyp_clock->cycles);
102 complete(&hyp_clock->ready);
105 schedule_delayed_work(&hyp_clock->work,
109 static void hyp_trace_clock_enable(struct hyp_trace_clock *hyp_clock, bool enable)
113 if (hyp_clock->running == enable)
117 cancel_delayed_work_sync(&hyp_clock->work);
118 hyp_clock->running = false;
123 hyp_clock->boot = ktime_to_ns(snap.systime);
124 hyp_clock->cycles = snap.cycles;
125 hyp_clock->mult = 0;
127 init_completion(&hyp_clock->ready);
128 INIT_DELAYED_WORK(&hyp_clock->work, __hyp_clock_work);
129 schedule_delayed_work(&hyp_clock->work, msecs_to_jiffies(CLOCK_INIT_MS));
130 wait_for_completion(&hyp_clock->ready);
131 hyp_clock->running = true;
307 hyp_trace_clock_enable(&hyp_clock, enable);