linux-sunxi.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled
@ 2021-06-22 14:09 Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 01/22] drm/amdgpu: Track IRQ state in local device state Thomas Zimmermann
                   ` (23 more replies)
  0 siblings, 24 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

Remove references to struct drm_device.irq_enabled from modern
DRM drivers and core.

KMS drivers enable IRQs for their devices internally. They don't
have to keep track of the IRQ state via irq_enabled. For vblanking,
it's cleaner to test for vblanking support directly than to test
for enabled IRQs.

This used to be a single patch, [1] but it's now a full series.

The first 3 patches replace instances of irq_enabled that are not
required.

Patch 4 fixes vblank ioctls to actually test for vblank support
instead of IRQs.

THe rest of the patchset removes irq_enabled from all non-legacy
drivers. The only exception is omapdrm, which has an internal
dpendency on the field's value. For this drivers, the state gets
duplicated internally.

With the patchset applied, drivers can later switch over to plain
Linux IRQ interfaces and DRM's IRQ midlayer can be declared legacy.

v2:
	* keep the original test for legacy drivers in
	  drm_wait_vblank_ioctl() (Daniel)

[1] https://lore.kernel.org/dri-devel/20210608090301.4752-1-tzimmermann@suse.de/

Thomas Zimmermann (22):
  drm/amdgpu: Track IRQ state in local device state
  drm/hibmc: Call drm_irq_uninstall() unconditionally
  drm/radeon: Track IRQ state in local device state
  drm: Don't test for IRQ support in VBLANK ioctls
  drm/komeda: Don't set struct drm_device.irq_enabled
  drm/malidp: Don't set struct drm_device.irq_enabled
  drm/exynos: Don't set struct drm_device.irq_enabled
  drm/kirin: Don't set struct drm_device.irq_enabled
  drm/imx: Don't set struct drm_device.irq_enabled
  drm/mediatek: Don't set struct drm_device.irq_enabled
  drm/nouveau: Don't set struct drm_device.irq_enabled
  drm/omapdrm: Track IRQ state in local device state
  drm/rockchip: Don't set struct drm_device.irq_enabled
  drm/sti: Don't set struct drm_device.irq_enabled
  drm/stm: Don't set struct drm_device.irq_enabled
  drm/sun4i: Don't set struct drm_device.irq_enabled
  drm/tegra: Don't set struct drm_device.irq_enabled
  drm/tidss: Don't use struct drm_device.irq_enabled
  drm/vc4: Don't set struct drm_device.irq_enabled
  drm/vmwgfx: Don't set struct drm_device.irq_enabled
  drm/xlnx: Don't set struct drm_device.irq_enabled
  drm/zte: Don't set struct drm_device.irq_enabled

 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c         |  6 +++---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c |  4 ----
 drivers/gpu/drm/arm/malidp_drv.c                |  4 ----
 drivers/gpu/drm/drm_irq.c                       | 10 +++-------
 drivers/gpu/drm/drm_vblank.c                    | 13 +++++++++----
 drivers/gpu/drm/exynos/exynos_drm_drv.c         | 10 ----------
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c |  3 +--
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c |  2 --
 drivers/gpu/drm/imx/dcss/dcss-kms.c             |  3 ---
 drivers/gpu/drm/imx/imx-drm-core.c              | 11 -----------
 drivers/gpu/drm/mediatek/mtk_drm_drv.c          |  6 ------
 drivers/gpu/drm/nouveau/nouveau_drm.c           |  3 ---
 drivers/gpu/drm/omapdrm/omap_drv.h              |  2 ++
 drivers/gpu/drm/omapdrm/omap_irq.c              |  6 +++---
 drivers/gpu/drm/radeon/radeon_fence.c           |  2 +-
 drivers/gpu/drm/radeon/radeon_irq_kms.c         | 16 ++++++++--------
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c     |  6 ------
 drivers/gpu/drm/sti/sti_compositor.c            |  2 --
 drivers/gpu/drm/stm/ltdc.c                      |  3 ---
 drivers/gpu/drm/sun4i/sun4i_drv.c               |  2 --
 drivers/gpu/drm/tegra/drm.c                     |  7 -------
 drivers/gpu/drm/tidss/tidss_irq.c               |  3 ---
 drivers/gpu/drm/vc4/vc4_kms.c                   |  1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_irq.c             |  8 --------
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c             |  2 --
 drivers/gpu/drm/zte/zx_drm_drv.c                |  6 ------
 26 files changed, 30 insertions(+), 111 deletions(-)


base-commit: 8c1323b422f8473421682ba783b5949ddd89a3f4
prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
--
2.32.0


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

* [PATCH v2 01/22] drm/amdgpu: Track IRQ state in local device state
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 02/22] drm/hibmc: Call drm_irq_uninstall() unconditionally Thomas Zimmermann
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

Replace usage of struct drm_device.irq_enabled with the driver's
own state field struct amdgpu_device.irq.installed. The field in
the DRM device structure is considered legacy and should not be
used by KMS drivers.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 32ce0e679dc7..7dad44e73cf6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -599,7 +599,7 @@ void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev)
 int amdgpu_irq_get(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
 		   unsigned type)
 {
-	if (!adev_to_drm(adev)->irq_enabled)
+	if (!adev->irq.installed)
 		return -ENOENT;
 
 	if (type >= src->num_types)
@@ -629,7 +629,7 @@ int amdgpu_irq_get(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
 int amdgpu_irq_put(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
 		   unsigned type)
 {
-	if (!adev_to_drm(adev)->irq_enabled)
+	if (!adev->irq.installed)
 		return -ENOENT;
 
 	if (type >= src->num_types)
@@ -660,7 +660,7 @@ int amdgpu_irq_put(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
 bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
 			unsigned type)
 {
-	if (!adev_to_drm(adev)->irq_enabled)
+	if (!adev->irq.installed)
 		return false;
 
 	if (type >= src->num_types)
-- 
2.32.0


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

* [PATCH v2 02/22] drm/hibmc: Call drm_irq_uninstall() unconditionally
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 01/22] drm/amdgpu: Track IRQ state in local device state Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 03/22] drm/radeon: Track IRQ state in local device state Thomas Zimmermann
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

Remove the check around drm_irq_uninstall(). The same test is
done by the function internally. The tested state in irq_enabled
is considered obsolete and should not be used by KMS drivers.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index f4bc5386574a..f8ef711bbe5d 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -253,8 +253,7 @@ static int hibmc_unload(struct drm_device *dev)
 {
 	drm_atomic_helper_shutdown(dev);
 
-	if (dev->irq_enabled)
-		drm_irq_uninstall(dev);
+	drm_irq_uninstall(dev);
 
 	pci_disable_msi(to_pci_dev(dev->dev));
 
-- 
2.32.0


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

* [PATCH v2 03/22] drm/radeon: Track IRQ state in local device state
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 01/22] drm/amdgpu: Track IRQ state in local device state Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 02/22] drm/hibmc: Call drm_irq_uninstall() unconditionally Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls Thomas Zimmermann
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

Replace usage of struct drm_device.irq_enabled with the driver's
own state field struct radeon_device.irq.installed. The field in
the DRM device structure is considered legacy and should not be
used by KMS drivers.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/radeon/radeon_fence.c   |  2 +-
 drivers/gpu/drm/radeon/radeon_irq_kms.c | 16 ++++++++--------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
index 0d8ef2368adf..7ec581363e23 100644
--- a/drivers/gpu/drm/radeon/radeon_fence.c
+++ b/drivers/gpu/drm/radeon/radeon_fence.c
@@ -288,7 +288,7 @@ static void radeon_fence_check_lockup(struct work_struct *work)
 		return;
 	}
 
-	if (fence_drv->delayed_irq && rdev->ddev->irq_enabled) {
+	if (fence_drv->delayed_irq && rdev->irq.installed) {
 		unsigned long irqflags;
 
 		fence_drv->delayed_irq = false;
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
index 84d0b1a3355f..a36ce826d0c0 100644
--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
@@ -357,7 +357,7 @@ void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) {
@@ -396,7 +396,7 @@ void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) {
@@ -422,7 +422,7 @@ void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc)
 	if (crtc < 0 || crtc >= rdev->num_crtc)
 		return;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) {
@@ -448,7 +448,7 @@ void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc)
 	if (crtc < 0 || crtc >= rdev->num_crtc)
 		return;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) {
@@ -470,7 +470,7 @@ void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	spin_lock_irqsave(&rdev->irq.lock, irqflags);
@@ -492,7 +492,7 @@ void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block)
 {
 	unsigned long irqflags;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	spin_lock_irqsave(&rdev->irq.lock, irqflags);
@@ -514,7 +514,7 @@ void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
 	unsigned long irqflags;
 	int i;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	spin_lock_irqsave(&rdev->irq.lock, irqflags);
@@ -537,7 +537,7 @@ void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
 	unsigned long irqflags;
 	int i;
 
-	if (!rdev->ddev->irq_enabled)
+	if (!rdev->irq.installed)
 		return;
 
 	spin_lock_irqsave(&rdev->irq.lock, irqflags);
-- 
2.32.0


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

* [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 03/22] drm/radeon: Track IRQ state in local device state Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 15:25   ` Liviu Dudau
  2021-06-22 14:09 ` [PATCH v2 05/22] drm/komeda: Don't set struct drm_device.irq_enabled Thomas Zimmermann
                   ` (19 subsequent siblings)
  23 siblings, 1 reply; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

For KMS drivers, replace the IRQ check in VBLANK ioctls with a check for
vblank support. IRQs might be enabled wthout vblanking being supported.

This change also removes the DRM framework's only dependency on IRQ state
for non-legacy drivers. For legacy drivers with userspace modesetting,
the original test remains in drm_wait_vblank_ioctl().

v2:
	* keep the old test for legacy drivers in
	  drm_wait_vblank_ioctl() (Daniel)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/drm_irq.c    | 10 +++-------
 drivers/gpu/drm/drm_vblank.c | 13 +++++++++----
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index c3bd664ea733..1d7785721323 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -74,10 +74,8 @@
  * only supports devices with a single interrupt on the main device stored in
  * &drm_device.dev and set as the device paramter in drm_dev_alloc().
  *
- * These IRQ helpers are strictly optional. Drivers which roll their own only
- * need to set &drm_device.irq_enabled to signal the DRM core that vblank
- * interrupts are working. Since these helpers don't automatically clean up the
- * requested interrupt like e.g. devm_request_irq() they're not really
+ * These IRQ helpers are strictly optional. Since these helpers don't automatically
+ * clean up the requested interrupt like e.g. devm_request_irq() they're not really
  * recommended.
  */
 
@@ -91,9 +89,7 @@
  * and after the installation.
  *
  * This is the simplified helper interface provided for drivers with no special
- * needs. Drivers which need to install interrupt handlers for multiple
- * interrupts must instead set &drm_device.irq_enabled to signal the DRM core
- * that vblank interrupts are available.
+ * needs.
  *
  * @irq must match the interrupt number that would be passed to request_irq(),
  * if called directly instead of using this helper function.
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 3417e1ac7918..a98a4aad5037 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -1748,8 +1748,13 @@ int drm_wait_vblank_ioctl(struct drm_device *dev, void *data,
 	unsigned int pipe_index;
 	unsigned int flags, pipe, high_pipe;
 
-	if (!dev->irq_enabled)
-		return -EOPNOTSUPP;
+	if  (drm_core_check_feature(dev, DRIVER_MODESET)) {
+		if (!drm_dev_has_vblank(dev))
+			return -EOPNOTSUPP;
+	} else {
+		if (!dev->irq_enabled)
+			return -EOPNOTSUPP;
+	}
 
 	if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
 		return -EINVAL;
@@ -2023,7 +2028,7 @@ int drm_crtc_get_sequence_ioctl(struct drm_device *dev, void *data,
 	if (!drm_core_check_feature(dev, DRIVER_MODESET))
 		return -EOPNOTSUPP;
 
-	if (!dev->irq_enabled)
+	if (!drm_dev_has_vblank(dev))
 		return -EOPNOTSUPP;
 
 	crtc = drm_crtc_find(dev, file_priv, get_seq->crtc_id);
@@ -2082,7 +2087,7 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data,
 	if (!drm_core_check_feature(dev, DRIVER_MODESET))
 		return -EOPNOTSUPP;
 
-	if (!dev->irq_enabled)
+	if (!drm_dev_has_vblank(dev))
 		return -EOPNOTSUPP;
 
 	crtc = drm_crtc_find(dev, file_priv, queue_seq->crtc_id);
-- 
2.32.0


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

* [PATCH v2 05/22] drm/komeda: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 15:25   ` Liviu Dudau
  2021-06-22 14:09 ` [PATCH v2 06/22] drm/malidp: " Thomas Zimmermann
                   ` (18 subsequent siblings)
  23 siblings, 1 reply; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in komeda.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index ff45f23f3d56..52a6db5707a3 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -301,8 +301,6 @@ struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev)
 	if (err)
 		goto free_component_binding;
 
-	drm->irq_enabled = true;
-
 	drm_kms_helper_poll_init(drm);
 
 	err = drm_dev_register(drm, 0);
@@ -313,7 +311,6 @@ struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev)
 
 free_interrupts:
 	drm_kms_helper_poll_fini(drm);
-	drm->irq_enabled = false;
 free_component_binding:
 	component_unbind_all(mdev->dev, drm);
 cleanup_mode_config:
@@ -331,7 +328,6 @@ void komeda_kms_detach(struct komeda_kms_dev *kms)
 	drm_dev_unregister(drm);
 	drm_kms_helper_poll_fini(drm);
 	drm_atomic_helper_shutdown(drm);
-	drm->irq_enabled = false;
 	component_unbind_all(mdev->dev, drm);
 	drm_mode_config_cleanup(drm);
 	komeda_kms_cleanup_private_objs(kms);
-- 
2.32.0


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

* [PATCH v2 06/22] drm/malidp: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 05/22] drm/komeda: Don't set struct drm_device.irq_enabled Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 15:26   ` Liviu Dudau
  2021-06-22 14:09 ` [PATCH v2 07/22] drm/exynos: " Thomas Zimmermann
                   ` (17 subsequent siblings)
  23 siblings, 1 reply; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in malidp.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/arm/malidp_drv.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index de59f3302516..78d15b04b105 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -847,8 +847,6 @@ static int malidp_bind(struct device *dev)
 	if (ret < 0)
 		goto irq_init_fail;
 
-	drm->irq_enabled = true;
-
 	ret = drm_vblank_init(drm, drm->mode_config.num_crtc);
 	if (ret < 0) {
 		DRM_ERROR("failed to initialise vblank\n");
@@ -874,7 +872,6 @@ static int malidp_bind(struct device *dev)
 vblank_fail:
 	malidp_se_irq_fini(hwdev);
 	malidp_de_irq_fini(hwdev);
-	drm->irq_enabled = false;
 irq_init_fail:
 	drm_atomic_helper_shutdown(drm);
 	component_unbind_all(dev, drm);
@@ -909,7 +906,6 @@ static void malidp_unbind(struct device *dev)
 	drm_atomic_helper_shutdown(drm);
 	malidp_se_irq_fini(hwdev);
 	malidp_de_irq_fini(hwdev);
-	drm->irq_enabled = false;
 	component_unbind_all(dev, drm);
 	of_node_put(malidp->crtc.port);
 	malidp->crtc.port = NULL;
-- 
2.32.0


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

* [PATCH v2 07/22] drm/exynos: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 06/22] drm/malidp: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 08/22] drm/kirin: " Thomas Zimmermann
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in exynos.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/exynos/exynos_drm_drv.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index e60257f1f24b..d8f1cf4d6b69 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -300,16 +300,6 @@ static int exynos_drm_bind(struct device *dev)
 
 	drm_mode_config_reset(drm);
 
-	/*
-	 * enable drm irq mode.
-	 * - with irq_enabled = true, we can use the vblank feature.
-	 *
-	 * P.S. note that we wouldn't use drm irq handler but
-	 *	just specific driver own one instead because
-	 *	drm framework supports only one irq handler.
-	 */
-	drm->irq_enabled = true;
-
 	/* init kms poll for handling hpd */
 	drm_kms_helper_poll_init(drm);
 
-- 
2.32.0


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

* [PATCH v2 08/22] drm/kirin: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (6 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 07/22] drm/exynos: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 09/22] drm/imx: " Thomas Zimmermann
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in kirin.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index e590e19db657..98ae9a48f3fe 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -185,8 +185,6 @@ static int kirin_drm_kms_init(struct drm_device *dev,
 		DRM_ERROR("failed to initialize vblank.\n");
 		goto err_unbind_all;
 	}
-	/* with irq_enabled = true, we can use the vblank feature. */
-	dev->irq_enabled = true;
 
 	/* reset all the states of crtc/plane/encoder/connector */
 	drm_mode_config_reset(dev);
-- 
2.32.0


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

* [PATCH v2 09/22] drm/imx: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (7 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 08/22] drm/kirin: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-23  6:43   ` Laurentiu Palcu
  2021-06-22 14:09 ` [PATCH v2 10/22] drm/mediatek: " Thomas Zimmermann
                   ` (14 subsequent siblings)
  23 siblings, 1 reply; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in imx.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/imx/dcss/dcss-kms.c |  3 ---
 drivers/gpu/drm/imx/imx-drm-core.c  | 11 -----------
 2 files changed, 14 deletions(-)

diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index 37ae68a7fba5..917834b1c80e 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -133,8 +133,6 @@ struct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *dcss)
 	if (ret)
 		goto cleanup_mode_config;
 
-	drm->irq_enabled = true;
-
 	ret = dcss_kms_bridge_connector_init(kms);
 	if (ret)
 		goto cleanup_mode_config;
@@ -178,7 +176,6 @@ void dcss_kms_detach(struct dcss_kms_dev *kms)
 	drm_kms_helper_poll_fini(drm);
 	drm_atomic_helper_shutdown(drm);
 	drm_crtc_vblank_off(&kms->crtc.base);
-	drm->irq_enabled = false;
 	drm_mode_config_cleanup(drm);
 	dcss_crtc_deinit(&kms->crtc, drm);
 	drm->dev_private = NULL;
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 76819a8ac37f..9558e9e1b431 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -207,17 +207,6 @@ static int imx_drm_bind(struct device *dev)
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
 
-	/*
-	 * enable drm irq mode.
-	 * - with irq_enabled = true, we can use the vblank feature.
-	 *
-	 * P.S. note that we wouldn't use drm irq handler but
-	 *      just specific driver own one instead because
-	 *      drm framework supports only one irq handler and
-	 *      drivers can well take care of their interrupts
-	 */
-	drm->irq_enabled = true;
-
 	/*
 	 * set max width and height as default value(4096x4096).
 	 * this value would be used to check framebuffer size limitation
-- 
2.32.0


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

* [PATCH v2 10/22] drm/mediatek: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (8 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 09/22] drm/imx: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 11/22] drm/nouveau: " Thomas Zimmermann
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in mediatek.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index b46bdb8985da..9b60bec33d3b 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -270,12 +270,6 @@ static int mtk_drm_kms_init(struct drm_device *drm)
 		goto err_component_unbind;
 	}
 
-	/*
-	 * We don't use the drm_irq_install() helpers provided by the DRM
-	 * core, so we need to set this manually in order to allow the
-	 * DRM_IOCTL_WAIT_VBLANK to operate correctly.
-	 */
-	drm->irq_enabled = true;
 	ret = drm_vblank_init(drm, MAX_CRTC);
 	if (ret < 0)
 		goto err_component_unbind;
-- 
2.32.0


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

* [PATCH v2 11/22] drm/nouveau: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (9 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 10/22] drm/mediatek: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 12/22] drm/omapdrm: Track IRQ state in local device state Thomas Zimmermann
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in nouveau.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/nouveau/nouveau_drm.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index a616cf4573b8..1cb14e99a60c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -553,8 +553,6 @@ nouveau_drm_device_init(struct drm_device *dev)
 	if (ret)
 		goto fail_master;
 
-	dev->irq_enabled = true;
-
 	nvxx_client(&drm->client.base)->debug =
 		nvkm_dbgopt(nouveau_debug, "DRM");
 
@@ -795,7 +793,6 @@ nouveau_drm_device_remove(struct drm_device *dev)
 
 	drm_dev_unregister(dev);
 
-	dev->irq_enabled = false;
 	client = nvxx_client(&drm->client.base);
 	device = nvkm_device_find(client->device);
 
-- 
2.32.0


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

* [PATCH v2 12/22] drm/omapdrm: Track IRQ state in local device state
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (10 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 11/22] drm/nouveau: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 13/22] drm/rockchip: Don't set struct drm_device.irq_enabled Thomas Zimmermann
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

Replace usage of struct drm_device.irq_enabled with the driver's
own state field struct omap_drm_device.irq_enabled. The field in
the DRM device structure is considered legacy and should not be
used by KMS drivers.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/omapdrm/omap_drv.h | 2 ++
 drivers/gpu/drm/omapdrm/omap_irq.c | 6 +++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
index d6f136984da9..591d4c273f02 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.h
+++ b/drivers/gpu/drm/omapdrm/omap_drv.h
@@ -48,6 +48,8 @@ struct omap_drm_private {
 	struct dss_device *dss;
 	struct dispc_device *dispc;
 
+	bool irq_enabled;
+
 	unsigned int num_pipes;
 	struct omap_drm_pipeline pipes[8];
 	struct omap_drm_pipeline *channels[8];
diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c b/drivers/gpu/drm/omapdrm/omap_irq.c
index 15148d4b35b5..bb6e3fc18204 100644
--- a/drivers/gpu/drm/omapdrm/omap_irq.c
+++ b/drivers/gpu/drm/omapdrm/omap_irq.c
@@ -291,7 +291,7 @@ int omap_drm_irq_install(struct drm_device *dev)
 	if (ret < 0)
 		return ret;
 
-	dev->irq_enabled = true;
+	priv->irq_enabled = true;
 
 	return 0;
 }
@@ -300,10 +300,10 @@ void omap_drm_irq_uninstall(struct drm_device *dev)
 {
 	struct omap_drm_private *priv = dev->dev_private;
 
-	if (!dev->irq_enabled)
+	if (!priv->irq_enabled)
 		return;
 
-	dev->irq_enabled = false;
+	priv->irq_enabled = false;
 
 	dispc_free_irq(priv->dispc, dev);
 }
-- 
2.32.0


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

* [PATCH v2 13/22] drm/rockchip: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (11 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 12/22] drm/omapdrm: Track IRQ state in local device state Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 14/22] drm/sti: " Thomas Zimmermann
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in rockchip.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index b730b8d5d949..c8e60fd9ff24 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -162,12 +162,6 @@ static int rockchip_drm_bind(struct device *dev)
 
 	drm_mode_config_reset(drm_dev);
 
-	/*
-	 * enable drm irq mode.
-	 * - with irq_enabled = true, we can use the vblank feature.
-	 */
-	drm_dev->irq_enabled = true;
-
 	ret = rockchip_drm_fbdev_init(drm_dev);
 	if (ret)
 		goto err_unbind_all;
-- 
2.32.0


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

* [PATCH v2 14/22] drm/sti: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (12 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 13/22] drm/rockchip: Don't set struct drm_device.irq_enabled Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 15/22] drm/stm: " Thomas Zimmermann
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in sti.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/sti/sti_compositor.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/sti/sti_compositor.c b/drivers/gpu/drm/sti/sti_compositor.c
index 319962a2c17b..9caaf3ccfabe 100644
--- a/drivers/gpu/drm/sti/sti_compositor.c
+++ b/drivers/gpu/drm/sti/sti_compositor.c
@@ -145,8 +145,6 @@ static int sti_compositor_bind(struct device *dev,
 	}
 
 	drm_vblank_init(drm_dev, crtc_id);
-	/* Allow usage of vblank without having to call drm_irq_install */
-	drm_dev->irq_enabled = 1;
 
 	return 0;
 }
-- 
2.32.0


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

* [PATCH v2 15/22] drm/stm: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (13 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 14/22] drm/sti: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 16/22] drm/sun4i: " Thomas Zimmermann
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in stm.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/stm/ltdc.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c
index 08b71248044d..e9c5a52f041a 100644
--- a/drivers/gpu/drm/stm/ltdc.c
+++ b/drivers/gpu/drm/stm/ltdc.c
@@ -1339,9 +1339,6 @@ int ltdc_load(struct drm_device *ddev)
 		goto err;
 	}
 
-	/* Allow usage of vblank without having to call drm_irq_install */
-	ddev->irq_enabled = 1;
-
 	clk_disable_unprepare(ldev->pixel_clk);
 
 	pinctrl_pm_select_sleep_state(ddev->dev);
-- 
2.32.0


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

* [PATCH v2 16/22] drm/sun4i: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (14 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 15/22] drm/stm: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 17/22] drm/tegra: " Thomas Zimmermann
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in sun4i.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/sun4i/sun4i_drv.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index af335f58bdfc..570f3af25e86 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -97,8 +97,6 @@ static int sun4i_drv_bind(struct device *dev)
 	if (ret)
 		goto cleanup_mode_config;
 
-	drm->irq_enabled = true;
-
 	/* Remove early framebuffers (ie. simplefb) */
 	ret = drm_aperture_remove_framebuffers(false, "sun4i-drm-fb");
 	if (ret)
-- 
2.32.0


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

* [PATCH v2 17/22] drm/tegra: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (15 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 16/22] drm/sun4i: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 18/22] drm/tidss: Don't use " Thomas Zimmermann
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in tegra.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/tegra/drm.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index f96c237b2242..8d27c21ddf48 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -1188,13 +1188,6 @@ static int host1x_drm_probe(struct host1x_device *dev)
 			goto device;
 	}
 
-	/*
-	 * We don't use the drm_irq_install() helpers provided by the DRM
-	 * core, so we need to set this manually in order to allow the
-	 * DRM_IOCTL_WAIT_VBLANK to operate correctly.
-	 */
-	drm->irq_enabled = true;
-
 	/* syncpoints are used for full 32-bit hardware VBLANK counters */
 	drm->max_vblank_count = 0xffffffff;
 
-- 
2.32.0


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

* [PATCH v2 18/22] drm/tidss: Don't use struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (16 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 17/22] drm/tegra: " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:09 ` [PATCH v2 19/22] drm/vc4: Don't set " Thomas Zimmermann
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't use it in tidss.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/tidss/tidss_irq.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/tidss/tidss_irq.c b/drivers/gpu/drm/tidss/tidss_irq.c
index a5ec7931ef6b..2ed3e3296776 100644
--- a/drivers/gpu/drm/tidss/tidss_irq.c
+++ b/drivers/gpu/drm/tidss/tidss_irq.c
@@ -57,9 +57,6 @@ irqreturn_t tidss_irq_handler(int irq, void *arg)
 	unsigned int id;
 	dispc_irq_t irqstatus;
 
-	if (WARN_ON(!ddev->irq_enabled))
-		return IRQ_NONE;
-
 	irqstatus = dispc_read_and_clear_irqstatus(tidss->dispc);
 
 	for (id = 0; id < tidss->num_crtcs; id++) {
-- 
2.32.0


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

* [PATCH v2 19/22] drm/vc4: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (17 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 18/22] drm/tidss: Don't use " Thomas Zimmermann
@ 2021-06-22 14:09 ` Thomas Zimmermann
  2021-06-22 14:10 ` [PATCH v2 20/22] drm/vmwgfx: " Thomas Zimmermann
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:09 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in vc4.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/vc4/vc4_kms.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
index 6a1a9e1d72ce..f0b3e4cf5bce 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -880,7 +880,6 @@ int vc4_kms_load(struct drm_device *dev)
 	/* Set support for vblank irq fast disable, before drm_vblank_init() */
 	dev->vblank_disable_immediate = true;
 
-	dev->irq_enabled = true;
 	ret = drm_vblank_init(dev, dev->mode_config.num_crtc);
 	if (ret < 0) {
 		dev_err(dev->dev, "failed to initialize vblank\n");
-- 
2.32.0


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

* [PATCH v2 20/22] drm/vmwgfx: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (18 preceding siblings ...)
  2021-06-22 14:09 ` [PATCH v2 19/22] drm/vc4: Don't set " Thomas Zimmermann
@ 2021-06-22 14:10 ` Thomas Zimmermann
  2021-06-22 14:10 ` [PATCH v2 21/22] drm/xlnx: " Thomas Zimmermann
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:10 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in vmxgfx. All usage of
the field within vmwgfx can safely be removed.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_irq.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
index b9a9b7ddadbd..4b82f5995452 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
@@ -292,15 +292,11 @@ void vmw_irq_uninstall(struct drm_device *dev)
 	if (!(dev_priv->capabilities & SVGA_CAP_IRQMASK))
 		return;
 
-	if (!dev->irq_enabled)
-		return;
-
 	vmw_write(dev_priv, SVGA_REG_IRQMASK, 0);
 
 	status = vmw_irq_status_read(dev_priv);
 	vmw_irq_status_write(dev_priv, status);
 
-	dev->irq_enabled = false;
 	free_irq(dev->irq, dev);
 }
 
@@ -315,9 +311,6 @@ int vmw_irq_install(struct drm_device *dev, int irq)
 {
 	int ret;
 
-	if (dev->irq_enabled)
-		return -EBUSY;
-
 	vmw_irq_preinstall(dev);
 
 	ret = request_threaded_irq(irq, vmw_irq_handler, vmw_thread_fn,
@@ -325,7 +318,6 @@ int vmw_irq_install(struct drm_device *dev, int irq)
 	if (ret < 0)
 		return ret;
 
-	dev->irq_enabled = true;
 	dev->irq = irq;
 
 	return ret;
-- 
2.32.0


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

* [PATCH v2 21/22] drm/xlnx: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (19 preceding siblings ...)
  2021-06-22 14:10 ` [PATCH v2 20/22] drm/vmwgfx: " Thomas Zimmermann
@ 2021-06-22 14:10 ` Thomas Zimmermann
  2021-06-22 14:10 ` [PATCH v2 22/22] drm/zte: " Thomas Zimmermann
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:10 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in xlnx.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index 0c1c50271a88..ac37053412a1 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -111,8 +111,6 @@ static int zynqmp_dpsub_drm_init(struct zynqmp_dpsub *dpsub)
 	if (ret)
 		return ret;
 
-	drm->irq_enabled = 1;
-
 	drm_kms_helper_poll_init(drm);
 
 	/*
-- 
2.32.0


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

* [PATCH v2 22/22] drm/zte: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (20 preceding siblings ...)
  2021-06-22 14:10 ` [PATCH v2 21/22] drm/xlnx: " Thomas Zimmermann
@ 2021-06-22 14:10 ` Thomas Zimmermann
  2021-06-22 15:24 ` [PATCH v2 00/22] Deprecate " Daniel Vetter
  2021-06-22 16:11 ` Laurent Pinchart
  23 siblings, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-22 14:10 UTC (permalink / raw)
  To: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek
  Cc: amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra, Thomas Zimmermann

The field drm_device.irq_enabled is only used by legacy drivers
with userspace modesetting. Don't set it in zte.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/zte/zx_drm_drv.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 5506336594e2..064056503ebb 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -75,12 +75,6 @@ static int zx_drm_bind(struct device *dev)
 		goto out_unbind;
 	}
 
-	/*
-	 * We will manage irq handler on our own.  In this case, irq_enabled
-	 * need to be true for using vblank core support.
-	 */
-	drm->irq_enabled = true;
-
 	drm_mode_config_reset(drm);
 	drm_kms_helper_poll_init(drm);
 
-- 
2.32.0


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

* Re: [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (21 preceding siblings ...)
  2021-06-22 14:10 ` [PATCH v2 22/22] drm/zte: " Thomas Zimmermann
@ 2021-06-22 15:24 ` Daniel Vetter
  2021-06-22 16:11 ` Laurent Pinchart
  23 siblings, 0 replies; 33+ messages in thread
From: Daniel Vetter @ 2021-06-22 15:24 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek, amd-gfx, dri-devel, linux-arm-kernel,
	linux-samsung-soc, linux-mediatek, nouveau, linux-rockchip,
	linux-stm32, linux-sunxi, linux-tegra

On Tue, Jun 22, 2021 at 04:09:40PM +0200, Thomas Zimmermann wrote:
> Remove references to struct drm_device.irq_enabled from modern
> DRM drivers and core.
> 
> KMS drivers enable IRQs for their devices internally. They don't
> have to keep track of the IRQ state via irq_enabled. For vblanking,
> it's cleaner to test for vblanking support directly than to test
> for enabled IRQs.
> 
> This used to be a single patch, [1] but it's now a full series.
> 
> The first 3 patches replace instances of irq_enabled that are not
> required.
> 
> Patch 4 fixes vblank ioctls to actually test for vblank support
> instead of IRQs.
> 
> THe rest of the patchset removes irq_enabled from all non-legacy
> drivers. The only exception is omapdrm, which has an internal
> dpendency on the field's value. For this drivers, the state gets
> duplicated internally.
> 
> With the patchset applied, drivers can later switch over to plain
> Linux IRQ interfaces and DRM's IRQ midlayer can be declared legacy.
> 
> v2:
> 	* keep the original test for legacy drivers in
> 	  drm_wait_vblank_ioctl() (Daniel)
> 
> [1] https://lore.kernel.org/dri-devel/20210608090301.4752-1-tzimmermann@suse.de/

On the series:

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

But I've only done a very light reading of this, so please wait for driver
folks to have some time to check their own before merging.

I think a devm_ version of drm_irq_install might be helpful in further
untangling here, but that's definitely for another series.
-Daniel

> 
> Thomas Zimmermann (22):
>   drm/amdgpu: Track IRQ state in local device state
>   drm/hibmc: Call drm_irq_uninstall() unconditionally
>   drm/radeon: Track IRQ state in local device state
>   drm: Don't test for IRQ support in VBLANK ioctls
>   drm/komeda: Don't set struct drm_device.irq_enabled
>   drm/malidp: Don't set struct drm_device.irq_enabled
>   drm/exynos: Don't set struct drm_device.irq_enabled
>   drm/kirin: Don't set struct drm_device.irq_enabled
>   drm/imx: Don't set struct drm_device.irq_enabled
>   drm/mediatek: Don't set struct drm_device.irq_enabled
>   drm/nouveau: Don't set struct drm_device.irq_enabled
>   drm/omapdrm: Track IRQ state in local device state
>   drm/rockchip: Don't set struct drm_device.irq_enabled
>   drm/sti: Don't set struct drm_device.irq_enabled
>   drm/stm: Don't set struct drm_device.irq_enabled
>   drm/sun4i: Don't set struct drm_device.irq_enabled
>   drm/tegra: Don't set struct drm_device.irq_enabled
>   drm/tidss: Don't use struct drm_device.irq_enabled
>   drm/vc4: Don't set struct drm_device.irq_enabled
>   drm/vmwgfx: Don't set struct drm_device.irq_enabled
>   drm/xlnx: Don't set struct drm_device.irq_enabled
>   drm/zte: Don't set struct drm_device.irq_enabled
> 
>  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c         |  6 +++---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c |  4 ----
>  drivers/gpu/drm/arm/malidp_drv.c                |  4 ----
>  drivers/gpu/drm/drm_irq.c                       | 10 +++-------
>  drivers/gpu/drm/drm_vblank.c                    | 13 +++++++++----
>  drivers/gpu/drm/exynos/exynos_drm_drv.c         | 10 ----------
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c |  3 +--
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c |  2 --
>  drivers/gpu/drm/imx/dcss/dcss-kms.c             |  3 ---
>  drivers/gpu/drm/imx/imx-drm-core.c              | 11 -----------
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c          |  6 ------
>  drivers/gpu/drm/nouveau/nouveau_drm.c           |  3 ---
>  drivers/gpu/drm/omapdrm/omap_drv.h              |  2 ++
>  drivers/gpu/drm/omapdrm/omap_irq.c              |  6 +++---
>  drivers/gpu/drm/radeon/radeon_fence.c           |  2 +-
>  drivers/gpu/drm/radeon/radeon_irq_kms.c         | 16 ++++++++--------
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c     |  6 ------
>  drivers/gpu/drm/sti/sti_compositor.c            |  2 --
>  drivers/gpu/drm/stm/ltdc.c                      |  3 ---
>  drivers/gpu/drm/sun4i/sun4i_drv.c               |  2 --
>  drivers/gpu/drm/tegra/drm.c                     |  7 -------
>  drivers/gpu/drm/tidss/tidss_irq.c               |  3 ---
>  drivers/gpu/drm/vc4/vc4_kms.c                   |  1 -
>  drivers/gpu/drm/vmwgfx/vmwgfx_irq.c             |  8 --------
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c             |  2 --
>  drivers/gpu/drm/zte/zx_drm_drv.c                |  6 ------
>  26 files changed, 30 insertions(+), 111 deletions(-)
> 
> 
> base-commit: 8c1323b422f8473421682ba783b5949ddd89a3f4
> prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
> prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
> --
> 2.32.0
> 

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

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

* Re: [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls
  2021-06-22 14:09 ` [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls Thomas Zimmermann
@ 2021-06-22 15:25   ` Liviu Dudau
  2021-06-23  6:43     ` Thomas Zimmermann
  0 siblings, 1 reply; 33+ messages in thread
From: Liviu Dudau @ 2021-06-22 15:25 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek, amd-gfx, dri-devel, linux-arm-kernel,
	linux-samsung-soc, linux-mediatek, nouveau, linux-rockchip,
	linux-stm32, linux-sunxi, linux-tegra

Hello,

On Tue, Jun 22, 2021 at 04:09:44PM +0200, Thomas Zimmermann wrote:
> For KMS drivers, replace the IRQ check in VBLANK ioctls with a check for
> vblank support. IRQs might be enabled wthout vblanking being supported.
> 
> This change also removes the DRM framework's only dependency on IRQ state
> for non-legacy drivers. For legacy drivers with userspace modesetting,
> the original test remains in drm_wait_vblank_ioctl().
> 
> v2:
> 	* keep the old test for legacy drivers in
> 	  drm_wait_vblank_ioctl() (Daniel)
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/drm_irq.c    | 10 +++-------
>  drivers/gpu/drm/drm_vblank.c | 13 +++++++++----
>  2 files changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> index c3bd664ea733..1d7785721323 100644
> --- a/drivers/gpu/drm/drm_irq.c
> +++ b/drivers/gpu/drm/drm_irq.c
> @@ -74,10 +74,8 @@
>   * only supports devices with a single interrupt on the main device stored in
>   * &drm_device.dev and set as the device paramter in drm_dev_alloc().
>   *
> - * These IRQ helpers are strictly optional. Drivers which roll their own only
> - * need to set &drm_device.irq_enabled to signal the DRM core that vblank
> - * interrupts are working. Since these helpers don't automatically clean up the
> - * requested interrupt like e.g. devm_request_irq() they're not really
> + * These IRQ helpers are strictly optional. Since these helpers don't automatically
> + * clean up the requested interrupt like e.g. devm_request_irq() they're not really
>   * recommended.
>   */
>  
> @@ -91,9 +89,7 @@
>   * and after the installation.
>   *
>   * This is the simplified helper interface provided for drivers with no special
> - * needs. Drivers which need to install interrupt handlers for multiple
> - * interrupts must instead set &drm_device.irq_enabled to signal the DRM core
> - * that vblank interrupts are available.
> + * needs.
>   *
>   * @irq must match the interrupt number that would be passed to request_irq(),
>   * if called directly instead of using this helper function.
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 3417e1ac7918..a98a4aad5037 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -1748,8 +1748,13 @@ int drm_wait_vblank_ioctl(struct drm_device *dev, void *data,
>  	unsigned int pipe_index;
>  	unsigned int flags, pipe, high_pipe;
>  
> -	if (!dev->irq_enabled)
> -		return -EOPNOTSUPP;
> +	if  (drm_core_check_feature(dev, DRIVER_MODESET)) {
> +		if (!drm_dev_has_vblank(dev))
> +			return -EOPNOTSUPP;
> +	} else {
> +		if (!dev->irq_enabled)
> +			return -EOPNOTSUPP;
> +	}

For a system call that is used quite a lot by userspace we have increased the code size
in a noticeable way. Can we not cache it privately?

Best regards,
Liviu

>  
>  	if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
>  		return -EINVAL;
> @@ -2023,7 +2028,7 @@ int drm_crtc_get_sequence_ioctl(struct drm_device *dev, void *data,
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
>  		return -EOPNOTSUPP;
>  
> -	if (!dev->irq_enabled)
> +	if (!drm_dev_has_vblank(dev))
>  		return -EOPNOTSUPP;
>  
>  	crtc = drm_crtc_find(dev, file_priv, get_seq->crtc_id);
> @@ -2082,7 +2087,7 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data,
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
>  		return -EOPNOTSUPP;
>  
> -	if (!dev->irq_enabled)
> +	if (!drm_dev_has_vblank(dev))
>  		return -EOPNOTSUPP;
>  
>  	crtc = drm_crtc_find(dev, file_priv, queue_seq->crtc_id);
> -- 
> 2.32.0
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

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

* Re: [PATCH v2 05/22] drm/komeda: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 ` [PATCH v2 05/22] drm/komeda: Don't set struct drm_device.irq_enabled Thomas Zimmermann
@ 2021-06-22 15:25   ` Liviu Dudau
  0 siblings, 0 replies; 33+ messages in thread
From: Liviu Dudau @ 2021-06-22 15:25 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek, linux-samsung-soc, nouveau, dri-devel, linux-sunxi,
	linux-rockchip, linux-mediatek, amd-gfx, linux-tegra,
	linux-stm32, linux-arm-kernel

On Tue, Jun 22, 2021 at 04:09:45PM +0200, Thomas Zimmermann wrote:
> The field drm_device.irq_enabled is only used by legacy drivers
> with userspace modesetting. Don't set it in komeda.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Liviu Dudau <liviu.dudau@arm.com>

Best regards,
Liviu

> ---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> index ff45f23f3d56..52a6db5707a3 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -301,8 +301,6 @@ struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev)
>  	if (err)
>  		goto free_component_binding;
>  
> -	drm->irq_enabled = true;
> -
>  	drm_kms_helper_poll_init(drm);
>  
>  	err = drm_dev_register(drm, 0);
> @@ -313,7 +311,6 @@ struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev)
>  
>  free_interrupts:
>  	drm_kms_helper_poll_fini(drm);
> -	drm->irq_enabled = false;
>  free_component_binding:
>  	component_unbind_all(mdev->dev, drm);
>  cleanup_mode_config:
> @@ -331,7 +328,6 @@ void komeda_kms_detach(struct komeda_kms_dev *kms)
>  	drm_dev_unregister(drm);
>  	drm_kms_helper_poll_fini(drm);
>  	drm_atomic_helper_shutdown(drm);
> -	drm->irq_enabled = false;
>  	component_unbind_all(mdev->dev, drm);
>  	drm_mode_config_cleanup(drm);
>  	komeda_kms_cleanup_private_objs(kms);
> -- 
> 2.32.0
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

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

* Re: [PATCH v2 06/22] drm/malidp: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 ` [PATCH v2 06/22] drm/malidp: " Thomas Zimmermann
@ 2021-06-22 15:26   ` Liviu Dudau
  0 siblings, 0 replies; 33+ messages in thread
From: Liviu Dudau @ 2021-06-22 15:26 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek, amd-gfx, dri-devel, linux-arm-kernel,
	linux-samsung-soc, linux-mediatek, nouveau, linux-rockchip,
	linux-stm32, linux-sunxi, linux-tegra

On Tue, Jun 22, 2021 at 04:09:46PM +0200, Thomas Zimmermann wrote:
> The field drm_device.irq_enabled is only used by legacy drivers
> with userspace modesetting. Don't set it in malidp.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Liviu Dudau <liviu.dudau@arm.com>

Best regards,
Liviu

> ---
>  drivers/gpu/drm/arm/malidp_drv.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index de59f3302516..78d15b04b105 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -847,8 +847,6 @@ static int malidp_bind(struct device *dev)
>  	if (ret < 0)
>  		goto irq_init_fail;
>  
> -	drm->irq_enabled = true;
> -
>  	ret = drm_vblank_init(drm, drm->mode_config.num_crtc);
>  	if (ret < 0) {
>  		DRM_ERROR("failed to initialise vblank\n");
> @@ -874,7 +872,6 @@ static int malidp_bind(struct device *dev)
>  vblank_fail:
>  	malidp_se_irq_fini(hwdev);
>  	malidp_de_irq_fini(hwdev);
> -	drm->irq_enabled = false;
>  irq_init_fail:
>  	drm_atomic_helper_shutdown(drm);
>  	component_unbind_all(dev, drm);
> @@ -909,7 +906,6 @@ static void malidp_unbind(struct device *dev)
>  	drm_atomic_helper_shutdown(drm);
>  	malidp_se_irq_fini(hwdev);
>  	malidp_de_irq_fini(hwdev);
> -	drm->irq_enabled = false;
>  	component_unbind_all(dev, drm);
>  	of_node_put(malidp->crtc.port);
>  	malidp->crtc.port = NULL;
> -- 
> 2.32.0
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

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

* Re: [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled
  2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
                   ` (22 preceding siblings ...)
  2021-06-22 15:24 ` [PATCH v2 00/22] Deprecate " Daniel Vetter
@ 2021-06-22 16:11 ` Laurent Pinchart
  2021-06-22 16:17   ` Laurent Pinchart
  2021-06-23  6:46   ` Thomas Zimmermann
  23 siblings, 2 replies; 33+ messages in thread
From: Laurent Pinchart @ 2021-06-22 16:11 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, michal.simek,
	amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra

Hi Thomas,

Thank you for the patches.

On Tue, Jun 22, 2021 at 04:09:40PM +0200, Thomas Zimmermann wrote:
> Remove references to struct drm_device.irq_enabled from modern
> DRM drivers and core.
> 
> KMS drivers enable IRQs for their devices internally. They don't
> have to keep track of the IRQ state via irq_enabled. For vblanking,
> it's cleaner to test for vblanking support directly than to test
> for enabled IRQs.
> 
> This used to be a single patch, [1] but it's now a full series.
> 
> The first 3 patches replace instances of irq_enabled that are not
> required.
> 
> Patch 4 fixes vblank ioctls to actually test for vblank support
> instead of IRQs.
> 
> THe rest of the patchset removes irq_enabled from all non-legacy
> drivers. The only exception is omapdrm, which has an internal
> dpendency on the field's value. For this drivers, the state gets
> duplicated internally.
> 
> With the patchset applied, drivers can later switch over to plain
> Linux IRQ interfaces and DRM's IRQ midlayer can be declared legacy.
> 
> v2:
> 	* keep the original test for legacy drivers in
> 	  drm_wait_vblank_ioctl() (Daniel)
> 
> [1] https://lore.kernel.org/dri-devel/20210608090301.4752-1-tzimmermann@suse.de/
> 
> Thomas Zimmermann (22):
>   drm/amdgpu: Track IRQ state in local device state
>   drm/hibmc: Call drm_irq_uninstall() unconditionally
>   drm/radeon: Track IRQ state in local device state
>   drm: Don't test for IRQ support in VBLANK ioctls
>   drm/komeda: Don't set struct drm_device.irq_enabled
>   drm/malidp: Don't set struct drm_device.irq_enabled
>   drm/exynos: Don't set struct drm_device.irq_enabled
>   drm/kirin: Don't set struct drm_device.irq_enabled
>   drm/imx: Don't set struct drm_device.irq_enabled
>   drm/mediatek: Don't set struct drm_device.irq_enabled
>   drm/nouveau: Don't set struct drm_device.irq_enabled
>   drm/omapdrm: Track IRQ state in local device state
>   drm/rockchip: Don't set struct drm_device.irq_enabled
>   drm/sti: Don't set struct drm_device.irq_enabled
>   drm/stm: Don't set struct drm_device.irq_enabled
>   drm/sun4i: Don't set struct drm_device.irq_enabled
>   drm/tegra: Don't set struct drm_device.irq_enabled
>   drm/tidss: Don't use struct drm_device.irq_enabled
>   drm/vc4: Don't set struct drm_device.irq_enabled
>   drm/vmwgfx: Don't set struct drm_device.irq_enabled
>   drm/xlnx: Don't set struct drm_device.irq_enabled
>   drm/zte: Don't set struct drm_device.irq_enabled

The list seems to be missing armada, rcar-du and vkms. It would also be
nice to address i915 if possible.

>  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c         |  6 +++---
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c |  4 ----
>  drivers/gpu/drm/arm/malidp_drv.c                |  4 ----
>  drivers/gpu/drm/drm_irq.c                       | 10 +++-------
>  drivers/gpu/drm/drm_vblank.c                    | 13 +++++++++----
>  drivers/gpu/drm/exynos/exynos_drm_drv.c         | 10 ----------
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c |  3 +--
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c |  2 --
>  drivers/gpu/drm/imx/dcss/dcss-kms.c             |  3 ---
>  drivers/gpu/drm/imx/imx-drm-core.c              | 11 -----------
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c          |  6 ------
>  drivers/gpu/drm/nouveau/nouveau_drm.c           |  3 ---
>  drivers/gpu/drm/omapdrm/omap_drv.h              |  2 ++
>  drivers/gpu/drm/omapdrm/omap_irq.c              |  6 +++---
>  drivers/gpu/drm/radeon/radeon_fence.c           |  2 +-
>  drivers/gpu/drm/radeon/radeon_irq_kms.c         | 16 ++++++++--------
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c     |  6 ------
>  drivers/gpu/drm/sti/sti_compositor.c            |  2 --
>  drivers/gpu/drm/stm/ltdc.c                      |  3 ---
>  drivers/gpu/drm/sun4i/sun4i_drv.c               |  2 --
>  drivers/gpu/drm/tegra/drm.c                     |  7 -------
>  drivers/gpu/drm/tidss/tidss_irq.c               |  3 ---
>  drivers/gpu/drm/vc4/vc4_kms.c                   |  1 -
>  drivers/gpu/drm/vmwgfx/vmwgfx_irq.c             |  8 --------
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c             |  2 --
>  drivers/gpu/drm/zte/zx_drm_drv.c                |  6 ------
>  26 files changed, 30 insertions(+), 111 deletions(-)
> 
> 
> base-commit: 8c1323b422f8473421682ba783b5949ddd89a3f4
> prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
> prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24

-- 
Regards,

Laurent Pinchart

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

* Re: [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled
  2021-06-22 16:11 ` Laurent Pinchart
@ 2021-06-22 16:17   ` Laurent Pinchart
  2021-06-23  6:46   ` Thomas Zimmermann
  1 sibling, 0 replies; 33+ messages in thread
From: Laurent Pinchart @ 2021-06-22 16:17 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, michal.simek,
	amd-gfx, dri-devel, linux-arm-kernel, linux-samsung-soc,
	linux-mediatek, nouveau, linux-rockchip, linux-stm32,
	linux-sunxi, linux-tegra

On Tue, Jun 22, 2021 at 07:11:33PM +0300, Laurent Pinchart wrote:
> Hi Thomas,
> 
> Thank you for the patches.
> 
> On Tue, Jun 22, 2021 at 04:09:40PM +0200, Thomas Zimmermann wrote:
> > Remove references to struct drm_device.irq_enabled from modern
> > DRM drivers and core.
> > 
> > KMS drivers enable IRQs for their devices internally. They don't
> > have to keep track of the IRQ state via irq_enabled. For vblanking,
> > it's cleaner to test for vblanking support directly than to test
> > for enabled IRQs.
> > 
> > This used to be a single patch, [1] but it's now a full series.
> > 
> > The first 3 patches replace instances of irq_enabled that are not
> > required.
> > 
> > Patch 4 fixes vblank ioctls to actually test for vblank support
> > instead of IRQs.
> > 
> > THe rest of the patchset removes irq_enabled from all non-legacy
> > drivers. The only exception is omapdrm, which has an internal
> > dpendency on the field's value. For this drivers, the state gets
> > duplicated internally.
> > 
> > With the patchset applied, drivers can later switch over to plain
> > Linux IRQ interfaces and DRM's IRQ midlayer can be declared legacy.
> > 
> > v2:
> > 	* keep the original test for legacy drivers in
> > 	  drm_wait_vblank_ioctl() (Daniel)
> > 
> > [1] https://lore.kernel.org/dri-devel/20210608090301.4752-1-tzimmermann@suse.de/
> > 
> > Thomas Zimmermann (22):
> >   drm/amdgpu: Track IRQ state in local device state
> >   drm/hibmc: Call drm_irq_uninstall() unconditionally
> >   drm/radeon: Track IRQ state in local device state
> >   drm: Don't test for IRQ support in VBLANK ioctls
> >   drm/komeda: Don't set struct drm_device.irq_enabled
> >   drm/malidp: Don't set struct drm_device.irq_enabled
> >   drm/exynos: Don't set struct drm_device.irq_enabled
> >   drm/kirin: Don't set struct drm_device.irq_enabled
> >   drm/imx: Don't set struct drm_device.irq_enabled
> >   drm/mediatek: Don't set struct drm_device.irq_enabled
> >   drm/nouveau: Don't set struct drm_device.irq_enabled
> >   drm/omapdrm: Track IRQ state in local device state
> >   drm/rockchip: Don't set struct drm_device.irq_enabled
> >   drm/sti: Don't set struct drm_device.irq_enabled
> >   drm/stm: Don't set struct drm_device.irq_enabled
> >   drm/sun4i: Don't set struct drm_device.irq_enabled
> >   drm/tegra: Don't set struct drm_device.irq_enabled
> >   drm/tidss: Don't use struct drm_device.irq_enabled
> >   drm/vc4: Don't set struct drm_device.irq_enabled
> >   drm/vmwgfx: Don't set struct drm_device.irq_enabled
> >   drm/xlnx: Don't set struct drm_device.irq_enabled
> >   drm/zte: Don't set struct drm_device.irq_enabled
> 
> The list seems to be missing armada, rcar-du and vkms. It would also be
> nice to address i915 if possible.

In addition to this, for all the existing patches,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> >  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c         |  6 +++---
> >  drivers/gpu/drm/arm/display/komeda/komeda_kms.c |  4 ----
> >  drivers/gpu/drm/arm/malidp_drv.c                |  4 ----
> >  drivers/gpu/drm/drm_irq.c                       | 10 +++-------
> >  drivers/gpu/drm/drm_vblank.c                    | 13 +++++++++----
> >  drivers/gpu/drm/exynos/exynos_drm_drv.c         | 10 ----------
> >  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c |  3 +--
> >  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c |  2 --
> >  drivers/gpu/drm/imx/dcss/dcss-kms.c             |  3 ---
> >  drivers/gpu/drm/imx/imx-drm-core.c              | 11 -----------
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c          |  6 ------
> >  drivers/gpu/drm/nouveau/nouveau_drm.c           |  3 ---
> >  drivers/gpu/drm/omapdrm/omap_drv.h              |  2 ++
> >  drivers/gpu/drm/omapdrm/omap_irq.c              |  6 +++---
> >  drivers/gpu/drm/radeon/radeon_fence.c           |  2 +-
> >  drivers/gpu/drm/radeon/radeon_irq_kms.c         | 16 ++++++++--------
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c     |  6 ------
> >  drivers/gpu/drm/sti/sti_compositor.c            |  2 --
> >  drivers/gpu/drm/stm/ltdc.c                      |  3 ---
> >  drivers/gpu/drm/sun4i/sun4i_drv.c               |  2 --
> >  drivers/gpu/drm/tegra/drm.c                     |  7 -------
> >  drivers/gpu/drm/tidss/tidss_irq.c               |  3 ---
> >  drivers/gpu/drm/vc4/vc4_kms.c                   |  1 -
> >  drivers/gpu/drm/vmwgfx/vmwgfx_irq.c             |  8 --------
> >  drivers/gpu/drm/xlnx/zynqmp_dpsub.c             |  2 --
> >  drivers/gpu/drm/zte/zx_drm_drv.c                |  6 ------
> >  26 files changed, 30 insertions(+), 111 deletions(-)
> > 
> > 
> > base-commit: 8c1323b422f8473421682ba783b5949ddd89a3f4
> > prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
> > prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24

-- 
Regards,

Laurent Pinchart

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

* Re: [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls
  2021-06-22 15:25   ` Liviu Dudau
@ 2021-06-23  6:43     ` Thomas Zimmermann
  2021-06-23 12:15       ` Liviu Dudau
  0 siblings, 1 reply; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-23  6:43 UTC (permalink / raw)
  To: Liviu Dudau
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, laurentiu.palcu,
	l.stach, p.zabel, shawnguo, s.hauer, kernel, festevam, linux-imx,
	chunkuang.hu, matthias.bgg, bskeggs, tomba, hjc, heiko,
	benjamin.gaignard, yannick.fertre, philippe.cornu,
	mcoquelin.stm32, alexandre.torgue, wens, jernej.skrabec,
	thierry.reding, jonathanh, jyri.sarha, emma,
	linux-graphics-maintainer, zackr, hyun.kwon, laurent.pinchart,
	michal.simek, amd-gfx, dri-devel, linux-arm-kernel,
	linux-samsung-soc, linux-mediatek, nouveau, linux-rockchip,
	linux-stm32, linux-sunxi, linux-tegra


[-- Attachment #1.1: Type: text/plain, Size: 4007 bytes --]

Hi Liviu

Am 22.06.21 um 17:25 schrieb Liviu Dudau:
> Hello,
> 
> On Tue, Jun 22, 2021 at 04:09:44PM +0200, Thomas Zimmermann wrote:
>> For KMS drivers, replace the IRQ check in VBLANK ioctls with a check for
>> vblank support. IRQs might be enabled wthout vblanking being supported.
>>
>> This change also removes the DRM framework's only dependency on IRQ state
>> for non-legacy drivers. For legacy drivers with userspace modesetting,
>> the original test remains in drm_wait_vblank_ioctl().
>>
>> v2:
>> 	* keep the old test for legacy drivers in
>> 	  drm_wait_vblank_ioctl() (Daniel)
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>   drivers/gpu/drm/drm_irq.c    | 10 +++-------
>>   drivers/gpu/drm/drm_vblank.c | 13 +++++++++----
>>   2 files changed, 12 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
>> index c3bd664ea733..1d7785721323 100644
>> --- a/drivers/gpu/drm/drm_irq.c
>> +++ b/drivers/gpu/drm/drm_irq.c
>> @@ -74,10 +74,8 @@
>>    * only supports devices with a single interrupt on the main device stored in
>>    * &drm_device.dev and set as the device paramter in drm_dev_alloc().
>>    *
>> - * These IRQ helpers are strictly optional. Drivers which roll their own only
>> - * need to set &drm_device.irq_enabled to signal the DRM core that vblank
>> - * interrupts are working. Since these helpers don't automatically clean up the
>> - * requested interrupt like e.g. devm_request_irq() they're not really
>> + * These IRQ helpers are strictly optional. Since these helpers don't automatically
>> + * clean up the requested interrupt like e.g. devm_request_irq() they're not really
>>    * recommended.
>>    */
>>   
>> @@ -91,9 +89,7 @@
>>    * and after the installation.
>>    *
>>    * This is the simplified helper interface provided for drivers with no special
>> - * needs. Drivers which need to install interrupt handlers for multiple
>> - * interrupts must instead set &drm_device.irq_enabled to signal the DRM core
>> - * that vblank interrupts are available.
>> + * needs.
>>    *
>>    * @irq must match the interrupt number that would be passed to request_irq(),
>>    * if called directly instead of using this helper function.
>> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
>> index 3417e1ac7918..a98a4aad5037 100644
>> --- a/drivers/gpu/drm/drm_vblank.c
>> +++ b/drivers/gpu/drm/drm_vblank.c
>> @@ -1748,8 +1748,13 @@ int drm_wait_vblank_ioctl(struct drm_device *dev, void *data,
>>   	unsigned int pipe_index;
>>   	unsigned int flags, pipe, high_pipe;
>>   
>> -	if (!dev->irq_enabled)
>> -		return -EOPNOTSUPP;
>> +	if  (drm_core_check_feature(dev, DRIVER_MODESET)) {
>> +		if (!drm_dev_has_vblank(dev))
>> +			return -EOPNOTSUPP;
>> +	} else {
>> +		if (!dev->irq_enabled)
>> +			return -EOPNOTSUPP;
>> +	}
> 
> For a system call that is used quite a lot by userspace we have increased the code size
> in a noticeable way. Can we not cache it privately?

I'm not quite sure that I understand your concern. The additionally 
called functions are trivial one-liners; probably inlined anyway.

However, irq_enabled is only relevant for legacy drivers and will 
eventually disappear behind CONFIG_DRM_LEGACY. We can rewrite the test 
like this:

ifdef CONFIG_DRM_LEGACY
   if (unlikely(check_feature(dev, DRIVER_LEGACY))) {
     if (!irq_enabled)
       return;
   } else
#endif
   {
     if (!has_vblank_support(dev))
       return;
   }

As CONFIG_DRM_LEGACY is most likely disabled on concurrent systems, we'd 
get a single test for the modern drivers. If DRM_LEGACYis on, the 
compiler at least knows that the else branch is preferred.

Best regards
Thomas

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

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

* Re: [PATCH v2 09/22] drm/imx: Don't set struct drm_device.irq_enabled
  2021-06-22 14:09 ` [PATCH v2 09/22] drm/imx: " Thomas Zimmermann
@ 2021-06-23  6:43   ` Laurentiu Palcu
  0 siblings, 0 replies; 33+ messages in thread
From: Laurentiu Palcu @ 2021-06-23  6:43 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: daniel, airlied, alexander.deucher, christian.koenig, Xinhui.Pan,
	james.qian.wang, liviu.dudau, mihail.atanassov, brian.starkey,
	maarten.lankhorst, mripard, inki.dae, jy0922.shim, sw0312.kim,
	kyungmin.park, krzysztof.kozlowski, xinliang.liu, tiantao6,
	john.stultz, kong.kongxinwei, puck.chen, l.stach, p.zabel,
	shawnguo, s.hauer, kernel, festevam, linux-imx, chunkuang.hu,
	matthias.bgg, bskeggs, tomba, hjc, heiko, benjamin.gaignard,
	yannick.fertre, philippe.cornu, mcoquelin.stm32,
	alexandre.torgue, wens, jernej.skrabec, thierry.reding,
	jonathanh, jyri.sarha, emma, linux-graphics-maintainer, zackr,
	hyun.kwon, laurent.pinchart, michal.simek, amd-gfx, dri-devel,
	linux-arm-kernel, linux-samsung-soc, linux-mediatek, nouveau,
	linux-rockchip, linux-stm32, linux-sunxi, linux-tegra

Hi Thomas,

On Tue, Jun 22, 2021 at 04:09:49PM +0200, Thomas Zimmermann wrote:
> The field drm_device.irq_enabled is only used by legacy drivers
> with userspace modesetting. Don't set it in imx.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/imx/dcss/dcss-kms.c |  3 ---

Not sure if it's worth the effort but, since DCSS is a completely
self-contained driver, maybe it would be good to split this patch in 2
as well.

Anyway, for DCSS bit:

Acked-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>

Thanks,
laurentiu

>  drivers/gpu/drm/imx/imx-drm-core.c  | 11 -----------
>  2 files changed, 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> index 37ae68a7fba5..917834b1c80e 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -133,8 +133,6 @@ struct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *dcss)
>  	if (ret)
>  		goto cleanup_mode_config;
>  
> -	drm->irq_enabled = true;
> -
>  	ret = dcss_kms_bridge_connector_init(kms);
>  	if (ret)
>  		goto cleanup_mode_config;
> @@ -178,7 +176,6 @@ void dcss_kms_detach(struct dcss_kms_dev *kms)
>  	drm_kms_helper_poll_fini(drm);
>  	drm_atomic_helper_shutdown(drm);
>  	drm_crtc_vblank_off(&kms->crtc.base);
> -	drm->irq_enabled = false;
>  	drm_mode_config_cleanup(drm);
>  	dcss_crtc_deinit(&kms->crtc, drm);
>  	drm->dev_private = NULL;
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 76819a8ac37f..9558e9e1b431 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -207,17 +207,6 @@ static int imx_drm_bind(struct device *dev)
>  	if (IS_ERR(drm))
>  		return PTR_ERR(drm);
>  
> -	/*
> -	 * enable drm irq mode.
> -	 * - with irq_enabled = true, we can use the vblank feature.
> -	 *
> -	 * P.S. note that we wouldn't use drm irq handler but
> -	 *      just specific driver own one instead because
> -	 *      drm framework supports only one irq handler and
> -	 *      drivers can well take care of their interrupts
> -	 */
> -	drm->irq_enabled = true;
> -
>  	/*
>  	 * set max width and height as default value(4096x4096).
>  	 * this value would be used to check framebuffer size limitation
> -- 
> 2.32.0
> 

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

* Re: [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled
  2021-06-22 16:11 ` Laurent Pinchart
  2021-06-22 16:17   ` Laurent Pinchart
@ 2021-06-23  6:46   ` Thomas Zimmermann
  1 sibling, 0 replies; 33+ messages in thread
From: Thomas Zimmermann @ 2021-06-23  6:46 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: emma, airlied, nouveau, liviu.dudau, alexandre.torgue, dri-devel,
	michal.simek, linux-tegra, thierry.reding, amd-gfx,
	benjamin.gaignard, mihail.atanassov, linux-stm32,
	linux-samsung-soc, jy0922.shim, krzysztof.kozlowski,
	linux-rockchip, linux-mediatek, wens, jernej.skrabec, jonathanh,
	xinliang.liu, kong.kongxinwei, james.qian.wang, linux-imx,
	linux-graphics-maintainer, linux-sunxi, bskeggs, chunkuang.hu,
	puck.chen, s.hauer, laurentiu.palcu, matthias.bgg, kernel,
	linux-arm-kernel, mcoquelin.stm32, hyun.kwon, tomba, jyri.sarha,
	yannick.fertre, Xinhui.Pan, sw0312.kim, hjc, christian.koenig,
	kyungmin.park, philippe.cornu, alexander.deucher, tiantao6,
	shawnguo


[-- Attachment #1.1: Type: text/plain, Size: 3137 bytes --]



Am 22.06.21 um 18:11 schrieb Laurent Pinchart:
> Hi Thomas,
> 
> Thank you for the patches.
> 
> On Tue, Jun 22, 2021 at 04:09:40PM +0200, Thomas Zimmermann wrote:
>> Remove references to struct drm_device.irq_enabled from modern
>> DRM drivers and core.
>>
>> KMS drivers enable IRQs for their devices internally. They don't
>> have to keep track of the IRQ state via irq_enabled. For vblanking,
>> it's cleaner to test for vblanking support directly than to test
>> for enabled IRQs.
>>
>> This used to be a single patch, [1] but it's now a full series.
>>
>> The first 3 patches replace instances of irq_enabled that are not
>> required.
>>
>> Patch 4 fixes vblank ioctls to actually test for vblank support
>> instead of IRQs.
>>
>> THe rest of the patchset removes irq_enabled from all non-legacy
>> drivers. The only exception is omapdrm, which has an internal
>> dpendency on the field's value. For this drivers, the state gets
>> duplicated internally.
>>
>> With the patchset applied, drivers can later switch over to plain
>> Linux IRQ interfaces and DRM's IRQ midlayer can be declared legacy.
>>
>> v2:
>> 	* keep the original test for legacy drivers in
>> 	  drm_wait_vblank_ioctl() (Daniel)
>>
>> [1] https://lore.kernel.org/dri-devel/20210608090301.4752-1-tzimmermann@suse.de/
>>
>> Thomas Zimmermann (22):
>>    drm/amdgpu: Track IRQ state in local device state
>>    drm/hibmc: Call drm_irq_uninstall() unconditionally
>>    drm/radeon: Track IRQ state in local device state
>>    drm: Don't test for IRQ support in VBLANK ioctls
>>    drm/komeda: Don't set struct drm_device.irq_enabled
>>    drm/malidp: Don't set struct drm_device.irq_enabled
>>    drm/exynos: Don't set struct drm_device.irq_enabled
>>    drm/kirin: Don't set struct drm_device.irq_enabled
>>    drm/imx: Don't set struct drm_device.irq_enabled
>>    drm/mediatek: Don't set struct drm_device.irq_enabled
>>    drm/nouveau: Don't set struct drm_device.irq_enabled
>>    drm/omapdrm: Track IRQ state in local device state
>>    drm/rockchip: Don't set struct drm_device.irq_enabled
>>    drm/sti: Don't set struct drm_device.irq_enabled
>>    drm/stm: Don't set struct drm_device.irq_enabled
>>    drm/sun4i: Don't set struct drm_device.irq_enabled
>>    drm/tegra: Don't set struct drm_device.irq_enabled
>>    drm/tidss: Don't use struct drm_device.irq_enabled
>>    drm/vc4: Don't set struct drm_device.irq_enabled
>>    drm/vmwgfx: Don't set struct drm_device.irq_enabled
>>    drm/xlnx: Don't set struct drm_device.irq_enabled
>>    drm/zte: Don't set struct drm_device.irq_enabled
> 
> The list seems to be missing armada, rcar-du and vkms. It would also be
> nice to address i915 if possible.

Indeed. I grepped for \>irq_enabled. But some few drivers use 
.irq_enabled. I'll fix this in the patchset's next iteration. Thanks for 
double checking.

Best regards
Thomas


-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

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

* Re: [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls
  2021-06-23  6:43     ` Thomas Zimmermann
@ 2021-06-23 12:15       ` Liviu Dudau
  0 siblings, 0 replies; 33+ messages in thread
From: Liviu Dudau @ 2021-06-23 12:15 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: emma, airlied, nouveau, alexandre.torgue, dri-devel,
	michal.simek, linux-tegra, thierry.reding, laurent.pinchart,
	benjamin.gaignard, mihail.atanassov, linux-stm32,
	linux-samsung-soc, jy0922.shim, krzysztof.kozlowski,
	linux-rockchip, linux-mediatek, wens, jernej.skrabec, jonathanh,
	xinliang.liu, kong.kongxinwei, james.qian.wang, linux-imx,
	linux-graphics-maintainer, linux-sunxi, bskeggs, chunkuang.hu,
	puck.chen, s.hauer, laurentiu.palcu, matthias.bgg, kernel,
	linux-arm-kernel, mcoquelin.stm32, amd-gfx, hyun.kwon, tomba,
	jyri.sarha, yannick.fertre, Xinhui.Pan, sw0312.kim, hjc,
	christian.koenig, kyungmin.park, philippe.cornu,
	alexander.deucher, tiantao6, shawnguo

Hi Thomas,

On Wed, Jun 23, 2021 at 08:43:07AM +0200, Thomas Zimmermann wrote:
> Hi Liviu
> 
> Am 22.06.21 um 17:25 schrieb Liviu Dudau:
> > Hello,
> > 
> > On Tue, Jun 22, 2021 at 04:09:44PM +0200, Thomas Zimmermann wrote:
> > > For KMS drivers, replace the IRQ check in VBLANK ioctls with a check for
> > > vblank support. IRQs might be enabled wthout vblanking being supported.
> > > 
> > > This change also removes the DRM framework's only dependency on IRQ state
> > > for non-legacy drivers. For legacy drivers with userspace modesetting,
> > > the original test remains in drm_wait_vblank_ioctl().
> > > 
> > > v2:
> > > 	* keep the old test for legacy drivers in
> > > 	  drm_wait_vblank_ioctl() (Daniel)
> > > 
> > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> > > ---
> > >   drivers/gpu/drm/drm_irq.c    | 10 +++-------
> > >   drivers/gpu/drm/drm_vblank.c | 13 +++++++++----
> > >   2 files changed, 12 insertions(+), 11 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> > > index c3bd664ea733..1d7785721323 100644
> > > --- a/drivers/gpu/drm/drm_irq.c
> > > +++ b/drivers/gpu/drm/drm_irq.c
> > > @@ -74,10 +74,8 @@
> > >    * only supports devices with a single interrupt on the main device stored in
> > >    * &drm_device.dev and set as the device paramter in drm_dev_alloc().
> > >    *
> > > - * These IRQ helpers are strictly optional. Drivers which roll their own only
> > > - * need to set &drm_device.irq_enabled to signal the DRM core that vblank
> > > - * interrupts are working. Since these helpers don't automatically clean up the
> > > - * requested interrupt like e.g. devm_request_irq() they're not really
> > > + * These IRQ helpers are strictly optional. Since these helpers don't automatically
> > > + * clean up the requested interrupt like e.g. devm_request_irq() they're not really
> > >    * recommended.
> > >    */
> > > @@ -91,9 +89,7 @@
> > >    * and after the installation.
> > >    *
> > >    * This is the simplified helper interface provided for drivers with no special
> > > - * needs. Drivers which need to install interrupt handlers for multiple
> > > - * interrupts must instead set &drm_device.irq_enabled to signal the DRM core
> > > - * that vblank interrupts are available.
> > > + * needs.
> > >    *
> > >    * @irq must match the interrupt number that would be passed to request_irq(),
> > >    * if called directly instead of using this helper function.
> > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > > index 3417e1ac7918..a98a4aad5037 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -1748,8 +1748,13 @@ int drm_wait_vblank_ioctl(struct drm_device *dev, void *data,
> > >   	unsigned int pipe_index;
> > >   	unsigned int flags, pipe, high_pipe;
> > > -	if (!dev->irq_enabled)
> > > -		return -EOPNOTSUPP;
> > > +	if  (drm_core_check_feature(dev, DRIVER_MODESET)) {
> > > +		if (!drm_dev_has_vblank(dev))
> > > +			return -EOPNOTSUPP;
> > > +	} else {
> > > +		if (!dev->irq_enabled)
> > > +			return -EOPNOTSUPP;
> > > +	}
> > 
> > For a system call that is used quite a lot by userspace we have increased the code size
> > in a noticeable way. Can we not cache it privately?
> 
> I'm not quite sure that I understand your concern. The additionally called
> functions are trivial one-liners; probably inlined anyway.

They are inlined. However we replace the pointer dereference (which can be calculated
at compile time as offset from a base pointer) with the code in
drm_core_check_all_features() that does 3 pointer dereferences, masking and logical
AND before checking for matching value.

> 
> However, irq_enabled is only relevant for legacy drivers and will eventually
> disappear behind CONFIG_DRM_LEGACY. We can rewrite the test like this:

I get the point that irq_enabled is legacy. However the IOCTL call is not and usually
is used in time critical code to wait for vblank before starting the old buffers for
a new frame. At 60Hz that's probably less of a concern, but at 120Hz refresh rate and
reduced vblank time your time slice allocation for new work matters.

Best regards,
Liviu

> 
> ifdef CONFIG_DRM_LEGACY
>   if (unlikely(check_feature(dev, DRIVER_LEGACY))) {
>     if (!irq_enabled)
>       return;
>   } else
> #endif
>   {
>     if (!has_vblank_support(dev))
>       return;
>   }
> 
> As CONFIG_DRM_LEGACY is most likely disabled on concurrent systems, we'd get
> a single test for the modern drivers. If DRM_LEGACYis on, the compiler at
> least knows that the else branch is preferred.
> 
> Best regards
> Thomas
> 
> -- 
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer
> 




-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

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

end of thread, other threads:[~2021-06-23 12:15 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-22 14:09 [PATCH v2 00/22] Deprecate struct drm_device.irq_enabled Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 01/22] drm/amdgpu: Track IRQ state in local device state Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 02/22] drm/hibmc: Call drm_irq_uninstall() unconditionally Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 03/22] drm/radeon: Track IRQ state in local device state Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 04/22] drm: Don't test for IRQ support in VBLANK ioctls Thomas Zimmermann
2021-06-22 15:25   ` Liviu Dudau
2021-06-23  6:43     ` Thomas Zimmermann
2021-06-23 12:15       ` Liviu Dudau
2021-06-22 14:09 ` [PATCH v2 05/22] drm/komeda: Don't set struct drm_device.irq_enabled Thomas Zimmermann
2021-06-22 15:25   ` Liviu Dudau
2021-06-22 14:09 ` [PATCH v2 06/22] drm/malidp: " Thomas Zimmermann
2021-06-22 15:26   ` Liviu Dudau
2021-06-22 14:09 ` [PATCH v2 07/22] drm/exynos: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 08/22] drm/kirin: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 09/22] drm/imx: " Thomas Zimmermann
2021-06-23  6:43   ` Laurentiu Palcu
2021-06-22 14:09 ` [PATCH v2 10/22] drm/mediatek: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 11/22] drm/nouveau: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 12/22] drm/omapdrm: Track IRQ state in local device state Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 13/22] drm/rockchip: Don't set struct drm_device.irq_enabled Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 14/22] drm/sti: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 15/22] drm/stm: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 16/22] drm/sun4i: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 17/22] drm/tegra: " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 18/22] drm/tidss: Don't use " Thomas Zimmermann
2021-06-22 14:09 ` [PATCH v2 19/22] drm/vc4: Don't set " Thomas Zimmermann
2021-06-22 14:10 ` [PATCH v2 20/22] drm/vmwgfx: " Thomas Zimmermann
2021-06-22 14:10 ` [PATCH v2 21/22] drm/xlnx: " Thomas Zimmermann
2021-06-22 14:10 ` [PATCH v2 22/22] drm/zte: " Thomas Zimmermann
2021-06-22 15:24 ` [PATCH v2 00/22] Deprecate " Daniel Vetter
2021-06-22 16:11 ` Laurent Pinchart
2021-06-22 16:17   ` Laurent Pinchart
2021-06-23  6:46   ` Thomas Zimmermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).