mirror of https://gitee.com/openkylin/linux.git
drm/nouveau: fallback to sw fbcon if we can't get mutex immediately
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
6032649df9
commit
9acc8100cb
|
@ -61,8 +61,8 @@ nouveau_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ret = -ENODEV;
|
ret = -ENODEV;
|
||||||
if (!in_interrupt() && !(info->flags & FBINFO_HWACCEL_DISABLED)) {
|
if (!in_interrupt() && !(info->flags & FBINFO_HWACCEL_DISABLED) &&
|
||||||
mutex_lock(&dev_priv->channel->mutex);
|
mutex_trylock(&dev_priv->channel->mutex)) {
|
||||||
if (dev_priv->card_type < NV_50)
|
if (dev_priv->card_type < NV_50)
|
||||||
ret = nv04_fbcon_fillrect(info, rect);
|
ret = nv04_fbcon_fillrect(info, rect);
|
||||||
else
|
else
|
||||||
|
@ -91,8 +91,8 @@ nouveau_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *image)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ret = -ENODEV;
|
ret = -ENODEV;
|
||||||
if (!in_interrupt() && !(info->flags & FBINFO_HWACCEL_DISABLED)) {
|
if (!in_interrupt() && !(info->flags & FBINFO_HWACCEL_DISABLED) &&
|
||||||
mutex_lock(&dev_priv->channel->mutex);
|
mutex_trylock(&dev_priv->channel->mutex)) {
|
||||||
if (dev_priv->card_type < NV_50)
|
if (dev_priv->card_type < NV_50)
|
||||||
ret = nv04_fbcon_copyarea(info, image);
|
ret = nv04_fbcon_copyarea(info, image);
|
||||||
else
|
else
|
||||||
|
@ -121,8 +121,8 @@ nouveau_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ret = -ENODEV;
|
ret = -ENODEV;
|
||||||
if (!in_interrupt() && !(info->flags & FBINFO_HWACCEL_DISABLED)) {
|
if (!in_interrupt() && !(info->flags & FBINFO_HWACCEL_DISABLED) &&
|
||||||
mutex_lock(&dev_priv->channel->mutex);
|
mutex_trylock(&dev_priv->channel->mutex)) {
|
||||||
if (dev_priv->card_type < NV_50)
|
if (dev_priv->card_type < NV_50)
|
||||||
ret = nv04_fbcon_imageblit(info, image);
|
ret = nv04_fbcon_imageblit(info, image);
|
||||||
else
|
else
|
||||||
|
@ -153,7 +153,9 @@ nouveau_fbcon_sync(struct fb_info *info)
|
||||||
info->flags & FBINFO_HWACCEL_DISABLED)
|
info->flags & FBINFO_HWACCEL_DISABLED)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
mutex_lock(&chan->mutex);
|
if (!mutex_trylock(&chan->mutex))
|
||||||
|
return 0;
|
||||||
|
|
||||||
ret = RING_SPACE(chan, 4);
|
ret = RING_SPACE(chan, 4);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mutex_unlock(&chan->mutex);
|
mutex_unlock(&chan->mutex);
|
||||||
|
|
Loading…
Reference in New Issue