Author: gonzo
Date: Wed Oct 19 01:35:21 2016
New Revision: 307589
URL: https://svnweb.freebsd.org/changeset/base/307589

Log:
  MFC r306555:
  
  Provide way for framebuffer driver to request mmap(2) mapping type
  
  On ARM if memattr is not overriden mmap(2) maps framebuffer
  memory as WBWA which means part of changes to content in userland
  end up in cache and appear on screen gradually as cache lines are
  evicted. This change adds configurable memattr that hardware fb
  implementation can set to get the memory mapping type it
  requires:
  
  - Add new flag FB_FLAG_MEMATTR that indicates that framebuffer
      driver overrides default memattr
  - Add new field fb_memattr to struct fb_info to specify requested
      memattr
  
  Reviewed by:  ray
  Differential Revision:        https://reviews.freebsd.org/D8064

Modified:
  stable/11/sys/dev/fb/fbd.c
  stable/11/sys/sys/fbio.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/fb/fbd.c
==============================================================================
--- stable/11/sys/dev/fb/fbd.c  Wed Oct 19 00:14:22 2016        (r307588)
+++ stable/11/sys/dev/fb/fbd.c  Wed Oct 19 01:35:21 2016        (r307589)
@@ -178,6 +178,8 @@ fb_mmap(struct cdev *dev, vm_ooffset_t o
                        *paddr = vtophys((uint8_t *)info->fb_vbase + offset);
                else
                        *paddr = info->fb_pbase + offset;
+               if (info->fb_flags & FB_FLAG_MEMATTR)
+                       *memattr = info->fb_memattr;
                return (0);
        }
        return (EINVAL);

Modified: stable/11/sys/sys/fbio.h
==============================================================================
--- stable/11/sys/sys/fbio.h    Wed Oct 19 00:14:22 2016        (r307588)
+++ stable/11/sys/sys/fbio.h    Wed Oct 19 01:35:21 2016        (r307589)
@@ -142,6 +142,8 @@ struct fb_info {
        uint32_t        fb_flags;
 #define        FB_FLAG_NOMMAP          1       /* mmap unsupported. */
 #define        FB_FLAG_NOWRITE         2       /* disable writes for the time 
being */
+#define        FB_FLAG_MEMATTR         4       /* override memattr for mmap */
+       vm_memattr_t    fb_memattr;
        int             fb_stride;
        int             fb_bpp;         /* bits per pixel */
        uint32_t        fb_cmap[16];
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to