[PATCH xf86-video-ati] Don't set up black scanout buffer if LeaveVT is called from CloseScreen

Alex Deucher alexdeucher at gmail.com
Fri Sep 20 18:52:48 UTC 2019


On Fri, Sep 20, 2019 at 1:01 PM Michel Dänzer <michel at daenzer.net> wrote:
>
> From: Michel Dänzer <mdaenzer at redhat.com>
>
> Avoids a crash described in
> https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/merge_requests/43#note_223718
>
> (Ported from amdgpu commit 5b8bc9fc505c551dcd9b0ed5ab835a49fa4f9fda)
>
> Signed-off-by: Michel Dänzer <mdaenzer at redhat.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  src/radeon_kms.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/src/radeon_kms.c b/src/radeon_kms.c
> index 777fc14ee..107c1ce71 100644
> --- a/src/radeon_kms.c
> +++ b/src/radeon_kms.c
> @@ -2629,6 +2629,12 @@ void RADEONLeaveVT_KMS(ScrnInfoPtr pScrn)
>         unsigned w = 0, h = 0;
>         int i;
>
> +       /* If we're called from CloseScreen, trying to clear the black
> +        * scanout BO will likely crash and burn
> +        */
> +       if (!pScreen->GCperDepth[0])
> +           goto hide_cursors;
> +
>         /* Compute maximum scanout dimensions of active CRTCs */
>         for (i = 0; i < xf86_config->num_crtc; i++) {
>             crtc = xf86_config->crtc[i];
> @@ -2701,8 +2707,10 @@ void RADEONLeaveVT_KMS(ScrnInfoPtr pScrn)
>                pScrn->displayWidth * info->pixel_bytes * pScrn->virtualY);
>      }
>
> -    TimerSet(NULL, 0, 1000, cleanup_black_fb, pScreen);
> +    if (pScreen->GCperDepth[0])
> +       TimerSet(NULL, 0, 1000, cleanup_black_fb, pScreen);
>
> + hide_cursors:
>      xf86_hide_cursors (pScrn);
>
>      radeon_drop_drm_master(pScrn);
> --
> 2.23.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list