diff --git a/src/panfrost/lib/kmod/panfrost_kmod.c b/src/panfrost/lib/kmod/panfrost_kmod.c index 37a02441731..82587c90ca4 100644 --- a/src/panfrost/lib/kmod/panfrost_kmod.c +++ b/src/panfrost/lib/kmod/panfrost_kmod.c @@ -211,9 +211,20 @@ panfrost_dev_query_props(const struct pan_kmod_dev *dev, fd, DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY, true, 0); } - /* Panfrost currently doesn't support priorities, assumes default priority as - * medium */ - props->allowed_group_priorities_mask = PAN_KMOD_GROUP_ALLOW_PRIORITY_MEDIUM; + /* Support for priorities was added in panfrost 1.5, assumes default + * priority as medium if the param doesn't exist. */ + uint64_t prios = + panfrost_query_raw(fd, DRM_PANFROST_PARAM_ALLOWED_JM_CTX_PRIORITIES, + false, PANFROST_JM_CTX_PRIORITY_MEDIUM); + + if (prios & PANFROST_JM_CTX_PRIORITY_LOW) + props->allowed_group_priorities_mask |= PAN_KMOD_GROUP_ALLOW_PRIORITY_LOW; + if (prios & PANFROST_JM_CTX_PRIORITY_MEDIUM) + props->allowed_group_priorities_mask |= + PAN_KMOD_GROUP_ALLOW_PRIORITY_MEDIUM; + if (prios & PANFROST_JM_CTX_PRIORITY_HIGH) + props->allowed_group_priorities_mask |= + PAN_KMOD_GROUP_ALLOW_PRIORITY_HIGH; } static uint32_t