From: Jani Nikula <jani.nikula@linux.intel.com>
To: Lyude Paul <lyude@redhat.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
freedreno@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
nouveau@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
linux-hyperv@vger.kernel.org, linux-sunxi@lists.linux.dev,
asahi@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com,
linux-samsung-soc@vger.kernel.org,
linux-amlogic@lists.infradead.org,
linux-mediatek@lists.infradead.org,
intel-gfx@lists.freedesktop.org, linux-aspeed@lists.ozlabs.org,
linux-rockchip@lists.infradead.org, linux-tegra@vger.kernel.org,
linux-renesas-soc@vger.kernel.org, linux-mips@vger.kernel.org,
amd-gfx@lists.freedesktop.org, spice-devel@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, imx@lists.linux.dev
Subject: Re: [PATCH 0/5] drm/vblank: Enforce all-or-nothing vblank support
Date: Mon, 17 Aug 2026 15:41:02 +0300 [thread overview]
Message-ID: <5f06e91a5ff0e5bb887b72e4ff9077c45cd9216e@intel.com> (raw)
In-Reply-To: <20260814203542.1405135-1-lyude@redhat.com>
On Fri, 14 Aug 2026, Lyude Paul <lyude@redhat.com> wrote:
> One of the oddities with DRM that is leftover from the old days is how
> vblank support is implemented by drivers. This has caused some minor
> issues for the rust bindings for KMS which could be worked around.
> However, it seems like a much better idea to fix this on the C side.
> Those oddities are mainly:
>
> * There's nothing in the vblank core that actually ensures that all
> CRTCs implement vblank support if one of them do. On Rust's side, we
> can't have this and have to ensure either the whole device has vblank
> support or not - otherwise it would be quite painful ensuring we don't
> expose vblank methods to drivers that can't use them.
> This additionally means such a situation would lead to UB.
> * There is a second variable for keeping track of the number of CRTCs
> and it's kind of broken and confusing. Even worse, we currently allow
> the vblank API to allow a driver to specify a different number of
> CRTCs then it actually has.
>
> So, let's just go ahead and fix this across the whole tree, and enforce
> that a driver must either implement hardware vblank support for all
> CRTCs or no CRTCs.
For i915, the relevant init order is currently:
- drm_vblank_init()
- drm_mode_config_init()
- drm_crtc_init_with_planes() for each CRTC
For the patch series to work, drm_vblank_init() would have to happen
after mode config and CRTC init. Off-hand, I couldn't say if there are
dependencies that make this change difficult.
I'd be surprised if i915 were the only driver like this.
BR,
Jani.
>
> Lyude Paul (5):
> drm/vblank: Add drm_device.has_hw_vblank
> drm/vblank: Remove drm->num_crtcs
> drm/vblank: Remove num_crtcs argument from drm_vblank_init()
> drm/vblank: Use drm_for_each_crtc() in drm_vblank_init()
> drm/vblank: Require all CRTCs implement vblank support in
> drm_vblank_init()
>
> drivers/gpu/drm/adp/adp_drv.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 2 +-
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
> .../gpu/drm/arm/display/komeda/komeda_kms.c | 2 +-
> drivers/gpu/drm/arm/hdlcd_drv.c | 2 +-
> drivers/gpu/drm/arm/malidp_drv.c | 2 +-
> drivers/gpu/drm/armada/armada_drv.c | 2 +-
> drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +-
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 2 +-
> drivers/gpu/drm/drm_vblank.c | 60 ++++++++++++-------
> drivers/gpu/drm/exynos/exynos_drm_drv.c | 2 +-
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 2 +-
> drivers/gpu/drm/gma500/psb_drv.c | 2 +-
> drivers/gpu/drm/gma500/psb_irq.c | 4 +-
> .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 2 +-
> .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 2 +-
> drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 2 +-
> .../drm/i915/display/intel_display_driver.c | 3 +-
> drivers/gpu/drm/imx/dc/dc-kms.c | 2 +-
> drivers/gpu/drm/imx/dcss/dcss-kms.c | 2 +-
> drivers/gpu/drm/imx/ipuv3/imx-drm-core.c | 2 +-
> drivers/gpu/drm/imx/lcdc/imx-lcdc.c | 2 +-
> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +-
> drivers/gpu/drm/kmb/kmb_drv.c | 2 +-
> drivers/gpu/drm/logicvc/logicvc_mode.c | 2 +-
> drivers/gpu/drm/loongson/lsdc_drv.c | 2 +-
> drivers/gpu/drm/mcde/mcde_drv.c | 2 +-
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 +-
> drivers/gpu/drm/meson/meson_drv.c | 2 +-
> drivers/gpu/drm/msm/msm_kms.c | 2 +-
> drivers/gpu/drm/mxsfb/lcdif_drv.c | 2 +-
> drivers/gpu/drm/mxsfb/mxsfb_drv.c | 2 +-
> drivers/gpu/drm/nouveau/nouveau_display.c | 2 +-
> drivers/gpu/drm/omapdrm/omap_drv.c | 2 +-
> drivers/gpu/drm/pl111/pl111_drv.c | 2 +-
> drivers/gpu/drm/qxl/qxl_display.c | 2 +-
> drivers/gpu/drm/radeon/atombios_crtc.c | 4 +-
> drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 +-
> drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 4 +-
> drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 2 +-
> drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 2 +-
> .../gpu/drm/renesas/shmobile/shmob_drm_drv.c | 2 +-
> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +-
> drivers/gpu/drm/sprd/sprd_drm.c | 2 +-
> drivers/gpu/drm/sti/sti_compositor.c | 2 +-
> drivers/gpu/drm/stm/ltdc.c | 2 +-
> drivers/gpu/drm/sun4i/sun4i_drv.c | 2 +-
> drivers/gpu/drm/tegra/drm.c | 2 +-
> drivers/gpu/drm/tidss/tidss_kms.c | 2 +-
> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +-
> drivers/gpu/drm/tiny/bochs.c | 2 +-
> drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +-
> drivers/gpu/drm/tve200/tve200_drv.c | 2 +-
> drivers/gpu/drm/vc4/vc4_kms.c | 6 +-
> drivers/gpu/drm/verisilicon/vs_drm.c | 2 +-
> drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
> drivers/gpu/drm/vkms/vkms_drv.c | 3 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c | 2 +-
> drivers/gpu/drm/xlnx/zynqmp_kms.c | 2 +-
> include/drm/drm_device.h | 10 +++-
> include/drm/drm_vblank.h | 2 +-
> 64 files changed, 114 insertions(+), 92 deletions(-)
>
>
> base-commit: 568d4cb5dcc5ec4e22975699b6ea67a30806884c
--
Jani Nikula, Intel
prev parent reply other threads:[~2026-08-17 12:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-14 20:35 [PATCH 0/5] drm/vblank: Enforce all-or-nothing vblank support Lyude Paul
2026-08-14 20:35 ` [PATCH 1/5] drm/vblank: Add drm_device.has_hw_vblank Lyude Paul
2026-08-14 20:35 ` [PATCH 2/5] drm/vblank: Remove drm->num_crtcs Lyude Paul
2026-08-14 20:35 ` [PATCH 3/5] drm/vblank: Remove num_crtcs argument from drm_vblank_init() Lyude Paul
2026-08-14 20:35 ` [PATCH 4/5] drm/vblank: Use drm_for_each_crtc() in drm_vblank_init() Lyude Paul
2026-08-14 20:35 ` [PATCH 5/5] drm/vblank: Require all CRTCs implement vblank support " Lyude Paul
2026-08-17 12:41 ` Jani Nikula [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5f06e91a5ff0e5bb887b72e4ff9077c45cd9216e@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=asahi@lists.linux.dev \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=imx@lists.linux.dev \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-aspeed@lists.ozlabs.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux-sunxi@lists.linux.dev \
--cc=linux-tegra@vger.kernel.org \
--cc=lyude@redhat.com \
--cc=nouveau@lists.freedesktop.org \
--cc=spice-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox