aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch
blob: 1bb372e84195b8f017dfabb41b97bbbc56c1c091 (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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
From 27081ee1237620c9b866108f29debe7c514e7e24 Mon Sep 17 00:00:00 2001
From: Shaoyun Liu <Shaoyun.Liu@amd.com>
Date: Fri, 21 Jul 2017 11:05:32 -0400
Subject: [PATCH 1311/4131] drm/amdkfd: VF do not need to set Atomic Ops on
 PCIE configure space

VF will depends on hypervisor to enable the PCIE atomic Ops.

Change-Id: I467a31fbd842fe1e5d3e6da921c684ae65c0778e
Signed-off-by: Shaoyun Liu <Shaoyun.Liu@amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 65 +++++++++++++++++++++++++++++++--
 1 file changed, 62 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index 9ffadc0..4ae0edb 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -97,6 +97,20 @@ static const struct kfd_device_info tonga_device_info = {
 	.needs_pci_atomics = true,
 };
 
+static const struct kfd_device_info tonga_vf_device_info = {
+	.asic_family = CHIP_TONGA,
+	.max_pasid_bits = 16,
+	.max_no_of_hqd  = 24,
+	.doorbell_size  = 4,
+	.ih_ring_entry_size = 4 * sizeof(uint32_t),
+	.event_interrupt_class = &event_interrupt_class_cik,
+	.num_of_watch_points = 4,
+	.mqd_size_aligned = MQD_SIZE_ALIGNED,
+	.is_need_iommu_device = false,
+	.supports_cwsr = false,
+	.needs_pci_atomics = false,
+};
+
 static const struct kfd_device_info fiji_device_info = {
 	.asic_family = CHIP_FIJI,
 	.max_pasid_bits = 16,
@@ -111,6 +125,21 @@ static const struct kfd_device_info fiji_device_info = {
 	.needs_pci_atomics = true,
 };
 
+static const struct kfd_device_info fiji_vf_device_info = {
+	.asic_family = CHIP_FIJI,
+	.max_pasid_bits = 16,
+	.max_no_of_hqd  = 24,
+	.doorbell_size  = 4,
+	.ih_ring_entry_size = 4 * sizeof(uint32_t),
+	.event_interrupt_class = &event_interrupt_class_cik,
+	.num_of_watch_points = 4,
+	.mqd_size_aligned = MQD_SIZE_ALIGNED,
+	.is_need_iommu_device = false,
+	.supports_cwsr = true,
+	.needs_pci_atomics = false,
+};
+
+
 static const struct kfd_device_info polaris10_device_info = {
 	.asic_family = CHIP_POLARIS10,
 	.max_pasid_bits = 16,
@@ -125,6 +154,20 @@ static const struct kfd_device_info polaris10_device_info = {
 	.needs_pci_atomics = true,
 };
 
+static const struct kfd_device_info polaris10_vf_device_info = {
+	.asic_family = CHIP_POLARIS10,
+	.max_pasid_bits = 16,
+	.max_no_of_hqd  = 24,
+	.doorbell_size  = 4,
+	.ih_ring_entry_size = 4 * sizeof(uint32_t),
+	.event_interrupt_class = &event_interrupt_class_cik,
+	.num_of_watch_points = 4,
+	.mqd_size_aligned = MQD_SIZE_ALIGNED,
+	.is_need_iommu_device = false,
+	.supports_cwsr = true,
+	.needs_pci_atomics = false,
+};
+
 static const struct kfd_device_info polaris11_device_info = {
 	.asic_family = CHIP_POLARIS11,
 	.max_pasid_bits = 16,
@@ -153,6 +196,21 @@ static const struct kfd_device_info vega10_device_info = {
 	.needs_pci_atomics = true,
 };
 
+static const struct kfd_device_info vega10_vf_device_info = {
+	.asic_family = CHIP_VEGA10,
+	.max_pasid_bits = 16,
+	.max_no_of_hqd  = 24,
+	.doorbell_size  = 8,
+	.ih_ring_entry_size = 8 * sizeof(uint32_t),
+	.event_interrupt_class = &event_interrupt_class_v9,
+	.num_of_watch_points = 4,
+	.mqd_size_aligned = MQD_SIZE_ALIGNED,
+	.is_need_iommu_device = false,
+	.supports_cwsr = true,
+	.needs_pci_atomics = false,
+};
+
+
 struct kfd_deviceid {
 	unsigned short did;
 	const struct kfd_device_info *device_info;
@@ -220,10 +278,11 @@ static const struct kfd_deviceid supported_devices[] = {
 	{ 0x6921, &tonga_device_info   },	/* Tonga */
 	{ 0x6928, &tonga_device_info   },	/* Tonga */
 	{ 0x692B, &tonga_device_info   },	/* Tonga */
-	{ 0x692F, &tonga_device_info   },	/* Tonga */
+	{ 0x692F, &tonga_vf_device_info   },	/* Tonga vf */
 	{ 0x6938, &tonga_device_info   },	/* Tonga */
 	{ 0x6939, &tonga_device_info   },	/* Tonga */
 	{ 0x7300, &fiji_device_info    },	/* Fiji */
+	{ 0x730F, &fiji_vf_device_info    },	/* Fiji vf*/
 	{ 0x67C0, &polaris10_device_info },     /* Polaris10 */
 	{ 0x67C1, &polaris10_device_info },     /* Polaris10 */
 	{ 0x67C2, &polaris10_device_info },     /* Polaris10 */
@@ -234,7 +293,7 @@ static const struct kfd_deviceid supported_devices[] = {
 	{ 0x67CA, &polaris10_device_info },     /* Polaris10 */
 	{ 0x67CC, &polaris10_device_info },     /* Polaris10 */
 	{ 0x67CF, &polaris10_device_info },     /* Polaris10 */
-	{ 0x67D0, &polaris10_device_info },     /* Polaris10 */
+	{ 0x67D0, &polaris10_vf_device_info },     /* Polaris10 vf*/
 	{ 0x67DF, &polaris10_device_info },	/* Polaris10 */
 	{ 0x67E0, &polaris11_device_info },     /* Polaris11 */
 	{ 0x67E1, &polaris11_device_info },     /* Polaris11 */
@@ -252,7 +311,7 @@ static const struct kfd_deviceid supported_devices[] = {
 	{ 0x6864, &vega10_device_info },	/* Vega10 */
 	{ 0x6867, &vega10_device_info },	/* Vega10 */
 	{ 0x6868, &vega10_device_info },	/* Vega10 */
-	{ 0x686C, &vega10_device_info },	/* Vega10 */
+	{ 0x686C, &vega10_vf_device_info },	/* Vega10  vf*/
 	{ 0x687F, &vega10_device_info }		/* Vega10 */
 };
 
-- 
2.7.4