.. | .. |
---|
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 2013-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 |
---|
.. | .. |
---|
37 | 37 | * |
---|
38 | 38 | * Return: true if slot can still be submitted on, false if slot is now full. |
---|
39 | 39 | */ |
---|
40 | | -static bool kbase_jm_next_job(struct kbase_device *kbdev, int js, |
---|
41 | | - int nr_jobs_to_submit) |
---|
| 40 | +static bool kbase_jm_next_job(struct kbase_device *kbdev, unsigned int js, int nr_jobs_to_submit) |
---|
42 | 41 | { |
---|
43 | 42 | struct kbase_context *kctx; |
---|
44 | 43 | int i; |
---|
45 | 44 | |
---|
46 | 45 | kctx = kbdev->hwaccess.active_kctx[js]; |
---|
47 | | - dev_dbg(kbdev->dev, |
---|
48 | | - "Trying to run the next %d jobs in kctx %pK (s:%d)\n", |
---|
| 46 | + dev_dbg(kbdev->dev, "Trying to run the next %d jobs in kctx %pK (s:%u)\n", |
---|
49 | 47 | nr_jobs_to_submit, (void *)kctx, js); |
---|
50 | 48 | |
---|
51 | 49 | if (!kctx) |
---|
.. | .. |
---|
60 | 58 | kbase_backend_run_atom(kbdev, katom); |
---|
61 | 59 | } |
---|
62 | 60 | |
---|
63 | | - dev_dbg(kbdev->dev, "Slot ringbuffer should now be full (s:%d)\n", js); |
---|
| 61 | + dev_dbg(kbdev->dev, "Slot ringbuffer should now be full (s:%u)\n", js); |
---|
64 | 62 | return false; |
---|
65 | 63 | } |
---|
66 | 64 | |
---|
.. | .. |
---|
72 | 70 | dev_dbg(kbdev->dev, "JM kick slot mask 0x%x\n", js_mask); |
---|
73 | 71 | |
---|
74 | 72 | while (js_mask) { |
---|
75 | | - int js = ffs(js_mask) - 1; |
---|
| 73 | + unsigned int js = ffs(js_mask) - 1; |
---|
76 | 74 | int nr_jobs_to_submit = kbase_backend_slot_free(kbdev, js); |
---|
77 | 75 | |
---|
78 | 76 | if (kbase_jm_next_job(kbdev, js, nr_jobs_to_submit)) |
---|
.. | .. |
---|
111 | 109 | |
---|
112 | 110 | void kbase_jm_idle_ctx(struct kbase_device *kbdev, struct kbase_context *kctx) |
---|
113 | 111 | { |
---|
114 | | - int js; |
---|
| 112 | + unsigned int js; |
---|
115 | 113 | |
---|
116 | 114 | lockdep_assert_held(&kbdev->hwaccess_lock); |
---|
117 | 115 | |
---|
118 | 116 | for (js = 0; js < BASE_JM_MAX_NR_SLOTS; js++) { |
---|
119 | 117 | if (kbdev->hwaccess.active_kctx[js] == kctx) { |
---|
120 | | - dev_dbg(kbdev->dev, "Marking kctx %pK as inactive (s:%d)\n", |
---|
121 | | - (void *)kctx, js); |
---|
| 118 | + dev_dbg(kbdev->dev, "Marking kctx %pK as inactive (s:%u)\n", (void *)kctx, |
---|
| 119 | + js); |
---|
122 | 120 | kbdev->hwaccess.active_kctx[js] = NULL; |
---|
123 | 121 | } |
---|
124 | 122 | } |
---|
.. | .. |
---|
132 | 130 | dev_dbg(kbdev->dev, "Atom %pK is returning with event code 0x%x\n", |
---|
133 | 131 | (void *)katom, katom->event_code); |
---|
134 | 132 | |
---|
| 133 | + KBASE_KTRACE_ADD_JM(kbdev, JM_RETURN_ATOM_TO_JS, katom->kctx, katom, |
---|
| 134 | + katom->jc, katom->event_code); |
---|
| 135 | + |
---|
135 | 136 | if (katom->event_code != BASE_JD_EVENT_STOPPED && |
---|
136 | 137 | katom->event_code != BASE_JD_EVENT_REMOVED_FROM_NEXT) { |
---|
137 | 138 | return kbase_js_complete_atom(katom, NULL); |
---|
138 | | - } else { |
---|
139 | | - kbase_js_unpull(katom->kctx, katom); |
---|
140 | | - return NULL; |
---|
141 | 139 | } |
---|
| 140 | + |
---|
| 141 | + kbase_js_unpull(katom->kctx, katom); |
---|
| 142 | + |
---|
| 143 | + return NULL; |
---|
142 | 144 | } |
---|
143 | 145 | |
---|
144 | 146 | struct kbase_jd_atom *kbase_jm_complete(struct kbase_device *kbdev, |
---|