mirror of https://gitee.com/openkylin/linux.git
drm/vmwgfx: Fix a command submission hang regression
When we're out of command buffer space, we turn on the command buffer processed irq without re-checking for finished command buffers afterwards. This might lead to a missed irq and the command submission process waiting forever for space. Fix this by rerunning the command buffer submission handler whenever we're out of command space. This ensures both that we don't needlessly turn on the irq, and that if we decide to turn on the irq, we recheck for finished command buffers before going to sleep. Reported-and-tested-by: Bryan Li <ldexin@vmware.com> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Sinclair Yeh <syeh@vmware.com>
This commit is contained in:
parent
30c64664f1
commit
575f9c8604
|
@ -681,6 +681,14 @@ static bool vmw_cmdbuf_try_alloc(struct vmw_cmdbuf_man *man,
|
|||
0, 0,
|
||||
DRM_MM_SEARCH_DEFAULT,
|
||||
DRM_MM_CREATE_DEFAULT);
|
||||
if (ret) {
|
||||
(void) vmw_cmdbuf_man_process(man);
|
||||
ret = drm_mm_insert_node_generic(&man->mm, info->node,
|
||||
info->page_size, 0, 0,
|
||||
DRM_MM_SEARCH_DEFAULT,
|
||||
DRM_MM_CREATE_DEFAULT);
|
||||
}
|
||||
|
||||
spin_unlock_bh(&man->lock);
|
||||
info->done = !ret;
|
||||
|
||||
|
|
Loading…
Reference in New Issue