diff options
author | Eric Anholt <eric@anholt.net> | 2014-12-31 14:51:20 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-06-04 14:15:29 -0700 |
commit | 885d01c7d368b2049b207b7ea1fba622172acfc9 (patch) | |
tree | d7aec5d3ef3afae50abc61e8addc7ec710269959 | |
parent | 37737b6747d4804f88f6b787f2132efe62f5047b (diff) | |
download | linux-885d01c7d368b2049b207b7ea1fba622172acfc9.tar.gz |
drm/vc4: Disallow sending shader BOs that are busy on the GPU.
This is a step in eliminating the rewrite-the-shaders root hole.
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_validate_shaders.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_validate_shaders.c b/drivers/gpu/drm/vc4/vc4_validate_shaders.c index 17c5bdcf5aa7..1f5e02783c96 100644 --- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c +++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c @@ -381,6 +381,14 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj) if (shader_bo->validated_shader) return shader_bo->validated_shader; + /* Our validation relies on nothing modifying the shader + * contents after us, so just ban sending us busy BOs. + */ + if (shader_bo->seqno > vc4->finished_seqno) { + DRM_ERROR("shader BO is currently busy on the GPU.\n"); + return NULL; + } + memset(&validation_state, 0, sizeof(validation_state)); for (i = 0; i < 8; i++) |