]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
Add workaround for vt efifb's early use of PHYS_TO_DMAP
authoremaste <emaste@FreeBSD.org>
Tue, 11 Nov 2014 14:59:46 +0000 (14:59 +0000)
committeremaste <emaste@FreeBSD.org>
Tue, 11 Nov 2014 14:59:46 +0000 (14:59 +0000)
In vt_efifb_init the framebuffer's physaddr is passed to PHYS_TO_DMAP
before the DMAP is setup. The result is not actually accessed until
after the mapping is setup, though. Loosen the assertion in PHYS_TO_DMAP
for now, to allow use when dmaplimit == 0.

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1142

sys/amd64/include/vmparam.h

index b1b89b98d8f48a846110f6795634de95d55a7ef4..58cd694d6fdf08fad5a2738a507b2c2b7d05e679 100644 (file)
 #define        VM_MAX_ADDRESS          UPT_MAX_ADDRESS
 #define        VM_MIN_ADDRESS          (0)
 
+/*
+ * XXX Allowing dmaplimit == 0 is a temporary workaround for vt(4) efifb's
+ * early use of PHYS_TO_DMAP before the mapping is actually setup. This works
+ * because the result is not actually accessed until later, but the early
+ * vt fb startup needs to be reworked.
+ */
 #define        PHYS_TO_DMAP(x) ({                                              \
-       KASSERT((x) < dmaplimit,                                        \
+       KASSERT(dmaplimit == 0 || (x) < dmaplimit,                      \
            ("physical address %#jx not covered by the DMAP",           \
            (uintmax_t)x));                                             \
        (x) | DMAP_MIN_ADDRESS; })