All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such
@ 2018-09-13 13:16 Chris Wilson
  2018-09-13 13:16 ` [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently Chris Wilson
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Chris Wilson @ 2018-09-13 13:16 UTC (permalink / raw)
  To: intel-gfx

For finding the panel fitter and PLL for a particular modeset is a part
of that modeset and should be included with the reset of the
DRM_DEBUG_KMS.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_display.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 7fbc006be44a..3be5fa0acee8 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6155,8 +6155,8 @@ static void i9xx_pfit_disable(struct intel_crtc *crtc)
 
 	assert_pipe_disabled(dev_priv, crtc->pipe);
 
-	DRM_DEBUG_DRIVER("disabling pfit, current: 0x%08x\n",
-			 I915_READ(PFIT_CONTROL));
+	DRM_DEBUG_KMS("disabling pfit, current: 0x%08x\n",
+		      I915_READ(PFIT_CONTROL));
 	I915_WRITE(PFIT_CONTROL, 0);
 }
 
@@ -8678,8 +8678,8 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
 	ironlake_compute_dpll(crtc, crtc_state, NULL);
 
 	if (!intel_get_shared_dpll(crtc, crtc_state, NULL)) {
-		DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
-				 pipe_name(crtc->pipe));
+		DRM_DEBUG_KMS("failed to find PLL for pipe %c\n",
+			      pipe_name(crtc->pipe));
 		return -EINVAL;
 	}
 
@@ -9246,8 +9246,8 @@ static int haswell_crtc_compute_clock(struct intel_crtc *crtc,
 			intel_get_crtc_new_encoder(state, crtc_state);
 
 		if (!intel_get_shared_dpll(crtc, crtc_state, encoder)) {
-			DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
-					 pipe_name(crtc->pipe));
+			DRM_DEBUG_KMS("failed to find PLL for pipe %c\n",
+				      pipe_name(crtc->pipe));
 			return -EINVAL;
 		}
 	}
-- 
2.19.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
@ 2018-09-13 13:16 ` Chris Wilson
  2018-09-13 21:11   ` Rodrigo Vivi
  2018-09-13 13:16 ` [PATCH 3/4] drm/i915: Disable displays at the user's request Chris Wilson
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2018-09-13 13:16 UTC (permalink / raw)
  To: intel-gfx

Convert the interface (except for the drm core callback) to accept
drm_i915_private as that is our native type of the majority of
operations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_drv.c    |  10 +--
 drivers/gpu/drm/i915/intel_drv.h   |  28 +++----
 drivers/gpu/drm/i915/intel_fbdev.c | 117 ++++++++++++++---------------
 3 files changed, 77 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 5dd7fc582e6f..a74de4428c79 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -692,7 +692,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
 	if (INTEL_INFO(dev_priv)->num_pipes == 0)
 		return 0;
 
-	ret = intel_fbdev_init(dev);
+	ret = intel_fbdev_init(dev_priv);
 	if (ret)
 		goto cleanup_gem;
 
@@ -1260,7 +1260,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
 	 * irqs are fully enabled. We do it last so that the async config
 	 * cannot run before the connectors are registered.
 	 */
-	intel_fbdev_initial_config_async(dev);
+	intel_fbdev_initial_config_async(dev_priv);
 
 	/*
 	 * We need to coordinate the hotplugs with the asynchronous fbdev
@@ -1527,7 +1527,7 @@ static int i915_driver_open(struct drm_device *dev, struct drm_file *file)
  */
 static void i915_driver_lastclose(struct drm_device *dev)
 {
-	intel_fbdev_restore_mode(dev);
+	intel_fbdev_restore_mode(to_i915(dev));
 	vga_switcheroo_process_delayed_switch();
 }
 
@@ -1623,7 +1623,7 @@ static int i915_drm_suspend(struct drm_device *dev)
 
 	intel_opregion_unregister(dev_priv);
 
-	intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED, true);
+	intel_fbdev_set_suspend(dev_priv, FBINFO_STATE_SUSPENDED, true);
 
 	dev_priv->suspend_count++;
 
@@ -1784,7 +1784,7 @@ static int i915_drm_resume(struct drm_device *dev)
 
 	intel_opregion_register(dev_priv);
 
-	intel_fbdev_set_suspend(dev, FBINFO_STATE_RUNNING, false);
+	intel_fbdev_set_suspend(dev_priv, FBINFO_STATE_RUNNING, false);
 
 	intel_opregion_notify_adapter(dev_priv, PCI_D0);
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index bf1c38728a59..daa2fc007d02 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1779,32 +1779,34 @@ bool intel_encoder_hotplug(struct intel_encoder *encoder,
 
 /* legacy fbdev emulation in intel_fbdev.c */
 #ifdef CONFIG_DRM_FBDEV_EMULATION
-extern int intel_fbdev_init(struct drm_device *dev);
-extern void intel_fbdev_initial_config_async(struct drm_device *dev);
-extern void intel_fbdev_unregister(struct drm_i915_private *dev_priv);
-extern void intel_fbdev_fini(struct drm_i915_private *dev_priv);
-extern void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
-extern void intel_fbdev_output_poll_changed(struct drm_device *dev);
-extern void intel_fbdev_restore_mode(struct drm_device *dev);
+int intel_fbdev_init(struct drm_i915_private *i915);
+void intel_fbdev_initial_config_async(struct drm_i915_private *i915);
+void intel_fbdev_unregister(struct drm_i915_private *i915);
+void intel_fbdev_fini(struct drm_i915_private *i915);
+void intel_fbdev_set_suspend(struct drm_i915_private *i915,
+			     int state, bool synchronous);
+void intel_fbdev_restore_mode(struct drm_i915_private *i915);
+void intel_fbdev_output_poll_changed(struct drm_device *dev);
 #else
-static inline int intel_fbdev_init(struct drm_device *dev)
+static inline int intel_fbdev_init(struct drm_i915_private *i915)
 {
 	return 0;
 }
 
-static inline void intel_fbdev_initial_config_async(struct drm_device *dev)
+static inline void intel_fbdev_initial_config_async(struct drm_i915_private *i915)
 {
 }
 
-static inline void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
+static inline void intel_fbdev_unregister(struct drm_i915_private *i915)
 {
 }
 
-static inline void intel_fbdev_fini(struct drm_i915_private *dev_priv)
+static inline void intel_fbdev_fini(struct drm_i915_private *i915)
 {
 }
 
-static inline void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
+static inline void intel_fbdev_set_suspend(struct drm_i915_private *i915,
+					   int state, bool synchronous)
 {
 }
 
@@ -1812,7 +1814,7 @@ static inline void intel_fbdev_output_poll_changed(struct drm_device *dev)
 {
 }
 
-static inline void intel_fbdev_restore_mode(struct drm_device *dev)
+static inline void intel_fbdev_restore_mode(struct drm_i915_private *i915)
 {
 }
 #endif
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index f99332972b7a..84ebd8102215 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -54,11 +54,14 @@ static void intel_fbdev_invalidate(struct intel_fbdev *ifbdev)
 	intel_fb_obj_invalidate(obj, origin);
 }
 
+static struct intel_fbdev *info_to_fbdev(struct fb_info *info)
+{
+	return container_of(info->par, struct intel_fbdev, helper);
+}
+
 static int intel_fbdev_set_par(struct fb_info *info)
 {
-	struct drm_fb_helper *fb_helper = info->par;
-	struct intel_fbdev *ifbdev =
-		container_of(fb_helper, struct intel_fbdev, helper);
+	struct intel_fbdev *ifbdev = info_to_fbdev(info);
 	int ret;
 
 	ret = drm_fb_helper_set_par(info);
@@ -70,9 +73,7 @@ static int intel_fbdev_set_par(struct fb_info *info)
 
 static int intel_fbdev_blank(int blank, struct fb_info *info)
 {
-	struct drm_fb_helper *fb_helper = info->par;
-	struct intel_fbdev *ifbdev =
-		container_of(fb_helper, struct intel_fbdev, helper);
+	struct intel_fbdev *ifbdev = info_to_fbdev(info);
 	int ret;
 
 	ret = drm_fb_helper_blank(blank, info);
@@ -85,9 +86,7 @@ static int intel_fbdev_blank(int blank, struct fb_info *info)
 static int intel_fbdev_pan_display(struct fb_var_screeninfo *var,
 				   struct fb_info *info)
 {
-	struct drm_fb_helper *fb_helper = info->par;
-	struct intel_fbdev *ifbdev =
-		container_of(fb_helper, struct intel_fbdev, helper);
+	struct intel_fbdev *ifbdev = info_to_fbdev(info);
 	int ret;
 
 	ret = drm_fb_helper_pan_display(var, info);
@@ -113,11 +112,10 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
 {
 	struct intel_fbdev *ifbdev =
 		container_of(helper, struct intel_fbdev, helper);
-	struct drm_framebuffer *fb;
-	struct drm_device *dev = helper->dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct drm_i915_private *i915 = to_i915(helper->dev);
 	struct drm_mode_fb_cmd2 mode_cmd = {};
 	struct drm_i915_gem_object *obj;
+	struct drm_framebuffer *fb;
 	int size, ret;
 
 	/* we don't do packed 24bpp */
@@ -139,10 +137,10 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
 	 * important and we should probably use that space with FBC or other
 	 * features. */
 	obj = NULL;
-	if (size * 2 < dev_priv->stolen_usable_size)
-		obj = i915_gem_object_create_stolen(dev_priv, size);
+	if (size * 2 < i915->stolen_usable_size)
+		obj = i915_gem_object_create_stolen(i915, size);
 	if (obj == NULL)
-		obj = i915_gem_object_create(dev_priv, size);
+		obj = i915_gem_object_create(i915, size);
 	if (IS_ERR(obj)) {
 		DRM_ERROR("failed to allocate framebuffer\n");
 		ret = PTR_ERR(obj);
@@ -170,16 +168,14 @@ static int intelfb_create(struct drm_fb_helper *helper,
 {
 	struct intel_fbdev *ifbdev =
 		container_of(helper, struct intel_fbdev, helper);
+	struct drm_i915_private *i915 = to_i915(helper->dev);
 	struct intel_framebuffer *intel_fb = ifbdev->fb;
-	struct drm_device *dev = helper->dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
-	struct pci_dev *pdev = dev_priv->drm.pdev;
-	struct i915_ggtt *ggtt = &dev_priv->ggtt;
+	struct i915_ggtt *ggtt = &i915->ggtt;
 	const struct i915_ggtt_view view = {
 		.type = I915_GGTT_VIEW_NORMAL,
 	};
-	struct fb_info *info;
 	struct drm_framebuffer *fb;
+	struct fb_info *info;
 	struct i915_vma *vma;
 	unsigned long flags = 0;
 	bool prealloc = false;
@@ -209,8 +205,8 @@ static int intelfb_create(struct drm_fb_helper *helper,
 		sizes->fb_height = intel_fb->base.height;
 	}
 
-	mutex_lock(&dev->struct_mutex);
-	intel_runtime_pm_get(dev_priv);
+	mutex_lock(&i915->drm.struct_mutex);
+	intel_runtime_pm_get(i915);
 
 	/* Pin the GGTT vma for our access via info->screen_base.
 	 * This also validates that any existing fb inherited from the
@@ -242,10 +238,11 @@ static int intelfb_create(struct drm_fb_helper *helper,
 	info->fbops = &intelfb_ops;
 
 	/* setup aperture base/size for vesafb takeover */
-	info->apertures->ranges[0].base = dev->mode_config.fb_base;
+	info->apertures->ranges[0].base = i915->drm.mode_config.fb_base;
 	info->apertures->ranges[0].size = ggtt->mappable_end;
 
-	info->fix.smem_start = dev->mode_config.fb_base + i915_ggtt_offset(vma);
+	info->fix.smem_start =
+		i915->drm.mode_config.fb_base + i915_ggtt_offset(vma);
 	info->fix.smem_len = vma->node.size;
 
 	vaddr = i915_vma_pin_iomap(vma);
@@ -277,16 +274,16 @@ static int intelfb_create(struct drm_fb_helper *helper,
 	ifbdev->vma = vma;
 	ifbdev->vma_flags = flags;
 
-	intel_runtime_pm_put(dev_priv);
-	mutex_unlock(&dev->struct_mutex);
-	vga_switcheroo_client_fb_set(pdev, info);
+	intel_runtime_pm_put(i915);
+	mutex_unlock(&i915->drm.struct_mutex);
+	vga_switcheroo_client_fb_set(i915->drm.pdev, info);
 	return 0;
 
 out_unpin:
 	intel_unpin_fb_vma(vma, flags);
 out_unlock:
-	intel_runtime_pm_put(dev_priv);
-	mutex_unlock(&dev->struct_mutex);
+	intel_runtime_pm_put(i915);
+	mutex_unlock(&i915->drm.struct_mutex);
 	return ret;
 }
 
@@ -335,7 +332,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 				    struct drm_fb_offset *offsets,
 				    bool *enabled, int width, int height)
 {
-	struct drm_i915_private *dev_priv = to_i915(fb_helper->dev);
+	struct drm_i915_private *i915 = to_i915(fb_helper->dev);
 	unsigned long conn_configured, conn_seq, mask;
 	unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG);
 	int i, j;
@@ -484,7 +481,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 	 * fbdev helper library.
 	 */
 	if (num_connectors_enabled != num_connectors_detected &&
-	    num_connectors_enabled < INTEL_INFO(dev_priv)->num_pipes) {
+	    num_connectors_enabled < INTEL_INFO(i915)->num_pipes) {
 		DRM_DEBUG_KMS("fallback: Not all outputs enabled\n");
 		DRM_DEBUG_KMS("Enabled: %i, detected: %i\n", num_connectors_enabled,
 			      num_connectors_detected);
@@ -540,7 +537,7 @@ static void intel_fbdev_destroy(struct intel_fbdev *ifbdev)
  * Note we only support a single fb shared across pipes for boot (mostly for
  * fbcon), so we just find the biggest and use that.
  */
-static bool intel_fbdev_init_bios(struct drm_device *dev,
+static bool intel_fbdev_init_bios(struct drm_i915_private *i915,
 				 struct intel_fbdev *ifbdev)
 {
 	struct intel_framebuffer *fb = NULL;
@@ -549,7 +546,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 	unsigned int max_size = 0;
 
 	/* Find the largest fb */
-	for_each_crtc(dev, crtc) {
+	for_each_crtc(&i915->drm, crtc) {
 		struct drm_i915_gem_object *obj =
 			intel_fb_obj(crtc->primary->state->fb);
 		intel_crtc = to_intel_crtc(crtc);
@@ -574,7 +571,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 	}
 
 	/* Now make sure all the pipes will fit into it */
-	for_each_crtc(dev, crtc) {
+	for_each_crtc(&i915->drm, crtc) {
 		unsigned int cur_size;
 
 		intel_crtc = to_intel_crtc(crtc);
@@ -637,7 +634,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 	drm_framebuffer_get(&ifbdev->fb->base);
 
 	/* Final pass to check if any active pipes don't have fbs */
-	for_each_crtc(dev, crtc) {
+	for_each_crtc(&i915->drm, crtc) {
 		intel_crtc = to_intel_crtc(crtc);
 
 		if (!crtc->state->active)
@@ -659,39 +656,39 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 
 static void intel_fbdev_suspend_worker(struct work_struct *work)
 {
-	intel_fbdev_set_suspend(&container_of(work,
-					      struct drm_i915_private,
-					      fbdev_suspend_work)->drm,
+	intel_fbdev_set_suspend(container_of(work,
+					     struct drm_i915_private,
+					     fbdev_suspend_work),
 				FBINFO_STATE_RUNNING,
 				true);
 }
 
-int intel_fbdev_init(struct drm_device *dev)
+int intel_fbdev_init(struct drm_i915_private *i915)
 {
-	struct drm_i915_private *dev_priv = to_i915(dev);
 	struct intel_fbdev *ifbdev;
 	int ret;
 
-	if (WARN_ON(INTEL_INFO(dev_priv)->num_pipes == 0))
+	if (WARN_ON(INTEL_INFO(i915)->num_pipes == 0))
 		return -ENODEV;
 
 	ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL);
 	if (ifbdev == NULL)
 		return -ENOMEM;
 
-	drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs);
+	drm_fb_helper_prepare(&i915->drm,
+			      &ifbdev->helper, &intel_fb_helper_funcs);
 
-	if (!intel_fbdev_init_bios(dev, ifbdev))
+	if (!intel_fbdev_init_bios(i915, ifbdev))
 		ifbdev->preferred_bpp = 32;
 
-	ret = drm_fb_helper_init(dev, &ifbdev->helper, 4);
+	ret = drm_fb_helper_init(&i915->drm, &ifbdev->helper, 4);
 	if (ret) {
 		kfree(ifbdev);
 		return ret;
 	}
 
-	dev_priv->fbdev = ifbdev;
-	INIT_WORK(&dev_priv->fbdev_suspend_work, intel_fbdev_suspend_worker);
+	i915->fbdev = ifbdev;
+	INIT_WORK(&i915->fbdev_suspend_work, intel_fbdev_suspend_worker);
 
 	drm_fb_helper_single_add_all_connectors(&ifbdev->helper);
 
@@ -708,9 +705,9 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie)
 		intel_fbdev_unregister(to_i915(ifbdev->helper.dev));
 }
 
-void intel_fbdev_initial_config_async(struct drm_device *dev)
+void intel_fbdev_initial_config_async(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 
 	if (!ifbdev)
 		return;
@@ -728,23 +725,23 @@ static void intel_fbdev_sync(struct intel_fbdev *ifbdev)
 	ifbdev->cookie = 0;
 }
 
-void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
+void intel_fbdev_unregister(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = dev_priv->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 
 	if (!ifbdev)
 		return;
 
-	cancel_work_sync(&dev_priv->fbdev_suspend_work);
+	cancel_work_sync(&i915->fbdev_suspend_work);
 	if (!current_is_async())
 		intel_fbdev_sync(ifbdev);
 
 	drm_fb_helper_unregister_fbi(&ifbdev->helper);
 }
 
-void intel_fbdev_fini(struct drm_i915_private *dev_priv)
+void intel_fbdev_fini(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = fetch_and_zero(&dev_priv->fbdev);
+	struct intel_fbdev *ifbdev = fetch_and_zero(&i915->fbdev);
 
 	if (!ifbdev)
 		return;
@@ -752,10 +749,10 @@ void intel_fbdev_fini(struct drm_i915_private *dev_priv)
 	intel_fbdev_destroy(ifbdev);
 }
 
-void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
+void intel_fbdev_set_suspend(struct drm_i915_private *i915,
+			     int state, bool synchronous)
 {
-	struct drm_i915_private *dev_priv = to_i915(dev);
-	struct intel_fbdev *ifbdev = dev_priv->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 	struct fb_info *info;
 
 	if (!ifbdev || !ifbdev->vma)
@@ -772,7 +769,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
 		 * ourselves, so only flush outstanding work upon suspend!
 		 */
 		if (state != FBINFO_STATE_RUNNING)
-			flush_work(&dev_priv->fbdev_suspend_work);
+			flush_work(&i915->fbdev_suspend_work);
 		console_lock();
 	} else {
 		/*
@@ -785,7 +782,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
 			/* Don't block our own workqueue as this can
 			 * be run in parallel with other i915.ko tasks.
 			 */
-			schedule_work(&dev_priv->fbdev_suspend_work);
+			schedule_work(&i915->fbdev_suspend_work);
 			return;
 		}
 	}
@@ -814,9 +811,9 @@ void intel_fbdev_output_poll_changed(struct drm_device *dev)
 		drm_fb_helper_hotplug_event(&ifbdev->helper);
 }
 
-void intel_fbdev_restore_mode(struct drm_device *dev)
+void intel_fbdev_restore_mode(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 
 	if (!ifbdev)
 		return;
-- 
2.19.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/4] drm/i915: Disable displays at the user's request
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
  2018-09-13 13:16 ` [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently Chris Wilson
@ 2018-09-13 13:16 ` Chris Wilson
  2018-09-13 13:19   ` Chris Wilson
  2018-09-13 13:16 ` [PATCH 4/4] HAX: force i915.disable_display=1 Chris Wilson
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2018-09-13 13:16 UTC (permalink / raw)
  To: intel-gfx

If the user passes i915.disable_display=1 we want to disable all the
displays and associated HW like the powerwells on their behalf. Instead
of short circuiting the HW probe, let it run and setup all the
bookkeeping for the known HW. Afterwards, instead of taking over the
BIOS fb and installing the fbcon, we shutdown all the outputs and
teardown the bookkeeping, leaving us with no attached outputs or crtcs,
and all the HW powered down.

Open: wq flushes should be required but seem to deadlock the modprobe
under CI.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c          | 52 +++++++++++++++++-------
 drivers/gpu/drm/i915/intel_device_info.c |  9 ++--
 drivers/gpu/drm/i915/intel_fbdev.c       |  2 +-
 3 files changed, 42 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index a74de4428c79..f34a1f5b99e5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -689,22 +689,8 @@ static int i915_load_modeset_init(struct drm_device *dev)
 
 	intel_setup_overlay(dev_priv);
 
-	if (INTEL_INFO(dev_priv)->num_pipes == 0)
-		return 0;
-
-	ret = intel_fbdev_init(dev_priv);
-	if (ret)
-		goto cleanup_gem;
-
-	/* Only enable hotplug handling once the fbdev is fully set up. */
-	intel_hpd_init(dev_priv);
-
 	return 0;
 
-cleanup_gem:
-	if (i915_gem_suspend(dev_priv))
-		DRM_ERROR("failed to idle hardware; continuing to unload!\n");
-	i915_gem_fini(dev_priv);
 cleanup_modeset:
 	intel_modeset_cleanup(dev);
 cleanup_irq:
@@ -1366,6 +1352,17 @@ static void i915_driver_destroy(struct drm_i915_private *i915)
 	pci_set_drvdata(pdev, NULL);
 }
 
+static void disable_display(struct drm_i915_private *i915)
+{
+	drm_atomic_helper_shutdown(&i915->drm);
+
+#if 0 /* XXX flushes deadlock under modprobe??? */
+	flush_workqueue(i915->modeset_wq);
+	flush_work(&i915->atomic_helper.free_work);
+	flush_scheduled_work();
+#endif
+}
+
 /**
  * i915_driver_load - setup chip and create an initial config
  * @pdev: PCI device
@@ -1426,6 +1423,33 @@ int i915_driver_load(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret < 0)
 		goto out_cleanup_hw;
 
+	/*
+	 * After completing our HW probe; tear it all down again (at the
+	 * user's request)!
+	 *
+	 * Along side the CRTCs and connectors, there is a medley of
+	 * auxiliary HW which control various powerwells and interact with
+	 * other state (such as the BIOS framebuffer occupying a portion
+	 * of reserved memory). If the user tells us to run without any
+	 * displays enabled, we still need to register all the display and
+	 * auxiliary HW in order to safely disable them.
+	 */
+	if (i915_modparams.disable_display) {
+		DRM_INFO("Display disabled (module parameter)\n");
+		disable_display(dev_priv);
+		mkwrite_device_info(dev_priv)->num_pipes = 0;
+	}
+
+	if (INTEL_INFO(dev_priv)->num_pipes == 0) {
+		dev_priv->psr.sink_support = false;
+		drm_mode_config_cleanup(&dev_priv->drm);
+		driver.driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC);
+	}
+
+	/* Only enable hotplug handling once the fbdev is fully set up. */
+	if (intel_fbdev_init(dev_priv) == 0)
+		intel_hpd_init(dev_priv);
+
 	i915_driver_register(dev_priv);
 
 	intel_init_ipc(dev_priv);
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index 0ef0c6448d53..e50ea5b2576b 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -776,12 +776,9 @@ void intel_device_info_runtime_init(struct intel_device_info *info)
 			info->num_sprites[pipe] = 1;
 	}
 
-	if (i915_modparams.disable_display) {
-		DRM_INFO("Display disabled (module parameter)\n");
-		info->num_pipes = 0;
-	} else if (info->num_pipes > 0 &&
-		   (IS_GEN7(dev_priv) || IS_GEN8(dev_priv)) &&
-		   HAS_PCH_SPLIT(dev_priv)) {
+	if (info->num_pipes > 0 &&
+	    (IS_GEN7(dev_priv) || IS_GEN8(dev_priv)) &&
+	    HAS_PCH_SPLIT(dev_priv)) {
 		u32 fuse_strap = I915_READ(FUSE_STRAP);
 		u32 sfuse_strap = I915_READ(SFUSE_STRAP);
 
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index 84ebd8102215..9dd50c5ec558 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -668,7 +668,7 @@ int intel_fbdev_init(struct drm_i915_private *i915)
 	struct intel_fbdev *ifbdev;
 	int ret;
 
-	if (WARN_ON(INTEL_INFO(i915)->num_pipes == 0))
+	if (INTEL_INFO(i915)->num_pipes == 0)
 		return -ENODEV;
 
 	ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL);
-- 
2.19.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/4] HAX: force i915.disable_display=1
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
  2018-09-13 13:16 ` [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently Chris Wilson
  2018-09-13 13:16 ` [PATCH 3/4] drm/i915: Disable displays at the user's request Chris Wilson
@ 2018-09-13 13:16 ` Chris Wilson
  2018-09-13 13:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such Patchwork
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Chris Wilson @ 2018-09-13 13:16 UTC (permalink / raw)
  To: intel-gfx

---
 drivers/gpu/drm/i915/i915_params.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
index 6c4d4a21474b..3d9fa6bb8f2b 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
@@ -63,7 +63,7 @@ struct drm_printer;
 	param(bool, load_detect_test, false) \
 	param(bool, force_reset_modeset_test, false) \
 	param(bool, error_capture, true) \
-	param(bool, disable_display, false) \
+	param(bool, disable_display, true) \
 	param(bool, verbose_state_checks, true) \
 	param(bool, nuclear_pageflip, false) \
 	param(bool, enable_dp_mst, true) \
-- 
2.19.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/4] drm/i915: Disable displays at the user's request
  2018-09-13 13:16 ` [PATCH 3/4] drm/i915: Disable displays at the user's request Chris Wilson
@ 2018-09-13 13:19   ` Chris Wilson
  0 siblings, 0 replies; 13+ messages in thread
From: Chris Wilson @ 2018-09-13 13:19 UTC (permalink / raw)
  To: intel-gfx

Quoting Chris Wilson (2018-09-13 14:16:28)
> +       /*
> +        * After completing our HW probe; tear it all down again (at the
> +        * user's request)!
> +        *
> +        * Along side the CRTCs and connectors, there is a medley of
> +        * auxiliary HW which control various powerwells and interact with
> +        * other state (such as the BIOS framebuffer occupying a portion
> +        * of reserved memory). If the user tells us to run without any
> +        * displays enabled, we still need to register all the display and
> +        * auxiliary HW in order to safely disable them.
> +        */
> +       if (i915_modparams.disable_display) {
> +               DRM_INFO("Display disabled (module parameter)\n");
> +               disable_display(dev_priv);
> +               mkwrite_device_info(dev_priv)->num_pipes = 0;
> +       }
> +
> +       if (INTEL_INFO(dev_priv)->num_pipes == 0) {
> +               dev_priv->psr.sink_support = false;
> +               drm_mode_config_cleanup(&dev_priv->drm);
> +               driver.driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC);

Removing the feature seems like a good idea on surface (as we then don't
have to worry about hitting internals that expect crtcs and planes and
such), however more work required in declaring igt requirements than
simply having no pipes :)
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
                   ` (2 preceding siblings ...)
  2018-09-13 13:16 ` [PATCH 4/4] HAX: force i915.disable_display=1 Chris Wilson
@ 2018-09-13 13:35 ` Patchwork
  2018-09-13 13:37 ` ✗ Fi.CI.SPARSE: " Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2018-09-13 13:35 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such
URL   : https://patchwork.freedesktop.org/series/49641/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
b7501effb8ce drm/i915: Mark up a couple of KMS debug messages as such
020c81668c9d drm/i915/fbdev: Use i915/drm_i915_private consistently
-:284: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#284: FILE: drivers/gpu/drm/i915/intel_fbdev.c:541:
+static bool intel_fbdev_init_bios(struct drm_i915_private *i915,
 				 struct intel_fbdev *ifbdev)

total: 0 errors, 0 warnings, 1 checks, 397 lines checked
f54c19c75cc9 drm/i915: Disable displays at the user's request
-:59: WARNING:IF_0: Consider removing the code enclosed by this #if 0 and its #endif
#59: FILE: drivers/gpu/drm/i915/i915_drv.c:1359:
+#if 0 /* XXX flushes deadlock under modprobe??? */

total: 0 errors, 1 warnings, 0 checks, 95 lines checked
2313360e29d8 HAX: force i915.disable_display=1
-:8: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

-:19: ERROR:MISSING_SIGN_OFF: Missing Signed-off-by: line(s)

total: 1 errors, 1 warnings, 0 checks, 8 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* ✗ Fi.CI.SPARSE: warning for series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
                   ` (3 preceding siblings ...)
  2018-09-13 13:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such Patchwork
@ 2018-09-13 13:37 ` Patchwork
  2018-09-13 13:53 ` ✗ Fi.CI.BAT: failure " Patchwork
  2018-09-13 21:04 ` [PATCH 1/4] " Rodrigo Vivi
  6 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2018-09-13 13:37 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such
URL   : https://patchwork.freedesktop.org/series/49641/
State : warning

== Summary ==

$ dim sparse origin/drm-tip
Commit: drm/i915: Mark up a couple of KMS debug messages as such
Okay!

Commit: drm/i915/fbdev: Use i915/drm_i915_private consistently
-O:drivers/gpu/drm/i915/intel_fbdev.c:340:30: warning: expression using sizeof(void)
+drivers/gpu/drm/i915/intel_fbdev.c:337:30: warning: expression using sizeof(void)

Commit: drm/i915: Disable displays at the user's request
Okay!

Commit: HAX: force i915.disable_display=1
Okay!

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* ✗ Fi.CI.BAT: failure for series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
                   ` (4 preceding siblings ...)
  2018-09-13 13:37 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2018-09-13 13:53 ` Patchwork
  2018-09-13 21:04 ` [PATCH 1/4] " Rodrigo Vivi
  6 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2018-09-13 13:53 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such
URL   : https://patchwork.freedesktop.org/series/49641/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4816 -> Patchwork_10167 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_10167 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_10167, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/49641/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_10167:

  === IGT changes ===

    ==== Possible regressions ====

    igt@debugfs_test@read_all_entries:
      fi-kbl-soraka:      PASS -> FAIL

    igt@kms_addfb_basic@addfb25-bad-modifier:
      fi-bdw-gvtdvm:      PASS -> FAIL +73
      fi-gdg-551:         PASS -> FAIL +66

    igt@kms_addfb_basic@addfb25-modifier-no-flag:
      fi-cfl-guc:         PASS -> FAIL +77

    igt@kms_addfb_basic@addfb25-y-tiled:
      fi-kbl-r:           PASS -> FAIL +76
      fi-byt-n2820:       PASS -> FAIL +69

    igt@kms_addfb_basic@addfb25-y-tiled-small:
      fi-bdw-samus:       SKIP -> FAIL +4
      fi-bdw-5557u:       SKIP -> FAIL +4
      fi-byt-n2820:       SKIP -> FAIL +11
      fi-hsw-4770:        SKIP -> FAIL
      fi-ivb-3770:        SKIP -> FAIL +3

    igt@kms_addfb_basic@bad-pitch-1024:
      fi-ivb-3520m:       PASS -> FAIL +76

    igt@kms_addfb_basic@bad-pitch-32:
      fi-whl-u:           PASS -> FAIL +76

    igt@kms_addfb_basic@bad-pitch-63:
      fi-kbl-7567u:       PASS -> FAIL +77

    igt@kms_addfb_basic@basic:
      fi-byt-j1900:       PASS -> FAIL +73

    igt@kms_addfb_basic@basic-y-tiled:
      fi-bdw-samus:       PASS -> FAIL +68
      fi-cfl-8109u:       PASS -> FAIL +77
      fi-cfl-s3:          PASS -> FAIL +76

    igt@kms_addfb_basic@invalid-get-prop-any:
      fi-skl-6600u:       PASS -> FAIL +76
      fi-bsw-n3050:       PASS -> FAIL +61
      fi-ivb-3770:        PASS -> FAIL +77
      fi-kbl-7560u:       PASS -> FAIL +76

    igt@kms_addfb_basic@invalid-set-prop:
      fi-hsw-4770:        PASS -> FAIL +80

    igt@kms_addfb_basic@invalid-set-prop-any:
      fi-glk-dsi:         PASS -> FAIL +76

    igt@kms_addfb_basic@no-handle:
      fi-cfl-8700k:       PASS -> FAIL +77

    igt@kms_addfb_basic@too-high:
      fi-glk-j4005:       PASS -> FAIL +77

    igt@kms_addfb_basic@unused-modifier:
      fi-bdw-5557u:       PASS -> FAIL +76
      fi-kbl-8809g:       PASS -> FAIL +40
      fi-kbl-guc:         PASS -> FAIL +40

    igt@kms_addfb_basic@unused-offsets:
      fi-bwr-2160:        PASS -> FAIL +66
      fi-blb-e6850:       PASS -> FAIL +66

    igt@kms_addfb_basic@unused-pitches:
      fi-kbl-x1275:       PASS -> FAIL +40
      fi-skl-gvtdvm:      PASS -> FAIL +74

    igt@kms_busy@basic-flip-b:
      fi-kbl-8809g:       SKIP -> FAIL +40

    igt@kms_chamelium@dp-hpd-fast:
      fi-skl-6700k2:      SKIP -> FAIL +8

    igt@kms_chamelium@hdmi-crc-fast:
      fi-skl-6700k2:      PASS -> FAIL +81

    igt@kms_chamelium@vga-hpd-fast:
      fi-kbl-7500u:       SKIP -> FAIL +8

    igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size:
      fi-skl-guc:         PASS -> FAIL +77

    igt@kms_flip@basic-flip-vs-dpms:
      fi-ilk-650:         PASS -> FAIL +70
      fi-pnv-d510:        PASS -> FAIL +66
      fi-skl-6770hq:      PASS -> FAIL +77

    igt@kms_flip@basic-flip-vs-modeset:
      fi-kbl-x1275:       SKIP -> FAIL +40
      {fi-cnl-u}:         NOTRUN -> FAIL +81

    igt@kms_flip@basic-flip-vs-wf_vblank:
      fi-icl-u:           NOTRUN -> FAIL +81
      fi-hsw-peppy:       PASS -> FAIL +74
      fi-snb-2600:        PASS -> FAIL +70
      fi-skl-6260u:       PASS -> FAIL +77

    igt@kms_force_connector_basic@force-connector-state:
      fi-cfl-8700k:       SKIP -> FAIL +3
      fi-skl-6600u:       SKIP -> FAIL +4
      fi-byt-clapper:     SKIP -> FAIL +12
      fi-kbl-r:           SKIP -> FAIL +4
      fi-skl-6770hq:      SKIP -> FAIL +3

    igt@kms_force_connector_basic@force-edid:
      fi-snb-2520m:       PASS -> FAIL +69
      fi-glk-dsi:         SKIP -> FAIL +4
      fi-skl-6260u:       SKIP -> FAIL +3

    igt@kms_force_connector_basic@force-load-detect:
      fi-kbl-7560u:       SKIP -> FAIL +4
      fi-bxt-dsi:         SKIP -> FAIL +4
      fi-bxt-j4205:       SKIP -> FAIL +3
      fi-skl-iommu:       SKIP -> FAIL +3
      fi-glk-j4005:       SKIP -> FAIL +3
      fi-cfl-guc:         SKIP -> FAIL +3
      fi-kbl-7567u:       SKIP -> FAIL +3
      fi-skl-guc:         SKIP -> FAIL +3
      fi-hsw-4770r:       SKIP -> FAIL +4

    igt@kms_force_connector_basic@prune-stale-modes:
      fi-hsw-peppy:       SKIP -> FAIL +5
      fi-cfl-8109u:       SKIP -> FAIL +3
      fi-cfl-s3:          SKIP -> FAIL +4
      fi-whl-u:           SKIP -> FAIL +4

    igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
      fi-bsw-n3050:       SKIP -> FAIL +19

    igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
      fi-bxt-j4205:       PASS -> FAIL +77

    igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b:
      fi-bsw-kefka:       PASS -> FAIL +68

    igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence:
      fi-gdg-551:         SKIP -> FAIL +14

    igt@kms_pipe_crc_basic@read-crc-pipe-b:
      fi-byt-clapper:     PASS -> FAIL +66

    igt@kms_pipe_crc_basic@read-crc-pipe-c:
      fi-kbl-guc:         SKIP -> FAIL +40
      fi-bwr-2160:        SKIP -> FAIL +14
      fi-snb-2600:        SKIP -> FAIL +10

    igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence:
      fi-bxt-dsi:         PASS -> FAIL +76
      fi-byt-j1900:       SKIP -> FAIL +7

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      fi-bsw-kefka:       SKIP -> FAIL +12
      fi-snb-2520m:       SKIP -> FAIL +11

    igt@pm_rpm@basic-pci-d3-state:
      fi-pnv-d510:        SKIP -> FAIL +14

    igt@pm_rpm@basic-rte:
      fi-skl-iommu:       PASS -> FAIL +77
      fi-skl-gvtdvm:      SKIP -> FAIL +6
      fi-ilk-650:         SKIP -> FAIL +10
      fi-bdw-gvtdvm:      SKIP -> FAIL +7
      fi-bdw-samus:       NOTRUN -> FAIL +6

    igt@pm_rpm@module-reload:
      fi-blb-e6850:       SKIP -> FAIL +14
      fi-ivb-3520m:       SKIP -> FAIL +4

    igt@prime_vgem@basic-fence-flip:
      fi-hsw-4770r:       PASS -> FAIL +76
      fi-kbl-7500u:       PASS -> FAIL +80

    
    ==== Warnings ====

    igt@core_prop_blob@basic:
      fi-skl-6260u:       PASS -> SKIP
      fi-blb-e6850:       PASS -> SKIP
      fi-byt-j1900:       PASS -> SKIP
      fi-skl-6700k2:      PASS -> SKIP
      fi-skl-gvtdvm:      PASS -> SKIP
      fi-glk-j4005:       PASS -> SKIP
      fi-skl-iommu:       PASS -> SKIP
      fi-skl-6770hq:      PASS -> SKIP
      fi-snb-2600:        PASS -> SKIP
      fi-bxt-j4205:       PASS -> SKIP
      fi-bwr-2160:        PASS -> SKIP
      fi-kbl-7560u:       PASS -> SKIP +5
      fi-kbl-soraka:      PASS -> SKIP
      fi-byt-n2820:       PASS -> SKIP
      fi-gdg-551:         PASS -> SKIP
      fi-cfl-8700k:       PASS -> SKIP
      fi-hsw-peppy:       PASS -> SKIP +1
      fi-bdw-samus:       PASS -> SKIP
      fi-kbl-8809g:       PASS -> SKIP
      fi-skl-guc:         PASS -> SKIP
      fi-cfl-guc:         PASS -> SKIP
      fi-kbl-x1275:       PASS -> SKIP
      fi-bdw-gvtdvm:      PASS -> SKIP
      fi-ilk-650:         PASS -> SKIP
      fi-bsw-n3050:       PASS -> SKIP
      fi-ivb-3770:        PASS -> SKIP
      fi-bxt-dsi:         PASS -> SKIP +1
      fi-hsw-4770:        PASS -> SKIP
      fi-kbl-7500u:       PASS -> SKIP
      fi-bdw-5557u:       PASS -> SKIP
      fi-kbl-guc:         PASS -> SKIP
      fi-cfl-8109u:       PASS -> SKIP
      fi-hsw-4770r:       PASS -> SKIP
      fi-pnv-d510:        PASS -> SKIP
      fi-kbl-7567u:       PASS -> SKIP

    igt@kms_chamelium@common-hpd-after-suspend:
      fi-kbl-7500u:       DMESG-WARN (fdo#105602, fdo#102505, fdo#105079) -> FAIL

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
      fi-bdw-samus:       INCOMPLETE (fdo#107773) -> FAIL

    igt@kms_psr@cursor_plane_move:
      fi-kbl-r:           PASS -> SKIP +5
      fi-whl-u:           PASS -> SKIP +5

    igt@kms_psr@primary_page_flip:
      fi-skl-6600u:       PASS -> SKIP +5

    igt@kms_psr@sprite_plane_onoff:
      fi-cfl-s3:          PASS -> SKIP +5

    igt@pm_backlight@basic-brightness:
      fi-snb-2520m:       PASS -> SKIP +1
      fi-ivb-3520m:       PASS -> SKIP +1
      fi-glk-dsi:         PASS -> SKIP +1
      fi-bsw-kefka:       PASS -> SKIP +1
      fi-byt-clapper:     PASS -> SKIP +1

    igt@pm_rpm@module-reload:
      fi-hsw-peppy:       DMESG-WARN (fdo#107603) -> FAIL

    
== Known issues ==

  Here are the changes found in Patchwork_10167 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_hangcheck:
      fi-skl-guc:         PASS -> DMESG-FAIL (fdo#106685)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#102505 https://bugs.freedesktop.org/show_bug.cgi?id=102505
  fdo#105079 https://bugs.freedesktop.org/show_bug.cgi?id=105079
  fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
  fdo#106685 https://bugs.freedesktop.org/show_bug.cgi?id=106685
  fdo#107603 https://bugs.freedesktop.org/show_bug.cgi?id=107603
  fdo#107773 https://bugs.freedesktop.org/show_bug.cgi?id=107773


== Participating hosts (49 -> 46) ==

  Additional (2): fi-cnl-u fi-icl-u 
  Missing    (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4816 -> Patchwork_10167

  CI_DRM_4816: 5bebc54ac552e3716bfe0f1f7eb0babfbda49f09 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4640: 9a8da36e708f9ed15b20689dfe305e41f9a19008 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_10167: 2313360e29d8db2fecf4cc241214f4f821219388 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

2313360e29d8 HAX: force i915.disable_display=1
f54c19c75cc9 drm/i915: Disable displays at the user's request
020c81668c9d drm/i915/fbdev: Use i915/drm_i915_private consistently
b7501effb8ce drm/i915: Mark up a couple of KMS debug messages as such

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10167/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such
  2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
                   ` (5 preceding siblings ...)
  2018-09-13 13:53 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2018-09-13 21:04 ` Rodrigo Vivi
  6 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2018-09-13 21:04 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Thu, Sep 13, 2018 at 02:16:26PM +0100, Chris Wilson wrote:
> For finding the panel fitter and PLL for a particular modeset is a part
> of that modeset and should be included with the reset of the
> DRM_DEBUG_KMS.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 7fbc006be44a..3be5fa0acee8 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6155,8 +6155,8 @@ static void i9xx_pfit_disable(struct intel_crtc *crtc)
>  
>  	assert_pipe_disabled(dev_priv, crtc->pipe);
>  
> -	DRM_DEBUG_DRIVER("disabling pfit, current: 0x%08x\n",
> -			 I915_READ(PFIT_CONTROL));
> +	DRM_DEBUG_KMS("disabling pfit, current: 0x%08x\n",
> +		      I915_READ(PFIT_CONTROL));
>  	I915_WRITE(PFIT_CONTROL, 0);
>  }
>  
> @@ -8678,8 +8678,8 @@ static int ironlake_crtc_compute_clock(struct intel_crtc *crtc,
>  	ironlake_compute_dpll(crtc, crtc_state, NULL);
>  
>  	if (!intel_get_shared_dpll(crtc, crtc_state, NULL)) {
> -		DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
> -				 pipe_name(crtc->pipe));
> +		DRM_DEBUG_KMS("failed to find PLL for pipe %c\n",
> +			      pipe_name(crtc->pipe));
>  		return -EINVAL;
>  	}
>  
> @@ -9246,8 +9246,8 @@ static int haswell_crtc_compute_clock(struct intel_crtc *crtc,
>  			intel_get_crtc_new_encoder(state, crtc_state);
>  
>  		if (!intel_get_shared_dpll(crtc, crtc_state, encoder)) {
> -			DRM_DEBUG_DRIVER("failed to find PLL for pipe %c\n",
> -					 pipe_name(crtc->pipe));
> +			DRM_DEBUG_KMS("failed to find PLL for pipe %c\n",
> +				      pipe_name(crtc->pipe));
>  			return -EINVAL;
>  		}
>  	}
> -- 
> 2.19.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently
  2018-09-13 13:16 ` [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently Chris Wilson
@ 2018-09-13 21:11   ` Rodrigo Vivi
  2018-09-13 21:31     ` Chris Wilson
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2018-09-13 21:11 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Thu, Sep 13, 2018 at 02:16:27PM +0100, Chris Wilson wrote:
> Convert the interface (except for the drm core callback) to accept
> drm_i915_private as that is our native type of the majority of
> operations.

this message just tells about s/dev/dev_priv...

> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_drv.c    |  10 +--
>  drivers/gpu/drm/i915/intel_drv.h   |  28 +++----
>  drivers/gpu/drm/i915/intel_fbdev.c | 117 ++++++++++++++---------------
>  3 files changed, 77 insertions(+), 78 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 5dd7fc582e6f..a74de4428c79 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -692,7 +692,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
>  	if (INTEL_INFO(dev_priv)->num_pipes == 0)
>  		return 0;
>  
> -	ret = intel_fbdev_init(dev);
> +	ret = intel_fbdev_init(dev_priv);
>  	if (ret)
>  		goto cleanup_gem;
>  
> @@ -1260,7 +1260,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
>  	 * irqs are fully enabled. We do it last so that the async config
>  	 * cannot run before the connectors are registered.
>  	 */
> -	intel_fbdev_initial_config_async(dev);
> +	intel_fbdev_initial_config_async(dev_priv);
>  
>  	/*
>  	 * We need to coordinate the hotplugs with the asynchronous fbdev
> @@ -1527,7 +1527,7 @@ static int i915_driver_open(struct drm_device *dev, struct drm_file *file)
>   */
>  static void i915_driver_lastclose(struct drm_device *dev)
>  {
> -	intel_fbdev_restore_mode(dev);
> +	intel_fbdev_restore_mode(to_i915(dev));
>  	vga_switcheroo_process_delayed_switch();
>  }
>  
> @@ -1623,7 +1623,7 @@ static int i915_drm_suspend(struct drm_device *dev)
>  
>  	intel_opregion_unregister(dev_priv);
>  
> -	intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED, true);
> +	intel_fbdev_set_suspend(dev_priv, FBINFO_STATE_SUSPENDED, true);
>  
>  	dev_priv->suspend_count++;
>  
> @@ -1784,7 +1784,7 @@ static int i915_drm_resume(struct drm_device *dev)
>  
>  	intel_opregion_register(dev_priv);
>  
> -	intel_fbdev_set_suspend(dev, FBINFO_STATE_RUNNING, false);
> +	intel_fbdev_set_suspend(dev_priv, FBINFO_STATE_RUNNING, false);
>  
>  	intel_opregion_notify_adapter(dev_priv, PCI_D0);
>  
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index bf1c38728a59..daa2fc007d02 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1779,32 +1779,34 @@ bool intel_encoder_hotplug(struct intel_encoder *encoder,
>  
>  /* legacy fbdev emulation in intel_fbdev.c */
>  #ifdef CONFIG_DRM_FBDEV_EMULATION
> -extern int intel_fbdev_init(struct drm_device *dev);
> -extern void intel_fbdev_initial_config_async(struct drm_device *dev);
> -extern void intel_fbdev_unregister(struct drm_i915_private *dev_priv);
> -extern void intel_fbdev_fini(struct drm_i915_private *dev_priv);
> -extern void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
> -extern void intel_fbdev_output_poll_changed(struct drm_device *dev);
> -extern void intel_fbdev_restore_mode(struct drm_device *dev);
> +int intel_fbdev_init(struct drm_i915_private *i915);
> +void intel_fbdev_initial_config_async(struct drm_i915_private *i915);
> +void intel_fbdev_unregister(struct drm_i915_private *i915);
> +void intel_fbdev_fini(struct drm_i915_private *i915);
> +void intel_fbdev_set_suspend(struct drm_i915_private *i915,
> +			     int state, bool synchronous);
> +void intel_fbdev_restore_mode(struct drm_i915_private *i915);
> +void intel_fbdev_output_poll_changed(struct drm_device *dev);
>  #else
> -static inline int intel_fbdev_init(struct drm_device *dev)
> +static inline int intel_fbdev_init(struct drm_i915_private *i915)
>  {
>  	return 0;
>  }
>  
> -static inline void intel_fbdev_initial_config_async(struct drm_device *dev)
> +static inline void intel_fbdev_initial_config_async(struct drm_i915_private *i915)
>  {
>  }
>  
> -static inline void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
> +static inline void intel_fbdev_unregister(struct drm_i915_private *i915)
>  {
>  }
>  
> -static inline void intel_fbdev_fini(struct drm_i915_private *dev_priv)
> +static inline void intel_fbdev_fini(struct drm_i915_private *i915)
>  {
>  }
>  
> -static inline void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
> +static inline void intel_fbdev_set_suspend(struct drm_i915_private *i915,
> +					   int state, bool synchronous)
>  {
>  }
>  
> @@ -1812,7 +1814,7 @@ static inline void intel_fbdev_output_poll_changed(struct drm_device *dev)
>  {
>  }
>  
> -static inline void intel_fbdev_restore_mode(struct drm_device *dev)
> +static inline void intel_fbdev_restore_mode(struct drm_i915_private *i915)
>  {
>  }
>  #endif
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index f99332972b7a..84ebd8102215 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -54,11 +54,14 @@ static void intel_fbdev_invalidate(struct intel_fbdev *ifbdev)
>  	intel_fb_obj_invalidate(obj, origin);
>  }
>  
> +static struct intel_fbdev *info_to_fbdev(struct fb_info *info)
> +{
> +	return container_of(info->par, struct intel_fbdev, helper);
> +}
> +

So, could we split this info_to_fbdev helper in a separated patch?

>  static int intel_fbdev_set_par(struct fb_info *info)
>  {
> -	struct drm_fb_helper *fb_helper = info->par;
> -	struct intel_fbdev *ifbdev =
> -		container_of(fb_helper, struct intel_fbdev, helper);
> +	struct intel_fbdev *ifbdev = info_to_fbdev(info);
>  	int ret;
>  
>  	ret = drm_fb_helper_set_par(info);
> @@ -70,9 +73,7 @@ static int intel_fbdev_set_par(struct fb_info *info)
>  
>  static int intel_fbdev_blank(int blank, struct fb_info *info)
>  {
> -	struct drm_fb_helper *fb_helper = info->par;
> -	struct intel_fbdev *ifbdev =
> -		container_of(fb_helper, struct intel_fbdev, helper);
> +	struct intel_fbdev *ifbdev = info_to_fbdev(info);
>  	int ret;
>  
>  	ret = drm_fb_helper_blank(blank, info);
> @@ -85,9 +86,7 @@ static int intel_fbdev_blank(int blank, struct fb_info *info)
>  static int intel_fbdev_pan_display(struct fb_var_screeninfo *var,
>  				   struct fb_info *info)
>  {
> -	struct drm_fb_helper *fb_helper = info->par;
> -	struct intel_fbdev *ifbdev =
> -		container_of(fb_helper, struct intel_fbdev, helper);
> +	struct intel_fbdev *ifbdev = info_to_fbdev(info);
>  	int ret;
>  
>  	ret = drm_fb_helper_pan_display(var, info);
> @@ -113,11 +112,10 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
>  {
>  	struct intel_fbdev *ifbdev =
>  		container_of(helper, struct intel_fbdev, helper);
> -	struct drm_framebuffer *fb;
> -	struct drm_device *dev = helper->dev;
> -	struct drm_i915_private *dev_priv = to_i915(dev);
> +	struct drm_i915_private *i915 = to_i915(helper->dev);
>  	struct drm_mode_fb_cmd2 mode_cmd = {};
>  	struct drm_i915_gem_object *obj;
> +	struct drm_framebuffer *fb;
>  	int size, ret;
>  
>  	/* we don't do packed 24bpp */
> @@ -139,10 +137,10 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
>  	 * important and we should probably use that space with FBC or other
>  	 * features. */
>  	obj = NULL;
> -	if (size * 2 < dev_priv->stolen_usable_size)
> -		obj = i915_gem_object_create_stolen(dev_priv, size);
> +	if (size * 2 < i915->stolen_usable_size)
> +		obj = i915_gem_object_create_stolen(i915, size);
>  	if (obj == NULL)
> -		obj = i915_gem_object_create(dev_priv, size);
> +		obj = i915_gem_object_create(i915, size);
>  	if (IS_ERR(obj)) {
>  		DRM_ERROR("failed to allocate framebuffer\n");
>  		ret = PTR_ERR(obj);
> @@ -170,16 +168,14 @@ static int intelfb_create(struct drm_fb_helper *helper,
>  {
>  	struct intel_fbdev *ifbdev =
>  		container_of(helper, struct intel_fbdev, helper);
> +	struct drm_i915_private *i915 = to_i915(helper->dev);
>  	struct intel_framebuffer *intel_fb = ifbdev->fb;
> -	struct drm_device *dev = helper->dev;
> -	struct drm_i915_private *dev_priv = to_i915(dev);
> -	struct pci_dev *pdev = dev_priv->drm.pdev;
> -	struct i915_ggtt *ggtt = &dev_priv->ggtt;
> +	struct i915_ggtt *ggtt = &i915->ggtt;
>  	const struct i915_ggtt_view view = {
>  		.type = I915_GGTT_VIEW_NORMAL,
>  	};
> -	struct fb_info *info;
>  	struct drm_framebuffer *fb;
> +	struct fb_info *info;
>  	struct i915_vma *vma;
>  	unsigned long flags = 0;
>  	bool prealloc = false;
> @@ -209,8 +205,8 @@ static int intelfb_create(struct drm_fb_helper *helper,
>  		sizes->fb_height = intel_fb->base.height;
>  	}
>  
> -	mutex_lock(&dev->struct_mutex);
> -	intel_runtime_pm_get(dev_priv);
> +	mutex_lock(&i915->drm.struct_mutex);
> +	intel_runtime_pm_get(i915);
>  
>  	/* Pin the GGTT vma for our access via info->screen_base.
>  	 * This also validates that any existing fb inherited from the
> @@ -242,10 +238,11 @@ static int intelfb_create(struct drm_fb_helper *helper,
>  	info->fbops = &intelfb_ops;
>  
>  	/* setup aperture base/size for vesafb takeover */
> -	info->apertures->ranges[0].base = dev->mode_config.fb_base;
> +	info->apertures->ranges[0].base = i915->drm.mode_config.fb_base;
>  	info->apertures->ranges[0].size = ggtt->mappable_end;
>  
> -	info->fix.smem_start = dev->mode_config.fb_base + i915_ggtt_offset(vma);
> +	info->fix.smem_start =
> +		i915->drm.mode_config.fb_base + i915_ggtt_offset(vma);
>  	info->fix.smem_len = vma->node.size;
>  
>  	vaddr = i915_vma_pin_iomap(vma);
> @@ -277,16 +274,16 @@ static int intelfb_create(struct drm_fb_helper *helper,
>  	ifbdev->vma = vma;
>  	ifbdev->vma_flags = flags;
>  
> -	intel_runtime_pm_put(dev_priv);
> -	mutex_unlock(&dev->struct_mutex);
> -	vga_switcheroo_client_fb_set(pdev, info);
> +	intel_runtime_pm_put(i915);
> +	mutex_unlock(&i915->drm.struct_mutex);
> +	vga_switcheroo_client_fb_set(i915->drm.pdev, info);
>  	return 0;
>  
>  out_unpin:
>  	intel_unpin_fb_vma(vma, flags);
>  out_unlock:
> -	intel_runtime_pm_put(dev_priv);
> -	mutex_unlock(&dev->struct_mutex);
> +	intel_runtime_pm_put(i915);
> +	mutex_unlock(&i915->drm.struct_mutex);
>  	return ret;
>  }
>  
> @@ -335,7 +332,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
>  				    struct drm_fb_offset *offsets,
>  				    bool *enabled, int width, int height)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(fb_helper->dev);
> +	struct drm_i915_private *i915 = to_i915(fb_helper->dev);
>  	unsigned long conn_configured, conn_seq, mask;
>  	unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG);
>  	int i, j;
> @@ -484,7 +481,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
>  	 * fbdev helper library.
>  	 */
>  	if (num_connectors_enabled != num_connectors_detected &&
> -	    num_connectors_enabled < INTEL_INFO(dev_priv)->num_pipes) {
> +	    num_connectors_enabled < INTEL_INFO(i915)->num_pipes) {
>  		DRM_DEBUG_KMS("fallback: Not all outputs enabled\n");
>  		DRM_DEBUG_KMS("Enabled: %i, detected: %i\n", num_connectors_enabled,
>  			      num_connectors_detected);
> @@ -540,7 +537,7 @@ static void intel_fbdev_destroy(struct intel_fbdev *ifbdev)
>   * Note we only support a single fb shared across pipes for boot (mostly for
>   * fbcon), so we just find the biggest and use that.
>   */
> -static bool intel_fbdev_init_bios(struct drm_device *dev,
> +static bool intel_fbdev_init_bios(struct drm_i915_private *i915,
>  				 struct intel_fbdev *ifbdev)
>  {
>  	struct intel_framebuffer *fb = NULL;
> @@ -549,7 +546,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
>  	unsigned int max_size = 0;
>  
>  	/* Find the largest fb */
> -	for_each_crtc(dev, crtc) {
> +	for_each_crtc(&i915->drm, crtc) {
>  		struct drm_i915_gem_object *obj =
>  			intel_fb_obj(crtc->primary->state->fb);
>  		intel_crtc = to_intel_crtc(crtc);
> @@ -574,7 +571,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
>  	}
>  
>  	/* Now make sure all the pipes will fit into it */
> -	for_each_crtc(dev, crtc) {
> +	for_each_crtc(&i915->drm, crtc) {
>  		unsigned int cur_size;
>  
>  		intel_crtc = to_intel_crtc(crtc);
> @@ -637,7 +634,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
>  	drm_framebuffer_get(&ifbdev->fb->base);
>  
>  	/* Final pass to check if any active pipes don't have fbs */
> -	for_each_crtc(dev, crtc) {
> +	for_each_crtc(&i915->drm, crtc) {
>  		intel_crtc = to_intel_crtc(crtc);
>  
>  		if (!crtc->state->active)
> @@ -659,39 +656,39 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
>  
>  static void intel_fbdev_suspend_worker(struct work_struct *work)
>  {
> -	intel_fbdev_set_suspend(&container_of(work,
> -					      struct drm_i915_private,
> -					      fbdev_suspend_work)->drm,
> +	intel_fbdev_set_suspend(container_of(work,
> +					     struct drm_i915_private,
> +					     fbdev_suspend_work),
>  				FBINFO_STATE_RUNNING,
>  				true);
>  }
>  
> -int intel_fbdev_init(struct drm_device *dev)
> +int intel_fbdev_init(struct drm_i915_private *i915)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(dev);
>  	struct intel_fbdev *ifbdev;
>  	int ret;
>  
> -	if (WARN_ON(INTEL_INFO(dev_priv)->num_pipes == 0))
> +	if (WARN_ON(INTEL_INFO(i915)->num_pipes == 0))

Also this patch highlights the brave new world of mixed dev_priv and i915
that we live....

Why not to just use dev_priv here and start mixing this i915 case here?
on the same file and on same patch?

I believe or we should convert at once all dev_priv to i915 or move
all back to dev_priv. But the mixed world confuses me a lot...

>  		return -ENODEV;
>  
>  	ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL);
>  	if (ifbdev == NULL)
>  		return -ENOMEM;
>  
> -	drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs);
> +	drm_fb_helper_prepare(&i915->drm,
> +			      &ifbdev->helper, &intel_fb_helper_funcs);
>  
> -	if (!intel_fbdev_init_bios(dev, ifbdev))
> +	if (!intel_fbdev_init_bios(i915, ifbdev))
>  		ifbdev->preferred_bpp = 32;
>  
> -	ret = drm_fb_helper_init(dev, &ifbdev->helper, 4);
> +	ret = drm_fb_helper_init(&i915->drm, &ifbdev->helper, 4);
>  	if (ret) {
>  		kfree(ifbdev);
>  		return ret;
>  	}
>  
> -	dev_priv->fbdev = ifbdev;
> -	INIT_WORK(&dev_priv->fbdev_suspend_work, intel_fbdev_suspend_worker);
> +	i915->fbdev = ifbdev;
> +	INIT_WORK(&i915->fbdev_suspend_work, intel_fbdev_suspend_worker);
>  
>  	drm_fb_helper_single_add_all_connectors(&ifbdev->helper);
>  
> @@ -708,9 +705,9 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie)
>  		intel_fbdev_unregister(to_i915(ifbdev->helper.dev));
>  }
>  
> -void intel_fbdev_initial_config_async(struct drm_device *dev)
> +void intel_fbdev_initial_config_async(struct drm_i915_private *i915)
>  {
> -	struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
> +	struct intel_fbdev *ifbdev = i915->fbdev;
>  
>  	if (!ifbdev)
>  		return;
> @@ -728,23 +725,23 @@ static void intel_fbdev_sync(struct intel_fbdev *ifbdev)
>  	ifbdev->cookie = 0;
>  }
>  
> -void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
> +void intel_fbdev_unregister(struct drm_i915_private *i915)
>  {
> -	struct intel_fbdev *ifbdev = dev_priv->fbdev;
> +	struct intel_fbdev *ifbdev = i915->fbdev;
>  
>  	if (!ifbdev)
>  		return;
>  
> -	cancel_work_sync(&dev_priv->fbdev_suspend_work);
> +	cancel_work_sync(&i915->fbdev_suspend_work);
>  	if (!current_is_async())
>  		intel_fbdev_sync(ifbdev);
>  
>  	drm_fb_helper_unregister_fbi(&ifbdev->helper);
>  }
>  
> -void intel_fbdev_fini(struct drm_i915_private *dev_priv)
> +void intel_fbdev_fini(struct drm_i915_private *i915)
>  {
> -	struct intel_fbdev *ifbdev = fetch_and_zero(&dev_priv->fbdev);
> +	struct intel_fbdev *ifbdev = fetch_and_zero(&i915->fbdev);
>  
>  	if (!ifbdev)
>  		return;
> @@ -752,10 +749,10 @@ void intel_fbdev_fini(struct drm_i915_private *dev_priv)
>  	intel_fbdev_destroy(ifbdev);
>  }
>  
> -void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
> +void intel_fbdev_set_suspend(struct drm_i915_private *i915,
> +			     int state, bool synchronous)
>  {
> -	struct drm_i915_private *dev_priv = to_i915(dev);
> -	struct intel_fbdev *ifbdev = dev_priv->fbdev;
> +	struct intel_fbdev *ifbdev = i915->fbdev;
>  	struct fb_info *info;
>  
>  	if (!ifbdev || !ifbdev->vma)
> @@ -772,7 +769,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
>  		 * ourselves, so only flush outstanding work upon suspend!
>  		 */
>  		if (state != FBINFO_STATE_RUNNING)
> -			flush_work(&dev_priv->fbdev_suspend_work);
> +			flush_work(&i915->fbdev_suspend_work);
>  		console_lock();
>  	} else {
>  		/*
> @@ -785,7 +782,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
>  			/* Don't block our own workqueue as this can
>  			 * be run in parallel with other i915.ko tasks.
>  			 */
> -			schedule_work(&dev_priv->fbdev_suspend_work);
> +			schedule_work(&i915->fbdev_suspend_work);
>  			return;
>  		}
>  	}
> @@ -814,9 +811,9 @@ void intel_fbdev_output_poll_changed(struct drm_device *dev)
>  		drm_fb_helper_hotplug_event(&ifbdev->helper);
>  }
>  
> -void intel_fbdev_restore_mode(struct drm_device *dev)
> +void intel_fbdev_restore_mode(struct drm_i915_private *i915)
>  {
> -	struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
> +	struct intel_fbdev *ifbdev = i915->fbdev;
>  
>  	if (!ifbdev)
>  		return;
> -- 
> 2.19.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently
  2018-09-13 21:11   ` Rodrigo Vivi
@ 2018-09-13 21:31     ` Chris Wilson
  2018-09-13 21:37       ` Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Chris Wilson @ 2018-09-13 21:31 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

Quoting Rodrigo Vivi (2018-09-13 22:11:11)
> On Thu, Sep 13, 2018 at 02:16:27PM +0100, Chris Wilson wrote:
> > Convert the interface (except for the drm core callback) to accept
> > drm_i915_private as that is our native type of the majority of
> > operations.
> 
> this message just tells about s/dev/dev_priv...

What is dev_priv? To me, it talks about i915.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently
  2018-09-13 21:31     ` Chris Wilson
@ 2018-09-13 21:37       ` Rodrigo Vivi
  0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2018-09-13 21:37 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Thu, Sep 13, 2018 at 10:31:18PM +0100, Chris Wilson wrote:
> Quoting Rodrigo Vivi (2018-09-13 22:11:11)
> > On Thu, Sep 13, 2018 at 02:16:27PM +0100, Chris Wilson wrote:
> > > Convert the interface (except for the drm core callback) to accept
> > > drm_i915_private as that is our native type of the majority of
> > > operations.
> >
> > this message just tells about s/dev/dev_priv...
>
> What is dev_priv? To me, it talks about i915.

well, 2 separated things:

1. when I wrote this I was just referring to that info_fbdev change...
that is not reflected here on this message I'm afraid and that
could be a separated patch...

----

2. about the other comment related to dev_priv vs i915
your patch has this:

-     ret = intel_fbdev_init(dev);
+     ret = intel_fbdev_init(dev_priv);

so, why not just i915 here as well?

> -Chris
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently
  2018-10-15 11:17 [PATCH 1/4] drm/i915/fbdev: Use an ordinary worker to avoid async deadlock Chris Wilson
@ 2018-10-15 11:17 ` Chris Wilson
  0 siblings, 0 replies; 13+ messages in thread
From: Chris Wilson @ 2018-10-15 11:17 UTC (permalink / raw)
  To: intel-gfx

Convert the interface (except for the drm core callback) to accept
drm_i915_private as that is our native type of the majority of
operations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_drv.c    |  10 +--
 drivers/gpu/drm/i915/intel_drv.h   |  28 +++----
 drivers/gpu/drm/i915/intel_fbdev.c | 117 ++++++++++++++---------------
 3 files changed, 77 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index baac35f698f9..c14855f167b9 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -692,7 +692,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
 	if (INTEL_INFO(dev_priv)->num_pipes == 0)
 		return 0;
 
-	ret = intel_fbdev_init(dev);
+	ret = intel_fbdev_init(dev_priv);
 	if (ret)
 		goto cleanup_gem;
 
@@ -1559,7 +1559,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
 	 * irqs are fully enabled. We do it last so that the async config
 	 * cannot run before the connectors are registered.
 	 */
-	intel_fbdev_initial_config_async(dev);
+	intel_fbdev_initial_config_async(dev_priv);
 
 	/*
 	 * We need to coordinate the hotplugs with the asynchronous fbdev
@@ -1828,7 +1828,7 @@ static int i915_driver_open(struct drm_device *dev, struct drm_file *file)
  */
 static void i915_driver_lastclose(struct drm_device *dev)
 {
-	intel_fbdev_restore_mode(dev);
+	intel_fbdev_restore_mode(to_i915(dev));
 	vga_switcheroo_process_delayed_switch();
 }
 
@@ -1924,7 +1924,7 @@ static int i915_drm_suspend(struct drm_device *dev)
 
 	intel_opregion_unregister(dev_priv);
 
-	intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED, true);
+	intel_fbdev_set_suspend(dev_priv, FBINFO_STATE_SUSPENDED, true);
 
 	dev_priv->suspend_count++;
 
@@ -2085,7 +2085,7 @@ static int i915_drm_resume(struct drm_device *dev)
 
 	intel_opregion_register(dev_priv);
 
-	intel_fbdev_set_suspend(dev, FBINFO_STATE_RUNNING, false);
+	intel_fbdev_set_suspend(dev_priv, FBINFO_STATE_RUNNING, false);
 
 	intel_opregion_notify_adapter(dev_priv, PCI_D0);
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 15bbf604724d..21a454d3a659 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1787,32 +1787,34 @@ bool intel_encoder_hotplug(struct intel_encoder *encoder,
 
 /* legacy fbdev emulation in intel_fbdev.c */
 #ifdef CONFIG_DRM_FBDEV_EMULATION
-extern int intel_fbdev_init(struct drm_device *dev);
-extern void intel_fbdev_initial_config_async(struct drm_device *dev);
-extern void intel_fbdev_unregister(struct drm_i915_private *dev_priv);
-extern void intel_fbdev_fini(struct drm_i915_private *dev_priv);
-extern void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
-extern void intel_fbdev_output_poll_changed(struct drm_device *dev);
-extern void intel_fbdev_restore_mode(struct drm_device *dev);
+int intel_fbdev_init(struct drm_i915_private *i915);
+void intel_fbdev_initial_config_async(struct drm_i915_private *i915);
+void intel_fbdev_unregister(struct drm_i915_private *i915);
+void intel_fbdev_fini(struct drm_i915_private *i915);
+void intel_fbdev_set_suspend(struct drm_i915_private *i915,
+			     int state, bool synchronous);
+void intel_fbdev_restore_mode(struct drm_i915_private *i915);
+void intel_fbdev_output_poll_changed(struct drm_device *dev);
 #else
-static inline int intel_fbdev_init(struct drm_device *dev)
+static inline int intel_fbdev_init(struct drm_i915_private *i915)
 {
 	return 0;
 }
 
-static inline void intel_fbdev_initial_config_async(struct drm_device *dev)
+static inline void intel_fbdev_initial_config_async(struct drm_i915_private *i915)
 {
 }
 
-static inline void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
+static inline void intel_fbdev_unregister(struct drm_i915_private *i915)
 {
 }
 
-static inline void intel_fbdev_fini(struct drm_i915_private *dev_priv)
+static inline void intel_fbdev_fini(struct drm_i915_private *i915)
 {
 }
 
-static inline void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
+static inline void intel_fbdev_set_suspend(struct drm_i915_private *i915,
+					   int state, bool synchronous)
 {
 }
 
@@ -1820,7 +1822,7 @@ static inline void intel_fbdev_output_poll_changed(struct drm_device *dev)
 {
 }
 
-static inline void intel_fbdev_restore_mode(struct drm_device *dev)
+static inline void intel_fbdev_restore_mode(struct drm_i915_private *i915)
 {
 }
 #endif
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index 265cc947aede..a75082813669 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -53,11 +53,14 @@ static void intel_fbdev_invalidate(struct intel_fbdev *ifbdev)
 	intel_fb_obj_invalidate(obj, origin);
 }
 
+static struct intel_fbdev *info_to_fbdev(struct fb_info *info)
+{
+	return container_of(info->par, struct intel_fbdev, helper);
+}
+
 static int intel_fbdev_set_par(struct fb_info *info)
 {
-	struct drm_fb_helper *fb_helper = info->par;
-	struct intel_fbdev *ifbdev =
-		container_of(fb_helper, struct intel_fbdev, helper);
+	struct intel_fbdev *ifbdev = info_to_fbdev(info);
 	int ret;
 
 	ret = drm_fb_helper_set_par(info);
@@ -69,9 +72,7 @@ static int intel_fbdev_set_par(struct fb_info *info)
 
 static int intel_fbdev_blank(int blank, struct fb_info *info)
 {
-	struct drm_fb_helper *fb_helper = info->par;
-	struct intel_fbdev *ifbdev =
-		container_of(fb_helper, struct intel_fbdev, helper);
+	struct intel_fbdev *ifbdev = info_to_fbdev(info);
 	int ret;
 
 	ret = drm_fb_helper_blank(blank, info);
@@ -84,9 +85,7 @@ static int intel_fbdev_blank(int blank, struct fb_info *info)
 static int intel_fbdev_pan_display(struct fb_var_screeninfo *var,
 				   struct fb_info *info)
 {
-	struct drm_fb_helper *fb_helper = info->par;
-	struct intel_fbdev *ifbdev =
-		container_of(fb_helper, struct intel_fbdev, helper);
+	struct intel_fbdev *ifbdev = info_to_fbdev(info);
 	int ret;
 
 	ret = drm_fb_helper_pan_display(var, info);
@@ -112,11 +111,10 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
 {
 	struct intel_fbdev *ifbdev =
 		container_of(helper, struct intel_fbdev, helper);
-	struct drm_framebuffer *fb;
-	struct drm_device *dev = helper->dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct drm_i915_private *i915 = to_i915(helper->dev);
 	struct drm_mode_fb_cmd2 mode_cmd = {};
 	struct drm_i915_gem_object *obj;
+	struct drm_framebuffer *fb;
 	int size, ret;
 
 	/* we don't do packed 24bpp */
@@ -138,10 +136,10 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
 	 * important and we should probably use that space with FBC or other
 	 * features. */
 	obj = NULL;
-	if (size * 2 < dev_priv->stolen_usable_size)
-		obj = i915_gem_object_create_stolen(dev_priv, size);
+	if (size * 2 < i915->stolen_usable_size)
+		obj = i915_gem_object_create_stolen(i915, size);
 	if (obj == NULL)
-		obj = i915_gem_object_create(dev_priv, size);
+		obj = i915_gem_object_create(i915, size);
 	if (IS_ERR(obj)) {
 		DRM_ERROR("failed to allocate framebuffer\n");
 		ret = PTR_ERR(obj);
@@ -169,16 +167,14 @@ static int intelfb_create(struct drm_fb_helper *helper,
 {
 	struct intel_fbdev *ifbdev =
 		container_of(helper, struct intel_fbdev, helper);
+	struct drm_i915_private *i915 = to_i915(helper->dev);
 	struct intel_framebuffer *intel_fb = ifbdev->fb;
-	struct drm_device *dev = helper->dev;
-	struct drm_i915_private *dev_priv = to_i915(dev);
-	struct pci_dev *pdev = dev_priv->drm.pdev;
-	struct i915_ggtt *ggtt = &dev_priv->ggtt;
+	struct i915_ggtt *ggtt = &i915->ggtt;
 	const struct i915_ggtt_view view = {
 		.type = I915_GGTT_VIEW_NORMAL,
 	};
-	struct fb_info *info;
 	struct drm_framebuffer *fb;
+	struct fb_info *info;
 	struct i915_vma *vma;
 	unsigned long flags = 0;
 	bool prealloc = false;
@@ -208,8 +204,8 @@ static int intelfb_create(struct drm_fb_helper *helper,
 		sizes->fb_height = intel_fb->base.height;
 	}
 
-	mutex_lock(&dev->struct_mutex);
-	intel_runtime_pm_get(dev_priv);
+	mutex_lock(&i915->drm.struct_mutex);
+	intel_runtime_pm_get(i915);
 
 	/* Pin the GGTT vma for our access via info->screen_base.
 	 * This also validates that any existing fb inherited from the
@@ -241,10 +237,11 @@ static int intelfb_create(struct drm_fb_helper *helper,
 	info->fbops = &intelfb_ops;
 
 	/* setup aperture base/size for vesafb takeover */
-	info->apertures->ranges[0].base = dev->mode_config.fb_base;
+	info->apertures->ranges[0].base = i915->drm.mode_config.fb_base;
 	info->apertures->ranges[0].size = ggtt->mappable_end;
 
-	info->fix.smem_start = dev->mode_config.fb_base + i915_ggtt_offset(vma);
+	info->fix.smem_start =
+		i915->drm.mode_config.fb_base + i915_ggtt_offset(vma);
 	info->fix.smem_len = vma->node.size;
 
 	vaddr = i915_vma_pin_iomap(vma);
@@ -276,16 +273,16 @@ static int intelfb_create(struct drm_fb_helper *helper,
 	ifbdev->vma = vma;
 	ifbdev->vma_flags = flags;
 
-	intel_runtime_pm_put(dev_priv);
-	mutex_unlock(&dev->struct_mutex);
-	vga_switcheroo_client_fb_set(pdev, info);
+	intel_runtime_pm_put(i915);
+	mutex_unlock(&i915->drm.struct_mutex);
+	vga_switcheroo_client_fb_set(i915->drm.pdev, info);
 	return 0;
 
 out_unpin:
 	intel_unpin_fb_vma(vma, flags);
 out_unlock:
-	intel_runtime_pm_put(dev_priv);
-	mutex_unlock(&dev->struct_mutex);
+	intel_runtime_pm_put(i915);
+	mutex_unlock(&i915->drm.struct_mutex);
 	return ret;
 }
 
@@ -334,7 +331,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 				    struct drm_fb_offset *offsets,
 				    bool *enabled, int width, int height)
 {
-	struct drm_i915_private *dev_priv = to_i915(fb_helper->dev);
+	struct drm_i915_private *i915 = to_i915(fb_helper->dev);
 	unsigned long conn_configured, conn_seq, mask;
 	unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG);
 	int i, j;
@@ -483,7 +480,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
 	 * fbdev helper library.
 	 */
 	if (num_connectors_enabled != num_connectors_detected &&
-	    num_connectors_enabled < INTEL_INFO(dev_priv)->num_pipes) {
+	    num_connectors_enabled < INTEL_INFO(i915)->num_pipes) {
 		DRM_DEBUG_KMS("fallback: Not all outputs enabled\n");
 		DRM_DEBUG_KMS("Enabled: %i, detected: %i\n", num_connectors_enabled,
 			      num_connectors_detected);
@@ -539,7 +536,7 @@ static void intel_fbdev_destroy(struct intel_fbdev *ifbdev)
  * Note we only support a single fb shared across pipes for boot (mostly for
  * fbcon), so we just find the biggest and use that.
  */
-static bool intel_fbdev_init_bios(struct drm_device *dev,
+static bool intel_fbdev_init_bios(struct drm_i915_private *i915,
 				 struct intel_fbdev *ifbdev)
 {
 	struct intel_framebuffer *fb = NULL;
@@ -548,7 +545,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 	unsigned int max_size = 0;
 
 	/* Find the largest fb */
-	for_each_crtc(dev, crtc) {
+	for_each_crtc(&i915->drm, crtc) {
 		struct drm_i915_gem_object *obj =
 			intel_fb_obj(crtc->primary->state->fb);
 		intel_crtc = to_intel_crtc(crtc);
@@ -573,7 +570,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 	}
 
 	/* Now make sure all the pipes will fit into it */
-	for_each_crtc(dev, crtc) {
+	for_each_crtc(&i915->drm, crtc) {
 		unsigned int cur_size;
 
 		intel_crtc = to_intel_crtc(crtc);
@@ -636,7 +633,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 	drm_framebuffer_get(&ifbdev->fb->base);
 
 	/* Final pass to check if any active pipes don't have fbs */
-	for_each_crtc(dev, crtc) {
+	for_each_crtc(&i915->drm, crtc) {
 		intel_crtc = to_intel_crtc(crtc);
 
 		if (!crtc->state->active)
@@ -658,9 +655,9 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
 
 static void intel_fbdev_suspend_worker(struct work_struct *work)
 {
-	intel_fbdev_set_suspend(&container_of(work,
-					      struct drm_i915_private,
-					      fbdev_suspend_work)->drm,
+	intel_fbdev_set_suspend(container_of(work,
+					     struct drm_i915_private,
+					     fbdev_suspend_work),
 				FBINFO_STATE_RUNNING,
 				true);
 }
@@ -675,13 +672,12 @@ static void intel_fbdev_initial_config(struct work_struct *work)
 		intel_fbdev_unregister(to_i915(ifbdev->helper.dev));
 }
 
-int intel_fbdev_init(struct drm_device *dev)
+int intel_fbdev_init(struct drm_i915_private *i915)
 {
-	struct drm_i915_private *dev_priv = to_i915(dev);
 	struct intel_fbdev *ifbdev;
 	int ret;
 
-	if (WARN_ON(INTEL_INFO(dev_priv)->num_pipes == 0))
+	if (WARN_ON(INTEL_INFO(i915)->num_pipes == 0))
 		return -ENODEV;
 
 	ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL);
@@ -690,28 +686,29 @@ int intel_fbdev_init(struct drm_device *dev)
 
 	INIT_WORK(&ifbdev->work, intel_fbdev_initial_config);
 
-	drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs);
+	drm_fb_helper_prepare(&i915->drm,
+			      &ifbdev->helper, &intel_fb_helper_funcs);
 
-	if (!intel_fbdev_init_bios(dev, ifbdev))
+	if (!intel_fbdev_init_bios(i915, ifbdev))
 		ifbdev->preferred_bpp = 32;
 
-	ret = drm_fb_helper_init(dev, &ifbdev->helper, 4);
+	ret = drm_fb_helper_init(&i915->drm, &ifbdev->helper, 4);
 	if (ret) {
 		kfree(ifbdev);
 		return ret;
 	}
 
-	dev_priv->fbdev = ifbdev;
-	INIT_WORK(&dev_priv->fbdev_suspend_work, intel_fbdev_suspend_worker);
+	i915->fbdev = ifbdev;
+	INIT_WORK(&i915->fbdev_suspend_work, intel_fbdev_suspend_worker);
 
 	drm_fb_helper_single_add_all_connectors(&ifbdev->helper);
 
 	return 0;
 }
 
-void intel_fbdev_initial_config_async(struct drm_device *dev)
+void intel_fbdev_initial_config_async(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 
 	if (!ifbdev)
 		return;
@@ -728,22 +725,22 @@ static void intel_fbdev_sync(struct intel_fbdev *ifbdev)
 	ifbdev->work.func = NULL;
 }
 
-void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
+void intel_fbdev_unregister(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = dev_priv->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 
 	if (!ifbdev)
 		return;
 
-	cancel_work_sync(&dev_priv->fbdev_suspend_work);
+	cancel_work_sync(&i915->fbdev_suspend_work);
 	intel_fbdev_sync(ifbdev);
 
 	drm_fb_helper_unregister_fbi(&ifbdev->helper);
 }
 
-void intel_fbdev_fini(struct drm_i915_private *dev_priv)
+void intel_fbdev_fini(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = fetch_and_zero(&dev_priv->fbdev);
+	struct intel_fbdev *ifbdev = fetch_and_zero(&i915->fbdev);
 
 	if (!ifbdev)
 		return;
@@ -751,10 +748,10 @@ void intel_fbdev_fini(struct drm_i915_private *dev_priv)
 	intel_fbdev_destroy(ifbdev);
 }
 
-void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
+void intel_fbdev_set_suspend(struct drm_i915_private *i915,
+			     int state, bool synchronous)
 {
-	struct drm_i915_private *dev_priv = to_i915(dev);
-	struct intel_fbdev *ifbdev = dev_priv->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 	struct fb_info *info;
 
 	if (!ifbdev || !ifbdev->vma)
@@ -771,7 +768,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
 		 * ourselves, so only flush outstanding work upon suspend!
 		 */
 		if (state != FBINFO_STATE_RUNNING)
-			flush_work(&dev_priv->fbdev_suspend_work);
+			flush_work(&i915->fbdev_suspend_work);
 		console_lock();
 	} else {
 		/*
@@ -784,7 +781,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
 			/* Don't block our own workqueue as this can
 			 * be run in parallel with other i915.ko tasks.
 			 */
-			schedule_work(&dev_priv->fbdev_suspend_work);
+			schedule_work(&i915->fbdev_suspend_work);
 			return;
 		}
 	}
@@ -813,9 +810,9 @@ void intel_fbdev_output_poll_changed(struct drm_device *dev)
 		drm_fb_helper_hotplug_event(&ifbdev->helper);
 }
 
-void intel_fbdev_restore_mode(struct drm_device *dev)
+void intel_fbdev_restore_mode(struct drm_i915_private *i915)
 {
-	struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+	struct intel_fbdev *ifbdev = i915->fbdev;
 
 	if (!ifbdev)
 		return;
-- 
2.19.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2018-10-15 11:17 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-13 13:16 [PATCH 1/4] drm/i915: Mark up a couple of KMS debug messages as such Chris Wilson
2018-09-13 13:16 ` [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently Chris Wilson
2018-09-13 21:11   ` Rodrigo Vivi
2018-09-13 21:31     ` Chris Wilson
2018-09-13 21:37       ` Rodrigo Vivi
2018-09-13 13:16 ` [PATCH 3/4] drm/i915: Disable displays at the user's request Chris Wilson
2018-09-13 13:19   ` Chris Wilson
2018-09-13 13:16 ` [PATCH 4/4] HAX: force i915.disable_display=1 Chris Wilson
2018-09-13 13:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Mark up a couple of KMS debug messages as such Patchwork
2018-09-13 13:37 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-09-13 13:53 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-09-13 21:04 ` [PATCH 1/4] " Rodrigo Vivi
2018-10-15 11:17 [PATCH 1/4] drm/i915/fbdev: Use an ordinary worker to avoid async deadlock Chris Wilson
2018-10-15 11:17 ` [PATCH 2/4] drm/i915/fbdev: Use i915/drm_i915_private consistently Chris Wilson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.