Author: phk
Date: Sun Jun 17 21:02:48 2012
New Revision: 237203
URL: http://svn.freebsd.org/changeset/base/237203

Log:
  On certain newer Intel Atom based motherboards, for instance the
  D2500CC which I have, syscons in text-mode fails to show the expected
  contents due to write errors into video-memory.
  
  At least one of the causes is that we copy from syscons internal buffer
  to the video memory with optimized bcopy(9) which uses >16bit operations.
  
  Until now, 32bit and wider operations have always worked on the video
  memory, but since I cannot find a single source which says that this
  SHALL work, and since these chipsets/bugs are now out there, this
  commit changes syscons to always use 16bit copies on i386 & amd64.
  
  This may be relevevant for PR's:
        166262
        166639
  and various other bug reports floating elsewhere on the net, but
  I lack hardware to test those.

Modified:
  head/sys/dev/fb/fbreg.h

Modified: head/sys/dev/fb/fbreg.h
==============================================================================
--- head/sys/dev/fb/fbreg.h     Sun Jun 17 20:45:45 2012        (r237202)
+++ head/sys/dev/fb/fbreg.h     Sun Jun 17 21:02:48 2012        (r237203)
@@ -35,9 +35,16 @@
 
 /* some macros */
 #if defined(__amd64__) || defined(__i386__)
-#define bcopy_io(s, d, c)      bcopy((void *)(s), (void *)(d), (c))
-#define bcopy_toio(s, d, c)    bcopy((void *)(s), (void *)(d), (c))
-#define bcopy_fromio(s, d, c)  bcopy((void *)(s), (void *)(d), (c))
+
+static __inline void
+copyw(uint16_t *src, uint16_t *dst, size_t size)
+{
+       while (size--)
+               *dst++ = *src++;
+}
+#define bcopy_io(s, d, c)      copyw((void*)(s), (void*)(d), (c))
+#define bcopy_toio(s, d, c)    copyw((void*)(s), (void*)(d), (c))
+#define bcopy_fromio(s, d, c)  copyw((void*)(s), (void*)(d), (c))
 #define bzero_io(d, c)         bzero((void *)(d), (c))
 #define fill_io(p, d, c)       fill((p), (void *)(d), (c))
 #define fillw_io(p, d, c)      fillw((p), (void *)(d), (c))
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to