diff options
| author | Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> | 2019-01-28 22:20:20 +0100 |
|---|---|---|
| committer | Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> | 2019-04-18 10:39:32 +0200 |
| commit | 232dc3305d55d199f4765968d299bfc2a249d920 (patch) | |
| tree | 7dc4b87c620f3d3a32c77a1ff2dcc1f46db68edb /amdgpu/amdgpu_cs.c | |
| parent | 0b474eab3dd37c09f7f05e55176fcaea76fb4f92 (diff) | |
| download | external_libdrm-232dc3305d55d199f4765968d299bfc2a249d920.tar.gz external_libdrm-232dc3305d55d199f4765968d299bfc2a249d920.tar.bz2 external_libdrm-232dc3305d55d199f4765968d299bfc2a249d920.zip | |
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 <samuel.pitoiset@gmail.com>
Reviewed-by: Andres Rodriguez <andresx7@gmail.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Diffstat (limited to 'amdgpu/amdgpu_cs.c')
| -rw-r--r-- | amdgpu/amdgpu_cs.c | 25 |
1 files changed, 25 insertions, 0 deletions
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) { |
