.. | .. |
---|
1 | 1 | // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note |
---|
2 | 2 | /* |
---|
3 | 3 | * |
---|
4 | | - * (C) COPYRIGHT 2014-2021 ARM Limited. All rights reserved. |
---|
| 4 | + * (C) COPYRIGHT 2014-2022 ARM Limited. All rights reserved. |
---|
5 | 5 | * |
---|
6 | 6 | * This program is free software and is provided to you under the terms of the |
---|
7 | 7 | * GNU General Public License version 2 as published by the Free Software |
---|
.. | .. |
---|
91 | 91 | struct kbase_device *kbdev; |
---|
92 | 92 | struct kbasep_js_device_data *js_devdata; |
---|
93 | 93 | struct kbase_backend_data *backend; |
---|
94 | | - int s; |
---|
| 94 | + unsigned int s; |
---|
95 | 95 | bool reset_needed = false; |
---|
96 | 96 | |
---|
97 | 97 | KBASE_DEBUG_ASSERT(timer != NULL); |
---|
.. | .. |
---|
131 | 131 | } else { |
---|
132 | 132 | soft_stop_ticks = |
---|
133 | 133 | js_devdata->soft_stop_ticks; |
---|
| 134 | + if (kbase_is_quick_reset_enabled(kbdev)) { |
---|
| 135 | + hard_stop_ticks = 2; |
---|
| 136 | + gpu_reset_ticks = 3; |
---|
| 137 | + } else { |
---|
134 | 138 | hard_stop_ticks = |
---|
135 | 139 | js_devdata->hard_stop_ticks_ss; |
---|
136 | 140 | gpu_reset_ticks = |
---|
137 | 141 | js_devdata->gpu_reset_ticks_ss; |
---|
| 142 | + } |
---|
138 | 143 | } |
---|
139 | 144 | |
---|
140 | 145 | /* If timeouts have been changed then ensure |
---|
.. | .. |
---|
196 | 201 | int ms = |
---|
197 | 202 | js_devdata->scheduling_period_ns |
---|
198 | 203 | / 1000000u; |
---|
199 | | - dev_warn(kbdev->dev, "JS: Job Hard-Stopped (took more than %lu ticks at %lu ms/tick)", |
---|
200 | | - (unsigned long)ticks, |
---|
201 | | - (unsigned long)ms); |
---|
| 204 | + if (!kbase_is_quick_reset_enabled(kbdev)) |
---|
| 205 | + dev_warn(kbdev->dev, "JS: Job Hard-Stopped (took more than %lu ticks at %lu ms/tick)", |
---|
| 206 | + (unsigned long)ticks, |
---|
| 207 | + (unsigned long)ms); |
---|
202 | 208 | kbase_job_slot_hardstop(atom->kctx, s, |
---|
203 | 209 | atom); |
---|
204 | 210 | #endif |
---|
.. | .. |
---|
255 | 261 | } |
---|
256 | 262 | } |
---|
257 | 263 | if (reset_needed) { |
---|
258 | | - dev_err(kbdev->dev, "JS: Job has been on the GPU for too long (JS_RESET_TICKS_SS/DUMPING timeout hit). Issuing GPU soft-reset to resolve."); |
---|
| 264 | + if (kbase_is_quick_reset_enabled(kbdev)) |
---|
| 265 | + dev_err(kbdev->dev, "quick reset"); |
---|
| 266 | + else { |
---|
| 267 | + dev_err(kbdev->dev, "JS: Job has been on the GPU for too long (JS_RESET_TICKS_SS/DUMPING timeout hit). Issuing GPU soft-reset to resolve."); |
---|
| 268 | + } |
---|
259 | 269 | |
---|
260 | 270 | if (kbase_prepare_to_reset_gpu_locked(kbdev, RESET_FLAGS_NONE)) |
---|
261 | 271 | kbase_reset_gpu_locked(kbdev); |
---|
.. | .. |
---|
365 | 375 | |
---|
366 | 376 | backend->timeouts_updated = true; |
---|
367 | 377 | } |
---|
368 | | - |
---|