}
 
 static int dce_v10_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                                   u16 *blue, uint32_t size)
+                                   u16 *blue, uint32_t size,
+                                   struct drm_modeset_acquire_ctx *ctx)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        int i;
 
 }
 
 static int dce_v11_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                                   u16 *blue, uint32_t size)
+                                   u16 *blue, uint32_t size,
+                                   struct drm_modeset_acquire_ctx *ctx)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        int i;
 
 }
 
 static int dce_v6_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                                  u16 *blue, uint32_t size)
+                                  u16 *blue, uint32_t size,
+                                  struct drm_modeset_acquire_ctx *ctx)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        int i;
 
 }
 
 static int dce_v8_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                                  u16 *blue, uint32_t size)
+                                  u16 *blue, uint32_t size,
+                                  struct drm_modeset_acquire_ctx *ctx)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        int i;
 
 }
 
 static int dce_virtual_crtc_gamma_set(struct drm_crtc *crtc, u16 *red,
-                                     u16 *green, u16 *blue, uint32_t size)
+                                     u16 *green, u16 *blue, uint32_t size,
+                                     struct drm_modeset_acquire_ctx *ctx)
 {
        struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
        int i;
 
 }
 
 static int ast_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                             u16 *blue, uint32_t size)
+                             u16 *blue, uint32_t size,
+                             struct drm_modeset_acquire_ctx *ctx)
 {
        struct ast_crtc *ast_crtc = to_ast_crtc(crtc);
        int i;
 
  * but it's a requirement that we provide the function
  */
 static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                                u16 *blue, uint32_t size)
+                                u16 *blue, uint32_t size,
+                                struct drm_modeset_acquire_ctx *ctx)
 {
        struct cirrus_crtc *cirrus_crtc = to_cirrus_crtc(crtc);
        int i;
 
  * @green: green correction table
  * @blue: green correction table
  * @size: size of the tables
+ * @ctx: lock acquire context
  *
  * Implements support for legacy gamma correction table for drivers
  * that support color management through the DEGAMMA_LUT/GAMMA_LUT
  */
 int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
                                       u16 *red, u16 *green, u16 *blue,
-                                      uint32_t size)
+                                      uint32_t size,
+                                      struct drm_modeset_acquire_ctx *ctx)
 {
        struct drm_device *dev = crtc->dev;
        struct drm_mode_config *config = &dev->mode_config;
 
                goto out;
        }
 
-       ret = crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, crtc->gamma_size);
+       ret = crtc->funcs->gamma_set(crtc, r_base, g_base, b_base,
+                                    crtc->gamma_size, &ctx);
 
 out:
        if (ret == -EDEADLK) {
 
        g_base = r_base + crtc->gamma_size;
        b_base = g_base + crtc->gamma_size;
 
-       crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, crtc->gamma_size);
+       crtc->funcs->gamma_set(crtc, r_base, g_base, b_base,
+                              crtc->gamma_size, NULL);
 }
 
 /**
 
 }
 
 int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue,
-                      u32 size)
+                      u32 size,
+                      struct drm_modeset_acquire_ctx *ctx)
 {
        struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
        int i;
 
 extern int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y);
 extern void gma_crtc_load_lut(struct drm_crtc *crtc);
 extern int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                             u16 *blue, u32 size);
+                             u16 *blue, u32 size,
+                             struct drm_modeset_acquire_ctx *ctx);
 extern void gma_crtc_dpms(struct drm_crtc *crtc, int mode);
 extern void gma_crtc_prepare(struct drm_crtc *crtc);
 extern void gma_crtc_commit(struct drm_crtc *crtc);
 
  * but it's a requirement that we provide the function
  */
 static int mga_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                             u16 *blue, uint32_t size)
+                             u16 *blue, uint32_t size,
+                             struct drm_modeset_acquire_ctx *ctx)
 {
        struct mga_crtc *mga_crtc = to_mga_crtc(crtc);
        int i;
 
 
 static int
 nv_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
-                 uint32_t size)
+                 uint32_t size,
+                 struct drm_modeset_acquire_ctx *ctx)
 {
        struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
        int i;
 
 
 static int
 nv50_head_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
-                   uint32_t size)
+                   uint32_t size,
+                   struct drm_modeset_acquire_ctx *ctx)
 {
        struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
        u32 i;
 
 }
 
 static int radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
-                                u16 *blue, uint32_t size)
+                                u16 *blue, uint32_t size,
+                                struct drm_modeset_acquire_ctx *ctx)
 {
        struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
        int i;
 
 
 static int
 vc4_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
-                  uint32_t size)
+                  uint32_t size,
+                  struct drm_modeset_acquire_ctx *ctx)
 {
        struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
        u32 i;
 
 
 int vmw_du_crtc_gamma_set(struct drm_crtc *crtc,
                          u16 *r, u16 *g, u16 *b,
-                         uint32_t size)
+                         uint32_t size,
+                         struct drm_modeset_acquire_ctx *ctx)
 {
        struct vmw_private *dev_priv = vmw_priv(crtc->dev);
        int i;
 
 void vmw_du_crtc_restore(struct drm_crtc *crtc);
 int vmw_du_crtc_gamma_set(struct drm_crtc *crtc,
                           u16 *r, u16 *g, u16 *b,
-                          uint32_t size);
+                          uint32_t size,
+                          struct drm_modeset_acquire_ctx *ctx);
 int vmw_du_crtc_cursor_set2(struct drm_crtc *crtc, struct drm_file *file_priv,
                            uint32_t handle, uint32_t width, uint32_t height,
                            int32_t hot_x, int32_t hot_y);
 
                                          struct drm_connector_state *state);
 int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
                                       u16 *red, u16 *green, u16 *blue,
-                                      uint32_t size);
+                                      uint32_t size,
+                                      struct drm_modeset_acquire_ctx *ctx);
 
 /**
  * drm_atomic_crtc_for_each_plane - iterate over planes currently attached to CRTC
 
         * hooks.
         */
        int (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
-                        uint32_t size);
+                        uint32_t size,
+                        struct drm_modeset_acquire_ctx *ctx);
 
        /**
         * @destroy: