diff options
Diffstat (limited to 'recipes-kernel/linux/linux-toradex-mainline-4.14/0011-drm-tegra-fb-Implement-fb_mmap-callback.patch')
-rw-r--r-- | recipes-kernel/linux/linux-toradex-mainline-4.14/0011-drm-tegra-fb-Implement-fb_mmap-callback.patch | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/recipes-kernel/linux/linux-toradex-mainline-4.14/0011-drm-tegra-fb-Implement-fb_mmap-callback.patch b/recipes-kernel/linux/linux-toradex-mainline-4.14/0011-drm-tegra-fb-Implement-fb_mmap-callback.patch deleted file mode 100644 index 7aa85ae..0000000 --- a/recipes-kernel/linux/linux-toradex-mainline-4.14/0011-drm-tegra-fb-Implement-fb_mmap-callback.patch +++ /dev/null @@ -1,56 +0,0 @@ -From b8f3f500e09c2c457efc2fcbfe8b7f815f2e6a0e Mon Sep 17 00:00:00 2001 -From: Thierry Reding <treding@nvidia.com> -Date: Wed, 7 Feb 2018 18:45:56 +0100 -Subject: [PATCH] drm/tegra: fb: Implement ->fb_mmap() callback - -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. - -Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> -Signed-off-by: Thierry Reding <treding@nvidia.com> -Tested-by: Stefan Agner <stefan@agner.ch> -Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> -Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> -Signed-off-by: Thierry Reding <treding@nvidia.com> ---- - 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, --- -2.15.1 - |