diff options
author | Sunny He <suhe@nvidia.com> | 2017-07-31 19:10:14 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-08-11 17:16:46 -0400 |
commit | 83e49b39181a86d32f6350c65659b5892f8f7670 (patch) | |
tree | 2ed7e74b2ff0b3f8dc040e981f495d18f10cab4c /drivers/gpu/nvgpu/gk20a | |
parent | eb9864d92dfc494d0186c4afaca81280c0953f8c (diff) |
gpu: nvgpu: remove kind map inheritance
Currently, the kind map initialization inherits from earlier
chips' kind map definitions and simply adds on newly supported
features. This is dangerous as changes in older architectures
may affect newer architectures in unpredictable ways.
This patch removes inheritance between subsequent architectures'
kind map initializations.
Jira NVGPU-74
Change-Id: I21951c0920f69ced73088cb6670ca1894159c7b9
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1533349
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.c | 319 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/kind_gk20a.h | 18 |
2 files changed, 167 insertions, 170 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c index 57cf028b..1d7a0ebf 100644 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.c | |||
@@ -23,22 +23,6 @@ | |||
23 | 23 | ||
24 | /* TBD: generate these from kind_macros.h */ | 24 | /* TBD: generate these from kind_macros.h */ |
25 | 25 | ||
26 | /* TBD: not sure on the work creation for gk20a, doubtful */ | ||
27 | static inline bool gk20a_kind_work_creation_sked(u8 k) | ||
28 | { | ||
29 | return false; | ||
30 | } | ||
31 | static inline bool gk20a_kind_work_creation_host(u8 k) | ||
32 | { | ||
33 | return false; | ||
34 | } | ||
35 | |||
36 | static inline bool gk20a_kind_work_creation(u8 k) | ||
37 | { | ||
38 | return gk20a_kind_work_creation_sked(k) || | ||
39 | gk20a_kind_work_creation_host(k); | ||
40 | } | ||
41 | |||
42 | /* | 26 | /* |
43 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will | 27 | * Use noinline_for_stack for these huge functions, otherwise GCC 4.7 will |
44 | * blow up when building a coverage-enabled kernel. (error: the frame size of | 28 | * blow up when building a coverage-enabled kernel. (error: the frame size of |
@@ -48,177 +32,174 @@ static inline bool gk20a_kind_work_creation(u8 k) | |||
48 | /* note: taken from the !2cs_compression case */ | 32 | /* note: taken from the !2cs_compression case */ |
49 | static noinline_for_stack bool gk20a_kind_supported(u8 k) | 33 | static noinline_for_stack bool gk20a_kind_supported(u8 k) |
50 | { | 34 | { |
51 | return gk20a_kind_work_creation(k) || | 35 | return gk20a_kind_work_creation(k) |
52 | (k == gmmu_pte_kind_invalid_v()) || | 36 | || (k == gmmu_pte_kind_invalid_v()) |
53 | (k == gmmu_pte_kind_pitch_v()) || | 37 | || (k == gmmu_pte_kind_pitch_v()) |
54 | (k >= gmmu_pte_kind_z16_v() && | 38 | || (k >= gmmu_pte_kind_z16_v() && |
55 | k <= gmmu_pte_kind_z16_ms8_2c_v()) || | 39 | k <= gmmu_pte_kind_z16_ms8_2c_v()) |
56 | (k >= gmmu_pte_kind_z16_2z_v() && | 40 | || (k >= gmmu_pte_kind_z16_2z_v() && |
57 | k <= gmmu_pte_kind_z16_ms8_2z_v()) || | 41 | k <= gmmu_pte_kind_z16_ms8_2z_v()) |
58 | (k == gmmu_pte_kind_s8z24_v()) || | 42 | || (k == gmmu_pte_kind_s8z24_v()) |
59 | (k >= gmmu_pte_kind_s8z24_2cz_v() && | 43 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && |
60 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) || | 44 | k <= gmmu_pte_kind_s8z24_ms8_2cz_v()) |
61 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && | 45 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() && |
62 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || | 46 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) |
63 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 47 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
64 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) || | 48 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()) |
65 | (k == gmmu_pte_kind_z24s8_v()) || | 49 | || (k == gmmu_pte_kind_z24s8_v()) |
66 | (k >= gmmu_pte_kind_z24s8_2cz_v() && | 50 | || (k >= gmmu_pte_kind_z24s8_2cz_v() && |
67 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) || | 51 | k <= gmmu_pte_kind_z24s8_ms8_2cz_v()) |
68 | (k == gmmu_pte_kind_zf32_v()) || | 52 | || (k == gmmu_pte_kind_zf32_v()) |
69 | (k >= gmmu_pte_kind_zf32_2cz_v() && | 53 | || (k >= gmmu_pte_kind_zf32_2cz_v() && |
70 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) || | 54 | k <= gmmu_pte_kind_zf32_ms8_2cz_v()) |
71 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && | 55 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() && |
72 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) || | 56 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()) |
73 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && | 57 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() && |
74 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) || | 58 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()) |
75 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && | 59 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() && |
76 | k <= gmmu_pte_kind_zf32_x24s8_v()) || | 60 | k <= gmmu_pte_kind_zf32_x24s8_v()) |
77 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 61 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
78 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) || | 62 | k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()) |
79 | (k == gmmu_pte_kind_generic_16bx2_v()) || | 63 | || (k == gmmu_pte_kind_generic_16bx2_v()) |
80 | (k == gmmu_pte_kind_c32_2c_v()) || | 64 | || (k == gmmu_pte_kind_c32_2c_v()) |
81 | (k == gmmu_pte_kind_c32_2cra_v()) || | 65 | || (k == gmmu_pte_kind_c32_2cra_v()) |
82 | (k == gmmu_pte_kind_c32_ms2_2c_v()) || | 66 | || (k == gmmu_pte_kind_c32_ms2_2c_v()) |
83 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 67 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
84 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 68 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
85 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) || | 69 | k <= gmmu_pte_kind_c32_ms4_2cbr_v()) |
86 | (k >= gmmu_pte_kind_c32_ms4_2cra_v() && | 70 | || (k >= gmmu_pte_kind_c32_ms4_2cra_v() && |
87 | k <= gmmu_pte_kind_c64_2c_v()) || | 71 | k <= gmmu_pte_kind_c64_2c_v()) |
88 | (k == gmmu_pte_kind_c64_2cra_v()) || | 72 | || (k == gmmu_pte_kind_c64_2cra_v()) |
89 | (k == gmmu_pte_kind_c64_ms2_2c_v()) || | 73 | || (k == gmmu_pte_kind_c64_ms2_2c_v()) |
90 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 74 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
91 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 75 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
92 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) || | 76 | k <= gmmu_pte_kind_c64_ms4_2cbr_v()) |
93 | (k >= gmmu_pte_kind_c64_ms4_2cra_v() && | 77 | || (k >= gmmu_pte_kind_c64_ms4_2cra_v() && |
94 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) || | 78 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()) |
95 | (k == gmmu_pte_kind_pitch_no_swizzle_v()); | 79 | || (k == gmmu_pte_kind_pitch_no_swizzle_v()); |
96 | } | 80 | } |
97 | 81 | ||
98 | static noinline_for_stack bool gk20a_kind_z(u8 k) | 82 | static noinline_for_stack bool gk20a_kind_z(u8 k) |
99 | { | 83 | { |
100 | return (k >= gmmu_pte_kind_z16_v() && | 84 | return (k >= gmmu_pte_kind_z16_v() && |
101 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) || | 85 | k <= gmmu_pte_kind_v8z24_ms8_vc24_v()) |
102 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | 86 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && |
103 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || | 87 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) |
104 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 88 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
105 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) || | 89 | k <= gmmu_pte_kind_z24v8_ms8_vc24_v()) |
106 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | 90 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && |
107 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || | 91 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) |
108 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 92 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
109 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || | 93 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) |
110 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | 94 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && |
111 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || | 95 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) |
112 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | 96 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && |
113 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) | 97 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()); |
114 | /* || | ||
115 | (k >= gmmu_pte_kind_zv32_x24s8_2cszv_v() && | ||
116 | k <= gmmu_pte_kind_xf32_x24s8_ms16_2cs_v())*/; | ||
117 | } | 98 | } |
118 | 99 | ||
119 | static noinline_for_stack bool gk20a_kind_c(u8 k) | 100 | static noinline_for_stack bool gk20a_kind_c(u8 k) |
120 | { | 101 | { |
121 | return gk20a_kind_work_creation(k) || | 102 | return gk20a_kind_work_creation(k) |
122 | (k == gmmu_pte_kind_pitch_v()) || | 103 | || (k == gmmu_pte_kind_pitch_v()) |
123 | (k == gmmu_pte_kind_generic_16bx2_v()) || | 104 | || (k == gmmu_pte_kind_generic_16bx2_v()) |
124 | (k >= gmmu_pte_kind_c32_2c_v() && | 105 | || (k >= gmmu_pte_kind_c32_2c_v() && |
125 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || | 106 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) |
126 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 107 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
127 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 108 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
128 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || | 109 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) |
129 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 110 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
130 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 111 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
131 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); | 112 | k <= gmmu_pte_kind_pitch_no_swizzle_v()); |
132 | } | 113 | } |
133 | 114 | ||
134 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) | 115 | static noinline_for_stack bool gk20a_kind_compressible(u8 k) |
135 | { | 116 | { |
136 | return (k >= gmmu_pte_kind_z16_2c_v() && | 117 | return (k >= gmmu_pte_kind_z16_2c_v() && |
137 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || | 118 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) |
138 | (k >= gmmu_pte_kind_s8z24_1z_v() && | 119 | || (k >= gmmu_pte_kind_s8z24_1z_v() && |
139 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) || | 120 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) |
140 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && | 121 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() && |
141 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || | 122 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) |
142 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 123 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
143 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) || | 124 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) |
144 | (k >= gmmu_pte_kind_z24s8_1z_v() && | 125 | || (k >= gmmu_pte_kind_z24s8_1z_v() && |
145 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) || | 126 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) |
146 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && | 127 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() && |
147 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || | 128 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) |
148 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 129 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
149 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) || | 130 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) |
150 | (k >= gmmu_pte_kind_zf32_1z_v() && | 131 | || (k >= gmmu_pte_kind_zf32_1z_v() && |
151 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) || | 132 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) |
152 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | 133 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && |
153 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || | 134 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) |
154 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && | 135 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() && |
155 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) || | 136 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) |
156 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | 137 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && |
157 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || | 138 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) |
158 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && | 139 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() && |
159 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) || | 140 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) |
160 | (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | 141 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && |
161 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) || | 142 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) |
162 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 143 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
163 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || | 144 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) |
164 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 145 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
165 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 146 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
166 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || | 147 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) |
167 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 148 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
168 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 149 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
169 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 150 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
170 | } | 151 | } |
171 | 152 | ||
172 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) | 153 | static noinline_for_stack bool gk20a_kind_zbc(u8 k) |
173 | { | 154 | { |
174 | return (k >= gmmu_pte_kind_z16_2c_v() && | 155 | return (k >= gmmu_pte_kind_z16_2c_v() && |
175 | k <= gmmu_pte_kind_z16_ms16_2c_v()) || | 156 | k <= gmmu_pte_kind_z16_ms16_2c_v()) |
176 | (k >= gmmu_pte_kind_z16_4cz_v() && | 157 | || (k >= gmmu_pte_kind_z16_4cz_v() && |
177 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) || | 158 | k <= gmmu_pte_kind_z16_ms16_4cz_v()) |
178 | (k >= gmmu_pte_kind_s8z24_2cz_v() && | 159 | || (k >= gmmu_pte_kind_s8z24_2cz_v() && |
179 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) || | 160 | k <= gmmu_pte_kind_s8z24_ms16_4cszv_v()) |
180 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && | 161 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() && |
181 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) || | 162 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()) |
182 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && | 163 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() && |
183 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) || | 164 | k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()) |
184 | (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && | 165 | || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() && |
185 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) || | 166 | k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v()) |
186 | (k >= gmmu_pte_kind_z24s8_2cs_v() && | 167 | || (k >= gmmu_pte_kind_z24s8_2cs_v() && |
187 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) || | 168 | k <= gmmu_pte_kind_z24s8_ms16_4cszv_v()) |
188 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && | 169 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() && |
189 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) || | 170 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()) |
190 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && | 171 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() && |
191 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) || | 172 | k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()) |
192 | (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && | 173 | || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() && |
193 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) || | 174 | k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v()) |
194 | (k >= gmmu_pte_kind_zf32_2cs_v() && | 175 | || (k >= gmmu_pte_kind_zf32_2cs_v() && |
195 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) || | 176 | k <= gmmu_pte_kind_zf32_ms16_2cz_v()) |
196 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && | 177 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() && |
197 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) || | 178 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v()) |
198 | (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && | 179 | || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() && |
199 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) || | 180 | k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()) |
200 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && | 181 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() && |
201 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) || | 182 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v()) |
202 | (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && | 183 | || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() && |
203 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) || | 184 | k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()) |
204 | (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && | 185 | || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() && |
205 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) || | 186 | k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v()) |
206 | (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && | 187 | || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() && |
207 | k <= gmmu_pte_kind_c32_2cra_v()) || | 188 | k <= gmmu_pte_kind_c32_2cra_v()) |
208 | (k >= gmmu_pte_kind_c32_ms2_2c_v() && | 189 | || (k >= gmmu_pte_kind_c32_ms2_2c_v() && |
209 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) || | 190 | k <= gmmu_pte_kind_c32_ms2_2cbr_v()) |
210 | (k == gmmu_pte_kind_c32_ms2_2cra_v()) || | 191 | || (k == gmmu_pte_kind_c32_ms2_2cra_v()) |
211 | (k >= gmmu_pte_kind_c32_ms4_2c_v() && | 192 | || (k >= gmmu_pte_kind_c32_ms4_2c_v() && |
212 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) || | 193 | k <= gmmu_pte_kind_c32_ms4_2cra_v()) |
213 | (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && | 194 | || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() && |
214 | k <= gmmu_pte_kind_c64_2cra_v()) || | 195 | k <= gmmu_pte_kind_c64_2cra_v()) |
215 | (k >= gmmu_pte_kind_c64_ms2_2c_v() && | 196 | || (k >= gmmu_pte_kind_c64_ms2_2c_v() && |
216 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) || | 197 | k <= gmmu_pte_kind_c64_ms2_2cbr_v()) |
217 | (k == gmmu_pte_kind_c64_ms2_2cra_v()) || | 198 | || (k == gmmu_pte_kind_c64_ms2_2cra_v()) |
218 | (k >= gmmu_pte_kind_c64_ms4_2c_v() && | 199 | || (k >= gmmu_pte_kind_c64_ms4_2c_v() && |
219 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) || | 200 | k <= gmmu_pte_kind_c64_ms4_2cra_v()) |
220 | (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && | 201 | || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() && |
221 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); | 202 | k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v()); |
222 | } | 203 | } |
223 | 204 | ||
224 | u8 gk20a_uc_kind_map[256]; | 205 | u8 gk20a_uc_kind_map[256]; |
diff --git a/drivers/gpu/nvgpu/gk20a/kind_gk20a.h b/drivers/gpu/nvgpu/gk20a/kind_gk20a.h index 28d5802c..dcc33f7d 100644 --- a/drivers/gpu/nvgpu/gk20a/kind_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/kind_gk20a.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * GK20A memory kind management | 4 | * GK20A memory kind management |
5 | * | 5 | * |
6 | * Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved. | 6 | * Copyright (c) 2011-2017, NVIDIA CORPORATION. All rights reserved. |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify it | 8 | * This program is free software; you can redistribute it and/or modify it |
9 | * under the terms and conditions of the GNU General Public License, | 9 | * under the terms and conditions of the GNU General Public License, |
@@ -36,6 +36,22 @@ extern u16 gk20a_kind_attr[]; | |||
36 | #define GK20A_KIND_ATTR_C BIT(3) | 36 | #define GK20A_KIND_ATTR_C BIT(3) |
37 | #define GK20A_KIND_ATTR_ZBC BIT(4) | 37 | #define GK20A_KIND_ATTR_ZBC BIT(4) |
38 | 38 | ||
39 | /* TBD: not sure on the work creation for gk20a, doubtful */ | ||
40 | static inline bool gk20a_kind_work_creation_sked(u8 k) | ||
41 | { | ||
42 | return false; | ||
43 | } | ||
44 | static inline bool gk20a_kind_work_creation_host(u8 k) | ||
45 | { | ||
46 | return false; | ||
47 | } | ||
48 | |||
49 | static inline bool gk20a_kind_work_creation(u8 k) | ||
50 | { | ||
51 | return gk20a_kind_work_creation_sked(k) || | ||
52 | gk20a_kind_work_creation_host(k); | ||
53 | } | ||
54 | |||
39 | static inline bool gk20a_kind_is_supported(u8 k) | 55 | static inline bool gk20a_kind_is_supported(u8 k) |
40 | { | 56 | { |
41 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); | 57 | return !!(gk20a_kind_attr[k] & GK20A_KIND_ATTR_SUPPORTED); |