summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny He <suhe@nvidia.com>2017-07-31 19:10:14 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-08-14 18:55:13 -0400
commitd5a5fb3563121a4904be9185914c563070ffd021 (patch)
tree08a5fb65b912caf1555e62b031881fe1807bbd52
parent36f02cf49729b32aa241cb9f1f235749da681dd1 (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: Ie5c33f613db7ba109564b4cb2312e47ee3332afc Signed-off-by: Sunny He <suhe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1537745 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/kind_gk20a.c319
-rw-r--r--drivers/gpu/nvgpu/gk20a/kind_gk20a.h18
-rw-r--r--drivers/gpu/nvgpu/gm20b/fb_gm20b.c383
-rw-r--r--drivers/gpu/nvgpu/gp10b/fb_gp10b.c418
4 files changed, 927 insertions, 211 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 */
27static inline bool gk20a_kind_work_creation_sked(u8 k)
28{
29 return false;
30}
31static inline bool gk20a_kind_work_creation_host(u8 k)
32{
33 return false;
34}
35
36static 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 */
49static noinline_for_stack bool gk20a_kind_supported(u8 k) 33static 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
98static noinline_for_stack bool gk20a_kind_z(u8 k) 82static 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
119static noinline_for_stack bool gk20a_kind_c(u8 k) 100static 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
134static noinline_for_stack bool gk20a_kind_compressible(u8 k) 115static 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
172static noinline_for_stack bool gk20a_kind_zbc(u8 k) 153static 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
224u8 gk20a_uc_kind_map[256]; 205u8 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 */
40static inline bool gk20a_kind_work_creation_sked(u8 k)
41{
42 return false;
43}
44static inline bool gk20a_kind_work_creation_host(u8 k)
45{
46 return false;
47}
48
49static 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
39static inline bool gk20a_kind_is_supported(u8 k) 55static 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);
diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
index 8b811cbe..47b4313b 100644
--- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c
@@ -33,53 +33,402 @@ static void fb_gm20b_init_fs_state(struct gk20a *g)
33 g->ltc_count); 33 g->ltc_count);
34} 34}
35 35
36void gm20b_init_uncompressed_kind_map(void) 36noinline_for_stack void gm20b_init_uncompressed_kind_map(void)
37{ 37{
38 gk20a_init_uncompressed_kind_map(); 38 int i;
39 39
40 for (i = 0; i < 256; i++)
41 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
42
43 /* From gm20b */
40 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] = 44 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
41 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] = 45 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
42 gmmu_pte_kind_s8_v(); 46 gmmu_pte_kind_s8_v();
47
48 /* From gk20a */
49 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
50 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
51 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
52 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
53 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
54 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
55 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
56 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
57 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
58 gmmu_pte_kind_z16_v();
59
60 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
61 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
62 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
63 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
64 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
65 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
66 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
67 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
68 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
69 gmmu_pte_kind_s8z24_v();
70
71 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
72 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
73 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
74 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
75 gmmu_pte_kind_v8z24_ms4_vc4_v();
76
77 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
78 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
79 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
80 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
81 gmmu_pte_kind_v8z24_ms8_vc8_v();
82
83 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
84 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
85 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
86 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
87 gmmu_pte_kind_v8z24_ms4_vc12_v();
88
89 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
90 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
91 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
92 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
93 gmmu_pte_kind_v8z24_ms8_vc24_v();
94
95 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
96 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
97 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
98 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
99 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
100 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
101 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
102 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
103 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
104 gmmu_pte_kind_z24s8_v();
105
106 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
107 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
108 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
109 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
110 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
111 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
112 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
113 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
114 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
115 gmmu_pte_kind_zf32_v();
116
117 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
118 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
119 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
120 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
121
122 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
123 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
124 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
125 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
126
127 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
128 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
129 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
130 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
131
132 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
133 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
134 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
135 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
136
137 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
138 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
139 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
140 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
141
142 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
143 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
144 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
145 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
146
147 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
148 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
149 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
150 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
151
152 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
153 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
154 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
155 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
156
157 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
158 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
159 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
160 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
161 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
162 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
163 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
164 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
165 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
166 gmmu_pte_kind_zf32_x24s8_v();
167
168 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
169 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
170 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
171 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
172 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
173 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
174 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
175 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
176 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
177 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
178 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
179 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
180 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
181 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
182 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
183 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
184 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
185 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
186 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
187 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
188 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
189 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
190 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
191 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
192 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
193 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
194 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
195 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
196 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
197 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
198 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
199 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
200 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
201 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
202 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
203 gmmu_pte_kind_generic_16bx2_v();
204
205 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
206 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
207 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
208 gmmu_pte_kind_z24v8_ms4_vc4_v();
209
210 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
211 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
212 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
213 gmmu_pte_kind_z24v8_ms4_vc12_v();
214
215 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
216 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
217 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
218 gmmu_pte_kind_z24v8_ms8_vc8_v();
219
220 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
221 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
222 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
223 gmmu_pte_kind_z24v8_ms8_vc24_v();
224
225 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
226 gmmu_pte_kind_x8c24_v();
43} 227}
44 228
45static bool gm20b_kind_supported(u8 k) 229static noinline_for_stack bool gm20b_kind_supported(u8 k)
46{ 230{
47 return k == gmmu_pte_kind_smsked_message_v() 231 return /* From gm20b */
232 (k == gmmu_pte_kind_smsked_message_v())
48 || (k >= gmmu_pte_kind_s8_v() && 233 || (k >= gmmu_pte_kind_s8_v() &&
49 k <= gmmu_pte_kind_s8_2s_v()); 234 k <= gmmu_pte_kind_s8_2s_v())
235 /* From gk20a */
236 || gk20a_kind_work_creation(k)
237 || (k == gmmu_pte_kind_invalid_v())
238 || (k == gmmu_pte_kind_pitch_v())
239 || (k >= gmmu_pte_kind_z16_v() &&
240 k <= gmmu_pte_kind_z16_ms8_2c_v())
241 || (k >= gmmu_pte_kind_z16_2z_v() &&
242 k <= gmmu_pte_kind_z16_ms8_2z_v())
243 || (k == gmmu_pte_kind_s8z24_v())
244 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
245 k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
246 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
247 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
248 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
249 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
250 || (k == gmmu_pte_kind_z24s8_v())
251 || (k >= gmmu_pte_kind_z24s8_2cz_v() &&
252 k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
253 || (k == gmmu_pte_kind_zf32_v())
254 || (k >= gmmu_pte_kind_zf32_2cz_v() &&
255 k <= gmmu_pte_kind_zf32_ms8_2cz_v())
256 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
257 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
258 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
259 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
260 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
261 k <= gmmu_pte_kind_zf32_x24s8_v())
262 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
263 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
264 || (k == gmmu_pte_kind_generic_16bx2_v())
265 || (k == gmmu_pte_kind_c32_2c_v())
266 || (k == gmmu_pte_kind_c32_2cra_v())
267 || (k == gmmu_pte_kind_c32_ms2_2c_v())
268 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
269 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
270 k <= gmmu_pte_kind_c32_ms4_2cbr_v())
271 || (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
272 k <= gmmu_pte_kind_c64_2c_v())
273 || (k == gmmu_pte_kind_c64_2cra_v())
274 || (k == gmmu_pte_kind_c64_ms2_2c_v())
275 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
276 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
277 k <= gmmu_pte_kind_c64_ms4_2cbr_v())
278 || (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
279 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
280 || (k == gmmu_pte_kind_pitch_no_swizzle_v());
281}
282
283static noinline_for_stack bool gm20b_kind_z(u8 k)
284{
285 return /* From gm20b */
286 (k >= gmmu_pte_kind_s8_v() &&
287 k <= gmmu_pte_kind_s8_2s_v())
288 /* From gk20a */
289 || (k >= gmmu_pte_kind_z16_v() &&
290 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
291 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
292 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
293 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
294 k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
295 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
296 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
297 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
298 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
299 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
300 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
301 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
302 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
50} 303}
51 304
52static bool gm20b_kind_z(u8 k) 305static noinline_for_stack bool gm20b_kind_c(u8 k)
53{ 306{
54 return (k >= gmmu_pte_kind_s8_v() && 307 return gk20a_kind_work_creation(k)
55 k <= gmmu_pte_kind_s8_2s_v()); 308 || (k == gmmu_pte_kind_pitch_v())
309 || (k == gmmu_pte_kind_generic_16bx2_v())
310 || (k >= gmmu_pte_kind_c32_2c_v() &&
311 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
312 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
313 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
314 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
315 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
316 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
317 k <= gmmu_pte_kind_pitch_no_swizzle_v());
56} 318}
57 319
58static bool gm20b_kind_compressible(u8 k) 320static noinline_for_stack bool gm20b_kind_compressible(u8 k)
59{ 321{
60 return (k >= gmmu_pte_kind_s8_v() && 322 return /* From gm20b */
61 k <= gmmu_pte_kind_s8_2s_v()); 323 (k >= gmmu_pte_kind_s8_v() &&
324 k <= gmmu_pte_kind_s8_2s_v())
325 /* From gk20a */
326 || (k >= gmmu_pte_kind_z16_2c_v() &&
327 k <= gmmu_pte_kind_z16_ms16_4cz_v())
328 || (k >= gmmu_pte_kind_s8z24_1z_v() &&
329 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
330 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
331 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
332 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
333 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
334 || (k >= gmmu_pte_kind_z24s8_1z_v() &&
335 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
336 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
337 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
338 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
339 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
340 || (k >= gmmu_pte_kind_zf32_1z_v() &&
341 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
342 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
343 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
344 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
345 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
346 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
347 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
348 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
349 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
350 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
351 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
352 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
353 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
354 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
355 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
356 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
357 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
358 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
359 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
62} 360}
63 361
64static bool gm20b_kind_zbc(u8 k) 362static noinline_for_stack bool gm20b_kind_zbc(u8 k)
65{ 363{
66 return (k >= gmmu_pte_kind_s8_v() && 364 return /* From gm20b */
67 k <= gmmu_pte_kind_s8_2s_v()); 365 (k >= gmmu_pte_kind_s8_v() &&
366 k <= gmmu_pte_kind_s8_2s_v())
367 /* From gk20a */
368 || (k >= gmmu_pte_kind_z16_2c_v() &&
369 k <= gmmu_pte_kind_z16_ms16_2c_v())
370 || (k >= gmmu_pte_kind_z16_4cz_v() &&
371 k <= gmmu_pte_kind_z16_ms16_4cz_v())
372 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
373 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
374 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
375 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
376 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
377 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
378 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
379 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
380 || (k >= gmmu_pte_kind_z24s8_2cs_v() &&
381 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
382 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
383 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
384 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
385 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
386 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
387 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
388 || (k >= gmmu_pte_kind_zf32_2cs_v() &&
389 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
390 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
391 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
392 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
393 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
394 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
395 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
396 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
397 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
398 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
399 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
400 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
401 k <= gmmu_pte_kind_c32_2cra_v())
402 || (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
403 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
404 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
405 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
406 k <= gmmu_pte_kind_c32_ms4_2cra_v())
407 || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
408 k <= gmmu_pte_kind_c64_2cra_v())
409 || (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
410 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
411 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
412 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
413 k <= gmmu_pte_kind_c64_ms4_2cra_v())
414 || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
415 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
68} 416}
69 417
70void gm20b_init_kind_attr(void) 418void gm20b_init_kind_attr(void)
71{ 419{
72 u16 k; 420 u16 k;
73 421
74 gk20a_init_kind_attr(); 422 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
75 423 gk20a_kind_attr[k] = 0;
76 for (k = 0; k < 256; k++) {
77 if (gm20b_kind_supported((u8)k)) 424 if (gm20b_kind_supported((u8)k))
78 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; 425 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
79 if (gm20b_kind_compressible((u8)k)) 426 if (gm20b_kind_compressible((u8)k))
80 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; 427 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
81 if (gm20b_kind_z((u8)k)) 428 if (gm20b_kind_z((u8)k))
82 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; 429 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
430 if (gm20b_kind_c((u8)k))
431 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
83 if (gm20b_kind_zbc((u8)k)) 432 if (gm20b_kind_zbc((u8)k))
84 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; 433 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
85 } 434 }
diff --git a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
index 06cd94f2..8ba9ff8e 100644
--- a/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/fb_gp10b.c
@@ -20,8 +20,14 @@
20 20
21#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h> 21#include <nvgpu/hw/gp10b/hw_gmmu_gp10b.h>
22 22
23static void gp10b_init_uncompressed_kind_map(void) 23static noinline_for_stack void gp10b_init_uncompressed_kind_map(void)
24{ 24{
25 int i;
26
27 for (i = 0; i < 256; i++)
28 gk20a_uc_kind_map[i] = gmmu_pte_kind_invalid_v();
29
30 /* From gp10b */
25 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] = 31 gk20a_uc_kind_map[gmmu_pte_kind_z16_2cz_v()] =
26 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] = 32 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2cz_v()] =
27 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] = 33 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2cz_v()] =
@@ -32,55 +38,419 @@ static void gp10b_init_uncompressed_kind_map(void)
32 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] = 38 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_4cbra_v()] =
33 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] = 39 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_4cbra_v()] =
34 gmmu_pte_kind_generic_16bx2_v(); 40 gmmu_pte_kind_generic_16bx2_v();
41
42 /* From gm20b */
43 gk20a_uc_kind_map[gmmu_pte_kind_s8_v()] =
44 gk20a_uc_kind_map[gmmu_pte_kind_s8_2s_v()] =
45 gmmu_pte_kind_s8_v();
46
47 /* From gk20a */
48 gk20a_uc_kind_map[gmmu_pte_kind_z16_v()] =
49 gk20a_uc_kind_map[gmmu_pte_kind_z16_2c_v()] =
50 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2c_v()] =
51 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2c_v()] =
52 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2c_v()] =
53 gk20a_uc_kind_map[gmmu_pte_kind_z16_2z_v()] =
54 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms2_2z_v()] =
55 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms4_2z_v()] =
56 gk20a_uc_kind_map[gmmu_pte_kind_z16_ms8_2z_v()] =
57 gmmu_pte_kind_z16_v();
58
59 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_v()] =
60 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cz_v()] =
61 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cz_v()] =
62 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cz_v()] =
63 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cz_v()] =
64 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_2cs_v()] =
65 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms2_2cs_v()] =
66 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms4_2cs_v()] =
67 gk20a_uc_kind_map[gmmu_pte_kind_s8z24_ms8_2cs_v()] =
68 gmmu_pte_kind_s8z24_v();
69
70 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_v()] =
71 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2cs_v()] =
72 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2czv_v()] =
73 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc4_2zv_v()] =
74 gmmu_pte_kind_v8z24_ms4_vc4_v();
75
76 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_v()] =
77 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2cs_v()] =
78 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2czv_v()] =
79 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc8_2zv_v()] =
80 gmmu_pte_kind_v8z24_ms8_vc8_v();
81
82 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_v()] =
83 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2cs_v()] =
84 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2czv_v()] =
85 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms4_vc12_2zv_v()] =
86 gmmu_pte_kind_v8z24_ms4_vc12_v();
87
88 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_v()] =
89 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2cs_v()] =
90 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2czv_v()] =
91 gk20a_uc_kind_map[gmmu_pte_kind_v8z24_ms8_vc24_2zv_v()] =
92 gmmu_pte_kind_v8z24_ms8_vc24_v();
93
94 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_v()] =
95 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cs_v()] =
96 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cs_v()] =
97 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cs_v()] =
98 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cs_v()] =
99 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_2cz_v()] =
100 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms2_2cz_v()] =
101 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms4_2cz_v()] =
102 gk20a_uc_kind_map[gmmu_pte_kind_z24s8_ms8_2cz_v()] =
103 gmmu_pte_kind_z24s8_v();
104
105 gk20a_uc_kind_map[gmmu_pte_kind_zf32_v()] =
106 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cs_v()] =
107 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cs_v()] =
108 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cs_v()] =
109 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cs_v()] =
110 gk20a_uc_kind_map[gmmu_pte_kind_zf32_2cz_v()] =
111 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms2_2cz_v()] =
112 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms4_2cz_v()] =
113 gk20a_uc_kind_map[gmmu_pte_kind_zf32_ms8_2cz_v()] =
114 gmmu_pte_kind_zf32_v();
115
116 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v()] =
117 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cs_v()] =
118 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v()] =
119 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v();
120
121 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v()] =
122 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cs_v()] =
123 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_2cszv_v()] =
124 gmmu_pte_kind_x8z24_x16v8s8_ms4_vc4_v();
125
126 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v()] =
127 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cs_v()] =
128 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_2cszv_v()] =
129 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc8_v();
130
131 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v()] =
132 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cs_v()] =
133 gk20a_uc_kind_map[gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v()] =
134 gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v();
135
136 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v()] =
137 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cs_v()] =
138 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v()] =
139 gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_v();
140
141 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v()] =
142 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cs_v()] =
143 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_2cszv_v()] =
144 gmmu_pte_kind_zf32_x16v8s8_ms4_vc4_v();
145
146 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v()] =
147 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cs_v()] =
148 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_2cszv_v()] =
149 gmmu_pte_kind_zf32_x16v8s8_ms8_vc8_v();
150
151 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v()] =
152 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cs_v()] =
153 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v()] =
154 gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v();
155
156 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_v()] =
157 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cszv_v()] =
158 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cszv_v()] =
159 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cszv_v()] =
160 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v()] =
161 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_2cs_v()] =
162 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms2_2cs_v()] =
163 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms4_2cs_v()] =
164 gk20a_uc_kind_map[gmmu_pte_kind_zf32_x24s8_ms8_2cs_v()] =
165 gmmu_pte_kind_zf32_x24s8_v();
166
167 gk20a_uc_kind_map[gmmu_pte_kind_c32_2c_v()] =
168 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cba_v()] =
169 gk20a_uc_kind_map[gmmu_pte_kind_c32_2cra_v()] =
170 gk20a_uc_kind_map[gmmu_pte_kind_c32_2bra_v()] =
171 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2c_v()] =
172 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms2_2cra_v()] =
173 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2c_v()] =
174 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cbr_v()] =
175 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cba_v()] =
176 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2cra_v()] =
177 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms4_2bra_v()] =
178 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2c_v()] =
179 gk20a_uc_kind_map[gmmu_pte_kind_c32_ms8_ms16_2cra_v()] =
180 gk20a_uc_kind_map[gmmu_pte_kind_c64_2c_v()] =
181 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cbr_v()] =
182 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cba_v()] =
183 gk20a_uc_kind_map[gmmu_pte_kind_c64_2cra_v()] =
184 gk20a_uc_kind_map[gmmu_pte_kind_c64_2bra_v()] =
185 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2c_v()] =
186 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms2_2cra_v()] =
187 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2c_v()] =
188 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cbr_v()] =
189 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cba_v()] =
190 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2cra_v()] =
191 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms4_2bra_v()] =
192 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2c_v()] =
193 gk20a_uc_kind_map[gmmu_pte_kind_c64_ms8_ms16_2cra_v()] =
194 gk20a_uc_kind_map[gmmu_pte_kind_c128_2c_v()] =
195 gk20a_uc_kind_map[gmmu_pte_kind_c128_2cr_v()] =
196 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2c_v()] =
197 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms2_2cr_v()] =
198 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2c_v()] =
199 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms4_2cr_v()] =
200 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2c_v()] =
201 gk20a_uc_kind_map[gmmu_pte_kind_c128_ms8_ms16_2cr_v()] =
202 gmmu_pte_kind_generic_16bx2_v();
203
204 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2czv_v()] =
205 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2cs_v()] =
206 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc4_2zv_v()] =
207 gmmu_pte_kind_z24v8_ms4_vc4_v();
208
209 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2czv_v()] =
210 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2cs_v()] =
211 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms4_vc12_2zv_v()] =
212 gmmu_pte_kind_z24v8_ms4_vc12_v();
213
214 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2cs_v()] =
215 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2czv_v()] =
216 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc8_2zv_v()] =
217 gmmu_pte_kind_z24v8_ms8_vc8_v();
218
219 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2cs_v()] =
220 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2czv_v()] =
221 gk20a_uc_kind_map[gmmu_pte_kind_z24v8_ms8_vc24_2zv_v()] =
222 gmmu_pte_kind_z24v8_ms8_vc24_v();
223
224 gk20a_uc_kind_map[gmmu_pte_kind_x8c24_v()] =
225 gmmu_pte_kind_x8c24_v();
35} 226}
36 227
37static bool gp10b_kind_supported(u8 k) 228static noinline_for_stack bool gp10b_kind_supported(u8 k)
38{ 229{
39 return (k >= gmmu_pte_kind_z16_2cz_v() && 230 return /* From gp10b */
40 k <= gmmu_pte_kind_z16_ms8_2cz_v()) 231 (k >= gmmu_pte_kind_z16_2cz_v() &&
232 k <= gmmu_pte_kind_z16_ms8_2cz_v())
41 || k == gmmu_pte_kind_z16_ms16_2cz_v() 233 || k == gmmu_pte_kind_z16_ms16_2cz_v()
42 || k == gmmu_pte_kind_c32_ms4_4cbra_v() 234 || k == gmmu_pte_kind_c32_ms4_4cbra_v()
43 || k == gmmu_pte_kind_c64_ms4_4cbra_v(); 235 || k == gmmu_pte_kind_c64_ms4_4cbra_v()
236 /* From gm20b */
237 || (k == gmmu_pte_kind_smsked_message_v())
238 || (k >= gmmu_pte_kind_s8_v() &&
239 k <= gmmu_pte_kind_s8_2s_v())
240 /* From gk20a */
241 || gk20a_kind_work_creation(k)
242 || (k == gmmu_pte_kind_invalid_v())
243 || (k == gmmu_pte_kind_pitch_v())
244 || (k >= gmmu_pte_kind_z16_v() &&
245 k <= gmmu_pte_kind_z16_ms8_2c_v())
246 || (k >= gmmu_pte_kind_z16_2z_v() &&
247 k <= gmmu_pte_kind_z16_ms8_2z_v())
248 || (k == gmmu_pte_kind_s8z24_v())
249 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
250 k <= gmmu_pte_kind_s8z24_ms8_2cz_v())
251 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_v() &&
252 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
253 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
254 k <= gmmu_pte_kind_v8z24_ms8_vc24_2zv_v())
255 || (k == gmmu_pte_kind_z24s8_v())
256 || (k >= gmmu_pte_kind_z24s8_2cz_v() &&
257 k <= gmmu_pte_kind_z24s8_ms8_2cz_v())
258 || (k == gmmu_pte_kind_zf32_v())
259 || (k >= gmmu_pte_kind_zf32_2cz_v() &&
260 k <= gmmu_pte_kind_zf32_ms8_2cz_v())
261 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_v() &&
262 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_v())
263 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_2cszv_v() &&
264 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_v())
265 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_2cszv_v() &&
266 k <= gmmu_pte_kind_zf32_x24s8_v())
267 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
268 k <= gmmu_pte_kind_zf32_x24s8_ms8_2cszv_v())
269 || (k == gmmu_pte_kind_generic_16bx2_v())
270 || (k == gmmu_pte_kind_c32_2c_v())
271 || (k == gmmu_pte_kind_c32_2cra_v())
272 || (k == gmmu_pte_kind_c32_ms2_2c_v())
273 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
274 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
275 k <= gmmu_pte_kind_c32_ms4_2cbr_v())
276 || (k >= gmmu_pte_kind_c32_ms4_2cra_v() &&
277 k <= gmmu_pte_kind_c64_2c_v())
278 || (k == gmmu_pte_kind_c64_2cra_v())
279 || (k == gmmu_pte_kind_c64_ms2_2c_v())
280 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
281 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
282 k <= gmmu_pte_kind_c64_ms4_2cbr_v())
283 || (k >= gmmu_pte_kind_c64_ms4_2cra_v() &&
284 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v())
285 || (k == gmmu_pte_kind_pitch_no_swizzle_v());
286}
287
288static noinline_for_stack bool gp10b_kind_z(u8 k)
289{
290 return /* From gp10b */
291 (k >= gmmu_pte_kind_z16_2cz_v() &&
292 k <= gmmu_pte_kind_z16_ms8_2cz_v())
293 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
294 /* From gm20b */
295 || (k >= gmmu_pte_kind_s8_v() &&
296 k <= gmmu_pte_kind_s8_2s_v())
297 /* From gk20a */
298 || (k >= gmmu_pte_kind_z16_v() &&
299 k <= gmmu_pte_kind_v8z24_ms8_vc24_v())
300 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
301 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
302 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
303 k <= gmmu_pte_kind_z24v8_ms8_vc24_v())
304 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
305 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
306 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
307 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
308 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
309 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
310 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
311 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v());
44} 312}
45 313
46static bool gp10b_kind_z(u8 k) 314static noinline_for_stack bool gp10b_kind_c(u8 k)
47{ 315{
48 return (k >= gmmu_pte_kind_z16_2cz_v() && 316 return gk20a_kind_work_creation(k)
49 k <= gmmu_pte_kind_z16_ms8_2cz_v()) || 317 || (k == gmmu_pte_kind_pitch_v())
50 k == gmmu_pte_kind_z16_ms16_2cz_v(); 318 || (k == gmmu_pte_kind_generic_16bx2_v())
319 || (k >= gmmu_pte_kind_c32_2c_v() &&
320 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
321 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
322 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
323 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
324 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
325 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
326 k <= gmmu_pte_kind_pitch_no_swizzle_v());
51} 327}
52 328
53static bool gp10b_kind_compressible(u8 k) 329static noinline_for_stack bool gp10b_kind_compressible(u8 k)
54{ 330{
55 return (k >= gmmu_pte_kind_z16_2cz_v() && 331 return /* From gp10b */
56 k <= gmmu_pte_kind_z16_ms8_2cz_v()) || 332 (k >= gmmu_pte_kind_z16_2cz_v() &&
57 k == gmmu_pte_kind_z16_ms16_2cz_v() || 333 k <= gmmu_pte_kind_z16_ms8_2cz_v())
58 (k >= gmmu_pte_kind_z16_4cz_v() && 334 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
59 k <= gmmu_pte_kind_z16_ms16_4cz_v()) || 335 || (k >= gmmu_pte_kind_z16_4cz_v() &&
60 k == gmmu_pte_kind_c32_ms4_4cbra_v() || 336 k <= gmmu_pte_kind_z16_ms16_4cz_v())
61 k == gmmu_pte_kind_c64_ms4_4cbra_v(); 337 || (k == gmmu_pte_kind_c32_ms4_4cbra_v())
338 || (k == gmmu_pte_kind_c64_ms4_4cbra_v())
339 /* From gm20b */
340 || (k >= gmmu_pte_kind_s8_v() &&
341 k <= gmmu_pte_kind_s8_2s_v())
342 /* From gk20a */
343 || (k >= gmmu_pte_kind_z16_2c_v() &&
344 k <= gmmu_pte_kind_z16_ms16_4cz_v())
345 || (k >= gmmu_pte_kind_s8z24_1z_v() &&
346 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
347 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_1zv_v() &&
348 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
349 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
350 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
351 || (k >= gmmu_pte_kind_z24s8_1z_v() &&
352 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
353 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_1zv_v() &&
354 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
355 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
356 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
357 || (k >= gmmu_pte_kind_zf32_1z_v() &&
358 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
359 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
360 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
361 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1zv_v() &&
362 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
363 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
364 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
365 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1zv_v() &&
366 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
367 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
368 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
369 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
370 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
371 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
372 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
373 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
374 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
375 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
376 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
62} 377}
63 378
64static bool gp10b_kind_zbc(u8 k) 379static noinline_for_stack bool gp10b_kind_zbc(u8 k)
65{ 380{
66 return (k >= gmmu_pte_kind_z16_2cz_v() && 381 return /* From gp10b */
67 k <= gmmu_pte_kind_z16_ms8_2cz_v()) || 382 (k >= gmmu_pte_kind_z16_2cz_v() &&
68 k == gmmu_pte_kind_z16_ms16_2cz_v() || 383 k <= gmmu_pte_kind_z16_ms8_2cz_v())
69 k == gmmu_pte_kind_c32_ms4_4cbra_v() || 384 || (k == gmmu_pte_kind_z16_ms16_2cz_v())
70 k == gmmu_pte_kind_c64_ms4_4cbra_v(); 385 || (k == gmmu_pte_kind_c32_ms4_4cbra_v())
386 || (k == gmmu_pte_kind_c64_ms4_4cbra_v())
387 /* From gm20b */
388 || (k >= gmmu_pte_kind_s8_v() &&
389 k <= gmmu_pte_kind_s8_2s_v())
390 /* From gk20a */
391 || (k >= gmmu_pte_kind_z16_2c_v() &&
392 k <= gmmu_pte_kind_z16_ms16_2c_v())
393 || (k >= gmmu_pte_kind_z16_4cz_v() &&
394 k <= gmmu_pte_kind_z16_ms16_4cz_v())
395 || (k >= gmmu_pte_kind_s8z24_2cz_v() &&
396 k <= gmmu_pte_kind_s8z24_ms16_4cszv_v())
397 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2cs_v() &&
398 k <= gmmu_pte_kind_v8z24_ms8_vc24_2cs_v())
399 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_2czv_v() &&
400 k <= gmmu_pte_kind_v8z24_ms8_vc24_2czv_v())
401 || (k >= gmmu_pte_kind_v8z24_ms4_vc12_4cszv_v() &&
402 k <= gmmu_pte_kind_v8z24_ms8_vc24_4cszv_v())
403 || (k >= gmmu_pte_kind_z24s8_2cs_v() &&
404 k <= gmmu_pte_kind_z24s8_ms16_4cszv_v())
405 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2cs_v() &&
406 k <= gmmu_pte_kind_z24v8_ms8_vc24_2cs_v())
407 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_2czv_v() &&
408 k <= gmmu_pte_kind_z24v8_ms8_vc24_2czv_v())
409 || (k >= gmmu_pte_kind_z24v8_ms4_vc12_4cszv_v() &&
410 k <= gmmu_pte_kind_z24v8_ms8_vc24_4cszv_v())
411 || (k >= gmmu_pte_kind_zf32_2cs_v() &&
412 k <= gmmu_pte_kind_zf32_ms16_2cz_v())
413 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1cs_v() &&
414 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_1cs_v())
415 || (k >= gmmu_pte_kind_x8z24_x16v8s8_ms4_vc12_1czv_v() &&
416 k <= gmmu_pte_kind_x8z24_x16v8s8_ms8_vc24_2cszv_v())
417 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1cs_v() &&
418 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_1cs_v())
419 || (k >= gmmu_pte_kind_zf32_x16v8s8_ms4_vc12_1czv_v() &&
420 k <= gmmu_pte_kind_zf32_x16v8s8_ms8_vc24_2cszv_v())
421 || (k >= gmmu_pte_kind_zf32_x24s8_1cs_v() &&
422 k <= gmmu_pte_kind_zf32_x24s8_ms16_1cs_v())
423 || (k >= gmmu_pte_kind_zf32_x24s8_2cszv_v() &&
424 k <= gmmu_pte_kind_c32_2cra_v())
425 || (k >= gmmu_pte_kind_c32_ms2_2c_v() &&
426 k <= gmmu_pte_kind_c32_ms2_2cbr_v())
427 || (k == gmmu_pte_kind_c32_ms2_2cra_v())
428 || (k >= gmmu_pte_kind_c32_ms4_2c_v() &&
429 k <= gmmu_pte_kind_c32_ms4_2cra_v())
430 || (k >= gmmu_pte_kind_c32_ms8_ms16_2c_v() &&
431 k <= gmmu_pte_kind_c64_2cra_v())
432 || (k >= gmmu_pte_kind_c64_ms2_2c_v() &&
433 k <= gmmu_pte_kind_c64_ms2_2cbr_v())
434 || (k == gmmu_pte_kind_c64_ms2_2cra_v())
435 || (k >= gmmu_pte_kind_c64_ms4_2c_v() &&
436 k <= gmmu_pte_kind_c64_ms4_2cra_v())
437 || (k >= gmmu_pte_kind_c64_ms8_ms16_2c_v() &&
438 k <= gmmu_pte_kind_c128_ms8_ms16_2cr_v());
71} 439}
72 440
73static void gp10b_init_kind_attr(void) 441static void gp10b_init_kind_attr(void)
74{ 442{
75 u16 k; 443 u16 k;
76 444
77 for (k = 0; k < 256; k++) { 445 for (k = 0; k < NV_KIND_ATTR_SIZE; k++) {
78 if (gp10b_kind_supported((u8)k)) 446 if (gp10b_kind_supported((u8)k))
79 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED; 447 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_SUPPORTED;
80 if (gp10b_kind_compressible((u8)k)) 448 if (gp10b_kind_compressible((u8)k))
81 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE; 449 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_COMPRESSIBLE;
82 if (gp10b_kind_z((u8)k)) 450 if (gp10b_kind_z((u8)k))
83 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z; 451 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_Z;
452 if (gp10b_kind_c((u8)k))
453 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_C;
84 if (gp10b_kind_zbc((u8)k)) 454 if (gp10b_kind_zbc((u8)k))
85 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC; 455 gk20a_kind_attr[k] |= GK20A_KIND_ATTR_ZBC;
86 } 456 }