Lines Matching refs:ii_dev
83 static void idle_inject_wakeup(struct idle_inject_device *ii_dev) in idle_inject_wakeup() argument
88 for_each_cpu_and(cpu, to_cpumask(ii_dev->cpumask), cpu_online_mask) { in idle_inject_wakeup()
108 struct idle_inject_device *ii_dev = in idle_inject_timer_fn() local
111 duration_ms = READ_ONCE(ii_dev->run_duration_ms); in idle_inject_timer_fn()
112 duration_ms += READ_ONCE(ii_dev->idle_duration_ms); in idle_inject_timer_fn()
114 idle_inject_wakeup(ii_dev); in idle_inject_timer_fn()
130 struct idle_inject_device *ii_dev; in idle_inject_fn() local
133 ii_dev = per_cpu(idle_inject_device, cpu); in idle_inject_fn()
141 play_idle(READ_ONCE(ii_dev->idle_duration_ms)); in idle_inject_fn()
149 void idle_inject_set_duration(struct idle_inject_device *ii_dev, in idle_inject_set_duration() argument
154 WRITE_ONCE(ii_dev->run_duration_ms, run_duration_ms); in idle_inject_set_duration()
155 WRITE_ONCE(ii_dev->idle_duration_ms, idle_duration_ms); in idle_inject_set_duration()
164 void idle_inject_get_duration(struct idle_inject_device *ii_dev, in idle_inject_get_duration() argument
168 *run_duration_ms = READ_ONCE(ii_dev->run_duration_ms); in idle_inject_get_duration()
169 *idle_duration_ms = READ_ONCE(ii_dev->idle_duration_ms); in idle_inject_get_duration()
182 int idle_inject_start(struct idle_inject_device *ii_dev) in idle_inject_start() argument
184 unsigned int idle_duration_ms = READ_ONCE(ii_dev->idle_duration_ms); in idle_inject_start()
185 unsigned int run_duration_ms = READ_ONCE(ii_dev->run_duration_ms); in idle_inject_start()
191 cpumask_pr_args(to_cpumask(ii_dev->cpumask))); in idle_inject_start()
193 idle_inject_wakeup(ii_dev); in idle_inject_start()
195 hrtimer_start(&ii_dev->timer, in idle_inject_start()
213 void idle_inject_stop(struct idle_inject_device *ii_dev) in idle_inject_stop() argument
219 cpumask_pr_args(to_cpumask(ii_dev->cpumask))); in idle_inject_stop()
221 hrtimer_cancel(&ii_dev->timer); in idle_inject_stop()
238 for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) { in idle_inject_stop()
289 struct idle_inject_device *ii_dev; in idle_inject_register() local
292 ii_dev = kzalloc(sizeof(*ii_dev) + cpumask_size(), GFP_KERNEL); in idle_inject_register()
293 if (!ii_dev) in idle_inject_register()
296 cpumask_copy(to_cpumask(ii_dev->cpumask), cpumask); in idle_inject_register()
297 hrtimer_init(&ii_dev->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in idle_inject_register()
298 ii_dev->timer.function = idle_inject_timer_fn; in idle_inject_register()
300 for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) { in idle_inject_register()
307 per_cpu(idle_inject_device, cpu) = ii_dev; in idle_inject_register()
310 return ii_dev; in idle_inject_register()
313 for_each_cpu(cpu_rb, to_cpumask(ii_dev->cpumask)) { in idle_inject_register()
319 kfree(ii_dev); in idle_inject_register()
332 void idle_inject_unregister(struct idle_inject_device *ii_dev) in idle_inject_unregister() argument
336 idle_inject_stop(ii_dev); in idle_inject_unregister()
338 for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) in idle_inject_unregister()
341 kfree(ii_dev); in idle_inject_unregister()