Lines Matching refs:policy_dbs

48 	struct policy_dbs_info *policy_dbs;  in sampling_rate_store()  local
62 list_for_each_entry(policy_dbs, &attr_set->policy_list, list) { in sampling_rate_store()
63 mutex_lock(&policy_dbs->update_mutex); in sampling_rate_store()
77 gov_update_sample_delay(policy_dbs, 0); in sampling_rate_store()
78 mutex_unlock(&policy_dbs->update_mutex); in sampling_rate_store()
97 struct policy_dbs_info *policy_dbs; in gov_update_cpu_data() local
99 list_for_each_entry(policy_dbs, &dbs_data->attr_set.policy_list, list) { in gov_update_cpu_data()
102 for_each_cpu(j, policy_dbs->policy->cpus) { in gov_update_cpu_data()
116 struct policy_dbs_info *policy_dbs = policy->governor_data; in dbs_update() local
117 struct dbs_data *dbs_data = policy_dbs->dbs_data; in dbs_update()
128 sampling_rate = dbs_data->sampling_rate * policy_dbs->rate_mult; in dbs_update()
226 policy_dbs->idle_periods = idle_periods; in dbs_update()
234 struct policy_dbs_info *policy_dbs; in dbs_work_handler() local
238 policy_dbs = container_of(work, struct policy_dbs_info, work); in dbs_work_handler()
239 policy = policy_dbs->policy; in dbs_work_handler()
246 mutex_lock(&policy_dbs->update_mutex); in dbs_work_handler()
247 gov_update_sample_delay(policy_dbs, gov->gov_dbs_update(policy)); in dbs_work_handler()
248 mutex_unlock(&policy_dbs->update_mutex); in dbs_work_handler()
251 atomic_set(&policy_dbs->work_count, 0); in dbs_work_handler()
258 policy_dbs->work_in_progress = false; in dbs_work_handler()
263 struct policy_dbs_info *policy_dbs; in dbs_irq_work() local
265 policy_dbs = container_of(irq_work, struct policy_dbs_info, irq_work); in dbs_irq_work()
266 schedule_work_on(smp_processor_id(), &policy_dbs->work); in dbs_irq_work()
273 struct policy_dbs_info *policy_dbs = cdbs->policy_dbs; in dbs_update_util_handler() local
276 if (!cpufreq_this_cpu_can_update(policy_dbs->policy)) in dbs_update_util_handler()
285 if (policy_dbs->work_in_progress) in dbs_update_util_handler()
293 lst = READ_ONCE(policy_dbs->last_sample_time); in dbs_update_util_handler()
295 if ((s64)delta_ns < policy_dbs->sample_delay_ns) in dbs_update_util_handler()
303 if (policy_dbs->is_shared) { in dbs_update_util_handler()
304 if (!atomic_add_unless(&policy_dbs->work_count, 1, 1)) in dbs_update_util_handler()
311 if (unlikely(lst != READ_ONCE(policy_dbs->last_sample_time))) { in dbs_update_util_handler()
312 atomic_set(&policy_dbs->work_count, 0); in dbs_update_util_handler()
317 policy_dbs->last_sample_time = time; in dbs_update_util_handler()
318 policy_dbs->work_in_progress = true; in dbs_update_util_handler()
319 irq_work_queue(&policy_dbs->irq_work); in dbs_update_util_handler()
322 static void gov_set_update_util(struct policy_dbs_info *policy_dbs, in gov_set_update_util() argument
325 struct cpufreq_policy *policy = policy_dbs->policy; in gov_set_update_util()
328 gov_update_sample_delay(policy_dbs, delay_us); in gov_set_update_util()
329 policy_dbs->last_sample_time = 0; in gov_set_update_util()
352 struct policy_dbs_info *policy_dbs; in alloc_policy_dbs_info() local
356 policy_dbs = gov->alloc(); in alloc_policy_dbs_info()
357 if (!policy_dbs) in alloc_policy_dbs_info()
360 policy_dbs->policy = policy; in alloc_policy_dbs_info()
361 mutex_init(&policy_dbs->update_mutex); in alloc_policy_dbs_info()
362 atomic_set(&policy_dbs->work_count, 0); in alloc_policy_dbs_info()
363 init_irq_work(&policy_dbs->irq_work, dbs_irq_work); in alloc_policy_dbs_info()
364 INIT_WORK(&policy_dbs->work, dbs_work_handler); in alloc_policy_dbs_info()
370 j_cdbs->policy_dbs = policy_dbs; in alloc_policy_dbs_info()
372 return policy_dbs; in alloc_policy_dbs_info()
375 static void free_policy_dbs_info(struct policy_dbs_info *policy_dbs, in free_policy_dbs_info() argument
380 mutex_destroy(&policy_dbs->update_mutex); in free_policy_dbs_info()
382 for_each_cpu(j, policy_dbs->policy->related_cpus) { in free_policy_dbs_info()
385 j_cdbs->policy_dbs = NULL; in free_policy_dbs_info()
388 gov->free(policy_dbs); in free_policy_dbs_info()
404 struct policy_dbs_info *policy_dbs; in cpufreq_dbs_governor_init() local
411 policy_dbs = alloc_policy_dbs_info(policy, gov); in cpufreq_dbs_governor_init()
412 if (!policy_dbs) in cpufreq_dbs_governor_init()
424 policy_dbs->dbs_data = dbs_data; in cpufreq_dbs_governor_init()
425 policy->governor_data = policy_dbs; in cpufreq_dbs_governor_init()
427 gov_attr_set_get(&dbs_data->attr_set, &policy_dbs->list); in cpufreq_dbs_governor_init()
438 gov_attr_set_init(&dbs_data->attr_set, &policy_dbs->list); in cpufreq_dbs_governor_init()
456 policy_dbs->dbs_data = dbs_data; in cpufreq_dbs_governor_init()
457 policy->governor_data = policy_dbs; in cpufreq_dbs_governor_init()
482 free_policy_dbs_info(policy_dbs, gov); in cpufreq_dbs_governor_init()
493 struct policy_dbs_info *policy_dbs = policy->governor_data; in cpufreq_dbs_governor_exit() local
494 struct dbs_data *dbs_data = policy_dbs->dbs_data; in cpufreq_dbs_governor_exit()
500 count = gov_attr_set_put(&dbs_data->attr_set, &policy_dbs->list); in cpufreq_dbs_governor_exit()
507 free_policy_dbs_info(policy_dbs, gov); in cpufreq_dbs_governor_exit()
516 struct policy_dbs_info *policy_dbs = policy->governor_data; in cpufreq_dbs_governor_start() local
517 struct dbs_data *dbs_data = policy_dbs->dbs_data; in cpufreq_dbs_governor_start()
524 policy_dbs->is_shared = policy_is_shared(policy); in cpufreq_dbs_governor_start()
525 policy_dbs->rate_mult = 1; in cpufreq_dbs_governor_start()
546 gov_set_update_util(policy_dbs, sampling_rate); in cpufreq_dbs_governor_start()
553 struct policy_dbs_info *policy_dbs = policy->governor_data; in cpufreq_dbs_governor_stop() local
555 gov_clear_update_util(policy_dbs->policy); in cpufreq_dbs_governor_stop()
556 irq_work_sync(&policy_dbs->irq_work); in cpufreq_dbs_governor_stop()
557 cancel_work_sync(&policy_dbs->work); in cpufreq_dbs_governor_stop()
558 atomic_set(&policy_dbs->work_count, 0); in cpufreq_dbs_governor_stop()
559 policy_dbs->work_in_progress = false; in cpufreq_dbs_governor_stop()
565 struct policy_dbs_info *policy_dbs; in cpufreq_dbs_governor_limits() local
569 policy_dbs = policy->governor_data; in cpufreq_dbs_governor_limits()
570 if (!policy_dbs) in cpufreq_dbs_governor_limits()
573 mutex_lock(&policy_dbs->update_mutex); in cpufreq_dbs_governor_limits()
575 gov_update_sample_delay(policy_dbs, 0); in cpufreq_dbs_governor_limits()
576 mutex_unlock(&policy_dbs->update_mutex); in cpufreq_dbs_governor_limits()