aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0140-drm-amdgpu-hybrid-add-query-for-aperture-va-range.patch
blob: d806dcf5963506ed259c15460d1af5742dac5931 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
From 8e46fa965e989122a27d0c39ae2722a299269ab1 Mon Sep 17 00:00:00 2001
From: Flora Cui <flora.cui@amd.com>
Date: Sat, 10 Oct 2015 17:11:12 +0800
Subject: [PATCH 0140/2940] drm/amdgpu: [hybrid] add query for aperture va
 range

Change-Id: I9021faca76e6ff060dbc02542d056eb424b75d15
Signed-off-by: Flora Cui <Flora.Cui@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 17 +++++++++++++++++
 include/uapi/drm/amdgpu_drm.h           | 21 +++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 7d3d76a1a9dd..b5eaf39cd301 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -298,6 +298,23 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 	flush_delayed_work(&adev->late_init_work);
 
 	switch (info->query) {
+	case AMDGPU_INFO_VIRTUAL_RANGE: {
+		struct drm_amdgpu_virtual_range range_info;
+		switch (info->virtual_range.aperture) {
+		case AMDGPU_SUA_APERTURE_PRIVATE:
+			range_info.start = adev->gmc.private_aperture_start;
+			range_info.end = adev->gmc.private_aperture_end;
+			break;
+		case AMDGPU_SUA_APERTURE_SHARED:
+			range_info.start = adev->gmc.shared_aperture_start;
+			range_info.end = adev->gmc.shared_aperture_end;
+			break;
+		default:
+			return -EINVAL;
+		}
+		return copy_to_user(out, &range_info,
+				min((size_t)size, sizeof(range_info))) ? -EFAULT : 0;
+	}
 	case AMDGPU_INFO_ACCEL_WORKING:
 		ui32 = adev->accel_working;
 		return copy_to_user(out, &ui32, min(size, 4u)) ? -EFAULT : 0;
diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
index e879f38611a1..763874711532 100644
--- a/include/uapi/drm/amdgpu_drm.h
+++ b/include/uapi/drm/amdgpu_drm.h
@@ -722,6 +722,12 @@ struct drm_amdgpu_cs_chunk_data {
 #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS	0x1E
 #define AMDGPU_INFO_VRAM_LOST_COUNTER		0x1F
 
+/* Hybrid Stack Specific Defs*/
+/* gpu capability */
+#define AMDGPU_INFO_CAPABILITY                  0x50
+/* virtual range */
+#define AMDGPU_INFO_VIRTUAL_RANGE               0x51
+
 #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT	0
 #define AMDGPU_INFO_MMR_SE_INDEX_MASK	0xff
 #define AMDGPU_INFO_MMR_SH_INDEX_SHIFT	8
@@ -778,6 +784,11 @@ struct drm_amdgpu_info {
 			__u32 flags;
 		} read_mmr_reg;
 
+		struct {
+			uint32_t aperture;
+			uint32_t _pad;
+		} virtual_range;
+
 		struct drm_amdgpu_query_fw query_fw;
 
 		struct {
@@ -992,6 +1003,16 @@ struct drm_amdgpu_info_vce_clock_table {
 #define AMDGPU_FAMILY_AI			141 /* Vega10 */
 #define AMDGPU_FAMILY_RV			142 /* Raven */
 
+/**
+ *  Definition of System Unified Address (SUA) apertures
+ */
+#define AMDGPU_SUA_APERTURE_PRIVATE    1
+#define AMDGPU_SUA_APERTURE_SHARED     2
+struct drm_amdgpu_virtual_range {
+        uint64_t start;
+        uint64_t end;
+};
+
 /*
  * Definition of free sync enter and exit signals
  * We may have more options in the future
-- 
2.17.1