drm_mode_config_reset() has a dual role: it creates the initial KMS
state at probe time, and resets hardware and software state during
suspend/resume cycles.

Since the two roles need different behaviors (notably for objects like
drm_private_obj that must persist across suspend/resume),
drm_mode_config_create_initial_state() was introduced to handle only
the initial state creation at probe time.

Switch to drm_mode_config_create_initial_state().

Signed-off-by: Maxime Ripard <[email protected]>
---
Cc: Broadcom internal kernel review list <[email protected]>
Cc: Zack Rusin <[email protected]>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c  | 4 +++-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 4 +---
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 4 +---
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
index 0dea09cc29a7..93d755b81887 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
@@ -568,5 +568,7 @@ int vmw_kms_ldu_init_display(struct vmw_private *dev_priv)
        dev_priv->active_display_unit = vmw_du_legacy;
 
-       drm_mode_config_reset(dev);
+       ret = drm_mode_config_create_initial_state(dev);
+       if (ret)
+               goto err_free;
 
        return 0;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index 39d58fc392bf..82fe7db26633 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -940,7 +940,5 @@ int vmw_kms_sou_init_display(struct vmw_private *dev_priv)
        dev_priv->active_display_unit = vmw_du_screen_object;
 
-       drm_mode_config_reset(dev);
-
-       return 0;
+       return drm_mode_config_create_initial_state(dev);
 }
 
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index b505f8ba3e83..80defd735813 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -1709,6 +1709,4 @@ int vmw_kms_stdu_init_display(struct vmw_private 
*dev_priv)
        }
 
-       drm_mode_config_reset(dev);
-
-       return 0;
+       return drm_mode_config_create_initial_state(dev);
 }

-- 
2.55.0

Reply via email to