Lines Matching refs:w_data
367 struct powerclamp_worker_data *w_data; in clamp_balancing_func() local
373 w_data = container_of(work, struct powerclamp_worker_data, in clamp_balancing_func()
381 w_data->target_ratio = READ_ONCE(set_target_ratio); in clamp_balancing_func()
382 w_data->guard = 1 + w_data->target_ratio / 20; in clamp_balancing_func()
383 w_data->window_size_now = window_size; in clamp_balancing_func()
384 w_data->duration_jiffies = msecs_to_jiffies(duration); in clamp_balancing_func()
385 w_data->count++; in clamp_balancing_func()
392 compensated_ratio = w_data->target_ratio + in clamp_balancing_func()
393 get_compensation(w_data->target_ratio); in clamp_balancing_func()
396 interval = w_data->duration_jiffies * 100 / compensated_ratio; in clamp_balancing_func()
404 if (clamping && w_data->clamping && cpu_online(w_data->cpu)) in clamp_balancing_func()
405 kthread_queue_delayed_work(w_data->worker, in clamp_balancing_func()
406 &w_data->idle_injection_work, in clamp_balancing_func()
412 struct powerclamp_worker_data *w_data; in clamp_idle_injection_func() local
414 w_data = container_of(work, struct powerclamp_worker_data, in clamp_idle_injection_func()
421 if (w_data->cpu == control_cpu && in clamp_idle_injection_func()
422 !(w_data->count % w_data->window_size_now)) { in clamp_idle_injection_func()
424 powerclamp_adjust_controls(w_data->target_ratio, in clamp_idle_injection_func()
425 w_data->guard, in clamp_idle_injection_func()
426 w_data->window_size_now); in clamp_idle_injection_func()
433 play_idle(jiffies_to_usecs(w_data->duration_jiffies)); in clamp_idle_injection_func()
436 if (clamping && w_data->clamping && cpu_online(w_data->cpu)) in clamp_idle_injection_func()
437 kthread_queue_work(w_data->worker, &w_data->balancing_work); in clamp_idle_injection_func()
479 struct powerclamp_worker_data *w_data = per_cpu_ptr(worker_data, cpu); in start_power_clamp_worker() local
486 w_data->worker = worker; in start_power_clamp_worker()
487 w_data->count = 0; in start_power_clamp_worker()
488 w_data->cpu = cpu; in start_power_clamp_worker()
489 w_data->clamping = true; in start_power_clamp_worker()
492 kthread_init_work(&w_data->balancing_work, clamp_balancing_func); in start_power_clamp_worker()
493 kthread_init_delayed_work(&w_data->idle_injection_work, in start_power_clamp_worker()
495 kthread_queue_work(w_data->worker, &w_data->balancing_work); in start_power_clamp_worker()
500 struct powerclamp_worker_data *w_data = per_cpu_ptr(worker_data, cpu); in stop_power_clamp_worker() local
502 if (!w_data->worker) in stop_power_clamp_worker()
505 w_data->clamping = false; in stop_power_clamp_worker()
513 kthread_cancel_work_sync(&w_data->balancing_work); in stop_power_clamp_worker()
514 kthread_cancel_delayed_work_sync(&w_data->idle_injection_work); in stop_power_clamp_worker()
522 clear_bit(w_data->cpu, cpu_clamping_mask); in stop_power_clamp_worker()
523 kthread_destroy_worker(w_data->worker); in stop_power_clamp_worker()
525 w_data->worker = NULL; in stop_power_clamp_worker()