Lines Matching +full:system +full:- +full:ctl

1 // SPDX-License-Identifier: GPL-2.0-or-later
19 intlv_bit_pos = ctx->map.intlv_bit_pos; in df2_dehash_addr()
20 intlv_bit = !!(BIT_ULL(intlv_bit_pos) & ctx->ret_addr); in df2_dehash_addr()
23 hashed_bit ^= FIELD_GET(BIT_ULL(12), ctx->ret_addr); in df2_dehash_addr()
24 hashed_bit ^= FIELD_GET(BIT_ULL(18), ctx->ret_addr); in df2_dehash_addr()
25 hashed_bit ^= FIELD_GET(BIT_ULL(21), ctx->ret_addr); in df2_dehash_addr()
26 hashed_bit ^= FIELD_GET(BIT_ULL(30), ctx->ret_addr); in df2_dehash_addr()
29 ctx->ret_addr ^= BIT_ULL(intlv_bit_pos); in df2_dehash_addr()
39 hash_ctl_64k = FIELD_GET(DF3_HASH_CTL_64K, ctx->map.ctl); in df3_dehash_addr()
40 hash_ctl_2M = FIELD_GET(DF3_HASH_CTL_2M, ctx->map.ctl); in df3_dehash_addr()
41 hash_ctl_1G = FIELD_GET(DF3_HASH_CTL_1G, ctx->map.ctl); in df3_dehash_addr()
43 intlv_bit_pos = ctx->map.intlv_bit_pos; in df3_dehash_addr()
44 intlv_bit = !!(BIT_ULL(intlv_bit_pos) & ctx->ret_addr); in df3_dehash_addr()
47 hashed_bit ^= FIELD_GET(BIT_ULL(14), ctx->ret_addr); in df3_dehash_addr()
48 hashed_bit ^= FIELD_GET(BIT_ULL(18), ctx->ret_addr) & hash_ctl_64k; in df3_dehash_addr()
49 hashed_bit ^= FIELD_GET(BIT_ULL(23), ctx->ret_addr) & hash_ctl_2M; in df3_dehash_addr()
50 hashed_bit ^= FIELD_GET(BIT_ULL(32), ctx->ret_addr) & hash_ctl_1G; in df3_dehash_addr()
53 ctx->ret_addr ^= BIT_ULL(intlv_bit_pos); in df3_dehash_addr()
56 if (ctx->map.intlv_mode == DF3_COD4_2CHAN_HASH) in df3_dehash_addr()
59 intlv_bit = FIELD_GET(BIT_ULL(12), ctx->ret_addr); in df3_dehash_addr()
62 hashed_bit ^= FIELD_GET(BIT_ULL(16), ctx->ret_addr) & hash_ctl_64k; in df3_dehash_addr()
63 hashed_bit ^= FIELD_GET(BIT_ULL(21), ctx->ret_addr) & hash_ctl_2M; in df3_dehash_addr()
64 hashed_bit ^= FIELD_GET(BIT_ULL(30), ctx->ret_addr) & hash_ctl_1G; in df3_dehash_addr()
67 ctx->ret_addr ^= BIT_ULL(12); in df3_dehash_addr()
70 if (ctx->map.intlv_mode == DF3_COD2_4CHAN_HASH) in df3_dehash_addr()
73 intlv_bit = FIELD_GET(BIT_ULL(13), ctx->ret_addr); in df3_dehash_addr()
76 hashed_bit ^= FIELD_GET(BIT_ULL(17), ctx->ret_addr) & hash_ctl_64k; in df3_dehash_addr()
77 hashed_bit ^= FIELD_GET(BIT_ULL(22), ctx->ret_addr) & hash_ctl_2M; in df3_dehash_addr()
78 hashed_bit ^= FIELD_GET(BIT_ULL(31), ctx->ret_addr) & hash_ctl_1G; in df3_dehash_addr()
81 ctx->ret_addr ^= BIT_ULL(13); in df3_dehash_addr()
88 u8 intlv_bit_pos = ctx->map.intlv_bit_pos; in df3_6chan_dehash_addr()
92 if (ctx->map.intlv_mode != DF3_6CHAN) { in df3_6chan_dehash_addr()
94 return -EINVAL; in df3_6chan_dehash_addr()
97 num_intlv_bits = ilog2(ctx->map.num_intlv_chan) + 1; in df3_6chan_dehash_addr()
99 hash_ctl_2M = FIELD_GET(DF3_HASH_CTL_2M, ctx->map.ctl); in df3_6chan_dehash_addr()
100 hash_ctl_1G = FIELD_GET(DF3_HASH_CTL_1G, ctx->map.ctl); in df3_6chan_dehash_addr()
102 intlv_bit = !!(BIT_ULL(intlv_bit_pos) & ctx->ret_addr); in df3_6chan_dehash_addr()
105 hashed_bit ^= !!(BIT_ULL(intlv_bit_pos + num_intlv_bits) & ctx->ret_addr); in df3_6chan_dehash_addr()
106 hashed_bit ^= FIELD_GET(BIT_ULL(23), ctx->ret_addr) & hash_ctl_2M; in df3_6chan_dehash_addr()
107 hashed_bit ^= FIELD_GET(BIT_ULL(32), ctx->ret_addr) & hash_ctl_1G; in df3_6chan_dehash_addr()
110 ctx->ret_addr ^= BIT_ULL(intlv_bit_pos); in df3_6chan_dehash_addr()
113 intlv_bit = !!(BIT_ULL(intlv_bit_pos) & ctx->ret_addr); in df3_6chan_dehash_addr()
116 hashed_bit ^= FIELD_GET(BIT_ULL(21), ctx->ret_addr) & hash_ctl_2M; in df3_6chan_dehash_addr()
117 hashed_bit ^= FIELD_GET(BIT_ULL(30), ctx->ret_addr) & hash_ctl_1G; in df3_6chan_dehash_addr()
120 ctx->ret_addr ^= BIT_ULL(intlv_bit_pos); in df3_6chan_dehash_addr()
123 intlv_bit = !!(BIT_ULL(intlv_bit_pos) & ctx->ret_addr); in df3_6chan_dehash_addr()
126 hashed_bit ^= FIELD_GET(BIT_ULL(22), ctx->ret_addr) & hash_ctl_2M; in df3_6chan_dehash_addr()
127 hashed_bit ^= FIELD_GET(BIT_ULL(31), ctx->ret_addr) & hash_ctl_1G; in df3_6chan_dehash_addr()
130 ctx->ret_addr ^= BIT_ULL(intlv_bit_pos); in df3_6chan_dehash_addr()
140 hash_ctl_64k = FIELD_GET(DF4_HASH_CTL_64K, ctx->map.ctl); in df4_dehash_addr()
141 hash_ctl_2M = FIELD_GET(DF4_HASH_CTL_2M, ctx->map.ctl); in df4_dehash_addr()
142 hash_ctl_1G = FIELD_GET(DF4_HASH_CTL_1G, ctx->map.ctl); in df4_dehash_addr()
144 intlv_bit = FIELD_GET(BIT_ULL(8), ctx->ret_addr); in df4_dehash_addr()
147 hashed_bit ^= FIELD_GET(BIT_ULL(16), ctx->ret_addr) & hash_ctl_64k; in df4_dehash_addr()
148 hashed_bit ^= FIELD_GET(BIT_ULL(21), ctx->ret_addr) & hash_ctl_2M; in df4_dehash_addr()
149 hashed_bit ^= FIELD_GET(BIT_ULL(30), ctx->ret_addr) & hash_ctl_1G; in df4_dehash_addr()
151 if (ctx->map.num_intlv_sockets == 1) in df4_dehash_addr()
152 hashed_bit ^= FIELD_GET(BIT_ULL(14), ctx->ret_addr); in df4_dehash_addr()
155 ctx->ret_addr ^= BIT_ULL(8); in df4_dehash_addr()
159 * of channels in the system rather than DRAM map interleaving mode. in df4_dehash_addr()
163 if (ctx->map.total_intlv_chan <= 2) in df4_dehash_addr()
166 intlv_bit = FIELD_GET(BIT_ULL(12), ctx->ret_addr); in df4_dehash_addr()
169 hashed_bit ^= FIELD_GET(BIT_ULL(17), ctx->ret_addr) & hash_ctl_64k; in df4_dehash_addr()
170 hashed_bit ^= FIELD_GET(BIT_ULL(22), ctx->ret_addr) & hash_ctl_2M; in df4_dehash_addr()
171 hashed_bit ^= FIELD_GET(BIT_ULL(31), ctx->ret_addr) & hash_ctl_1G; in df4_dehash_addr()
174 ctx->ret_addr ^= BIT_ULL(12); in df4_dehash_addr()
177 if (ctx->map.total_intlv_chan <= 4) in df4_dehash_addr()
180 intlv_bit = FIELD_GET(BIT_ULL(13), ctx->ret_addr); in df4_dehash_addr()
183 hashed_bit ^= FIELD_GET(BIT_ULL(18), ctx->ret_addr) & hash_ctl_64k; in df4_dehash_addr()
184 hashed_bit ^= FIELD_GET(BIT_ULL(23), ctx->ret_addr) & hash_ctl_2M; in df4_dehash_addr()
185 hashed_bit ^= FIELD_GET(BIT_ULL(32), ctx->ret_addr) & hash_ctl_1G; in df4_dehash_addr()
188 ctx->ret_addr ^= BIT_ULL(13); in df4_dehash_addr()
191 if (ctx->map.total_intlv_chan <= 8) in df4_dehash_addr()
194 intlv_bit = FIELD_GET(BIT_ULL(14), ctx->ret_addr); in df4_dehash_addr()
197 hashed_bit ^= FIELD_GET(BIT_ULL(19), ctx->ret_addr) & hash_ctl_64k; in df4_dehash_addr()
198 hashed_bit ^= FIELD_GET(BIT_ULL(24), ctx->ret_addr) & hash_ctl_2M; in df4_dehash_addr()
199 hashed_bit ^= FIELD_GET(BIT_ULL(33), ctx->ret_addr) & hash_ctl_1G; in df4_dehash_addr()
202 ctx->ret_addr ^= BIT_ULL(14); in df4_dehash_addr()
213 hash_ctl_64k = FIELD_GET(DF4_HASH_CTL_64K, ctx->map.ctl); in df4p5_dehash_addr()
214 hash_ctl_2M = FIELD_GET(DF4_HASH_CTL_2M, ctx->map.ctl); in df4p5_dehash_addr()
215 hash_ctl_1G = FIELD_GET(DF4_HASH_CTL_1G, ctx->map.ctl); in df4p5_dehash_addr()
216 hash_ctl_1T = FIELD_GET(DF4p5_HASH_CTL_1T, ctx->map.ctl); in df4p5_dehash_addr()
228 rehash_vector = ctx->map.total_intlv_chan - 1; in df4p5_dehash_addr()
231 if (ctx->map.intlv_mode == DF4p5_NPS2_4CHAN_1K_HASH || in df4p5_dehash_addr()
232 ctx->map.intlv_mode == DF4p5_NPS1_8CHAN_1K_HASH || in df4p5_dehash_addr()
233 ctx->map.intlv_mode == DF4p5_NPS1_16CHAN_1K_HASH) in df4p5_dehash_addr()
239 intlv_bit = FIELD_GET(BIT_ULL(8), ctx->ret_addr); in df4p5_dehash_addr()
242 hashed_bit ^= FIELD_GET(BIT_ULL(16), ctx->ret_addr) & hash_ctl_64k; in df4p5_dehash_addr()
243 hashed_bit ^= FIELD_GET(BIT_ULL(21), ctx->ret_addr) & hash_ctl_2M; in df4p5_dehash_addr()
244 hashed_bit ^= FIELD_GET(BIT_ULL(30), ctx->ret_addr) & hash_ctl_1G; in df4p5_dehash_addr()
245 hashed_bit ^= FIELD_GET(BIT_ULL(40), ctx->ret_addr) & hash_ctl_1T; in df4p5_dehash_addr()
248 ctx->ret_addr ^= BIT_ULL(8); in df4p5_dehash_addr()
252 intlv_bit = FIELD_GET(BIT_ULL(9), ctx->ret_addr); in df4p5_dehash_addr()
255 hashed_bit ^= FIELD_GET(BIT_ULL(17), ctx->ret_addr) & hash_ctl_64k; in df4p5_dehash_addr()
256 hashed_bit ^= FIELD_GET(BIT_ULL(22), ctx->ret_addr) & hash_ctl_2M; in df4p5_dehash_addr()
257 hashed_bit ^= FIELD_GET(BIT_ULL(31), ctx->ret_addr) & hash_ctl_1G; in df4p5_dehash_addr()
258 hashed_bit ^= FIELD_GET(BIT_ULL(41), ctx->ret_addr) & hash_ctl_1T; in df4p5_dehash_addr()
261 ctx->ret_addr ^= BIT_ULL(9); in df4p5_dehash_addr()
265 intlv_bit = FIELD_GET(BIT_ULL(12), ctx->ret_addr); in df4p5_dehash_addr()
268 hashed_bit ^= FIELD_GET(BIT_ULL(18), ctx->ret_addr) & hash_ctl_64k; in df4p5_dehash_addr()
269 hashed_bit ^= FIELD_GET(BIT_ULL(23), ctx->ret_addr) & hash_ctl_2M; in df4p5_dehash_addr()
270 hashed_bit ^= FIELD_GET(BIT_ULL(32), ctx->ret_addr) & hash_ctl_1G; in df4p5_dehash_addr()
271 hashed_bit ^= FIELD_GET(BIT_ULL(42), ctx->ret_addr) & hash_ctl_1T; in df4p5_dehash_addr()
274 ctx->ret_addr ^= BIT_ULL(12); in df4p5_dehash_addr()
278 intlv_bit = FIELD_GET(BIT_ULL(13), ctx->ret_addr); in df4p5_dehash_addr()
281 hashed_bit ^= FIELD_GET(BIT_ULL(19), ctx->ret_addr) & hash_ctl_64k; in df4p5_dehash_addr()
282 hashed_bit ^= FIELD_GET(BIT_ULL(24), ctx->ret_addr) & hash_ctl_2M; in df4p5_dehash_addr()
283 hashed_bit ^= FIELD_GET(BIT_ULL(33), ctx->ret_addr) & hash_ctl_1G; in df4p5_dehash_addr()
284 hashed_bit ^= FIELD_GET(BIT_ULL(43), ctx->ret_addr) & hash_ctl_1T; in df4p5_dehash_addr()
287 ctx->ret_addr ^= BIT_ULL(13); in df4p5_dehash_addr()
291 intlv_bit = FIELD_GET(BIT_ULL(14), ctx->ret_addr); in df4p5_dehash_addr()
294 hashed_bit ^= FIELD_GET(BIT_ULL(20), ctx->ret_addr) & hash_ctl_64k; in df4p5_dehash_addr()
295 hashed_bit ^= FIELD_GET(BIT_ULL(25), ctx->ret_addr) & hash_ctl_2M; in df4p5_dehash_addr()
296 hashed_bit ^= FIELD_GET(BIT_ULL(34), ctx->ret_addr) & hash_ctl_1G; in df4p5_dehash_addr()
297 hashed_bit ^= FIELD_GET(BIT_ULL(44), ctx->ret_addr) & hash_ctl_1T; in df4p5_dehash_addr()
300 ctx->ret_addr ^= BIT_ULL(14); in df4p5_dehash_addr()
323 hash_ctl_4k = FIELD_GET(DF4p5_HASH_CTL_4K, ctx->map.ctl); in mi300_dehash_addr()
324 hash_ctl_64k = FIELD_GET(DF4_HASH_CTL_64K, ctx->map.ctl); in mi300_dehash_addr()
325 hash_ctl_2M = FIELD_GET(DF4_HASH_CTL_2M, ctx->map.ctl); in mi300_dehash_addr()
326 hash_ctl_1G = FIELD_GET(DF4_HASH_CTL_1G, ctx->map.ctl); in mi300_dehash_addr()
327 hash_ctl_1T = FIELD_GET(DF4p5_HASH_CTL_1T, ctx->map.ctl); in mi300_dehash_addr()
330 num_intlv_bits = ilog2(ctx->map.num_intlv_chan); in mi300_dehash_addr()
339 intlv_bit = BIT_ULL(base_bit) & ctx->ret_addr; in mi300_dehash_addr()
345 test_bit = BIT_ULL(12 + i) & ctx->ret_addr; in mi300_dehash_addr()
350 test_bit = BIT_ULL(15 + i) & ctx->ret_addr; in mi300_dehash_addr()
352 test_bit = BIT_ULL(22 + i) & ctx->ret_addr; in mi300_dehash_addr()
354 test_bit = BIT_ULL(29 + i) & ctx->ret_addr; in mi300_dehash_addr()
356 test_bit = BIT_ULL(36 + i) & ctx->ret_addr; in mi300_dehash_addr()
358 test_bit = BIT_ULL(43 + i) & ctx->ret_addr; in mi300_dehash_addr()
362 ctx->ret_addr ^= BIT_ULL(base_bit); in mi300_dehash_addr()
366 num_intlv_bits = ilog2(ctx->map.num_intlv_dies); in mi300_dehash_addr()
371 intlv_bit = BIT_ULL(base_bit) & ctx->ret_addr; in mi300_dehash_addr()
375 test_bit = BIT_ULL(20 + i) & ctx->ret_addr; in mi300_dehash_addr()
377 test_bit = BIT_ULL(27 + i) & ctx->ret_addr; in mi300_dehash_addr()
379 test_bit = BIT_ULL(34 + i) & ctx->ret_addr; in mi300_dehash_addr()
381 test_bit = BIT_ULL(41 + i) & ctx->ret_addr; in mi300_dehash_addr()
385 ctx->ret_addr ^= BIT_ULL(base_bit); in mi300_dehash_addr()
393 switch (ctx->map.intlv_mode) { in dehash_address()
455 return -EINVAL; in dehash_address()