* drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
@ 2024-01-30 13:46 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2024-01-30 13:46 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Matthew Brost <matthew.brost@intel.com>
CC: Rodrigo Vivi <rodrigo.vivi@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 861c0981648f5b64c86fd028ee622096eb7af05a
commit: dd08ebf6c3525a7ea2186e636df064ea47281987 drm/xe: Introduce a new DRM driver for Intel GPUs
date: 7 weeks ago
:::::: branch date: 11 hours ago
:::::: commit date: 7 weeks ago
config: sparc-randconfig-r081-20240128 (https://download.01.org/0day-ci/archive/20240130/202401302106.gPIPs6Ge-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
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
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202401302106.gPIPs6Ge-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/gpu/drm/xe/xe_migrate.c:646 xe_migrate_copy() error: uninitialized symbol 'ccs_ofs'.
drivers/gpu/drm/xe/tests/xe_migrate.c:254 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
vim +/PTR_ERR +224 drivers/gpu/drm/xe/tests/xe_migrate.c
dd08ebf6c3525a Matthew Brost 2023-03-30 209
dd08ebf6c3525a Matthew Brost 2023-03-30 210 static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test)
dd08ebf6c3525a Matthew Brost 2023-03-30 211 {
dd08ebf6c3525a Matthew Brost 2023-03-30 212 struct xe_gt *gt = m->gt;
dd08ebf6c3525a Matthew Brost 2023-03-30 213 struct xe_device *xe = gt_to_xe(gt);
dd08ebf6c3525a Matthew Brost 2023-03-30 214 struct xe_bo *pt, *bo = m->pt_bo, *big, *tiny;
dd08ebf6c3525a Matthew Brost 2023-03-30 215 struct xe_res_cursor src_it;
dd08ebf6c3525a Matthew Brost 2023-03-30 216 struct dma_fence *fence;
dd08ebf6c3525a Matthew Brost 2023-03-30 217 u64 retval, expected;
dd08ebf6c3525a Matthew Brost 2023-03-30 218 struct xe_bb *bb;
dd08ebf6c3525a Matthew Brost 2023-03-30 219 int err;
dd08ebf6c3525a Matthew Brost 2023-03-30 220 u8 id = gt->info.id;
dd08ebf6c3525a Matthew Brost 2023-03-30 221
dd08ebf6c3525a Matthew Brost 2023-03-30 222 err = xe_bo_vmap(bo);
dd08ebf6c3525a Matthew Brost 2023-03-30 223 if (err) {
dd08ebf6c3525a Matthew Brost 2023-03-30 @224 KUNIT_FAIL(test, "Failed to vmap our pagetables: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 225 PTR_ERR(bo));
dd08ebf6c3525a Matthew Brost 2023-03-30 226 return;
dd08ebf6c3525a Matthew Brost 2023-03-30 227 }
dd08ebf6c3525a Matthew Brost 2023-03-30 228
dd08ebf6c3525a Matthew Brost 2023-03-30 229 big = xe_bo_create_pin_map(xe, m->gt, m->eng->vm, SZ_4M,
dd08ebf6c3525a Matthew Brost 2023-03-30 230 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 231 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 232 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 233 if (IS_ERR(big)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 234 KUNIT_FAIL(test, "Failed to allocate bo: %li\n", PTR_ERR(big));
dd08ebf6c3525a Matthew Brost 2023-03-30 235 goto vunmap;
dd08ebf6c3525a Matthew Brost 2023-03-30 236 }
dd08ebf6c3525a Matthew Brost 2023-03-30 237
dd08ebf6c3525a Matthew Brost 2023-03-30 238 pt = xe_bo_create_pin_map(xe, m->gt, m->eng->vm, GEN8_PAGE_SIZE,
dd08ebf6c3525a Matthew Brost 2023-03-30 239 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 240 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 241 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 242 if (IS_ERR(pt)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 243 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 244 PTR_ERR(pt));
dd08ebf6c3525a Matthew Brost 2023-03-30 245 goto free_big;
dd08ebf6c3525a Matthew Brost 2023-03-30 246 }
dd08ebf6c3525a Matthew Brost 2023-03-30 247
dd08ebf6c3525a Matthew Brost 2023-03-30 248 tiny = xe_bo_create_pin_map(xe, m->gt, m->eng->vm,
dd08ebf6c3525a Matthew Brost 2023-03-30 249 2 * SZ_4K,
dd08ebf6c3525a Matthew Brost 2023-03-30 250 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 251 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 252 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 253 if (IS_ERR(tiny)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 254 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 255 PTR_ERR(pt));
dd08ebf6c3525a Matthew Brost 2023-03-30 256 goto free_pt;
dd08ebf6c3525a Matthew Brost 2023-03-30 257 }
dd08ebf6c3525a Matthew Brost 2023-03-30 258
dd08ebf6c3525a Matthew Brost 2023-03-30 259 bb = xe_bb_new(m->gt, 32, xe->info.supports_usm);
dd08ebf6c3525a Matthew Brost 2023-03-30 260 if (IS_ERR(bb)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 261 KUNIT_FAIL(test, "Failed to create batchbuffer: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 262 PTR_ERR(bb));
dd08ebf6c3525a Matthew Brost 2023-03-30 263 goto free_tiny;
dd08ebf6c3525a Matthew Brost 2023-03-30 264 }
dd08ebf6c3525a Matthew Brost 2023-03-30 265
dd08ebf6c3525a Matthew Brost 2023-03-30 266 kunit_info(test, "Starting tests, top level PT addr: %llx, special pagetable base addr: %llx\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 267 xe_bo_main_addr(m->eng->vm->pt_root[id]->bo, GEN8_PAGE_SIZE),
dd08ebf6c3525a Matthew Brost 2023-03-30 268 xe_bo_main_addr(m->pt_bo, GEN8_PAGE_SIZE));
dd08ebf6c3525a Matthew Brost 2023-03-30 269
dd08ebf6c3525a Matthew Brost 2023-03-30 270 /* First part of the test, are we updating our pagetable bo with a new entry? */
dd08ebf6c3525a Matthew Brost 2023-03-30 271 xe_map_wr(xe, &bo->vmap, GEN8_PAGE_SIZE * (NUM_KERNEL_PDE - 1), u64, 0xdeaddeadbeefbeef);
dd08ebf6c3525a Matthew Brost 2023-03-30 272 expected = gen8_pte_encode(NULL, pt, 0, XE_CACHE_WB, 0, 0);
dd08ebf6c3525a Matthew Brost 2023-03-30 273 if (m->eng->vm->flags & XE_VM_FLAGS_64K)
dd08ebf6c3525a Matthew Brost 2023-03-30 274 expected |= GEN12_PTE_PS64;
dd08ebf6c3525a Matthew Brost 2023-03-30 275 xe_res_first(pt->ttm.resource, 0, pt->size, &src_it);
dd08ebf6c3525a Matthew Brost 2023-03-30 276 emit_pte(m, bb, NUM_KERNEL_PDE - 1, xe_bo_is_vram(pt),
dd08ebf6c3525a Matthew Brost 2023-03-30 277 &src_it, GEN8_PAGE_SIZE, pt);
dd08ebf6c3525a Matthew Brost 2023-03-30 278 run_sanity_job(m, xe, bb, bb->len, "Writing PTE for our fake PT", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 279
dd08ebf6c3525a Matthew Brost 2023-03-30 280 retval = xe_map_rd(xe, &bo->vmap, GEN8_PAGE_SIZE * (NUM_KERNEL_PDE - 1),
dd08ebf6c3525a Matthew Brost 2023-03-30 281 u64);
dd08ebf6c3525a Matthew Brost 2023-03-30 282 check(retval, expected, "PTE entry write", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 283
dd08ebf6c3525a Matthew Brost 2023-03-30 284 /* Now try to write data to our newly mapped 'pagetable', see if it succeeds */
dd08ebf6c3525a Matthew Brost 2023-03-30 285 bb->len = 0;
dd08ebf6c3525a Matthew Brost 2023-03-30 286 bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
dd08ebf6c3525a Matthew Brost 2023-03-30 287 xe_map_wr(xe, &pt->vmap, 0, u32, 0xdeaddead);
dd08ebf6c3525a Matthew Brost 2023-03-30 288 expected = 0x12345678U;
dd08ebf6c3525a Matthew Brost 2023-03-30 289
dd08ebf6c3525a Matthew Brost 2023-03-30 290 emit_clear(m->gt, bb, xe_migrate_vm_addr(NUM_KERNEL_PDE - 1, 0), 4, 4,
dd08ebf6c3525a Matthew Brost 2023-03-30 291 expected, IS_DGFX(xe));
dd08ebf6c3525a Matthew Brost 2023-03-30 292 run_sanity_job(m, xe, bb, 1, "Writing to our newly mapped pagetable",
dd08ebf6c3525a Matthew Brost 2023-03-30 293 test);
dd08ebf6c3525a Matthew Brost 2023-03-30 294
dd08ebf6c3525a Matthew Brost 2023-03-30 295 retval = xe_map_rd(xe, &pt->vmap, 0, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 296 check(retval, expected, "Write to PT after adding PTE", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 297
dd08ebf6c3525a Matthew Brost 2023-03-30 298 /* Sanity checks passed, try the full ones! */
dd08ebf6c3525a Matthew Brost 2023-03-30 299
dd08ebf6c3525a Matthew Brost 2023-03-30 300 /* Clear a small bo */
dd08ebf6c3525a Matthew Brost 2023-03-30 301 kunit_info(test, "Clearing small buffer object\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 302 xe_map_memset(xe, &tiny->vmap, 0, 0x22, tiny->size);
dd08ebf6c3525a Matthew Brost 2023-03-30 303 expected = 0x224488ff;
dd08ebf6c3525a Matthew Brost 2023-03-30 304 fence = xe_migrate_clear(m, tiny, tiny->ttm.resource, expected);
dd08ebf6c3525a Matthew Brost 2023-03-30 305 if (sanity_fence_failed(xe, fence, "Clearing small bo", test))
dd08ebf6c3525a Matthew Brost 2023-03-30 306 goto out;
dd08ebf6c3525a Matthew Brost 2023-03-30 307
dd08ebf6c3525a Matthew Brost 2023-03-30 308 dma_fence_put(fence);
dd08ebf6c3525a Matthew Brost 2023-03-30 309 retval = xe_map_rd(xe, &tiny->vmap, 0, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 310 check(retval, expected, "Command clear small first value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 311 retval = xe_map_rd(xe, &tiny->vmap, tiny->size - 4, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 312 check(retval, expected, "Command clear small last value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 313
dd08ebf6c3525a Matthew Brost 2023-03-30 314 if (IS_DGFX(xe)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 315 kunit_info(test, "Copying small buffer object to system\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 316 test_copy(m, tiny, test);
dd08ebf6c3525a Matthew Brost 2023-03-30 317 }
dd08ebf6c3525a Matthew Brost 2023-03-30 318
dd08ebf6c3525a Matthew Brost 2023-03-30 319 /* Clear a big bo with a fixed value */
dd08ebf6c3525a Matthew Brost 2023-03-30 320 kunit_info(test, "Clearing big buffer object\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 321 xe_map_memset(xe, &big->vmap, 0, 0x11, big->size);
dd08ebf6c3525a Matthew Brost 2023-03-30 322 expected = 0x11223344U;
dd08ebf6c3525a Matthew Brost 2023-03-30 323 fence = xe_migrate_clear(m, big, big->ttm.resource, expected);
dd08ebf6c3525a Matthew Brost 2023-03-30 324 if (sanity_fence_failed(xe, fence, "Clearing big bo", test))
dd08ebf6c3525a Matthew Brost 2023-03-30 325 goto out;
dd08ebf6c3525a Matthew Brost 2023-03-30 326
dd08ebf6c3525a Matthew Brost 2023-03-30 327 dma_fence_put(fence);
dd08ebf6c3525a Matthew Brost 2023-03-30 328 retval = xe_map_rd(xe, &big->vmap, 0, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 329 check(retval, expected, "Command clear big first value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 330 retval = xe_map_rd(xe, &big->vmap, big->size - 4, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 331 check(retval, expected, "Command clear big last value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 332
dd08ebf6c3525a Matthew Brost 2023-03-30 333 if (IS_DGFX(xe)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 334 kunit_info(test, "Copying big buffer object to system\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 335 test_copy(m, big, test);
dd08ebf6c3525a Matthew Brost 2023-03-30 336 }
dd08ebf6c3525a Matthew Brost 2023-03-30 337
dd08ebf6c3525a Matthew Brost 2023-03-30 338 test_pt_update(m, pt, test);
dd08ebf6c3525a Matthew Brost 2023-03-30 339
dd08ebf6c3525a Matthew Brost 2023-03-30 340 out:
dd08ebf6c3525a Matthew Brost 2023-03-30 341 xe_bb_free(bb, NULL);
dd08ebf6c3525a Matthew Brost 2023-03-30 342 free_tiny:
dd08ebf6c3525a Matthew Brost 2023-03-30 343 xe_bo_unpin(tiny);
dd08ebf6c3525a Matthew Brost 2023-03-30 344 xe_bo_put(tiny);
dd08ebf6c3525a Matthew Brost 2023-03-30 345 free_pt:
dd08ebf6c3525a Matthew Brost 2023-03-30 346 xe_bo_unpin(pt);
dd08ebf6c3525a Matthew Brost 2023-03-30 347 xe_bo_put(pt);
dd08ebf6c3525a Matthew Brost 2023-03-30 348 free_big:
dd08ebf6c3525a Matthew Brost 2023-03-30 349 xe_bo_unpin(big);
dd08ebf6c3525a Matthew Brost 2023-03-30 350 xe_bo_put(big);
dd08ebf6c3525a Matthew Brost 2023-03-30 351 vunmap:
dd08ebf6c3525a Matthew Brost 2023-03-30 352 xe_bo_vunmap(m->pt_bo);
dd08ebf6c3525a Matthew Brost 2023-03-30 353 }
dd08ebf6c3525a Matthew Brost 2023-03-30 354
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread* drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
@ 2024-01-30 5:11 Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2024-01-30 5:11 UTC (permalink / raw)
To: oe-kbuild, Matthew Brost; +Cc: lkp, oe-kbuild-all, linux-kernel, Rodrigo Vivi
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 41bccc98fb7931d63d03f326a746ac4d429c1dd3
commit: dd08ebf6c3525a7ea2186e636df064ea47281987 drm/xe: Introduce a new DRM driver for Intel GPUs
config: sparc-randconfig-r081-20240128 (https://download.01.org/0day-ci/archive/20240129/202401292346.V7E6rEzz-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
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
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202401292346.V7E6rEzz-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/gpu/drm/xe/tests/xe_migrate.c:254 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
vim +/PTR_ERR +224 drivers/gpu/drm/xe/tests/xe_migrate.c
dd08ebf6c3525a Matthew Brost 2023-03-30 210 static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test)
dd08ebf6c3525a Matthew Brost 2023-03-30 211 {
dd08ebf6c3525a Matthew Brost 2023-03-30 212 struct xe_gt *gt = m->gt;
dd08ebf6c3525a Matthew Brost 2023-03-30 213 struct xe_device *xe = gt_to_xe(gt);
dd08ebf6c3525a Matthew Brost 2023-03-30 214 struct xe_bo *pt, *bo = m->pt_bo, *big, *tiny;
dd08ebf6c3525a Matthew Brost 2023-03-30 215 struct xe_res_cursor src_it;
dd08ebf6c3525a Matthew Brost 2023-03-30 216 struct dma_fence *fence;
dd08ebf6c3525a Matthew Brost 2023-03-30 217 u64 retval, expected;
dd08ebf6c3525a Matthew Brost 2023-03-30 218 struct xe_bb *bb;
dd08ebf6c3525a Matthew Brost 2023-03-30 219 int err;
dd08ebf6c3525a Matthew Brost 2023-03-30 220 u8 id = gt->info.id;
dd08ebf6c3525a Matthew Brost 2023-03-30 221
dd08ebf6c3525a Matthew Brost 2023-03-30 222 err = xe_bo_vmap(bo);
dd08ebf6c3525a Matthew Brost 2023-03-30 223 if (err) {
dd08ebf6c3525a Matthew Brost 2023-03-30 @224 KUNIT_FAIL(test, "Failed to vmap our pagetables: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 225 PTR_ERR(bo));
^^^^^^^^^^^
This should be "err".
dd08ebf6c3525a Matthew Brost 2023-03-30 226 return;
dd08ebf6c3525a Matthew Brost 2023-03-30 227 }
dd08ebf6c3525a Matthew Brost 2023-03-30 228
dd08ebf6c3525a Matthew Brost 2023-03-30 229 big = xe_bo_create_pin_map(xe, m->gt, m->eng->vm, SZ_4M,
dd08ebf6c3525a Matthew Brost 2023-03-30 230 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 231 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 232 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 233 if (IS_ERR(big)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 234 KUNIT_FAIL(test, "Failed to allocate bo: %li\n", PTR_ERR(big));
dd08ebf6c3525a Matthew Brost 2023-03-30 235 goto vunmap;
dd08ebf6c3525a Matthew Brost 2023-03-30 236 }
dd08ebf6c3525a Matthew Brost 2023-03-30 237
dd08ebf6c3525a Matthew Brost 2023-03-30 238 pt = xe_bo_create_pin_map(xe, m->gt, m->eng->vm, GEN8_PAGE_SIZE,
dd08ebf6c3525a Matthew Brost 2023-03-30 239 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 240 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 241 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 242 if (IS_ERR(pt)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 243 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 244 PTR_ERR(pt));
dd08ebf6c3525a Matthew Brost 2023-03-30 245 goto free_big;
dd08ebf6c3525a Matthew Brost 2023-03-30 246 }
dd08ebf6c3525a Matthew Brost 2023-03-30 247
dd08ebf6c3525a Matthew Brost 2023-03-30 248 tiny = xe_bo_create_pin_map(xe, m->gt, m->eng->vm,
dd08ebf6c3525a Matthew Brost 2023-03-30 249 2 * SZ_4K,
dd08ebf6c3525a Matthew Brost 2023-03-30 250 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 251 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 252 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 253 if (IS_ERR(tiny)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 254 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 255 PTR_ERR(pt));
^^^^^^^^^^^
s/pt/tiny/
dd08ebf6c3525a Matthew Brost 2023-03-30 256 goto free_pt;
dd08ebf6c3525a Matthew Brost 2023-03-30 257 }
dd08ebf6c3525a Matthew Brost 2023-03-30 258
dd08ebf6c3525a Matthew Brost 2023-03-30 259 bb = xe_bb_new(m->gt, 32, xe->info.supports_usm);
dd08ebf6c3525a Matthew Brost 2023-03-30 260 if (IS_ERR(bb)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 261 KUNIT_FAIL(test, "Failed to create batchbuffer: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 262 PTR_ERR(bb));
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread* drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
@ 2024-01-29 15:41 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2024-01-29 15:41 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Matthew Brost <matthew.brost@intel.com>
CC: Rodrigo Vivi <rodrigo.vivi@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 41bccc98fb7931d63d03f326a746ac4d429c1dd3
commit: dd08ebf6c3525a7ea2186e636df064ea47281987 drm/xe: Introduce a new DRM driver for Intel GPUs
date: 7 weeks ago
:::::: branch date: 15 hours ago
:::::: commit date: 7 weeks ago
config: sparc-randconfig-r081-20240128 (https://download.01.org/0day-ci/archive/20240129/202401292346.V7E6rEzz-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
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
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202401292346.V7E6rEzz-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
Old smatch warnings:
drivers/gpu/drm/xe/xe_migrate.c:646 xe_migrate_copy() error: uninitialized symbol 'ccs_ofs'.
drivers/gpu/drm/xe/tests/xe_migrate.c:254 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR'
vim +/PTR_ERR +224 drivers/gpu/drm/xe/tests/xe_migrate.c
dd08ebf6c3525a Matthew Brost 2023-03-30 209
dd08ebf6c3525a Matthew Brost 2023-03-30 210 static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test)
dd08ebf6c3525a Matthew Brost 2023-03-30 211 {
dd08ebf6c3525a Matthew Brost 2023-03-30 212 struct xe_gt *gt = m->gt;
dd08ebf6c3525a Matthew Brost 2023-03-30 213 struct xe_device *xe = gt_to_xe(gt);
dd08ebf6c3525a Matthew Brost 2023-03-30 214 struct xe_bo *pt, *bo = m->pt_bo, *big, *tiny;
dd08ebf6c3525a Matthew Brost 2023-03-30 215 struct xe_res_cursor src_it;
dd08ebf6c3525a Matthew Brost 2023-03-30 216 struct dma_fence *fence;
dd08ebf6c3525a Matthew Brost 2023-03-30 217 u64 retval, expected;
dd08ebf6c3525a Matthew Brost 2023-03-30 218 struct xe_bb *bb;
dd08ebf6c3525a Matthew Brost 2023-03-30 219 int err;
dd08ebf6c3525a Matthew Brost 2023-03-30 220 u8 id = gt->info.id;
dd08ebf6c3525a Matthew Brost 2023-03-30 221
dd08ebf6c3525a Matthew Brost 2023-03-30 222 err = xe_bo_vmap(bo);
dd08ebf6c3525a Matthew Brost 2023-03-30 223 if (err) {
dd08ebf6c3525a Matthew Brost 2023-03-30 @224 KUNIT_FAIL(test, "Failed to vmap our pagetables: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 225 PTR_ERR(bo));
dd08ebf6c3525a Matthew Brost 2023-03-30 226 return;
dd08ebf6c3525a Matthew Brost 2023-03-30 227 }
dd08ebf6c3525a Matthew Brost 2023-03-30 228
dd08ebf6c3525a Matthew Brost 2023-03-30 229 big = xe_bo_create_pin_map(xe, m->gt, m->eng->vm, SZ_4M,
dd08ebf6c3525a Matthew Brost 2023-03-30 230 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 231 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 232 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 233 if (IS_ERR(big)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 234 KUNIT_FAIL(test, "Failed to allocate bo: %li\n", PTR_ERR(big));
dd08ebf6c3525a Matthew Brost 2023-03-30 235 goto vunmap;
dd08ebf6c3525a Matthew Brost 2023-03-30 236 }
dd08ebf6c3525a Matthew Brost 2023-03-30 237
dd08ebf6c3525a Matthew Brost 2023-03-30 238 pt = xe_bo_create_pin_map(xe, m->gt, m->eng->vm, GEN8_PAGE_SIZE,
dd08ebf6c3525a Matthew Brost 2023-03-30 239 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 240 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 241 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 242 if (IS_ERR(pt)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 243 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 244 PTR_ERR(pt));
dd08ebf6c3525a Matthew Brost 2023-03-30 245 goto free_big;
dd08ebf6c3525a Matthew Brost 2023-03-30 246 }
dd08ebf6c3525a Matthew Brost 2023-03-30 247
dd08ebf6c3525a Matthew Brost 2023-03-30 248 tiny = xe_bo_create_pin_map(xe, m->gt, m->eng->vm,
dd08ebf6c3525a Matthew Brost 2023-03-30 249 2 * SZ_4K,
dd08ebf6c3525a Matthew Brost 2023-03-30 250 ttm_bo_type_kernel,
dd08ebf6c3525a Matthew Brost 2023-03-30 251 XE_BO_CREATE_VRAM_IF_DGFX(m->gt) |
dd08ebf6c3525a Matthew Brost 2023-03-30 252 XE_BO_CREATE_PINNED_BIT);
dd08ebf6c3525a Matthew Brost 2023-03-30 253 if (IS_ERR(tiny)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 254 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 255 PTR_ERR(pt));
dd08ebf6c3525a Matthew Brost 2023-03-30 256 goto free_pt;
dd08ebf6c3525a Matthew Brost 2023-03-30 257 }
dd08ebf6c3525a Matthew Brost 2023-03-30 258
dd08ebf6c3525a Matthew Brost 2023-03-30 259 bb = xe_bb_new(m->gt, 32, xe->info.supports_usm);
dd08ebf6c3525a Matthew Brost 2023-03-30 260 if (IS_ERR(bb)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 261 KUNIT_FAIL(test, "Failed to create batchbuffer: %li\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 262 PTR_ERR(bb));
dd08ebf6c3525a Matthew Brost 2023-03-30 263 goto free_tiny;
dd08ebf6c3525a Matthew Brost 2023-03-30 264 }
dd08ebf6c3525a Matthew Brost 2023-03-30 265
dd08ebf6c3525a Matthew Brost 2023-03-30 266 kunit_info(test, "Starting tests, top level PT addr: %llx, special pagetable base addr: %llx\n",
dd08ebf6c3525a Matthew Brost 2023-03-30 267 xe_bo_main_addr(m->eng->vm->pt_root[id]->bo, GEN8_PAGE_SIZE),
dd08ebf6c3525a Matthew Brost 2023-03-30 268 xe_bo_main_addr(m->pt_bo, GEN8_PAGE_SIZE));
dd08ebf6c3525a Matthew Brost 2023-03-30 269
dd08ebf6c3525a Matthew Brost 2023-03-30 270 /* First part of the test, are we updating our pagetable bo with a new entry? */
dd08ebf6c3525a Matthew Brost 2023-03-30 271 xe_map_wr(xe, &bo->vmap, GEN8_PAGE_SIZE * (NUM_KERNEL_PDE - 1), u64, 0xdeaddeadbeefbeef);
dd08ebf6c3525a Matthew Brost 2023-03-30 272 expected = gen8_pte_encode(NULL, pt, 0, XE_CACHE_WB, 0, 0);
dd08ebf6c3525a Matthew Brost 2023-03-30 273 if (m->eng->vm->flags & XE_VM_FLAGS_64K)
dd08ebf6c3525a Matthew Brost 2023-03-30 274 expected |= GEN12_PTE_PS64;
dd08ebf6c3525a Matthew Brost 2023-03-30 275 xe_res_first(pt->ttm.resource, 0, pt->size, &src_it);
dd08ebf6c3525a Matthew Brost 2023-03-30 276 emit_pte(m, bb, NUM_KERNEL_PDE - 1, xe_bo_is_vram(pt),
dd08ebf6c3525a Matthew Brost 2023-03-30 277 &src_it, GEN8_PAGE_SIZE, pt);
dd08ebf6c3525a Matthew Brost 2023-03-30 278 run_sanity_job(m, xe, bb, bb->len, "Writing PTE for our fake PT", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 279
dd08ebf6c3525a Matthew Brost 2023-03-30 280 retval = xe_map_rd(xe, &bo->vmap, GEN8_PAGE_SIZE * (NUM_KERNEL_PDE - 1),
dd08ebf6c3525a Matthew Brost 2023-03-30 281 u64);
dd08ebf6c3525a Matthew Brost 2023-03-30 282 check(retval, expected, "PTE entry write", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 283
dd08ebf6c3525a Matthew Brost 2023-03-30 284 /* Now try to write data to our newly mapped 'pagetable', see if it succeeds */
dd08ebf6c3525a Matthew Brost 2023-03-30 285 bb->len = 0;
dd08ebf6c3525a Matthew Brost 2023-03-30 286 bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
dd08ebf6c3525a Matthew Brost 2023-03-30 287 xe_map_wr(xe, &pt->vmap, 0, u32, 0xdeaddead);
dd08ebf6c3525a Matthew Brost 2023-03-30 288 expected = 0x12345678U;
dd08ebf6c3525a Matthew Brost 2023-03-30 289
dd08ebf6c3525a Matthew Brost 2023-03-30 290 emit_clear(m->gt, bb, xe_migrate_vm_addr(NUM_KERNEL_PDE - 1, 0), 4, 4,
dd08ebf6c3525a Matthew Brost 2023-03-30 291 expected, IS_DGFX(xe));
dd08ebf6c3525a Matthew Brost 2023-03-30 292 run_sanity_job(m, xe, bb, 1, "Writing to our newly mapped pagetable",
dd08ebf6c3525a Matthew Brost 2023-03-30 293 test);
dd08ebf6c3525a Matthew Brost 2023-03-30 294
dd08ebf6c3525a Matthew Brost 2023-03-30 295 retval = xe_map_rd(xe, &pt->vmap, 0, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 296 check(retval, expected, "Write to PT after adding PTE", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 297
dd08ebf6c3525a Matthew Brost 2023-03-30 298 /* Sanity checks passed, try the full ones! */
dd08ebf6c3525a Matthew Brost 2023-03-30 299
dd08ebf6c3525a Matthew Brost 2023-03-30 300 /* Clear a small bo */
dd08ebf6c3525a Matthew Brost 2023-03-30 301 kunit_info(test, "Clearing small buffer object\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 302 xe_map_memset(xe, &tiny->vmap, 0, 0x22, tiny->size);
dd08ebf6c3525a Matthew Brost 2023-03-30 303 expected = 0x224488ff;
dd08ebf6c3525a Matthew Brost 2023-03-30 304 fence = xe_migrate_clear(m, tiny, tiny->ttm.resource, expected);
dd08ebf6c3525a Matthew Brost 2023-03-30 305 if (sanity_fence_failed(xe, fence, "Clearing small bo", test))
dd08ebf6c3525a Matthew Brost 2023-03-30 306 goto out;
dd08ebf6c3525a Matthew Brost 2023-03-30 307
dd08ebf6c3525a Matthew Brost 2023-03-30 308 dma_fence_put(fence);
dd08ebf6c3525a Matthew Brost 2023-03-30 309 retval = xe_map_rd(xe, &tiny->vmap, 0, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 310 check(retval, expected, "Command clear small first value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 311 retval = xe_map_rd(xe, &tiny->vmap, tiny->size - 4, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 312 check(retval, expected, "Command clear small last value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 313
dd08ebf6c3525a Matthew Brost 2023-03-30 314 if (IS_DGFX(xe)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 315 kunit_info(test, "Copying small buffer object to system\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 316 test_copy(m, tiny, test);
dd08ebf6c3525a Matthew Brost 2023-03-30 317 }
dd08ebf6c3525a Matthew Brost 2023-03-30 318
dd08ebf6c3525a Matthew Brost 2023-03-30 319 /* Clear a big bo with a fixed value */
dd08ebf6c3525a Matthew Brost 2023-03-30 320 kunit_info(test, "Clearing big buffer object\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 321 xe_map_memset(xe, &big->vmap, 0, 0x11, big->size);
dd08ebf6c3525a Matthew Brost 2023-03-30 322 expected = 0x11223344U;
dd08ebf6c3525a Matthew Brost 2023-03-30 323 fence = xe_migrate_clear(m, big, big->ttm.resource, expected);
dd08ebf6c3525a Matthew Brost 2023-03-30 324 if (sanity_fence_failed(xe, fence, "Clearing big bo", test))
dd08ebf6c3525a Matthew Brost 2023-03-30 325 goto out;
dd08ebf6c3525a Matthew Brost 2023-03-30 326
dd08ebf6c3525a Matthew Brost 2023-03-30 327 dma_fence_put(fence);
dd08ebf6c3525a Matthew Brost 2023-03-30 328 retval = xe_map_rd(xe, &big->vmap, 0, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 329 check(retval, expected, "Command clear big first value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 330 retval = xe_map_rd(xe, &big->vmap, big->size - 4, u32);
dd08ebf6c3525a Matthew Brost 2023-03-30 331 check(retval, expected, "Command clear big last value", test);
dd08ebf6c3525a Matthew Brost 2023-03-30 332
dd08ebf6c3525a Matthew Brost 2023-03-30 333 if (IS_DGFX(xe)) {
dd08ebf6c3525a Matthew Brost 2023-03-30 334 kunit_info(test, "Copying big buffer object to system\n");
dd08ebf6c3525a Matthew Brost 2023-03-30 335 test_copy(m, big, test);
dd08ebf6c3525a Matthew Brost 2023-03-30 336 }
dd08ebf6c3525a Matthew Brost 2023-03-30 337
dd08ebf6c3525a Matthew Brost 2023-03-30 338 test_pt_update(m, pt, test);
dd08ebf6c3525a Matthew Brost 2023-03-30 339
dd08ebf6c3525a Matthew Brost 2023-03-30 340 out:
dd08ebf6c3525a Matthew Brost 2023-03-30 341 xe_bb_free(bb, NULL);
dd08ebf6c3525a Matthew Brost 2023-03-30 342 free_tiny:
dd08ebf6c3525a Matthew Brost 2023-03-30 343 xe_bo_unpin(tiny);
dd08ebf6c3525a Matthew Brost 2023-03-30 344 xe_bo_put(tiny);
dd08ebf6c3525a Matthew Brost 2023-03-30 345 free_pt:
dd08ebf6c3525a Matthew Brost 2023-03-30 346 xe_bo_unpin(pt);
dd08ebf6c3525a Matthew Brost 2023-03-30 347 xe_bo_put(pt);
dd08ebf6c3525a Matthew Brost 2023-03-30 348 free_big:
dd08ebf6c3525a Matthew Brost 2023-03-30 349 xe_bo_unpin(big);
dd08ebf6c3525a Matthew Brost 2023-03-30 350 xe_bo_put(big);
dd08ebf6c3525a Matthew Brost 2023-03-30 351 vunmap:
dd08ebf6c3525a Matthew Brost 2023-03-30 352 xe_bo_vunmap(m->pt_bo);
dd08ebf6c3525a Matthew Brost 2023-03-30 353 }
dd08ebf6c3525a Matthew Brost 2023-03-30 354
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-01-30 13:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-30 13:46 drivers/gpu/drm/xe/tests/xe_migrate.c:224 xe_migrate_sanity_test() warn: passing zero to 'PTR_ERR' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2024-01-30 5:11 Dan Carpenter
2024-01-29 15:41 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.