[PATCH 3/4] drm: Remove the implicit drm_kms_helper_poll_enable()
Chris Wilson
chris at chris-wilson.co.uk
Sun Nov 26 23:18:04 UTC 2017
Make drm_kms_helper_poll_enable() an explicit separate step from
drm_kms_helper_poll_init() that must be performed by the driver. As
already found by nouveau and discovered by i915, automatically enabling
the output_poll_execute worker introduces a race condition into driver
loading where a hotplug event may generated before the driver is setup.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Alex Deucher <alexander.deucher at amd.com>
Cc: "Christian König" <christian.koenig at amd.com>
Cc: David Airlie <airlied at linux.ie>
Cc: Alexey Brodkin <abrodkin at synopsys.com>
Cc: Liviu Dudau <liviu.dudau at arm.com>
Cc: Brian Starkey <brian.starkey at arm.com>
Cc: Mali DP Maintainers <malidp at foss.arm.com>
Cc: Russell King <linux at armlinux.org.uk>
Cc: Boris Brezillon <boris.brezillon at free-electrons.com>
Cc: Daniel Vetter <daniel.vetter at intel.com>
Cc: Jani Nikula <jani.nikula at linux.intel.com>
Cc: Gustavo Padovan <gustavo at padovan.org>
Cc: Sean Paul <seanpaul at chromium.org>
Cc: Inki Dae <inki.dae at samsung.com>
Cc: Joonyoung Shim <jy0922.shim at samsung.com>
Cc: Seung-Woo Kim <sw0312.kim at samsung.com>
Cc: Kyungmin Park <kyungmin.park at samsung.com>
Cc: Kukjin Kim <kgene at kernel.org>
Cc: Krzysztof Kozlowski <krzk at kernel.org>
Cc: Stefan Agner <stefan at agner.ch>
Cc: Alison Wang <alison.wang at freescale.com>
Cc: Patrik Jakobsson <patrik.r.jakobsson at gmail.com>
Cc: Xinliang Liu <z.liuxinliang at hisilicon.com>
Cc: Rongrong Zou <zourongrong at gmail.com>
Cc: Xinwei Kong <kong.kongxinwei at hisilicon.com>
Cc: Chen Feng <puck.chen at hisilicon.com>
Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
Cc: Philipp Zabel <p.zabel at pengutronix.de>
Cc: CK Hu <ck.hu at mediatek.com>
Cc: Matthias Brugger <matthias.bgg at gmail.com>
Cc: Neil Armstrong <narmstrong at baylibre.com>
Cc: Carlo Caione <carlo at caione.org>
Cc: Kevin Hilman <khilman at baylibre.com>
Cc: Rob Clark <robdclark at gmail.com>
Cc: Marek Vasut <marex at denx.de>
Cc: Ben Skeggs <bskeggs at redhat.com>
Cc: Tomi Valkeinen <tomi.valkeinen at ti.com>
Cc: Eric Anholt <eric at anholt.net>
Cc: Dave Airlie <airlied at redhat.com>
Cc: Gerd Hoffmann <kraxel at redhat.com>
Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Cc: Mark Yao <mark.yao at rock-chips.com>
Cc: Heiko Stuebner <heiko at sntech.de>
Cc: Benjamin Gaignard <benjamin.gaignard at linaro.org>
Cc: Vincent Abriou <vincent.abriou at st.com>
Cc: Yannick Fertre <yannick.fertre at st.com>
Cc: Philippe Cornu <philippe.cornu at st.com>
Cc: Maxime Ripard <maxime.ripard at free-electrons.com>
Cc: Chen-Yu Tsai <wens at csie.org>
Cc: Thierry Reding <thierry.reding at gmail.com>
Cc: Jonathan Hunter <jonathanh at nvidia.com>
Cc: Jyri Sarha <jsarha at ti.com>
Cc: Linus Walleij <linus.walleij at linaro.org>
Cc: Shawn Guo <shawnguo at kernel.org>
Cc: "Michel Dänzer" <michel.daenzer at amd.com>
Cc: Mario Kleiner <mario.kleiner.de at gmail.com>
Cc: "Ville Syrjälä" <ville.syrjala at linux.intel.com>
Cc: Peter Rosin <peda at axentia.se>
Cc: Ken Wang <Qingqing.Wang at amd.com>
Cc: Junwei Zhang <Jerry.Zhang at amd.com>
Cc: Xiaojie Yuan <Xiaojie.Yuan at amd.com>
Cc: "Xiangliang.Yu" <Xiangliang.Yu at amd.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
Cc: Thomas Gleixner <tglx at linutronix.de>
Cc: "Noralf Trønnes" <noralf at tronnes.org>
Cc: Gabriel Krisman Bertazi <krisman at collabora.co.uk>
Cc: Dan Carpenter <dan.carpenter at oracle.com>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: Rob Herring <robh at kernel.org>
Cc: Robert Tarasov <tutankhamen at chromium.org>
Cc: amd-gfx at lists.freedesktop.org
Cc: dri-devel at lists.freedesktop.org
---
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 1 +
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 1 +
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 1 +
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 1 +
drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 1 +
drivers/gpu/drm/arc/arcpgu_drv.c | 1 +
drivers/gpu/drm/arm/hdlcd_drv.c | 1 +
drivers/gpu/drm/arm/malidp_drv.c | 1 +
drivers/gpu/drm/armada/armada_drv.c | 1 +
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 1 +
drivers/gpu/drm/drm_probe_helper.c | 10 +++++-----
drivers/gpu/drm/exynos/exynos_drm_drv.c | 1 +
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c | 1 +
drivers/gpu/drm/gma500/psb_drv.c | 1 +
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 1 +
drivers/gpu/drm/i915/i915_drv.c | 1 +
drivers/gpu/drm/imx/imx-drm-core.c | 1 +
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 1 +
drivers/gpu/drm/meson/meson_drv.c | 1 +
drivers/gpu/drm/msm/msm_drv.c | 1 +
drivers/gpu/drm/mxsfb/mxsfb_drv.c | 1 +
drivers/gpu/drm/nouveau/nouveau_display.c | 1 -
drivers/gpu/drm/omapdrm/omap_drv.c | 1 +
drivers/gpu/drm/pl111/pl111_drv.c | 1 +
drivers/gpu/drm/qxl/qxl_drv.c | 1 +
drivers/gpu/drm/radeon/radeon_display.c | 1 +
drivers/gpu/drm/rcar-du/rcar_du_kms.c | 1 +
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 1 +
drivers/gpu/drm/shmobile/shmob_drm_kms.c | 1 +
drivers/gpu/drm/sti/sti_drv.c | 1 +
drivers/gpu/drm/stm/drv.c | 1 +
drivers/gpu/drm/sun4i/sun4i_drv.c | 1 +
drivers/gpu/drm/tegra/drm.c | 1 +
drivers/gpu/drm/tilcdc/tilcdc_drv.c | 1 +
drivers/gpu/drm/tve200/tve200_drv.c | 1 +
drivers/gpu/drm/udl/udl_main.c | 1 +
drivers/gpu/drm/vc4/vc4_kms.c | 1 +
drivers/gpu/drm/zte/zx_drm_drv.c | 1 +
38 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index 4e519dc42916..8f5e018084a1 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -2854,6 +2854,7 @@ static int dce_v10_0_sw_init(void *handle)
return r;
drm_kms_helper_poll_init(adev->ddev);
+ drm_kms_helper_poll_enable(adev->ddev);
adev->mode_info.mode_config_initialized = true;
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index 11edc75edaa9..c1b5dd62f4fa 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -2970,6 +2970,7 @@ static int dce_v11_0_sw_init(void *handle)
return r;
drm_kms_helper_poll_init(adev->ddev);
+ drm_kms_helper_poll_enable(adev->ddev);
adev->mode_info.mode_config_initialized = true;
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index a51e35f824a1..977fcbf83391 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -2724,6 +2724,7 @@ static int dce_v6_0_sw_init(void *handle)
return r;
drm_kms_helper_poll_init(adev->ddev);
+ drm_kms_helper_poll_enable(adev->ddev);
return r;
}
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index 9cf14b8b2db9..38047a4c4b92 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -2754,6 +2754,7 @@ static int dce_v8_0_sw_init(void *handle)
return r;
drm_kms_helper_poll_init(adev->ddev);
+ drm_kms_helper_poll_enable(adev->ddev);
adev->mode_info.mode_config_initialized = true;
return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
index a8829af120c1..de7ecc106ab7 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
@@ -423,6 +423,7 @@ static int dce_virtual_sw_init(void *handle)
}
drm_kms_helper_poll_init(adev->ddev);
+ drm_kms_helper_poll_enable(adev->ddev);
adev->mode_info.mode_config_initialized = true;
return 0;
diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
index f067de4e1e82..90da6a82f762 100644
--- a/drivers/gpu/drm/arc/arcpgu_drv.c
+++ b/drivers/gpu/drm/arc/arcpgu_drv.c
@@ -112,6 +112,7 @@ static int arcpgu_load(struct drm_device *drm)
drm_mode_config_reset(drm);
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
arcpgu->fbdev = drm_fbdev_cma_init(drm, 16,
drm->mode_config.num_connector);
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index 59b21bdc0c30..010a663fd27b 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -319,6 +319,7 @@ static int hdlcd_drm_bind(struct device *dev)
drm_mode_config_reset(drm);
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
hdlcd->fbdev = drm_fbdev_cma_init(drm, 32,
drm->mode_config.num_connector);
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index b8944666a18f..dcafe6480ec9 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -636,6 +636,7 @@ static int malidp_bind(struct device *dev)
}
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
ret = drm_dev_register(drm, 0);
if (ret)
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index e857b88a9799..cbd431bb0e8d 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -164,6 +164,7 @@ static int armada_drm_bind(struct device *dev)
goto err_comp;
drm_kms_helper_poll_init(&priv->drm);
+ drm_kms_helper_poll_enable(&priv->drm);
ret = drm_dev_register(&priv->drm, 0);
if (ret)
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index c6e8061ffcfc..184e779599b9 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -671,6 +671,7 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
dc->fbdev = NULL;
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
return 0;
diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index 6dc2dde5b672..96e71928bd06 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -230,9 +230,11 @@ void drm_kms_helper_poll_enable(struct drm_device *dev)
struct drm_connector_list_iter conn_iter;
unsigned long delay = DRM_OUTPUT_POLL_PERIOD;
- if (!dev->mode_config.poll_enabled || !drm_kms_helper_poll)
+ if (!drm_kms_helper_poll || dev->mode_config.poll_enabled)
return;
+ dev->mode_config.poll_enabled = true;
+
drm_connector_list_iter_begin(dev, &conn_iter);
drm_for_each_connector_iter(connector, &conn_iter) {
if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT |
@@ -697,10 +699,8 @@ EXPORT_SYMBOL(drm_kms_helper_poll_disable);
*/
void drm_kms_helper_poll_init(struct drm_device *dev)
{
- INIT_DELAYED_WORK(&dev->mode_config.output_poll_work, output_poll_execute);
- dev->mode_config.poll_enabled = true;
-
- drm_kms_helper_poll_enable(dev);
+ INIT_DELAYED_WORK(&dev->mode_config.output_poll_work,
+ output_poll_execute);
}
EXPORT_SYMBOL(drm_kms_helper_poll_init);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 82b72425a42f..3c0057148491 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -383,6 +383,7 @@ static int exynos_drm_bind(struct device *dev)
/* init kms poll for handling hpd */
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
ret = exynos_drm_fbdev_init(drm);
if (ret)
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..54ea68bacdbf 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c
@@ -50,6 +50,7 @@ int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *fsl_dev)
drm_mode_config_reset(fsl_dev->drm);
drm_kms_helper_poll_init(fsl_dev->drm);
+ drm_kms_helper_poll_enable(fsl_dev->drm);
return 0;
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index 8f5cc1f471cd..6b3660ad9519 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -378,6 +378,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
psb_modeset_init(dev);
psb_fbdev_init(dev);
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
/* Only add backlight support if we have LVDS output */
list_for_each_entry(connector, &dev->mode_config.connector_list,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index ddb0403f1975..0d40b7f0930a 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -116,6 +116,7 @@ static int kirin_drm_kms_init(struct drm_device *dev)
/* init kms poll for handling hpd */
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
priv->fbdev = drm_fbdev_cma_init(dev, 32,
dev->mode_config.num_connector);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index a45f0e30a740..1a96b8b91891 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -694,6 +694,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
intel_hpd_init(dev_priv);
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
return 0;
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 93c7e3f9b4a8..29a239d81bd1 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -300,6 +300,7 @@ static int imx_drm_bind(struct device *dev)
#endif
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
ret = drm_dev_register(drm, 0);
if (ret)
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index a2ca90fc403c..2c11f8cfa6d3 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -255,6 +255,7 @@ static int mtk_drm_kms_init(struct drm_device *drm)
goto err_component_unbind;
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
drm_mode_config_reset(drm);
return 0;
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 3b804fdaf7a0..d06a7999d124 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -262,6 +262,7 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
}
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
platform_set_drvdata(pdev, priv);
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 0a3ea3034e39..65b70cba2264 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -482,6 +482,7 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
goto fail;
drm_kms_helper_poll_init(ddev);
+ drm_kms_helper_poll_enable(ddev);
return 0;
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 1207ffe36250..38ef9800044c 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -222,6 +222,7 @@ static int mxsfb_load(struct drm_device *drm, unsigned long flags)
}
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
mxsfb->fbdev = drm_fbdev_cma_init(drm, 32,
drm->mode_config.num_connector);
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index 2e7785f49e6d..e91a9b702dfd 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -531,7 +531,6 @@ nouveau_display_create(struct drm_device *dev)
dev->mode_config.async_page_flip = true;
drm_kms_helper_poll_init(dev);
- drm_kms_helper_poll_disable(dev);
if (nouveau_modeset != 2 && drm->vbios.dcb.entries) {
static const u16 oclass[] = {
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index cdf5b0601eba..2ead72bff5db 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -614,6 +614,7 @@ static int pdev_probe(struct platform_device *pdev)
priv->fbdev = omap_fbdev_init(ddev);
drm_kms_helper_poll_init(ddev);
+ drm_kms_helper_poll_enable(ddev);
omap_modeset_enable_external_hpd();
/*
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 201d57d5cb54..ad486b6aab28 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -141,6 +141,7 @@ static int pl111_modeset_init(struct drm_device *dev)
dev->mode_config.num_connector);
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
goto finish;
diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
index 2445e75cf7ea..40657cb64cdd 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.c
+++ b/drivers/gpu/drm/qxl/qxl_drv.c
@@ -87,6 +87,7 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto unload;
drm_kms_helper_poll_init(&qdev->ddev);
+ drm_kms_helper_poll_enable(&qdev->ddev);
/* Complete initialization. */
ret = drm_dev_register(&qdev->ddev, ent->driver_data);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index ddfe91efa61e..8945f6b4446b 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -1660,6 +1660,7 @@ int radeon_modeset_init(struct radeon_device *rdev)
radeon_fbdev_init(rdev);
drm_kms_helper_poll_init(rdev->ddev);
+ drm_kms_helper_poll_enable(rdev->ddev);
/* do pm late init */
ret = radeon_pm_late_init(rdev);
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
index 566d1a948c8f..a3a9b454b217 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
@@ -627,6 +627,7 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
drm_mode_config_reset(dev);
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
if (dev->mode_config.num_connector) {
fbdev = drm_fbdev_cma_init(dev, 32,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 76d63de5921d..3a85d5a82328 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -167,6 +167,7 @@ static int rockchip_drm_bind(struct device *dev)
/* init kms poll for handling hpd */
drm_kms_helper_poll_init(drm_dev);
+ drm_kms_helper_poll_enable(drm_dev);
ret = drm_dev_register(drm_dev, 0);
if (ret)
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_kms.c b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
index d36919b14da7..52c269552c6c 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_kms.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
@@ -148,6 +148,7 @@ int shmob_drm_modeset_init(struct shmob_drm_device *sdev)
shmob_drm_connector_create(sdev, &sdev->encoder.encoder);
drm_kms_helper_poll_init(sdev->ddev);
+ drm_kms_helper_poll_enable(sdev->ddev);
sdev->ddev->mode_config.min_width = 0;
sdev->ddev->mode_config.min_height = 0;
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 9e9343101738..b281991689b3 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -222,6 +222,7 @@ static int sti_init(struct drm_device *ddev)
sti_mode_config_init(ddev);
drm_kms_helper_poll_init(ddev);
+ drm_kms_helper_poll_enable(ddev);
return 0;
}
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index c857663eafc2..141b7a3be0e3 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -110,6 +110,7 @@ static int drv_load(struct drm_device *ddev)
drm_mode_config_reset(ddev);
drm_kms_helper_poll_init(ddev);
+ drm_kms_helper_poll_enable(ddev);
if (ddev->mode_config.num_connector) {
ldev = ddev->dev_private;
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 75c76cdd82bc..fff0cdf7a433 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -135,6 +135,7 @@ static int sun4i_drv_bind(struct device *dev)
/* Enable connectors polling */
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
ret = drm_dev_register(drm, 0);
if (ret)
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 943bdf88c4a2..d99fd2eba61a 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -196,6 +196,7 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags)
goto config;
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
err = host1x_device_init(device);
if (err < 0)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index bc4feb3a84b9..3a5f423eef7b 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -413,6 +413,7 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
}
drm_kms_helper_poll_init(ddev);
+ drm_kms_helper_poll_enable(ddev);
ret = drm_dev_register(ddev, 0);
if (ret)
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index bd6c9454d767..13e66e295e63 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -133,6 +133,7 @@ static int tve200_modeset_init(struct drm_device *dev)
priv->fbdev = drm_fbdev_cma_init(dev, 16,
dev->mode_config.num_connector);
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
goto finish;
diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index f1ec4528a73e..c138dea5b741 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -352,6 +352,7 @@ int udl_driver_load(struct drm_device *dev, unsigned long flags)
goto err_fb;
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
return 0;
err_fb:
diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
index 50c4959b5bd3..c9ffdddc7591 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -232,6 +232,7 @@ int vc4_kms_load(struct drm_device *dev)
}
drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_enable(dev);
return 0;
}
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index e8b8266c0cde..293553552416 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -124,6 +124,7 @@ static int zx_drm_bind(struct device *dev)
drm_mode_config_reset(drm);
drm_kms_helper_poll_init(drm);
+ drm_kms_helper_poll_enable(drm);
priv->fbdev = drm_fbdev_cma_init(drm, 32,
drm->mode_config.num_connector);
--
2.15.0
More information about the Intel-gfx-trybot
mailing list