From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Intel-gfx@lists.freedesktop.org
Subject: [RFC 25/31] drm/i915: Compartmentalize i915_gem_init_ggtt
Date: Fri, 14 Jun 2019 16:17:25 +0100 [thread overview]
Message-ID: <20190614151731.17608-26-tvrtko.ursulin@linux.intel.com> (raw)
In-Reply-To: <20190614151731.17608-1-tvrtko.ursulin@linux.intel.com>
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Continuing on the theme of better logical organization of our code, make
the first step towards making the ggtt code better isolated from wider
struct drm_i915_private.
v2:
* Bring the ickle onion unwind back. (Chris)
* Rename to i915_init_ggtt. (Chris)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
drivers/gpu/drm/i915/i915_gem.c | 2 +-
drivers/gpu/drm/i915/i915_gem_gtt.c | 40 +++++++++++++++++++----------
drivers/gpu/drm/i915/i915_gem_gtt.h | 2 +-
3 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index b0cfcda67984..248b473c3bee 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1512,7 +1512,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
mutex_lock(&dev_priv->drm.struct_mutex);
intel_uncore_forcewake_get(&dev_priv->uncore, FORCEWAKE_ALL);
- ret = i915_gem_init_ggtt(dev_priv);
+ ret = i915_init_ggtt(dev_priv);
if (ret) {
GEM_BUG_ON(ret == -EIO);
goto err_unlock;
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index aa1e3a7f5a83..f97f30031d47 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -2866,7 +2866,13 @@ static void ggtt_release_guc_top(struct i915_ggtt *ggtt)
drm_mm_remove_node(&ggtt->uc_fw);
}
-int i915_gem_init_ggtt(struct drm_i915_private *dev_priv)
+static void cleanup_init_ggtt(struct i915_ggtt *ggtt)
+{
+ ggtt_release_guc_top(ggtt);
+ drm_mm_remove_node(&ggtt->error_capture);
+}
+
+static int init_ggtt(struct i915_ggtt *ggtt)
{
/* Let GEM Manage all of the aperture.
*
@@ -2877,7 +2883,6 @@ int i915_gem_init_ggtt(struct drm_i915_private *dev_priv)
* aperture. One page should be enough to keep any prefetching inside
* of the aperture.
*/
- struct i915_ggtt *ggtt = &dev_priv->ggtt;
unsigned long hole_start, hole_end;
struct drm_mm_node *entry;
int ret;
@@ -2889,7 +2894,7 @@ int i915_gem_init_ggtt(struct drm_i915_private *dev_priv)
* why.
*/
ggtt->pin_bias = max_t(u32, I915_GTT_PAGE_SIZE,
- intel_wopcm_guc_size(&dev_priv->wopcm));
+ intel_wopcm_guc_size(&ggtt->vm.i915->wopcm));
ret = intel_vgt_balloon(ggtt);
if (ret)
@@ -2910,7 +2915,7 @@ int i915_gem_init_ggtt(struct drm_i915_private *dev_priv)
*/
ret = ggtt_reserve_guc_top(ggtt);
if (ret)
- goto err_reserve;
+ goto err;
/* Clear any non-preallocated blocks */
drm_mm_for_each_hole(entry, &ggtt->vm.mm, hole_start, hole_end) {
@@ -2923,19 +2928,28 @@ int i915_gem_init_ggtt(struct drm_i915_private *dev_priv)
/* And finally clear the reserved guard page */
ggtt->vm.clear_range(&ggtt->vm, ggtt->vm.total - PAGE_SIZE, PAGE_SIZE);
- if (INTEL_PPGTT(dev_priv) == INTEL_PPGTT_ALIASING) {
- ret = init_aliasing_ppgtt(dev_priv);
+ return 0;
+
+err:
+ cleanup_init_ggtt(ggtt);
+ return ret;
+}
+
+int i915_init_ggtt(struct drm_i915_private *i915)
+{
+ int ret;
+
+ ret = init_ggtt(&i915->ggtt);
+ if (ret)
+ return ret;
+
+ if (INTEL_PPGTT(i915) == INTEL_PPGTT_ALIASING) {
+ ret = init_aliasing_ppgtt(i915);
if (ret)
- goto err_appgtt;
+ cleanup_init_ggtt(&i915->ggtt);
}
return 0;
-
-err_appgtt:
- ggtt_release_guc_top(ggtt);
-err_reserve:
- drm_mm_remove_node(&ggtt->error_capture);
- return ret;
}
static void ggtt_cleanup_hw(struct i915_ggtt *ggtt)
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h
index 9a3d96370f07..827af6ba36c7 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.h
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
@@ -646,7 +646,7 @@ int i915_ggtt_init_hw(struct drm_i915_private *dev_priv);
int i915_ggtt_enable_hw(struct drm_i915_private *dev_priv);
void i915_ggtt_enable_guc(struct drm_i915_private *i915);
void i915_ggtt_disable_guc(struct drm_i915_private *i915);
-int i915_gem_init_ggtt(struct drm_i915_private *dev_priv);
+int i915_init_ggtt(struct drm_i915_private *dev_priv);
void i915_ggtt_cleanup_hw(struct drm_i915_private *dev_priv);
int i915_ppgtt_init_hw(struct intel_gt *gt);
--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-06-14 15:18 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-14 15:17 [RFC v4 00/31] Implicit dev_priv removal and GT compartmentalization Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 01/31] drm/i915: Convert intel_vgt_(de)balloon to uncore Tvrtko Ursulin
2019-06-14 17:18 ` Michal Wajdeczko
2019-06-14 17:43 ` Chris Wilson
2019-06-17 8:30 ` Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 02/31] drm/i915: Introduce struct intel_gt as replacement for anonymous i915->gt Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 03/31] drm/i915: Move intel_gt initialization to a separate file Tvrtko Ursulin
2019-06-14 15:32 ` Rodrigo Vivi
2019-06-14 16:13 ` Chris Wilson
2019-06-14 16:14 ` Chris Wilson
2019-06-14 16:16 ` Chris Wilson
2019-06-14 15:17 ` [RFC 04/31] drm/i915: Store some backpointers in struct intel_gt Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 05/31] drm/i915: Make i915_check_and_clear_faults take intel_gt Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 06/31] drm/i915: Convert i915_gem_init_swizzling to intel_gt Tvrtko Ursulin
2019-06-14 15:25 ` Rodrigo Vivi
2019-06-14 15:36 ` Tvrtko Ursulin
2019-06-14 16:16 ` Rodrigo Vivi
2019-06-14 16:21 ` Tvrtko Ursulin
2019-06-14 17:20 ` Rodrigo Vivi
2019-06-14 17:05 ` Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 07/31] drm/i915: Convert init_unused_rings " Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 08/31] drm/i915: Convert gt workarounds " Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 09/31] drm/i915: Store backpointer to intel_gt in the engine Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 10/31] drm/i915: Convert intel_mocs_init_l3cc_table to intel_gt Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 11/31] drm/i915: Convert i915_ppgtt_init_hw " Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 12/31] drm/i915: Consolidate some open coded mmio rmw Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 13/31] drm/i915: Convert i915_gem_init_hw to intel_gt Tvrtko Ursulin
2019-06-14 15:50 ` Rodrigo Vivi
2019-06-14 15:17 ` [RFC 14/31] drm/i915: Move intel_engines_resume into common init Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 15/31] drm/i915: Stop using I915_READ/WRITE in intel_wopcm_init_hw Tvrtko Ursulin
2019-06-14 15:52 ` Rodrigo Vivi
2019-06-14 15:17 ` [RFC 16/31] drm/i915: Compartmentalize i915_ggtt_probe_hw Tvrtko Ursulin
2019-06-14 15:59 ` Rodrigo Vivi
2019-06-14 15:17 ` [RFC 17/31] drm/i915: Compartmentalize i915_ggtt_init_hw Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 18/31] drm/i915: Make ggtt invalidation work on ggtt Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 19/31] drm/i915: Store intel_gt backpointer in vm Tvrtko Ursulin
2019-06-14 17:34 ` Rodrigo Vivi
2019-06-14 15:17 ` [RFC 20/31] drm/i915: Compartmentalize i915_gem_suspend/restore_gtt_mappings Tvrtko Ursulin
2019-06-14 16:19 ` Chris Wilson
2019-06-14 16:22 ` Tvrtko Ursulin
2019-06-14 17:52 ` Rodrigo Vivi
2019-06-14 15:17 ` [RFC 21/31] drm/i915: Convert i915_gem_flush_ggtt_writes to intel_gt Tvrtko Ursulin
2019-06-14 16:17 ` Tvrtko Ursulin
2019-06-14 16:24 ` Chris Wilson
2019-06-14 15:17 ` [RFC 22/31] drm/i915: Move i915_gem_chipset_flush " Tvrtko Ursulin
2019-06-14 16:26 ` Chris Wilson
2019-06-14 16:30 ` Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 23/31] drm/i915: Compartmentalize timeline_init/park/fini Tvrtko Ursulin
2019-06-14 16:28 ` Chris Wilson
2019-06-14 15:17 ` [RFC 24/31] drm/i915: Compartmentalize i915_ggtt_cleanup_hw Tvrtko Ursulin
2019-06-14 16:30 ` Chris Wilson
2019-06-14 15:17 ` Tvrtko Ursulin [this message]
2019-06-14 16:32 ` [RFC 25/31] drm/i915: Compartmentalize i915_gem_init_ggtt Chris Wilson
2019-06-14 16:38 ` Tvrtko Ursulin
2019-06-14 15:17 ` [RFC 26/31] drm/i915: Store ggtt pointer in intel_gt Tvrtko Ursulin
2019-06-14 17:40 ` Rodrigo Vivi
2019-06-14 15:17 ` [RFC 27/31] drm/i915: Compartmentalize ring buffer creation Tvrtko Ursulin
2019-06-14 16:34 ` Chris Wilson
2019-06-14 15:17 ` [RFC 28/31] drm/i915: Save trip via top-level i915 in a few more places Tvrtko Ursulin
2019-06-14 16:36 ` Chris Wilson
2019-06-14 15:17 ` [RFC 29/31] drm/i915: Make timelines gt centric Tvrtko Ursulin
2019-06-14 16:37 ` Chris Wilson
2019-06-14 15:17 ` [RFC 30/31] drm/i915: Rename i915_timeline to intel_timeline and move under gt Tvrtko Ursulin
2019-06-14 16:38 ` Chris Wilson
2019-06-14 15:17 ` [RFC 31/31] drm/i915: Eliminate dual personality of i915_scratch_offset Tvrtko Ursulin
2019-06-14 16:40 ` Chris Wilson
2019-06-14 16:46 ` Tvrtko Ursulin
2019-06-14 15:29 ` [RFC v4 00/31] Implicit dev_priv removal and GT compartmentalization Rodrigo Vivi
2019-06-14 15:48 ` ✗ Fi.CI.BAT: failure for Implicit dev_priv removal and GT compartmentalization (rev6) Patchwork
2019-06-14 16:54 ` ✗ Fi.CI.BAT: failure for Implicit dev_priv removal and GT compartmentalization (rev7) Patchwork
2019-06-14 17:38 ` ✗ Fi.CI.BAT: failure for Implicit dev_priv removal and GT compartmentalization (rev8) Patchwork
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=20190614151731.17608-26-tvrtko.ursulin@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox