[PATCH] drm/radeon: Only call drm_vblank_on/off between drm_vblank_init/cleanup

Alex Deucher alexdeucher at gmail.com
Fri Apr 1 14:10:19 UTC 2016


On Fri, Apr 1, 2016 at 4:28 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Prevents the
>
>         if (WARN_ON(pipe >= dev->num_crtcs))
>
> in drm_vblank_on/off from triggering if acceleration fails to
> initialize, in which case we call drm_vblank_cleanup.
>
> Reported-and-Tested-by: Julian Margetson <runaway at candw.ms>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Applied.  Thanks!

Alex


> ---
>  drivers/gpu/drm/radeon/atombios_crtc.c      | 6 ++++--
>  drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 6 ++++--
>  2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
> index cf61e08..b80b08f 100644
> --- a/drivers/gpu/drm/radeon/atombios_crtc.c
> +++ b/drivers/gpu/drm/radeon/atombios_crtc.c
> @@ -275,13 +275,15 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
>                 if (ASIC_IS_DCE3(rdev) && !ASIC_IS_DCE6(rdev))
>                         atombios_enable_crtc_memreq(crtc, ATOM_ENABLE);
>                 atombios_blank_crtc(crtc, ATOM_DISABLE);
> -               drm_vblank_on(dev, radeon_crtc->crtc_id);
> +               if (dev->num_crtcs > radeon_crtc->crtc_id)
> +                       drm_vblank_on(dev, radeon_crtc->crtc_id);
>                 radeon_crtc_load_lut(crtc);
>                 break;
>         case DRM_MODE_DPMS_STANDBY:
>         case DRM_MODE_DPMS_SUSPEND:
>         case DRM_MODE_DPMS_OFF:
> -               drm_vblank_off(dev, radeon_crtc->crtc_id);
> +               if (dev->num_crtcs > radeon_crtc->crtc_id)
> +                       drm_vblank_off(dev, radeon_crtc->crtc_id);
>                 if (radeon_crtc->enabled)
>                         atombios_blank_crtc(crtc, ATOM_ENABLE);
>                 if (ASIC_IS_DCE3(rdev) && !ASIC_IS_DCE6(rdev))
> diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
> index 24152df..478d409 100644
> --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
> +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
> @@ -331,13 +331,15 @@ static void radeon_crtc_dpms(struct drm_crtc *crtc, int mode)
>                                                                          RADEON_CRTC_DISP_REQ_EN_B));
>                         WREG32_P(RADEON_CRTC_EXT_CNTL, crtc_ext_cntl, ~(mask | crtc_ext_cntl));
>                 }
> -               drm_vblank_on(dev, radeon_crtc->crtc_id);
> +               if (dev->num_crtcs > radeon_crtc->crtc_id)
> +                       drm_vblank_on(dev, radeon_crtc->crtc_id);
>                 radeon_crtc_load_lut(crtc);
>                 break;
>         case DRM_MODE_DPMS_STANDBY:
>         case DRM_MODE_DPMS_SUSPEND:
>         case DRM_MODE_DPMS_OFF:
> -               drm_vblank_off(dev, radeon_crtc->crtc_id);
> +               if (dev->num_crtcs > radeon_crtc->crtc_id)
> +                       drm_vblank_off(dev, radeon_crtc->crtc_id);
>                 if (radeon_crtc->crtc_id)
>                         WREG32_P(RADEON_CRTC2_GEN_CNTL, mask, ~(RADEON_CRTC2_EN | mask));
>                 else {
> --
> 2.8.0.rc3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list