drm: Branch 'master'
[email protected] (GitLab Mirror) Thu, 18 Apr 2019 09:02:54 +0000 (UTC)
| Newsgroups | gmane.comp.video.dri.patches |
|---|---|
| Message-ID | <[email protected]> |
amdgpu/amdgpu-symbol-check | 1 + amdgpu/amdgpu.h | 15 +++++++++++++++ amdgpu/amdgpu_cs.c | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+) New commits: commit 232dc3305d55d199f4765968d299bfc2a249d920 Author: Bas Nieuwenhuizen <[email protected]> Date: Mon Jan 28 22:20:20 2019 +0100 amdgpu: Add context priority override function. This way we can override the priority of a single context using a master fd. Since we cannot usefully create an amdgpu device of a master fd without the fd deduplication kicking in this takes a plain fd. This can be used by e.g. radv to get high priority contexts using a master fd from the primary node or a lease. Reviewed-by: Samuel Pitoiset <[email protected]> Reviewed-by: Andres Rodriguez <[email protected]> Reviewed-by: Chunming Zhou <[email protected]> diff --git a/amdgpu/amdgpu-symbol-check b/amdgpu/amdgpu-symbol-check index 96a44b40..4d806922 100755 --- a/amdgpu/amdgpu-symbol-check +++ b/amdgpu/amdgpu-symbol-check @@ -38,6 +38,7 @@ amdgpu_cs_create_syncobj2 amdgpu_cs_ctx_create amdgpu_cs_ctx_create2 amdgpu_cs_ctx_free +amdgpu_cs_ctx_override_priority amdgpu_cs_destroy_semaphore amdgpu_cs_destroy_syncobj amdgpu_cs_export_syncobj diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h index 621e7163..c44a495a 100644 --- a/amdgpu/amdgpu.h +++ b/amdgpu/amdgpu.h @@ -912,6 +912,21 @@ int amdgpu_cs_ctx_create(amdgpu_device_handle dev, int amdgpu_cs_ctx_free(amdgpu_context_handle context); /** + * Override the submission priority for the given context using a master fd. + * + * \param dev - \c [in] device handle + * \param context - \c [in] context handle for context id + * \param master_fd - \c [in] The master fd to authorize the override. + * \param priority - \c [in] The priority to assign to the context. + * + * \return 0 on success or a a negative Posix error code on failure. + */ +int amdgpu_cs_ctx_override_priority(amdgpu_device_handle dev, + amdgpu_context_handle context, + int master_fd, + unsigned priority); + +/** * Query reset state for the specific GPU Context * * \param context - \c [in] GPU Context handle diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c index 5bedf748..7ee844fb 100644 --- a/amdgpu/amdgpu_cs.c +++ b/amdgpu/amdgpu_cs.c @@ -142,6 +142,31 @@ drm_public int amdgpu_cs_ctx_free(amdgpu_context_handle context) return r; } +drm_public int amdgpu_cs_ctx_override_priority(amdgpu_device_handle dev, + amdgpu_context_handle context, + int master_fd, + unsigned priority) +{ + int r; + + if (!dev || !context || master_fd < 0) + return -EINVAL; + + union drm_amdgpu_sched args; + memset(&args, 0, sizeof(args)); + + args.in.op = AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE; + args.in.fd = dev->fd; + args.in.priority = priority; + args.in.ctx_id = context->id; + + r = drmCommandWrite(master_fd, DRM_AMDGPU_SCHED, &args, sizeof(args)); + if (r) + return r; + + return 0; +} + drm_public int amdgpu_cs_query_reset_state(amdgpu_context_handle context, uint32_t *state, uint32_t *hangs) { --