On Fri, 07 Dec 2012, Chris Wilson <chris at chris-wilson.co.uk> wrote: > Required by i915 in order to avoid the allocation in the middle of > manipulating the drm_mm lists. > > Use a pair of stubs to preserve the existing EXPORT_SYMBOLs for > backporting; to be removed later. Regardless of whether you choose to do anything about the two nitpicks below or not, Reviewed-by: Jani Nikula <jani.nikula at intel.com> > > Cc: Dave Airlie <airlied at redhat.com> > Cc: dri-devel at lists.freedesktop.org > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> > --- > drivers/gpu/drm/drm_mm.c | 42 ++++++++++++++++++++++++++++++------------ > include/drm/drm_mm.h | 27 +++++++++++++++++++++++---- > 2 files changed, 53 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c > index 0761a03..d93dc05 100644 > --- a/drivers/gpu/drm/drm_mm.c > +++ b/drivers/gpu/drm/drm_mm.c > @@ -184,19 +184,27 @@ EXPORT_SYMBOL(drm_mm_get_block_generic); > * -ENOSPC if no suitable free area is available. The preallocated memory node > * must be cleared. > */ > -int drm_mm_insert_node(struct drm_mm *mm, struct drm_mm_node *node, > - unsigned long size, unsigned alignment) > +int drm_mm_insert_node_generic(struct drm_mm *mm, struct drm_mm_node *node, > + unsigned long size, unsigned alignment, > + unsigned long color, int atomic) > { > struct drm_mm_node *hole_node; > > - hole_node = drm_mm_search_free(mm, size, alignment, false); > + hole_node = drm_mm_search_free_generic(mm, size, alignment, > + color, atomic); The last param for drm_mm_search_free_generic is a bool, any reason not to make atomic a bool too? > if (!hole_node) > return -ENOSPC; > > - drm_mm_insert_helper(hole_node, node, size, alignment, 0); > - > + drm_mm_insert_helper(hole_node, node, size, alignment, color); > return 0; > } > +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, false); > +} > EXPORT_SYMBOL(drm_mm_insert_node); > > static void drm_mm_insert_helper_range(struct drm_mm_node *hole_node, > @@ -275,22 +283,32 @@ EXPORT_SYMBOL(drm_mm_get_block_range_generic); > * -ENOSPC if no suitable free area is available. This is for range > * restricted allocations. The preallocated memory node must be cleared. > */ > -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) > +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, > + int atomic) > { > struct drm_mm_node *hole_node; > > - hole_node = drm_mm_search_free_in_range(mm, size, alignment, > - start, end, false); > + hole_node = drm_mm_search_free_in_range_generic(mm, > + size, alignment, color, > + start, end, atomic); Same as above. > if (!hole_node) > return -ENOSPC; > > - drm_mm_insert_helper_range(hole_node, node, size, alignment, 0, > + drm_mm_insert_helper_range(hole_node, node, > + size, alignment, color, > start, end); > - > return 0; > } > +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, false); > +} > EXPORT_SYMBOL(drm_mm_insert_node_in_range); > > /** > diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h > index 06d7f79..87b0968 100644 > --- a/include/drm/drm_mm.h > +++ b/include/drm/drm_mm.h > @@ -158,12 +158,31 @@ static inline struct drm_mm_node *drm_mm_get_block_atomic_range( > return drm_mm_get_block_range_generic(parent, size, alignment, 0, > 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(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); > + 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, > + int atomic); > +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, > + int atomic); > 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.7.10.4 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel