The driver may sleep under a spin lock, and the function call path is: psbfb_2d_submit (acquire the lock by spin_lock_irqsave) psb_2d_wait_available psb_spank msleep --> may sleep
To fix it, the "msleep" is replaced with "mdelay" in psb_spank. Signed-off-by: Jia-Ju Bai <baijiaju1...@163.com> --- drivers/gpu/drm/gma500/accel_2d.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/gma500/accel_2d.c b/drivers/gpu/drm/gma500/accel_2d.c index c51d925..7c24c8a 100644 --- a/drivers/gpu/drm/gma500/accel_2d.c +++ b/drivers/gpu/drm/gma500/accel_2d.c @@ -55,7 +55,7 @@ void psb_spank(struct drm_psb_private *dev_priv) _PSB_CS_RESET_TWOD_RESET, PSB_CR_SOFT_RESET); PSB_RSGX32(PSB_CR_SOFT_RESET); - msleep(1); + mdelay(1); PSB_WSGX32(0, PSB_CR_SOFT_RESET); wmb(); @@ -64,7 +64,7 @@ void psb_spank(struct drm_psb_private *dev_priv) wmb(); (void) PSB_RSGX32(PSB_CR_BIF_CTRL); - msleep(1); + mdelay(1); PSB_WSGX32(PSB_RSGX32(PSB_CR_BIF_CTRL) & ~_PSB_CB_CTRL_CLEAR_FAULT, PSB_CR_BIF_CTRL); (void) PSB_RSGX32(PSB_CR_BIF_CTRL); -- 1.7.9.5