All of lore.kernel.org
 help / color / mirror / Atom feed
From: oscar.mateo@intel.com
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 08/53] drm/i915/bdw: Macro for LRCs and module option for Execlists
Date: Fri, 13 Jun 2014 16:37:26 +0100	[thread overview]
Message-ID: <1402673891-14618-9-git-send-email-oscar.mateo@intel.com> (raw)
In-Reply-To: <1402673891-14618-1-git-send-email-oscar.mateo@intel.com>

From: Oscar Mateo <oscar.mateo@intel.com>

GEN8 brings an expansion of the HW contexts: "Logical Ring Contexts".
These expanded contexts enable a number of new abilities, especially
"Execlists".

The macro is defined to off until we have things in place to hope to
work. In dev_priv, lrc_enabled will reflect the state of whether or
not we've actually properly initialized these new contexts. This helps
the transition in the code but is a candidate for removal at some point.

v2: Rename "advanced contexts" to the more correct "logical ring
contexts".

v3: Add a module parameter to enable execlists. Execlist are relatively
new, and so it'd be wise to be able to switch back to ring submission
to debug subtle problems that will inevitably arise.

v4: Add an intel_enable_execlists function.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v1)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> (v3)
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com> (v2 & v4)
---
 drivers/gpu/drm/i915/i915_drv.h    | 6 ++++++
 drivers/gpu/drm/i915/i915_params.c | 6 ++++++
 drivers/gpu/drm/i915/intel_lrc.c   | 8 ++++++++
 3 files changed, 20 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index ccc1ba6..dac0db1 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1519,6 +1519,7 @@ struct drm_i915_private {
 
 	uint32_t hw_context_size;
 	struct list_head context_list;
+	bool lrc_enabled;
 
 	u32 fdi_rx_config;
 
@@ -1944,6 +1945,7 @@ struct drm_i915_cmd_table {
 #define I915_NEED_GFX_HWS(dev)	(INTEL_INFO(dev)->need_gfx_hws)
 
 #define HAS_HW_CONTEXTS(dev)	(INTEL_INFO(dev)->gen >= 6)
+#define HAS_LOGICAL_RING_CONTEXTS(dev)	0
 #define HAS_ALIASING_PPGTT(dev)	(INTEL_INFO(dev)->gen >= 6)
 #define HAS_PPGTT(dev)		(INTEL_INFO(dev)->gen >= 7 && !IS_GEN8(dev))
 #define USES_PPGTT(dev)		intel_enable_ppgtt(dev, false)
@@ -2029,6 +2031,7 @@ struct i915_params {
 	int enable_rc6;
 	int enable_fbc;
 	int enable_ppgtt;
+	int enable_execlists;
 	int enable_psr;
 	unsigned int preliminary_hw_support;
 	int disable_power_well;
@@ -2420,6 +2423,9 @@ struct intel_context *
 i915_gem_context_validate(struct drm_device *dev, struct drm_file *file,
 			  struct intel_engine_cs *ring, const u32 ctx_id);
 
+/* intel_lrc.c */
+bool intel_enable_execlists(struct drm_device *dev);
+
 /* i915_gem_render_state.c */
 int i915_gem_render_state_init(struct intel_engine_cs *ring);
 /* i915_gem_evict.c */
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index d05a2af..b7455f8 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -37,6 +37,7 @@ struct i915_params i915 __read_mostly = {
 	.enable_fbc = -1,
 	.enable_hangcheck = true,
 	.enable_ppgtt = -1,
+	.enable_execlists = -1,
 	.enable_psr = 0,
 	.preliminary_hw_support = IS_ENABLED(CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT),
 	.disable_power_well = 1,
@@ -116,6 +117,11 @@ MODULE_PARM_DESC(enable_ppgtt,
 	"Override PPGTT usage. "
 	"(-1=auto [default], 0=disabled, 1=aliasing, 2=full)");
 
+module_param_named(enable_execlists, i915.enable_execlists, int, 0400);
+MODULE_PARM_DESC(enable_execlists,
+	"Override execlists usage. "
+	"(-1=auto [default], 0=disabled, 1=enabled)");
+
 module_param_named(enable_psr, i915.enable_psr, int, 0600);
 MODULE_PARM_DESC(enable_psr, "Enable PSR (default: false)");
 
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 49bb6fc..58cead1 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -40,3 +40,11 @@
 #include <drm/drmP.h>
 #include <drm/i915_drm.h>
 #include "i915_drv.h"
+
+bool intel_enable_execlists(struct drm_device *dev)
+{
+	if (!i915.enable_execlists)
+		return false;
+
+	return HAS_LOGICAL_RING_CONTEXTS(dev) && USES_PPGTT(dev);
+}
-- 
1.9.0

  parent reply	other threads:[~2014-06-13 15:42 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-13 15:37 [PATCH 00/53] Execlists v3 oscar.mateo
2014-06-13 15:37 ` [PATCH 01/53] drm/i915: Extract context backing object allocation oscar.mateo
2014-06-13 15:37 ` [PATCH 02/53] drm/i915: Rename ctx->obj to ctx->render_obj oscar.mateo
2014-06-13 17:00   ` Daniel Vetter
2014-06-16 15:20     ` Mateo Lozano, Oscar
2014-06-13 17:15   ` Chris Wilson
2014-06-13 15:37 ` [PATCH 03/53] drm/i915: Add a dev pointer to the context oscar.mateo
2014-06-13 15:37 ` [PATCH 04/53] drm/i915: Extract ringbuffer destroy & make alloc outside accesible oscar.mateo
2014-06-18 21:39   ` Volkin, Bradley D
2014-06-19 10:42     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 05/53] drm/i915: Move i915_gem_validate_context() to i915_gem_context.c oscar.mateo
2014-06-13 17:11   ` Chris Wilson
2014-06-16 15:18     ` Mateo Lozano, Oscar
2014-06-18 20:00       ` Volkin, Bradley D
2014-06-13 15:37 ` [PATCH 06/53] drm/i915/bdw: Introduce one context backing object per engine oscar.mateo
2014-06-18 20:16   ` Daniel Vetter
2014-06-19  8:52     ` Mateo Lozano, Oscar
2014-06-19 10:57       ` Daniel Vetter
2014-06-13 15:37 ` [PATCH 07/53] drm/i915/bdw: New file for Logical Ring Contexts and Execlists oscar.mateo
2014-06-18 20:17   ` Daniel Vetter
2014-06-19  9:01     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` oscar.mateo [this message]
2014-06-18 20:19   ` [PATCH 08/53] drm/i915/bdw: Macro for LRCs and module option for Execlists Daniel Vetter
2014-06-19  9:04     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 09/53] drm/i915/bdw: Initialization for Logical Ring Contexts oscar.mateo
2014-06-18 20:24   ` Daniel Vetter
2014-06-19  9:23     ` Mateo Lozano, Oscar
2014-06-19 10:08       ` Daniel Vetter
2014-06-19 10:10         ` Mateo Lozano, Oscar
2014-06-19 10:34           ` Daniel Vetter
2014-06-13 15:37 ` [PATCH 10/53] drm/i915/bdw: A bit more advanced context init/fini oscar.mateo
2014-06-18 22:13   ` Volkin, Bradley D
2014-06-19  6:13     ` Daniel Vetter
2014-06-13 15:37 ` [PATCH 11/53] drm/i915/bdw: Allocate ringbuffers for Logical Ring Contexts oscar.mateo
2014-06-18 22:19   ` Volkin, Bradley D
2014-06-23 12:07     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 12/53] drm/i915/bdw: Populate LR contexts (somewhat) oscar.mateo
2014-06-18 23:24   ` Volkin, Bradley D
2014-06-23 12:42     ` Mateo Lozano, Oscar
2014-06-23 15:05       ` Volkin, Bradley D
2014-06-23 15:11         ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 13/53] drm/i915/bdw: Deferred creation of user-created LRCs oscar.mateo
2014-06-18 20:27   ` Daniel Vetter
2014-06-13 15:37 ` [PATCH 14/53] drm/i915/bdw: Render moot context reset and switch when LRCs are enabled oscar.mateo
2014-06-13 15:37 ` [PATCH 15/53] drm/i915/bdw: Don't write PDP in the legacy way when using LRCs oscar.mateo
2014-06-18 23:42   ` Volkin, Bradley D
2014-06-23 12:45     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 16/53] drm/i915/bdw: Skeleton for the new logical rings submission path oscar.mateo
2014-06-13 15:37 ` [PATCH 17/53] drm/i915/bdw: Generic logical ring init and cleanup oscar.mateo
2014-06-13 15:37 ` [PATCH 18/53] drm/i915/bdw: New header file for LRs, LRCs and Execlists oscar.mateo
2014-06-13 15:37 ` [PATCH 19/53] drm/i915: Extract pipe control fini & make init outside accesible oscar.mateo
2014-06-18 20:31   ` Daniel Vetter
2014-06-19  0:04   ` Volkin, Bradley D
2014-06-19 10:58     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 20/53] drm/i915/bdw: GEN-specific logical ring init oscar.mateo
2014-06-13 15:37 ` [PATCH 21/53] drm/i915/bdw: GEN-specific logical ring set/get seqno oscar.mateo
2014-06-13 15:37 ` [PATCH 22/53] drm/i915: Make ring_space more generic and outside accesible oscar.mateo
2014-06-13 15:37 ` [PATCH 23/53] drm/i915: Generalize intel_ring_get_tail oscar.mateo
2014-06-20 20:17   ` Volkin, Bradley D
2014-06-13 15:37 ` [PATCH 24/53] drm/i915: Make intel_ring_stopped outside accesible oscar.mateo
2014-06-13 15:37 ` [PATCH 25/53] drm/i915/bdw: GEN-specific logical ring submit context (somewhat) oscar.mateo
2014-06-20 20:28   ` Volkin, Bradley D
2014-06-23 12:49     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 26/53] drm/i915/bdw: New logical ring submission mechanism oscar.mateo
2014-06-20 21:00   ` Volkin, Bradley D
2014-06-23 13:09     ` Mateo Lozano, Oscar
2014-06-23 13:13       ` Chris Wilson
2014-06-23 13:18         ` Mateo Lozano, Oscar
2014-06-23 13:27           ` Chris Wilson
2014-06-23 13:36             ` Mateo Lozano, Oscar
2014-06-23 13:41               ` Chris Wilson
2014-06-23 14:35                 ` Mateo Lozano, Oscar
2014-06-23 19:10                   ` Volkin, Bradley D
2014-06-24 12:29                     ` Mateo Lozano, Oscar
2014-07-07 12:39                       ` Daniel Vetter
2014-06-24  0:23                   ` Ben Widawsky
2014-06-24 11:45                     ` Mateo Lozano, Oscar
2014-06-24 14:41                       ` Volkin, Bradley D
2014-06-24 17:19         ` Jesse Barnes
2014-06-26 13:28           ` Mateo Lozano, Oscar
2014-07-07 12:41         ` Daniel Vetter
2014-06-13 15:37 ` [PATCH 27/53] drm/i915/bdw: GEN-specific logical ring emit request oscar.mateo
2014-06-20 21:18   ` Volkin, Bradley D
2014-06-23 15:48     ` Mateo Lozano, Oscar
2014-06-13 15:37 ` [PATCH 28/53] drm/i915/bdw: GEN-specific logical ring emit flush oscar.mateo
2014-06-20 21:39   ` Volkin, Bradley D
2014-06-13 15:37 ` [PATCH 29/53] drm/i915/bdw: Emission of requests with logical rings oscar.mateo
2014-06-13 15:37 ` [PATCH 30/53] drm/i915/bdw: Ring idle and stop " oscar.mateo
2014-06-13 15:37 ` [PATCH 31/53] drm/i915/bdw: Interrupts " oscar.mateo
2014-06-13 15:37 ` [PATCH 32/53] drm/i915/bdw: GEN-specific logical ring emit batchbuffer start oscar.mateo
2014-06-13 15:37 ` [PATCH 33/53] drm/i915: Extract the actual workload submission mechanism from execbuffer oscar.mateo
2014-06-13 15:37 ` [PATCH 34/53] drm/i915: Make move_to_active and retire_commands outside accesible oscar.mateo
2014-06-13 15:37 ` [PATCH 35/53] drm/i915/bdw: Workload submission mechanism for Execlists oscar.mateo
2014-06-13 15:37 ` [PATCH 36/53] drm/i915: Abstract the workload submission mechanism away oscar.mateo
2014-06-18 20:40   ` Daniel Vetter
2014-06-13 15:37 ` [PATCH 37/53] drm/i915/bdw: Implement context switching (somewhat) oscar.mateo
2014-06-13 17:00   ` Chris Wilson
2014-06-13 15:37 ` [PATCH 38/53] drm/i915/bdw: Write the tail pointer, LRC style oscar.mateo
2014-06-13 15:37 ` [PATCH 39/53] drm/i915/bdw: Two-stage execlist submit process oscar.mateo
2014-06-13 15:37 ` [PATCH 40/53] drm/i915/bdw: Handle context switch events oscar.mateo
2014-06-13 15:37 ` [PATCH 41/53] drm/i915/bdw: Avoid non-lite-restore preemptions oscar.mateo
2014-06-18 20:49   ` Daniel Vetter
2014-06-23 11:52     ` Mateo Lozano, Oscar
2014-07-07 12:47       ` Daniel Vetter
2014-06-13 15:38 ` [PATCH 42/53] drm/i915/bdw: Make sure gpu reset still works with Execlists oscar.mateo
2014-06-18 20:50   ` Daniel Vetter
2014-06-19  9:37     ` Mateo Lozano, Oscar
2014-06-13 15:38 ` [PATCH 43/53] drm/i915/bdw: Make sure error capture keeps working " oscar.mateo
2014-06-13 16:54   ` Chris Wilson
2014-06-18 20:52   ` Daniel Vetter
2014-06-18 20:53     ` Daniel Vetter
2014-06-13 15:38 ` [PATCH 44/53] drm/i915/bdw: Help out the ctx switch interrupt handler oscar.mateo
2014-06-13 15:38 ` [PATCH 45/53] drm/i915/bdw: Do not call intel_runtime_pm_get() in an interrupt oscar.mateo
2014-06-18 20:54   ` Daniel Vetter
2014-07-26 10:27     ` Chris Wilson
2014-07-28  8:54       ` Daniel Vetter
2014-07-29  7:37         ` Chris Wilson
2014-07-29 10:26           ` Daniel Vetter
2014-08-08  9:20             ` Chris Wilson
2014-08-08  9:37               ` [Intel-gfx] " Daniel Vetter
2014-08-08  9:37                 ` Daniel Vetter
2014-08-08 13:41                 ` [Intel-gfx] " Greg KH
2014-08-08 13:41                   ` Greg KH
2014-08-09  0:18                   ` [Intel-gfx] " Rafael J. Wysocki
2014-08-09  0:18                     ` Rafael J. Wysocki
2014-08-09  0:14                 ` [Intel-gfx] " Rafael J. Wysocki
2014-08-09  0:14                   ` Rafael J. Wysocki
2014-08-09  1:21                   ` [Intel-gfx] " Alan Stern
2014-08-09  1:21                     ` Alan Stern
2014-08-09  8:53                     ` Daniel Vetter
2014-08-09  8:53                       ` Daniel Vetter
2014-08-10  1:55                       ` [Intel-gfx] " Rafael J. Wysocki
2014-08-10  1:55                         ` Rafael J. Wysocki
2014-06-13 15:38 ` [PATCH 46/53] drm/i915/bdw: Display execlists info in debugfs oscar.mateo
2014-06-18 20:59   ` Daniel Vetter
2014-06-13 15:38 ` [PATCH 47/53] drm/i915/bdw: Display context backing obj & ringbuffer " oscar.mateo
2014-06-13 15:38 ` [PATCH 48/53] drm/i915/bdw: Print context state " oscar.mateo
2014-06-13 15:38 ` [PATCH 49/53] drm/i915: Extract render state preparation oscar.mateo
2014-06-13 15:38 ` [PATCH 50/53] drm/i915/bdw: Render state init for Execlists oscar.mateo
2014-06-13 15:38 ` [PATCH 51/53] drm/i915/bdw: Document Logical Rings, LR contexts and Execlists oscar.mateo
2014-06-13 16:51   ` Chris Wilson
2014-06-16 15:24     ` Mateo Lozano, Oscar
2014-06-16 17:56       ` Daniel Vetter
2014-06-17  8:22         ` Mateo Lozano, Oscar
2014-06-17  9:39           ` Daniel Vetter
2014-06-17  9:46             ` Mateo Lozano, Oscar
2014-06-17 10:08               ` Daniel Vetter
2014-06-17 10:12                 ` Mateo Lozano, Oscar
2014-06-13 15:38 ` [PATCH 52/53] drm/i915/bdw: Enable logical ring contexts oscar.mateo
2014-06-13 15:38 ` [PATCH 53/53] !UPSTREAM: drm/i915: Use MMIO flips oscar.mateo
2014-06-18 21:01   ` Daniel Vetter
2014-06-19  9:50     ` Mateo Lozano, Oscar
2014-06-19 10:04       ` Daniel Vetter
2014-06-19 10:13       ` Chris Wilson
2014-06-19 10:33         ` Mateo Lozano, Oscar
2014-06-18 21:26 ` [PATCH 00/53] Execlists v3 Daniel Vetter

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=1402673891-14618-9-git-send-email-oscar.mateo@intel.com \
    --to=oscar.mateo@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 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.