[PATCH 1/2] drm: handle cursor_set2 in restore_fbdev_mode

Daniel Vetter daniel at ffwll.ch
Fri Oct 2 00:12:15 PDT 2015


On Thu, Oct 01, 2015 at 01:22:42PM -0400, Alex Deucher wrote:
> On Thu, Oct 1, 2015 at 1:13 PM, Alex Deucher <alexdeucher at gmail.com> wrote:
> > On Thu, Oct 1, 2015 at 1:01 PM, Alex Deucher <alexdeucher at gmail.com> wrote:
> >> On Wed, Sep 30, 2015 at 11:50 PM, Michel Dänzer <michel at daenzer.net> wrote:
> >>> On 01.10.2015 03:47, Alex Deucher wrote:
> >>>> If a driver uses the cursor_set2 crtc callback rather than
> >>>> cursor_set, use that.  This fixes the fbdev helper for drivers
> >>>> that use cursor_set2.
> >>>>
> >>>> Change-Id: I127d3f8e72789ba70c3648140f87c6187864e130
> >>>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> >>>> ---
> >>>>  drivers/gpu/drm/drm_fb_helper.c | 6 +++++-
> >>>>  1 file changed, 5 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> >>>> index 418d299..ca08c47 100644
> >>>> --- a/drivers/gpu/drm/drm_fb_helper.c
> >>>> +++ b/drivers/gpu/drm/drm_fb_helper.c
> >>>> @@ -345,7 +345,11 @@ static bool restore_fbdev_mode(struct drm_fb_helper *fb_helper)
> >>>>               struct drm_crtc *crtc = mode_set->crtc;
> >>>>               int ret;
> >>>>
> >>>> -             if (crtc->funcs->cursor_set) {
> >>>> +             if (crtc->funcs->cursor_set2) {
> >>>> +                     ret = crtc->funcs->cursor_set2(crtc, NULL, 0, 0, 0, 0, 0);
> >>>> +                     if (ret)
> >>>> +                             error = true;
> >>>> +             } else if (crtc->funcs->cursor_set) {
> >>>>                       ret = crtc->funcs->cursor_set(crtc, NULL, 0, 0, 0);
> >>>>                       if (ret)
> >>>>                               error = true;
> >>>>
> >>>
> >>> Hah, nice catch. The series is
> >>>
> >>> Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
> >>>
> >>> (I assume you tested with something like killall -9 Xorg and confirming
> >>> sure the cursor doesn't stay visible in console)
> >>>
> >>
> >> The cursor still stays visible in the console.  Interestingly, the
> >> cursor still shows up in the console even without these patches.
> >
> > restore_fbdev_mode doesn't end up get called when I killall -9 X.
> 
> For clarity, drm_fb_helper_set_par which which ultimately calls
> restore_fbdev_mode never gets called.

You need to force restore the fbdev in your lastclose hook for that to
work.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list