]> rtime.felk.cvut.cz Git - linux-imx.git/blobdiff - drivers/gpu/drm/cirrus/cirrus_fbdev.c
drm/cirrus: do not attempt to acquire a reservation while in an interrupt handler
[linux-imx.git] / drivers / gpu / drm / cirrus / cirrus_fbdev.c
index 3541b567bbd8dffa9cb8d3e6d4c552ef06f09f21..b27e95666fabf6fb28d56b07cd62fd3363776a0b 100644 (file)
@@ -25,7 +25,7 @@ static void cirrus_dirty_update(struct cirrus_fbdev *afbdev,
        struct cirrus_bo *bo;
        int src_offset, dst_offset;
        int bpp = (afbdev->gfb.base.bits_per_pixel + 7)/8;
-       int ret;
+       int ret = -EBUSY;
        bool unmap = false;
        bool store_for_later = false;
        int x2, y2;
@@ -39,7 +39,8 @@ static void cirrus_dirty_update(struct cirrus_fbdev *afbdev,
         * then the BO is being moved and we should
         * store up the damage until later.
         */
-       ret = cirrus_bo_reserve(bo, true);
+       if (!in_interrupt())
+               ret = cirrus_bo_reserve(bo, true);
        if (ret) {
                if (ret != -EBUSY)
                        return;