svn commit: r237203 - head/sys/dev/fb

Poul-Henning Kamp phk at FreeBSD.org
Sun Jun 17 21:02:49 UTC 2012


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))


More information about the svn-src-all mailing list