Message ID | 20210622141002.11590-1-tzimmermann@suse.de (mailing list archive) |
---|---|
Headers | show |
Series | Deprecate struct drm_device.irq_enabled | expand |
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 >
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
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
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