#include <linux/crc32.h>
  #include <linux/delay.h>
  
++#include <drm/drm_drv.h>
  #include <drm/drm_atomic.h>
  #include <drm/drm_atomic_helper.h>
  #include <drm/drm_gem_framebuffer_helper.h>
                return;
        }
  
 -      drm_modeset_lock_all(dev);
 +      DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE, ret);
        qxl_update_offset_props(qdev);
-       DRM_MODESET_LOCK_ALL_END(ctx, ret);
 -      drm_modeset_unlock_all(dev);
++      DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
        if (!drm_helper_hpd_irq_event(dev)) {
                /* notify that the monitor configuration changed, to
                   adjust at the arbitrary resolution */
        qxl_draw_dirty_fb(qdev, fb, qobj, flags, color,
                          clips, num_clips, inc, 0);
  
 -      drm_modeset_unlock_all(fb->dev);
 +out_lock_end:
-       DRM_MODESET_LOCK_ALL_END(ctx, ret);
++      DRM_MODESET_LOCK_ALL_END(fb->dev, ctx, ret);
  
        return 0;
  }