Add a "best_match" argument similar to the drm_mm_search_*() helpers so we
can convert TTM to use them in follow up patches.

Also move the non-generic aliases to drm_mm.h header instead of keeping
them in the source file.

Signed-off-by: David Herrmann <dh.herrmann at gmail.com>
---
 drivers/gpu/drm/drm_mm.c          | 23 ++++-------------------
 drivers/gpu/drm/drm_vma_manager.c |  4 ++--
 drivers/gpu/drm/i915/i915_gem.c   |  3 ++-
 drivers/gpu/drm/sis/sis_mm.c      |  4 ++--
 drivers/gpu/drm/via/via_mm.c      |  4 ++--
 include/drm/drm_mm.h              | 38 ++++++++++++++++++++++++++------------
 6 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
index 543b9b3..068abf4 100644
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -217,12 +217,12 @@ EXPORT_SYMBOL(drm_mm_get_block_generic);
  */
 int drm_mm_insert_node_generic(struct drm_mm *mm, struct drm_mm_node *node,
                               unsigned long size, unsigned alignment,
-                              unsigned long color)
+                              unsigned long color, bool best_match)
 {
        struct drm_mm_node *hole_node;

        hole_node = drm_mm_search_free_generic(mm, size, alignment,
-                                              color, 0);
+                                              color, best_match);
        if (!hole_node)
                return -ENOSPC;

@@ -231,13 +231,6 @@ int drm_mm_insert_node_generic(struct drm_mm *mm, struct 
drm_mm_node *node,
 }
 EXPORT_SYMBOL(drm_mm_insert_node_generic);

-int drm_mm_insert_node(struct drm_mm *mm, struct drm_mm_node *node,
-                      unsigned long size, unsigned alignment)
-{
-       return drm_mm_insert_node_generic(mm, node, size, alignment, 0);
-}
-EXPORT_SYMBOL(drm_mm_insert_node);
-
 static void drm_mm_insert_helper_range(struct drm_mm_node *hole_node,
                                       struct drm_mm_node *node,
                                       unsigned long size, unsigned alignment,
@@ -318,13 +311,13 @@ EXPORT_SYMBOL(drm_mm_get_block_range_generic);
  */
 int drm_mm_insert_node_in_range_generic(struct drm_mm *mm, struct drm_mm_node 
*node,
                                        unsigned long size, unsigned alignment, 
unsigned long color,
-                                       unsigned long start, unsigned long end)
+                                       unsigned long start, unsigned long end, 
bool best_match)
 {
        struct drm_mm_node *hole_node;

        hole_node = drm_mm_search_free_in_range_generic(mm,
                                                        size, alignment, color,
-                                                       start, end, 0);
+                                                       start, end, best_match);
        if (!hole_node)
                return -ENOSPC;

@@ -335,14 +328,6 @@ int drm_mm_insert_node_in_range_generic(struct drm_mm *mm, 
struct drm_mm_node *n
 }
 EXPORT_SYMBOL(drm_mm_insert_node_in_range_generic);

-int drm_mm_insert_node_in_range(struct drm_mm *mm, struct drm_mm_node *node,
-                               unsigned long size, unsigned alignment,
-                               unsigned long start, unsigned long end)
-{
-       return drm_mm_insert_node_in_range_generic(mm, node, size, alignment, 
0, start, end);
-}
-EXPORT_SYMBOL(drm_mm_insert_node_in_range);
-
 /**
  * Remove a memory node from the allocator.
  */
diff --git a/drivers/gpu/drm/drm_vma_manager.c 
b/drivers/gpu/drm/drm_vma_manager.c
index 4b5f415..d07247e 100644
--- a/drivers/gpu/drm/drm_vma_manager.c
+++ b/drivers/gpu/drm/drm_vma_manager.c
@@ -218,8 +218,8 @@ int drm_vma_offset_add(struct drm_vma_offset_manager *mgr,
                goto out_unlock;
        }

-       ret = drm_mm_insert_node_generic(&mgr->vm_addr_space_mm,
-                                        &node->vm_node, pages, 0, 0);
+       ret = drm_mm_insert_node(&mgr->vm_addr_space_mm, &node->vm_node,
+                                pages, 0, false);
        if (ret)
                goto out_unlock;

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8ab41a5..324f3c5 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3130,7 +3130,8 @@ i915_gem_object_bind_to_gtt(struct drm_i915_gem_object 
*obj,
 search_free:
        ret = drm_mm_insert_node_in_range_generic(&dev_priv->mm.gtt_space, node,
                                                  size, alignment,
-                                                 obj->cache_level, 0, gtt_max);
+                                                 obj->cache_level, 0, gtt_max,
+                                                 false);
        if (ret) {
                ret = i915_gem_evict_something(dev, size, alignment,
                                               obj->cache_level,
diff --git a/drivers/gpu/drm/sis/sis_mm.c b/drivers/gpu/drm/sis/sis_mm.c
index 9a43d98..85da1a4 100644
--- a/drivers/gpu/drm/sis/sis_mm.c
+++ b/drivers/gpu/drm/sis/sis_mm.c
@@ -109,7 +109,7 @@ static int sis_drm_alloc(struct drm_device *dev, struct 
drm_file *file,
        if (pool == AGP_TYPE) {
                retval = drm_mm_insert_node(&dev_priv->agp_mm,
                                            &item->mm_node,
-                                           mem->size, 0);
+                                           mem->size, 0, false);
                offset = item->mm_node.start;
        } else {
 #if defined(CONFIG_FB_SIS) || defined(CONFIG_FB_SIS_MODULE)
@@ -121,7 +121,7 @@ static int sis_drm_alloc(struct drm_device *dev, struct 
drm_file *file,
 #else
                retval = drm_mm_insert_node(&dev_priv->vram_mm,
                                            &item->mm_node,
-                                           mem->size, 0);
+                                           mem->size, 0, false);
                offset = item->mm_node.start;
 #endif
        }
diff --git a/drivers/gpu/drm/via/via_mm.c b/drivers/gpu/drm/via/via_mm.c
index 0ab93ff..10b962e 100644
--- a/drivers/gpu/drm/via/via_mm.c
+++ b/drivers/gpu/drm/via/via_mm.c
@@ -140,11 +140,11 @@ int via_mem_alloc(struct drm_device *dev, void *data,
        if (mem->type == VIA_MEM_AGP)
                retval = drm_mm_insert_node(&dev_priv->agp_mm,
                                            &item->mm_node,
-                                           tmpSize, 0);
+                                           tmpSize, 0, false);
        else
                retval = drm_mm_insert_node(&dev_priv->vram_mm,
                                            &item->mm_node,
-                                           tmpSize, 0);
+                                           tmpSize, 0, false);
        if (retval)
                goto fail_alloc;

diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
index 4d06edb..adae5db 100644
--- a/include/drm/drm_mm.h
+++ b/include/drm/drm_mm.h
@@ -188,28 +188,42 @@ static inline struct drm_mm_node 
*drm_mm_get_block_atomic_range(
                                                start, end, 1);
 }

-extern int drm_mm_insert_node(struct drm_mm *mm,
-                             struct drm_mm_node *node,
-                             unsigned long size,
-                             unsigned alignment);
-extern int drm_mm_insert_node_in_range(struct drm_mm *mm,
-                                      struct drm_mm_node *node,
-                                      unsigned long size,
-                                      unsigned alignment,
-                                      unsigned long start,
-                                      unsigned long end);
 extern int drm_mm_insert_node_generic(struct drm_mm *mm,
                                      struct drm_mm_node *node,
                                      unsigned long size,
                                      unsigned alignment,
-                                     unsigned long color);
+                                     unsigned long color,
+                                     bool best_match);
+static inline int drm_mm_insert_node(struct drm_mm *mm,
+                                    struct drm_mm_node *node,
+                                    unsigned long size,
+                                    unsigned alignment,
+                                    bool best_match)
+{
+       return drm_mm_insert_node_generic(mm, node, size, alignment, 0,
+                                         best_match);
+}
+
 extern int drm_mm_insert_node_in_range_generic(struct drm_mm *mm,
                                       struct drm_mm_node *node,
                                       unsigned long size,
                                       unsigned alignment,
                                       unsigned long color,
                                       unsigned long start,
-                                      unsigned long end);
+                                      unsigned long end,
+                                      bool best_match);
+static inline int drm_mm_insert_node_in_range(struct drm_mm *mm,
+                                             struct drm_mm_node *node,
+                                             unsigned long size,
+                                             unsigned alignment,
+                                             unsigned long start,
+                                             unsigned long end,
+                                             bool best_match)
+{
+       return drm_mm_insert_node_in_range_generic(mm, node, size, alignment,
+                                                  0, start, end, best_match);
+}
+
 extern void drm_mm_put_block(struct drm_mm_node *cur);
 extern void drm_mm_remove_node(struct drm_mm_node *node);
 extern void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node 
*new);
-- 
1.8.3.2

Reply via email to