Daniel Vetter <daniel.vetter@xxxxxxxx> writes: > While at it inline the free functions - they don't actually free the > ppgtt, just clean up the allocations done for it. > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 30 ++++++++++-------------------- > 1 file changed, 10 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 290db48faf27..abb11f139d25 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -672,8 +672,10 @@ static void gen8_free_page_tables(struct i915_page_directory *pd, struct drm_dev > } > } > > -static void gen8_ppgtt_free(struct i915_hw_ppgtt *ppgtt) > +static void gen8_ppgtt_cleanup(struct i915_address_space *vm) > { > + struct i915_hw_ppgtt *ppgtt = > + container_of(vm, struct i915_hw_ppgtt, base); > int i; > > for_each_set_bit(i, ppgtt->pdp.used_pdpes, GEN8_LEGACY_PDPES) { > @@ -688,14 +690,6 @@ static void gen8_ppgtt_free(struct i915_hw_ppgtt *ppgtt) > unmap_and_free_pt(ppgtt->scratch_pt, ppgtt->base.dev); > } > > -static void gen8_ppgtt_cleanup(struct i915_address_space *vm) > -{ > - struct i915_hw_ppgtt *ppgtt = > - container_of(vm, struct i915_hw_ppgtt, base); > - > - gen8_ppgtt_free(ppgtt); > -} > - > /** > * gen8_ppgtt_alloc_pagetabs() - Allocate page tables for VA range. > * @ppgtt: Master ppgtt structure. > @@ -1454,11 +1448,16 @@ unwind_out: > return ret; > } > > -static void gen6_ppgtt_free(struct i915_hw_ppgtt *ppgtt) > +static void gen6_ppgtt_cleanup(struct i915_address_space *vm) > { > + struct i915_hw_ppgtt *ppgtt = > + container_of(vm, struct i915_hw_ppgtt, base); > struct i915_page_table *pt; > uint32_t pde; > > + > + drm_mm_remove_node(&ppgtt->node); > + > gen6_for_all_pdes(pt, ppgtt, pde) { > if (pt != ppgtt->scratch_pt) > unmap_and_free_pt(pt, ppgtt->base.dev); > @@ -1468,16 +1467,6 @@ static void gen6_ppgtt_free(struct i915_hw_ppgtt *ppgtt) > unmap_and_free_pd(&ppgtt->pd, ppgtt->base.dev); > } > > -static void gen6_ppgtt_cleanup(struct i915_address_space *vm) > -{ > - struct i915_hw_ppgtt *ppgtt = > - container_of(vm, struct i915_hw_ppgtt, base); > - > - drm_mm_remove_node(&ppgtt->node); > - > - gen6_ppgtt_free(ppgtt); > -} > - > static int gen6_ppgtt_allocate_page_directories(struct i915_hw_ppgtt *ppgtt) > { > struct drm_device *dev = ppgtt->base.dev; > @@ -2268,6 +2257,7 @@ static int i915_gem_setup_global_gtt(struct drm_device *dev, > > ret = __hw_ppgtt_init(dev, ppgtt, true); > if (ret) { > + ppgtt->base.cleanup(&ppgtt->base); > kfree(ppgtt); > return ret; > } > -- > 2.1.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx