Fix some uses of dmaplimit.

dmaplimit is the first byte after the end of DMAP.

Reported by:	"Johnson, Archna" <Archna.Johnson@netapp.com>
Reviewed by:	alc, markj
Approved by:	re (gjb)
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D17318
This commit is contained in:
Konstantin Belousov 2018-09-25 20:07:58 +00:00
parent 28337eb676
commit 05e1cca97a

View File

@ -1422,7 +1422,7 @@ pmap_init(void)
if (ppim->va == 0) if (ppim->va == 0)
continue; continue;
/* Make the direct map consistent */ /* Make the direct map consistent */
if (ppim->pa < dmaplimit && ppim->pa + ppim->sz < dmaplimit) { if (ppim->pa < dmaplimit && ppim->pa + ppim->sz <= dmaplimit) {
(void)pmap_change_attr(PHYS_TO_DMAP(ppim->pa), (void)pmap_change_attr(PHYS_TO_DMAP(ppim->pa),
ppim->sz, ppim->mode); ppim->sz, ppim->mode);
} }
@ -7055,7 +7055,7 @@ pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, int mode)
* If the specified range of physical addresses fits within * If the specified range of physical addresses fits within
* the direct map window, use the direct map. * the direct map window, use the direct map.
*/ */
if (pa < dmaplimit && pa + size < dmaplimit) { if (pa < dmaplimit && pa + size <= dmaplimit) {
va = PHYS_TO_DMAP(pa); va = PHYS_TO_DMAP(pa);
if (!pmap_change_attr(va, size, mode)) if (!pmap_change_attr(va, size, mode))
return ((void *)(va + offset)); return ((void *)(va + offset));