summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 }