drm/i915/guc: Kick G2H tasklet if no credits
Let's be paranoid and kick the G2H tasklet, which dequeues messages, if G2H credits are exhausted. Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com> Signed-off-by: John Harrison <John.C.Harrison@Intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211214170500.28569-7-matthew.brost@intel.com
This commit is contained in:
parent
6e94d53962
commit
2aa9f833dd
@ -591,12 +591,19 @@ static inline bool h2g_has_room(struct intel_guc_ct *ct, u32 len_dw)
|
||||
|
||||
static int has_room_nb(struct intel_guc_ct *ct, u32 h2g_dw, u32 g2h_dw)
|
||||
{
|
||||
bool h2g = h2g_has_room(ct, h2g_dw);
|
||||
bool g2h = g2h_has_room(ct, g2h_dw);
|
||||
|
||||
lockdep_assert_held(&ct->ctbs.send.lock);
|
||||
|
||||
if (unlikely(!h2g_has_room(ct, h2g_dw) || !g2h_has_room(ct, g2h_dw))) {
|
||||
if (unlikely(!h2g || !g2h)) {
|
||||
if (ct->stall_time == KTIME_MAX)
|
||||
ct->stall_time = ktime_get();
|
||||
|
||||
/* Be paranoid and kick G2H tasklet to free credits */
|
||||
if (!g2h)
|
||||
tasklet_hi_schedule(&ct->receive_tasklet);
|
||||
|
||||
if (unlikely(ct_deadlocked(ct)))
|
||||
return -EPIPE;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user