[Intel-gfx] [PATCH 1/2] drm/i915: Teach record_defaults to operate on the intel_gt

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Tue Oct 22 13:40:42 UTC 2019


On 22/10/2019 14:02, Chris Wilson wrote:
> Again we wish to operate on the engines, which are owned by the
> intel_gt. As such it is easier, and much more consistent, to pass the
> intel_gt parameter.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>   drivers/gpu/drm/i915/i915_gem.c | 14 ++++++++------
>   1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index ca64a0c9b762..b882988056bd 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -48,6 +48,7 @@
>   #include "gt/intel_engine_user.h"
>   #include "gt/intel_gt.h"
>   #include "gt/intel_gt_pm.h"
> +#include "gt/intel_gt_requests.h"
>   #include "gt/intel_mocs.h"
>   #include "gt/intel_reset.h"
>   #include "gt/intel_renderstate.h"
> @@ -1072,7 +1073,7 @@ void i915_gem_sanitize(struct drm_i915_private *i915)
>   	intel_runtime_pm_put(&i915->runtime_pm, wakeref);
>   }
>   
> -static int __intel_engines_record_defaults(struct drm_i915_private *i915)
> +static int __intel_engines_record_defaults(struct intel_gt *gt)
>   {
>   	struct i915_request *requests[I915_NUM_ENGINES] = {};
>   	struct intel_engine_cs *engine;
> @@ -1088,7 +1089,7 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
>   	 * from the same default HW values.
>   	 */
>   
> -	for_each_engine(engine, i915, id) {
> +	for_each_engine(engine, gt, id) {
>   		struct intel_context *ce;
>   		struct i915_request *rq;
>   
> @@ -1096,7 +1097,8 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
>   		GEM_BUG_ON(!engine->kernel_context);
>   		engine->serial++; /* force the kernel context switch */
>   
> -		ce = intel_context_create(i915->kernel_context, engine);
> +		ce = intel_context_create(engine->kernel_context->gem_context,
> +					  engine);
>   		if (IS_ERR(ce)) {
>   			err = PTR_ERR(ce);
>   			goto out;
> @@ -1125,7 +1127,7 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
>   	}
>   
>   	/* Flush the default context image to memory, and enable powersaving. */
> -	if (!i915_gem_load_power_context(i915)) {
> +	if (intel_gt_wait_for_idle(gt, I915_GEM_IDLE_TIMEOUT) == -ETIME) {

What are the plans for i915_gem_load_power_context? It does a little bit 
extra. But also becomes confined to i915_gem_pm.c if not needed here any 
more so could be unexported.

Regards,

Tvrtko

>   		err = -EIO;
>   		goto out;
>   	}
> @@ -1184,7 +1186,7 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
>   	 * this is by declaring ourselves wedged.
>   	 */
>   	if (err)
> -		intel_gt_set_wedged(&i915->gt);
> +		intel_gt_set_wedged(gt);
>   
>   	for (id = 0; id < ARRAY_SIZE(requests); id++) {
>   		struct intel_context *ce;
> @@ -1298,7 +1300,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
>   	if (ret)
>   		goto err_gt;
>   
> -	ret = __intel_engines_record_defaults(dev_priv);
> +	ret = __intel_engines_record_defaults(&dev_priv->gt);
>   	if (ret)
>   		goto err_gt;
>   
> 


More information about the Intel-gfx mailing list