On 07.02.2018 18:45, Thierry Reding wrote: > From: Thierry Reding <treding@xxxxxxxxxx> > > This fixes hangs with legacy applications that use the mmap() syscall on > the fbdev device to map framebuffer memory. The fbdev implementation for > mmap() creates a mapping that conflicts with DRM usage and causes a hang > when the memory is accessed through the mapping. That helps using applications making use of mmap & fbdev on an Apalis TK1! Tested-by: Stefan Agner <stefan@xxxxxxxx> -- Stefan > > Reported-by: Marcel Ziswiler <marcel.ziswiler@xxxxxxxxxxx> > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> > --- > drivers/gpu/drm/tegra/fb.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c > index 001cb77e2f59..0786159edef3 100644 > --- a/drivers/gpu/drm/tegra/fb.c > +++ b/drivers/gpu/drm/tegra/fb.c > @@ -224,12 +224,28 @@ struct drm_framebuffer *tegra_fb_create(struct > drm_device *drm, > } > > #ifdef CONFIG_DRM_FBDEV_EMULATION > +static int tegra_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) > +{ > + struct drm_fb_helper *helper = info->par; > + struct tegra_bo *bo; > + int err; > + > + bo = tegra_fb_get_plane(helper->fb, 0); > + > + err = drm_gem_mmap_obj(&bo->gem, bo->gem.size, vma); > + if (err < 0) > + return err; > + > + return __tegra_gem_mmap(&bo->gem, vma); > +} > + > static struct fb_ops tegra_fb_ops = { > .owner = THIS_MODULE, > DRM_FB_HELPER_DEFAULT_OPS, > .fb_fillrect = drm_fb_helper_sys_fillrect, > .fb_copyarea = drm_fb_helper_sys_copyarea, > .fb_imageblit = drm_fb_helper_sys_imageblit, > + .fb_mmap = tegra_fb_mmap, > }; > > static int tegra_fbdev_probe(struct drm_fb_helper *helper, -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html