sna: Don't call into retire unless there are outstanding requests
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
6fdd0f254d
commit
353fa4218c
|
|
@ -671,7 +671,8 @@ bool kgem_retire(struct kgem *kgem)
|
|||
free(rq);
|
||||
}
|
||||
|
||||
if (kgem->ring && list_is_empty(&kgem->requests))
|
||||
kgem->need_retire = !list_is_empty(&kgem->requests);
|
||||
if (!kgem->need_retire && kgem->ring)
|
||||
kgem->ring = kgem->mode;
|
||||
|
||||
return retired;
|
||||
|
|
@ -712,6 +713,7 @@ destroy:
|
|||
|
||||
list_add_tail(&rq->list, &kgem->requests);
|
||||
kgem->next_request = __kgem_request_alloc();
|
||||
kgem->need_retire = 1;
|
||||
}
|
||||
|
||||
static void kgem_close_list(struct kgem *kgem, struct list *head)
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ struct kgem {
|
|||
uint32_t flush:1;
|
||||
uint32_t need_expire:1;
|
||||
uint32_t need_purge:1;
|
||||
uint32_t need_retire:1;
|
||||
uint32_t busy:1;
|
||||
|
||||
uint32_t has_vmap :1;
|
||||
|
|
|
|||
|
|
@ -7772,7 +7772,9 @@ void sna_accel_block_handler(struct sna *sna)
|
|||
|
||||
void sna_accel_wakeup_handler(struct sna *sna)
|
||||
{
|
||||
kgem_retire(&sna->kgem);
|
||||
if (sna->kgem.need_retire)
|
||||
kgem_retire(&sna->kgem);
|
||||
|
||||
sna_deferred_free(sna);
|
||||
|
||||
if (sna->kgem.need_purge)
|
||||
|
|
|
|||
Loading…
Reference in New Issue