Map framebuffer into userland as non-cachable (but normal) memory. We still
authorkettenis <kettenis@openbsd.org>
Mon, 18 Dec 2017 10:13:45 +0000 (10:13 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 18 Dec 2017 10:13:45 +0000 (10:13 +0000)
map the framebuffer as device memory in the kernel.  Using mismatched
memory attributes like this is discouraged (and we should probably fix this
at some point) but this particular case is well-defined and the potential
side-effects should not matter for thus use-case.

ok patrick@

sys/dev/fdt/simplefb.c

index 893dafe..11c1a28 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: simplefb.c,v 1.2 2017/08/27 12:42:22 kettenis Exp $   */
+/*     $OpenBSD: simplefb.c,v 1.3 2017/12/18 10:13:45 kettenis Exp $   */
 /*
  * Copyright (c) 2016 Mark Kettenis
  *
@@ -19,6 +19,8 @@
 #include <sys/systm.h>
 #include <sys/device.h>
 
+#include <uvm/uvm_extern.h>
+
 #include <machine/bus.h>
 #include <machine/fdt.h>
 
@@ -276,7 +278,7 @@ simplefb_wsmmap(void *v, off_t off, int prot)
        if (off < 0 || off >= sc->sc_psize)
                return -1;
 
-       return sc->sc_paddr + off;
+       return ((sc->sc_paddr + off) | PMAP_NOCACHE);
 }
 
 int