[PATCH libdrm] amdgpu: Add context priority override function.
Zhou, David(ChunMing)
David1.Zhou at amd.com
Thu Apr 18 03:16:34 UTC 2019
Reviewed-by: Chunming Zhou <david1.zhou at amd.com>
> -----Original Message-----
> From: dri-devel <dri-devel-bounces at lists.freedesktop.org> On Behalf Of Bas
> Nieuwenhuizen
> Sent: Thursday, April 18, 2019 2:34 AM
> To: dri-devel at lists.freedesktop.org
> Subject: [PATCH libdrm] 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.
> ---
> amdgpu/amdgpu-symbol-check | 1 +
> amdgpu/amdgpu.h | 15 +++++++++++++++
> amdgpu/amdgpu_cs.c | 25 +++++++++++++++++++++++++
> 3 files changed, 41 insertions(+)
>
> 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
> d6de3b8d..3d838e08 100644
> --- a/amdgpu/amdgpu.h
> +++ b/amdgpu/amdgpu.h
> @@ -911,6 +911,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
> *
> 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) {
> --
> 2.21.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list