drm_WARN_ON(&dev_priv->drm, update_pipes);
 }
 
-static void intel_atomic_helper_free_state(struct drm_i915_private *dev_priv)
-{
-       struct intel_atomic_state *state, *next;
-       struct llist_node *freed;
-
-       freed = llist_del_all(&dev_priv->display.atomic_helper.free_list);
-       llist_for_each_entry_safe(state, next, freed, freed)
-               drm_atomic_state_put(&state->base);
-}
-
-void intel_atomic_helper_free_state_worker(struct work_struct *work)
-{
-       struct drm_i915_private *dev_priv =
-               container_of(work, typeof(*dev_priv), display.atomic_helper.free_work);
-
-       intel_atomic_helper_free_state(dev_priv);
-}
-
 static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_state)
 {
        struct drm_i915_private *i915 = to_i915(intel_state->base.dev);
        drm_atomic_helper_cleanup_planes(&i915->drm, &state->base);
        drm_atomic_helper_commit_cleanup_done(&state->base);
        drm_atomic_state_put(&state->base);
-
-       intel_atomic_helper_free_state(i915);
 }
 
 static void intel_atomic_prepare_plane_clear_colors(struct intel_atomic_state *state)
 
                const struct intel_audio_funcs *audio;
        } funcs;
 
-       /* Grouping using anonymous structs. Keep sorted. */
-       struct intel_atomic_helper {
-               struct llist_head free_list;
-               struct work_struct free_work;
-       } atomic_helper;
-
        struct {
                /* backlight registers and fields in struct intel_panel */
                struct mutex lock;
 
        if (ret)
                goto cleanup_vga_client_pw_domain_dmc;
 
-       init_llist_head(&i915->display.atomic_helper.free_list);
-       INIT_WORK(&i915->display.atomic_helper.free_work,
-                 intel_atomic_helper_free_state_worker);
-
        intel_init_quirks(i915);
 
        intel_fbc_init(i915);
        flush_workqueue(i915->display.wq.flip);
        flush_workqueue(i915->display.wq.modeset);
 
-       flush_work(&i915->display.atomic_helper.free_work);
-       drm_WARN_ON(&i915->drm, !llist_empty(&i915->display.atomic_helper.free_list));
-
        /*
         * MST topology needs to be suspended so we don't have any calls to
         * fbdev after it's finalized. MST will be destroyed later as part of