diff mbox

[03/10] drm/i915: Update i915.reset to handle engine resets

Message ID 20170112041817.1102-4-michel.thierry@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michel Thierry Jan. 12, 2017, 4:18 a.m. UTC
From: Arun Siluvery <arun.siluvery@linux.intel.com>

In preparation for engine reset work update this parameter to handle more
than one type of reset. Default at the moment is still full gpu reset.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
---
 drivers/gpu/drm/i915/i915_params.c | 6 +++---
 drivers/gpu/drm/i915/i915_params.h | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

Comments

Joonas Lahtinen Jan. 12, 2017, 12:22 p.m. UTC | #1
On ke, 2017-01-11 at 20:18 -0800, Michel Thierry wrote:
> From: Arun Siluvery <arun.siluvery@linux.intel.com>
> 
> In preparation for engine reset work update this parameter to handle more
> than one type of reset. Default at the moment is still full gpu reset.
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> Signed-off-by: Michel Thierry <michel.thierry@intel.com>

<SNIP>

> @@ -113,8 +113,8 @@ MODULE_PARM_DESC(vbt_sdvo_panel_type,
> >  	"Override/Ignore selection of SDVO panel mode in the VBT "
> >  	"(-2=ignore, -1=auto [default], index in VBT BIOS table)");
>  
> -module_param_named_unsafe(reset, i915.reset, bool, 0600);
> -MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)");
> +module_param_named_unsafe(reset, i915.reset, int, 0600);
> +MODULE_PARM_DESC(reset, "Attempt GPU resets (0=disabled, 1=full gpu reset [default], 2=engine reset)");

Would it make sense to have this as bitflags? So you could disable full
GPU reset but still enable engine reset?

Regards, Joonas
Chris Wilson Jan. 12, 2017, 1:11 p.m. UTC | #2
On Thu, Jan 12, 2017 at 02:22:21PM +0200, Joonas Lahtinen wrote:
> On ke, 2017-01-11 at 20:18 -0800, Michel Thierry wrote:
> > From: Arun Siluvery <arun.siluvery@linux.intel.com>
> > 
> > In preparation for engine reset work update this parameter to handle more
> > than one type of reset. Default at the moment is still full gpu reset.
> > 
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
> > Signed-off-by: Michel Thierry <michel.thierry@intel.com>
> 
> <SNIP>
> 
> > @@ -113,8 +113,8 @@ MODULE_PARM_DESC(vbt_sdvo_panel_type,
> > >  	"Override/Ignore selection of SDVO panel mode in the VBT "
> > >  	"(-2=ignore, -1=auto [default], index in VBT BIOS table)");
> >  
> > -module_param_named_unsafe(reset, i915.reset, bool, 0600);
> > -MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)");
> > +module_param_named_unsafe(reset, i915.reset, int, 0600);
> > +MODULE_PARM_DESC(reset, "Attempt GPU resets (0=disabled, 1=full gpu reset [default], 2=engine reset)");
> 
> Would it make sense to have this as bitflags? So you could disable full
> GPU reset but still enable engine reset?

As it stands from the code currently, not really. The per-engine reset
(conceptually) does the same operations as the full reset, just under an
engine mask. If we have issues with a global reset, those should plague
per-engine reset as well.

I would like to keep the user options to a minimum. If our only usecase
for this parameter is testing, let's develop those as kselftests.
Though disabling reset will still be desired to w/a the occasional hw
death.
-Chris
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index 0e280fbd52f1..c858c4d50491 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -46,7 +46,7 @@  struct i915_params i915 __read_mostly = {
 	.prefault_disable = 0,
 	.load_detect_test = 0,
 	.force_reset_modeset_test = 0,
-	.reset = true,
+	.reset = 1,
 	.error_capture = true,
 	.invert_brightness = 0,
 	.disable_display = 0,
@@ -113,8 +113,8 @@  MODULE_PARM_DESC(vbt_sdvo_panel_type,
 	"Override/Ignore selection of SDVO panel mode in the VBT "
 	"(-2=ignore, -1=auto [default], index in VBT BIOS table)");
 
-module_param_named_unsafe(reset, i915.reset, bool, 0600);
-MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)");
+module_param_named_unsafe(reset, i915.reset, int, 0600);
+MODULE_PARM_DESC(reset, "Attempt GPU resets (0=disabled, 1=full gpu reset [default], 2=engine reset)");
 
 #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
 module_param_named(error_capture, i915.error_capture, bool, 0600);
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
index 8e433de04679..da569e20bbec 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
@@ -34,6 +34,7 @@  struct i915_params {
 	int lvds_channel_mode;
 	int panel_use_ssc;
 	int vbt_sdvo_panel_type;
+	int reset;
 	int enable_rc6;
 	int enable_dc;
 	int enable_fbc;
@@ -58,7 +59,6 @@  struct i915_params {
 	bool prefault_disable;
 	bool load_detect_test;
 	bool force_reset_modeset_test;
-	bool reset;
 	bool error_capture;
 	bool disable_display;
 	bool verbose_state_checks;