diff options
author | Eric Anholt <eric@anholt.net> | 2014-10-29 13:39:57 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-06-04 14:15:23 -0700 |
commit | 8d943471316c6f6c8a57f2a3fce9bd776c010cd5 (patch) | |
tree | ede0771db9f6fbc84d85a4847af89c1cee3e4ccd | |
parent | 048a333da6064c02b847e6e4a4f0be1f615a9195 (diff) | |
download | linux-8d943471316c6f6c8a57f2a3fce9bd776c010cd5.tar.gz |
drm/vc4: Fix failure to validate instructions with PROG_END flagged.
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_validate_shaders.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_validate_shaders.c b/drivers/gpu/drm/vc4/vc4_validate_shaders.c index 97032aa4e197..752c873f3aa7 100644 --- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c +++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c @@ -399,6 +399,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj, case QPU_SIG_COLOR_LOAD: case QPU_SIG_LOAD_TMU0: case QPU_SIG_LOAD_TMU1: + case QPU_SIG_PROG_END: if (!check_instruction_writes(inst, validated_shader, &validation_state)) { DRM_ERROR("Bad write at ip %d\n", ip); @@ -408,6 +409,11 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj, if (!check_instruction_reads(inst, validated_shader)) goto fail; + if (sig == QPU_SIG_PROG_END) { + found_shader_end = true; + shader_end_ip = ip; + } + break; case QPU_SIG_LOAD_IMM: @@ -418,11 +424,6 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj, } break; - case QPU_SIG_PROG_END: - found_shader_end = true; - shader_end_ip = ip; - break; - default: DRM_ERROR("Unsupported QPU signal %d at " "instruction %d\n", sig, ip); |