From: kernel test robot <lkp@intel.com>
To: Matthew Auld <matthew.auld@intel.com>, dri-devel@lists.freedesktop.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
"Jani Nikula" <jani.nikula@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Arunpravin Paneer Selvam" <Arunpravin.PaneerSelvam@amd.com>,
"Christian König" <christian.koenig@amd.com>
Subject: Re: [PATCH] drm/tests/buddy: fix build with unused prng
Date: Wed, 15 Jan 2025 23:58:33 +0800 [thread overview]
Message-ID: <202501152356.FZ1YODaP-lkp@intel.com> (raw)
In-Reply-To: <20250115123734.154243-2-matthew.auld@intel.com>
Hi Matthew,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm/drm-next]
[also build test ERROR on drm-exynos/exynos-drm-next linus/master drm-misc/drm-misc-next v6.13-rc7 next-20250115]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Matthew-Auld/drm-tests-buddy-fix-build-with-unused-prng/20250115-204228
base: git://anongit.freedesktop.org/drm/drm drm-next
patch link: https://lore.kernel.org/r/20250115123734.154243-2-matthew.auld%40intel.com
patch subject: [PATCH] drm/tests/buddy: fix build with unused prng
config: i386-buildonly-randconfig-001-20250115 (https://download.01.org/0day-ci/archive/20250115/202501152356.FZ1YODaP-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250115/202501152356.FZ1YODaP-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
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501152356.FZ1YODaP-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/gpu/drm/tests/drm_buddy_test.c:392:41: error: use of undeclared identifier 'prng'
392 | size = max(round_up(prandom_u32_state(&prng) % mm_size, ps), ps);
| ^
>> drivers/gpu/drm/tests/drm_buddy_test.c:392:41: error: use of undeclared identifier 'prng'
>> drivers/gpu/drm/tests/drm_buddy_test.c:392:41: error: use of undeclared identifier 'prng'
>> drivers/gpu/drm/tests/drm_buddy_test.c:392:41: error: use of undeclared identifier 'prng'
>> drivers/gpu/drm/tests/drm_buddy_test.c:392:41: error: use of undeclared identifier 'prng'
>> drivers/gpu/drm/tests/drm_buddy_test.c:392:41: error: use of undeclared identifier 'prng'
6 errors generated.
vim +/prng +392 drivers/gpu/drm/tests/drm_buddy_test.c
c70703320e557f Matthew Auld 2024-02-19 260
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 261 static void drm_test_buddy_alloc_clear(struct kunit *test)
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 262 {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 263 unsigned long n_pages, total, i = 0;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 264 const unsigned long ps = SZ_4K;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 265 struct drm_buddy_block *block;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 266 const int max_order = 12;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 267 LIST_HEAD(allocated);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 268 struct drm_buddy mm;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 269 unsigned int order;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 270 u32 mm_size, size;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 271 LIST_HEAD(dirty);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 272 LIST_HEAD(clean);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 273
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 274 mm_size = SZ_4K << max_order;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 275 KUNIT_EXPECT_FALSE(test, drm_buddy_init(&mm, mm_size, ps));
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 276
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 277 KUNIT_EXPECT_EQ(test, mm.max_order, max_order);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 278
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 279 /*
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 280 * Idea is to allocate and free some random portion of the address space,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 281 * returning those pages as non-dirty and randomly alternate between
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 282 * requesting dirty and non-dirty pages (not going over the limit
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 283 * we freed as non-dirty), putting that into two separate lists.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 284 * Loop over both lists at the end checking that the dirty list
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 285 * is indeed all dirty pages and vice versa. Free it all again,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 286 * keeping the dirty/clear status.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 287 */
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 288 KUNIT_ASSERT_FALSE_MSG(test, drm_buddy_alloc_blocks(&mm, 0, mm_size,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 289 5 * ps, ps, &allocated,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 290 DRM_BUDDY_TOPDOWN_ALLOCATION),
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 291 "buddy_alloc hit an error size=%lu\n", 5 * ps);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 292 drm_buddy_free_list(&mm, &allocated, DRM_BUDDY_CLEARED);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 293
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 294 n_pages = 10;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 295 do {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 296 unsigned long flags;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 297 struct list_head *list;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 298 int slot = i % 2;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 299
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 300 if (slot == 0) {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 301 list = &dirty;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 302 flags = 0;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 303 } else {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 304 list = &clean;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 305 flags = DRM_BUDDY_CLEAR_ALLOCATION;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 306 }
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 307
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 308 KUNIT_ASSERT_FALSE_MSG(test, drm_buddy_alloc_blocks(&mm, 0, mm_size,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 309 ps, ps, list,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 310 flags),
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 311 "buddy_alloc hit an error size=%lu\n", ps);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 312 } while (++i < n_pages);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 313
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 314 list_for_each_entry(block, &clean, link)
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 315 KUNIT_EXPECT_EQ(test, drm_buddy_block_is_clear(block), true);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 316
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 317 list_for_each_entry(block, &dirty, link)
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 318 KUNIT_EXPECT_EQ(test, drm_buddy_block_is_clear(block), false);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 319
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 320 drm_buddy_free_list(&mm, &clean, DRM_BUDDY_CLEARED);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 321
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 322 /*
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 323 * Trying to go over the clear limit for some allocation.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 324 * The allocation should never fail with reasonable page-size.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 325 */
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 326 KUNIT_ASSERT_FALSE_MSG(test, drm_buddy_alloc_blocks(&mm, 0, mm_size,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 327 10 * ps, ps, &clean,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 328 DRM_BUDDY_CLEAR_ALLOCATION),
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 329 "buddy_alloc hit an error size=%lu\n", 10 * ps);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 330
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 331 drm_buddy_free_list(&mm, &clean, DRM_BUDDY_CLEARED);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 332 drm_buddy_free_list(&mm, &dirty, 0);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 333 drm_buddy_fini(&mm);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 334
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 335 KUNIT_EXPECT_FALSE(test, drm_buddy_init(&mm, mm_size, ps));
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 336
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 337 /*
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 338 * Create a new mm. Intentionally fragment the address space by creating
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 339 * two alternating lists. Free both lists, one as dirty the other as clean.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 340 * Try to allocate double the previous size with matching min_page_size. The
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 341 * allocation should never fail as it calls the force_merge. Also check that
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 342 * the page is always dirty after force_merge. Free the page as dirty, then
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 343 * repeat the whole thing, increment the order until we hit the max_order.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 344 */
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 345
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 346 i = 0;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 347 n_pages = mm_size / ps;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 348 do {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 349 struct list_head *list;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 350 int slot = i % 2;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 351
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 352 if (slot == 0)
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 353 list = &dirty;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 354 else
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 355 list = &clean;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 356
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 357 KUNIT_ASSERT_FALSE_MSG(test, drm_buddy_alloc_blocks(&mm, 0, mm_size,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 358 ps, ps, list, 0),
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 359 "buddy_alloc hit an error size=%lu\n", ps);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 360 } while (++i < n_pages);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 361
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 362 drm_buddy_free_list(&mm, &clean, DRM_BUDDY_CLEARED);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 363 drm_buddy_free_list(&mm, &dirty, 0);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 364
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 365 order = 1;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 366 do {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 367 size = SZ_4K << order;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 368
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 369 KUNIT_ASSERT_FALSE_MSG(test, drm_buddy_alloc_blocks(&mm, 0, mm_size,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 370 size, size, &allocated,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 371 DRM_BUDDY_CLEAR_ALLOCATION),
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 372 "buddy_alloc hit an error size=%u\n", size);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 373 total = 0;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 374 list_for_each_entry(block, &allocated, link) {
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 375 if (size != mm_size)
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 376 KUNIT_EXPECT_EQ(test, drm_buddy_block_is_clear(block), false);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 377 total += drm_buddy_block_size(&mm, block);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 378 }
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 379 KUNIT_EXPECT_EQ(test, total, size);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 380
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 381 drm_buddy_free_list(&mm, &allocated, 0);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 382 } while (++order <= max_order);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 383
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 384 drm_buddy_fini(&mm);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 385
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 386 /*
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 387 * Create a new mm with a non power-of-two size. Allocate a random size, free as
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 388 * cleared and then call fini. This will ensure the multi-root force merge during
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 389 * fini.
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 390 */
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 391 mm_size = 12 * SZ_4K;
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 @392 size = max(round_up(prandom_u32_state(&prng) % mm_size, ps), ps);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 393 KUNIT_EXPECT_FALSE(test, drm_buddy_init(&mm, mm_size, ps));
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 394 KUNIT_ASSERT_FALSE_MSG(test, drm_buddy_alloc_blocks(&mm, 0, mm_size,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 395 size, ps, &allocated,
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 396 DRM_BUDDY_TOPDOWN_ALLOCATION),
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 397 "buddy_alloc hit an error size=%u\n", size);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 398 drm_buddy_free_list(&mm, &allocated, DRM_BUDDY_CLEARED);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 399 drm_buddy_fini(&mm);
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 400 }
c1696bf8d5f538 Arunpravin Paneer Selvam 2024-04-19 401
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
prev parent reply other threads:[~2025-01-15 15:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-15 12:37 [PATCH] drm/tests/buddy: fix build with unused prng Matthew Auld
2025-01-15 12:40 ` Thomas Hellström
2025-01-15 12:42 ` Thomas Hellström
2025-01-15 15:58 ` kernel test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202501152356.FZ1YODaP-lkp@intel.com \
--to=lkp@intel.com \
--cc=Arunpravin.PaneerSelvam@amd.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=llvm@lists.linux.dev \
--cc=matthew.auld@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=thomas.hellstrom@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.