| .. | .. |
|---|
| 168 | 168 | struct rb_node rb_hole_addr; |
|---|
| 169 | 169 | u64 __subtree_last; |
|---|
| 170 | 170 | u64 hole_size; |
|---|
| 171 | | - bool allocated : 1; |
|---|
| 172 | | - bool scanned_block : 1; |
|---|
| 171 | + u64 subtree_max_hole; |
|---|
| 172 | + unsigned long flags; |
|---|
| 173 | +#define DRM_MM_NODE_ALLOCATED_BIT 0 |
|---|
| 174 | +#define DRM_MM_NODE_SCANNED_BIT 1 |
|---|
| 173 | 175 | #ifdef CONFIG_DRM_DEBUG_MM |
|---|
| 174 | 176 | depot_stack_handle_t stack; |
|---|
| 175 | 177 | #endif |
|---|
| .. | .. |
|---|
| 253 | 255 | */ |
|---|
| 254 | 256 | static inline bool drm_mm_node_allocated(const struct drm_mm_node *node) |
|---|
| 255 | 257 | { |
|---|
| 256 | | - return node->allocated; |
|---|
| 258 | + return test_bit(DRM_MM_NODE_ALLOCATED_BIT, &node->flags); |
|---|
| 257 | 259 | } |
|---|
| 258 | 260 | |
|---|
| 259 | 261 | /** |
|---|
| .. | .. |
|---|
| 271 | 273 | */ |
|---|
| 272 | 274 | static inline bool drm_mm_initialized(const struct drm_mm *mm) |
|---|
| 273 | 275 | { |
|---|
| 274 | | - return mm->hole_stack.next; |
|---|
| 276 | + return READ_ONCE(mm->hole_stack.next); |
|---|
| 275 | 277 | } |
|---|
| 276 | 278 | |
|---|
| 277 | 279 | /** |
|---|
| .. | .. |
|---|
| 336 | 338 | |
|---|
| 337 | 339 | /** |
|---|
| 338 | 340 | * drm_mm_nodes - list of nodes under the drm_mm range manager |
|---|
| 339 | | - * @mm: the struct drm_mm range manger |
|---|
| 341 | + * @mm: the struct drm_mm range manager |
|---|
| 340 | 342 | * |
|---|
| 341 | 343 | * As the drm_mm range manager hides its node_list deep with its |
|---|
| 342 | 344 | * structure, extracting it looks painful and repetitive. This is |
|---|