diff options
| author | Borislav Petkov <bp@suse.de> | 2021-03-18 18:43:11 +0300 | 
|---|---|---|
| committer | Borislav Petkov <bp@suse.de> | 2021-03-18 18:43:11 +0300 | 
| commit | afb4a37778491eae010a43edebea32ff2d45f01c (patch) | |
| tree | c40bcc6143e5542134477dd96a108d24b1f9074f /drivers/gpu/drm/i915/i915_cmd_parser.c | |
| parent | 229164175ff0c61ff581e6bf37fbfcb608b6e9bb (diff) | |
| parent | 1e28eed17697bcf343c6743f0028cc3b5dd88bf0 (diff) | |
| download | linux-afb4a37778491eae010a43edebea32ff2d45f01c.tar.xz | |
Merge tag 'v5.12-rc3' into x86/seves
Pick up dependent SEV-ES urgent changes which went into -rc3 to base new
work ontop.
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_cmd_parser.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_cmd_parser.c | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c b/drivers/gpu/drm/i915/i915_cmd_parser.c index ced9a96d7c34..5f86f5b2caf6 100644 --- a/drivers/gpu/drm/i915/i915_cmd_parser.c +++ b/drivers/gpu/drm/i915/i915_cmd_parser.c @@ -940,7 +940,7 @@ static void fini_hash_table(struct intel_engine_cs *engine)   * struct intel_engine_cs based on whether the platform requires software   * command parsing.   */ -void intel_engine_init_cmd_parser(struct intel_engine_cs *engine) +int intel_engine_init_cmd_parser(struct intel_engine_cs *engine)  {  	const struct drm_i915_cmd_table *cmd_tables;  	int cmd_table_count; @@ -948,7 +948,7 @@ void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)  	if (!IS_GEN(engine->i915, 7) && !(IS_GEN(engine->i915, 9) &&  					  engine->class == COPY_ENGINE_CLASS)) -		return; +		return 0;  	switch (engine->class) {  	case RENDER_CLASS: @@ -1013,19 +1013,19 @@ void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)  		break;  	default:  		MISSING_CASE(engine->class); -		return; +		goto out;  	}  	if (!validate_cmds_sorted(engine, cmd_tables, cmd_table_count)) {  		drm_err(&engine->i915->drm,  			"%s: command descriptions are not sorted\n",  			engine->name); -		return; +		goto out;  	}  	if (!validate_regs_sorted(engine)) {  		drm_err(&engine->i915->drm,  			"%s: registers are not sorted\n", engine->name); -		return; +		goto out;  	}  	ret = init_hash_table(engine, cmd_tables, cmd_table_count); @@ -1033,10 +1033,17 @@ void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)  		drm_err(&engine->i915->drm,  			"%s: initialised failed!\n", engine->name);  		fini_hash_table(engine); -		return; +		goto out;  	}  	engine->flags |= I915_ENGINE_USING_CMD_PARSER; + +out: +	if (intel_engine_requires_cmd_parser(engine) && +	    !intel_engine_using_cmd_parser(engine)) +		return -EINVAL; + +	return 0;  }  /**  | 
