diff options
Diffstat (limited to 'src/sna/kgem.h')
-rw-r--r-- | src/sna/kgem.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/sna/kgem.h b/src/sna/kgem.h index bea518f8..c77866f4 100644 --- a/src/sna/kgem.h +++ b/src/sna/kgem.h @@ -618,6 +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); 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__, @@ -627,8 +628,12 @@ static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo) if (bo->exec) return true; - if (bo->rq && !__kgem_busy(kgem, bo->handle)) - __kgem_bo_clear_busy(bo); + if (bo->rq && !__kgem_busy(kgem, bo->handle)) { + __kgem_retire_requests_upto(kgem, bo->rq); + assert(list_is_empty(&bo->request)); + assert(bo->rq == NULL); + assert(bo->domain == DOMAIN_NONE); + } return kgem_bo_is_busy(bo); } |