Re: [Intel-gfx] [PATCH v4 21/38] drm/i915: Added a module parameter for allowing scheduler overrides
On 11/01/2016 22:24, Chris Wilson wrote: On Mon, Jan 11, 2016 at 06:42:50PM +, john.c.harri...@intel.com wrote: From: John Harrison It can be useful to be able to disable certain features (e.g. the entire scheduler) via a module parameter for debugging purposes. A parameter has the advantage of not being a compile time switch but without implying that it can be changed dynamically at runtime. +module_param_named(scheduler_override, i915.scheduler_override, int, 0600); +MODULE_PARM_DESC(scheduler_override, "Scheduler override mask (0 = none, 1 = direct submission [default])"); Is this consistent with the other *enable* booleans? Initially there were a whole bunch of override flags for disabling/tweaking specific bits of the scheduler's operation. Since these extras now only exist in an internal debugging patch that is not going to be upstreamed, I guess it probably should be simplified to a bool rather than a flags word. -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4 21/38] drm/i915: Added a module parameter for allowing scheduler overrides
On Tue, Jan 12, 2016 at 11:34:45AM +, John Harrison wrote: > On 11/01/2016 22:24, Chris Wilson wrote: > >On Mon, Jan 11, 2016 at 06:42:50PM +, john.c.harri...@intel.com wrote: > >>From: John Harrison > >> > >>It can be useful to be able to disable certain features (e.g. the > >>entire scheduler) via a module parameter for debugging purposes. A > >>parameter has the advantage of not being a compile time switch but > >>without implying that it can be changed dynamically at runtime. > >>+module_param_named(scheduler_override, i915.scheduler_override, int, 0600); > >>+MODULE_PARM_DESC(scheduler_override, "Scheduler override mask (0 = none, 1 > >>= direct submission [default])"); > >Is this consistent with the other *enable* booleans? > Initially there were a whole bunch of override flags for > disabling/tweaking specific bits of the scheduler's operation. Since > these extras now only exist in an internal debugging patch that is > not going to be upstreamed, I guess it probably should be simplified > to a bool rather than a flags word. Yes, later on I saw the unsigned flags. Those should be restricted to a debugfs interface, not a user parameter. module options are an invitation for the world to fiddle, and they will. -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4 21/38] drm/i915: Added a module parameter for allowing scheduler overrides
On Mon, Jan 11, 2016 at 06:42:50PM +, john.c.harri...@intel.com wrote: > From: John Harrison > > It can be useful to be able to disable certain features (e.g. the > entire scheduler) via a module parameter for debugging purposes. A > parameter has the advantage of not being a compile time switch but > without implying that it can be changed dynamically at runtime. > +module_param_named(scheduler_override, i915.scheduler_override, int, 0600); > +MODULE_PARM_DESC(scheduler_override, "Scheduler override mask (0 = none, 1 = > direct submission [default])"); Is this consistent with the other *enable* booleans? -Chris -- Chris Wilson, Intel Open Source Technology Centre ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v4 21/38] drm/i915: Added a module parameter for allowing scheduler overrides
From: John Harrison It can be useful to be able to disable certain features (e.g. the entire scheduler) via a module parameter for debugging purposes. A parameter has the advantage of not being a compile time switch but without implying that it can be changed dynamically at runtime. For: VIZ-1587 Signed-off-by: John Harrison --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/i915_params.c| 4 drivers/gpu/drm/i915/i915_scheduler.c | 5 - drivers/gpu/drm/i915/i915_scheduler.h | 5 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 2906bb0..8d6d07a 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2709,6 +2709,7 @@ struct i915_params { bool verbose_state_checks; bool nuclear_pageflip; int edp_vswing; + int scheduler_override; }; extern struct i915_params i915 __read_mostly; diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c index ba7274a..be2e16c 100644 --- a/drivers/gpu/drm/i915/i915_params.c +++ b/drivers/gpu/drm/i915/i915_params.c @@ -54,6 +54,7 @@ struct i915_params i915 __read_mostly = { .edp_vswing = 0, .enable_guc_submission = true, .guc_log_level = -1, + .scheduler_override = 1, }; module_param_named(modeset, i915.modeset, int, 0400); @@ -191,3 +192,6 @@ MODULE_PARM_DESC(enable_guc_submission, "Enable GuC submission (default:false)") module_param_named(guc_log_level, i915.guc_log_level, int, 0400); MODULE_PARM_DESC(guc_log_level, "GuC firmware logging level (-1:disabled (default), 0-3:enabled)"); + +module_param_named(scheduler_override, i915.scheduler_override, int, 0600); +MODULE_PARM_DESC(scheduler_override, "Scheduler override mask (0 = none, 1 = direct submission [default])"); diff --git a/drivers/gpu/drm/i915/i915_scheduler.c b/drivers/gpu/drm/i915/i915_scheduler.c index bd52752..bfde3a2 100644 --- a/drivers/gpu/drm/i915/i915_scheduler.c +++ b/drivers/gpu/drm/i915/i915_scheduler.c @@ -44,6 +44,9 @@ bool i915_scheduler_is_enabled(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; + if (i915.scheduler_override & i915_so_direct_submit) + return false; + return dev_priv->scheduler != NULL; } @@ -144,7 +147,7 @@ int i915_scheduler_queue_execbuffer(struct i915_scheduler_queue_entry *qe) WARN_ON(!scheduler); - if (1/*i915.scheduler_override & i915_so_direct_submit*/) { + if (i915.scheduler_override & i915_so_direct_submit) { int ret; intel_ring_reserved_space_cancel(qe->params.request->ringbuf); diff --git a/drivers/gpu/drm/i915/i915_scheduler.h b/drivers/gpu/drm/i915/i915_scheduler.h index 7654013..cc9205b 100644 --- a/drivers/gpu/drm/i915/i915_scheduler.h +++ b/drivers/gpu/drm/i915/i915_scheduler.h @@ -84,6 +84,11 @@ enum { i915_sf_submitting = (1 << 1), }; +/* Options for 'scheduler_override' module parameter: */ +enum { + i915_so_direct_submit = (1 << 0), +}; + booli915_scheduler_is_enabled(struct drm_device *dev); int i915_scheduler_init(struct drm_device *dev); int i915_scheduler_closefile(struct drm_device *dev, -- 1.9.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx