]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/stolen: convert intel_stolen_node into a real struct of its own
authorJani Nikula <jani.nikula@intel.com>
Wed, 24 Sep 2025 16:43:34 +0000 (19:43 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 29 Sep 2025 09:41:30 +0000 (12:41 +0300)
i915_gem_stolen.h simply defines intel_stolen_node as drm_mm_node. Make
struct intel_stolen_node an actual struct of its own right, and embed
struct drm_mm_node inside. This allow better unification between i915
and xe.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/36762f611566d81427e702369f4e8207ead5f26c.1758732183.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
drivers/gpu/drm/i915/gem/i915_gem_stolen.h

index 3380151edfc18e8fca2e82d96ee1dba086f0f461..70ee34303e3670ae0829b98f6da0a488f9f0a701 100644 (file)
@@ -36,9 +36,9 @@
  * for is a boon.
  */
 
-int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
-                                        struct drm_mm_node *node, u64 size,
-                                        unsigned alignment, u64 start, u64 end)
+static int __i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
+                                                 struct drm_mm_node *node, u64 size,
+                                                 unsigned int alignment, u64 start, u64 end)
 {
        int ret;
 
@@ -58,24 +58,46 @@ int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
        return ret;
 }
 
+int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
+                                        struct intel_stolen_node *node, u64 size,
+                                        unsigned int alignment, u64 start, u64 end)
+{
+       return __i915_gem_stolen_insert_node_in_range(i915, &node->node,
+                                                     size, alignment,
+                                                     start, end);
+}
+
+static int __i915_gem_stolen_insert_node(struct drm_i915_private *i915,
+                                        struct drm_mm_node *node, u64 size,
+                                        unsigned int alignment)
+{
+       return __i915_gem_stolen_insert_node_in_range(i915, node,
+                                                     size, alignment,
+                                                     I915_GEM_STOLEN_BIAS,
+                                                     U64_MAX);
+}
+
 int i915_gem_stolen_insert_node(struct drm_i915_private *i915,
-                               struct drm_mm_node *node, u64 size,
-                               unsigned alignment)
+                               struct intel_stolen_node *node, u64 size,
+                               unsigned int alignment)
 {
-       return i915_gem_stolen_insert_node_in_range(i915, node,
-                                                   size, alignment,
-                                                   I915_GEM_STOLEN_BIAS,
-                                                   U64_MAX);
+       return __i915_gem_stolen_insert_node(i915, &node->node, size, alignment);
 }
 
-void i915_gem_stolen_remove_node(struct drm_i915_private *i915,
-                                struct drm_mm_node *node)
+static void __i915_gem_stolen_remove_node(struct drm_i915_private *i915,
+                                         struct drm_mm_node *node)
 {
        mutex_lock(&i915->mm.stolen_lock);
        drm_mm_remove_node(node);
        mutex_unlock(&i915->mm.stolen_lock);
 }
 
+void i915_gem_stolen_remove_node(struct drm_i915_private *i915,
+                                struct intel_stolen_node *node)
+{
+       __i915_gem_stolen_remove_node(i915, &node->node);
+}
+
 static bool valid_stolen_size(struct drm_i915_private *i915, struct resource *dsm)
 {
        return (dsm->start != 0 || HAS_LMEMBAR_SMEM_STOLEN(i915)) && dsm->end > dsm->start;
@@ -683,7 +705,7 @@ i915_gem_object_release_stolen(struct drm_i915_gem_object *obj)
        struct drm_mm_node *stolen = fetch_and_zero(&obj->stolen);
 
        GEM_BUG_ON(!stolen);
-       i915_gem_stolen_remove_node(i915, stolen);
+       __i915_gem_stolen_remove_node(i915, stolen);
        kfree(stolen);
 
        i915_gem_object_release_memory_region(obj);
@@ -772,8 +794,8 @@ static int _i915_gem_object_stolen_init(struct intel_memory_region *mem,
                ret = drm_mm_reserve_node(&i915->mm.stolen, stolen);
                mutex_unlock(&i915->mm.stolen_lock);
        } else {
-               ret = i915_gem_stolen_insert_node(i915, stolen, size,
-                                                 mem->min_page_size);
+               ret = __i915_gem_stolen_insert_node(i915, stolen, size,
+                                                   mem->min_page_size);
        }
        if (ret)
                goto err_free;
@@ -785,7 +807,7 @@ static int _i915_gem_object_stolen_init(struct intel_memory_region *mem,
        return 0;
 
 err_remove:
-       i915_gem_stolen_remove_node(i915, stolen);
+       __i915_gem_stolen_remove_node(i915, stolen);
 err_free:
        kfree(stolen);
        return ret;
@@ -1016,22 +1038,22 @@ u64 i915_gem_stolen_area_size(const struct drm_i915_private *i915)
 }
 
 u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915,
-                                const struct drm_mm_node *node)
+                                const struct intel_stolen_node *node)
 {
        return i915->dsm.stolen.start + i915_gem_stolen_node_offset(node);
 }
 
-bool i915_gem_stolen_node_allocated(const struct drm_mm_node *node)
+bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node)
 {
-       return drm_mm_node_allocated(node);
+       return drm_mm_node_allocated(&node->node);
 }
 
-u64 i915_gem_stolen_node_offset(const struct drm_mm_node *node)
+u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node)
 {
-       return node->start;
+       return node->node.start;
 }
 
-u64 i915_gem_stolen_node_size(const struct drm_mm_node *node)
+u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node)
 {
-       return node->size;
+       return node->node.size;
 }
index c2f9c994e0ae9156d68e778d7780ca026a2aec1b..9e42d5a4cf13dc34ced6529d2c3474b085f52dc1 100644 (file)
@@ -7,22 +7,24 @@
 #define __I915_GEM_STOLEN_H__
 
 #include <linux/types.h>
+#include <drm/drm_mm.h>
 
-struct drm_i915_private;
-struct drm_mm_node;
 struct drm_i915_gem_object;
+struct drm_i915_private;
 
-#define intel_stolen_node drm_mm_node
+struct intel_stolen_node {
+       struct drm_mm_node node;
+};
 
 int i915_gem_stolen_insert_node(struct drm_i915_private *i915,
-                               struct drm_mm_node *node, u64 size,
+                               struct intel_stolen_node *node, u64 size,
                                unsigned alignment);
 int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
-                                        struct drm_mm_node *node, u64 size,
+                                        struct intel_stolen_node *node, u64 size,
                                         unsigned alignment, u64 start,
                                         u64 end);
 void i915_gem_stolen_remove_node(struct drm_i915_private *i915,
-                                struct drm_mm_node *node);
+                                struct intel_stolen_node *node);
 struct intel_memory_region *
 i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type,
                           u16 instance);
@@ -43,10 +45,10 @@ u64 i915_gem_stolen_area_address(const struct drm_i915_private *i915);
 u64 i915_gem_stolen_area_size(const struct drm_i915_private *i915);
 
 u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915,
-                                const struct drm_mm_node *node);
+                                const struct intel_stolen_node *node);
 
-bool i915_gem_stolen_node_allocated(const struct drm_mm_node *node);
-u64 i915_gem_stolen_node_offset(const struct drm_mm_node *node);
-u64 i915_gem_stolen_node_size(const struct drm_mm_node *node);
+bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node);
+u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node);
+u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
 
 #endif /* __I915_GEM_STOLEN_H__ */