Lines Matching refs:ii_dev

86 static void idle_inject_wakeup(struct idle_inject_device *ii_dev)  in idle_inject_wakeup()  argument
91 for_each_cpu_and(cpu, to_cpumask(ii_dev->cpumask), cpu_online_mask) { in idle_inject_wakeup()
111 struct idle_inject_device *ii_dev = in idle_inject_timer_fn() local
114 duration_us = READ_ONCE(ii_dev->run_duration_us); in idle_inject_timer_fn()
115 duration_us += READ_ONCE(ii_dev->idle_duration_us); in idle_inject_timer_fn()
117 idle_inject_wakeup(ii_dev); in idle_inject_timer_fn()
133 struct idle_inject_device *ii_dev; in idle_inject_fn() local
136 ii_dev = per_cpu(idle_inject_device, cpu); in idle_inject_fn()
144 play_idle_precise(READ_ONCE(ii_dev->idle_duration_us) * NSEC_PER_USEC, in idle_inject_fn()
145 READ_ONCE(ii_dev->latency_us) * NSEC_PER_USEC); in idle_inject_fn()
153 void idle_inject_set_duration(struct idle_inject_device *ii_dev, in idle_inject_set_duration() argument
158 WRITE_ONCE(ii_dev->run_duration_us, run_duration_us); in idle_inject_set_duration()
159 WRITE_ONCE(ii_dev->idle_duration_us, idle_duration_us); in idle_inject_set_duration()
168 void idle_inject_get_duration(struct idle_inject_device *ii_dev, in idle_inject_get_duration() argument
172 *run_duration_us = READ_ONCE(ii_dev->run_duration_us); in idle_inject_get_duration()
173 *idle_duration_us = READ_ONCE(ii_dev->idle_duration_us); in idle_inject_get_duration()
180 void idle_inject_set_latency(struct idle_inject_device *ii_dev, in idle_inject_set_latency() argument
183 WRITE_ONCE(ii_dev->latency_us, latency_us); in idle_inject_set_latency()
196 int idle_inject_start(struct idle_inject_device *ii_dev) in idle_inject_start() argument
198 unsigned int idle_duration_us = READ_ONCE(ii_dev->idle_duration_us); in idle_inject_start()
199 unsigned int run_duration_us = READ_ONCE(ii_dev->run_duration_us); in idle_inject_start()
205 cpumask_pr_args(to_cpumask(ii_dev->cpumask))); in idle_inject_start()
207 idle_inject_wakeup(ii_dev); in idle_inject_start()
209 hrtimer_start(&ii_dev->timer, in idle_inject_start()
228 void idle_inject_stop(struct idle_inject_device *ii_dev) in idle_inject_stop() argument
234 cpumask_pr_args(to_cpumask(ii_dev->cpumask))); in idle_inject_stop()
236 hrtimer_cancel(&ii_dev->timer); in idle_inject_stop()
253 for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) { in idle_inject_stop()
302 struct idle_inject_device *ii_dev; in idle_inject_register() local
305 ii_dev = kzalloc(sizeof(*ii_dev) + cpumask_size(), GFP_KERNEL); in idle_inject_register()
306 if (!ii_dev) in idle_inject_register()
309 cpumask_copy(to_cpumask(ii_dev->cpumask), cpumask); in idle_inject_register()
310 hrtimer_init(&ii_dev->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in idle_inject_register()
311 ii_dev->timer.function = idle_inject_timer_fn; in idle_inject_register()
312 ii_dev->latency_us = UINT_MAX; in idle_inject_register()
314 for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) { in idle_inject_register()
321 per_cpu(idle_inject_device, cpu) = ii_dev; in idle_inject_register()
324 return ii_dev; in idle_inject_register()
327 for_each_cpu(cpu_rb, to_cpumask(ii_dev->cpumask)) { in idle_inject_register()
333 kfree(ii_dev); in idle_inject_register()
346 void idle_inject_unregister(struct idle_inject_device *ii_dev) in idle_inject_unregister() argument
350 idle_inject_stop(ii_dev); in idle_inject_unregister()
352 for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) in idle_inject_unregister()
355 kfree(ii_dev); in idle_inject_unregister()