headers: Sync amdgpu_drm.h with drm-next
PATCH 1/2 headers: Sync amdgpu_drm.h with drm-next
Generated using make headers_install from:
airlied/drm-next 282dc83 Merge tag 'drm-intel-next-2017-10-12' ...
--- include/drm/amdgpu_drm.h | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)
include/drm/amdgpu_drm.h +30 -1
@@ -53,6 +53,7 @@ extern "C" {#define DRM_AMDGPU_WAIT_FENCES 0x12#define DRM_AMDGPU_VM 0x13#define DRM_AMDGPU_FENCE_TO_HANDLE 0x14 +#define DRM_AMDGPU_SCHED 0x15#define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)#define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
@@ -69,6 +70,7 @@ extern "C" {#define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences)#define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)#define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle) +#define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)#define AMDGPU_GEM_DOMAIN_CPU 0x1#define AMDGPU_GEM_DOMAIN_GTT 0x2
@@ -91,6 +93,8 @@ extern "C" {#define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5)/* Flag that BO is always valid in this VM */ #define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6) +/* Flag that BO sharing will be explicitly synchronized */ +#define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)struct drm_amdgpu_gem_create_in {/** the requested memory size */
@@ -166,13 +170,22 @@ union drm_amdgpu_bo_list {/* unknown cause */ #define AMDGPU_CTX_UNKNOWN_RESET 3 +/* Context priority level */ +#define AMDGPU_CTX_PRIORITY_UNSET -2048 +#define AMDGPU_CTX_PRIORITY_VERY_LOW -1023 +#define AMDGPU_CTX_PRIORITY_LOW -512 +#define AMDGPU_CTX_PRIORITY_NORMAL 0 +/* Selecting a priority above NORMAL requires CAP_SYS_NICE or DRM_MASTER */ +#define AMDGPU_CTX_PRIORITY_HIGH 512 +#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023 +struct drm_amdgpu_ctx_in {/** AMDGPU_CTX_OP_* */ __u32 op;/** For future use, no flags defined so far */ __u32 flags;__u32 ctx_id; -__u32 _pad; +__s32 priority; };union drm_amdgpu_ctx_out {
@@ -216,6 +229,21 @@ union drm_amdgpu_vm {struct drm_amdgpu_vm_out out; }; +/* sched ioctl */ +#define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1 + +struct drm_amdgpu_sched_in { +/* AMDGPU_SCHED_OP_* */ +__u32 op; +__u32 fd; +__s32 priority; +__u32 flags; +}; + +union drm_amdgpu_sched { +struct drm_amdgpu_sched_in in; +}; +/* * This is not a reliable API and you should expect it to fail for any * number of reasons and have fallback path that do not use userptr to
@@ -629,6 +657,7 @@ struct drm_amdgpu_cs_chunk_data {#define AMDGPU_INFO_SENSOR_VDDGFX 0x7/* Number of VRAM page faults on CPU access. */ #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E +#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
Signature · 6 lines
2.9.3 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
A message that is not in the archive (sent off-list or not yet received): 20171020145759.944-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 2/2 amdgpu: implement context priority for amdgpu_cs_ctx_create2 v3
Add a new context creation function that allows specifying the context priority.
A high priority context has the potential of starving lower priority contexts. The current kernel driver implementation allows only apps that hold CAP_SYS_NICE or DRM_MASTER to acquire a priority above AMDGPU_CTX_PRIORITY_NORMAL.
v2: corresponding changes for kernel patch v2
v3: Fixed 'make check' symbol error
--- amdgpu/amdgpu-symbol-check | 1 + amdgpu/amdgpu.h | 17 +++++++++++++++-- amdgpu/amdgpu_cs.c | 17 +++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-)
amdgpu/amdgpu-symbol-check +1 -0
@@ -30,6 +30,7 @@ amdgpu_cs_chunk_fence_to_dep amdgpu_cs_create_semaphore amdgpu_cs_create_syncobj amdgpu_cs_ctx_create +amdgpu_cs_ctx_create2 amdgpu_cs_ctx_free amdgpu_cs_destroy_semaphore amdgpu_cs_destroy_syncobj
amdgpu/amdgpu.h +15 -2
@@ -798,8 +798,9 @@ int amdgpu_bo_list_update(amdgpu_bo_list_handle handle,* context will always be executed in order (first come, first serve). * * -* \param dev - \c [in] Device handle. See #amdgpu_device_initialize() -* \param context - \c [out] GPU Context handle +* \param dev - \c [in] Device handle. See #amdgpu_device_initialize() +* \param priority - \c [in] Context creation flags. See AMDGPU_CTX_PRIORITY_* +* \param context - \c [out] GPU Context handle * * \return 0 on success\n * <0 - Negative POSIX Error code
@@ -807,6 +808,18 @@ int amdgpu_bo_list_update(amdgpu_bo_list_handle handle,* \sa amdgpu_cs_ctx_free() * */ +int amdgpu_cs_ctx_create2 (amdgpu_device_handle dev, +uint32_t priority, +amdgpu_context_handle *context); +/** +* Create GPU execution Context +* +* Refer to amdgpu_cs_ctx_create2 for full documentation. This call +* is missing the priority parameter. +* +* \sa amdgpu_cs_ctx_create2() +* +*/ int amdgpu_cs_ctx_create (amdgpu_device_handle dev,amdgpu_context_handle *context);
amdgpu/amdgpu_cs.c +13 -4
@@ -46,13 +46,14 @@ static int amdgpu_cs_reset_sem(amdgpu_semaphore_handle sem);/** * Create command submission context * -* \param dev - \c [in] amdgpu device handle -* \param context - \c [out] amdgpu context handle +* \param dev - \c [in] Device handle. See #amdgpu_device_initialize() +* \param priority - \c [in] Context creation flags. See AMDGPU_CTX_PRIORITY_* +* \param context - \c [out] GPU Context handle * * \return 0 on success otherwise POSIX Error code */ -int amdgpu_cs_ctx_create (amdgpu_device_handle dev, -amdgpu_context_handle *context) +int amdgpu_cs_ctx_create2 (amdgpu_device_handle dev,uint32_t priority, +amdgpu_context_handle *context) {struct amdgpu_context *gpu_context;union drm_amdgpu_ctx args;
@@ -75,6 +76,8 @@ int amdgpu_cs_ctx_create(amdgpu_device_handle dev,/* Create the context */ memset (&args,0 ,sizeof (args)); args.in.op =AMDGPU_CTX_OP_ALLOC_CTX ; + args.in.priority = priority; + r =drmCommandWriteRead (dev->fd,DRM_AMDGPU_CTX , &args,sizeof (args));if (r) goto error;
@@ -94,6 +97,12 @@ error:return r; } +int amdgpu_cs_ctx_create (amdgpu_device_handle dev, +amdgpu_context_handle *context) +{ +return amdgpu_cs_ctx_create2 (dev,AMDGPU_CTX_PRIORITY_NORMAL , context); +} +/** * Release command submission context *
Signature · 6 lines
2.9.3 _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Both patches:
Quoted 92 lines · Andres Rodriguez
Generated using make
headers_installfrom:
airlied/drm-next 282dc83 Merge tag 'drm-intel-next-2017-10-12' ...Signed-off-by Andres Rodriguez <[email protected]>--- include/drm/amdgpu_drm.h | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)include/drm/amdgpu_drm.h +30
-1@@ -53,6 +53,7 @@ extern "C" {#define DRM_AMDGPU_WAIT_FENCES 0x12#define DRM_AMDGPU_VM 0x13#define DRM_AMDGPU_FENCE_TO_HANDLE 0x14 +#define DRM_AMDGPU_SCHED 0x15#define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)#define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)@@ -69,6 +70,7 @@ extern "C" {#define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences)#define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)#define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle) +#define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)#define AMDGPU_GEM_DOMAIN_CPU 0x1#define AMDGPU_GEM_DOMAIN_GTT 0x2@@ -91,6 +93,8 @@ extern "C" {#define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5)/* Flag that BO is always valid in this VM */ #define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6) +/* Flag that BO sharing will be explicitly synchronized */ +#define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)struct drm_amdgpu_gem_create_in {/** the requested memory size */ @@ -166,13 +170,22 @@ union drm_amdgpu_bo_list {/* unknown cause */ #define AMDGPU_CTX_UNKNOWN_RESET 3 +/* Context priority level */ +#define AMDGPU_CTX_PRIORITY_UNSET -2048 +#define AMDGPU_CTX_PRIORITY_VERY_LOW -1023 +#define AMDGPU_CTX_PRIORITY_LOW -512 +#define AMDGPU_CTX_PRIORITY_NORMAL 0 +/* Selecting a priority above NORMAL requires CAP_SYS_NICE or DRM_MASTER */ +#define AMDGPU_CTX_PRIORITY_HIGH 512 +#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023 +struct drm_amdgpu_ctx_in {/** AMDGPU_CTX_OP_* */ __u32 op;/** For future use, no flags defined so far */ __u32 flags;__u32 ctx_id; -__u32 _pad; +__s32 priority; };union drm_amdgpu_ctx_out {@@ -216,6 +229,21 @@ union drm_amdgpu_vm {struct drm_amdgpu_vm_out out; }; +/* sched ioctl */ +#define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1 + +struct drm_amdgpu_sched_in { +/* AMDGPU_SCHED_OP_* */ +__u32 op; +__u32 fd; +__s32 priority; +__u32 flags; +}; + +union drm_amdgpu_sched { +struct drm_amdgpu_sched_in in; +}; +/* * This is not a reliable API and you should expect it to fail for any * number of reasons and have fallback path that do not use userptr to @@ -629,6 +657,7 @@ struct drm_amdgpu_cs_chunk_data {#define AMDGPU_INFO_SENSOR_VDDGFX 0x7/* Number of VRAM page faults on CPU access. */ #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E +#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
Signature · 6 lines
Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte. _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel