forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 61598093bbdd283a7edc367d900f223070ead8d2
kernel/drivers/gpu/arm/mali400/mali/common/mali_group.c
....@@ -65,23 +65,27 @@
6565
6666 group = _mali_osk_calloc(1, sizeof(struct mali_group));
6767 if (NULL != group) {
68
- _mali_osk_timer_init(&group->timeout_timer, mali_group_timeout);
68
+ group->timeout_timer = _mali_osk_timer_init(mali_group_timeout);
69
+ if (NULL != group->timeout_timer) {
70
+ _mali_osk_timer_setcallback(group->timeout_timer, mali_group_timeout, (void *)group);
6971
70
- group->l2_cache_core[0] = core;
71
- _mali_osk_list_init(&group->group_list);
72
- _mali_osk_list_init(&group->executor_list);
73
- _mali_osk_list_init(&group->pm_domain_list);
74
- group->bcast_core = bcast;
75
- group->dlbu_core = dlbu;
72
+ group->l2_cache_core[0] = core;
73
+ _mali_osk_list_init(&group->group_list);
74
+ _mali_osk_list_init(&group->executor_list);
75
+ _mali_osk_list_init(&group->pm_domain_list);
76
+ group->bcast_core = bcast;
77
+ group->dlbu_core = dlbu;
7678
77
- /* register this object as a part of the correct power domain */
78
- if ((NULL != core) || (NULL != dlbu) || (NULL != bcast))
79
- group->pm_domain = mali_pm_register_group(domain_index, group);
79
+ /* register this object as a part of the correct power domain */
80
+ if ((NULL != core) || (NULL != dlbu) || (NULL != bcast))
81
+ group->pm_domain = mali_pm_register_group(domain_index, group);
8082
81
- mali_global_groups[mali_global_num_groups] = group;
82
- mali_global_num_groups++;
83
+ mali_global_groups[mali_global_num_groups] = group;
84
+ mali_global_num_groups++;
8385
84
- return group;
86
+ return group;
87
+ }
88
+ _mali_osk_free(group);
8589 }
8690
8791 return NULL;
....@@ -143,7 +147,10 @@
143147 }
144148 }
145149
146
- _mali_osk_timer_del(&group->timeout_timer);
150
+ if (NULL != group->timeout_timer) {
151
+ _mali_osk_timer_del(group->timeout_timer);
152
+ _mali_osk_timer_term(group->timeout_timer);
153
+ }
147154
148155 if (NULL != group->bottom_half_work_mmu) {
149156 _mali_osk_wq_delete_work(group->bottom_half_work_mmu);
....@@ -872,7 +879,7 @@
872879
873880 /* Setup SW timer and record start time */
874881 group->start_time = _mali_osk_time_tickcount();
875
- _mali_osk_timer_mod(&group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime));
882
+ _mali_osk_timer_mod(group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime));
876883
877884 MALI_DEBUG_PRINT(4, ("Group: Started GP job 0x%08X on group %s at %u\n",
878885 job,
....@@ -1027,7 +1034,7 @@
10271034
10281035 /* Setup SW timer and record start time */
10291036 group->start_time = _mali_osk_time_tickcount();
1030
- _mali_osk_timer_mod(&group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime));
1037
+ _mali_osk_timer_mod(group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime));
10311038
10321039 MALI_DEBUG_PRINT(4, ("Group: Started PP job 0x%08X part %u/%u on group %s at %u\n",
10331040 job, sub_job + 1,
....@@ -1117,7 +1124,7 @@
11171124 MALI_DEBUG_ASSERT(MALI_TRUE == group->is_working);
11181125
11191126 /* Stop/clear the timeout timer. */
1120
- _mali_osk_timer_del_async(&group->timeout_timer);
1127
+ _mali_osk_timer_del_async(group->timeout_timer);
11211128
11221129 if (NULL != group->pp_running_job) {
11231130
....@@ -1230,7 +1237,7 @@
12301237 MALI_DEBUG_ASSERT(MALI_TRUE == group->is_working);
12311238
12321239 /* Stop/clear the timeout timer. */
1233
- _mali_osk_timer_del_async(&group->timeout_timer);
1240
+ _mali_osk_timer_del_async(group->timeout_timer);
12341241
12351242 if (NULL != group->gp_running_job) {
12361243 mali_gp_update_performance_counters(group->gp_core, group->gp_running_job);
....@@ -1773,8 +1780,7 @@
17731780
17741781 static void mali_group_timeout(void *data)
17751782 {
1776
- _mali_osk_timer_t *timer = (_mali_osk_timer_t *)data;
1777
- struct mali_group *group = container_of(timer, struct mali_group, timeout_timer);
1783
+ struct mali_group *group = (struct mali_group *)data;
17781784 MALI_DEBUG_ASSERT_POINTER(group);
17791785
17801786 MALI_DEBUG_PRINT(2, ("Group: timeout handler for %s at %u\n",