On Thu, Jul 25, 2013 at 03:56:01PM +0200, David Herrmann wrote: > i915 is the last user of the weird search+get_block drm_mm API. Convert it > to an explicit kmalloc()+insert_node(). This drops the last user of the > node-cache in drm_mm. We can remove it now in a follow-up patch. > > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Signed-off-by: David Herrmann <dh.herrmann@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_stolen.c | 72 ++++++++++++++++++++++------------ > 1 file changed, 47 insertions(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c > index 5521833..7a2f040 100644 > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c > @@ -112,31 +112,39 @@ static int i915_setup_compression(struct drm_device *dev, int size) > { > struct drm_i915_private *dev_priv = dev->dev_private; > struct drm_mm_node *compressed_fb, *uninitialized_var(compressed_llb); > + int ret; > > - /* Try to over-allocate to reduce reallocations and fragmentation */ > - compressed_fb = drm_mm_search_free(&dev_priv->mm.stolen, > - size <<= 1, 4096, 0); > - if (!compressed_fb) > - compressed_fb = drm_mm_search_free(&dev_priv->mm.stolen, > - size >>= 1, 4096, 0); > - if (compressed_fb) > - compressed_fb = drm_mm_get_block(compressed_fb, size, 4096); > + compressed_fb = kzalloc(sizeof(*compressed_fb), GFP_KERNEL); > if (!compressed_fb) > goto err; > > + /* Try to over-allocate to reduce reallocations and fragmentation */ > + ret = drm_mm_insert_node(&dev_priv->mm.stolen, compressed_fb, > + size <<= 1, 4096, false); > + if (ret) > + ret = drm_mm_insert_node(&dev_priv->mm.stolen, compressed_fb, > + size >>= 1, 4096, false); > + if (ret) { > + kfree(compressed_fb); > + goto err; kfree(NULL) is legal so move the kfree(compressed_fb) below err: and we do a similar cleanup for err_fb: -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel