Reviewed-by: Rodrigo Vivi <[email protected]>
On Thu, Jun 19, 2014 at 12:06 PM, Ben Widawsky <[email protected]> wrote: > We are already using the size to determine whether or not to free the > object, so there is no functional change there. Almost everything else > has changed to static allocations of the drm_mm_node too. > > Aside from bringing this inline with much of our other code, this makes > error paths slightly simpler, which benefits the look of an upcoming > patch. > > Signed-off-by: Ben Widawsky <[email protected]> > --- > drivers/gpu/drm/i915/i915_drv.h | 2 +- > drivers/gpu/drm/i915/i915_gem_stolen.c | 27 ++++++++++----------------- > 2 files changed, 11 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h > b/drivers/gpu/drm/i915/i915_drv.h > index 0640071..0003206 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -605,7 +605,7 @@ struct i915_fbc { > enum plane plane; > int y; > > - struct drm_mm_node *compressed_fb; > + struct drm_mm_node compressed_fb; > struct drm_mm_node *compressed_llb; > > struct intel_fbc_work { > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c > b/drivers/gpu/drm/i915/i915_gem_stolen.c > index 6441178..642fd36 100644 > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c > @@ -106,27 +106,25 @@ static unsigned long i915_stolen_to_physical(struct > drm_device *dev) > 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); > + struct drm_mm_node *uninitialized_var(compressed_llb); > int ret; > > - compressed_fb = kzalloc(sizeof(*compressed_fb), GFP_KERNEL); > - if (!compressed_fb) > - goto err_llb; > - > /* Try to over-allocate to reduce reallocations and fragmentation > */ > - ret = drm_mm_insert_node(&dev_priv->mm.stolen, compressed_fb, > + ret = drm_mm_insert_node(&dev_priv->mm.stolen, > + &dev_priv->fbc.compressed_fb, > size <<= 1, 4096, DRM_MM_SEARCH_DEFAULT); > if (ret) > - ret = drm_mm_insert_node(&dev_priv->mm.stolen, > compressed_fb, > + ret = drm_mm_insert_node(&dev_priv->mm.stolen, > + &dev_priv->fbc.compressed_fb, > size >>= 1, 4096, > DRM_MM_SEARCH_DEFAULT); > if (ret) > goto err_llb; > > if (HAS_PCH_SPLIT(dev)) > - I915_WRITE(ILK_DPFC_CB_BASE, compressed_fb->start); > + I915_WRITE(ILK_DPFC_CB_BASE, > dev_priv->fbc.compressed_fb.start); > else if (IS_GM45(dev)) { > - I915_WRITE(DPFC_CB_BASE, compressed_fb->start); > + I915_WRITE(DPFC_CB_BASE, > dev_priv->fbc.compressed_fb.start); > } else { > compressed_llb = kzalloc(sizeof(*compressed_llb), > GFP_KERNEL); > if (!compressed_llb) > @@ -140,12 +138,11 @@ static int i915_setup_compression(struct drm_device > *dev, int size) > dev_priv->fbc.compressed_llb = compressed_llb; > > I915_WRITE(FBC_CFB_BASE, > - dev_priv->mm.stolen_base + > compressed_fb->start); > + dev_priv->mm.stolen_base + > dev_priv->fbc.compressed_fb.start); > I915_WRITE(FBC_LL_BASE, > dev_priv->mm.stolen_base + > compressed_llb->start); > } > > - dev_priv->fbc.compressed_fb = compressed_fb; > dev_priv->fbc.size = size; > > DRM_DEBUG_KMS("reserved %d bytes of contiguous stolen space for > FBC\n", > @@ -155,9 +152,8 @@ static int i915_setup_compression(struct drm_device > *dev, int size) > > err_fb: > kfree(compressed_llb); > - drm_mm_remove_node(compressed_fb); > + drm_mm_remove_node(&dev_priv->fbc.compressed_fb); > err_llb: > - kfree(compressed_fb); > pr_info_once("drm: not enough stolen space for compressed buffer > (need %d more bytes), disabling. Hint: you may be able to increase stolen > memory size in the BIOS to avoid this.\n", size); > return -ENOSPC; > } > @@ -185,10 +181,7 @@ void i915_gem_stolen_cleanup_compression(struct > drm_device *dev) > if (dev_priv->fbc.size == 0) > return; > > - if (dev_priv->fbc.compressed_fb) { > - drm_mm_remove_node(dev_priv->fbc.compressed_fb); > - kfree(dev_priv->fbc.compressed_fb); > - } > + drm_mm_remove_node(&dev_priv->fbc.compressed_fb); > > if (dev_priv->fbc.compressed_llb) { > drm_mm_remove_node(dev_priv->fbc.compressed_llb); > -- > 2.0.0 > > _______________________________________________ > Intel-gfx mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > -- Rodrigo Vivi Blog: http://blog.vivi.eng.br
_______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
