drm/vmwgfx: Get rid of the device-private suspended member
It was used to early block fbdev dirty processing. Replace it with an unprotected check of the par->dirty.active field. While this might race with the vmw_fb_off() function, we do a protected check later so the race will at worst lead to grabbing and releasing a couple of locks. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Sinclair Yeh <syeh@vmware.com>
This commit is contained in:
parent
c3b9b16573
commit
4e3e733b45
|
@ -1449,7 +1449,6 @@ static int vmw_pm_freeze(struct device *kdev)
|
|||
DRM_ERROR("Failed to freeze modesetting.\n");
|
||||
return ret;
|
||||
}
|
||||
dev_priv->suspended = true;
|
||||
if (dev_priv->enable_fb)
|
||||
vmw_fb_off(dev_priv);
|
||||
|
||||
|
@ -1471,7 +1470,6 @@ static int vmw_pm_freeze(struct device *kdev)
|
|||
vmw_kms_resume(dev);
|
||||
if (dev_priv->enable_fb)
|
||||
vmw_fb_on(dev_priv);
|
||||
dev_priv->suspended = false;
|
||||
vmw_fb_refresh(dev_priv);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
@ -1512,7 +1510,6 @@ static int vmw_pm_restore(struct device *kdev)
|
|||
if (dev_priv->enable_fb)
|
||||
vmw_fb_on(dev_priv);
|
||||
|
||||
dev_priv->suspended = false;
|
||||
vmw_fb_refresh(dev_priv);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -497,7 +497,6 @@ struct vmw_private {
|
|||
struct vmw_master *active_master;
|
||||
struct vmw_master fbdev_master;
|
||||
struct notifier_block pm_nb;
|
||||
bool suspended;
|
||||
bool refuse_hibernation;
|
||||
bool suspend_locked;
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ static void vmw_fb_dirty_flush(struct work_struct *work)
|
|||
struct vmw_dma_buffer *vbo = par->vmw_bo;
|
||||
void *virtual;
|
||||
|
||||
if (vmw_priv->suspended)
|
||||
if (!READ_ONCE(par->dirty.active))
|
||||
return;
|
||||
|
||||
mutex_lock(&par->bo_mutex);
|
||||
|
|
Loading…
Reference in New Issue