✗ CI.checkpatch: warning for series starting with [v3,1/2] drm/buddy: Optimize free block management with RB tree

Patchwork patchwork at emeril.freedesktop.org
Thu Aug 21 17:09:26 UTC 2025


== Series Details ==

Series: series starting with [v3,1/2] drm/buddy: Optimize free block management with RB tree
URL   : https://patchwork.freedesktop.org/series/153302/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
553439844b6500767ce8aef522cfe9fbb7ece541
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit f439559ab901041d7ec24bbe403502e8f2f0b61c
Author: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam at amd.com>
Date:   Thu Aug 21 20:36:41 2025 +0530

    drm/buddy: Separate clear and dirty free block trees
    
    Maintain two separate RB trees per order - one for clear (zeroed) blocks
    and another for dirty (uncleared) blocks. This separation improves
    code clarity and makes it more obvious which tree is being searched
    during allocation. It also improves scalability and efficiency when
    searching for a specific type of block, avoiding unnecessary checks
    and making the allocator more predictable under fragmentation.
    
    The changes have been validated using the existing drm_buddy_test
    KUnit test cases, along with selected graphics workloads,
    to ensure correctness and avoid regressions.
    
    v2: Missed adding the suggested-by tag. Added it in v2.
    v3(Matthew):
      - Remove the double underscores from the internal functions.
      - Rename the internal functions to have less generic names.
      - Fix the error handling code.
      - Pass tree argument for the tree macro.
      - Use the existing dirty/free bit instead of new tree field.
      - Make free_trees[] instead of clear_tree and dirty_tree for
        more cleaner approach.
    
    Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam at amd.com>
    Suggested-by: Matthew Auld <matthew.auld at intel.com>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4260
+ /mt/dim checkpatch 633a37934680cad76b742422d1b955d4cdde5189 drm-intel
9034e22e8362 drm/buddy: Optimize free block management with RB tree
-:44: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pos' - possible side-effects?
#44: FILE: drivers/gpu/drm/drm_buddy.c:23:
+#define for_each_rb_free_block(pos, root, member) \
+	for (pos = rb_entry_safe(rb_first(root), typeof(*pos), member); \
+	     pos; \
+	     pos = rb_entry_safe(rb_next(&(pos)->member), typeof(*pos), member))

-:44: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'member' - possible side-effects?
#44: FILE: drivers/gpu/drm/drm_buddy.c:23:
+#define for_each_rb_free_block(pos, root, member) \
+	for (pos = rb_entry_safe(rb_first(root), typeof(*pos), member); \
+	     pos; \
+	     pos = rb_entry_safe(rb_next(&(pos)->member), typeof(*pos), member))

-:55: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pos' - possible side-effects?
#55: FILE: drivers/gpu/drm/drm_buddy.c:34:
+#define for_each_rb_free_block_reverse(pos, root, member) \
+	for (pos = rb_entry_safe(rb_last(root), typeof(*pos), member); \
+	     pos; \
+	     pos = rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member))

-:55: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'member' - possible side-effects?
#55: FILE: drivers/gpu/drm/drm_buddy.c:34:
+#define for_each_rb_free_block_reverse(pos, root, member) \
+	for (pos = rb_entry_safe(rb_last(root), typeof(*pos), member); \
+	     pos; \
+	     pos = rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member))

-:67: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pos' - possible side-effects?
#67: FILE: drivers/gpu/drm/drm_buddy.c:46:
+#define for_each_rb_free_block_reverse_safe(pos, n, root, member) \
+	for (pos = rb_entry_safe(rb_last(root), typeof(*pos), member), \
+	     n = pos ? rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member) : NULL; \
+	     pos; \
+	     pos = n, n = pos ? rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member) : NULL)

-:67: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
#67: FILE: drivers/gpu/drm/drm_buddy.c:46:
+#define for_each_rb_free_block_reverse_safe(pos, n, root, member) \
+	for (pos = rb_entry_safe(rb_last(root), typeof(*pos), member), \
+	     n = pos ? rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member) : NULL; \
+	     pos; \
+	     pos = n, n = pos ? rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member) : NULL)

-:67: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'member' - possible side-effects?
#67: FILE: drivers/gpu/drm/drm_buddy.c:46:
+#define for_each_rb_free_block_reverse_safe(pos, n, root, member) \
+	for (pos = rb_entry_safe(rb_last(root), typeof(*pos), member), \
+	     n = pos ? rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member) : NULL; \
+	     pos; \
+	     pos = n, n = pos ? rb_entry_safe(rb_prev(&(pos)->member), typeof(*pos), member) : NULL)

total: 0 errors, 0 warnings, 7 checks, 388 lines checked
f439559ab901 drm/buddy: Separate clear and dirty free block trees
-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'tree' - possible side-effects?
#39: FILE: drivers/gpu/drm/drm_buddy.c:17:
+#define for_each_free_tree(tree) \
+	for ((tree) = CLEAR_TREE; (tree) < MAX_FREE_TREES; (tree)++)

-:254: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#254: FILE: drivers/gpu/drm/drm_buddy.c:337:
+						prev_block = rbtree_prev_free_block(&prev_block->rb);

-:572: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants
#572: FILE: drivers/gpu/drm/drm_buddy.c:1352:
+				BUG_ON(!drm_buddy_block_is_free(block));

total: 0 errors, 2 warnings, 1 checks, 544 lines checked




More information about the Intel-xe mailing list