tu: Clamp priority in DRM submitqueue creation

The kernel driver has a range of valid priority values that can
be supplied to it, submitting any priority value outside these
bounds will result in `-EINVAL`. To avoid this, the priority
value is now clamped to the range that the kernel supports.

Fixes: 0c6fbfca0c91ef012e8ab767a317c07f1f6dc5e6
Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18389>
(cherry picked from commit c82249aa6891e43398cc8d62d552869495292b31)
This commit is contained in:
Mark Collins 2022-09-02 10:09:11 +00:00 committed by Dylan Baker
parent 26b95ed403
commit 842011a4bd
2 changed files with 5 additions and 2 deletions

View File

@ -3253,7 +3253,7 @@
"description": "tu: Clamp priority in DRM submitqueue creation",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "0c6fbfca0c91ef012e8ab767a317c07f1f6dc5e6"
},

View File

@ -144,9 +144,12 @@ tu_drm_submitqueue_new(const struct tu_device *dev,
int priority,
uint32_t *queue_id)
{
uint64_t nr_rings = 1;
tu_drm_get_param(dev->physical_device, MSM_PARAM_NR_RINGS, &nr_rings);
struct drm_msm_submitqueue req = {
.flags = 0,
.prio = priority,
.prio = MIN2(priority, MAX2(nr_rings, 1) - 1),
};
int ret = drmCommandWriteRead(dev->fd,