Linux virtualization list
 help / color / mirror / Atom feed
* [PATCH v4 11/16] drm/bochs: drop unused gpu_addr arg from bochs_bo_pin()
From: Gerd Hoffmann @ 2019-01-11  5:37 UTC (permalink / raw)
  To: dri-devel, David Airlie
  Cc: andr2000, open list, open list:DRM DRIVER FOR BOCHS VIRTUAL GPU,
	David Airlie, noralf
In-Reply-To: <20190111053752.4004-1-kraxel@redhat.com>

It's always NULL, so just remove it.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/bochs/bochs.h       |  2 +-
 drivers/gpu/drm/bochs/bochs_fbdev.c |  2 +-
 drivers/gpu/drm/bochs/bochs_kms.c   |  2 +-
 drivers/gpu/drm/bochs/bochs_mm.c    | 11 +----------
 4 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/bochs/bochs.h b/drivers/gpu/drm/bochs/bochs.h
index 4dc1b6384e..d0d474e06f 100644
--- a/drivers/gpu/drm/bochs/bochs.h
+++ b/drivers/gpu/drm/bochs/bochs.h
@@ -142,7 +142,7 @@ int bochs_dumb_create(struct drm_file *file, struct drm_device *dev,
 int bochs_dumb_mmap_offset(struct drm_file *file, struct drm_device *dev,
 			   uint32_t handle, uint64_t *offset);
 
-int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr);
+int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag);
 int bochs_bo_unpin(struct bochs_bo *bo);
 
 /* bochs_kms.c */
diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
index d9f3d42999..92feb817ff 100644
--- a/drivers/gpu/drm/bochs/bochs_fbdev.c
+++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
@@ -81,7 +81,7 @@ static int bochsfb_create(struct drm_fb_helper *helper,
 	if (ret)
 		return ret;
 
-	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM, NULL);
+	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
 	if (ret) {
 		DRM_ERROR("failed to pin fbcon\n");
 		ttm_bo_unreserve(&bo->bo);
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
index 5b7e1a7c6b..f663c54185 100644
--- a/drivers/gpu/drm/bochs/bochs_kms.c
+++ b/drivers/gpu/drm/bochs/bochs_kms.c
@@ -101,7 +101,7 @@ static int bochs_plane_prepare_fb(struct drm_plane *plane,
 	ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
 	if (ret)
 		return ret;
-	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM, NULL);
+	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
 	ttm_bo_unreserve(&bo->bo);
 	return ret;
 }
diff --git a/drivers/gpu/drm/bochs/bochs_mm.c b/drivers/gpu/drm/bochs/bochs_mm.c
index 0980411e41..5a0e092847 100644
--- a/drivers/gpu/drm/bochs/bochs_mm.c
+++ b/drivers/gpu/drm/bochs/bochs_mm.c
@@ -210,20 +210,13 @@ static void bochs_ttm_placement(struct bochs_bo *bo, int domain)
 	bo->placement.num_busy_placement = c;
 }
 
-static inline u64 bochs_bo_gpu_offset(struct bochs_bo *bo)
-{
-	return bo->bo.offset;
-}
-
-int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr)
+int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag)
 {
 	struct ttm_operation_ctx ctx = { false, false };
 	int i, ret;
 
 	if (bo->pin_count) {
 		bo->pin_count++;
-		if (gpu_addr)
-			*gpu_addr = bochs_bo_gpu_offset(bo);
 		return 0;
 	}
 
@@ -235,8 +228,6 @@ int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag, u64 *gpu_addr)
 		return ret;
 
 	bo->pin_count = 1;
-	if (gpu_addr)
-		*gpu_addr = bochs_bo_gpu_offset(bo);
 	return 0;
 }
 
-- 
2.9.3

^ permalink raw reply related

* [PATCH v4 12/16] drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin}
From: Gerd Hoffmann @ 2019-01-11  5:37 UTC (permalink / raw)
  To: dri-devel, David Airlie
  Cc: andr2000, open list, open list:DRM DRIVER FOR BOCHS VIRTUAL GPU,
	David Airlie, noralf
In-Reply-To: <20190111053752.4004-1-kraxel@redhat.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/bochs/bochs_fbdev.c |  8 --------
 drivers/gpu/drm/bochs/bochs_kms.c   | 14 +-------------
 drivers/gpu/drm/bochs/bochs_mm.c    |  8 ++++++++
 3 files changed, 9 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
index 92feb817ff..ccf783b038 100644
--- a/drivers/gpu/drm/bochs/bochs_fbdev.c
+++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
@@ -77,14 +77,9 @@ static int bochsfb_create(struct drm_fb_helper *helper,
 
 	bo = gem_to_bochs_bo(gobj);
 
-	ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
-	if (ret)
-		return ret;
-
 	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
 	if (ret) {
 		DRM_ERROR("failed to pin fbcon\n");
-		ttm_bo_unreserve(&bo->bo);
 		return ret;
 	}
 
@@ -92,12 +87,9 @@ static int bochsfb_create(struct drm_fb_helper *helper,
 			  &bo->kmap);
 	if (ret) {
 		DRM_ERROR("failed to kmap fbcon\n");
-		ttm_bo_unreserve(&bo->bo);
 		return ret;
 	}
 
-	ttm_bo_unreserve(&bo->bo);
-
 	/* init fb device */
 	info = drm_fb_helper_alloc_fbi(helper);
 	if (IS_ERR(info)) {
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
index f663c54185..fc856a02a2 100644
--- a/drivers/gpu/drm/bochs/bochs_kms.c
+++ b/drivers/gpu/drm/bochs/bochs_kms.c
@@ -92,34 +92,22 @@ static int bochs_plane_prepare_fb(struct drm_plane *plane,
 				struct drm_plane_state *new_state)
 {
 	struct bochs_bo *bo;
-	int ret;
 
 	if (!new_state->fb)
 		return 0;
 	bo = gem_to_bochs_bo(new_state->fb->obj[0]);
-
-	ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
-	if (ret)
-		return ret;
-	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
-	ttm_bo_unreserve(&bo->bo);
-	return ret;
+	return bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
 }
 
 static void bochs_plane_cleanup_fb(struct drm_plane *plane,
 				   struct drm_plane_state *old_state)
 {
 	struct bochs_bo *bo;
-	int ret;
 
 	if (!old_state->fb)
 		return;
 	bo = gem_to_bochs_bo(old_state->fb->obj[0]);
-	ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
-	if (ret)
-		return;
 	bochs_bo_unpin(bo);
-	ttm_bo_unreserve(&bo->bo);
 }
 
 static const struct drm_plane_helper_funcs bochs_plane_helper_funcs = {
diff --git a/drivers/gpu/drm/bochs/bochs_mm.c b/drivers/gpu/drm/bochs/bochs_mm.c
index 5a0e092847..fcbf35456d 100644
--- a/drivers/gpu/drm/bochs/bochs_mm.c
+++ b/drivers/gpu/drm/bochs/bochs_mm.c
@@ -223,7 +223,11 @@ int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag)
 	bochs_ttm_placement(bo, pl_flag);
 	for (i = 0; i < bo->placement.num_placement; i++)
 		bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT;
+	ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
+	if (ret)
+		return ret;
 	ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
+	ttm_bo_unreserve(&bo->bo);
 	if (ret)
 		return ret;
 
@@ -247,7 +251,11 @@ int bochs_bo_unpin(struct bochs_bo *bo)
 
 	for (i = 0; i < bo->placement.num_placement; i++)
 		bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT;
+	ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
+	if (ret)
+		return ret;
 	ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
+	ttm_bo_unreserve(&bo->bo);
 	if (ret)
 		return ret;
 
-- 
2.9.3

^ permalink raw reply related

* [PATCH v4 13/16] drm/bochs: add basic prime support
From: Gerd Hoffmann @ 2019-01-11  5:37 UTC (permalink / raw)
  To: dri-devel, David Airlie
  Cc: andr2000, open list, open list:DRM DRIVER FOR BOCHS VIRTUAL GPU,
	David Airlie, noralf
In-Reply-To: <20190111053752.4004-1-kraxel@redhat.com>

Just enough to make the generic framebuffer emulation happy.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/bochs/bochs.h     |  7 ++++++
 drivers/gpu/drm/bochs/bochs_drv.c | 11 ++++++++-
 drivers/gpu/drm/bochs/bochs_mm.c  | 49 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 66 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bochs/bochs.h b/drivers/gpu/drm/bochs/bochs.h
index d0d474e06f..ede22beb85 100644
--- a/drivers/gpu/drm/bochs/bochs.h
+++ b/drivers/gpu/drm/bochs/bochs.h
@@ -145,6 +145,13 @@ int bochs_dumb_mmap_offset(struct drm_file *file, struct drm_device *dev,
 int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag);
 int bochs_bo_unpin(struct bochs_bo *bo);
 
+int bochs_gem_prime_pin(struct drm_gem_object *obj);
+void bochs_gem_prime_unpin(struct drm_gem_object *obj);
+void *bochs_gem_prime_vmap(struct drm_gem_object *obj);
+void bochs_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
+int bochs_gem_prime_mmap(struct drm_gem_object *obj,
+			 struct vm_area_struct *vma);
+
 /* bochs_kms.c */
 int bochs_kms_init(struct bochs_device *bochs);
 void bochs_kms_fini(struct bochs_device *bochs);
diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index a8cb22cffe..a3f4e21078 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -81,7 +81,8 @@ static const struct file_operations bochs_fops = {
 };
 
 static struct drm_driver bochs_driver = {
-	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
+	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
+				  DRIVER_PRIME,
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
 	.desc			= "bochs dispi vga interface (qemu stdvga)",
@@ -91,6 +92,14 @@ static struct drm_driver bochs_driver = {
 	.gem_free_object_unlocked = bochs_gem_free_object,
 	.dumb_create            = bochs_dumb_create,
 	.dumb_map_offset        = bochs_dumb_mmap_offset,
+
+	.gem_prime_export = drm_gem_prime_export,
+	.gem_prime_import = drm_gem_prime_import,
+	.gem_prime_pin = bochs_gem_prime_pin,
+	.gem_prime_unpin = bochs_gem_prime_unpin,
+	.gem_prime_vmap = bochs_gem_prime_vmap,
+	.gem_prime_vunmap = bochs_gem_prime_vunmap,
+	.gem_prime_mmap = bochs_gem_prime_mmap,
 };
 
 /* ---------------------------------------------------------------------- */
diff --git a/drivers/gpu/drm/bochs/bochs_mm.c b/drivers/gpu/drm/bochs/bochs_mm.c
index fcbf35456d..641a33f134 100644
--- a/drivers/gpu/drm/bochs/bochs_mm.c
+++ b/drivers/gpu/drm/bochs/bochs_mm.c
@@ -395,3 +395,52 @@ int bochs_dumb_mmap_offset(struct drm_file *file, struct drm_device *dev,
 	drm_gem_object_put_unlocked(obj);
 	return 0;
 }
+
+/* ---------------------------------------------------------------------- */
+
+int bochs_gem_prime_pin(struct drm_gem_object *obj)
+{
+	struct bochs_bo *bo = gem_to_bochs_bo(obj);
+
+	return bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
+}
+
+void bochs_gem_prime_unpin(struct drm_gem_object *obj)
+{
+	struct bochs_bo *bo = gem_to_bochs_bo(obj);
+
+	bochs_bo_unpin(bo);
+}
+
+void *bochs_gem_prime_vmap(struct drm_gem_object *obj)
+{
+	struct bochs_bo *bo = gem_to_bochs_bo(obj);
+	bool is_iomem;
+	int ret;
+
+	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
+	if (ret)
+		return NULL;
+	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap);
+	if (ret) {
+		bochs_bo_unpin(bo);
+		return NULL;
+	}
+	return ttm_kmap_obj_virtual(&bo->kmap, &is_iomem);
+}
+
+void bochs_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
+{
+	struct bochs_bo *bo = gem_to_bochs_bo(obj);
+
+	ttm_bo_kunmap(&bo->kmap);
+	bochs_bo_unpin(bo);
+}
+
+int bochs_gem_prime_mmap(struct drm_gem_object *obj,
+			 struct vm_area_struct *vma)
+{
+	struct bochs_bo *bo = gem_to_bochs_bo(obj);
+
+	return ttm_fbdev_mmap(vma, &bo->bo);
+}
-- 
2.9.3

^ permalink raw reply related

* [PATCH v4 14/16] drm/bochs: switch to generic drm fbdev emulation
From: Gerd Hoffmann @ 2019-01-11  5:37 UTC (permalink / raw)
  To: dri-devel, David Airlie
  Cc: andr2000, open list, open list:DRM DRIVER FOR BOCHS VIRTUAL GPU,
	David Airlie, noralf
In-Reply-To: <20190111053752.4004-1-kraxel@redhat.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/bochs/bochs_drv.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
index a3f4e21078..cea42ac64d 100644
--- a/drivers/gpu/drm/bochs/bochs_drv.c
+++ b/drivers/gpu/drm/bochs/bochs_drv.c
@@ -16,10 +16,6 @@ static int bochs_modeset = -1;
 module_param_named(modeset, bochs_modeset, int, 0444);
 MODULE_PARM_DESC(modeset, "enable/disable kernel modesetting");
 
-static bool enable_fbdev = true;
-module_param_named(fbdev, enable_fbdev, bool, 0444);
-MODULE_PARM_DESC(fbdev, "register fbdev device");
-
 /* ---------------------------------------------------------------------- */
 /* drm interface                                                          */
 
@@ -27,7 +23,6 @@ static void bochs_unload(struct drm_device *dev)
 {
 	struct bochs_device *bochs = dev->dev_private;
 
-	bochs_fbdev_fini(bochs);
 	bochs_kms_fini(bochs);
 	bochs_mm_fini(bochs);
 	bochs_hw_fini(dev);
@@ -58,9 +53,6 @@ static int bochs_load(struct drm_device *dev)
 	if (ret)
 		goto err;
 
-	if (enable_fbdev)
-		bochs_fbdev_init(bochs);
-
 	return 0;
 
 err:
@@ -110,9 +102,7 @@ static int bochs_pm_suspend(struct device *dev)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
-	struct bochs_device *bochs = drm_dev->dev_private;
 
-	drm_fb_helper_set_suspend_unlocked(&bochs->fb.helper, 1);
 	return drm_mode_config_helper_suspend(drm_dev);
 }
 
@@ -120,9 +110,7 @@ static int bochs_pm_resume(struct device *dev)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
-	struct bochs_device *bochs = drm_dev->dev_private;
 
-	drm_fb_helper_set_suspend_unlocked(&bochs->fb.helper, 0);
 	return drm_mode_config_helper_resume(drm_dev);
 }
 #endif
@@ -167,6 +155,7 @@ static int bochs_pci_probe(struct pci_dev *pdev,
 	if (ret)
 		goto err_unload;
 
+	drm_fbdev_generic_setup(dev, 32);
 	return ret;
 
 err_unload:
-- 
2.9.3

^ permalink raw reply related

* [PATCH v4 15/16] drm/bochs: drop old fbdev emulation code
From: Gerd Hoffmann @ 2019-01-11  5:37 UTC (permalink / raw)
  To: dri-devel, David Airlie
  Cc: andr2000, open list, open list:DRM DRIVER FOR BOCHS VIRTUAL GPU,
	David Airlie, noralf
In-Reply-To: <20190111053752.4004-1-kraxel@redhat.com>

Not needed any more, bochs uses the generic emulation now.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/bochs/bochs.h       |   9 ---
 drivers/gpu/drm/bochs/bochs_fbdev.c | 129 ------------------------------------
 2 files changed, 138 deletions(-)

diff --git a/drivers/gpu/drm/bochs/bochs.h b/drivers/gpu/drm/bochs/bochs.h
index ede22beb85..03711394f1 100644
--- a/drivers/gpu/drm/bochs/bochs.h
+++ b/drivers/gpu/drm/bochs/bochs.h
@@ -80,12 +80,6 @@ struct bochs_device {
 		struct ttm_bo_device bdev;
 		bool initialized;
 	} ttm;
-
-	/* fbdev */
-	struct {
-		struct drm_framebuffer *fb;
-		struct drm_fb_helper helper;
-	} fb;
 };
 
 struct bochs_bo {
@@ -157,7 +151,4 @@ int bochs_kms_init(struct bochs_device *bochs);
 void bochs_kms_fini(struct bochs_device *bochs);
 
 /* bochs_fbdev.c */
-int bochs_fbdev_init(struct bochs_device *bochs);
-void bochs_fbdev_fini(struct bochs_device *bochs);
-
 extern const struct drm_mode_config_funcs bochs_mode_funcs;
diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
index ccf783b038..7cac3f5253 100644
--- a/drivers/gpu/drm/bochs/bochs_fbdev.c
+++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
@@ -11,124 +11,6 @@
 
 /* ---------------------------------------------------------------------- */
 
-static int bochsfb_mmap(struct fb_info *info,
-			struct vm_area_struct *vma)
-{
-	struct drm_fb_helper *fb_helper = info->par;
-	struct bochs_bo *bo = gem_to_bochs_bo(fb_helper->fb->obj[0]);
-
-	return ttm_fbdev_mmap(vma, &bo->bo);
-}
-
-static struct fb_ops bochsfb_ops = {
-	.owner = THIS_MODULE,
-	DRM_FB_HELPER_DEFAULT_OPS,
-	.fb_fillrect = drm_fb_helper_cfb_fillrect,
-	.fb_copyarea = drm_fb_helper_cfb_copyarea,
-	.fb_imageblit = drm_fb_helper_cfb_imageblit,
-	.fb_mmap = bochsfb_mmap,
-};
-
-static int bochsfb_create_object(struct bochs_device *bochs,
-				 const struct drm_mode_fb_cmd2 *mode_cmd,
-				 struct drm_gem_object **gobj_p)
-{
-	struct drm_device *dev = bochs->dev;
-	struct drm_gem_object *gobj;
-	u32 size;
-	int ret = 0;
-
-	size = mode_cmd->pitches[0] * mode_cmd->height;
-	ret = bochs_gem_create(dev, size, true, &gobj);
-	if (ret)
-		return ret;
-
-	*gobj_p = gobj;
-	return ret;
-}
-
-static int bochsfb_create(struct drm_fb_helper *helper,
-			  struct drm_fb_helper_surface_size *sizes)
-{
-	struct bochs_device *bochs =
-		container_of(helper, struct bochs_device, fb.helper);
-	struct fb_info *info;
-	struct drm_framebuffer *fb;
-	struct drm_mode_fb_cmd2 mode_cmd;
-	struct drm_gem_object *gobj = NULL;
-	struct bochs_bo *bo = NULL;
-	int size, ret;
-
-	if (sizes->surface_bpp != 32)
-		return -EINVAL;
-
-	mode_cmd.width = sizes->surface_width;
-	mode_cmd.height = sizes->surface_height;
-	mode_cmd.pitches[0] = sizes->surface_width * 4;
-	mode_cmd.pixel_format = DRM_FORMAT_HOST_XRGB8888;
-	size = mode_cmd.pitches[0] * mode_cmd.height;
-
-	/* alloc, pin & map bo */
-	ret = bochsfb_create_object(bochs, &mode_cmd, &gobj);
-	if (ret) {
-		DRM_ERROR("failed to create fbcon backing object %d\n", ret);
-		return ret;
-	}
-
-	bo = gem_to_bochs_bo(gobj);
-
-	ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
-	if (ret) {
-		DRM_ERROR("failed to pin fbcon\n");
-		return ret;
-	}
-
-	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages,
-			  &bo->kmap);
-	if (ret) {
-		DRM_ERROR("failed to kmap fbcon\n");
-		return ret;
-	}
-
-	/* init fb device */
-	info = drm_fb_helper_alloc_fbi(helper);
-	if (IS_ERR(info)) {
-		DRM_ERROR("Failed to allocate fbi: %ld\n", PTR_ERR(info));
-		return PTR_ERR(info);
-	}
-
-	info->par = &bochs->fb.helper;
-
-	fb = drm_gem_fbdev_fb_create(bochs->dev, sizes, 0, gobj, NULL);
-	if (IS_ERR(fb)) {
-		DRM_ERROR("Failed to create framebuffer: %ld\n", PTR_ERR(fb));
-		return PTR_ERR(fb);
-	}
-
-	/* setup helper */
-	bochs->fb.helper.fb = fb;
-
-	strcpy(info->fix.id, "bochsdrmfb");
-
-	info->fbops = &bochsfb_ops;
-
-	drm_fb_helper_fill_fix(info, fb->pitches[0], fb->format->depth);
-	drm_fb_helper_fill_var(info, &bochs->fb.helper, sizes->fb_width,
-			       sizes->fb_height);
-
-	info->screen_base = bo->kmap.virtual;
-	info->screen_size = size;
-
-	drm_vma_offset_remove(&bo->bo.bdev->vma_manager, &bo->bo.vma_node);
-	info->fix.smem_start = 0;
-	info->fix.smem_len = size;
-	return 0;
-}
-
-static const struct drm_fb_helper_funcs bochs_fb_helper_funcs = {
-	.fb_probe = bochsfb_create,
-};
-
 static struct drm_framebuffer *
 bochs_gem_fb_create(struct drm_device *dev, struct drm_file *file,
 		    const struct drm_mode_fb_cmd2 *mode_cmd)
@@ -145,14 +27,3 @@ const struct drm_mode_config_funcs bochs_mode_funcs = {
 	.atomic_check = drm_atomic_helper_check,
 	.atomic_commit = drm_atomic_helper_commit,
 };
-
-int bochs_fbdev_init(struct bochs_device *bochs)
-{
-	return drm_fb_helper_fbdev_setup(bochs->dev, &bochs->fb.helper,
-					 &bochs_fb_helper_funcs, 32, 1);
-}
-
-void bochs_fbdev_fini(struct bochs_device *bochs)
-{
-	drm_fb_helper_fbdev_teardown(bochs->dev);
-}
-- 
2.9.3

^ permalink raw reply related

* [PATCH v4 16/16] drm/bochs: move remaining fb bits to kms
From: Gerd Hoffmann @ 2019-01-11  5:37 UTC (permalink / raw)
  To: dri-devel, David Airlie
  Cc: andr2000, open list, open list:DRM DRIVER FOR BOCHS VIRTUAL GPU,
	David Airlie, noralf
In-Reply-To: <20190111053752.4004-1-kraxel@redhat.com>

bochs_fbdev.c is almost empty now.  Move the remaining framebuffer bits
over to bochs_kms.c.  Pure code motion. No functional change.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/bochs/bochs_fbdev.c | 29 -----------------------------
 drivers/gpu/drm/bochs/bochs_kms.c   | 17 +++++++++++++++++
 drivers/gpu/drm/bochs/Makefile      |  2 +-
 3 files changed, 18 insertions(+), 30 deletions(-)
 delete mode 100644 drivers/gpu/drm/bochs/bochs_fbdev.c

diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
deleted file mode 100644
index 7cac3f5253..0000000000
--- a/drivers/gpu/drm/bochs/bochs_fbdev.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#include "bochs.h"
-#include <drm/drm_atomic_helper.h>
-#include <drm/drm_gem_framebuffer_helper.h>
-
-/* ---------------------------------------------------------------------- */
-
-static struct drm_framebuffer *
-bochs_gem_fb_create(struct drm_device *dev, struct drm_file *file,
-		    const struct drm_mode_fb_cmd2 *mode_cmd)
-{
-	if (mode_cmd->pixel_format != DRM_FORMAT_XRGB8888 &&
-	    mode_cmd->pixel_format != DRM_FORMAT_BGRX8888)
-		return ERR_PTR(-EINVAL);
-
-	return drm_gem_fb_create(dev, file, mode_cmd);
-}
-
-const struct drm_mode_config_funcs bochs_mode_funcs = {
-	.fb_create = bochs_gem_fb_create,
-	.atomic_check = drm_atomic_helper_check,
-	.atomic_commit = drm_atomic_helper_commit,
-};
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
index fc856a02a2..e9d5dbc346 100644
--- a/drivers/gpu/drm/bochs/bochs_kms.c
+++ b/drivers/gpu/drm/bochs/bochs_kms.c
@@ -9,6 +9,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_atomic_uapi.h>
+#include <drm/drm_gem_framebuffer_helper.h>
 
 static int defx = 1024;
 static int defy = 768;
@@ -256,6 +257,22 @@ static void bochs_connector_init(struct drm_device *dev)
 	}
 }
 
+static struct drm_framebuffer *
+bochs_gem_fb_create(struct drm_device *dev, struct drm_file *file,
+		    const struct drm_mode_fb_cmd2 *mode_cmd)
+{
+	if (mode_cmd->pixel_format != DRM_FORMAT_XRGB8888 &&
+	    mode_cmd->pixel_format != DRM_FORMAT_BGRX8888)
+		return ERR_PTR(-EINVAL);
+
+	return drm_gem_fb_create(dev, file, mode_cmd);
+}
+
+const struct drm_mode_config_funcs bochs_mode_funcs = {
+	.fb_create = bochs_gem_fb_create,
+	.atomic_check = drm_atomic_helper_check,
+	.atomic_commit = drm_atomic_helper_commit,
+};
 
 int bochs_kms_init(struct bochs_device *bochs)
 {
diff --git a/drivers/gpu/drm/bochs/Makefile b/drivers/gpu/drm/bochs/Makefile
index 98ef60a19e..e9e0f8f5eb 100644
--- a/drivers/gpu/drm/bochs/Makefile
+++ b/drivers/gpu/drm/bochs/Makefile
@@ -1,3 +1,3 @@
-bochs-drm-y := bochs_drv.o bochs_mm.o bochs_kms.o bochs_fbdev.o bochs_hw.o
+bochs-drm-y := bochs_drv.o bochs_mm.o bochs_kms.o bochs_hw.o
 
 obj-$(CONFIG_DRM_BOCHS)	+= bochs-drm.o
-- 
2.9.3

^ permalink raw reply related

* Re: [PATCH v3 0/5] kvm "virtio pmem" device
From: Pankaj Gupta @ 2019-01-11  7:45 UTC (permalink / raw)
  To: Dave Chinner
  Cc: jack, kvm, linux-nvdimm, qemu-devel, virtualization,
	adilger kernel, zwisler, eblake, dave jiang, darrick wong,
	vishal l verma, mst, willy, hch, linux-acpi, jmoyer, nilal, riel,
	stefanha, imammedo, dan j williams, lcapitulino, linux-ext4,
	tytso, xiaoguangrong eric, rjw, linux-kernel, linux-xfs,
	linux-fsdevel, pbonzini
In-Reply-To: <20190110012617.GA4205@dastard>


> 
> On Wed, Jan 09, 2019 at 08:17:31PM +0530, Pankaj Gupta wrote:
> >  This patch series has implementation for "virtio pmem".
> >  "virtio pmem" is fake persistent memory(nvdimm) in guest
> >  which allows to bypass the guest page cache. This also
> >  implements a VIRTIO based asynchronous flush mechanism.
> 
> Hmmmm. Sharing the host page cache direct into the guest VM. Sounds
> like a good idea, but.....
> 
> This means the guest VM can now run timing attacks to observe host
> side page cache residency, and depending on the implementation I'm
> guessing that the guest will be able to control host side page
> cache eviction, too (e.g. via discard or hole punch operations).

Not sure how? this is similar to mmapping virtual memory by any userspace 
process. Any host userspace process can do such attack on host page cache
using mincore & mmap shared file. 

But i don't think guest can do this alone. For virtio-pmem usecase guest 
won't be using page cache so timing attack from only guest side is not 
possible unless host userspace can run checks on page cache eviction state
using mincore etc. 

As rightly described by Rik, guest will only access its own page cache pages 
and if guest page cache is managed directly by host, this saves alot of 
effort for guest in transferring guest state of page cache.  

> 
> Which means this functionality looks to me like a new vector for
> information leakage into and out of the guest VM via guest
> controlled host page cache manipulation.
> 
> https://arxiv.org/pdf/1901.01161
> 
> I might be wrong, but if I'm not we're going to have to be very
> careful about how guest VMs can access and manipulate host side
> resources like the page cache.....

If I am following correctly the discussions in MM thread. 
Important steps to mitigate this:

* Avoid running mincore in privilege mode: to safeguard page evict state of any 
  page cache page.
* tweaking RWF_NOWAIT 

I think if we secure ways to find current state(cached/evicted) of a page in host, 
we should be able to mitigate the impact for any page cache page access attack 
including virtio-pmem.

Thanks,
Pankaj

^ permalink raw reply

* Re: [RFC PATCH V3 0/5] Hi:
From: Jason Wang @ 2019-01-11  8:59 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: netdev, davem, linux-kernel, kvm, virtualization
In-Reply-To: <682d520e-00e3-cdaa-d51e-23524ae48854@redhat.com>


On 2019/1/8 下午6:12, Jason Wang wrote:
>
> On 2019/1/7 下午10:47, Michael S. Tsirkin wrote:
>> On Mon, Jan 07, 2019 at 02:58:08PM +0800, Jason Wang wrote:
>>> On 2019/1/5 上午5:41, Michael S. Tsirkin wrote:
>>>> On Sat, Dec 29, 2018 at 08:46:51PM +0800, Jason Wang wrote:
>>>>> This series tries to access virtqueue metadata through kernel virtual
>>>>> address instead of copy_user() friends since they had too much
>>>>> overheads like checks, spec barriers or even hardware feature
>>>>> toggling.
>>>> I think it's a reasonable approach.
>>>> However I need to look at whether and which mmu notifiers are 
>>>> invoked before
>>>> writeback. Do you know?
>>>
>>> I don't know but just looking at the MMU notifier ops definition, 
>>> there's no
>>> such callback if my understanding is correct.
>>>
>>> Thanks
>> In that case how are you making sure used ring updates are written back?
>> If they aren't guest will crash ...
>
>
> I think this is the writeback issue you mentioned early. I don't do a 
> followup on the pointer but it looks to me some work is ongoing to fix 
> the issue.
>
> I can investigate it more, but it's not something new, consider the 
> case of VFIO.
>
> Thanks


Ok, after some investigation. The GUP + dirty pages issue is not easy to 
be fixed so it may still take a while.

An idea is switch back to copy_user() friends if we find the metadata 
page is not anonymous.

Does this sound good to you?

Thanks

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply

* Re: [PATCH 1/3] swiotlb: Export maximum allocation size
From: Joerg Roedel @ 2019-01-11  9:12 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: Jens Axboe, Joerg Roedel, brijesh.singh, Michael S . Tsirkin,
	jon.grimm, jfehlig, linux-kernel, virtualization, linux-block,
	iommu, hch
In-Reply-To: <20190110170205.GB27546@char.us.oracle.com>

On Thu, Jan 10, 2019 at 12:02:05PM -0500, Konrad Rzeszutek Wilk wrote:
> Why not use swiotlb_nr_tbl ? That is how drivers/gpu/drm use to figure if they
> need to limit the size of pages.

That function just exports the overall size of the swiotlb aperture, no?
What I need here is the maximum size for a single mapping.

Regards,

	Joerg

^ permalink raw reply

* Re: [PATCH 0/3] Fix virtio-blk issue with SWIOTLB
From: Joerg Roedel @ 2019-01-11  9:15 UTC (permalink / raw)
  To: Jason Wang
  Cc: Jens Axboe, jon.grimm, brijesh.singh, Konrad Rzeszutek Wilk,
	jfehlig, Michael S . Tsirkin, linux-kernel, virtualization,
	linux-block, iommu, hch
In-Reply-To: <5ae1341e-62ec-0478-552b-259eabf9fb17@redhat.com>

On Fri, Jan 11, 2019 at 11:29:31AM +0800, Jason Wang wrote:
> Just wonder if my understanding is correct IOMMU_PLATFORM must be set for
> all virtio devices under AMD-SEV guests?

Yes, that is correct. Emulated DMA can only happen on the SWIOTLB
aperture, because that memory is not encrypted. The guest bounces the
data then to its encrypted memory.

Regards,

	Joerg

^ permalink raw reply

* Re: [PATCH v6 0/7] Add virtio-iommu driver
From: Joerg Roedel @ 2019-01-11 12:28 UTC (permalink / raw)
  To: Jean-Philippe Brucker
  Cc: Mark Rutland, virtio-dev@lists.oasis-open.org, Lorenzo Pieralisi,
	tnowicki@caviumnetworks.com, mst@redhat.com, Marc Zyngier,
	linux-pci@vger.kernel.org, Will Deacon, Robin Murphy,
	virtualization@lists.linux-foundation.org, eric.auger@redhat.com,
	iommu@lists.linux-foundation.org, robh+dt@kernel.org,
	bhelgaas@google.com, kvmarm@lists.cs.columbia.edu,
	devicetree@vger.kernel.org
In-Reply-To: <9110873f-d344-b6b9-c722-9accfc329db2@arm.com>

Hi Jean-Philippe,

On Thu, Dec 13, 2018 at 12:50:29PM +0000, Jean-Philippe Brucker wrote:
> We already do deferred flush: UNMAP requests are added to the queue by
> iommu_unmap(), and then flushed out by iotlb_sync(). So we switch to the
> host only on iotlb_sync(), or when the request queue is full.

So the mappings can stay in place until iotlb_sync() returns? What
happens when the guest sends a map-request for a region it sent and
unmap request before, but did not call iotlb_sync inbetween?

Regards,

	Joerg

^ permalink raw reply

* Re: [PATCH v6 0/7] Add virtio-iommu driver
From: Jean-Philippe Brucker @ 2019-01-11 13:00 UTC (permalink / raw)
  To: Joerg Roedel
  Cc: Mark Rutland, virtio-dev@lists.oasis-open.org, Lorenzo Pieralisi,
	tnowicki@caviumnetworks.com, mst@redhat.com, Marc Zyngier,
	linux-pci@vger.kernel.org, Will Deacon, Robin Murphy,
	virtualization@lists.linux-foundation.org, eric.auger@redhat.com,
	iommu@lists.linux-foundation.org, robh+dt@kernel.org,
	bhelgaas@google.com, kvmarm@lists.cs.columbia.edu,
	devicetree@vger.kernel.org
In-Reply-To: <20190111122846.GE5825@8bytes.org>

On 11/01/2019 12:28, Joerg Roedel wrote:
> Hi Jean-Philippe,
> 
> On Thu, Dec 13, 2018 at 12:50:29PM +0000, Jean-Philippe Brucker wrote:
>> We already do deferred flush: UNMAP requests are added to the queue by
>> iommu_unmap(), and then flushed out by iotlb_sync(). So we switch to the
>> host only on iotlb_sync(), or when the request queue is full.
> 
> So the mappings can stay in place until iotlb_sync() returns? What
> happens when the guest sends a map-request for a region it sent and
> unmap request before, but did not call iotlb_sync inbetween?

At that point the unmap is still in the request queue, and the host will
handle it before getting to the map request. For correctness requests
are necessarily handled in-order by the host. So if the map and unmap
refer to the same domain and IOVA, the host will remove the old mapping
before creating the new one.

Thanks,
Jean

^ permalink raw reply

* Re: [Intel-gfx] [PATCH 7/7] drm: Split out drm_probe_helper.h
From: Daniel Vetter @ 2019-01-11 14:56 UTC (permalink / raw)
  To: Benjamin Gaignard
  Cc: moderated list:ARM/S5P EXYNOS AR..., spice-devel, nouveau,
	linux-arm-msm, Rodrigo Vivi, linux-stm32, etnaviv,
	DRI Development, virtualization, linux-renesas-soc,
	linux-rockchip, linux-mediatek, amd-gfx, Daniel Vetter,
	linux-tegra, Daniel Vetter, linux-amlogic, xen-devel, freedreno,
	Intel Graphics Development, Linux ARM
In-Reply-To: <CA+M3ks7+gd6zSsoQ1861nEYddObwPXU9RmD_KGP=Si2KyV6LhA@mail.gmail.com>

On Tue, Dec 18, 2018 at 10:27:47AM +0100, Benjamin Gaignard wrote:
> Le lun. 17 déc. 2018 à 21:48, Rodrigo Vivi <rodrigo.vivi@intel.com> a écrit :
> >
> > On Mon, Dec 17, 2018 at 08:43:03PM +0100, Daniel Vetter wrote:
> > > Having the probe helper stuff (which pretty much everyone needs) in
> > > the drm_crtc_helper.h file (which atomic drivers should never need) is
> > > confusing. Split them out.
> > >
> > > To make sure I actually achieved the goal here I went through all
> > > drivers. And indeed, all atomic drivers are now free of
> > > drm_crtc_helper.h includes.
> > >
> > > v2: Make it compile. There was so much compile fail on arm drivers
> > > that I figured I'll better not include any of the acks on v1.
> > >
> > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > > Cc: linux-arm-kernel@lists.infradead.org
> > > Cc: virtualization@lists.linux-foundation.org
> > > Cc: etnaviv@lists.freedesktop.org
> > > Cc: linux-samsung-soc@vger.kernel.org
> > > Cc: intel-gfx@lists.freedesktop.org
> >
> > Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> 
> With this version I'm able to compile sti driver so,
> 
> Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>

I merged the first 3 patches, but now I'm stuck because I'm missing review
on patches 5&6. Anyone volunteering?

Thanks, Daniel

> 
> >
> > > Cc: linux-mediatek@lists.infradead.org
> > > Cc: linux-amlogic@lists.infradead.org
> > > Cc: linux-arm-msm@vger.kernel.org
> > > Cc: freedreno@lists.freedesktop.org
> > > Cc: nouveau@lists.freedesktop.org
> > > Cc: spice-devel@lists.freedesktop.org
> > > Cc: amd-gfx@lists.freedesktop.org
> > > Cc: linux-renesas-soc@vger.kernel.org
> > > Cc: linux-rockchip@lists.infradead.org
> > > Cc: linux-stm32@st-md-mailman.stormreply.com
> > > Cc: linux-tegra@vger.kernel.org
> > > Cc: xen-devel@lists.xen.org
> > > ---
> > >  .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    |  2 +-
> > >  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |  2 +-
> > >  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c       |  2 +-
> > >  drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h      |  1 +
> > >  .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c |  2 +-
> > >  .../amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c  |  2 +-
> > >  .../display/amdgpu_dm/amdgpu_dm_services.c    |  2 +-
> > >  drivers/gpu/drm/arc/arcpgu_crtc.c             |  2 +-
> > >  drivers/gpu/drm/arc/arcpgu_drv.c              |  2 +-
> > >  drivers/gpu/drm/arc/arcpgu_sim.c              |  2 +-
> > >  drivers/gpu/drm/arm/hdlcd_crtc.c              |  2 +-
> > >  drivers/gpu/drm/arm/hdlcd_drv.c               |  2 +-
> > >  drivers/gpu/drm/arm/malidp_crtc.c             |  2 +-
> > >  drivers/gpu/drm/arm/malidp_drv.c              |  2 +-
> > >  drivers/gpu/drm/arm/malidp_mw.c               |  2 +-
> > >  drivers/gpu/drm/armada/armada_510.c           |  2 +-
> > >  drivers/gpu/drm/armada/armada_crtc.c          |  2 +-
> > >  drivers/gpu/drm/armada/armada_crtc.h          |  2 +
> > >  drivers/gpu/drm/armada/armada_drv.c           |  2 +-
> > >  drivers/gpu/drm/armada/armada_fb.c            |  2 +-
> > >  drivers/gpu/drm/ast/ast_drv.c                 |  1 +
> > >  drivers/gpu/drm/ast/ast_mode.c                |  1 +
> > >  .../gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c    |  2 +-
> > >  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h  |  2 +-
> > >  drivers/gpu/drm/bochs/bochs_drv.c             |  1 +
> > >  drivers/gpu/drm/bochs/bochs_kms.c             |  1 +
> > >  drivers/gpu/drm/bridge/adv7511/adv7511.h      |  5 +-
> > >  drivers/gpu/drm/bridge/analogix-anx78xx.c     |  2 +-
> > >  .../drm/bridge/analogix/analogix_dp_core.c    |  2 +-
> > >  drivers/gpu/drm/bridge/cdns-dsi.c             |  2 +-
> > >  drivers/gpu/drm/bridge/dumb-vga-dac.c         |  2 +-
> > >  .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c  |  2 +-
> > >  drivers/gpu/drm/bridge/nxp-ptn3460.c          |  2 +-
> > >  drivers/gpu/drm/bridge/panel.c                |  2 +-
> > >  drivers/gpu/drm/bridge/parade-ps8622.c        |  2 +-
> > >  drivers/gpu/drm/bridge/sii902x.c              |  2 +-
> > >  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c     |  2 +-
> > >  drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c |  2 +-
> > >  drivers/gpu/drm/bridge/tc358764.c             |  2 +-
> > >  drivers/gpu/drm/bridge/tc358767.c             |  2 +-
> > >  drivers/gpu/drm/bridge/ti-sn65dsi86.c         |  2 +-
> > >  drivers/gpu/drm/bridge/ti-tfp410.c            |  2 +-
> > >  drivers/gpu/drm/cirrus/cirrus_drv.c           |  1 +
> > >  drivers/gpu/drm/cirrus/cirrus_mode.c          |  1 +
> > >  drivers/gpu/drm/drm_atomic_helper.c           |  1 -
> > >  drivers/gpu/drm/drm_dp_mst_topology.c         |  2 +-
> > >  drivers/gpu/drm/drm_modeset_helper.c          |  2 +-
> > >  drivers/gpu/drm/drm_probe_helper.c            |  2 +-
> > >  drivers/gpu/drm/drm_simple_kms_helper.c       |  2 +-
> > >  drivers/gpu/drm/etnaviv/etnaviv_drv.h         |  1 -
> > >  drivers/gpu/drm/exynos/exynos_dp.c            |  3 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_crtc.c      |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_dpi.c       |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_drv.c       |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_dsi.c       |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_fb.c        |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_fbdev.c     |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_drm_vidi.c      |  2 +-
> > >  drivers/gpu/drm/exynos/exynos_hdmi.c          |  2 +-
> > >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c    |  2 +-
> > >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c     |  2 +-
> > >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c     |  2 +-
> > >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c   |  2 +-
> > >  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c     |  2 +-
> > >  drivers/gpu/drm/gma500/psb_intel_drv.h        |  1 +
> > >  .../gpu/drm/hisilicon/hibmc/hibmc_drm_de.c    |  2 +-
> > >  .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c   |  2 +-
> > >  .../gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c |  2 +-
> > >  .../gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c  |  2 +-
> > >  drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c  |  2 +-
> > >  .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c   |  2 +-
> > >  .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c   |  2 +-
> > >  drivers/gpu/drm/i2c/ch7006_priv.h             |  1 +
> > >  drivers/gpu/drm/i2c/sil164_drv.c              |  2 +-
> > >  drivers/gpu/drm/i2c/tda998x_drv.c             |  2 +-
> > >  drivers/gpu/drm/i915/i915_drv.c               |  2 +-
> > >  drivers/gpu/drm/i915/intel_crt.c              |  2 +-
> > >  drivers/gpu/drm/i915/intel_display.c          |  2 +-
> > >  drivers/gpu/drm/i915/intel_dp.c               |  2 +-
> > >  drivers/gpu/drm/i915/intel_dp_mst.c           |  2 +-
> > >  drivers/gpu/drm/i915/intel_drv.h              |  2 +-
> > >  drivers/gpu/drm/imx/dw_hdmi-imx.c             |  2 +-
> > >  drivers/gpu/drm/imx/imx-drm-core.c            |  2 +-
> > >  drivers/gpu/drm/imx/imx-ldb.c                 |  2 +-
> > >  drivers/gpu/drm/imx/imx-tve.c                 |  2 +-
> > >  drivers/gpu/drm/imx/ipuv3-crtc.c              |  2 +-
> > >  drivers/gpu/drm/imx/parallel-display.c        |  2 +-
> > >  drivers/gpu/drm/mediatek/mtk_dpi.c            |  2 +-
> > >  drivers/gpu/drm/mediatek/mtk_drm_crtc.c       |  2 +-
> > >  drivers/gpu/drm/mediatek/mtk_drm_drv.c        |  2 +-
> > >  drivers/gpu/drm/mediatek/mtk_drm_fb.c         |  2 +-
> > >  drivers/gpu/drm/mediatek/mtk_dsi.c            |  2 +-
> > >  drivers/gpu/drm/mediatek/mtk_hdmi.c           |  2 +-
> > >  drivers/gpu/drm/meson/meson_crtc.c            |  2 +-
> > >  drivers/gpu/drm/meson/meson_drv.c             |  2 +-
> > >  drivers/gpu/drm/meson/meson_dw_hdmi.c         |  2 +-
> > >  drivers/gpu/drm/meson/meson_venc_cvbs.c       |  2 +-
> > >  drivers/gpu/drm/mgag200/mgag200_mode.c        |  1 +
> > >  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c      |  2 +-
> > >  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c   |  2 +-
> > >  drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c     |  2 +-
> > >  .../gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c  |  2 +-
> > >  .../gpu/drm/msm/disp/mdp4/mdp4_dtv_encoder.c  |  2 +-
> > >  .../gpu/drm/msm/disp/mdp4/mdp4_lcdc_encoder.c |  2 +-
> > >  .../gpu/drm/msm/disp/mdp5/mdp5_cmd_encoder.c  |  2 +-
> > >  drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c     |  2 +-
> > >  drivers/gpu/drm/msm/disp/mdp5/mdp5_encoder.c  |  2 +-
> > >  drivers/gpu/drm/msm/msm_drv.h                 |  2 +-
> > >  drivers/gpu/drm/msm/msm_fb.c                  |  2 +-
> > >  drivers/gpu/drm/mxsfb/mxsfb_crtc.c            |  2 +-
> > >  drivers/gpu/drm/mxsfb/mxsfb_drv.c             |  2 +-
> > >  drivers/gpu/drm/mxsfb/mxsfb_out.c             |  2 +-
> > >  drivers/gpu/drm/nouveau/dispnv04/tvnv17.c     |  1 +
> > >  drivers/gpu/drm/nouveau/dispnv50/disp.c       |  2 +-
> > >  drivers/gpu/drm/nouveau/nouveau_connector.c   |  1 +
> > >  drivers/gpu/drm/nouveau/nouveau_display.c     |  1 +
> > >  drivers/gpu/drm/omapdrm/omap_connector.c      |  2 +-
> > >  drivers/gpu/drm/omapdrm/omap_crtc.c           |  2 +-
> > >  drivers/gpu/drm/omapdrm/omap_drv.c            |  2 +-
> > >  drivers/gpu/drm/omapdrm/omap_drv.h            |  2 +-
> > >  drivers/gpu/drm/omapdrm/omap_encoder.c        |  2 +-
> > >  drivers/gpu/drm/omapdrm/omap_fb.c             |  2 +-
> > >  drivers/gpu/drm/pl111/pl111_drv.c             |  2 +-
> > >  drivers/gpu/drm/qxl/qxl_display.c             |  2 +-
> > >  drivers/gpu/drm/qxl/qxl_drv.c                 |  3 +-
> > >  drivers/gpu/drm/qxl/qxl_fb.c                  |  2 +-
> > >  drivers/gpu/drm/qxl/qxl_kms.c                 |  2 +-
> > >  drivers/gpu/drm/radeon/radeon_acpi.c          |  1 +
> > >  drivers/gpu/drm/radeon/radeon_connectors.c    |  1 +
> > >  drivers/gpu/drm/radeon/radeon_device.c        |  1 +
> > >  drivers/gpu/drm/radeon/radeon_display.c       |  1 +
> > >  drivers/gpu/drm/radeon/radeon_dp_mst.c        |  1 +
> > >  drivers/gpu/drm/radeon/radeon_drv.c           |  1 +
> > >  drivers/gpu/drm/radeon/radeon_irq_kms.c       |  1 +
> > >  drivers/gpu/drm/rcar-du/rcar_du_crtc.c        |  2 +-
> > >  drivers/gpu/drm/rcar-du/rcar_du_drv.c         |  2 +-
> > >  drivers/gpu/drm/rcar-du/rcar_du_encoder.c     |  2 +-
> > >  drivers/gpu/drm/rcar-du/rcar_du_kms.c         |  2 +-
> > >  drivers/gpu/drm/rcar-du/rcar_du_plane.c       |  2 +-
> > >  drivers/gpu/drm/rcar-du/rcar_du_vsp.c         |  2 +-
> > >  drivers/gpu/drm/rcar-du/rcar_lvds.c           |  2 +-
> > >  .../gpu/drm/rockchip/analogix_dp-rockchip.c   |  2 +-
> > >  drivers/gpu/drm/rockchip/cdn-dp-core.c        |  2 +-
> > >  drivers/gpu/drm/rockchip/cdn-dp-core.h        |  2 +-
> > >  drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c   |  2 +-
> > >  drivers/gpu/drm/rockchip/inno_hdmi.c          |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c   |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_drm_fb.c    |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_drm_psr.c   |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_lvds.c      |  2 +-
> > >  drivers/gpu/drm/rockchip/rockchip_rgb.c       |  2 +-
> > >  drivers/gpu/drm/shmobile/shmob_drm_crtc.c     |  1 +
> > >  drivers/gpu/drm/shmobile/shmob_drm_drv.c      |  1 +
> > >  drivers/gpu/drm/shmobile/shmob_drm_kms.c      |  1 +
> > >  drivers/gpu/drm/sti/sti_crtc.c                |  2 +-
> > >  drivers/gpu/drm/sti/sti_drv.c                 |  2 +-
> > >  drivers/gpu/drm/sti/sti_dvo.c                 |  2 +-
> > >  drivers/gpu/drm/sti/sti_hda.c                 |  2 +-
> > >  drivers/gpu/drm/sti/sti_hdmi.c                |  2 +-
> > >  drivers/gpu/drm/sti/sti_tvout.c               |  2 +-
> > >  drivers/gpu/drm/stm/drv.c                     |  2 +-
> > >  drivers/gpu/drm/stm/ltdc.c                    |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_backend.c         |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_crtc.c            |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_drv.c             |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c        |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_lvds.c            |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_rgb.c             |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_tcon.c            |  2 +-
> > >  drivers/gpu/drm/sun4i/sun4i_tv.c              |  2 +-
> > >  drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c        |  2 +-
> > >  drivers/gpu/drm/sun4i/sun8i_mixer.c           |  2 +-
> > >  drivers/gpu/drm/sun4i/sun8i_ui_layer.c        |  2 +-
> > >  drivers/gpu/drm/sun4i/sun8i_vi_layer.c        |  2 +-
> > >  drivers/gpu/drm/tegra/drm.h                   |  2 +-
> > >  drivers/gpu/drm/tegra/fb.c                    |  1 +
> > >  drivers/gpu/drm/tegra/hdmi.c                  |  2 +-
> > >  drivers/gpu/drm/tegra/hub.c                   |  2 +-
> > >  drivers/gpu/drm/tilcdc/tilcdc_drv.c           |  1 +
> > >  drivers/gpu/drm/tilcdc/tilcdc_drv.h           |  1 -
> > >  drivers/gpu/drm/tilcdc/tilcdc_external.c      |  1 +
> > >  drivers/gpu/drm/tilcdc/tilcdc_panel.c         |  1 +
> > >  drivers/gpu/drm/tilcdc/tilcdc_tfp410.c        |  1 +
> > >  drivers/gpu/drm/tinydrm/core/tinydrm-core.c   |  2 +-
> > >  drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c   |  2 +-
> > >  drivers/gpu/drm/tve200/tve200_drv.c           |  2 +-
> > >  drivers/gpu/drm/udl/udl_connector.c           |  1 +
> > >  drivers/gpu/drm/udl/udl_drv.c                 |  1 +
> > >  drivers/gpu/drm/udl/udl_main.c                |  1 +
> > >  drivers/gpu/drm/vc4/vc4_crtc.c                |  2 +-
> > >  drivers/gpu/drm/vc4/vc4_dpi.c                 |  2 +-
> > >  drivers/gpu/drm/vc4/vc4_dsi.c                 |  2 +-
> > >  drivers/gpu/drm/vc4/vc4_hdmi.c                |  2 +-
> > >  drivers/gpu/drm/vc4/vc4_kms.c                 |  2 +-
> > >  drivers/gpu/drm/vc4/vc4_txp.c                 |  2 +-
> > >  drivers/gpu/drm/vc4/vc4_vec.c                 |  2 +-
> > >  drivers/gpu/drm/virtio/virtgpu_display.c      |  2 +-
> > >  drivers/gpu/drm/virtio/virtgpu_drv.h          |  2 +-
> > >  drivers/gpu/drm/vkms/vkms_crtc.c              |  2 +-
> > >  drivers/gpu/drm/vkms/vkms_drv.c               |  2 +-
> > >  drivers/gpu/drm/vkms/vkms_output.c            |  2 +-
> > >  drivers/gpu/drm/vmwgfx/vmwgfx_kms.h           |  2 +-
> > >  drivers/gpu/drm/xen/xen_drm_front.c           |  2 +-
> > >  drivers/gpu/drm/xen/xen_drm_front_conn.c      |  2 +-
> > >  drivers/gpu/drm/xen/xen_drm_front_gem.c       |  2 +-
> > >  drivers/gpu/drm/xen/xen_drm_front_kms.c       |  2 +-
> > >  drivers/gpu/drm/zte/zx_drm_drv.c              |  2 +-
> > >  drivers/gpu/drm/zte/zx_hdmi.c                 |  2 +-
> > >  drivers/gpu/drm/zte/zx_tvenc.c                |  2 +-
> > >  drivers/gpu/drm/zte/zx_vga.c                  |  2 +-
> > >  drivers/gpu/drm/zte/zx_vou.c                  |  2 +-
> > >  drivers/staging/vboxvideo/vbox_irq.c          |  2 +-
> > >  drivers/staging/vboxvideo/vbox_mode.c         |  2 +-
> > >  include/drm/drm_crtc_helper.h                 | 16 ------
> > >  include/drm/drm_probe_helper.h                | 50 +++++++++++++++++++
> > >  217 files changed, 268 insertions(+), 199 deletions(-)
> > >  create mode 100644 include/drm/drm_probe_helper.h
> > >
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > index 69ad6ec0a4f3..f0d36787d8d1 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > @@ -25,7 +25,7 @@
> > >   */
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_edid.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/amdgpu_drm.h>
> > >  #include "amdgpu.h"
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > > index 00c86c33f9a2..35bbc64f53bb 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > > @@ -30,7 +30,7 @@
> > >  #include <linux/console.h>
> > >  #include <linux/slab.h>
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/amdgpu_drm.h>
> > >  #include <linux/vgaarb.h>
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > index 9c77eaa45982..1246925db06b 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > > @@ -32,7 +32,7 @@
> > >  #include <linux/module.h>
> > >  #include <linux/pm_runtime.h>
> > >  #include <linux/vga_switcheroo.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "amdgpu.h"
> > >  #include "amdgpu_irq.h"
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> > > index aadd0fa42e43..2c99ef35db79 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> > > @@ -36,6 +36,7 @@
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_fixed.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <linux/i2c.h>
> > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
> > > index 39997d977efb..78173311f718 100644
> > > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
> > > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
> > > @@ -29,7 +29,7 @@
> > >  #include <linux/i2c.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/amdgpu_drm.h>
> > >  #include <drm/drm_edid.h>
> > >
> > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
> > > index 9d2d6986b983..7ef99037167a 100644
> > > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
> > > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
> > > @@ -25,7 +25,7 @@
> > >  #include <linux/acpi.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/amdgpu_drm.h>
> > >  #include "dm_services.h"
> > >  #include "amdgpu.h"
> > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_services.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_services.c
> > > index 516795342dd2..d915e8c8769b 100644
> > > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_services.c
> > > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_services.c
> > > @@ -27,7 +27,7 @@
> > >  #include <linux/acpi.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/amdgpu_drm.h>
> > >  #include "dm_services.h"
> > >  #include "amdgpu.h"
> > > diff --git a/drivers/gpu/drm/arc/arcpgu_crtc.c b/drivers/gpu/drm/arc/arcpgu_crtc.c
> > > index 62f51f70606d..6ba96415e683 100644
> > > --- a/drivers/gpu/drm/arc/arcpgu_crtc.c
> > > +++ b/drivers/gpu/drm/arc/arcpgu_crtc.c
> > > @@ -15,7 +15,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> > > index 206a76abf771..dc72648bd783 100644
> > > --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> > > +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> > > @@ -15,7 +15,7 @@
> > >   */
> > >
> > >  #include <linux/clk.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> > > index 6530d88f7293..ebee4748f5d9 100644
> > > --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> > > +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> > > @@ -14,7 +14,7 @@
> > >   *
> > >   */
> > >
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > >  #include "arcpgu.h"
> > > diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c
> > > index e4d67b70244d..99c188de8651 100644
> > > --- a/drivers/gpu/drm/arm/hdlcd_crtc.c
> > > +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c
> > > @@ -13,7 +13,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> > > index dfad8d06d108..fba307c8afa5 100644
> > > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> > > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> > > @@ -22,7 +22,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/arm/malidp_crtc.c b/drivers/gpu/drm/arm/malidp_crtc.c
> > > index e1b72782848c..56aad288666e 100644
> > > --- a/drivers/gpu/drm/arm/malidp_crtc.c
> > > +++ b/drivers/gpu/drm/arm/malidp_crtc.c
> > > @@ -14,7 +14,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <linux/clk.h>
> > >  #include <linux/pm_runtime.h>
> > >  #include <video/videomode.h>
> > > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > > index 505f316a192e..ab50ad06e271 100644
> > > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > > @@ -23,7 +23,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_mw.c
> > > index 91472e5e0c8b..041a64dc7167 100644
> > > --- a/drivers/gpu/drm/arm/malidp_mw.c
> > > +++ b/drivers/gpu/drm/arm/malidp_mw.c
> > > @@ -8,7 +8,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drmP.h>
> > > diff --git a/drivers/gpu/drm/armada/armada_510.c b/drivers/gpu/drm/armada/armada_510.c
> > > index 2f7c048c5361..0e91d27921bd 100644
> > > --- a/drivers/gpu/drm/armada/armada_510.c
> > > +++ b/drivers/gpu/drm/armada/armada_510.c
> > > @@ -9,7 +9,7 @@
> > >   */
> > >  #include <linux/clk.h>
> > >  #include <linux/io.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "armada_crtc.h"
> > >  #include "armada_drm.h"
> > >  #include "armada_hw.h"
> > > diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
> > > index da9360688b55..c68c3da9e17f 100644
> > > --- a/drivers/gpu/drm/armada/armada_crtc.c
> > > +++ b/drivers/gpu/drm/armada/armada_crtc.c
> > > @@ -12,7 +12,7 @@
> > >  #include <linux/platform_device.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include "armada_crtc.h"
> > > diff --git a/drivers/gpu/drm/armada/armada_crtc.h b/drivers/gpu/drm/armada/armada_crtc.h
> > > index 7ebd337b60af..08761ff01739 100644
> > > --- a/drivers/gpu/drm/armada/armada_crtc.h
> > > +++ b/drivers/gpu/drm/armada/armada_crtc.h
> > > @@ -8,6 +8,8 @@
> > >  #ifndef ARMADA_CRTC_H
> > >  #define ARMADA_CRTC_H
> > >
> > > +#include <drm/drm_crtc.h>
> > > +
> > >  struct armada_gem_object;
> > >
> > >  struct armada_regs {
> > > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> > > index fa31589b4fc0..e660c5ca52ae 100644
> > > --- a/drivers/gpu/drm/armada/armada_drv.c
> > > +++ b/drivers/gpu/drm/armada/armada_drv.c
> > > @@ -10,7 +10,7 @@
> > >  #include <linux/module.h>
> > >  #include <linux/of_graph.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include "armada_crtc.h"
> > > diff --git a/drivers/gpu/drm/armada/armada_fb.c b/drivers/gpu/drm/armada/armada_fb.c
> > > index 6bd638a54579..058ac7d9920f 100644
> > > --- a/drivers/gpu/drm/armada/armada_fb.c
> > > +++ b/drivers/gpu/drm/armada/armada_fb.c
> > > @@ -5,7 +5,7 @@
> > >   * it under the terms of the GNU General Public License version 2 as
> > >   * published by the Free Software Foundation.
> > >   */
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_modeset_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include "armada_drm.h"
> > > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> > > index bf589c53b908..3871b39d4dea 100644
> > > --- a/drivers/gpu/drm/ast/ast_drv.c
> > > +++ b/drivers/gpu/drm/ast/ast_drv.c
> > > @@ -30,6 +30,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "ast_drv.h"
> > >
> > > diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> > > index 8bb355d5d43d..97fed0627d1c 100644
> > > --- a/drivers/gpu/drm/ast/ast_mode.c
> > > +++ b/drivers/gpu/drm/ast/ast_mode.c
> > > @@ -32,6 +32,7 @@
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "ast_drv.h"
> > >
> > >  #include "ast_tables.h"
> > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> > > index 96f4082671fe..8070a558d7b1 100644
> > > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> > > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> > > @@ -24,7 +24,7 @@
> > >  #include <linux/pinctrl/consumer.h>
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drmP.h>
> > >
> > >  #include <video/videomode.h>
> > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
> > > index 4cc1e03f0aee..70bd540d644e 100644
> > > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
> > > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
> > > @@ -31,7 +31,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/bochs/bochs_drv.c b/drivers/gpu/drm/bochs/bochs_drv.c
> > > index f3dd66ae990a..e5a48e87b137 100644
> > > --- a/drivers/gpu/drm/bochs/bochs_drv.c
> > > +++ b/drivers/gpu/drm/bochs/bochs_drv.c
> > > @@ -9,6 +9,7 @@
> > >  #include <linux/module.h>
> > >  #include <linux/slab.h>
> > >  #include <drm/drm_fb_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "bochs.h"
> > >
> > > diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
> > > index f87c284dd93d..5f1eb69dd167 100644
> > > --- a/drivers/gpu/drm/bochs/bochs_kms.c
> > > +++ b/drivers/gpu/drm/bochs/bochs_kms.c
> > > @@ -7,6 +7,7 @@
> > >
> > >  #include "bochs.h"
> > >  #include <drm/drm_plane_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  static int defx = 1024;
> > >  static int defy = 768;
> > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511.h b/drivers/gpu/drm/bridge/adv7511/adv7511.h
> > > index 73d8ccb97742..d52ffab41eb4 100644
> > > --- a/drivers/gpu/drm/bridge/adv7511/adv7511.h
> > > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511.h
> > > @@ -14,8 +14,11 @@
> > >  #include <linux/regmap.h>
> > >  #include <linux/regulator/consumer.h>
> > >
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > > +#include <drm/drm_connector.h>
> > > +#include <drm/drm_modes.h>
> > > +#include <drm/drm_bridge.h>
> > >
> > >  #define ADV7511_REG_CHIP_REVISION            0x00
> > >  #define ADV7511_REG_N0                               0x01
> > > diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix-anx78xx.c
> > > index f8433c93f463..f39a91e3f9e0 100644
> > > --- a/drivers/gpu/drm/bridge/analogix-anx78xx.c
> > > +++ b/drivers/gpu/drm/bridge/analogix-anx78xx.c
> > > @@ -31,7 +31,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_edid.h>
> > >
> > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> > > index 753e96129ab7..c1da8ae3c408 100644
> > > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> > > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> > > @@ -26,7 +26,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_panel.h>
> > >
> > >  #include <drm/bridge/analogix_dp.h>
> > > diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c
> > > index ce9496d13986..48ed444cad50 100644
> > > --- a/drivers/gpu/drm/bridge/cdns-dsi.c
> > > +++ b/drivers/gpu/drm/bridge/cdns-dsi.c
> > > @@ -7,7 +7,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_bridge.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <video/mipi_display.h>
> > > diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c b/drivers/gpu/drm/bridge/dumb-vga-dac.c
> > > index 9b706789a341..0805801f4e94 100644
> > > --- a/drivers/gpu/drm/bridge/dumb-vga-dac.c
> > > +++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c
> > > @@ -18,7 +18,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  struct dumb_vga {
> > >       struct drm_bridge       bridge;
> > > diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
> > > index 2136c97aeb8e..9687a1a0e737 100644
> > > --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
> > > +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
> > > @@ -36,7 +36,7 @@
> > >  #include <linux/of.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drmP.h>
> > >
> > > diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> > > index a3e817abace1..a56306421bc7 100644
> > > --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
> > > +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> > > @@ -22,7 +22,7 @@
> > >  #include <linux/of_gpio.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > > diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
> > > index 7cbaba213ef6..caf12b8fd572 100644
> > > --- a/drivers/gpu/drm/bridge/panel.c
> > > +++ b/drivers/gpu/drm/bridge/panel.c
> > > @@ -12,7 +12,7 @@
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_connector.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <drm/drm_modeset_helper_vtables.h>
> > >  #include <drm/drm_panel.h>
> > > diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
> > > index 7334d1b62b71..483a7142c5ea 100644
> > > --- a/drivers/gpu/drm/bridge/parade-ps8622.c
> > > +++ b/drivers/gpu/drm/bridge/parade-ps8622.c
> > > @@ -26,7 +26,7 @@
> > >  #include <linux/regulator/consumer.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drmP.h>
> > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
> > > index bfa902013aa4..61b1502f566c 100644
> > > --- a/drivers/gpu/drm/bridge/sii902x.c
> > > +++ b/drivers/gpu/drm/bridge/sii902x.c
> > > @@ -30,7 +30,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >
> > >  #define SII902X_TPI_VIDEO_DATA                       0x0
> > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> > > index 64c3cf027518..360a7ec39861 100644
> > > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> > > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> > > @@ -25,7 +25,7 @@
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_encoder_slave.h>
> > >  #include <drm/bridge/dw_hdmi.h>
> > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> > > index 2f4b145b73af..09a38ae81e52 100644
> > > --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> > > +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> > > @@ -19,7 +19,7 @@
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_bridge.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/bridge/dw_mipi_dsi.h>
> > > diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc358764.c
> > > index afd491018bfc..282092019e82 100644
> > > --- a/drivers/gpu/drm/bridge/tc358764.c
> > > +++ b/drivers/gpu/drm/bridge/tc358764.c
> > > @@ -9,7 +9,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> > > index 8e28e738cb52..5c0ff4a16572 100644
> > > --- a/drivers/gpu/drm/bridge/tc358767.c
> > > +++ b/drivers/gpu/drm/bridge/tc358767.c
> > > @@ -34,7 +34,7 @@
> > >  #include <linux/slab.h>
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> > > index 10243965ee7c..e74e2c928f51 100644
> > > --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> > > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> > > @@ -6,7 +6,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
> > > index c3e32138c6bb..7bfb4f338813 100644
> > > --- a/drivers/gpu/drm/bridge/ti-tfp410.c
> > > +++ b/drivers/gpu/drm/bridge/ti-tfp410.c
> > > @@ -20,7 +20,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #define HOTPLUG_DEBOUNCE_MS          1100
> > >
> > > diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.c b/drivers/gpu/drm/cirrus/cirrus_drv.c
> > > index db40b77c7f7c..8ec880f3a322 100644
> > > --- a/drivers/gpu/drm/cirrus/cirrus_drv.c
> > > +++ b/drivers/gpu/drm/cirrus/cirrus_drv.c
> > > @@ -12,6 +12,7 @@
> > >  #include <linux/console.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "cirrus_drv.h"
> > >
> > > diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
> > > index ed7dcf212a34..a830e70fc0bb 100644
> > > --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
> > > +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
> > > @@ -17,6 +17,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include <video/cirrus.h>
> > >
> > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> > > index 69cbafd5ebee..54417fce5e5c 100644
> > > --- a/drivers/gpu/drm/drm_atomic_helper.c
> > > +++ b/drivers/gpu/drm/drm_atomic_helper.c
> > > @@ -29,7 +29,6 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_uapi.h>
> > >  #include <drm/drm_plane_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_writeback.h>
> > >  #include <drm/drm_damage_helper.h>
> > > diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> > > index 2ab16c9e6243..6d8f21e8e3d6 100644
> > > --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> > > +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> > > @@ -33,7 +33,7 @@
> > >  #include <drm/drm_fixed.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  /**
> > >   * DOC: dp mst helper
> > > diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
> > > index 9150fa385bba..6f48137d7192 100644
> > > --- a/drivers/gpu/drm/drm_modeset_helper.c
> > > +++ b/drivers/gpu/drm/drm_modeset_helper.c
> > > @@ -21,7 +21,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_modeset_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> > > index a1bb157bfdfa..c83fee652502 100644
> > > --- a/drivers/gpu/drm/drm_probe_helper.c
> > > +++ b/drivers/gpu/drm/drm_probe_helper.c
> > > @@ -32,11 +32,11 @@
> > >  #include <linux/export.h>
> > >  #include <linux/moduleparam.h>
> > >
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_client.h>
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_fourcc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_modeset_helper_vtables.h>
> > > diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
> > > index 917812448d1b..9fc26a69ab79 100644
> > > --- a/drivers/gpu/drm/drm_simple_kms_helper.c
> > > +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
> > > @@ -10,7 +10,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_simple_kms_helper.h>
> > >  #include <linux/slab.h>
> > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.h b/drivers/gpu/drm/etnaviv/etnaviv_drv.h
> > > index 8d02d1b7dcf5..ea743d4fa3f8 100644
> > > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.h
> > > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.h
> > > @@ -21,7 +21,6 @@
> > >  #include <linux/mm_types.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem.h>
> > >  #include <drm/etnaviv_drm.h>
> > > diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c
> > > index c8449ae4f4fe..9f1c6215be0b 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_dp.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_dp.c
> > > @@ -23,7 +23,8 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> > > index 2696289ecc78..12d3816356ef 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> > > @@ -13,7 +13,7 @@
> > >   */
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_encoder.h>
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
> > > index 2f0babb67c51..fa95af1dc534 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
> > > @@ -11,7 +11,7 @@
> > >  */
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > > index 2c75e789b2a7..a941d64875f6 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> > > @@ -15,7 +15,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >
> > >  #include <linux/component.h>
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > index d81e62ae286a..8d28cdbfcddd 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > @@ -13,7 +13,7 @@
> > >  #include <asm/unaligned.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_panel.h>
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
> > > index 31eb538a44ae..0dc1a688b502 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
> > > @@ -14,7 +14,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> > > index ce9604ca8041..f057082a9b30 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> > > @@ -15,7 +15,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/exynos_drm.h>
> > >
> > >  #include <linux/console.h>
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> > > index 19697c1362d8..1b0e4e0f52fe 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> > > @@ -20,7 +20,7 @@
> > >  #include <drm/exynos_drm.h>
> > >
> > >  #include <drm/drm_edid.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > >  #include "exynos_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
> > > index 2092a650df7d..231f70b13b37 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> > > @@ -16,7 +16,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_edid.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > >  #include "regs-hdmi.h"
> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
> > > index 18afc94e4dff..bf256971063d 100644
> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
> > > @@ -16,7 +16,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <video/videomode.h>
> > >
> > >  #include "fsl_dcu_drm_crtc.h"
> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > > index ceddc3e29258..a66fa80be8e8 100644
> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > > @@ -24,7 +24,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c
> > > index ddc68e476a4d..741de83955ec 100644
> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c
> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c
> > > @@ -11,7 +11,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c
> > > index 9554b245746e..593f9291b8e2 100644
> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c
> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c
> > > @@ -14,7 +14,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> > > index 2298ed2a9e1c..577fb1be2d59 100644
> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> > > @@ -14,7 +14,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >
> > > diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
> > > index e05e5399af2d..313552d2a69d 100644
> > > --- a/drivers/gpu/drm/gma500/psb_intel_drv.h
> > > +++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
> > > @@ -23,6 +23,7 @@
> > >  #include <linux/i2c-algo-bit.h>
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <linux/gpio.h>
> > >  #include "gma_display.h"
> > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
> > > index a956545774a3..2ac593956529 100644
> > > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
> > > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
> > > @@ -18,7 +18,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >
> > >  #include "hibmc_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > > index 68c0c297b3a5..85a701af6530 100644
> > > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> > > @@ -20,7 +20,7 @@
> > >  #include <linux/module.h>
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "hibmc_drm_drv.h"
> > >  #include "hibmc_drm_regs.h"
> > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> > > index edcca1761500..c442aa2dd00f 100644
> > > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> > > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> > > @@ -17,7 +17,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >
> > >  #include "hibmc_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> > > index 744956cea749..d2cf7317930a 100644
> > > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> > > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> > > @@ -17,7 +17,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "hibmc_drm_drv.h"
> > >  #include "hibmc_drm_regs.h"
> > > diff --git a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
> > > index b4c7af3ab6ae..788ec1e53794 100644
> > > --- a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
> > > +++ b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
> > > @@ -19,7 +19,7 @@
> > >  #include <linux/component.h>
> > >
> > >  #include <drm/drm_of.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_encoder_slave.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > > index bb774202a5a1..8ad7ab7ece9f 100644
> > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > > @@ -24,7 +24,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> > > index e6a62d5a00a3..e0f410ce28b2 100644
> > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> > > @@ -24,7 +24,7 @@
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >
> > >  #include "kirin_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/i2c/ch7006_priv.h b/drivers/gpu/drm/i2c/ch7006_priv.h
> > > index dc6414af5d79..25f0abd4fdab 100644
> > > --- a/drivers/gpu/drm/i2c/ch7006_priv.h
> > > +++ b/drivers/gpu/drm/i2c/ch7006_priv.h
> > > @@ -28,6 +28,7 @@
> > >  #define __DRM_I2C_CH7006_PRIV_H__
> > >
> > >  #include <drm/drmP.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_encoder_slave.h>
> > >  #include <drm/i2c/ch7006.h>
> > > diff --git a/drivers/gpu/drm/i2c/sil164_drv.c b/drivers/gpu/drm/i2c/sil164_drv.c
> > > index c52d7a3af786..14c1fc96a157 100644
> > > --- a/drivers/gpu/drm/i2c/sil164_drv.c
> > > +++ b/drivers/gpu/drm/i2c/sil164_drv.c
> > > @@ -27,7 +27,7 @@
> > >  #include <linux/module.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder_slave.h>
> > >  #include <drm/i2c/sil164.h>
> > >
> > > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
> > > index f8a1d70a31c7..b7d0eb181793 100644
> > > --- a/drivers/gpu/drm/i2c/tda998x_drv.c
> > > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c
> > > @@ -26,7 +26,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/i2c/tda998x.h>
> > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > > index caa055ac9472..b5b89b01e376 100644
> > > --- a/drivers/gpu/drm/i915/i915_drv.c
> > > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > > @@ -42,7 +42,7 @@
> > >  #include <acpi/video.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/i915_drm.h>
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> > > index 0a41e58d61de..c2d0b1d5166f 100644
> > > --- a/drivers/gpu/drm/i915/intel_crt.c
> > > +++ b/drivers/gpu/drm/i915/intel_crt.c
> > > @@ -30,7 +30,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include "intel_drv.h"
> > >  #include <drm/i915_drm.h>
> > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > > index 849a677763b9..f500470a68f5 100644
> > > --- a/drivers/gpu/drm/i915/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/intel_display.c
> > > @@ -42,7 +42,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_rect.h>
> > >  #include <drm/drm_atomic_uapi.h>
> > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > > index 62484e129563..30c882942ed9 100644
> > > --- a/drivers/gpu/drm/i915/intel_dp.c
> > > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > > @@ -35,7 +35,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_hdcp.h>
> > > diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
> > > index f05427b74e34..32e3c0366876 100644
> > > --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> > > +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> > > @@ -27,7 +27,7 @@
> > >  #include "i915_drv.h"
> > >  #include "intel_drv.h"
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >
> > >  static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
> > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> > > index cb3a055f18c8..c6d2eff0e19e 100644
> > > --- a/drivers/gpu/drm/i915/intel_drv.h
> > > +++ b/drivers/gpu/drm/i915/intel_drv.h
> > > @@ -32,7 +32,7 @@
> > >  #include <drm/i915_drm.h>
> > >  #include "i915_drv.h"
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_dp_dual_mode_helper.h>
> > > diff --git a/drivers/gpu/drm/imx/dw_hdmi-imx.c b/drivers/gpu/drm/imx/dw_hdmi-imx.c
> > > index 77a26fd3a44a..06393cd1067d 100644
> > > --- a/drivers/gpu/drm/imx/dw_hdmi-imx.c
> > > +++ b/drivers/gpu/drm/imx/dw_hdmi-imx.c
> > > @@ -13,7 +13,7 @@
> > >  #include <linux/regmap.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_encoder_slave.h>
> > >
> > > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> > > index 820c7e3878f0..4db26cbed08f 100644
> > > --- a/drivers/gpu/drm/imx/imx-drm-core.c
> > > +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> > > @@ -13,7 +13,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
> > > index 2c5bbe317353..ffa742f64d44 100644
> > > --- a/drivers/gpu/drm/imx/imx-ldb.c
> > > +++ b/drivers/gpu/drm/imx/imx-ldb.c
> > > @@ -12,7 +12,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <linux/mfd/syscon.h>
> > > diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> > > index 293dd5752583..e725af8a0025 100644
> > > --- a/drivers/gpu/drm/imx/imx-tve.c
> > > +++ b/drivers/gpu/drm/imx/imx-tve.c
> > > @@ -17,7 +17,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <video/imx-ipu-v3.h>
> > >
> > >  #include "imx-drm.h"
> > > diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c
> > > index 058b53c0aa7e..95ddcbf2f6eb 100644
> > > --- a/drivers/gpu/drm/imx/ipuv3-crtc.c
> > > +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c
> > > @@ -12,7 +12,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <linux/clk.h>
> > >  #include <linux/errno.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
> > > index f3ce51121dd6..670919781ded 100644
> > > --- a/drivers/gpu/drm/imx/parallel-display.c
> > > +++ b/drivers/gpu/drm/imx/parallel-display.c
> > > @@ -10,7 +10,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <linux/videodev2.h>
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > index 62a9d47df948..22e68a100e7b 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > @@ -13,7 +13,7 @@
> > >   */
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <linux/kernel.h>
> > >  #include <linux/component.h>
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> > > index 92ecb9bf982c..96709318ad8c 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
> > > @@ -14,7 +14,7 @@
> > >  #include <asm/barrier.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <linux/clk.h>
> > >  #include <linux/pm_runtime.h>
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > > index 6422e99952fe..8a48a317cbd3 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > > @@ -15,7 +15,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.c b/drivers/gpu/drm/mediatek/mtk_drm_fb.c
> > > index be5f6f1daf55..e20fcaef2851 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_drm_fb.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.c
> > > @@ -12,7 +12,7 @@
> > >   */
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_modeset_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> > > index 27b507eb4a99..04bfba71aebf 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> > > @@ -13,7 +13,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > index 862f3ec22131..607287797073 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > @@ -14,7 +14,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <linux/arm-smccc.h>
> > >  #include <linux/clk.h>
> > > diff --git a/drivers/gpu/drm/meson/meson_crtc.c b/drivers/gpu/drm/meson/meson_crtc.c
> > > index 75d97f1b2e8f..ec573c04206b 100644
> > > --- a/drivers/gpu/drm/meson/meson_crtc.c
> > > +++ b/drivers/gpu/drm/meson/meson_crtc.c
> > > @@ -30,7 +30,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_flip_work.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "meson_crtc.h"
> > >  #include "meson_plane.h"
> > > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> > > index 3ee4d4a4ecba..6b29447fd09e 100644
> > > --- a/drivers/gpu/drm/meson/meson_drv.c
> > > +++ b/drivers/gpu/drm/meson/meson_drv.c
> > > @@ -31,7 +31,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_flip_work.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c
> > > index 807111ebfdd9..b6299f3f4310 100644
> > > --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c
> > > +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c
> > > @@ -27,7 +27,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_edid.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/bridge/dw_hdmi.h>
> > >
> > > diff --git a/drivers/gpu/drm/meson/meson_venc_cvbs.c b/drivers/gpu/drm/meson/meson_venc_cvbs.c
> > > index f7945bae3b4a..64de3a7026d0 100644
> > > --- a/drivers/gpu/drm/meson/meson_venc_cvbs.c
> > > +++ b/drivers/gpu/drm/meson/meson_venc_cvbs.c
> > > @@ -27,7 +27,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_edid.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > >  #include "meson_venc_cvbs.h"
> > > diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> > > index acf7bfe68454..7481a3d556ad 100644
> > > --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> > > +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> > > @@ -16,6 +16,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "mgag200_drv.h"
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > > index 9be7c355debd..660c324f861f 100644
> > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > > @@ -22,7 +22,7 @@
> > >  #include <linux/ktime.h>
> > >  #include <drm/drm_mode.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_flip_work.h>
> > >  #include <drm/drm_rect.h>
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> > > index 36158b7d99cd..36af231bb73f 100644
> > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> > > @@ -24,7 +24,7 @@
> > >  #include "msm_drv.h"
> > >  #include "dpu_kms.h"
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "dpu_hwio.h"
> > >  #include "dpu_hw_catalog.h"
> > >  #include "dpu_hw_intf.h"
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
> > > index 8f2359dc87b4..299686ba248a 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
> > > @@ -16,7 +16,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_flip_work.h>
> > >  #include <drm/drm_mode.h>
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c
> > > index 6a1ebdace391..86cbe173106e 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c
> > > @@ -18,7 +18,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "mdp4_kms.h"
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_dtv_encoder.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_dtv_encoder.c
> > > index a8fd14d4846b..731d628eaabf 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_dtv_encoder.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_dtv_encoder.c
> > > @@ -16,7 +16,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "mdp4_kms.h"
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lcdc_encoder.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lcdc_encoder.c
> > > index c9e34501a89e..b23e60b2317b 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lcdc_encoder.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lcdc_encoder.c
> > > @@ -17,7 +17,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "mdp4_kms.h"
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cmd_encoder.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cmd_encoder.c
> > > index c1962f29ec7d..34d41e76ba6f 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cmd_encoder.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cmd_encoder.c
> > > @@ -12,7 +12,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "mdp5_kms.h"
> > >
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
> > > index c5fde1a4191a..2872c89c82c3 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
> > > @@ -19,7 +19,7 @@
> > >  #include <linux/sort.h>
> > >  #include <drm/drm_mode.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_flip_work.h>
> > >
> > >  #include "mdp5_kms.h"
> > > diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_encoder.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_encoder.c
> > > index fcd44d1d1068..b32c662dcb60 100644
> > > --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_encoder.c
> > > +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_encoder.c
> > > @@ -17,7 +17,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "mdp5_kms.h"
> > >
> > > diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
> > > index 9cd6a96c6bf2..353a6fb98adb 100644
> > > --- a/drivers/gpu/drm/msm/msm_drv.h
> > > +++ b/drivers/gpu/drm/msm/msm_drv.h
> > > @@ -39,7 +39,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/msm_drm.h>
> > > diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c
> > > index 67dfd8d3dc12..2e62c943571d 100644
> > > --- a/drivers/gpu/drm/msm/msm_fb.c
> > > +++ b/drivers/gpu/drm/msm/msm_fb.c
> > > @@ -16,7 +16,7 @@
> > >   */
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > >  #include "msm_drv.h"
> > > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_crtc.c b/drivers/gpu/drm/mxsfb/mxsfb_crtc.c
> > > index 24b1f0c1432e..38cdde9841e2 100644
> > > --- a/drivers/gpu/drm/mxsfb/mxsfb_crtc.c
> > > +++ b/drivers/gpu/drm/mxsfb/mxsfb_crtc.c
> > > @@ -19,7 +19,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > > index 88ba003979e6..9c117352fca9 100644
> > > --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > > +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> > > @@ -31,7 +31,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_out.c b/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > > index e5edf016a439..1bec96baf948 100644
> > > --- a/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > > +++ b/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > > @@ -16,7 +16,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
> > > index 8fd8124d72ba..26fd71c06626 100644
> > > --- a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
> > > +++ b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
> > > @@ -26,6 +26,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "nouveau_drv.h"
> > >  #include "nouveau_reg.h"
> > >  #include "nouveau_encoder.h"
> > > diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> > > index 26af45785939..8ece696dd1a1 100644
> > > --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> > > +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> > > @@ -32,7 +32,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> > > index 3f463c91314a..4116ee62adaf 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> > > @@ -33,6 +33,7 @@
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic.h>
> > >
> > >  #include "nouveau_reg.h"
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> > > index 5d273a655479..0b58709f0406 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> > > @@ -29,6 +29,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >
> > >  #include <nvif/class.h>
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c
> > > index b81302c4bf9e..4fef6293f6c0 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_connector.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_connector.c
> > > @@ -17,7 +17,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "omap_drv.h"
> > >
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
> > > index caffc547ef97..aab1b1a49a87 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> > > @@ -18,7 +18,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mode.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <linux/math64.h>
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > > index 5e67d58cbc28..3a78f0cf3321 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > > @@ -21,7 +21,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >
> > >  #include "omap_dmm_tiler.h"
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
> > > index bd7f2c227a25..513ae8ab5e64 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_drv.h
> > > +++ b/drivers/gpu/drm/omapdrm/omap_drv.h
> > > @@ -23,7 +23,7 @@
> > >  #include <linux/workqueue.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem.h>
> > >  #include <drm/omap_drm.h>
> > >
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c b/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > index 933ebc9f9faa..47c86b85906a 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > @@ -18,7 +18,7 @@
> > >  #include <linux/list.h>
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_edid.h>
> > >
> > >  #include "omap_drv.h"
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_fb.c b/drivers/gpu/drm/omapdrm/omap_fb.c
> > > index 4d264fd554d8..4f8eb9d08f99 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_fb.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_fb.c
> > > @@ -18,7 +18,7 @@
> > >  #include <linux/seq_file.h>
> > >
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_modeset_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > >  #include "omap_dmm_tiler.h"
> > > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
> > > index 33e0483d62ae..9dbb11cfbb20 100644
> > > --- a/drivers/gpu/drm/pl111/pl111_drv.c
> > > +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> > > @@ -64,7 +64,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
> > > index 72a1784dae54..1de03d60bf23 100644
> > > --- a/drivers/gpu/drm/qxl/qxl_display.c
> > > +++ b/drivers/gpu/drm/qxl/qxl_display.c
> > > @@ -24,9 +24,9 @@
> > >   */
> > >
> > >  #include <linux/crc32.h>
> > > -#include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
> > > index 13c8a662f9b4..fd987d62d902 100644
> > > --- a/drivers/gpu/drm/qxl/qxl_drv.c
> > > +++ b/drivers/gpu/drm/qxl/qxl_drv.c
> > > @@ -33,7 +33,8 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_modeset_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "qxl_drv.h"
> > >  #include "qxl_object.h"
> > >
> > > diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
> > > index a819d24225d2..996cdb8fb4fa 100644
> > > --- a/drivers/gpu/drm/qxl/qxl_fb.c
> > > +++ b/drivers/gpu/drm/qxl/qxl_fb.c
> > > @@ -28,7 +28,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
> > > index 15238a413f9d..85e13afa1808 100644
> > > --- a/drivers/gpu/drm/qxl/qxl_kms.c
> > > +++ b/drivers/gpu/drm/qxl/qxl_kms.c
> > > @@ -26,7 +26,7 @@
> > >  #include "qxl_drv.h"
> > >  #include "qxl_object.h"
> > >
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <linux/io-mapping.h>
> > >
> > >  int qxl_log_level;
> > > diff --git a/drivers/gpu/drm/radeon/radeon_acpi.c b/drivers/gpu/drm/radeon/radeon_acpi.c
> > > index 8d3251a10cd4..224cc21bbe38 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_acpi.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_acpi.c
> > > @@ -29,6 +29,7 @@
> > >  #include <acpi/video.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "radeon.h"
> > >  #include "radeon_acpi.h"
> > >  #include "atom.h"
> > > diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
> > > index 414642e5b7a3..88239c1e7c5b 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_connectors.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
> > > @@ -26,6 +26,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_dp_mst_helper.h>
> > >  #include <drm/radeon_drm.h>
> > > diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
> > > index 59c8a6647ff2..53f29a115104 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_device.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_device.c
> > > @@ -29,6 +29,7 @@
> > >  #include <linux/slab.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_cache.h>
> > >  #include <drm/radeon_drm.h>
> > >  #include <linux/pm_runtime.h>
> > > diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
> > > index 92332226e5cf..e252ab3832a5 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_display.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_display.c
> > > @@ -32,6 +32,7 @@
> > >
> > >  #include <linux/pm_runtime.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/radeon/radeon_dp_mst.c b/drivers/gpu/drm/radeon/radeon_dp_mst.c
> > > index a0c70e27ab65..8d85540bbb43 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_dp_mst.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_dp_mst.c
> > > @@ -3,6 +3,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_dp_mst_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "radeon.h"
> > >  #include "atom.h"
> > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> > > index 99c63eeb2866..8897c3d18fbb 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_drv.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> > > @@ -43,6 +43,7 @@
> > >  #include <drm/drm_fb_helper.h>
> > >
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  /*
> > >   * KMS wrapper.
> > > diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
> > > index afaf10db47cc..1d5e3ba7383e 100644
> > > --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
> > > +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
> > > @@ -27,6 +27,7 @@
> > >   */
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/radeon_drm.h>
> > >  #include "radeon_reg.h"
> > >  #include "radeon.h"
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> > > index 90dacab67be5..b15d2b3a07f1 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> > > @@ -15,7 +15,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > > index f50a3b1864bb..60862858d041 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> > > @@ -19,7 +19,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
> > > index 1877764bd6d9..0b440f554aed 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
> > > @@ -11,7 +11,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_panel.h>
> > >
> > >  #include "rcar_du_drv.h"
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> > > index 9c7007d45408..af337c918d84 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> > > @@ -11,7 +11,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_plane.c b/drivers/gpu/drm/rcar-du/rcar_du_plane.c
> > > index 39d5ae3fdf72..b7fa278ca745 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_du_plane.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_plane.c
> > > @@ -11,7 +11,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> > > index 4576119e7777..35b2a4d3ae74 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> > > @@ -10,7 +10,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> > > index 534a128a869d..24cb74e30fcd 100644
> > > --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
> > > +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> > > @@ -19,7 +19,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_bridge.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_panel.h>
> > >
> > >  #include "rcar_lvds_regs.h"
> > > diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> > > index 080f05352195..2f6b4a4a9d6b 100644
> > > --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> > > +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> > > @@ -21,7 +21,7 @@
> > >  #include <linux/clk.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > > diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> > > index 8ad0d773dc33..7896b3c28676 100644
> > > --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
> > > +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> > > @@ -14,7 +14,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.h b/drivers/gpu/drm/rockchip/cdn-dp-core.h
> > > index f57e296401b8..7000b53dddcb 100644
> > > --- a/drivers/gpu/drm/rockchip/cdn-dp-core.h
> > > +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.h
> > > @@ -16,7 +16,7 @@
> > >  #define _CDN_DP_CORE_H
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_panel.h>
> > >  #include "rockchip_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
> > > index 89c63cfde5c8..1e2cc2b02a31 100644
> > > --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
> > > +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
> > > @@ -16,7 +16,7 @@
> > >
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/bridge/dw_hdmi.h>
> > >
> > > diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c
> > > index 1c02b3e61299..9db4a706b450 100644
> > > --- a/drivers/gpu/drm/rockchip/inno_hdmi.c
> > > +++ b/drivers/gpu/drm/rockchip/inno_hdmi.c
> > > @@ -26,7 +26,7 @@
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >
> > >  #include "rockchip_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > > index be6c2573039a..d2b69a533692 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > > @@ -15,7 +15,7 @@
> > >   */
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
> > > index ea18cb2a76c0..567605fc2898 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
> > > @@ -17,7 +17,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > >  #include "rockchip_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> > > index 361604e51361..7bd3b89022be 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> > > @@ -15,7 +15,7 @@
> > >  #include <drm/drm.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_fb_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "rockchip_drm_drv.h"
> > >  #include "rockchip_drm_gem.h"
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
> > > index 01ff3c858875..b165e248c2e6 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_psr.c
> > > @@ -13,7 +13,7 @@
> > >   */
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "rockchip_drm_drv.h"
> > >  #include "rockchip_drm_psr.h"
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> > > index db8358e6d230..fa6d48f5a120 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> > > @@ -16,7 +16,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_flip_work.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/rockchip/rockchip_lvds.c
> > > index 456bd9f13bae..fd21901880e6 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_lvds.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_lvds.c
> > > @@ -16,7 +16,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c
> > > index 96ac1458a59c..bec197c9a3cf 100644
> > > --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c
> > > +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c
> > > @@ -16,7 +16,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_dp_helper.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> > > index 499b5fdb869f..8e77ba8186a8 100644
> > > --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> > > +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> > > @@ -13,6 +13,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > > index 8554102a6ead..fc09bd6ad592 100644
> > > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c
> > > @@ -17,6 +17,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >
> > >  #include "shmob_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_kms.c b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
> > > index a17268444c6d..2e866af7b9e7 100644
> > > --- a/drivers/gpu/drm/shmobile/shmob_drm_kms.c
> > > +++ b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
> > > @@ -10,6 +10,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/sti/sti_crtc.c b/drivers/gpu/drm/sti/sti_crtc.c
> > > index ed76e52eb213..7aa3b1d04b78 100644
> > > --- a/drivers/gpu/drm/sti/sti_crtc.c
> > > +++ b/drivers/gpu/drm/sti/sti_crtc.c
> > > @@ -11,7 +11,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >
> > >  #include "sti_compositor.h"
> > > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> > > index ac54e0f9caea..dc932ac58ba9 100644
> > > --- a/drivers/gpu/drm/sti/sti_drv.c
> > > +++ b/drivers/gpu/drm/sti/sti_drv.c
> > > @@ -14,7 +14,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
> > > index b08376b7611b..d0fcb20e9614 100644
> > > --- a/drivers/gpu/drm/sti/sti_dvo.c
> > > +++ b/drivers/gpu/drm/sti/sti_dvo.c
> > > @@ -13,7 +13,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_panel.h>
> > >
> > >  #include "sti_awg_utils.h"
> > > diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
> > > index 19b9b5ed1297..40a0b392fa51 100644
> > > --- a/drivers/gpu/drm/sti/sti_hda.c
> > > +++ b/drivers/gpu/drm/sti/sti_hda.c
> > > @@ -12,7 +12,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  /* HDformatter registers */
> > >  #define HDA_ANA_CFG                     0x0000
> > > diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
> > > index ccf718404a1c..989bf2cb0249 100644
> > > --- a/drivers/gpu/drm/sti/sti_hdmi.c
> > > +++ b/drivers/gpu/drm/sti/sti_hdmi.c
> > > @@ -15,7 +15,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >
> > >  #include <sound/hdmi-codec.h>
> > > diff --git a/drivers/gpu/drm/sti/sti_tvout.c b/drivers/gpu/drm/sti/sti_tvout.c
> > > index ea4a3b87fa55..c42f2fa7053c 100644
> > > --- a/drivers/gpu/drm/sti/sti_tvout.c
> > > +++ b/drivers/gpu/drm/sti/sti_tvout.c
> > > @@ -15,7 +15,7 @@
> > >  #include <linux/seq_file.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >
> > >  #include "sti_crtc.h"
> > >  #include "sti_drv.h"
> > > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> > > index 8dec001b9d37..c64c5f27a229 100644
> > > --- a/drivers/gpu/drm/stm/drv.c
> > > +++ b/drivers/gpu/drm/stm/drv.c
> > > @@ -13,7 +13,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c
> > > index 61dd661aa0ac..8189b5df7ece 100644
> > > --- a/drivers/gpu/drm/stm/ltdc.c
> > > +++ b/drivers/gpu/drm/stm/ltdc.c
> > > @@ -16,7 +16,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
> > > index 9e9255ee59cd..df9d3f548568 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_backend.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
> > > @@ -14,7 +14,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_crtc.c b/drivers/gpu/drm/sun4i/sun4i_crtc.c
> > > index 3eedf335a935..3d58d8951474 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_crtc.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_crtc.c
> > > @@ -13,7 +13,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_modes.h>
> > >
> > >  #include <linux/clk-provider.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > > index 9e4c375ccc96..45c85be54ce0 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> > > @@ -16,7 +16,7 @@
> > >  #include <linux/of_reserved_mem.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
> > > index 061d2e0d9011..60b3e44e6792 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
> > > @@ -11,7 +11,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_lvds.c b/drivers/gpu/drm/sun4i/sun4i_lvds.c
> > > index e7eb0d1e17be..87ba8db71a54 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_lvds.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_lvds.c
> > > @@ -8,7 +8,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> > > index f4a22689eb54..f6f7f4de2e69 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> > > @@ -14,7 +14,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> > > index 0420f5c978b9..3a09d8e28c25 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> > > @@ -14,7 +14,7 @@
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_connector.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <drm/drm_modes.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
> > > index 1a838d208211..62fbdef8fffb 100644
> > > --- a/drivers/gpu/drm/sun4i/sun4i_tv.c
> > > +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
> > > @@ -18,7 +18,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > >
> > > diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
> > > index e3b34a345546..dfa2d15d7b36 100644
> > > --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
> > > +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
> > > @@ -19,7 +19,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_panel.h>
> > >
> > > diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
> > > index 44a9ba7d8433..9ef1b494e48d 100644
> > > --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
> > > +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
> > > @@ -14,7 +14,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
> > > index 18534263a05d..e29cbd60a59b 100644
> > > --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
> > > +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
> > > @@ -16,7 +16,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
> > > index 87be898f9b7a..1669460106de 100644
> > > --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
> > > +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
> > > @@ -10,7 +10,7 @@
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
> > > index 1012335bb489..40d38f3d9d9e 100644
> > > --- a/drivers/gpu/drm/tegra/drm.h
> > > +++ b/drivers/gpu/drm/tegra/drm.h
> > > @@ -17,7 +17,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <drm/drm_fb_helper.h>
> > > diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
> > > index b947e82bbeb1..5ee48a6bb3ad 100644
> > > --- a/drivers/gpu/drm/tegra/fb.c
> > > +++ b/drivers/gpu/drm/tegra/fb.c
> > > @@ -15,6 +15,7 @@
> > >  #include "drm.h"
> > >  #include "gem.h"
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > > +#include <drm/drm_modeset_helper.h>
> > >
> > >  #ifdef CONFIG_DRM_FBDEV_EMULATION
> > >  static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper)
> > > diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
> > > index 0082468f703c..11f5e5668b14 100644
> > > --- a/drivers/gpu/drm/tegra/hdmi.c
> > > +++ b/drivers/gpu/drm/tegra/hdmi.c
> > > @@ -18,7 +18,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include <sound/hda_verbs.h>
> > >
> > > diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
> > > index 71cc3cf60066..ba9b3cfb8c3d 100644
> > > --- a/drivers/gpu/drm/tegra/hub.c
> > > +++ b/drivers/gpu/drm/tegra/hub.c
> > > @@ -19,7 +19,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "drm.h"
> > >  #include "dc.h"
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > > index 3dac08b24140..9d9dc79a6e97 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> > > @@ -22,6 +22,7 @@
> > >  #include <linux/suspend.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
> > > index 62cea5ff5558..028bfed667f0 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
> > > @@ -30,7 +30,6 @@
> > >  #include <linux/list.h>
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_bridge.h>
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> > > index b4eaf9bc87f8..385fb4d2f66f 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> > > @@ -11,6 +11,7 @@
> > >  #include <linux/component.h>
> > >  #include <linux/of_graph.h>
> > >  #include <drm/drm_of.h>
> > > +#include <drm/drm_atomic_helper.h>
> > >
> > >  #include "tilcdc_drv.h"
> > >  #include "tilcdc_external.h"
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> > > index a1acab39d87f..5c21ef6e6510 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> > > @@ -22,6 +22,7 @@
> > >  #include <video/display_timing.h>
> > >  #include <video/of_display_timing.h>
> > >  #include <video/videomode.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > >  #include "tilcdc_drv.h"
> > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > index daebf1aa6b0a..fe59fbfdde69 100644
> > > --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> > > @@ -21,6 +21,7 @@
> > >  #include <linux/pinctrl/pinmux.h>
> > >  #include <linux/pinctrl/consumer.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "tilcdc_drv.h"
> > >  #include "tilcdc_tfp410.h"
> > > diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> > > index 01a6f2d42440..d4174a564336 100644
> > > --- a/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> > > +++ b/drivers/gpu/drm/tinydrm/core/tinydrm-core.c
> > > @@ -9,7 +9,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/tinydrm/tinydrm.h>
> > > diff --git a/drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c b/drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c
> > > index eacfc0ec8ff1..50ab05a65ca4 100644
> > > --- a/drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c
> > > +++ b/drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c
> > > @@ -8,7 +8,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_modes.h>
> > >  #include <drm/tinydrm/tinydrm.h>
> > > diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
> > > index 28e2d03c0ccf..138a9a158254 100644
> > > --- a/drivers/gpu/drm/tve200/tve200_drv.c
> > > +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> > > @@ -43,7 +43,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c
> > > index 68e88bed77ca..66885c24590f 100644
> > > --- a/drivers/gpu/drm/udl/udl_connector.c
> > > +++ b/drivers/gpu/drm/udl/udl_connector.c
> > > @@ -14,6 +14,7 @@
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "udl_connector.h"
> > >  #include "udl_drv.h"
> > >
> > > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> > > index a63e3011e971..22cd2d13e272 100644
> > > --- a/drivers/gpu/drm/udl/udl_drv.c
> > > +++ b/drivers/gpu/drm/udl/udl_drv.c
> > > @@ -9,6 +9,7 @@
> > >  #include <linux/module.h>
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "udl_drv.h"
> > >
> > >  static int udl_usb_suspend(struct usb_interface *interface,
> > > diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
> > > index 1b014d92855b..9086d0d1b880 100644
> > > --- a/drivers/gpu/drm/udl/udl_main.c
> > > +++ b/drivers/gpu/drm/udl/udl_main.c
> > > @@ -12,6 +12,7 @@
> > >   */
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include "udl_drv.h"
> > >
> > >  /* -BULK_SIZE as per usb-skeleton. Can we get full page and avoid overhead? */
> > > diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
> > > index 3ce136ba8791..11ec7c31824e 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_crtc.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_crtc.c
> > > @@ -34,7 +34,7 @@
> > >
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_uapi.h>
> > >  #include <linux/clk.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
> > > index f185812970da..a4d5a13598ba 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_dpi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
> > > @@ -24,7 +24,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_bridge.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drm_panel.h>
> > > diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
> > > index 0c607eb33d7e..4c2f5e143d11 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_dsi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_dsi.c
> > > @@ -30,7 +30,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_mipi_dsi.h>
> > >  #include <drm/drm_of.h>
> > > diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > index fd5522fd179e..ce3cc2a6a169 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > @@ -43,7 +43,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <linux/clk.h>
> > >  #include <linux/component.h>
> > > diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
> > > index 0490edb192a1..8dbb81571773 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_kms.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_kms.c
> > > @@ -17,7 +17,7 @@
> > >  #include <drm/drm_crtc.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include "vc4_drv.h"
> > > diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
> > > index 6e23c50168f9..8ac1b95d01c4 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_txp.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_txp.c
> > > @@ -9,7 +9,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <drm/drm_writeback.h>
> > > diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
> > > index 8e7facb6514e..e8b09c670ee6 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_vec.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_vec.c
> > > @@ -25,7 +25,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_panel.h>
> > >  #include <linux/clk.h>
> > > diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
> > > index e1c223e18d86..4c5b939ddc74 100644
> > > --- a/drivers/gpu/drm/virtio/virtgpu_display.c
> > > +++ b/drivers/gpu/drm/virtio/virtgpu_display.c
> > > @@ -26,7 +26,7 @@
> > >   */
> > >
> > >  #include "virtgpu_drv.h"
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
> > > index 63704915f8ce..329f6c652e39 100644
> > > --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> > > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> > > @@ -34,7 +34,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_gem.h>
> > >  #include <drm/drm_atomic.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/ttm/ttm_bo_api.h>
> > > diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > index 177bbcb38306..2696c370fe9b 100644
> > > --- a/drivers/gpu/drm/vkms/vkms_crtc.c
> > > +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > @@ -8,7 +8,7 @@
> > >
> > >  #include "vkms_drv.h"
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  static void _vblank_handle(struct vkms_output *output)
> > >  {
> > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> > > index 2a16b86196dc..b733c9700a78 100644
> > > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > > @@ -16,7 +16,7 @@
> > >
> > >  #include <linux/module.h>
> > >  #include <drm/drm_gem.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > > diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
> > > index 271a0eb9042c..878ff3142473 100644
> > > --- a/drivers/gpu/drm/vkms/vkms_output.c
> > > +++ b/drivers/gpu/drm/vkms/vkms_output.c
> > > @@ -7,7 +7,7 @@
> > >   */
> > >
> > >  #include "vkms_drv.h"
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > >  static void vkms_connector_destroy(struct drm_connector *connector)
> > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> > > index 655abbcd4058..d560f6159bb1 100644
> > > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> > > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> > > @@ -29,7 +29,7 @@
> > >  #define VMWGFX_KMS_H_
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_encoder.h>
> > >  #include "vmwgfx_drv.h"
> > >
> > > diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
> > > index 6b6d5ab82ec3..fd390dd64b13 100644
> > > --- a/drivers/gpu/drm/xen/xen_drm_front.c
> > > +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> > > @@ -10,7 +10,7 @@
> > >
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem.h>
> > >
> > >  #include <linux/of_device.h>
> > > diff --git a/drivers/gpu/drm/xen/xen_drm_front_conn.c b/drivers/gpu/drm/xen/xen_drm_front_conn.c
> > > index 54af2669b1b3..9f5f31f77f1e 100644
> > > --- a/drivers/gpu/drm/xen/xen_drm_front_conn.c
> > > +++ b/drivers/gpu/drm/xen/xen_drm_front_conn.c
> > > @@ -9,7 +9,7 @@
> > >   */
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include <video/videomode.h>
> > >
> > > diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c
> > > index 47ff019d3aef..9cf847e26cf1 100644
> > > --- a/drivers/gpu/drm/xen/xen_drm_front_gem.c
> > > +++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c
> > > @@ -11,7 +11,7 @@
> > >  #include "xen_drm_front_gem.h"
> > >
> > >  #include <drm/drmP.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem.h>
> > >
> > > diff --git a/drivers/gpu/drm/xen/xen_drm_front_kms.c b/drivers/gpu/drm/xen/xen_drm_front_kms.c
> > > index a3479eb72d79..f536d9f5a796 100644
> > > --- a/drivers/gpu/drm/xen/xen_drm_front_kms.c
> > > +++ b/drivers/gpu/drm/xen/xen_drm_front_kms.c
> > > @@ -13,7 +13,7 @@
> > >  #include <drm/drmP.h>
> > >  #include <drm/drm_atomic.h>
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_gem.h>
> > >  #include <drm/drm_gem_framebuffer_helper.h>
> > >
> > > diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> > > index f5ea32ae8600..91eaaa475d36 100644
> > > --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> > > +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> > > @@ -18,7 +18,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/gpu/drm/zte/zx_hdmi.c b/drivers/gpu/drm/zte/zx_hdmi.c
> > > index 78655269d843..8bfb011ce655 100644
> > > --- a/drivers/gpu/drm/zte/zx_hdmi.c
> > > +++ b/drivers/gpu/drm/zte/zx_hdmi.c
> > > @@ -20,7 +20,7 @@
> > >  #include <linux/of_device.h>
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_edid.h>
> > >  #include <drm/drm_of.h>
> > >  #include <drm/drmP.h>
> > > diff --git a/drivers/gpu/drm/zte/zx_tvenc.c b/drivers/gpu/drm/zte/zx_tvenc.c
> > > index b73afb212fb2..87b5d86413d2 100644
> > > --- a/drivers/gpu/drm/zte/zx_tvenc.c
> > > +++ b/drivers/gpu/drm/zte/zx_tvenc.c
> > > @@ -14,7 +14,7 @@
> > >  #include <linux/regmap.h>
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drmP.h>
> > >
> > >  #include "zx_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/zte/zx_vga.c b/drivers/gpu/drm/zte/zx_vga.c
> > > index 23d1ff4355a0..e14c1d709740 100644
> > > --- a/drivers/gpu/drm/zte/zx_vga.c
> > > +++ b/drivers/gpu/drm/zte/zx_vga.c
> > > @@ -13,7 +13,7 @@
> > >  #include <linux/regmap.h>
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drmP.h>
> > >
> > >  #include "zx_drm_drv.h"
> > > diff --git a/drivers/gpu/drm/zte/zx_vou.c b/drivers/gpu/drm/zte/zx_vou.c
> > > index 442311d31110..9d97f4417698 100644
> > > --- a/drivers/gpu/drm/zte/zx_vou.c
> > > +++ b/drivers/gpu/drm/zte/zx_vou.c
> > > @@ -15,7 +15,7 @@
> > >
> > >  #include <drm/drm_atomic_helper.h>
> > >  #include <drm/drm_crtc.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_fb_cma_helper.h>
> > >  #include <drm/drm_fb_helper.h>
> > >  #include <drm/drm_gem_cma_helper.h>
> > > diff --git a/drivers/staging/vboxvideo/vbox_irq.c b/drivers/staging/vboxvideo/vbox_irq.c
> > > index 09f858ec1369..b9b716776b7b 100644
> > > --- a/drivers/staging/vboxvideo/vbox_irq.c
> > > +++ b/drivers/staging/vboxvideo/vbox_irq.c
> > > @@ -27,7 +27,7 @@
> > >   *          Hans de Goede <hdegoede@redhat.com>
> > >   */
> > >
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >
> > >  #include "vbox_drv.h"
> > >  #include "vboxvideo.h"
> > > diff --git a/drivers/staging/vboxvideo/vbox_mode.c b/drivers/staging/vboxvideo/vbox_mode.c
> > > index 6acc965247ff..c72e4f251bc0 100644
> > > --- a/drivers/staging/vboxvideo/vbox_mode.c
> > > +++ b/drivers/staging/vboxvideo/vbox_mode.c
> > > @@ -33,7 +33,7 @@
> > >   */
> > >  #include <linux/export.h>
> > >  #include <drm/drm_atomic.h>
> > > -#include <drm/drm_crtc_helper.h>
> > > +#include <drm/drm_probe_helper.h>
> > >  #include <drm/drm_plane_helper.h>
> > >  #include <drm/drm_atomic_helper.h>
> > >
> > > diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
> > > index 0ee9a96b70da..a6d520d5b6ca 100644
> > > --- a/include/drm/drm_crtc_helper.h
> > > +++ b/include/drm/drm_crtc_helper.h
> > > @@ -58,20 +58,4 @@ int drm_helper_connector_dpms(struct drm_connector *connector, int mode);
> > >  void drm_helper_resume_force_mode(struct drm_device *dev);
> > >  int drm_helper_force_disable_all(struct drm_device *dev);
> > >
> > > -/* drm_probe_helper.c */
> > > -int drm_helper_probe_single_connector_modes(struct drm_connector
> > > -                                         *connector, uint32_t maxX,
> > > -                                         uint32_t maxY);
> > > -int drm_helper_probe_detect(struct drm_connector *connector,
> > > -                         struct drm_modeset_acquire_ctx *ctx,
> > > -                         bool force);
> > > -void drm_kms_helper_poll_init(struct drm_device *dev);
> > > -void drm_kms_helper_poll_fini(struct drm_device *dev);
> > > -bool drm_helper_hpd_irq_event(struct drm_device *dev);
> > > -void drm_kms_helper_hotplug_event(struct drm_device *dev);
> > > -
> > > -void drm_kms_helper_poll_disable(struct drm_device *dev);
> > > -void drm_kms_helper_poll_enable(struct drm_device *dev);
> > > -bool drm_kms_helper_is_poll_worker(void);
> > > -
> > >  #endif
> > > diff --git a/include/drm/drm_probe_helper.h b/include/drm/drm_probe_helper.h
> > > new file mode 100644
> > > index 000000000000..96c060c16a1e
> > > --- /dev/null
> > > +++ b/include/drm/drm_probe_helper.h
> > > @@ -0,0 +1,50 @@
> > > +/*
> > > + * Copyright © 2006 Keith Packard
> > > + * Copyright © 2007-2008 Dave Airlie
> > > + * Copyright © 2007-2008 Intel Corporation
> > > + *   Jesse Barnes <jesse.barnes@intel.com>
> > > + *
> > > + * Permission is hereby granted, free of charge, to any person obtaining a
> > > + * copy of this software and associated documentation files (the "Software"),
> > > + * to deal in the Software without restriction, including without limitation
> > > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > > + * and/or sell copies of the Software, and to permit persons to whom the
> > > + * Software is furnished to do so, subject to the following conditions:
> > > + *
> > > + * The above copyright notice and this permission notice shall be included in
> > > + * all copies or substantial portions of the Software.
> > > + *
> > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > > + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> > > + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> > > + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> > > + * OTHER DEALINGS IN THE SOFTWARE.
> > > + */
> > > +
> > > +#ifndef __DRM_PROBE_HELPER_H__
> > > +#define __DRM_PROBE_HELPER_H__
> > > +
> > > +#include <linux/types.h>
> > > +
> > > +struct drm_connector;
> > > +struct drm_device;
> > > +struct drm_modeset_acquire_ctx;
> > > +
> > > +int drm_helper_probe_single_connector_modes(struct drm_connector
> > > +                                         *connector, uint32_t maxX,
> > > +                                         uint32_t maxY);
> > > +int drm_helper_probe_detect(struct drm_connector *connector,
> > > +                         struct drm_modeset_acquire_ctx *ctx,
> > > +                         bool force);
> > > +void drm_kms_helper_poll_init(struct drm_device *dev);
> > > +void drm_kms_helper_poll_fini(struct drm_device *dev);
> > > +bool drm_helper_hpd_irq_event(struct drm_device *dev);
> > > +void drm_kms_helper_hotplug_event(struct drm_device *dev);
> > > +
> > > +void drm_kms_helper_poll_disable(struct drm_device *dev);
> > > +void drm_kms_helper_poll_enable(struct drm_device *dev);
> > > +bool drm_kms_helper_is_poll_worker(void);
> > > +
> > > +#endif
> > > --
> > > 2.20.0.rc1
> > >
> > > _______________________________________________
> > > Intel-gfx mailing list
> > > Intel-gfx@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply

* [PATCH] VMCI: Verify PPNs before sending to device
From: Jorgen Hansen via Virtualization @ 2019-01-11 16:57 UTC (permalink / raw)
  To: linux-kernel, virtualization; +Cc: pv-drivers, gregkh, Jorgen Hansen

The current version of the VMCI device only supports 32 bit PPNs,
so check whether we are truncating PPNs, and fail the operation
if we do. One such check did exist, but was wrong. Another
check was missing.

Testing through code modification: constructed PPN not representable
by 32-bit and observed that failure was reported.

Fixes: 1f166439917b ("VMCI: guest side driver implementation.")
Fixes: 06164d2b72aa ("VMCI: queue pairs implementation.")

Signed-off-by: Jorgen Hansen <jhansen@vmware.com>
Reviewed-by: Adit Ranadive <aditr@vmware.com>
Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
---
 drivers/misc/vmw_vmci/vmci_guest.c      | 10 +++++++---
 drivers/misc/vmw_vmci/vmci_queue_pair.c | 10 ++++------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/misc/vmw_vmci/vmci_guest.c b/drivers/misc/vmw_vmci/vmci_guest.c
index dad5abee656e..02bb3866cf9e 100644
--- a/drivers/misc/vmw_vmci/vmci_guest.c
+++ b/drivers/misc/vmw_vmci/vmci_guest.c
@@ -532,10 +532,14 @@ static int vmci_guest_probe_device(struct pci_dev *pdev,
 	if (capabilities & VMCI_CAPS_NOTIFICATIONS) {
 		unsigned long bitmap_ppn =
 			vmci_dev->notification_base >> PAGE_SHIFT;
-		if (!vmci_dbell_register_notification_bitmap(bitmap_ppn)) {
+		u32 bitmap_ppn32 = bitmap_ppn;
+
+		if ((sizeof(bitmap_ppn) > sizeof(bitmap_ppn32)
+		     && bitmap_ppn != bitmap_ppn32) ||
+		    !vmci_dbell_register_notification_bitmap(bitmap_ppn)) {
 			dev_warn(&pdev->dev,
-				 "VMCI device unable to register notification bitmap with PPN 0x%x\n",
-				 (u32) bitmap_ppn);
+				 "VMCI device unable to register notification bitmap with PPN 0x%lx\n",
+				 bitmap_ppn);
 			error = -ENXIO;
 			goto err_remove_vmci_dev_g;
 		}
diff --git a/drivers/misc/vmw_vmci/vmci_queue_pair.c b/drivers/misc/vmw_vmci/vmci_queue_pair.c
index 264f4ed8eef2..1da4f6cb01b2 100644
--- a/drivers/misc/vmw_vmci/vmci_queue_pair.c
+++ b/drivers/misc/vmw_vmci/vmci_queue_pair.c
@@ -465,9 +465,8 @@ static int qp_alloc_ppn_set(void *prod_q,
 	for (i = 0; i < num_produce_pages; i++) {
 		unsigned long pfn;
 
-		produce_ppns[i] =
-			produce_q->kernel_if->u.g.pas[i] >> PAGE_SHIFT;
-		pfn = produce_ppns[i];
+		pfn = produce_q->kernel_if->u.g.pas[i] >> PAGE_SHIFT;
+		produce_ppns[i] = pfn;
 
 		/* Fail allocation if PFN isn't supported by hypervisor. */
 		if (sizeof(pfn) > sizeof(*produce_ppns)
@@ -478,9 +477,8 @@ static int qp_alloc_ppn_set(void *prod_q,
 	for (i = 0; i < num_consume_pages; i++) {
 		unsigned long pfn;
 
-		consume_ppns[i] =
-			consume_q->kernel_if->u.g.pas[i] >> PAGE_SHIFT;
-		pfn = consume_ppns[i];
+		pfn = consume_q->kernel_if->u.g.pas[i] >> PAGE_SHIFT;
+		consume_ppns[i] = pfn;
 
 		/* Fail allocation if PFN isn't supported by hypervisor. */
 		if (sizeof(pfn) > sizeof(*consume_ppns)
-- 
2.17.1

^ permalink raw reply related

* Re: [PATCH] drm/qxl: drop prime import/export callbacks
From: Dave Airlie @ 2019-01-11 21:13 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: David Airlie, open list, dri-devel,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie,
	open list:DRM DRIVER FOR QXL VIRTUAL GPU
In-Reply-To: <20190110081750.11358-1-kraxel@redhat.com>

On Thu, 10 Jan 2019 at 18:17, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Also set prime_handle_to_fd and prime_fd_to_handle to NULL,
> so drm will not advertive DRM_PRIME_CAP_{IMPORT,EXPORT} to
> userspace.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Reviewed-by: Dave Airlie <airlied@redhat.com>
> ---
>  drivers/gpu/drm/qxl/qxl_drv.c   |  4 ----
>  drivers/gpu/drm/qxl/qxl_prime.c | 14 --------------
>  2 files changed, 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
> index 13c8a662f9..ccb090f3ab 100644
> --- a/drivers/gpu/drm/qxl/qxl_drv.c
> +++ b/drivers/gpu/drm/qxl/qxl_drv.c
> @@ -250,14 +250,10 @@ static struct drm_driver qxl_driver = {
>  #if defined(CONFIG_DEBUG_FS)
>         .debugfs_init = qxl_debugfs_init,
>  #endif
> -       .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
> -       .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
>         .gem_prime_export = drm_gem_prime_export,
>         .gem_prime_import = drm_gem_prime_import,
>         .gem_prime_pin = qxl_gem_prime_pin,
>         .gem_prime_unpin = qxl_gem_prime_unpin,
> -       .gem_prime_get_sg_table = qxl_gem_prime_get_sg_table,
> -       .gem_prime_import_sg_table = qxl_gem_prime_import_sg_table,
>         .gem_prime_vmap = qxl_gem_prime_vmap,
>         .gem_prime_vunmap = qxl_gem_prime_vunmap,
>         .gem_prime_mmap = qxl_gem_prime_mmap,
> diff --git a/drivers/gpu/drm/qxl/qxl_prime.c b/drivers/gpu/drm/qxl/qxl_prime.c
> index a55dece118..df65d3c1a7 100644
> --- a/drivers/gpu/drm/qxl/qxl_prime.c
> +++ b/drivers/gpu/drm/qxl/qxl_prime.c
> @@ -38,20 +38,6 @@ void qxl_gem_prime_unpin(struct drm_gem_object *obj)
>         WARN_ONCE(1, "not implemented");
>  }
>
> -struct sg_table *qxl_gem_prime_get_sg_table(struct drm_gem_object *obj)
> -{
> -       WARN_ONCE(1, "not implemented");
> -       return ERR_PTR(-ENOSYS);
> -}
> -
> -struct drm_gem_object *qxl_gem_prime_import_sg_table(
> -       struct drm_device *dev, struct dma_buf_attachment *attach,
> -       struct sg_table *table)
> -{
> -       WARN_ONCE(1, "not implemented");
> -       return ERR_PTR(-ENOSYS);
> -}
> -
>  void *qxl_gem_prime_vmap(struct drm_gem_object *obj)
>  {
>         WARN_ONCE(1, "not implemented");
> --
> 2.9.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply

* Re: [PATCH] drm/virtio: drop prime import/export callbacks
From: Dave Airlie @ 2019-01-11 21:14 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: David Airlie, open list, dri-devel, open list:VIRTIO GPU DRIVER
In-Reply-To: <20190110111545.26768-1-kraxel@redhat.com>

On Thu, 10 Jan 2019 at 21:16, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Also set prime_handle_to_fd and prime_fd_to_handle to NULL,
> so drm will not advertive DRM_PRIME_CAP_{IMPORT,EXPORT} to
> userspace.

Reviewed-by: Dave Airlie <airlied@redhat.com>
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  drivers/gpu/drm/virtio/virtgpu_drv.h   |  4 ----
>  drivers/gpu/drm/virtio/virtgpu_drv.c   |  4 ----
>  drivers/gpu/drm/virtio/virtgpu_prime.c | 14 --------------
>  3 files changed, 22 deletions(-)
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
> index cf896d8793..4f2f3c43a4 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> @@ -354,10 +354,6 @@ int virtio_gpu_object_wait(struct virtio_gpu_object *bo, bool no_wait);
>  /* virtgpu_prime.c */
>  int virtgpu_gem_prime_pin(struct drm_gem_object *obj);
>  void virtgpu_gem_prime_unpin(struct drm_gem_object *obj);
> -struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj);
> -struct drm_gem_object *virtgpu_gem_prime_import_sg_table(
> -       struct drm_device *dev, struct dma_buf_attachment *attach,
> -       struct sg_table *sgt);
>  void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj);
>  void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
>  int virtgpu_gem_prime_mmap(struct drm_gem_object *obj,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index af92964b68..b996ac1d4f 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -205,14 +205,10 @@ static struct drm_driver driver = {
>  #if defined(CONFIG_DEBUG_FS)
>         .debugfs_init = virtio_gpu_debugfs_init,
>  #endif
> -       .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
> -       .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
>         .gem_prime_export = drm_gem_prime_export,
>         .gem_prime_import = drm_gem_prime_import,
>         .gem_prime_pin = virtgpu_gem_prime_pin,
>         .gem_prime_unpin = virtgpu_gem_prime_unpin,
> -       .gem_prime_get_sg_table = virtgpu_gem_prime_get_sg_table,
> -       .gem_prime_import_sg_table = virtgpu_gem_prime_import_sg_table,
>         .gem_prime_vmap = virtgpu_gem_prime_vmap,
>         .gem_prime_vunmap = virtgpu_gem_prime_vunmap,
>         .gem_prime_mmap = virtgpu_gem_prime_mmap,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
> index 86ce0ae93f..c59ec34c80 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_prime.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
> @@ -39,20 +39,6 @@ void virtgpu_gem_prime_unpin(struct drm_gem_object *obj)
>         WARN_ONCE(1, "not implemented");
>  }
>
> -struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj)
> -{
> -       WARN_ONCE(1, "not implemented");
> -       return ERR_PTR(-ENODEV);
> -}
> -
> -struct drm_gem_object *virtgpu_gem_prime_import_sg_table(
> -       struct drm_device *dev, struct dma_buf_attachment *attach,
> -       struct sg_table *table)
> -{
> -       WARN_ONCE(1, "not implemented");
> -       return ERR_PTR(-ENODEV);
> -}
> -
>  void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj)
>  {
>         struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
> --
> 2.9.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply

* Re: [PATCH] drm/cirrus: fix connector leak at unload
From: Daniel Vetter @ 2019-01-11 22:06 UTC (permalink / raw)
  To: Rob Clark
  Cc: Rob Clark, Daniel Stone, David Airlie, YueHaibing, linux-kernel,
	dri-devel, virtualization, Thomas Zimmermann, Dave Airlie,
	Thierry Reding
In-Reply-To: <20190111140242.29002-1-robdclark@gmail.com>

On Fri, Jan 11, 2019 at 09:02:34AM -0500, Rob Clark wrote:
> This fixes an '*ERROR* connector VGA-2 leaked!' splat at driver unload.
> 
> Signed-off-by: Rob Clark <robdclark@gmail.com>
> ---
> Similar case to the issue that was fixed recently in drm/ast

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> 
>  drivers/gpu/drm/cirrus/cirrus_fbdev.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> index 4dd499c7d1ba..bb379ec4c182 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> @@ -256,6 +256,8 @@ static int cirrus_fbdev_destroy(struct drm_device *dev,
>  {
>  	struct drm_framebuffer *gfb = gfbdev->gfb;
>  
> +	drm_crtc_force_disable_all(dev);
> +
>  	drm_fb_helper_unregister_fbi(&gfbdev->helper);
>  
>  	vfree(gfbdev->sysram);
> -- 
> 2.20.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply

* Re: [PATCH] drm/cirrus: fix connector leak at unload
From: Daniel Vetter @ 2019-01-11 22:16 UTC (permalink / raw)
  To: Rob Clark
  Cc: Rob Clark, Daniel Stone, David Airlie, YueHaibing, linux-kernel,
	dri-devel, virtualization, Thomas Zimmermann, Dave Airlie,
	Thierry Reding
In-Reply-To: <20190111220620.GF21184@phenom.ffwll.local>

On Fri, Jan 11, 2019 at 11:06:20PM +0100, Daniel Vetter wrote:
> On Fri, Jan 11, 2019 at 09:02:34AM -0500, Rob Clark wrote:
> > This fixes an '*ERROR* connector VGA-2 leaked!' splat at driver unload.
> > 
> > Signed-off-by: Rob Clark <robdclark@gmail.com>
> > ---
> > Similar case to the issue that was fixed recently in drm/ast
> 
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Actually I just pushed a patch to drm-misc-next to rename this function to
drm_helper_force_disable_all(), so you need to respin ... My r-b still
holds.
-Daniel

> 
> > 
> >  drivers/gpu/drm/cirrus/cirrus_fbdev.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> > index 4dd499c7d1ba..bb379ec4c182 100644
> > --- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> > +++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> > @@ -256,6 +256,8 @@ static int cirrus_fbdev_destroy(struct drm_device *dev,
> >  {
> >  	struct drm_framebuffer *gfb = gfbdev->gfb;
> >  
> > +	drm_crtc_force_disable_all(dev);
> > +
> >  	drm_fb_helper_unregister_fbi(&gfbdev->helper);
> >  
> >  	vfree(gfbdev->sysram);
> > -- 
> > 2.20.1
> > 
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply

* Re: [PATCH] vhost/vsock: fix vhost vsock cid hashing inconsistent
From: David Miller @ 2019-01-12  1:48 UTC (permalink / raw)
  To: zhabin
  Cc: kvm, mst, netdev, linux-kernel, virtualization, stefanha,
	kata-dev, gerry
In-Reply-To: <20190108080703.70050-1-zhabin@linux.alibaba.com>

From: Zha Bin <zhabin@linux.alibaba.com>
Date: Tue,  8 Jan 2019 16:07:03 +0800

> The vsock core only supports 32bit CID, but the Virtio-vsock spec define
> CID (dst_cid and src_cid) as u64 and the upper 32bits is reserved as
> zero. This inconsistency causes one bug in vhost vsock driver. The
> scenarios is:
> 
>   0. A hash table (vhost_vsock_hash) is used to map an CID to a vsock
>   object. And hash_min() is used to compute the hash key. hash_min() is
>   defined as:
>   (sizeof(val) <= 4 ? hash_32(val, bits) : hash_long(val, bits)).
>   That means the hash algorithm has dependency on the size of macro
>   argument 'val'.
>   0. In function vhost_vsock_set_cid(), a 64bit CID is passed to
>   hash_min() to compute the hash key when inserting a vsock object into
>   the hash table.
>   0. In function vhost_vsock_get(), a 32bit CID is passed to hash_min()
>   to compute the hash key when looking up a vsock for an CID.
> 
> Because the different size of the CID, hash_min() returns different hash
> key, thus fails to look up the vsock object for an CID.
> 
> To fix this bug, we keep CID as u64 in the IOCTLs and virtio message
> headers, but explicitly convert u64 to u32 when deal with the hash table
> and vsock core.
> 
> Fixes: 834e772c8db0 ("vhost/vsock: fix use-after-free in network stack callers")
> Link: https://github.com/stefanha/virtio/blob/vsock/trunk/content.tex
> Signed-off-by: Zha Bin <zhabin@linux.alibaba.com>
> Reviewed-by: Liu Jiang <gerry@linux.alibaba.com>

Applied, thank you.

^ permalink raw reply

* Re: [PATCH v3 0/5] kvm "virtio pmem" device
From: Pankaj Gupta @ 2019-01-13  1:38 UTC (permalink / raw)
  To: Jan Kara
  Cc: kvm, linux-nvdimm, Dave Chinner, qemu-devel, virtualization,
	adilger kernel, zwisler, eblake, dave jiang, darrick wong,
	vishal l verma, mst, willy, hch, linux-acpi, jmoyer, linux-ext4,
	riel, stefanha, imammedo, dan j williams, lcapitulino, nilal,
	tytso, xiaoguangrong eric, rjw, linux-kernel, linux-xfs,
	linux-fsdevel, pbonzini
In-Reply-To: <20190110101757.GC15790@quack2.suse.cz>



> 
> On Thu 10-01-19 12:26:17, Dave Chinner wrote:
> > On Wed, Jan 09, 2019 at 08:17:31PM +0530, Pankaj Gupta wrote:
> > >  This patch series has implementation for "virtio pmem".
> > >  "virtio pmem" is fake persistent memory(nvdimm) in guest
> > >  which allows to bypass the guest page cache. This also
> > >  implements a VIRTIO based asynchronous flush mechanism.
> > 
> > Hmmmm. Sharing the host page cache direct into the guest VM. Sounds
> > like a good idea, but.....
> > 
> > This means the guest VM can now run timing attacks to observe host
> > side page cache residency, and depending on the implementation I'm
> > guessing that the guest will be able to control host side page
> > cache eviction, too (e.g. via discard or hole punch operations).
> > 
> > Which means this functionality looks to me like a new vector for
> > information leakage into and out of the guest VM via guest
> > controlled host page cache manipulation.
> > 
> > https://arxiv.org/pdf/1901.01161
> > 
> > I might be wrong, but if I'm not we're going to have to be very
> > careful about how guest VMs can access and manipulate host side
> > resources like the page cache.....
> 
> Right. Thinking about this I would be more concerned about the fact that
> guest can effectively pin amount of host's page cache upto size of the
> device/file passed to guest as PMEM, can't it Pankaj? Or is there some QEMU
> magic that avoids this?

Yes, guest will pin these host page cache pages using 'get_user_pages' by
elevating the page reference count. But these pages can be reclaimed by host
at any time when there is memory pressure.

KVM does not permanently pin pages. vfio does that but we are not using
it here.

Could you please elaborate what you are thinking?

Thanks,
Pankaj

^ permalink raw reply

* Re: [PATCH v3 0/5] kvm "virtio pmem" device
From: Dan Williams @ 2019-01-13  1:43 UTC (permalink / raw)
  To: Pankaj Gupta
  Cc: Jan Kara, KVM list, linux-nvdimm, Dave Chinner, Qemu Developers,
	virtualization, adilger kernel, Ross Zwisler, Eric Blake,
	dave jiang, darrick wong, vishal l verma, Michael S. Tsirkin,
	Matthew Wilcox, Christoph Hellwig, Linux ACPI, jmoyer, linux-ext4,
	Rik van Riel, Stefan Hajnoczi, Igor Mammedov, lcapitulino,
	Nitesh Narayan Lal, Theodore Ts'o, xiao
In-Reply-To: <1354249849.63357171.1547343519970.JavaMail.zimbra@redhat.com>

On Sat, Jan 12, 2019 at 5:38 PM Pankaj Gupta <pagupta@redhat.com> wrote:
>
>
>
> >
> > On Thu 10-01-19 12:26:17, Dave Chinner wrote:
> > > On Wed, Jan 09, 2019 at 08:17:31PM +0530, Pankaj Gupta wrote:
> > > >  This patch series has implementation for "virtio pmem".
> > > >  "virtio pmem" is fake persistent memory(nvdimm) in guest
> > > >  which allows to bypass the guest page cache. This also
> > > >  implements a VIRTIO based asynchronous flush mechanism.
> > >
> > > Hmmmm. Sharing the host page cache direct into the guest VM. Sounds
> > > like a good idea, but.....
> > >
> > > This means the guest VM can now run timing attacks to observe host
> > > side page cache residency, and depending on the implementation I'm
> > > guessing that the guest will be able to control host side page
> > > cache eviction, too (e.g. via discard or hole punch operations).
> > >
> > > Which means this functionality looks to me like a new vector for
> > > information leakage into and out of the guest VM via guest
> > > controlled host page cache manipulation.
> > >
> > > https://arxiv.org/pdf/1901.01161
> > >
> > > I might be wrong, but if I'm not we're going to have to be very
> > > careful about how guest VMs can access and manipulate host side
> > > resources like the page cache.....
> >
> > Right. Thinking about this I would be more concerned about the fact that
> > guest can effectively pin amount of host's page cache upto size of the
> > device/file passed to guest as PMEM, can't it Pankaj? Or is there some QEMU
> > magic that avoids this?
>
> Yes, guest will pin these host page cache pages using 'get_user_pages' by
> elevating the page reference count. But these pages can be reclaimed by host
> at any time when there is memory pressure.

Wait, how can the guest pin the host pages? I would expect this to
happen only when using vfio and device assignment. Otherwise, no the
host can't reclaim a pinned page, that's the whole point of a pin to
prevent the mm from reclaiming ownership.

> KVM does not permanently pin pages. vfio does that but we are not using
> it here.

Right, so I'm confused by your pin assertion above.

^ permalink raw reply

* Re: [Qemu-devel] [PATCH v3 0/5] kvm "virtio pmem" device
From: Pankaj Gupta @ 2019-01-13  2:17 UTC (permalink / raw)
  To: Dan Williams
  Cc: Jan Kara, KVM list, Michael S. Tsirkin, linux-nvdimm,
	Dave Chinner, Qemu Developers, virtualization, adilger kernel,
	Ross Zwisler, dave jiang, darrick wong, vishal l verma,
	Matthew Wilcox, Christoph Hellwig, Linux ACPI, jmoyer, linux-ext4,
	Rik van Riel, Stefan Hajnoczi, Paolo Bonzini, lcapitulino,
	Nitesh Narayan Lal, Theodore Ts'o,
	xiaoguangrong eric <xiaoguangrong.er>
In-Reply-To: <CAPcyv4hwcgTUpgNCefCGu4DvgkYBp5b=f+hJ+FC=s5APYKoycg@mail.gmail.com>


> >
> >
> >
> > >
> > > On Thu 10-01-19 12:26:17, Dave Chinner wrote:
> > > > On Wed, Jan 09, 2019 at 08:17:31PM +0530, Pankaj Gupta wrote:
> > > > >  This patch series has implementation for "virtio pmem".
> > > > >  "virtio pmem" is fake persistent memory(nvdimm) in guest
> > > > >  which allows to bypass the guest page cache. This also
> > > > >  implements a VIRTIO based asynchronous flush mechanism.
> > > >
> > > > Hmmmm. Sharing the host page cache direct into the guest VM. Sounds
> > > > like a good idea, but.....
> > > >
> > > > This means the guest VM can now run timing attacks to observe host
> > > > side page cache residency, and depending on the implementation I'm
> > > > guessing that the guest will be able to control host side page
> > > > cache eviction, too (e.g. via discard or hole punch operations).
> > > >
> > > > Which means this functionality looks to me like a new vector for
> > > > information leakage into and out of the guest VM via guest
> > > > controlled host page cache manipulation.
> > > >
> > > > https://arxiv.org/pdf/1901.01161
> > > >
> > > > I might be wrong, but if I'm not we're going to have to be very
> > > > careful about how guest VMs can access and manipulate host side
> > > > resources like the page cache.....
> > >
> > > Right. Thinking about this I would be more concerned about the fact that
> > > guest can effectively pin amount of host's page cache upto size of the
> > > device/file passed to guest as PMEM, can't it Pankaj? Or is there some
> > > QEMU
> > > magic that avoids this?
> >
> > Yes, guest will pin these host page cache pages using 'get_user_pages' by
> > elevating the page reference count. But these pages can be reclaimed by
> > host
> > at any time when there is memory pressure.
> 
> Wait, how can the guest pin the host pages? I would expect this to
> happen only when using vfio and device assignment. Otherwise, no the
> host can't reclaim a pinned page, that's the whole point of a pin to
> prevent the mm from reclaiming ownership.

yes. You are right I just used the pin word but it does not actually pin pages 
permanently. I had gone through the discussion on existing problems with 
get_user_pages and DMA e.g [1] to understand Jan's POV. It does mention GUP 
pin pages so I also used the word 'pin'. But guest does not permanently pin 
these pages and these pages can be reclaimed by host.

> 
> > KVM does not permanently pin pages. vfio does that but we are not using
> > it here.
> 
> Right, so I'm confused by your pin assertion above.

Sorry! for the confusion. 

[1] https://lwn.net/Articles/753027/

Thanks,
Pankaj

^ permalink raw reply

* Re: [PATCH v3 0/5] kvm "virtio pmem" device
From: Dave Chinner @ 2019-01-13 23:29 UTC (permalink / raw)
  To: Pankaj Gupta
  Cc: jack, kvm, linux-nvdimm, qemu-devel, virtualization,
	adilger kernel, zwisler, eblake, dave jiang, darrick wong,
	vishal l verma, mst, willy, hch, linux-acpi, jmoyer, nilal, riel,
	stefanha, imammedo, dan j williams, lcapitulino, linux-ext4,
	tytso, xiaoguangrong eric, rjw, linux-kernel, linux-xfs,
	linux-fsdevel, pbonzini
In-Reply-To: <1326478078.61913951.1547192704870.JavaMail.zimbra@redhat.com>

On Fri, Jan 11, 2019 at 02:45:04AM -0500, Pankaj Gupta wrote:
> 
> > 
> > On Wed, Jan 09, 2019 at 08:17:31PM +0530, Pankaj Gupta wrote:
> > >  This patch series has implementation for "virtio pmem".
> > >  "virtio pmem" is fake persistent memory(nvdimm) in guest
> > >  which allows to bypass the guest page cache. This also
> > >  implements a VIRTIO based asynchronous flush mechanism.
> > 
> > Hmmmm. Sharing the host page cache direct into the guest VM. Sounds
> > like a good idea, but.....
> > 
> > This means the guest VM can now run timing attacks to observe host
> > side page cache residency, and depending on the implementation I'm
> > guessing that the guest will be able to control host side page
> > cache eviction, too (e.g. via discard or hole punch operations).
> 
> Not sure how? this is similar to mmapping virtual memory by any userspace 
> process. Any host userspace process can do such attack on host page cache
> using mincore & mmap shared file. 

Mincore is for monitoring, not cached eviction. And it's not
required to observe cache residency, either. That's a wide open
field containing an uncountable number of moles...

> But i don't think guest can do this alone. For virtio-pmem usecase
> guest won't be using page cache so timing attack from only guest
> side is not possible unless host userspace can run checks on page
> cache eviction state using mincore etc.  As rightly described by
> Rik, guest will only access its own page cache pages and if guest
> page cache is managed directly by host, this saves alot of effort
> for guest in transferring guest state of page cache.  

Until you have images (and hence host page cache) shared between
multiple guests. People will want to do this, because it means they
only need a single set of pages in host memory for executable
binaries rather than a set of pages per guest. Then you have
multiple guests being able to detect residency of the same set of
pages. If the guests can then, in any way, control eviction of the
pages from the host cache, then we have a guest-to-guest information
leak channel.

i.e. it's something we need to be aware of and really careful about
enabling infrastructure that /will/ be abused if guests can find a
way to influence the host side cache residency.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply

* Re: [PATCH v3 0/5] kvm "virtio pmem" device
From: Matthew Wilcox @ 2019-01-13 23:38 UTC (permalink / raw)
  To: Dave Chinner
  Cc: Pankaj Gupta, jack, kvm, linux-nvdimm, qemu-devel, virtualization,
	adilger kernel, zwisler, eblake, dave jiang, darrick wong,
	vishal l verma, mst, hch, linux-acpi, jmoyer, linux-ext4, riel,
	stefanha, imammedo, dan j williams, lcapitulino, nilal, tytso,
	xiaoguangrong eric, rjw, linux-kernel, linux-xfs, linux-fsdevel,
	pbonzini
In-Reply-To: <20190113232902.GD4205@dastard>

On Mon, Jan 14, 2019 at 10:29:02AM +1100, Dave Chinner wrote:
> Until you have images (and hence host page cache) shared between
> multiple guests. People will want to do this, because it means they
> only need a single set of pages in host memory for executable
> binaries rather than a set of pages per guest. Then you have
> multiple guests being able to detect residency of the same set of
> pages. If the guests can then, in any way, control eviction of the
> pages from the host cache, then we have a guest-to-guest information
> leak channel.

I don't think we should ever be considering something that would allow a
guest to evict page's from the host's pagecache [1].  The guest should
be able to kick its own references to the host's pagecache out of its
own pagecache, but not be able to influence whether the host or another
guest has a read-only mapping cached.

[1] Unless the guest is allowed to modify the host's file; obviously
truncation, holepunching, etc are going to evict pages from the host's
page cache.

^ permalink raw reply

* Re: [PATCH v3 0/5] kvm "virtio pmem" device
From: Dave Chinner @ 2019-01-14  2:50 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Pankaj Gupta, jack, kvm, linux-nvdimm, qemu-devel, virtualization,
	adilger kernel, zwisler, eblake, dave jiang, darrick wong,
	vishal l verma, mst, hch, linux-acpi, jmoyer, linux-ext4, riel,
	stefanha, imammedo, dan j williams, lcapitulino, nilal, tytso,
	xiaoguangrong eric, rjw, linux-kernel, linux-xfs, linux-fsdevel,
	pbonzini
In-Reply-To: <20190113233820.GX6310@bombadil.infradead.org>

On Sun, Jan 13, 2019 at 03:38:21PM -0800, Matthew Wilcox wrote:
> On Mon, Jan 14, 2019 at 10:29:02AM +1100, Dave Chinner wrote:
> > Until you have images (and hence host page cache) shared between
> > multiple guests. People will want to do this, because it means they
> > only need a single set of pages in host memory for executable
> > binaries rather than a set of pages per guest. Then you have
> > multiple guests being able to detect residency of the same set of
> > pages. If the guests can then, in any way, control eviction of the
> > pages from the host cache, then we have a guest-to-guest information
> > leak channel.
> 
> I don't think we should ever be considering something that would allow a
> guest to evict page's from the host's pagecache [1].  The guest should
> be able to kick its own references to the host's pagecache out of its
> own pagecache, but not be able to influence whether the host or another
> guest has a read-only mapping cached.
> 
> [1] Unless the guest is allowed to modify the host's file; obviously
> truncation, holepunching, etc are going to evict pages from the host's
> page cache.

Right, and that's exactly what I mean by "we need to be real careful
with functionality like this".

To be honest, I really don't think I've even touched the surface
here.

e.g. Filesystems and storage can share logical and physical extents.
Which means that image files that share storage (e.g.  because they
are all cloned from the same master image and/or there's in-line
deduplication running on the storage) and can be directly accessed
by guests may very well be susceptible to detection of host side
deduplication and subsequent copy-on-write operations.

This really doesn't seem much different to me from the guest being
able to infer host side KSM page deduplication and COW operation in
the guest side page cache.  The only difference is that DAX is being
used to probe the host side page cache and storage rather than the
guest side.

IOWs, I suspect there's a world of pain waiting for us if we punch
huge holes through the virtual machine abstractions like this.

Improving performance is a laudible goal, but at what price?

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox