* [android-common:android16-6.12-2025-07 0/4] drivers/gpu/drm/xe/xe_migrate.c:304:52: error: result of comparison of constant 274877906944 with expression of type 'resource_size_t' (aka 'unsigned int') is always true
@ 2026-04-22 21:11 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-04-22 21:11 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
Hi Akshata,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common android16-6.12-2025-07
head: b25633aa2fb784af88c301cb4c87a63d86ab175c
commit: 8d79acd567db183e675cccc6cc737d2959e2a2d9 [0/4] drm/xe/migrate: Add helper function to program identity map
config: i386-randconfig-004-20260423 (https://download.01.org/0day-ci/archive/20260423/202604230510.je1OwZVi-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260423/202604230510.je1OwZVi-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 8d79acd567db ("drm/xe/migrate: Add helper function to program identity map")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604230510.je1OwZVi-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/xe/xe_migrate.c:12:
In file included from include/drm/ttm/ttm_tt.h:30:
In file included from include/linux/pagemap.h:8:
In file included from include/linux/mm.h:2253:
include/linux/vmstat.h:514:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
>> drivers/gpu/drm/xe/xe_migrate.c:304:52: error: result of comparison of constant 274877906944 with expression of type 'resource_size_t' (aka 'unsigned int') is always true [-Werror,-Wtautological-constant-out-of-range-compare]
304 | xe_assert(xe, (xe->mem.vram.actual_physical_size <= SZ_256G));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
drivers/gpu/drm/xe/xe_assert.h:108:54: note: expanded from macro 'xe_assert'
108 | #define xe_assert(xe, condition) xe_assert_msg((xe), condition, "")
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
drivers/gpu/drm/xe/xe_assert.h:111:24: note: expanded from macro 'xe_assert_msg'
111 | __xe_assert_msg(__xe, condition, \
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112 | "platform: %s subplatform: %d\n" \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113 | "graphics: %s %u.%02u step %s\n" \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
114 | "media: %s %u.%02u step %s\n" \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115 | msg, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116 | __xe->info.platform_name, __xe->info.subplatform, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
117 | __xe->info.graphics_name, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
118 | __xe->info.graphics_verx100 / 100, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
119 | __xe->info.graphics_verx100 % 100, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120 | xe_step_name(__xe->info.step.graphics), \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
121 | __xe->info.media_name, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122 | __xe->info.media_verx100 / 100, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123 | __xe->info.media_verx100 % 100, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124 | xe_step_name(__xe->info.step.media), \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125 | ## arg); \
| ~~~~~~~
drivers/gpu/drm/xe/xe_assert.h:84:31: note: expanded from macro '__xe_assert_msg'
84 | (void)drm_WARN(&(xe)->drm, !(condition), "[" DRM_NAME "] Assertion `%s` failed!\n" msg, \
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85 | __stringify(condition), ## arg); \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/drm/drm_print.h:635:7: note: expanded from macro 'drm_WARN'
635 | WARN(condition, "%s %s: [drm] " format, \
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
636 | dev_driver_string((drm)->dev), \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
637 | dev_name((drm)->dev), ## arg)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/bug.h:132:25: note: expanded from macro 'WARN'
132 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
2 errors generated.
vim +304 drivers/gpu/drm/xe/xe_migrate.c
177
178 static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
179 struct xe_vm *vm)
180 {
181 struct xe_device *xe = tile_to_xe(tile);
182 u16 pat_index = xe->pat.idx[XE_CACHE_WB];
183 u8 id = tile->id;
184 u32 num_entries = NUM_PT_SLOTS, num_level = vm->pt_root[id]->level,
185 num_setup = num_level + 1;
186 u32 map_ofs, level, i;
187 struct xe_bo *bo, *batch = tile->mem.kernel_bb_pool->bo;
188 u64 entry, pt30_ofs;
189
190 /* Can't bump NUM_PT_SLOTS too high */
191 BUILD_BUG_ON(NUM_PT_SLOTS > SZ_2M/XE_PAGE_SIZE);
192 /* Must be a multiple of 64K to support all platforms */
193 BUILD_BUG_ON(NUM_PT_SLOTS * XE_PAGE_SIZE % SZ_64K);
194 /* And one slot reserved for the 4KiB page table updates */
195 BUILD_BUG_ON(!(NUM_KERNEL_PDE & 1));
196
197 /* Need to be sure everything fits in the first PT, or create more */
198 xe_tile_assert(tile, m->batch_base_ofs + batch->size < SZ_2M);
199
200 bo = xe_bo_create_pin_map(vm->xe, tile, vm,
201 num_entries * XE_PAGE_SIZE,
202 ttm_bo_type_kernel,
203 XE_BO_FLAG_VRAM_IF_DGFX(tile) |
204 XE_BO_FLAG_PINNED);
205 if (IS_ERR(bo))
206 return PTR_ERR(bo);
207
208 /* PT31 reserved for 2M identity map */
209 pt30_ofs = bo->size - 2 * XE_PAGE_SIZE;
210 entry = vm->pt_ops->pde_encode_bo(bo, pt30_ofs, pat_index);
211 xe_pt_write(xe, &vm->pt_root[id]->bo->vmap, 0, entry);
212
213 map_ofs = (num_entries - num_setup) * XE_PAGE_SIZE;
214
215 /* Map the entire BO in our level 0 pt */
216 for (i = 0, level = 0; i < num_entries; level++) {
217 entry = vm->pt_ops->pte_encode_bo(bo, i * XE_PAGE_SIZE,
218 pat_index, 0);
219
220 xe_map_wr(xe, &bo->vmap, map_ofs + level * 8, u64, entry);
221
222 if (vm->flags & XE_VM_FLAG_64K)
223 i += 16;
224 else
225 i += 1;
226 }
227
228 if (!IS_DGFX(xe)) {
229 /* Write out batch too */
230 m->batch_base_ofs = NUM_PT_SLOTS * XE_PAGE_SIZE;
231 for (i = 0; i < batch->size;
232 i += vm->flags & XE_VM_FLAG_64K ? XE_64K_PAGE_SIZE :
233 XE_PAGE_SIZE) {
234 entry = vm->pt_ops->pte_encode_bo(batch, i,
235 pat_index, 0);
236
237 xe_map_wr(xe, &bo->vmap, map_ofs + level * 8, u64,
238 entry);
239 level++;
240 }
241 if (xe->info.has_usm) {
242 xe_tile_assert(tile, batch->size == SZ_1M);
243
244 batch = tile->primary_gt->usm.bb_pool->bo;
245 m->usm_batch_base_ofs = m->batch_base_ofs + SZ_1M;
246 xe_tile_assert(tile, batch->size == SZ_512K);
247
248 for (i = 0; i < batch->size;
249 i += vm->flags & XE_VM_FLAG_64K ? XE_64K_PAGE_SIZE :
250 XE_PAGE_SIZE) {
251 entry = vm->pt_ops->pte_encode_bo(batch, i,
252 pat_index, 0);
253
254 xe_map_wr(xe, &bo->vmap, map_ofs + level * 8, u64,
255 entry);
256 level++;
257 }
258 }
259 } else {
260 u64 batch_addr = xe_bo_addr(batch, 0, XE_PAGE_SIZE);
261
262 m->batch_base_ofs = xe_migrate_vram_ofs(xe, batch_addr);
263
264 if (xe->info.has_usm) {
265 batch = tile->primary_gt->usm.bb_pool->bo;
266 batch_addr = xe_bo_addr(batch, 0, XE_PAGE_SIZE);
267 m->usm_batch_base_ofs = xe_migrate_vram_ofs(xe, batch_addr);
268 }
269 }
270
271 for (level = 1; level < num_level; level++) {
272 u32 flags = 0;
273
274 if (vm->flags & XE_VM_FLAG_64K && level == 1)
275 flags = XE_PDE_64K;
276
277 entry = vm->pt_ops->pde_encode_bo(bo, map_ofs + (u64)(level - 1) *
278 XE_PAGE_SIZE, pat_index);
279 xe_map_wr(xe, &bo->vmap, map_ofs + XE_PAGE_SIZE * level, u64,
280 entry | flags);
281 }
282
283 /* Write PDE's that point to our BO. */
284 for (i = 0; i < map_ofs / PAGE_SIZE; i++) {
285 entry = vm->pt_ops->pde_encode_bo(bo, (u64)i * XE_PAGE_SIZE,
286 pat_index);
287
288 xe_map_wr(xe, &bo->vmap, map_ofs + XE_PAGE_SIZE +
289 (i + 1) * 8, u64, entry);
290 }
291
292 /* Set up a 1GiB NULL mapping at 255GiB offset. */
293 level = 2;
294 xe_map_wr(xe, &bo->vmap, map_ofs + XE_PAGE_SIZE * level + 255 * 8, u64,
295 vm->pt_ops->pte_encode_addr(xe, 0, pat_index, level, IS_DGFX(xe), 0)
296 | XE_PTE_NULL);
297 m->cleared_mem_ofs = (255ULL << xe_pt_shift(level));
298
299 /* Identity map the entire vram at 256GiB offset */
300 if (IS_DGFX(xe)) {
301 u64 pt31_ofs = bo->size - XE_PAGE_SIZE;
302
303 xe_migrate_program_identity(xe, vm, bo, map_ofs, 256, pat_index, pt31_ofs);
> 304 xe_assert(xe, (xe->mem.vram.actual_physical_size <= SZ_256G));
305 }
306
307 /*
308 * Example layout created above, with root level = 3:
309 * [PT0...PT7]: kernel PT's for copy/clear; 64 or 4KiB PTE's
310 * [PT8]: Kernel PT for VM_BIND, 4 KiB PTE's
311 * [PT9...PT27]: Userspace PT's for VM_BIND, 4 KiB PTE's
312 * [PT28 = PDE 0] [PT29 = PDE 1] [PT30 = PDE 2] [PT31 = 2M vram identity map]
313 *
314 * This makes the lowest part of the VM point to the pagetables.
315 * Hence the lowest 2M in the vm should point to itself, with a few writes
316 * and flushes, other parts of the VM can be used either for copying and
317 * clearing.
318 *
319 * For performance, the kernel reserves PDE's, so about 20 are left
320 * for async VM updates.
321 *
322 * To make it easier to work, each scratch PT is put in slot (1 + PT #)
323 * everywhere, this allows lockless updates to scratch pages by using
324 * the different addresses in VM.
325 */
326 #define NUM_VMUSA_UNIT_PER_PAGE 32
327 #define VM_SA_UPDATE_UNIT_SIZE (XE_PAGE_SIZE / NUM_VMUSA_UNIT_PER_PAGE)
328 #define NUM_VMUSA_WRITES_PER_UNIT (VM_SA_UPDATE_UNIT_SIZE / sizeof(u64))
329 drm_suballoc_manager_init(&m->vm_update_sa,
330 (size_t)(map_ofs / XE_PAGE_SIZE - NUM_KERNEL_PDE) *
331 NUM_VMUSA_UNIT_PER_PAGE, 0);
332
333 m->pt_bo = bo;
334 return 0;
335 }
336
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-04-22 21:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-22 21:11 [android-common:android16-6.12-2025-07 0/4] drivers/gpu/drm/xe/xe_migrate.c:304:52: error: result of comparison of constant 274877906944 with expression of type 'resource_size_t' (aka 'unsigned int') is always true kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.