summaryrefslogtreecommitdiff
path: root/src/sna/kgem.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2014-10-31 20:38:40 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2014-10-31 20:40:59 +0000
commitcc3b8a542ecb1ba873efefaeab630fa8f69b5b96 (patch)
tree5e7ed6eede963a3dc031b4fd4f65bcac4c0c9bd8 /src/sna/kgem.h
parent122f6065604480a57b86f04d5d09011ee6e8829b (diff)
sna: Treat external bo carefully when marking as idle
When we flag a bo as being externally modified, we set a special flag on its request pointer. This forces us to inspect whether the bo is busy before accessing it the next, and if it is idle, we must be careful that we then do not dereference the special request. Fixes regression from commit 9115406b651eb11779f37c4b048d55188b9d6e02 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Oct 30 19:21:02 2014 +0000 sna: Retire all requests when a bo is found to be not busy Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/kgem.h')
-rw-r--r--src/sna/kgem.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index c77866f4..7ac81cba 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -618,7 +618,7 @@ static inline bool kgem_bo_is_busy(struct kgem_bo *bo)
return bo->rq;
}
-void __kgem_retire_requests_upto(struct kgem *kgem, struct kgem_request *rq);
+void __kgem_retire_requests_upto(struct kgem *kgem, struct kgem_bo *bo);
static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo)
{
DBG(("%s: handle=%d, domain: %d exec? %d, rq? %d\n", __FUNCTION__,
@@ -629,7 +629,7 @@ static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo)
return true;
if (bo->rq && !__kgem_busy(kgem, bo->handle)) {
- __kgem_retire_requests_upto(kgem, bo->rq);
+ __kgem_retire_requests_upto(kgem, bo);
assert(list_is_empty(&bo->request));
assert(bo->rq == NULL);
assert(bo->domain == DOMAIN_NONE);