aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amdfalconx86/recipes-kernel/linux/files/0001-PATCH-amdgpu-get-maximum-and-used-UVD-handles.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/files/0001-PATCH-amdgpu-get-maximum-and-used-UVD-handles.patch')
-rw-r--r--meta-amdfalconx86/recipes-kernel/linux/files/0001-PATCH-amdgpu-get-maximum-and-used-UVD-handles.patch158
1 files changed, 0 insertions, 158 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/files/0001-PATCH-amdgpu-get-maximum-and-used-UVD-handles.patch b/meta-amdfalconx86/recipes-kernel/linux/files/0001-PATCH-amdgpu-get-maximum-and-used-UVD-handles.patch
deleted file mode 100644
index 506f127f..00000000
--- a/meta-amdfalconx86/recipes-kernel/linux/files/0001-PATCH-amdgpu-get-maximum-and-used-UVD-handles.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 195d9672a2766fca3c0495884e2ef6a4f133ebb7 Mon Sep 17 00:00:00 2001
-From: Ahsan Hussain <ahsan_hussain@mentor.com>
-Date: Wed, 19 Apr 2017 21:01:50 +0500
-Subject: [PATCH] [PATCH] amdgpu: get maximum and used UVD handles
-
-Change History
---------------
-
-v4: Changes suggested by Emil, Christian
-- return -ENODATA for asics with unlimited sessions
-
-v3: changes suggested by Christian
-- Add a check for UVD IP block using AMDGPU_HW_IP_UVD
- query type.
-- Add a check for asic_type to be less than
- CHIP_POLARIS10 since starting Polaris, we support
- unlimited UVD instances.
-- Add kerneldoc style comment for
- amdgpu_uvd_used_handles().
-
-v2: as suggested by Christian
-- Add a new query AMDGPU_INFO_NUM_HANDLES
-- Create a helper function to return the number
- of currently used UVD handles.
-- Modify the logic to count the number of used
- UVD handles since handles can be freed in
- non-linear fashion.
-
-v1:
-- User might want to query the maximum number of UVD
- instances supported by firmware. In addition to that,
- if there are multiple applications using UVD handles
- at the same time, he might also want to query the
- currently used number of handles.
-
- For this we add two variables max_handles and
- used_handles inside drm_amdgpu_info_hw_ip. So now
- an application (or libdrm) can use AMDGPU_INFO IOCTL
- with AMDGPU_INFO_HW_IP_INFO query type to get these
- values.
-
-Signed-off-by: Ahsan Hussain <ahsan_hussain@mentor.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 21 +++++++++++++++++++
- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 25 +++++++++++++++++++++++
- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h | 1 +
- drivers/gpu/drm/amd/include/uapi/drm/amdgpu_drm.h | 9 ++++++++
- 4 files changed, 56 insertions(+)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
-index a48783e50..e7ab49d49 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
-@@ -505,6 +505,27 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
- return copy_to_user(out, &dev_info,
- min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0;
- }
-+ case AMDGPU_INFO_NUM_HANDLES: {
-+ struct drm_amdgpu_info_num_handles handle;
-+
-+ switch (info->query_hw_ip.type) {
-+ case AMDGPU_HW_IP_UVD:
-+ /* Starting Polaris, we support unlimited UVD handles */
-+ if (adev->asic_type < CHIP_POLARIS10) {
-+ handle.uvd_max_handles = adev->uvd.max_handles;
-+ handle.uvd_used_handles = amdgpu_uvd_used_handles(adev);
-+
-+ return copy_to_user(out, &handle,
-+ min((size_t)size, sizeof(handle))) ? -EFAULT : 0;
-+ } else {
-+ return -ENODATA;
-+ }
-+
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ }
- default:
- DRM_DEBUG_KMS("Invalid request %d\n", info->query);
- return -EINVAL;
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-index 849c7959c..20960e82a 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-@@ -940,6 +940,31 @@ int amdgpu_uvd_ring_parse_cs(struct amdgpu_cs_parser *parser, uint32_t ib_idx)
- return 0;
- }
-
-+/**
-+ * amdgpu_uvd_used_handles - returns used UVD handles
-+ *
-+ * @adev: amdgpu_device pointer
-+ *
-+ * Returns the number of UVD handles in use
-+ */
-+uint32_t amdgpu_uvd_used_handles(struct amdgpu_device *adev)
-+{
-+ unsigned i;
-+ uint32_t used_handles = 0;
-+
-+ for (i = 0; i < adev->uvd.max_handles; ++i) {
-+ /*
-+ * Handles can be freed in any order, and not
-+ * necessarily linear. So we need to count
-+ * all non-zero handles.
-+ */
-+ if (atomic_read(&adev->uvd.handles[i]))
-+ used_handles++;
-+ }
-+
-+ return used_handles;
-+}
-+
- static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring, struct amdgpu_bo *bo,
- bool direct, struct fence **fence)
- {
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h
-index 9a3b44908..19250d69d 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h
-@@ -35,5 +35,6 @@ int amdgpu_uvd_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
- void amdgpu_uvd_free_handles(struct amdgpu_device *adev,
- struct drm_file *filp);
- int amdgpu_uvd_ring_parse_cs(struct amdgpu_cs_parser *parser, uint32_t ib_idx);
-+uint32_t amdgpu_uvd_used_handles(struct amdgpu_device *adev);
-
- #endif
-diff --git a/drivers/gpu/drm/amd/include/uapi/drm/amdgpu_drm.h b/drivers/gpu/drm/amd/include/uapi/drm/amdgpu_drm.h
-index c2f06eba3..c4f903d61 100644
---- a/drivers/gpu/drm/amd/include/uapi/drm/amdgpu_drm.h
-+++ b/drivers/gpu/drm/amd/include/uapi/drm/amdgpu_drm.h
-@@ -549,6 +549,8 @@ struct drm_amdgpu_cs_chunk_data {
- #define AMDGPU_INFO_CAPABILITY 0x50
- /* query pin memory capability */
- #define AMDGPU_CAPABILITY_PIN_MEM_FLAG (1 << 0)
-+/* Query UVD handles */
-+#define AMDGPU_INFO_NUM_HANDLES 0x1C
-
- #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
- #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
-@@ -710,6 +712,13 @@ struct drm_amdgpu_info_hw_ip {
- __u32 _pad;
- };
-
-+struct drm_amdgpu_info_num_handles {
-+ /** Max handles as supported by firmware for UVD */
-+ __u32 uvd_max_handles;
-+ /** Handles currently in use for UVD */
-+ __u32 uvd_used_handles;
-+};
-+
- struct drm_amdgpu_heap_info {
- /** max. physical memory */
- __u64 total_heap_size;
---
-2.11.1
-