On 21/06/17 10:44 AM, Mario Kleiner wrote: > With instantaneous high precision vblank timestamping > that updates at leading edge of vblank, a cooked hw > vblank counter which increments at leading edge of > vblank, and reliable page flip execution and completion > at leading edge of vblank, we should meet the requirements > for fast/immediate vblank irq disable/enable. > > Testing on Linux-4.12-rc5 + drm-next on a Radeon R9 380 > Tonga Pro (DCE 10) with timing measurement equipment > indicates this works fine, so allow immediate vblank > disable for power saving. > > For debugging in case of unexpected trouble, booting > with kernel cmdline option drm.vblankoffdelay=0 > (or echo 0 > /sys/module/drm/parameters/vblankoffdelay) > would keep vblank irqs permanently on to approximate old > behavior. > > Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com> > Cc: Alex Deucher <alexander.deucher at amd.com> > Cc: Michel Dänzer <michel.daenzer at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > index 62da6c5..a28f8aa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > @@ -220,6 +220,10 @@ int amdgpu_irq_init(struct amdgpu_device *adev) > int r = 0; > > spin_lock_init(&adev->irq.lock); > + > + /* Disable vblank irqs aggressively for power-saving */ > + adev->ddev->vblank_disable_immediate = true; > + > r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc); > if (r) { > return r; > Reviewed-by: Michel Dänzer <michel.daenzer at amd.com> -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer