Lines Matching refs:irqs
106 static void irqs_update(struct irqt_stat *irqs, u64 ts) in irqs_update() argument
108 u64 old_ts = irqs->last_ts; in irqs_update()
117 irqs->last_ts = ts; in irqs_update()
138 memset(irqs, 0, sizeof(*irqs)); in irqs_update()
139 irqs->last_ts = ts; in irqs_update()
147 diff = interval - irqs->avg; in irqs_update()
152 irqs->nr_samples++; in irqs_update()
161 if (likely(irqs->nr_samples > 1)) in irqs_update()
162 variance = irqs->variance >> IRQ_TIMINGS_SHIFT; in irqs_update()
170 if ((irqs->nr_samples >= 30) && ((diff * diff) > (9 * variance))) { in irqs_update()
175 if (irqs->anomalies++ >= 3) { in irqs_update()
176 memset(irqs, 0, sizeof(*irqs)); in irqs_update()
177 irqs->last_ts = ts; in irqs_update()
185 irqs->anomalies = 0; in irqs_update()
192 irqs->valid = 1; in irqs_update()
203 irqs->avg = irqs->avg + (diff >> IRQ_TIMINGS_SHIFT); in irqs_update()
213 irqs->variance = irqs->variance + (diff * (interval - irqs->avg)); in irqs_update()
218 irqs->next_evt = ts + irqs->avg; in irqs_update()
250 struct irqt_stat *irqs; in irq_timings_next_event() local
284 irqs = this_cpu_ptr(s); in irq_timings_next_event()
285 irqs_update(irqs, ts); in irq_timings_next_event()
295 irqs = this_cpu_ptr(s); in irq_timings_next_event()
297 if (!irqs->valid) in irq_timings_next_event()
300 if (irqs->next_evt <= now) { in irq_timings_next_event()
309 irqs->valid = 0; in irq_timings_next_event()
313 if (irqs->next_evt < next_evt) { in irq_timings_next_event()
315 next_evt = irqs->next_evt; in irq_timings_next_event()