Skip to content

Commit fca7526

Browse files
committed
drm/tests/drm_buddy: fix build failure on 32-bit targets
Guenter Roeck reports that commit a64056b ("drm/tests/drm_buddy: add alloc_contiguous test") causes build failures on 32-bit targets: "This patch breaks the build on all 32-bit systems since it introduces an unhandled direct 64-bit divide operation. ERROR: modpost: "__umoddi3" [drivers/gpu/drm/tests/drm_buddy_test.ko] undefined! ERROR: modpost: "__moddi3" [drivers/gpu/drm/tests/drm_buddy_test.ko] undefined!" and the uses of 'u64' are all entirely pointless. Yes, the arguments to drm_buddy_init() and drm_buddy_alloc_blocks() are in fact of type 'u64', but none of the values here are remotely relevant, and the compiler will happily just do the type expansion. Of course, in a perfect world the compiler would also have just noticed that all the values in question are tiny, and range analysis would have shown that doing a 64-bit divide is pointless, but that is admittedly expecting a fair amount of the compiler. IOW, we shouldn't write code that the compiler then has to notice is unnecessarily complicated just to avoid extra work. We do have fairly high expectations of compilers, but kernel code should be reasonable to begin with. It turns out that there are also other issues with this code: the KUnit assertion messages have incorrect types in the format strings, but that's a widely spread issue caused by the KUnit infrastructure not having enabled format string verification. We'll get that sorted out separately. Reported-by: Guenter Roeck <[email protected]> Fixes: a64056b ("drm/tests/drm_buddy: add alloc_contiguous test") Link: https://lore.kernel.org/all/[email protected]/ Cc: Matthew Auld <[email protected]> Cc: Arunpravin Paneer Selvam <[email protected]> Cc: Christian König <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 944d5fe commit fca7526

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

drivers/gpu/drm/tests/drm_buddy_test.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,15 @@ static inline u64 get_size(int order, u64 chunk_size)
2121

2222
static void drm_test_buddy_alloc_contiguous(struct kunit *test)
2323
{
24-
u64 mm_size, ps = SZ_4K, i, n_pages, total;
24+
const unsigned long ps = SZ_4K, mm_size = 16 * 3 * SZ_4K;
25+
unsigned long i, n_pages, total;
2526
struct drm_buddy_block *block;
2627
struct drm_buddy mm;
2728
LIST_HEAD(left);
2829
LIST_HEAD(middle);
2930
LIST_HEAD(right);
3031
LIST_HEAD(allocated);
3132

32-
mm_size = 16 * 3 * SZ_4K;
33-
3433
KUNIT_EXPECT_FALSE(test, drm_buddy_init(&mm, mm_size, ps));
3534

3635
/*

0 commit comments

Comments
 (0)