From: Mika Kuoppala <mika.kuoppala@linux.intel.com>
To: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: Re: [PATCH 03/17] drm/i915: Clean up aliasing ppgtt correctly on error paths
Date: Fri, 17 Apr 2015 17:34:01 +0300 [thread overview]
Message-ID: <87k2xa259i.fsf@gaia.fi.intel.com> (raw)
In-Reply-To: <1429025727-15380-4-git-send-email-daniel.vetter@ffwll.ch>
Daniel Vetter <daniel.vetter@ffwll.ch> 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@ffwll.ch>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
> ---
> 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@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-04-17 14:34 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-14 15:35 [PATCH 00/17] i915_gem_gtt.c polish Daniel Vetter
2015-04-14 15:35 ` [PATCH 01/17] drm/i915: Move gen8 clear_range vfunc setup into common code Daniel Vetter
2015-04-17 14:11 ` Mika Kuoppala
2015-04-14 15:35 ` [PATCH 02/17] drm/i915: Move vma vfuns to adddress_space Daniel Vetter
2015-04-14 16:09 ` Chris Wilson
2015-04-14 16:12 ` Chris Wilson
2015-04-14 17:08 ` Daniel Vetter
2015-04-14 17:23 ` Chris Wilson
2015-04-16 6:18 ` Mika Kuoppala
2015-04-16 7:39 ` Chris Wilson
2015-04-17 14:15 ` Mika Kuoppala
2015-04-14 15:35 ` [PATCH 03/17] drm/i915: Clean up aliasing ppgtt correctly on error paths Daniel Vetter
2015-04-17 14:34 ` Mika Kuoppala [this message]
2015-04-14 15:35 ` [PATCH 04/17] drm/i915: Unify aliasing ppgtt handling Daniel Vetter
2015-04-17 13:36 ` Mika Kuoppala
2015-04-17 16:21 ` Mika Kuoppala
2015-04-14 15:35 ` [PATCH 05/17] drm/i915: Move PTE_READ_ONLY to ->pte_encode vfunc Daniel Vetter
2015-04-17 16:22 ` Mika Kuoppala
2015-04-14 15:35 ` [PATCH 06/17] drm/i915: Dont clear PIN_GLOBAL in the execbuf pinning fallback Daniel Vetter
2015-04-14 15:53 ` Chris Wilson
2015-04-14 16:33 ` Chris Wilson
2015-04-14 17:01 ` [PATCH] " Daniel Vetter
2015-04-15 21:50 ` shuang.he
2015-04-14 15:35 ` [PATCH 07/17] drm/i915: Drop redundant GGTT rebinding Daniel Vetter
2015-04-14 16:03 ` Chris Wilson
2015-04-14 15:35 ` [PATCH 08/17] drm/i915: Don't look at pg_dirty_rings for aliasing ppgtt Daniel Vetter
2015-04-14 16:06 ` Chris Wilson
2015-04-14 17:11 ` Daniel Vetter
2015-04-14 17:53 ` Chris Wilson
2015-04-15 10:44 ` Daniel Vetter
2015-04-17 13:49 ` Mika Kuoppala
2015-04-20 16:02 ` Daniel Vetter
2015-04-20 16:08 ` Daniel Vetter
2015-04-21 8:18 ` Mika Kuoppala
2015-04-23 15:43 ` Chris Wilson
2015-04-23 18:56 ` Daniel Vetter
2015-04-23 19:52 ` Chris Wilson
2015-04-23 21:52 ` Chris Wilson
2015-07-31 16:26 ` Chris Wilson
2015-07-31 17:38 ` Chris Wilson
2015-04-14 15:35 ` [PATCH 09/17] drm/i915: Don't use atomics for pg_dirty_rings Daniel Vetter
2015-04-17 16:39 ` Mika Kuoppala
2015-04-14 15:35 ` [PATCH 10/17] drm/i915: Remove misleading comment around bind_to_vm Daniel Vetter
2015-04-17 18:09 ` Mika Kuoppala
2015-04-14 15:35 ` [PATCH 11/17] drm/i915: Fix up the vma aliasing ppgtt binding Daniel Vetter
2015-04-15 10:47 ` Chris Wilson
2015-04-16 8:01 ` Daniel Vetter
2015-04-16 8:07 ` Chris Wilson
2015-04-16 8:57 ` Daniel Vetter
2015-04-20 16:04 ` [PATCH] " Daniel Vetter
2015-04-21 13:29 ` Mika Kuoppala
2015-04-24 11:14 ` Chris Wilson
2015-04-24 11:55 ` Chris Wilson
2015-05-04 8:49 ` Daniel Vetter
2015-05-04 9:06 ` Chris Wilson
2015-05-04 9:20 ` Daniel Vetter
2015-04-14 15:35 ` [PATCH 12/17] drm/i915: Arm cmd parser with aliasng ppgtt only Daniel Vetter
2015-04-14 18:10 ` Chris Wilson
2015-04-15 9:43 ` Daniel Vetter
2015-04-15 10:07 ` Chris Wilson
2015-04-15 10:28 ` Daniel Vetter
2015-04-30 10:37 ` Jani Nikula
2015-04-24 12:57 ` Mika Kuoppala
2015-05-04 8:54 ` [PATCH] drm/i915: Simplify cmd-parser DISPATCH_SECURE check Daniel Vetter
2015-05-04 9:23 ` Daniel Vetter
2015-05-04 12:52 ` shuang.he
2015-04-14 15:35 ` [PATCH 13/17] drm/i915: move i915_gem_restore_gtt_mappings around Daniel Vetter
2015-04-14 15:35 ` [PATCH 14/17] drm/i915: Move ppgtt_bind/unbind around Daniel Vetter
2015-04-14 15:35 ` [PATCH 15/17] drm/i915: Unduplicate i915_ggtt_unbind/bind_vma Daniel Vetter
2015-04-14 15:35 ` [PATCH 16/17] drm/i915: Don't try to outsmart gcc in i915_gem_gtt.c Daniel Vetter
2015-04-14 15:35 ` [PATCH 17/17] drm/i915: Move i915_get_ggtt_vma_pages into ggtt_bind_vma Daniel Vetter
2015-04-21 13:36 ` Mika Kuoppala
2015-04-23 19:08 ` Daniel Vetter
2015-04-15 10:49 ` [PATCH 00/17] i915_gem_gtt.c polish Chris Wilson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k2xa259i.fsf@gaia.fi.intel.com \
--to=mika.kuoppala@linux.intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.