On Fri, Nov 18, 2016 at 09:52:52PM +0200, ville.syrjala at linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala at linux.intel.com> > > We want framebuffers to be mostly useable already before > drm_framebuffer_init() get called, and so we will start demanding that > all the interesting format/size/etc. information be filled in before > drm_framebuffer_init(). drm_helper_mode_fill_fb_struct() will do that > for us, so let's make sure it gets called before drm_framebuffer_init(). > > Cc: Dave Airlie <airlied at redhat.com> > Cc: Gerd Hoffmann <kraxel at redhat.com> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Yup, kernel-doc even says that drm_framebuffer_init() must be the very last thing or races. I've done a full audit, and qxl&virtio are the only two offenders. On both patches: Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch> > --- > drivers/gpu/drm/virtio/virtgpu_display.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c > b/drivers/gpu/drm/virtio/virtgpu_display.c > index 8b80fdd0e0a8..fad5a1cc5903 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_display.c > +++ b/drivers/gpu/drm/virtio/virtgpu_display.c > @@ -88,12 +88,13 @@ virtio_gpu_framebuffer_init(struct drm_device *dev, > > bo = gem_to_virtio_gpu_obj(obj); > > + drm_helper_mode_fill_fb_struct(dev, &vgfb->base, mode_cmd); > + > ret = drm_framebuffer_init(dev, &vgfb->base, &virtio_gpu_fb_funcs); > if (ret) { > vgfb->obj = NULL; > return ret; > } > - drm_helper_mode_fill_fb_struct(dev, &vgfb->base, mode_cmd); > > spin_lock_init(&vgfb->dirty_lock); > vgfb->x1 = vgfb->y1 = INT_MAX; > -- > 2.7.4 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch