For virtual display, it uses software timer to emulate the vsync interrupt, it doesn't have high precision, so doesn't support disable vblank immediately. BUG: SWDEV-129274 Signed-off-by: Emily Deng <Emily.Deng at amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index dc74c0b..914c5bf 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c @@ -237,9 +237,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev) } if (!amdgpu_device_has_dc_support(adev)) { - /* Disable vblank irqs aggressively for power-saving */ - /* XXX: can this be enabled for DC? */ - adev->ddev->vblank_disable_immediate = true; + if (!adev->enable_virtual_display) { + /* Disable vblank irqs aggressively for power-saving */ + /* XXX: can this be enabled for DC? */ + adev->ddev->vblank_disable_immediate = true; + } r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc); if (r) -- 1.9.1