linux/drivers/gpu/drm/tiny
Thomas Zimmermann 42dd66d377 drm/cirrus-qemu: Use vblank timer
Use a vblank timer to simulate the vblank interrupt. The DRM vblank
helpers provide an implementation on top of Linux' hrtimer. Cirrus-qemu
enables and disables the timer as part of the CRTC. The atomic_flush
callback sets up the event. Like vblank interrupts, the vblank timer
fires at the rate of the display refresh.

Most userspace limits its page flip rate according to the DRM vblank
event. Cirrus-qemu' virtual hardware does not provide vblank interrupts,
so DRM sends each event ASAP. With the fast access times of virtual display
memory, the event rate is much higher than the display mode's refresh
rate; creating the next page flip almost immediately. This leads to
excessive CPU overhead from even small display updates, such as moving
the mouse pointer.

This problem affects cirrus-qemu and all other virtual displays. See [1]
for a discussion in the context of hypervdrm.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/dri-devel/SN6PR02MB415702B00D6D52B0EE962C98D46CA@SN6PR02MB4157.namprd02.prod.outlook.com/ # [1]
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://lore.kernel.org/r/20251008121450.227997-1-tzimmermann@suse.de
2025-10-15 10:29:49 +02:00
..
Kconfig drm/tiny: pixpaper: Fix missing dependency on DRM_GEM_SHMEM_HELPER 2025-09-23 14:07:04 +02:00
Makefile drm: tiny: Add support for Mayqueen Pixpaper e-ink panel 2025-09-05 14:53:07 +02:00
appletbdrm.c drm/appletbdrm: use %p4cl instead of %p4cc 2025-04-21 10:18:30 -04:00
arcpgu.c drm/tiny: move to devm_platform_ioremap_resource() usage 2025-02-26 15:27:08 +01:00
bochs.c drm/bochs: Use vblank timer 2025-10-15 10:29:39 +02:00
cirrus-qemu.c drm/cirrus-qemu: Use vblank timer 2025-10-15 10:29:49 +02:00
gm12u320.c drm/gm12u320: Set struct drm_device.dma_dev 2025-03-12 09:03:55 +01:00
hx8357d.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
ili9163.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
ili9225.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
ili9341.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
ili9486.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
mi0283qt.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
panel-mipi-dbi.c drm/tiny: panel-mipi-dbi: Use drm_client_setup_with_fourcc() 2025-05-12 08:57:04 +02:00
pixpaper.c drm/pixpaper: Fix return type of pixpaper_mode_valid() 2025-09-15 12:29:37 +02:00
repaper.c drm/repaper: Do not access GEM-DMA vaddr directly 2025-08-11 18:49:05 +02:00
sharp-memory.c drm/sharp-memory: Do not access GEM-DMA vaddr directly 2025-08-11 18:49:55 +02:00